从这个问题我用过
\usepackage{titlesec}
\newcommand{\sectionbreak}{\clearpage}
以确保各节从其自己的页面开始。然而,当使用该hyperref
包时,这会导致节书签指向上一节的结尾,而不是新节的开头。
以下是 MWE:
\documentclass{article}
\usepackage[pdftex]{hyperref} % Generate PDF links and bookmarks.
\hypersetup{
bookmarks=true,
bookmarksnumbered=true
}
\usepackage{titlesec}
\newcommand{\sectionbreak}{\clearpage}
\begin{document}
\section{First}
Some text
\section{Second}
More Text
\end{document}
如果您在 OSX 上使用 Adobe Reader 或 Preview 并使用书签,您会注意到第二个书签位于上一节末尾的第一页,而不是第二节开始的第二页。
我怎样才能解决这个问题?
答案1
\usepackage{titlesec}% http://ctan.org/pkg/titlesec
\usepackage{hyperref}% http://ctan.org/pkg/hyperref
来自hyperref
文档(部分2 隐性行为):
该包可以与任何普通的 LaTeX 文档一起使用,只需在文档序言中指定即可
\usepackage{hyperref}
确保它位于您最后加载的包中,以使其有机会不被覆盖,因为它的工作是重新定义许多 LaTeX 命令。
之后可以加载的软件包哪些包应该在 hyperref 之后加载而不是之前加载?
答案2
\sectionbreak
\refstepcounter
在设置节 (by ) 的锚点后,会在错误的时间执行。\clearpage
也可以通过重新定义 来添加
\section
。这\clearpage
是最先执行的方式。
\documentclass{article}
\usepackage{hyperref} % Generate PDF links and bookmarks.
\hypersetup{
bookmarksnumbered=true
}
\usepackage{bookmark}
\usepackage{titlesec}
\newcommand*{\OrgSection}{}
\let\OrgSection\section
\renewcommand*{\section}{\clearpage\OrgSection}
\begin{document}
\section{First}
Some text
\section{Second}
More Text
\end{document}
评论:
选项
bookmarks
不能仅设置为 中的包选项\usepackage
。否则您会收到警告:软件包 hyperref 警告:选项 `bookmarks' 已被使用,(hyperref)设置该选项对第 6 行输入没有影响。
您可以省略选项
pdftex
。软件包hyperref
会自动设置它能够检测到的驱动程序选项(PDF 模式下的 pdfTeX/LuaTeX、XeTeX)。我推荐包
bookmark
,那么您不需要运行两次 LaTeX 即可在此处获取更新的书签。