如何检测词汇表条目的数字列表中是否有一页或多页?

如何检测词汇表条目的数字列表中是否有一页或多页?

如果某个首字母缩略词只在一页上使用,我希望能够打印例如“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--\ifppp

如果没有“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} 

输出

在此处输入图片描述

相关内容