\addtocontents
在使用向目录中引入一些特殊行后,我对书签层次结构产生了问题。具体来说,在加星标section.2
并添加相应的(替代)内容行后, 的所有子部分section.2
都被错误地视为 的子部分section.1
。
经过一番研究,我找到了解决类似问题的答案,建议加载包bookmark
(在之后hyperref
,必须在最后加载),并\cleardoublepage\phantomsection
在行前添加\addtocontents
。我试过了,但仍然不起作用:
\documentclass{article}
\usepackage{lipsum}
\usepackage{hyperref}
\usepackage{bookmark}
\begin{document}
\tableofcontents
\newpage
\part{Parte 1}
\section{Seccion 1}
\lipsum{1}
\subsection{Subseccion 1.1}
\lipsum{1}
\section*{Seccion 2}
\cleardoublepage
\phantomsection
\addtocontents{toc}{\string\contentsline{section}{Seccion 2}{}{section.2}}
\subsection{Subseccion 2.1}
\lipsum{1}
\subsection{Subseccion 2.2}
\lipsum{1}
\end{document}
\section
加星标并添加相应命令后,我需要做什么才能获得正确的书签层次结构(和正确的超链接)\addtocontents
?
答案1
您的\phantomsection
命令似乎放错了地方,而且现在对于像这样的标准分段命令来说,它已经没有必要了\section*
。我相信以下内容是您想要的:
\documentclass{article}
\usepackage{lipsum}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\newpage
\part{Parte 1}
\section{Seccion 1}
\lipsum{1}
\subsection{Subseccion 1.1}
\lipsum{1}
\refstepcounter{section}% increase the section counter
\section*{%
\raisebox{\baselineskip}{\pdfbookmark[1]{Seccion 2}{section.\number\value{section}}}%
Seccion 2}%
\addtocontents{toc}{\protect\contentsline{section}{Seccion 2}{}{section.\number\value{section}}}%
\subsection{Subseccion 2.1}
\lipsum{1}
\subsection{Subseccion 2.2}
\lipsum{1}
\end{document}
另一种方法是显示目录中未编号的第 2 节的起始页码,如下所示。根据您的评论,这不是您想要的,但我将其放在这里,以防其他读者有用。
\documentclass{article}
\usepackage{lipsum}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\newpage
\part{Parte 1}
\section{Seccion 1}
\lipsum{1}
\subsection{Subseccion 1.1}
\lipsum{1}
\refstepcounter{section}% increase the section counter
\section*{Seccion 2}%
\addcontentsline{toc}{section}{\protect\numberline{}Seccion 2}%
\subsection{Subseccion 2.1}
\lipsum{1}
\subsection{Subseccion 2.2}
\lipsum{1}
\end{document}