使用 \ref 或 \cite 中的标签替换未知参考(?)

使用 \ref 或 \cite 中的标签替换未知参考(?)

在处理文档时,如果不是未解析的参考或引文而出现或?中使用的标签,那将会很有帮助。\ref{thisthings}\cite{Bloke1978}

是否有一个包可以启用这种行为?

答案1

除了重新定义\cite或连接命令之外,还可以考虑使用showkeys将打印的包每一个钥匙和标记每一个使用\label,以便在准备文档期间可以很容易地检查交叉引用。

这有一个缺点:使用或不使用包时,行和分页符可能会有所不同。但是,当我们撰写手稿时,行和分页符并不是什么大问题。在完成项目时,只需注释掉对的调用showkeys:此时交叉引用应该没问题。

答案2

即使没有这个包,也可以很容易地借助etoolbox包。但是,如果某个包以不兼容的方式重新定义命令,则这可能会失败。

\documentclass{article}

\usepackage{etoolbox}

\makeatletter
\patchcmd{\@setref}{\bfseries ??}{[\texttt{#3}]}{}{%
  \GenericWarning{}{Failed to patch \protect\@setref}}
\patchcmd{\@citex}{\bfseries ?}{\texttt{\@citeb}}{}{%
  \GenericWarning{}{Failed to patch \protect\@citex}}
\makeatother

\begin{document}

\ref{undefined},\pageref{undefined},\cite{undefined}

\end{document}

相关内容