LaTeX で \MakeUppercase を bm パッケージと組み合わせて使用​​する方法 2022-11-01

LaTeX で \MakeUppercase を bm パッケージと組み合わせて使用​​する方法 2022-11-01

LaTeX ソースを arXiv に送信しようとしていますが、いくつか問題が発生しました。私のプロジェクトは、TeX Live 2021 を使用している overleaf にあり、すべてがエラーや警告なしでコンパイルされます (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}

しかし、Overleaf 内でこの問題を再現することはできませんでした (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 バージョンを変更することはできません。したがって、結局何らかの回避策が必要になるようです。

考えられる解決策の 1 つは、\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ました。これは、1 つの場所で 1 つのステップで実行できなかったため、反復的なプロセスでした。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が、私の使用例では十分に機能しているようです。

関連情報