용어집 항목을 사용하는 동안 용어집 약어 무시

용어집 항목을 사용하는 동안 용어집 약어 무시

나는 다음에 설명된 대로 한 번만 사용되는 두문자어를 무시하려고 노력해 왔습니다.이 질문. 불행히도 두 가지 문제가 있습니다.

  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

답변에서 Nicola가 언급함여기, 작동 방식에 대한 추가 정보도 확인할 수 있습니다.

관련 정보