我们正在制作一本书,其中的每一章都包含在一个主 .tex 文件中,并一起编译。我们还单独编译每一章,为每个章节制作一个 .pdf 文件,并且我们可以使用该xr-hyper
包轻松地引用另一章(例如,章节编号会变成超链接,按下后主 .pdf 文件会在右侧页面上打开)。
现在,我们想对词汇表做同样的事情,这样当标记一个条目时,例如\gls{<entry label>}
当单击时,主 .pdf 会在主 .pdf 文档的词汇表中的条目处打开。
此外,如果能提供一个指向主 .pdf 的 url 的版本就更好了(就像使用 实现的一样xr-hyper
)\externaldocument{master}[<url>]
。
我不知道该怎么做。这可能吗?如何做?
答案1
这有助于最小工作示例(MWE)但假设名为该主文件的文件master.tex
格式如下:
\documentclass{report}
\usepackage[colorlinks]{hyperref}
\usepackage{glossaries}
\makeglossaries
\loadglsentries{example-glossaries-brief}
\begin{document}
\gls{lorem}.
\printglossaries
\end{document}
这是按通常的方式编译的:
pdflatex master
makeglossaries master
pdflatex master
现在是一个子文档:
\documentclass{report}
\usepackage[colorlinks]{hyperref}
\usepackage{glossaries}
\loadglsentries{example-glossaries-brief}
\renewcommand*{\glsdohyperlink}[2]{%
\hyperref{master.pdf}{}{#1}{#2}%
}
\glsenablehyper
\begin{document}
\gls{lorem}.
\end{document}
假设调用此文件child.tex
,则该文件的构建过程为:
pdflatex child
pdflatex child
如果您还需要内部词汇表,那么这种方法就行不通了。如果您需要混合使用内部和外部链接,那么最简单的方法是使用扩展包glossaries-extra
至少 v1.11(2017-01-19):
\documentclass{report}
\usepackage[colorlinks]{hyperref}
\usepackage{glossaries-extra}[2017/01/19]
\newignoredglossary*{external}
\makeglossaries
\loadglsentries[external]{example-glossaries-brief}
\newglossaryentry{sample}{name=sample,category=internal,
description={an example}
}
\glssetcategoryattribute{general}{targeturl}{master.pdf}
\glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel}
\begin{document}
\gls{lorem}, \gls{sample}.
\printglossaries
\end{document}
构建过程现在是:
pdflatex child
makeglossaries child
pdflatex child