我正在寻找一种方法来使用一个命令,比如 \AP(锚点),将一个\phantomsection
(或任何其他东西)放在当前位置的左侧,比如说当前列左侧 1 厘米处。
原因是当使用引用时(在小屏幕或高缩放比例的 pdf 查看器上),\phantomsection
位于行中间的 会跳转到列内的位置,而对于该位置,只有部分列可见。正确的位置是让查看器将屏幕的左上角置于列的左侧。
从某种意义上说,它是浮动机制的一种非常简单的变体,marginpar
但不涉及浮动机制。
答案1
您pdflatex
可以使用pre
的扩展在垂直列表的当前行之前\vadjust
插入。下面显示了一个包含两列的示例:\phantomsection
\documentclass[twocolumn]{article}
\usepackage{hyperref}
\usepackage{blindtext}
\begin{document}
\section{Test}
Here\vadjust pre {\phantomsection}\label{test:a} \blindtext
\Blindtext[2]
And somewhere in this line of text
here.\vadjust pre {\phantomsection}\label{test:b}
\blindtext
\Blindtext
Goto first \ref{test:a} or second \ref{test:b}.
\end{document}
答案2
我不是幻影部分的专家,但也许这个tabto
包的用法就足够了。在这里,我定义\Phantom
移动到边缘左侧 1cm 的位置,然后发出\phantomsection
并返回到行上的原始位置。
\documentclass{article}
\usepackage{hyperref}
\usepackage[nopar]{lipsum}
\usepackage{tabto}
\newcommand\Phantom{\tabto*{-1cm}\phantomsection\tabto{\TabPrevPos}}
\begin{document}
\tableofcontents
\hrulefill
\lipsum[4]
\Phantom
\addcontentsline{toc}{section}{Some place in the document}
\label{some}
This is just \hyperref[some]{some place} in the document.
\lipsum[1-12]
\Phantom
\addcontentsline{toc}{section}{Other place in the document}
\label{other}
This is just \hyperref[other]{other place} in the document.
\end{document}
注意:在行尾附近调用 时,这种方法可能会引起问题\Phantom
。此制表符位置(由 恢复\TabPrevPos
)发生在 TeX 的段落对齐算法发生之前。因此,如果\Phantom
在行尾附近调用 ,则可能会出现后续文本超出右边距的问题。