\refstepcounter 与 \phantomsection

\refstepcounter 与 \phantomsection

在特定位置锚定时\refstepcounter{}和有何区别?\phantomsection

如果我错了,我很抱歉,但据我所知,它们都用于设置锚点,以使超链接正确链接,而有时它们链接不正确,所以我想知道什么时候应该使用其中一个。

我已经尝试到处查找和搜索(如果这是一个重复的问题,抱歉)但我还没有找到一个全面的答案来解释和区分这两个命令以及何时使用它们。

举个例子,我想创建一个新的章节宏,基本上是这样的:

\newcommand{\newchapter}[1]{%
    \singlespacing
    \begingroup
    \clearpage
    \let\clearpage\relax
    \refstepcounter{chapter}
    \chapter*{#1}
    \label{chap:#1}
    \addcontentsline{toc}{chapter}{#1}
    \endgroup
    \doublespacing
}

或者

\newcommand{\newchapter}[1]{%
    \singlespacing
    \begingroup
    \clearpage
    \let\clearpage\relax
    \phantomsection
    \chapter*{#1}
    \label{chap:#1}
    \addcontentsline{toc}{chapter}{#1}
    \endgroup
    \doublespacing
}

它们似乎都具有相同的结果,并且无论何时\newchapter调用宏,它们都正确地链接到每个章节。提前致谢!

答案1

都做\refstepcounter\phantomsection

\hyper@anchorstart{\@currentHref}\hyper@anchorend}

设置锚点。后者更简单,因为它不涉及提升(或降低)锚点,因此适合在垂直模式下发布。

相关内容