假设您想要\pageref
索引和/或词汇表,您如何标记索引/词汇表?
以下方法失败(原因很明显):
\label{glos}
\printglossary
\label{idx}
\printindex
(在索引和词汇表前标注)
\printglossary
\label{glos}
\printindex
\label{idx}
(索引和词汇表最后一页有标签)
如何标记索引和词汇表?
平均能量损失:
\documentclass{article}
\usepackage{makeidx,glossaries}
\makeindex
\makeglossaries
\begin{document}
In this example we introduce \index{text}\newglossaryentry{text}{name={text},description={foo}}text. You can consult the glossary on page \pageref{glos} and the index on page \pageref{idx}.
\label{glos}
\printglossary
\label{idx}
\printindex
\end{document}
答案1
最glossaries
简单的方法是使用包选项¹自动生成标签numberedsection
:
\documentclass{report}
\usepackage[numberedsection=nameref]{glossaries}
\makeglossaries
\newglossaryentry{text}{name={text},description={foo}}
\begin{document}
In this example we introduce \gls{text}.
You can consult the glossary on page \pageref{main}.
\printglossary
\end{document}
这会自动在词汇表的开头插入一个标签,标签由 给出,\glsautoprefix
后面跟着词汇表标签。前缀命令\glsautoprefix
默认为空,因此main
词汇表默认设置了标签\label{main}
,因此可以使用 进行引用\pageref{main}
。您可以重新定义\glsautoprefix
以提供前缀,以防止任何标签冲突。
另一种可能性是修改词汇表序言。只需一个词汇表,您就可以简单地重新定义\glossarypreamble
,如下所示:
\documentclass{report}
\usepackage{glossaries}
\renewcommand{\glossarypreamble}{\label{glos}}
\makeglossaries
\newglossaryentry{text}{name={text},description={foo}}
\begin{document}
In this example we introduce \gls{text}.
You can consult the glossary on page \pageref{glos}.
\printglossary
\end{document}
对于多个词汇表,您要么需要\glossarypreamble
在每个词汇表之前重新定义,要么可以使用\setglossarypreamble[main]{\label{glos}}
等。
¹ 我已将词汇表定义移至序言中,词汇表手册中的建议。
答案2
这是一个解决方案,使用etoolbox
包。
笔记:请参阅下面 Nicola Talbot 的评论(和答案)
\documentclass{article}
\usepackage{etoolbox}
\usepackage{makeidx,glossaries}
\makeindex
\makeglossaries
\csappto{theglossary}{\label{mtglos}}
\csappto{theindex}{\label{mtidx}}
\begin{document}
In this example we introduce \index{text}
\newglossaryentry{bla}{name={text},description={foo}}text. \gls{bla} You can consult the glossary on page \pageref{mtglos} and the index on page \pageref{mtidx}.
\printglossary
\printindex
\end{document}