Introducción
Recientemente, tuve un problema con el acro
paquete mientras escribía mi tesis con xelatex
.
Mi documento usa el fancyhdr
paquete, donde configuro el título de la sección para que aparezca en el pie de página. Las letras del título de la sección aparecen en mayúsculas.
La cuestión
Me gusta usar siglas cuando puedo. Entonces, decidí usar una solicitud de acrónimo en el título de una sección, como esta:
\section{Moving Forward to Distributed \ac{sdn} Management}
Pero por alguna razón, el motor pensó que era divertido forzar todo el texto en mayúsculas en el título de la sección, transformando un \ac{sdn}
en un \ac{SDN}
.
Entonces, sucedió esto al pie de página del documento:
Debido a esto, me acosó un acrónimo fantasma que aparecía dos veces en el archivo auxiliar:
\acro@used@once {SDN}{78}{78}{89}
\acro@used@twice {SDN}{79}{79}{90}
mientras que estas solicitudes de acrónimos fantasmas aparecieron en el registro de creación de documentos. No existían solicitudes de acrónimos en las líneas especificadas:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! acro error: "undefined"
!
! You've requested acronym `SDN' on line 499 but you apparently haven't
! defined it, yet!
! Maybe you've misspelled `SDN'?
!
! See the acro documentation for further information.
!
! Type <return> to continue.
!...............................................
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! acro error: "undefined"
!
! You've requested acronym `SDN' on line 514 but you apparently haven't
! defined it, yet!
! Maybe you've misspelled `SDN'?
!
! See the acro documentation for further information.
!
! Type <return> to continue.
!...............................................
Respuesta1
Esto no está necesariamente obligado a hacerlo fancyhdr
. Lo mismo ocurre con un simple \pagestyle{headings}
en la clase de artículo.
El problema es que \sectionmark
lo hace \MakeUppercase
en el encabezado y, dado que \ac
y amigos son comandos protegidos, los cambios \ac{sdn}
conducen \ac{SDN}
al mensaje de error.
Una “solución” obvia es definir el acrónimo con un ID en mayúscula:
\DeclareAcronym{SDN}{...}
Sin embargo, cambiar esto puede ser un trabajo tedioso, dependiendo de la cantidad de acrónimos y llamadas de acrónimos en su documento. (Aunque buscar y reemplazar podría ser bastante fácil...)
Otra posibilidad podría ser usar el
textcase
paquete que redefine\MakeUppercase
para que podamos decirle a LaTeX que no escriba en mayúsculas ciertas partes:\documentclass{article} \usepackage{acro} \usepackage[overload]{textcase} \DeclareAcronym{sdn}{ short = SDN , long = some dummy nonsense } \pagestyle{headings} \begin{document} \section{Moving Forward to Distributed \protect\NoCaseChange{\acs*{sdn}} Management} \end{document}
Como tercera opción que no depende de la forma en que se define el estilo del título,
acro
se introdujo la opcióncase-sensitive
a principios de este año (con el lanzamiento de la v2.11 el 11/01/2020) para abordar este tipo de problemas. Suponiendo que no tiene dos acrónimos diferentes, uno que se usasdn
como ID y el otro que se usa,SDN
puede deciracro
que debe tratar a ambos como iguales:\documentclass{article} \usepackage{acro} \acsetup{case-sensitive=false} \DeclareAcronym{sdn}{ short = SDN , long = some dummy nonsense } \pagestyle{headings} \begin{document} \section{Moving Forward to Distributed \acs*{sdn} Management} \end{document}
Los dos últimos ejemplos dan
Respuesta2
La solución
Parece que la combinación de usar el acro
paquete con el fancyhdr
paquete mientras se coloca el título de la sección en el pie de página ha demostrado tener errores. Debido a esto, eliminé la \ac{sdn}
solicitud del título, lo que resolvió el problema de la \ac{SDN}
solicitud fantasma.
Ahora, el pie de página del documento es correcto y las solicitudes de acrónimos fantasmas han desaparecido.