将 \phantomsection 放在边距中

将 \phantomsection 放在边距中

我正在寻找一种方法来使用一个命令,比如 \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在行尾附近调用 ,则可能会出现后续文本超出右边距的问题。

相关内容