有没有办法让 \eqref 使用当前文本字体的字体粗细?

有没有办法让 \eqref 使用当前文本字体的字体粗细?

命令eqreffromamsmath不会从当前字体继承字体粗细。具体来说,该命令\textbf对其没有影响。以下是 MWE:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
 \begin{equation}
  1=1
  \label{my_eqn}
 \end{equation}

\noindent
Here is \verb|\textbf{(\ref{my_eqn})}|:\\ 
\textbf{(\ref{my_eqn})}
\\ (Boldfaced, as expected.)\\ 
And here is \verb|\textbf{\eqref{my_eqn}}|:\\ 
\textbf{\eqref{my_eqn}}
\\ (Not boldfaced!)

\section{Inside a section title: (\ref{my_eqn}) and \eqref{my_eqn}}

So, inside the section title as well, \verb|\ref| is boldfaced but \verb|\eqref| is not.
\end{document}

输出:


在此处输入图片描述


有没有办法\eqref利用当前文本字体的字体粗细?

答案1

的定义\eqref是,总共

\newcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}}

\textup和内部的主要功能\tagform@是强制文档方程式样式覆盖当前字体,因此要获得您想要的最简单的方法就是将其重新定义为

\renewcommand{\eqref}[1]{(\ref{#1})}

或者

\renewcommand{\eqref}[1]{\textup{(\ref{#1})}}

如果您想继承字体粗细但不继承斜体或其他字体形状。

答案2

我建议您加载该包并使用其宏来代替,而不是修改其定义\eqref、摆弄amsmath内部\tagform@宏或使用包的机制来创建全新的标签形式。mathtoolscleveref\labelcref\eqref

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath,cleveref}
\setlength\parindent{0pt} % just for this example

\begin{document}
\begin{equation}\label{my_eqn} 1+1=2 \end{equation}

\verb|(\ref{my_eqn})|: (\ref{my_eqn}) --- Normal font weight, as expected.
 
\verb|\labelcref{my_eqn}|: \labelcref{my_eqn} --- Also normal font weight.

\medskip
\verb|\textbf{(\ref{my_eqn})}|: \textbf{(\ref{my_eqn})} --- Boldfaced.
 
\verb|\textbf{\labelcref{my_eqn}}|: \textbf{\labelcref{my_eqn}} --- Also boldfaced.

\section{Cross-refs inside a section title: (\ref{my_eqn}) and \labelcref{my_eqn}}

\end{document}

相关内容