![添加 \usepackage[pdfpagelabels]{hyperref} 后出现空白页](https://linux22.com/image/272443/%E6%B7%BB%E5%8A%A0%20%5Cusepackage%5Bpdfpagelabels%5D%7Bhyperref%7D%20%E5%90%8E%E5%87%BA%E7%8E%B0%E7%A9%BA%E7%99%BD%E9%A1%B5.png)
我已经index.tex
复制了它。将副本重命名为index_bad.tex
,并添加了行
\usepackage[pdfpagelabels]{hyperref}
到其序言部分。因此,除了这一处更改外,这两个文件是相同的。
然后编译index.tex
3pdflatex
次并查看 index.pdf,一切正常。(即没有空白页)。
编译了index_bad.tex
3pdflatex
次。现在index_bad.pdf
在第一部分和第二部分之间插入了一个额外的空白页。
这是该文档的总体布局:
\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{fancyvrb}
\usepackage{graphicx}
\usepackage[left=.7in,right=.5in,top=.7in,bottom=.9in]{geometry}
\usepackage[pdfpagelabels]{hyperref}
\begin{document}
....
\section{....}
\subsection{...}
\begin{Verbatim}[frame=single,framesep=1mm,samepage=true,fontsize=\footnotesize]
.....
\begin{Verbatim}[frame=single,framesep=1mm,samepage=true,fontsize=\footnotesize]
....
\end{document}
包含时hyperref
,第一部分和第二部分之间会出现一个空白页。不包含此包时不会出现空白页。
问题是为什么会发生这种情况? 以及如何解决?
由于该文档包含 2 张图片和大量逐字记录,我已压缩整个文件夹,因此它是完整的。
解压 zip 文件将创建一个文件夹。文件夹内有index.tex
和index_bad.tex
以及使用的 2 张图片。运行pdflatex
文件将显示上述问题。
该 zip 文件是http://12000.org/tmp/072113/latex_problem.zip
在 Windows 上托管的 Linux mint 虚拟机上使用 TL 2013。
答案1
正如 Werner 所注意到的,你的页面过大了。如果当前页面是不是hyperref
为空。这就是这里发生的事情。如果包已加载,则页面不为空。
包hyperref
必须为\section
命令添加锚点(否则链接将没有要跳转的目标)。它挂钩\refstepcounter
以设置锚点。因此,示例可以简化为:
\documentclass[12pt]{article}
\usepackage{hyperref}
\showboxdepth=\maxdimen
\showboxbreadth=\maxdimen
\tracingonline=1
\begin{document}
Dummy page
\newpage
\refstepcounter{section}% anchor setting with hyperref
\showlists
\rule{1pt}{1.1\textheight}
\end{document}
确保\rule
页面过大:
Overfull \vbox (54.85335pt too high)
如果没有,hyperref
则有两页,并且页面为空\refstepcounter{section}
:
### vertical mode entered at line 0
prevdepth 2.33331, prevgraf 1 line
! OK.
l.15 \showlists
结果hyperref
是三页,之后的页面开始\refstpecounter
不为空,并且可以看到锚点/链接目的地(驱动程序pdftex
):
### vertical mode entered at line 0
### current page:
\pdfdest name{section.1} xyz
prevdepth 2.33331, prevgraf 1 line
! OK.
l.15 \showlists
因此唯一不开心的是页面在目标和部分标题之间被破坏了。修复这个问题意味着需要对内部进行更多的挖掘/处理,从而导致其他不兼容问题。
顺便说一句,您可以使用其他“whatits”获得相同的行为,例如索引命令:
\documentclass[12pt]{article}
\usepackage{makeidx}
\makeindex
\showboxdepth=\maxdimen
\showboxbreadth=\maxdimen
\tracingonline=1
\begin{document}
Dummy page
\newpage
\index{foo}
\showlists
\rule{1pt}{1.1\textheight}
\end{document}
结果三页如下:
### vertical mode entered at line 0
### recent contributions:
\write3{\indexentry{foo}{\thepage }}
prevdepth 2.33331, prevgraf 1 line
! OK.
l.16 \showlists
解决方案
overfull \vbox
需要解决的问题。一个肮脏的方法是:
\newpage
\enlargethispage{24.7852pt}
\section{Tikz solution}