自定义交叉引用格式(例如“公式 1”,而不仅仅是“1”)

自定义交叉引用格式(例如“公式 1”,而不仅仅是“1”)

我设置了一个方程系统,如下所示。但是,当我引用它时,即使用\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也可以这样做。我不熟悉它。

相关内容