在下面的 MWE 中,我尝试通过定义 来填充描述末尾和页码之间的空格\renewcommand*\glspostdescription{\dotfill\kern1ex}
。它似乎可以与\newglossaryentry
s 一起使用,但不能与\longnewglossaryentry
s 一起使用。
\documentclass{article}
% use glossaries and acronyms
\usepackage[indexonlyfirst]{glossaries}
% dots between glossary description and page number
\renewcommand*\glspostdescription{\dotfill\kern1ex}
\newglossaryentry{foo}{
name={Foo},
description={lorem ipsum dolor }
}
\longnewglossaryentry{bar}
{
name={Bar}
}
{
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi.
Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellent
}
\makeglossaries
\begin{document}
\glsaddallunused
\printglossaries
The \gls{foo} is awesome. But \gls{bar} is better.
\end{document}
正如您在渲染图中看到的那样,\newglossaryentry
他的整个线条都被点缀了,但实际上\longnewglossaryentry
并没有。
那么,如何获取 postdescription 点填充以\longnewglossaryentry
进行渲染?
答案1
\longnewglossaryentry
禁用\glspostdescription
钩子。glossaries-extra
扩展包提供了一个不禁用钩子的带星号的版本(添加到版本 1.12)。使用glossaries-extra
,您可以重新定义特定类别的后描述钩子。这意味着您可以将其与postpunc
包选项结合使用。
修改后的 MWE:
\documentclass{article}
% use glossaries and acronyms
\usepackage[postpunc=comma]{glossaries-extra}
% indexonlyfirst:
\glssetcategoryattribute{general}{indexonlyfirst}{true}
% dots between glossary description and page number
\renewcommand*\glsxtrpostdescgeneral{\dotfill\kern1ex}
% or (requires v1.31)
%\glsdefpostdesc{general}{\dotfill\kern1ex}
\makeglossaries
\newglossaryentry{foo}{
name={Foo},
description={lorem ipsum dolor }
}
% requires glossaries-extra.sty v1.12+:
\longnewglossaryentry*{bar}
{
name={Bar}
}
{% comment out space caused by end of line
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi.
Proin porttitor, orci nec nonummy molestie, enim est eleifend
mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu
massa, scelerisque vitae, consequat in, pretium a, enim. Pellent% comment out space caused by end of line
}
\begin{document}
\printglossaries
First use:
The \gls{foo} is awesome. But \gls{bar} is better.
\newpage
Next use:
The \gls{foo} is awesome. But \gls{bar} is better.
\glsaddallunused % must always be at the end of the document
\end{document}
加星号和不加星号版本之间的另一个区别\longnewglossaryentry
是,不加星号的版本还会\unskip
在说明末尾附加内容,这会丢弃长说明末尾未注释行导致的尾随空格。加星号的版本不会这样做。这两个版本都不会修剪前导空格。
尖端:
\glsaddallunused
应始终放置在文档末尾。在文档开头,所有条目均未使用,因此最终您会在该点索引所有条目,但位置列表中会忽略页码,这可能会导致幻像位置后面出现虚假逗号。\makeglossaries
最好放在定义条目之前。(在这种情况下,这没有什么区别,但如果您在任何条目中包含see
或键,则会产生区别。)seealso