全局改变方程式中的字体大小

全局改变方程式中的字体大小

我正在尝试使用字体排版文章中的所有公式\small

如果我使用\DeclareMathSizes{9}{8}{6}{4},则常规文本中的内嵌数学公式的大小也会改变。但是,我只想为环境中的多行方程式重新定义字体大小align

我还尝试按以下方式重新定义对齐命令:

\let\oldalign=\align
\renewcommand{\align}{\small\oldalign}

这导致align环境之后的一些文本段落现在以字体排版\small,尽管它们远远超出了align环境范围。抱歉,我现在没有最小示例。这可能与cls我使用的模板有关(sig-alt-full)。

我尝试添加\normalsize作为修复,但没有成功:

\let\oldalign=\align
\renewcommand{\align}{\small\oldalign\normalsize}

然后我开始定义我自己的align环境,如下:

\newenvironment{myalign}
{% begin code
\begin{small}
\begin{align}
}
{% end code
\end{align}
\end{small} }

这个失败了,因为根据 LaTeX,\begin{small}以 结束\end{document}

答案1

我觉得这不是一个好主意。不过下面的方法似乎可行:

\documentclass{article}
\usepackage{amsmath,lipsum}
\newenvironment{myalign}{\par\nobreak\small\noindent\align}{\endalign}
\begin{document}
\lipsum*[2]
\begin{myalign}
a&=b\\
c&=d
\end{myalign}
\lipsum[2]

\renewenvironment{myalign}{\par\nobreak\tiny\noindent\align}{\endalign}

\lipsum*[2]
\begin{myalign}
a&=b\\
c&=d
\end{myalign}
\lipsum[2]

\end{document}

重新定义只是为了更清楚地表明它有效(小尺寸与正常尺寸没有太大区别)。

enter image description here


如果你想使用原来的alignalign*环境,那么下面的技巧就可以了

\usepackage{etoolbox}
\preto\align{\par\nobreak\small\noindent}
\expandafter\preto\csname align*\endcsname{\par\nobreak\small\noindent}

类似的技巧也可用于其他对齐环境。

完整示例:

\documentclass{article}
\usepackage{amsmath,lipsum}

\usepackage{etoolbox}
\preto\align{\par\nobreak\small\noindent}
\expandafter\preto\csname align*\endcsname{\par\nobreak\small\noindent}

\begin{document}
\lipsum*[2]
\begin{align}
a&=b\\
c&=d
\end{align}
\lipsum*[2]
\begin{align*}
a&=b\\
c&=d
\end{align*}
\lipsum[2]

\end{document}

相关内容