用語集のエントリを使用する際に用語集の頭字語を無視する

用語集のエントリを使用する際に用語集の頭字語を無視する

私は、一度しか使われない頭字語を無視しようとしてきました。この質問残念ながら、2つの問題があります。

  1. 一度使用した略語は、最初のエントリとして引き続き表示されます (長いテキストのみではなく、括弧で囲まれた略語を含む長いテキスト)。メッセージがPatching failed (2)表示されたので、\patchcmd最新の用語集コードを反映するように更新する必要があるのではないでしょうか。
  2. 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をコメント アウトする と、次の結果が得られます。tex コンパイルの結果

答え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

ニコラの回答から引用ここ、これがどのように機能するかについての詳しい情報もここで見つけることができます。

関連情報