如何引用排版为 \glossarytoctitle 的词汇表?

如何引用排版为 \glossarytoctitle 的词汇表?

我正在使用该glossaries软件包。我创建了一个自定义词汇表foo,标题为“我的 Foo 词汇表标题”:

\newglossary[fgg]{foo}{fgs}{fgo}{My Foo Glossary}

理想情况下,我想在我的文本中使用\nameref或引用这个词汇表\autoref,使其看起来像“......请参阅我的 Foo 词汇表。”通过类似于以下代码的内容:

...please see \nameref{foo}.

这不起作用......

我知道我需要在词汇表中添加一个标签以便引用它(它不是已经以某种方式贴上了标签吗?如果它在目录页上,它必须有一个标签,对吗?)。我重新定义了宏,\glossarypreamble如下所示:

\renewcommand*{\glossarypreamble}{%
\label{\currentglossary}%
}

然后我就可以按如下方式链接到它:

...please see \autoref{foo}.

问题是,这会产生文本“附录 A.3”而不是“我的 Foo 词汇表”。我如何才能让链接显示与 等同的文本\glossarytoctitle

提前致谢!

答案1

尝试以下代码:

% arara: pdflatex: {synctex: yes}
% arara: makeglossaries
% arara: pdflatex: {synctex: yes}
% arara: pdflatex: {synctex: yes}

\documentclass{article}

\usepackage[colorlinks]{hyperref}

\usepackage{glossaries}

\newglossary[fgg]{foo}{fgs}{fgo}{My Foo Glossary}

\makeglossaries

\newglossaryentry{fooentry}{name={foo entry},description={foo description},type=foo}
\newglossaryentry{mainentry}{name={main entry},description={main description}}

\begin{document}

\noindent \Gls{fooentry} is an entry from \nameref{glo:foo}, while \gls{mainentry} is an entry from \nameref{glo:main}.

\bigskip

\printglossary[type=foo]
\makeatletter
\def\@currentlabelname{\@glotype@foo@title}
\label{glo:foo}
\makeatother

\printglossary[type=main]
\makeatletter
\def\@currentlabelname{\@glotype@main@title}
\label{glo:main}
\makeatother

\end{document} 

输出:

在此处输入图片描述

诀窍是\printglossary为每个词汇表使用单独的词汇表,并在每个词汇表之后添加代码,例如在“foo”词汇表之后添加代码

\makeatletter
\def\@currentlabelname{\@glotype@foo@title}
\label{glo:foo}
\makeatother

并将其称为\nameref{glo:foo}

这里\@glotype@foo@title包含词汇表的名称,也是\@currentlabelname名称标题的\nameref内部存储位置。

答案2

版本 4.02(我刚刚上传到 CTAN)现在为numberedsection包选项添加了一个额外值:numberedsection=nameref。这使用了一个未编号的部分(或章节,取决于类别),但插入了\label{\glsautoprefix类型}在章节标题之后。您可能需要等待几天才能在 TeX 发行版中看到新版本,但是一旦可用,您可以执行以下操作:

% arara: pdflatex
% arara: makeglossaries
% arara: pdflatex
% arara: pdflatex
\documentclass{article}

\usepackage[colorlinks]{hyperref}
\usepackage[numberedsection=nameref]{glossaries}

\newglossary[fgg]{foo}{fgs}{fgo}{My Foo Glossary}

\makeglossaries

\newglossaryentry{sample}{name={sample},description={an example}}

\newglossaryentry{sample2}{type=foo,name={sample2},description={another example}}

\begin{document}

Reference \gls{sample} and \gls{sample2}.

Reference main glossary: \nameref{main}.

Reference foo glossary: \nameref{foo}.

\printglossaries


\end{document}

生成:

生成的文档的图像

\glsautoprefix默认为无,但可以重新定义以避免与其他标签冲突。)

相关内容