我设置了一个方程系统,如下所示。但是,当我引用它时,即使用\ref{eqn:surfacetension}
,它只会打印数字“1”,而不是“方程式 1”。我该如何修改代码来实现这一点?如果我遗漏了任何关键的代码,我深表歉意,我只添加了我认为相关的部分
\documentclass[a4paper,12pt]{scrartcl}
\usepackage{amsmath}
\makeatletter
\let\mytagform@=\tagform@
\def\tagform@#1{\maketag@@@{\bfseries(\ignorespaces#1\unskip\@@italiccorr)}\hspace{3mm}}
\renewcommand{\eqref}[1]{\textup{\mytagform@{\ref{#1}}}}
\makeatother
\begin{document}
\begin{equation}
\Delta P = \frac{2\gamma}{r}
\label{eqn:surfacetension}
\end{equation}
\end{document}
答案1
您可以使用命令\autoref
(由超链接包)或命令\cref
(由聪明人您可以使用 .LaTeX 包来达到让 LaTeX 提供交叉引用项目的“名称”和“编号”的目的。
这些命令的范围不仅限于交叉引用方程式;这些命令\autoref
也\cref
可以应用于许多其他项目。请仔细阅读这些软件包的用户指南,以了解如何在必要时自定义这些软件包生成的交叉引用的外观。
\documentclass[a4paper,12pt]{scrartcl}
\setlength{\textwidth}{4in} % just for this MWE
\usepackage[colorlinks=true]{hyperref}
\usepackage[nameinlink,noabbrev]{cleveref}
\begin{document}
\begin{equation}
\Delta P = \frac{2\gamma}{r}
\label{eqn:surfacetension}
\end{equation}
Here's a cross-reference using \verb+\autoref+: \autoref{eqn:surfacetension}.
And here's a cross-reference using \verb+\cref+: \cref{eqn:surfacetension}.
\end{document}
为了更深入地讨论各种 LaTeX 交叉引用方法和包的功能,我建议你查看这个答案. 无耻的自我引用警告!!
答案2
在如何配置 \label 的 \ref 来打印更多内容而不仅仅是数字?,我提供了一个名为的包eqcite
。它听起来类似于 Jubobs 在他的评论中提到的内容,只是它允许在您想要说“方程式 1”(\eqcite{eq:ref}
)与“方程式 1”(\Eqcite{eq:ref}
)与“方程式 1 和 2”(\eqcites{eq:ref1} and \andeqcite{eq:ref2}
)时使用不同的情况。也许prettyref
也可以这样做。我不熟悉它。