我想肯定有人问过这个问题,但我搜索了好久却没有找到。
我想从文档中的位置返回目录。我该怎么做?
答案1
进一步改进的版本将在每个页面中放置两个链接,链接指向目录。
\documentclass{article}
\usepackage{blindtext}
\usepackage{eso-pic}
\usepackage{hyperref}
\usepackage{ifthen}
\newboolean{linktoc}
\setboolean{linktoc}{true} %%% uncomment to show answers properly
%\setboolean{linktoc}{false} %%% comment to show answers properly
\newcommand\AtPageUpperRight[1]{\AtPageUpperLeft{%
\put(\LenToUnit{\paperwidth},\LenToUnit{-0.3\paperheight}){#1}%
}}%
\newcommand\AtPageLowerRight[1]{\AtPageLowerLeft{%
\put(\LenToUnit{\paperwidth},\LenToUnit{0.3\paperheight}){#1}%
}}%
\ifthenelse{\boolean{linktoc}}%
{%
\AddToShipoutPictureBG{%
\AtPageUpperRight{\put(-70,0){\hyperref[toc]{Go to TOC}}}
\AtPageLowerRight{\put(-70,0){\hyperref[toc]{Go to TOC}}}
}%
}%
{}%
\begin{document}
\tableofcontents\label{toc}
\Blinddocument
\end{document}
如果您不想显示链接(您将在最终文档中显示),您可以通过切换布尔值来禁用它们:
%\setboolean{linktoc}{true} %%% comment to hide links
\setboolean{linktoc}{false} %%% uncomment to hide links
你得到
答案2
由于您正在使用,因此hyperref
您可以简单地\label
在\tableofcontents
命令中添加一个,然后使用来引用它\hyperref
。
梅威瑟:
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\tableofcontents\label{toc}
\clearpage
\section{A section}
Here is a link to the \hyperref[toc]{Table of Contents}.
\end{document}
答案3
可以使用 LaTeX 的常规参考系统,包括hyperref
/ nameref
、、titleref
...等包。
棘手的部分是将其放在\label
正确的位置。hyperref
如果将其放在标题后面,则标题仍是其锚点。如果目录长度超过一页,则将其放在末尾\label
也存在错误页码引用的风险。\label
\tableofcontents
以下示例使用间接的防御方法。通过\label
将其放在文件开头。在第一次运行中,进入文件,然后在下一次运行中将其传播到文件,在第三次 LaTeX 运行中,引用可用。因此需要运行三次 LaTeX:.toc
\addtocontents
\label
.toc
.aux
\documentclass{article}
\AtBeginDocument{%
\addtocontents{toc}{\protect\label{toc}}%
}
\begin{document}
\tableofcontents
\section{Hello World}
See table of contents on page \pageref{toc}.
\end{document}
文件.toc
:
\label {toc}
\contentsline {section}{\numberline {1}Hello World}{1}
结果:
扩展,如果目录被重复使用多次
计数器toclabel
被定义并用于生成多个标签名称,例如toc1
,,toc2
:toc3
\documentclass{article}
\newcounter{toclabel}
\AtBeginDocument{%
\addtocontents{toc}{\protect\stepcounter{toclabel}}%
\addtocontents{toc}{\protect\label{toc\protect\thetoclabel}}%
}
\begin{document}
\section*{First table of contents}
\input{\jobname.toc}
\newpage
\section*{Second table of contents}
\input{\jobname.toc}
\newpage
\tableofcontents
\section{Hello World}
First table of contents on page \pageref{toc1}\\
Second table of contents on page \pageref{toc2}\\
Third table of contents on page \pageref{toc3}
\end{document}
答案4
和埃托克无论有没有,这都是开箱即用的hyperref
:
\documentclass{article}
\usepackage{hyperref}
\usepackage{etoc}
\begin{document}
\tableofcontents\label{toc}
\clearpage
\newcount\cnta
\loop
\advance\cnta 1
\ifnum\cnta<100
\section{A section}
Here is a link to the \hyperref[toc]{Table of Contents} on page \pageref{toc}.
\repeat
\end{document}
请注意,如果没有etoc
页面引用,则会出现错误(无论有没有hyperref
,页面都是4
正确的1
)。然后会发生以下情况: