LaTeX에서 bm 패키지와 함께 \MakeUppercase를 사용하는 방법 2022-11-01

LaTeX에서 bm 패키지와 함께 \MakeUppercase를 사용하는 방법 2022-11-01

LaTeX 소스를 arXiv에 제출하려고 하는데 몇 가지 문제가 발생했습니다. 내 프로젝트는 TeX Live 2021을 사용하고 있는 뒷면에 있으며 모든 것이 오류나 경고 없이 컴파일됩니다(overfull 또는 underfull 상자 제외). 그러나 arXiv에서 소스 파일을 처리하려고 하면 \MakeUppercase컴파일 오류가 발생합니다.

오류를 재현할 수 있었습니다.장소 상에서bm다음 스니펫을 사용하여 패키지와 패키지 의 조합 \MakeUppercase이 문제임을 나타냅니다.

\documentclass{standalone}

\usepackage{amsmath}
\usepackage{bm}

\begin{document}
Test plain: $\bm{x}$.

%replacing \bm by \boldsymbol resolves the issue
Test upper: $\bm{\MakeUppercase{x}}$.
\end{document}

그러나 이 문제를 뒷면 내부에서 재현할 수 없었습니다(TeX Live 2022 및 2023을 모두 시도). 좀 더 조사한 결과 내 TeX Live(2023) 배포판은 LaTeX2e 2022-11-01을 사용하는 반면 overleaf는 2022-06-01을 사용한다는 것을 알아냈습니다. 또한 arXiv는 2022-11-01을 사용하는 것 같습니다.

\MakeUppercase주위를 둘러보던 중, 그로 인해 몇 가지 변경 사항이 있음을 발견했습니다 .문제패키지 와 함께 microtype. 게다가 이걸 발견했는데Github 문제그리스 알파벳 문제에 대해. 이러한 문제가 관련되어 있는지는 확실하지 않지만 분명히 관련성이 있는 것 같습니다.

이 댓글Github 문제에서는 해결 방법을 만드는 것보다 코드를 수정하는 것이 더 좋고/쉽다고 제안하는 것 같습니다. 그러나 (내가 아는 한) arXiv 서버에서 LaTeX 버전을 변경할 수 없습니다. 따라서 결국 일종의 해결 방법이 필요할 것 같습니다.

내가 생각할 수 있는 한 가지 해결책은 \usepackage{bm}다음과 같은 것으로 바꾸는 것입니다 \let\bm\boldsymbol. 그러나 이것이 조판에 바람직하지 않은 영향을 미칠지는 확실하지 않습니다. 이것이 합리적인 해결책입니까, 아니면 내 프로젝트를 arXiv에 업로드하기 위해 고려해야 할 다른 옵션이 있습니까?

\MakeUppercase보다 일반적으로 최근에 이렇게 많은 문제가 발생하는 이유를 이해하고 싶습니다 . 예를 들어 문제가 있는 것으로 알려진 패키지 목록이 있고 \MakeUppercase보다 일반적인 해결책이 있습니까?


업데이트: 버전 2022-11-01 패치 수준 1에서는 다음 오류와 함께 \MakeUppercase실패합니다 .\boldsymbol

/home/hoedt/Downloads/tmp/test.tex:10: Undefined control sequence.
\MakeUppercase    [#1]#2->\let \kernel@saved@oe 
                                                \oe \let \oe \OE \@@text@cas...
l.10 Test upper: $\boldsymbol{\MakeUppercase{x}}
                                                $.
/home/hoedt/Downloads/tmp/test.tex:10: Undefined control sequence.
\MakeUppercase    ...#2}\let \oe \kernel@saved@oe 
                                                  
l.10 Test upper: $\boldsymbol{\MakeUppercase{x}}
                                                $.
/home/hoedt/Downloads/tmp/test.tex:10: Extra }, or forgotten $.
\bm@command ...\space \@spaces \@spaces \@spaces }
                                                  {LaTeX Warning: Command \p...
l.10 Test upper: $\boldsymbol{\MakeUppercase{x}}
                                                $.

답변1

babelUTF-8 및 / 를 지원하기 위해 대소문자 변경 작업 방식이 업데이트되었습니다 polyglossia. 이는 한 곳에서 한 단계로 수행할 수 없기 때문에 반복적인 프로세스였습니다. up-to-date에서 지원하는 최신 LaTeX 릴리스(2023-11-01)는 expl3필요하지 않은 개선된 접근 방식을 사용합니다 \kernel@saved@oe. 오히려 내부에 '전통적인' 그룹화를 유지합니다 \MakeUppercase. 따라서 여기서 가장 좋은 조언은 최신 LaTeX로 업데이트하거나 latexrelease이전 커널을 패치하는 메커니즘을 사용하여 동일한 효과를 얻는 것입니다.

답변2

꽤 좋은 해결 방법이 egreg에 의해 제공되었습니다.답변내 또 다른 질문에.

\ToUppercaseLaTeX3 코딩 언어를 사용하여 새 명령을 정의할 수 있습니다 .

\ExplSyntaxOn
\cs_new_eq:NN \ToUppercase \text_uppercase:n
\ExplSyntaxOff

\boldsymbol이 명령은 또는와 함께 사용할 때 문제를 일으키지 않으며 \bm문서를 컴파일할 수 있게 해줍니다. 와 (미묘한) 차이점이 있는지는 확실하지 않지만 \MakeUppercase내 사용 사례에는 충분히 잘 작동하는 것 같습니다.

관련 정보