简而言之,目录中的链接无法按我想要的方式工作。对于第二个子部分(子部分 B),所有子部分链接都指向第一个子部分(子部分 A)中的子部分。
因此,例如,“子小节 x”的链接指向的是“子小节 b”。
这是一个可复制的小例子来复制该问题。
\documentclass{article}
\usepackage[pdftex]{graphicx}
\usepackage[colorlinks=true, linkcolor=blue]{hyperref}
\begin{document}
\tableofcontents
\subsection*{Subsection A}
\addcontentsline{toc}{subsection}{Subsection A}
\setcounter{subsubsection}{0}
\subsubsection{subsubsection a}
\newpage
\subsubsection{subsubsection b}
\newpage
\subsubsection{subsubsection c}
\newpage
\subsubsection{subsubsection d}
\newpage
\subsection*{Subsection B}
\addcontentsline{toc}{subsection}{Subsection B}
\setcounter{subsubsection}{0}
\subsubsection{subsubsection a}
\newpage
\subsubsection{subsubsection x}
\newpage
\subsubsection{subsubsection y}
\end{document}
问题似乎是同时使用了subsection*
(即带星号的版本)和setcounter{subsubsection}{0}
两次。如果您解决此问题的方法不使用这些命令,则完全没问题。但是,
- 文件中出现的“小节 A”和“小节 B”没有编号;
- 目录中出现“小节 A”和“小节 B”;
- 两个小节中的子小节的编号均从 0.0.1 开始。
该文件使用 pdflatex 连续编译多次。
我该如何解决这个问题?
答案1
您可以使用hypertexnames=false
包选项hyperref
:
\documentclass{article}
\usepackage{graphicx}
\usepackage[colorlinks=true, linkcolor=blue
,hypertexnames=false% <- added
]{hyperref}
\begin{document}
\tableofcontents
\subsection*{Subsection A}
\addcontentsline{toc}{subsection}{Subsection A}
\setcounter{subsubsection}{0}
\subsubsection{subsubsection a}\newpage
\subsubsection{subsubsection b}\newpage
\subsubsection{subsubsection c}\newpage
\subsubsection{subsubsection d}\newpage
\subsection*{Subsection B}
\addcontentsline{toc}{subsection}{Subsection B}
\setcounter{subsubsection}{0}
\subsubsection{subsubsection a}\newpage
\subsubsection{subsubsection x}\newpage
\subsubsection{subsubsection y}
\end{document}
补充说明:如果你加载包titlesec
,那么您必须使用\subsection*{\phantomsection Subsection X}
(其中 X = A 或 X = B)而不是简单地\subsection*{Subsection X}
手动为链接设置锚点。
答案2
我将为此定义一个特殊命令,并在发出subsubsection
时使用标准函数来重置计数器。\subdivision
\documentclass{article}
\usepackage{graphicx}
\usepackage[colorlinks=true, linkcolor=blue]{hyperref}
\newcounter{subdivision}
\counterwithin*{subsubsection}{subdivision}
\renewcommand{\thesubsubsection}{\arabic{subsubsection}}
\newcommand{\subdivision}[1]{%
\refstepcounter{subdivision}%
\subsection*{#1}%
\addcontentsline{toc}{subsection}{#1}%
}
\begin{document}
\tableofcontents
\subdivision{Subsection A}
\subsubsection{subsubsection a}
\newpage
\subsubsection{subsubsection b}
\newpage
\subsubsection{subsubsection c}
\newpage
\subsubsection{subsubsection d}
\newpage
\subdivision{Subsection B}
\subsubsection{subsubsection a}
\newpage
\subsubsection{subsubsection x}
\newpage
\subsubsection{subsubsection y}
\end{document}
您可以检查链接是否指向正确的位置。
答案3
您所需要的只是\phantomsection
来自 hyperref。
\documentclass{article}
\usepackage[pdftex]{graphicx}
\usepackage[colorlinks=true, linkcolor=blue]{hyperref}
\begin{document}
\tableofcontents
\phantomsection
\subsection*{Subsection A}
\addcontentsline{toc}{subsection}{Subsection A}
\setcounter{subsubsection}{0}
\subsubsection{subsubsection a}
\newpage
\subsubsection{subsubsection b}
\newpage
\subsubsection{subsubsection c}
\newpage
\subsubsection{subsubsection d}
\newpage
\phantomsection
\subsection*{Subsection B}
\addcontentsline{toc}{subsection}{Subsection B}
\setcounter{subsubsection}{0}
\subsubsection{subsubsection a}
\newpage
\subsubsection{subsubsection x}
\newpage
\subsubsection{subsubsection y}
\end{document}
我突然想到它\thesubsection
仍然在使用,\thesubsubsection
所以您需要重新定义其中至少一个。
\documentclass{article}
\usepackage[pdftex]{graphicx}
\usepackage[colorlinks=true, linkcolor=blue]{hyperref}
\renewcommand{\thesubsection}{\Alph{subsection}}
\renewcommand{\thesubsubsection}{\arabic{subsubsection}}
\begin{document}
\tableofcontents
\refstepcounter{subsection}%
\addcontentsline{toc}{subsection}{Subsection A}%
\subsection*{Subsection A}
\subsubsection{subsubsection a}
\newpage
\subsubsection{subsubsection b}
\newpage
\subsubsection{subsubsection c}
\newpage
\subsubsection{subsubsection d}
\newpage
\refstepcounter{subsection}%
\addcontentsline{toc}{subsection}{Subsection B}%
\subsection*{Subsection B}
\subsubsection{subsubsection a}
\newpage
\subsubsection{subsubsection x}
\newpage
\subsubsection{subsubsection y}
\end{document}