我想自定义\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”