\addtocontents 中的标签链接

\addtocontents 中的标签链接

\addtocontents我需要使用(是的,我需要\addtocontents而不是)在图形列表中创建手动条目\addcontentsline

使用该hyperref包时,标准命令中会添加一个额外的参数,用于链接。我试图根据标签创建“链接”,但以下操作会引发错误:

未定义的控制序列。...{0.1}{\ignorespaces Short}}{2}{figure.0.1}

我确信这是一个很容易解决的问题,但我却没有运气。有哪位 LaTeX 专家能帮我吗?

\documentclass{memoir}
\usepackage{hyperref}


\begin{document}

\listoffigures

\clearpage

\begin{figure}[htbp]
    \caption[Short]{My Caption}\label{fig:myfigure}
\end{figure}

\addtocontents{lof}{
    \protect\contentsline
    {figure}
    {\numberline{1}A Manual Entry}
    {\pageref{fig:myfigure}}
    {figure.\ref{fig:myfigure}} %<<<<<<<<<<<<<<<<<<< HOW???
}%

\end{document}

答案1

\ref不可扩展,因此无法通过这种方式写入文件.aux(然后写入.lof

我建议使用\getrefpagenumber\getrefbykeydefault{labelname}{anchor}{},两者都是可扩展的命令,第二个命令提取正确的hyper锚点——不能保证figure标记实体的锚点真的以开始,figure也不能保证锚点的其余部分由输出组成\ref

\thefigure考虑定义为 的例子\thechapter.\alph{figure}

通常的锚点仍然使用计数器的整数表达式:最有可能,figure.0.1但不是figure.0.a

由于这对用户来说是隐藏的,所以\getrefbykeydefault这是更好的变体。

通常,这需要refcount加载,但hyperref已经加载了(两个包都是由同一作者编写的)

\documentclass{memoir}
\usepackage{hyperref}


\begin{document}

\listoffigures

\clearpage

\begin{figure}[htbp]
    \caption[Short]{My Caption}\label{fig:myfigure}
\end{figure}

\addtocontents{lof}{
    \protect\contentsline
    {figure}
    {\numberline{1}A Manual Entry}
    {\getpagerefnumber{fig:myfigure}}
    {\getrefbykeydefault{fig:myfigure}{anchor}{}} %<<<<<<<<<<<<<<<<<<< HOW???
}%

\end{document}

相关内容