确保幻像部分不会出现在页面底部

确保幻像部分不会出现在页面底部

在我的文档中,有些框不能跨页拆分,因此经常会在前面的页面上留下空白。当我在\phantomsection其中一个框之前创建一个时,\phantomsection/\label会留在第一页上,而不是放在新页面的顶部。有没有办法将它放到第二页上?

\documentclass{article}
\usepackage{lipsum,hyperref}
\begin{document}
\hyperref[target]{My link}
\lipsum[1-4]
\phantomsection\label{target} % this stays on page 1
\vbox{\lipsum[1]}
\end{document}

答案1

可能出现分页符的原因是\label在锚点和框之间插入内容的命令。

如果我编译以下示例

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\hyperref[target]{My link}   

\phantomsection\label{target}\nopagebreak% this stays on page 1
\vbox{bbb}
\showoutput
\end{document}

日志文件的相关部分是

....\pdfdest name{section*.1} xyz
....\penalty 10000
....\write1{\newlabel{target}{{}{\thepage }{}{section*.1}{}}}
....\penalty 10000
....\glue(\baselineskip) 3.11111
....\vbox(6.94444+0.0)x345.0

我们看到,在粘连之前添加了一个无限的惩罚(在您的情况下,它可能来自\lineskip,但这并不相关),从而禁止将此粘连用作分页点。

如果\nopagebreak删除,我们得到

....\penalty 10000
....\write1{\newlabel{target}{{}{\thepage }{}{section*.1}{}}}
....\glue(\baselineskip) 3.11111
....\vbox(6.94444+0.0)x345.0

这个东西(\write1)不是可丢弃的物品,所以胶水用作分页点。

所以

\phantomsection\label{target}\nopagebreak

应该做。

答案2

\documentclass{article}
\usepackage{lipsum,hyperref}
\begin{document}
\hyperref[target]{My link}
\lipsum[1-4]
\filbreak\phantomsection\label{target}\nopagebreak % 
\vbox{\lipsum[1]}
\end{document}

答案3

你可以把它放在\phantomsection盒子里面以避免这种情况,即

\vbox{\phantomsection\label{target}\lipsum[1]}

代替

\phantomsection\label{target}
\vbox{\lipsum[1]}

平均能量损失

\documentclass{article}
\usepackage{lipsum,hyperref}
\begin{document}
\hyperref[target]{My link}
\lipsum[1-4]
\vbox{\phantomsection\label{target}\lipsum[1]}
\end{document} 

现在链接指向了正确的位置。

相关内容