Ignorar las siglas del glosario al utilizar entradas del glosario

Ignorar las siglas del glosario al utilizar entradas del glosario

He estado tratando de ignorar las siglas que sólo se usan una vez, como se describe enesta pregunta. Desafortunadamente, tengo dos problemas:

  1. 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 \patchcmdnecesario actualizarlo para reflejar el último código de glosarios.
  2. La etoolbox emite un 'Boolean '\ifglo@test@usedonlyonce' undefinederror 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 \newglossaryentryy correspondiente :\glsresultado de la compilación tex

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 \glsenableentrycounty el uso de \cglsen lugar de \gls.

Mencionado por Nicola de la respuesta.aquí, donde también se puede encontrar más información sobre cómo funciona.

información relacionada