参考目录页

参考目录页

我想肯定有人问过这个问题,但我搜索了好久却没有找到。

我想从文档中的位置返回目录。我该怎么做?

答案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,,toc2toc3

\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)。然后会发生以下情况:

toc ref 错误

相关内容