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, \MakeUppercase
ocorreu um erro de compilação.
Consegui replicar o errolocalmenteusando o seguinte trecho, sugerindo que a combinação do bm
pacote 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 \MakeUppercase
que causaramproblemascom o microtype
pacote. 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 \MakeUppercase
causa tantos problemas recentemente. Por exemplo, existe uma lista de pacotes com problemas conhecidos \MakeUppercase
e existe uma solução mais geral?
atualizar: Na versão 2022-11-01 patch nível 1, \MakeUppercase
também falha com \boldsymbol
os 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 expl3
usa 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 latexrelease
mecanismo 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 \ToUppercase
utilizando 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 \boldsymbol
ou \bm
e 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.