
在我的文件中,我有一些無法跨頁拆分的框,因此通常會在前面的頁面上留下空白。當我\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}
現在連結指向正確的位置。