\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}