\glspostdescription 为 longnewglossaryentry

\glspostdescription 为 longnewglossaryentry

在下面的 MWE 中,我尝试通过定义 来填充描述末尾和页码之间的空格\renewcommand*\glspostdescription{\dotfill\kern1ex}。它似乎可以与\newglossaryentrys 一起使用,但不能与\longnewglossaryentrys 一起使用。

\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

相关内容