我正在使用 align 包来处理多行方程。方程中的某些行比文本宽度略长(我使用双列)。我只想减小这些特定行的字体大小,而不是整个对齐环境。我该怎么做?
答案1
这mathtools
包提供了一个宏,用于在环境(和系列)\Aboxed
内装箱方程式align
穿过 &
。
原代码为:
\newcommand\Aboxed[1]{\let\bgroup{\romannumeral-`}\@Aboxed#1&&\ENDDNE}
\def\@Aboxed#1\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\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}