Cómo usar \MakeUppercase en combinación con el paquete bm en LaTeX 2022-11-01

Cómo usar \MakeUppercase en combinación con el paquete bm en LaTeX 2022-11-01

Estoy intentando enviar fuentes de LaTeX a arXiv y encontré algunos problemas. Mi proyecto se encuentra al dorso, donde estoy usando TeX Live 2021 y todo se compila sin errores ni advertencias (excepto en cuadros demasiado llenos o insuficientemente llenos). Sin embargo, cuando intenté procesar los archivos fuente en arXiv, se \MakeUppercaseprodujo un error de compilación.

Pude replicar el error.en la zonausando el siguiente fragmento, lo que sugiere que la combinación del bmpaquete y \MakeUppercasees el 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}

Sin embargo, no pude replicar este problema al dorso (probando TeX Live 2022 y 2023). Después de investigar un poco más, descubrí que mi distribución TeX Live (2023) usa LaTeX2e 2022-11-01, mientras que al dorso usa 2022-06-01. Además, arXiv parece estar usando 2022-11-01.

Mientras miraba a mi alrededor, noté que había algunos cambios en\MakeUppercase causaronasuntoscon elmicrotype paquete. Además encontré estoproblema de githubsobre cuestiones relacionadas con el alfabeto griego. No estoy seguro de si estos problemas están relacionados, pero definitivamente parecen relevantes.

este comentarioen el problema de Github parece sugerir que es mejor/más fácil arreglar el código que crear una solución alternativa. Sin embargo, (que yo sepa) no puedo cambiar la versión de LaTeX en los servidores arXiv. Por lo tanto, parece que, después de todo, necesitaré algún tipo de solución alternativa.

Una solución que se me ocurre sería reemplazarlo \usepackage{bm}por algo como \let\bm\boldsymbol, pero no estoy seguro de si esto tendría efectos no deseados en la composición tipográfica. ¿Es esta una solución razonable o hay otras opciones que debería considerar para cargar mi proyecto en arXiv?

De manera más general, también me interesaría entender por qué \MakeUppercasecausa tantos problemas recientemente. Por ejemplo, ¿hay una lista de paquetes con los que se sabe que tienen problemas \MakeUppercasey existe una solución más general?


actualizar: En la versión 2022-11-01, nivel 1 del parche, \MakeUppercasetambién falla con \boldsymbollos siguientes errores:

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

Respuesta1

Se han realizado actualizaciones sobre cómo funciona el cambio de mayúsculas y minúsculas para admitir UTF-8 y babel/ polyglossia. Este ha sido un proceso iterativo ya que no se pudo realizar en un solo lugar y en un solo paso. La última versión de LaTeX (01/11/2023) compatible con la versión actualizada expl3utiliza un enfoque mejorado que no requiere \kernel@saved@oe: más bien conserva la agrupación "tradicional" en su interior \MakeUppercase. Como tal, el mejor consejo aquí es actualizar al LaTeX actual o utilizar el latexreleasemecanismo para parchear un kernel más antiguo para lograr el mismo efecto.

Respuesta2

egreg ha proporcionado una solución bastante buena en unrespuestaa otra pregunta mía.

Es posible definir un nuevo comando \ToUppercaseusando el lenguaje de codificación LaTeX3:

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

Este comando no causa problemas cuando se usa con \boldsymbolo \bmy me permite compilar mis documentos. No estoy seguro de si existen diferencias (sutiles) \MakeUppercase, pero parece funcionar bastante bien para mi caso de uso.

información relacionada