確保幻影部分不會出現在頁面底部

確保幻影部分不會出現在頁面底部

在我的文件中,我有一些無法跨頁拆分的框,因此通常會在前面的頁面上留下空白。當我\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在錨點和框之間插入了一個 Whatsit 的命令。

如果我編譯以下範例

\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

Whatsit ( \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} 

現在連結指向正確的位置。

相關內容