
私は、一度しか使われない頭字語を無視しようとしてきました。この質問残念ながら、2つの問題があります。
- 一度使用した略語は、最初のエントリとして引き続き表示されます (長いテキストのみではなく、括弧で囲まれた略語を含む長いテキスト)。メッセージが
Patching failed (2)
表示されたので、\patchcmd
最新の用語集コードを反映するように更新する必要があるのではないでしょうか。 - etoolbox は
'Boolean '\ifglo@test@usedonlyonce' undefined
それぞれに対してエラーを発行します\newglossaryentry
。
一度使用した頭字語を無視して、頭字語と用語集エントリの両方を使用するにはどうすればよいでしょうか? 一度使用した頭字語用語集エントリはリストに表示されなければなりませんが、頭字語いけない。
エラーを発行する最小限の例:
\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}
私はMikTeXとTeXnicCenterを説明した通りにセットアップしましたここ\newglossaryentry
対応する および\gls
をコメント アウトする と、次の結果が得られます。
答え1
質問が投稿されてから間もなくリリースされた用語集 4.14 では、一度しか使用されない頭字語や用語集項目を無視することができ、上記の要求どおりの結果が得られます。
上記の例は次のように変換されます。
\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}
の位置が異なること\makeglossaries
、 が追加されていること、の代わりに\glsenableentrycount
が使用されていることに注意してください。\cgls
\gls
ニコラの回答から引用ここ、これがどのように機能するかについての詳しい情報もここで見つけることができます。