
Tenho tentado ignorar siglas que são usadas apenas uma vez, conforme descrito emessa questão. Infelizmente, tenho dois problemas:
- A abreviatura usada uma vez ainda é exibida como a primeira entrada (texto longo com a abreviatura entre colchetes em vez de apenas texto longo). A mensagem
Patching failed (2)
apareceu, então talvez\patchcmd
precise ser atualizada para refletir o código dos glossários mais recentes? - O etoolbox emite um
'Boolean '\ifglo@test@usedonlyonce' undefined
erro para cada arquivo\newglossaryentry
.
Como posso usar siglas e entradas de glossário com siglas usadas uma vez sendo ignoradas? Uma vez usadoglossárioas entradas ainda precisam ser exibidas na lista, massiglasnão deveria.
Exemplo mínimo que emite os erros:
\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}
Eu tenho a configuração do MikTeX e do TeXnicCenter conforme descritoaqui. O resultado que obtenho quando o \newglossaryentry
e correspondente \gls
é comentado:
Responder1
Com os glossários 4.14, lançados pouco depois da postagem da pergunta, é possível ignorar siglas e itens do glossário que são usados apenas uma vez, com os resultados exatamente como solicitados acima.
O exemplo acima é convertido para o seguinte:
\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}
Observe a posição diferente de \makeglossaries
, a adição \glsenableentrycount
e o uso \cgls
de em vez de \gls
.
Referido por Nicola na respostaaqui, onde também podem ser encontradas mais informações sobre como isso funciona.