![确保幻像部分不会出现在页面底部](https://linux22.com/image/477126/%E7%A1%AE%E4%BF%9D%E5%B9%BB%E5%83%8F%E9%83%A8%E5%88%86%E4%B8%8D%E4%BC%9A%E5%87%BA%E7%8E%B0%E5%9C%A8%E9%A1%B5%E9%9D%A2%E5%BA%95%E9%83%A8.png)
在我的文档中,有些框不能跨页拆分,因此经常会在前面的页面上留下空白。当我在\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}
现在链接指向了正确的位置。