为每个显示模式数学方程添加一个命令

为每个显示模式数学方程添加一个命令

是否可以在每个显示数学模式中、公式之前和之后都有一个钩子?

例如:如果我想使每个显示公式缩小 50%,我会要求进入 $$ 公式时的钩子为\scalebox{.5}\bgroup\ensuremath\bgroup,离开公式时的钩子为\egroup\egroup

它应该与$$...$$\[...\]一起工作\begin{equation}...\end{equation}

换句话说,写作

\def\beginDisplayMathHook{\scalebox{.5}\bgroup\ensuremath\bgroup}
\def\endDisplayMathHook{\egroup\egroup}
$$ x^2+y^2=1 $$

应该相当于

$$\scalebox{.5}{\ensuremath{x^2+y^2=1}}$$

这可能吗?

答案1

在此处输入图片描述

希望数学排版之神能原谅我。

\documentclass{article}
\usepackage{graphicx}
\def\z#1{\par\hrule$$#1$$\[#1\]\begin{equation}#1\end{equation}\hrule}

\setlength\textwidth{4cm}

\makeatletter
\everydisplay{%
\setbox0\hbox\bgroup
\global\setbox1\box\voidb@x 
\def\eqno#1$${\global\setbox1\hbox{#1}$$}%
$\displaystyle\def\]{$$}\aftergroup\foo}
\def\foo${\egroup
\ifdim\dimexpr\wd0+\wd1>\textwidth
  \resizebox{\dimexpr\textwidth-\wd1\relax}{!}{\box0}%
\else
  \box0
\fi
\ifvoid1
\else
\eqno\box1
\fi
$$}
\makeatother

\begin{document}

\z{x+y+z}

\z{\frac{111}{2222}+\sqrt{x^2-y^2}}

\z{\frac{111}{2222}+\sqrt{x^2-y^2}+a+b}


\z{\cos\theta - \frac{t^5}{s^4}+\sqrt{x^2-y^2}+a+b}

\z{\cos\theta +\sin\phi + \tan\sigma - \frac{t^5}{s^4}+\sqrt{x^2-y^2}+a+b}

\end{document}

答案2

已经存在该nccmath包,它定义了您可能感兴趣的“中等数学”命令和环境:它们可以缩放到~ 80 % of \displaystyle

以下是一个例子:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{nccmath}

\begin{document}
\[ a^2 + b^2 = 1,\quad \int_a^b \frac{f(x)}{g(x)}\,\mathrm d\mkern1mu x, \quad\begin{bmatrix}x & y\\u & v\end{bmatrix}\]%

\[ \medmath{ a^2 + b^2 = 1}, \quad \medint\int_a^b \mfrac{f(x)}{g(x)}\,\mathrm d\mkern1mu x \quad\left[\begin{mmatrix}x & y\\u & v\end{mmatrix}\right] \]%

 \end{document} 

在此处输入图片描述

相关内容