
He estado tratando de ignorar las siglas que sólo se usan una vez, como se describe enesta pregunta. Desafortunadamente, tengo dos problemas:
- La abreviatura que se usó una vez todavía se muestra como la primera entrada (texto largo con la abreviatura entre corchetes en lugar de solo texto largo). El mensaje
Patching failed (2)
apareció, por lo que tal vez sea\patchcmd
necesario actualizarlo para reflejar el último código de glosarios. - La etoolbox emite un
'Boolean '\ifglo@test@usedonlyonce' undefined
error para cada uno\newglossaryentry
.
¿Cómo puedo utilizar acrónimos y entradas del glosario ignorando los acrónimos utilizados una vez? Una vez usadoglosariolas entradas aún deben mostrarse en la lista, peroacrónimosno debe.
Ejemplo mínimo que emite los errores:
\documentclass{article}
\usepackage{etoolbox}
\usepackage{glossaries}
\makeatletter
\appto\newacronymhook{%
\newbool{glo@\the\glslabeltok @usedonlyonce}% define an additional switch per acronym
}
\patchcmd{\@gls@}{%
\glsunset{#2}%
}{% write appropriate information to the main auxiliary file
\ifglsused{#2}{%
\write\@auxout{\global\setbool{glo@#2@usedonlyonce}{false}}%
}{%
\write\@auxout{\global\setbool{glo@#2@usedonlyonce}{true}}%
}%
\glsunset{#2}%
}{}{\message{^^JPatching failed (1)^^J}}
\patchcmd{\@gls@}{%
\glsentryfirst{#2}%
}{% print the long form of the acronym if the acronym is used only once
\ifbool{glo@#2@usedonlyonce}{\glsentrylong{#2}}{\glsentryfirst{#2}}%
}{}{\message{^^JPatching failed (2)^^J}}
\let\old@do@wrglossary\@do@wrglossary
\renewcommand{\@do@wrglossary}[1]{\ifbool{glo@#1@usedonlyonce}{}{\old@do@wrglossary{#1}}}
\makeatother
\newacronym{ANO}{ANO}{Acronym Number One}
\newacronym{ANT}{ANT}{Acronym Number Two}
\newglossaryentry{test} {
name={test},
description={A test is used for testing}
}
\makeglossaries
\begin{document}
\printglossaries
\noindent
\gls{ANO}, \gls{ANO}\\
\gls{ANT}\\
\gls{test}
\end{document}
Tengo la configuración MikTeX y TeXnicCenter como se describeaquí. El resultado que obtengo cuando se comenta el \newglossaryentry
y correspondiente :\gls
Respuesta1
Con los glosarios 4.14, publicado poco después de que se publicara la pregunta, es posible ignorar las siglas y los elementos del glosario que solo se usan una vez, con los resultados exactamente como se solicitó anteriormente.
El ejemplo anterior se convierte en lo siguiente:
\documentclass{article}
\usepackage{glossaries}
\makeglossaries
\glsenableentrycount
\newacronym{ANO}{ANO}{Acronym Number One}
\newacronym{ANT}{ANT}{Acronym Number Two}
\newglossaryentry{test} {
name={test},
description={A test is used for testing}
}
\begin{document}
\printglossaries
\noindent
\cgls{ANO}, \cgls{ANO}\\
\cgls{ANT}\\
\gls{test}
\end{document}
Tenga en cuenta la posición diferente de \makeglossaries
, la adición de \glsenableentrycount
y el uso de \cgls
en lugar de \gls
.
Mencionado por Nicola de la respuesta.aquí, donde también se puede encontrar más información sobre cómo funciona.