Como usar \MakeUppercase em combinação com o pacote bm no LaTeX 2022-11-01

Como usar \MakeUppercase em combinação com o pacote bm no LaTeX 2022-11-01

Estou tentando enviar fontes LaTeX para o arXiv e tive alguns problemas. Meu projeto está no verso, onde estou usando o TeX Live 2021 e tudo é compilado sem erros ou avisos (exceto caixas cheias demais ou insuficientes). No entanto, quando tentei processar os arquivos de origem no arXiv, \MakeUppercaseocorreu um erro de compilação.

Consegui replicar o errolocalmenteusando o seguinte trecho, sugerindo que a combinação do bmpacote e do \MakeUppercaseé o problema:

\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}

No entanto, não consegui replicar esse problema no verso (tentando o TeX Live 2022 e 2023). Depois de mais pesquisas, descobri que minha distribuição TeX Live (2023) usa LaTeX2e 2022-11-01, enquanto o verso usa 2022-06-01. Além disso, o arXiv parece estar usando 2022-11-01.

Ao olhar em volta, notei que houve algumas mudanças \MakeUppercaseque causaramproblemascom o microtypepacote. Além disso, encontrei issoProblema no Githubsobre questões com o alfabeto grego. Não tenho certeza se essas questões estão relacionadas, mas definitivamente parecem relevantes.

Este comentáriona questão do Github parece sugerir que é melhor/mais fácil corrigir o código do que criar uma solução alternativa. No entanto, (até onde sei) não posso alterar a versão do LaTeX nos servidores arXiv. Portanto, parece que, afinal, precisarei de algum tipo de solução alternativa.

Uma solução que eu poderia imaginar seria substituir \usepackage{bm}por algo como \let\bm\boldsymbol, mas não tenho certeza se isso teria algum efeito indesejado na composição tipográfica. Esta é uma solução razoável ou há outras opções que devo considerar para enviar meu projeto para o arXiv?

De forma mais geral, eu também estaria interessado em entender por que \MakeUppercasecausa tantos problemas recentemente. Por exemplo, existe uma lista de pacotes com problemas conhecidos \MakeUppercasee existe uma solução mais geral?


atualizar: Na versão 2022-11-01 patch nível 1, \MakeUppercasetambém falha com \boldsymbolos seguintes erros:

/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}}
                                                $.

Responder1

Atualizações no funcionamento da mudança de caso foram feitas para suportar UTF-8 e babel/ polyglossia. Este tem sido um processo iterativo, pois não poderia ser feito em um só lugar e em uma única etapa. A versão mais recente do LaTeX (2023-11-01) suportada por up-to-date expl3usa uma abordagem aprimorada que não requer \kernel@saved@oe: em vez disso, mantém o agrupamento 'tradicional' dentro de \MakeUppercase. Como tal, o melhor conselho aqui é atualizar para o LaTeX atual ou usar o latexreleasemecanismo para corrigir um kernel mais antigo para obter o mesmo efeito.

Responder2

Uma solução alternativa muito boa foi fornecida por egreg em umresponderpara outra pergunta minha.

É possível definir um novo comando \ToUppercaseutilizando a linguagem de codificação LaTeX3:

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

Este comando não causa problemas quando usado com \boldsymbolou \bme me permite compilar meus documentos. Não tenho certeza se existem diferenças (sutis) em relação ao \MakeUppercase, mas parece funcionar bem o suficiente para o meu caso de uso.

informação relacionada