如果显示样式、上标/下标,我可以有条件地更新命令吗?
我有:
\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}