如果某个首字母缩略词只在一页上使用,我希望能够打印例如“p. 1”,如果该首字母缩略词在多页上使用,我希望能够打印例如“pp. 1, 2”。我尝试定义一个新的计数器并在其中使用它的值,ifthenelse
但我不知道在哪里连接递增代码。无论如何,可能有一个不太复杂的解决方案... :)
下面的 MWE 需要用 来构建pdflatex mwe.tex ; makeglossaries mwe ; pdflatex mwe.tex
。
\documentclass{article}
\usepackage[
shortcuts,
]{glossaries}
\newglossarystyle{mylist}{
\renewenvironment{theglossary}{\begin{description}}{\end{description}}
\renewcommand*{\glossaryentryfield}[5]{%
\item[\glsentryitem{##1}\glstarget{##1}{##2}] ##3\glspostdescription \space \footnotesize (%
\ifthenelse{\equal{1}{1}}{p}{pp}. ##5)%
}
}
\makeglossaries
\newacronym{bt}{BT}{Bluetooth}
\newacronym{usb}{USB}{Universal Serial Bus}
\begin{document}
\ac{bt}
\ac{usb}
\clearpage
\ac{usb}
\printglossary[type=\acronymtype,style=mylist]
\end{document}
答案1
这可以是一个解决方案。
我使用\IfSubStr*
了xstring
包来查看第 5 个参数中是否有单词“delimN”或“delimR”(在数字列表中,是一个扩展为 和扩展为的\delimN
命令),它借助新的来确定在哪里打印和在哪里打印。,
\delimR
--
\if
pp
p
如果没有“delimN”或“delimR”,则意味着数字列表中只有一个页码。
请注意,我还将其放入了\footnotesize
一个组内...
平均能量损失
\documentclass{article}
\usepackage{xstring}
\usepackage[shortcuts]{glossaries}
\newif\ifmulti
\newglossarystyle{mylist}{%
\renewenvironment{theglossary}{\begin{description}}{\end{description}}%
\renewcommand*{\glossaryentryfield}[5]{%
\multifalse%
\IfSubStr*{\detokenize{##5}}{delimN}{\multitrue}{\relax}%
\IfSubStr*{\detokenize{##5}}{delimR}{\multitrue}{\relax}%
\item[\glsentryitem{##1}\glstarget{##1}{##2}] ##3\glspostdescription \space {\footnotesize (%
\ifmulti pp\else p\fi. ##5)}%
}%
}
\makeglossaries
\newacronym{bt}{BT}{Bluetooth}
\newacronym{usb}{USB}{Universal Serial Bus}
\newacronym{sata}{SATA}{Serial Advanced Technology Attachment}
\begin{document}
\ac{bt}
\ac{usb}
\ac{sata}
\clearpage
\ac{usb}
\ac{sata}
\clearpage
\ac{sata}
\clearpage
\printglossary[type=\acronymtype,style=mylist]
\end{document}
输出