\renewcommand{\frac}{\mfrac} 但在下标/上标中

\renewcommand{\frac}{\mfrac} 但在下标/上标中

如果显示样式、上标/下标,我可以有条件地更新命令吗?

我有:

\documentclass[11pt]{article}
\usepackage{amsmath}
\pagestyle{empty}
\usepackage{nccmath}

\begin{document}

Equation:
{\renewcommand{\frac}{\mfrac}\begin{equation}
   x^{\frac{1}{2}}
 +\frac{1}{2}
\end{equation}}\relax

\end{document}

在此处输入图片描述

我需要类似的东西:

\begin{equation}
   x^{\frac{1}{2}}
 +\mfrac{1}{2}
\end{equation}

在此处输入图片描述

答案1

我不喜欢\mfrac。如果你想用,就用,但当\mfrac你真的需要它时才用。是否使用\mfrac\frac取决于几个因素,通常涉及你想要排版的公式。例如,\mfrac在 前面\int可能会显得不合适。

这是一种解决问题的方法,同时还要注意不要使用通过定义的命令做错事\DeclareRobustCommand,因为这\let非常危险。

\documentclass[11pt,twocolumn]{article}
\usepackage{amsmath}
\usepackage{nccmath}

\newif\ifsmallfractions
\newcommand{\smallfractions}{\smallfractionstrue}
\newcommand{\normalfractions}{\smallfractionsfalse}
\NewCommandCopy{\latexfrac}{\frac}

\DeclareRobustCommand{\frac}[2]{%
  \ifsmallfractions
    \mathchoice{\mfrac{#1}{#2}}%
      {\latexfrac{#1}{#2}}%
      {\latexfrac{#1}{#2}}%
      {\latexfrac{#1}{#2}}%
  \else
    \latexfrac{#1}{#2}%
  \fi
}

\begin{document}

Equation:
\begin{equation}\smallfractions
   x^{\frac{1}{2}}
 +\frac{1}{2}
\end{equation}
Normal equation:
\begin{equation}
   x^{\frac{1}{2}}
 +\frac{1}{2}
\end{equation}
Better typesetting:
\begin{equation}
   x^{1/2} +\tfrac{1}{2}
\end{equation}

\end{document}

您可以\smallfractions在任何地方声明,它将遵守正常的分组规则。

在此处输入图片描述

答案2

\frac这在 scriptstyle 和 scriptscriptstyle 中保留了 的原始大小,而\mfrac在文本和显示样式中使用 。可以使用 恢复原始分数\lfrac

根据戴维的建议进行编辑,以解释\frac新发现的稳健性......使用\LetLtxMacro而不是简单的\let

\documentclass[11pt]{article}
\usepackage{amsmath,letltxmacro}
\pagestyle{empty}
\usepackage{nccmath}
\LetLtxMacro\lfrac\frac
\renewcommand\frac[2]{\mathchoice
  {\mfrac{#1}{#2}}
  {\mfrac{#1}{#2}}
  {\lfrac{#1}{#2}}
  {\lfrac{#1}{#2}}
}
\begin{document}

Equation:
\begin{equation}
   x^{\frac{1}{2}}
 +\frac{1}{2} +\lfrac{1}{2}
\end{equation}
\end{document}

在此处输入图片描述

相关内容