如何在对齐环境中操作字体大小

如何在对齐环境中操作字体大小

我正在使用 align 包来处理多行方程。方程中的某些行比文本宽度略长(我使用双列)。我只想减小这些特定行的字体大小,而不是整个对齐环境。我该怎么做?

答案1

mathtools包提供了一个宏,用于在环境(和系列)\Aboxed内装箱方程式align穿过 &
原代码为:

\newcommand\Aboxed[1]{\let\bgroup{\romannumeral-`}\@Aboxed#1&&\ENDDNE}
\def\@Aboxed#1&#2&#3\ENDDNE{%
  \ifnum0=`{}\fi \setbox \z@
    \hbox{$\displaystyle#1{}\m@th$\kern\fboxsep \kern\fboxrule }%
    \edef\@tempa {\kern  \wd\z@ &\kern -\the\wd\z@ \fboxsep
        \the\fboxsep \fboxrule \the\fboxrule }\@tempa \boxed {#1#2}%
}

我将通过测量公式的整个宽度并将整行重新调整为 来调整这一点\linewidth。这也适用于twocolumn,但showframe不显示内部列分隔符。

从示例中可以看出,当一条长线位于&所有线的最长部分的两侧时,效果最佳。

等号没有完全对齐,因为左边部分不是在的左侧结束=(也不是在中间),而是在关系符号之前插入的额外空间的左侧(即\thickmuskip),它也将被缩放。

代码

\documentclass[
%   twocolumn,
]{article}
\usepackage{amsmath}
\usepackage{graphics}
\usepackage{pgf}
\makeatletter
\newdimen\width@one
\newdimen\width@two
\newdimen\width@onetwo
\newdimen\left@kern
\newcommand\Rboxed[1]{\let\bgroup{\romannumeral-`}\@Rboxed#1&&\ENDDNE}
\def\@Rboxed#1&#2&#3\ENDDNE{%
  \ifnum0=`{}\fi%
  \setbox0\hbox{$\displaystyle#1{}\m@th$}%
  \setbox1\hbox{$\displaystyle{}#2\m@th$}%
  \width@one=\wd0%
  \width@two=\wd1%
  \width@onetwo=\width@one%
  \advance\width@onetwo by \width@two%
  \pgfmathsetmacro{\width@factor}{\linewidth/\width@onetwo}%
  %%% Solution A
%  \pgfmathsetlength{\left@kern}{\width@factor*\width@one}%
%  \edef\@tempa{\kern\left@kern&\kern-\the\left@kern}\@tempa%
%  \scalebox{\width@factor}{$\displaystyle#1{}$}&\scalebox{\width@factor}{$\displaystyle{}#2$}%
%  \resizebox\linewidth!{$#1#2$}%
  %% Solution B
  \edef\@tempb{\noexpand\scalebox{\width@factor}{$\displaystyle#1{}$}&\noexpand\scalebox{\width@factor}{$\displaystyle{}#2$}}%
  \@tempb%
}
\makeatother
%\usepackage[showframe,pass]{geometry}
\usepackage{showframe}
\begin{document}
\begin{align*}
a^2 + b^2 & = c^2 \\
\Rboxed{long equation + very long equation + long equation + long equation + long equation & = a^2+b^2} \\
c^2 & = a^2 + b^2
\end{align*}

\begin{align*}
a^2 + b^2 & = c^2 \\
\Rboxed{long equation + very long equation + long equation + long equation & = a^2+b^2 + long equation} \\
c^2 & = a^2 + b^2
\end{align*}

\twocolumn
\begin{align*}
a^2 + b^2 & = c^2 \\
\Rboxed{long equation + long equation + long & = a^2+b^2} \\
c^2 & = a^2 + b^2
\end{align*}

\begin{align*}
a^2 + b^2 & = c^2 \\
\Rboxed{long equation + long equation + long & = a^2+b^2 + long equation} \\
c^2 & = a^2 + b^2
\end{align*}
\end{document}

输出

输出

相关内容