是否可以在每个显示数学模式中、公式之前和之后都有一个钩子?
例如:如果我想使每个显示公式缩小 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}