
나는 다음에 설명된 대로 한 번만 사용되는 두문자어를 무시하려고 노력해 왔습니다.이 질문. 불행히도 두 가지 문제가 있습니다.
- 한 번 사용된 약어는 여전히 첫 번째 항목으로 표시됩니다(긴 텍스트만 아닌 괄호 안에 약어가 포함된 긴 텍스트). 메시지가
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
답변에서 Nicola가 언급함여기, 작동 방식에 대한 추가 정보도 확인할 수 있습니다.