考虑以下 MCWE:
\documentclass{memoir}
\usepackage{hyperref}
\hypersetup{colorlinks=true}
\hypersetup{linkcolor=[rgb]{0.2,0.4,0.7}}
\let\orgautoref\autoref
\providecommand{\Autoref}{\def{equationautorefname{Eq.}\orgautoref}
\renewcommand{\autoref}{\def\equationautorefname{eq.}\orgautoref}
\begin{document}
\frontmatter
\tableofcontents
\listoffigures
\mainmatter
\chapter{Bla}
\section{Bla}
\begin{figure}
\caption{\Autoref{bla} \autoref{bla}\label{fig}}
\end{figure}
\autoref{fig}
\begin{equation}
bla\label{bla}
\end{equation}
\chapter{Bloo}
\section{Bloo}
\begin{figure}
\caption{Bloo}
\end{figure}
\end{document}
如果我注释掉\autoref
上面的重新定义,一切都会正常,但如果我不这样做,第二次运行 pdflatex 或 latex 就会出现此错误:
! Missing control sequence inserted.
<inserted text>
\inaccessible
l.2 ...quation{eq.}\autoref {bla}}}{1}{figure.1.1}
Please don't say `\def cs{...}', say `\def\cs{...}'.
I've inserted an inaccessible control sequence so that your
definition will be completed without mixing me up too badly.
You can recover graciously from this error, if you're
careful; see exercise 27.2 in The TeXbook.
罪魁祸首是\listoffigures
,错误指的是文件.lof
,其中包含以下内容:
\addvspace {10pt}
\contentsline {figure}{\numberline {1.1}{\ignorespaces Bla \def Equation{eq.}\autoref {bla}}}{1}{figure.1.1}
\addvspace {10pt}
\contentsline {figure}{\numberline {2.1}{\ignorespaces Bloo}}{3}{figure.2.1}
我觉得这不对:( \autorefequationname
“Equation”) 已经展开,而不是\def
正在执行的命令。documentclass 并不重要,例如 也会发生这种情况book
。
我该如何解决此错误?我已经重命名了所有\autoref
名称,并且还引入了\Autoref
,所以我真的不想停止使用它,除非没有其他办法。
答案1
\autoref
我建议你不要破解宏,而是加载聪明人包中带有选项。这样,由和nameinlink
生成的所有调用(前者用于小写名称,后者用于大写名称)将看起来像由 生成的调用。在您的编辑软件中,将 全局更改为并将更改为,这样就大功告成了。\cref
\Cref
\autoref
\autoref
\cref
\Autoref
\Cref
示例代码中的 LoF 如下所示:
\documentclass{memoir}
\usepackage{hyperref}
\hypersetup{colorlinks=true}
\hypersetup{linkcolor=[rgb]{0.2,0.4,0.7}}
\usepackage[nameinlink,noabbrev]{cleveref}
\crefname{equation}{eq.}{eqs.} % force abbreviated forms for equation "names"
\Crefname{equation}{Eq.}{Eqs.}
\begin{document}
\frontmatter
\tableofcontents
\listoffigures
\mainmatter
\chapter{Bla}
\section{Bla}
\begin{figure}
\caption{\Cref{bla} \cref{bla} \label{fig}}
\end{figure}
\cref{fig}
\begin{equation}
bla\label{bla}
\end{equation}
\chapter{Bloo}
\section{Bloo}
\begin{figure}
\caption{Bloo}
\end{figure}
\end{document}