我想知道是否有办法让 LaTeX 解释$\frac{a}{b}$
为$a/b$
,但\[\frac{a}{b}\]
作为\[\frac{a}{b}\]
。
当更改我的文本时,将内联方程式更改$a/b$
为显示方程式有点繁琐。\[\frac{a}{b}\]
答案1
加载中amsmath
当处于“内联数学”(或文本样式)和“显示数学”(或显示样式)下时,自然会切换\frac
到此模式。这提供了更好的布局:\tfrac
\dfrac
\documentclass{article}
\usepackage{amsmath}
\begin{document}
See $\frac{1}{2}$, or
\[
\frac{1}{2} \quad e^{\frac{1}{2}}.
\]
\end{document}
但是,您可以\frac
使用以下方式根据样式更新条件\mathchoice
:
\documentclass{article}
\let\oldfrac\frac% Store \frac
\renewcommand{\frac}[2]{%
\mathchoice
{\oldfrac{#1}{#2}}% display style
{#1/#2}% text style
{#1/#2}% script style
{#1/#2}% script-script style
}
\begin{document}
See $\frac{1}{2}$, or
\[
\frac{1}{2} \quad e^{\frac{1}{2}}.
\]
\end{document}
鉴于(假设)\frac{x+y}{x-y}
将在文本样式中设置为x+y/x-y
,并且从技术上讲具有不正确的数学表示,我们可以更进一步。也就是说,测量分子和分母的宽度,并在必要时将其设置在括号内:
\documentclass{article}
\let\oldfrac\frac% Store \frac
\makeatletter
\newcommand{\groupit}[1]{(#1)}% To group...
\newcommand{\nogroupit}[1]{#1}% ...or not to group
\renewcommand{\frac}[2]{%
\setbox\z@\hbox{$#1$}% Store numerator
\setbox\tw@\hbox{$#2$}% Store denominator
\ifdim\wd\z@>1em \let\groupornot@i\groupit\else\let\groupornot@i\nogroupit\fi% Measure numerator
\ifdim\wd\tw@>1em \let\groupornot@ii\groupit\else\let\groupornot@ii\nogroupit\fi% Measure denominator
\mathchoice
{\oldfrac{#1}{#2}}% display style
{\groupornot@i{#1}/\groupornot@ii{#2}}% text style
{\groupornot@i{#1}/\groupornot@ii{#2}}% script style
{\groupornot@i{#1}/\groupornot@ii{#2}}% script-script style
}
\makeatother
\begin{document}
See $\frac{1}{2}$ or $\frac{m}{x^2}$, or
\[
\frac{1}{2} \quad e^{\frac{1}{2}} \quad e^{\frac{x+y}{x-y}}.
\]
\end{document}