自动将交叉引用的公式编号括在圆括号中

自动将交叉引用的公式编号括在圆括号中

我想自定义\ref命令在输出中的显示方式。当我使用\ref{reference_to_something}某个方程时,结果是方程的编号,或带有标签“reference_to_something”的定义,但我希望它出现在圆括号之间。例如,如果我有:

并参考公式 4.3.2 [...]

我的目的是自动添加,而不用每次都写()

并参考公式(4.3.2)[...]

我尝试过\renewcommand,但不起作用。有什么建议吗?

答案1

对于方程,你可以使用\eqref使用数学包。因此,\ref{reference_to_something}您编写的不是 ,而是 ,\eqref{reference_to_something}然后获取(equation_number)

答案2

无需任何其他软件包的解决方案,通过重新定义\p@equation,首先“吞噬” \csname theequation\endcsname(通常的交叉引用格式),然后使用(\theequation) ——这需要\def使用\csname theequation\endcsname作为参数分隔符——\newcommand在这里不起作用。
由于@涉及到 ,因此\makeatletter...\makeatother在普通文档文件中需要一对。

\documentclass{article}

\makeatletter
\def\gobblesomething#1\csname theequation\endcsname{(\theequation)}
\renewcommand{\p@equation}{\gobblesomething}
\makeatother

\begin{document}

\setcounter{equation}{17}

\begin{equation}
  E = mc^{2} \label{Einstein}
\end{equation}

See \ref{Einstein}
\end{document}

在此处输入图片描述

这是一个类似的问题:https://tex.stackexchange.com/a/407421/31729

在这里可以找到另一个类似的关于吞噬一些文本的问题:在文本中引用附录对象为“A.1”,而不是“附录 A.1”

相关内容