假设您有一个带有一些标签的 tex 文件(我们称之为 B),还有另一个文件(称之为 A), xr 包将允许我们从 A->B 进行超引用,但我之前发现了几种情况(我不知道 LaTeX 是否做到了),单击文件 A 中的链接将自动打开文件 B(如果它们在同一个目录中)并跳转到该文件 B 中的特定标签,这可以在 LaTeX 中以某种方式完成吗?
PS-1 目前,如果我们执行该外部引用,单击链接只会跳转到当前文件的开头(我的意思是文件 A),并且不会打开任何内容(除非我做错了什么)
PS-2 在其他问题中我得到了这个答案:
LyX 用户邮件列表上最近有一篇关于此问题的帖子。目前还没有答案,但你可以看看是否有任何内容出现。mail-archive.com/[电子邮件保护]/msg93271.html – Torbjørn T.
但是那封信件已经很旧了 (可以追溯到 2010 年),有什么区别吗?
答案1
是的,这当然是可能的,hypertarget
使用href
hyperref
包裹。
假设fileA.tex
有
\documentclass{article}
\usepackage{lipsum}
\usepackage{hyperref}
\begin{document}
\lipsum
\hypertarget{fileAhypertarget}{Should come to this}
\end{document}
然后你可以fileB.tex
写成
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\href{fileA.pdf#fileAhypertarget}{Let's go to file A!}
\end{document}
请注意,并非所有pdf
查看器都支持这一点 - 例如evince
没有给出正确的行为,但acroread
确实如此。
根据评论进行更新
该lipsum
包用于生成示例文本 - 大多数文档不需要它,但您会看到它在 tex 交换中被大量使用,只是为了演示 MWE。
您可以hypertarget
通过多种方式自动化每个部分的机制 - 这里有一种使用titlesec
包来帮助的方法;请注意,我已经注释掉了该showlabels
包,但您可能想在调试期间使用它,它真的很有帮助!
fileA.tex
\documentclass{article}
\usepackage{lipsum} % for sample text
\usepackage{titlesec} % to change headings
% very useful during debugging!
%\usepackage[left]{showlabels}
%\showlabels{hypertarget}
% usually load the hyperref package last,
% see this for reference http://tex.stackexchange.com/questions/1863/which-packages-should-be-loaded-after-hyperref-instead-of-before
\usepackage{hyperref}
% renew \section to set a hypertarget
\titleformat{\section}
{\normalfont\Large\bfseries}
{\thesection}
{1pc}
{\hypertarget{myhypertarget\thesection}}
\begin{document}
\lipsum[1]
\section{First section}
\lipsum
\section{Second section}
\lipsum
\section{Third section}
\lipsum
\end{document}
fileB.tex
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\href{fileA.pdf#myhypertarget1}{Let's go to Section 1!}
\href{fileA.pdf#myhypertarget2}{Let's go to Section 2!}
\href{fileA.pdf#myhypertarget3}{Let's go to Section 3!}
\end{document}