cleveref
我在论文中使用它进行交叉引用。对于方程式,它通常如下所示:
从公式(5)可以看出,这些数字加起来不对。
但是,有时我只想引用一个公式,而不想围绕它构造句子,即我只想将其放在括号中。在这种情况下,我不想在数字周围加括号:
这可以通过前面显示的公式(等式 5)来完成。
然而,书写时(\cref{eq5})
自然会保留括号,如下所示:
这可以通过前面显示的公式(等式 (5))来完成。
有没有办法得到我想要的结果cleveref
,这样我就不必手动更改遇到此问题的所有实例?
我知道我可以将其写为(Eq.~\ref{eq5})
,但如果可能的话,我更希望有一个处理所有引用的单个命令。这就是我cleveref
首先使用的原因。
我也希望得到一些建议,以便更好地处理这种情况。也许有一种我不知道的标准方法。我觉得很奇怪,\cref{}
方程式的默认选择与图表和表格的不同,并导致了图表和表格不会出现的特定问题。所以也许我在某种程度上误用了这个包。
请注意,这不是(也从来不是)对 的功能请求cleveref
。我只是询问如何正确使用它,以及我是否可以在我的 Latex 文件中添加一行代码来解决我遇到的问题。
答案1
我想你可以只需书写就能实现所需的输出(Eq.~\ref{eq5})
,对吗?
在深入探讨其他建议之前,我想先摘录一下该软件包的用户指南cleveref
(参见第 4 页,脚注 2)。在相关内容中,Toby Cubitt(该cleveref
软件包的作者和维护者)写道:
尝试自动确定适当的情况相当于解决完整的自然语言处理问题
cleveref
。大约一个世纪后再回头看看这个功能。
我引用这段话是因为您的请求——让 LaTeX 和/或cleveref
自动检测 的实例\cref
是否自行发生(用括号括起来),并\cref
根据此条件更改 的输出——非常接近于要求解决自然语言处理问题。
还记得,它被设计用来接收和处理多个参数。如果一条指令接收多个参数(这些参数可能是也可能不是对象的标签……)但还被一对括号包围,那么\cref
究竟会发生什么呢?\cref
equation
因此,我不会尝试直接解决您的功能请求,而是想为您的排版目标提出三条替代解决方案建议:
写
(Eq.~\ref{eq5})
——这并不是那么难,不是吗?使用单个逗号而不是一对括号来在视觉上抵消交叉引用,并继续使用
\cref
使用
\labelcref
而不是\cref
,这样可以有效地使“公式”成为与方程编号相关联的名词。就我个人而言,我最喜欢这种方法,因为它避免排版两个名词——“公式”和“方程式”——而一个就足够了。
(以下代码加载包并使用选项hyperref
加载包,以便从视觉上清楚地显示 、 和 生成的内容。)cleveref
nameinlink
\cref
\labelcref
\ref
\documentclass{article}
\usepackage[colorlinks,allcolors=blue]{hyperref} % optional
\usepackage[capitalize,nameinlink]{cleveref}
\setlength{\textwidth}{3.5in} % just for this example
\begin{document}
\setcounter{equation}{4} % just for this example
\begin{equation} \label{eq5} 1+4=5 \end{equation}
%As can be seen in \cref{eq5}, the numbers don't add up.
\noindent
\begin{tabular}{@{}ll@{}}
\dots\ the previously shown formula (\cref{eq5}). & bad\\
\dots\ the previously shown formula (Eq.~\ref{eq5}). & good \\
\dots\ the previously shown formula, \cref{eq5}. & better? \\
\dots\ the previously shown formula~\labelcref{eq5}. & best?
\end{tabular}
\end{document}