我正在使用该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
默认为无,但可以重新定义以避免与其他标签冲突。)