如何缩放 eqnarray 以适合页面宽度

如何缩放 eqnarray 以适合页面宽度

我在 Latex 中有以下 eqnarray:

\begin{eqnarray*}
&
\begin{matrix}
\equalto{\mathbf{s^{i_0}}}{} & \equalto{\mathbf{s^{i_1}}}{} & \cdots & \equalto{\mathbf{s^{i_{N - 1}}}}{}
\end{matrix}
& \\
&
\left(
\begin{matrix}
b^0_{i_0} & b^0_{i_1} & \cdots & b^0_{i_{N - 1}} \\
b^1_{i_0} & b^1_{i_1} & \cdots & b^1_{i_{N - 1}} \\
\vdots & \cdots & \cdots & \vdots \\
b^L_{i_0} & b^L_{i_1} & \cdots & b^L_{i_{N - 1}}
\end{matrix}
\right)
&
\begin{matrix}
\rightarrow \\
\rightarrow \\
\rightarrow \\
\rightarrow
\end{matrix}
\left(
\begin{matrix}
a^0_0 & a^0_1 & \cdots & a^0_{N - 1} \\
a^1_0 & a^1_1 & \cdots & a^1_{N - 1} \\
\vdots & \cdots & \cdots & \vdots \\
a^L_0 & a^L_1 & \cdots & a^L_{N - 1}
\end{matrix}
\right)
=
\left(
\begin{matrix}
s_0 & s_1 & \cdots & s_{N - 1} \\
s_N & s_{N + 1} & \cdots & s_{2N - 1} \\
\vdots & \cdots & \cdots & \vdots \\
s_S & 0 & \cdots & 0
\end{matrix}
\right)
\end{eqnarray*}

如你所见,它非常大,有很多线条和需要对齐的东西。我知道我可以通过以下方法缩放方程的内容以适合线条:

\begin{equation}
\resizebox{.9 \linewidth}{!}
{
    $my_equation_here$
}
\end{equation}

尽管我显然可以为简单的方程式做到这一点,但我甚至不知道从哪里开始将那个庞大的 eqnarray 转换为一些$$环境集,同时保持我需要的对齐。

所以我想知道:是否有任何合理的方法来调整方程的大小外部它的环境?比如

\resizemyprettyequation{fitthepage}
{
  \begin{equation}
    my_pretty_equation_here
  \end{equation}
}

我环顾四周,但似乎找不到解决方案!

答案1

希望您没有太多这样的东西需要排版。

诀窍是稍微减少列间填充。第一个矩阵上方的行是手动定位的,调整间距以适应。

我增加了的值\arraystretch,感觉由于下标很大,需要一点垂直空间。

这些设置是本地环境的equation,因此您不需要恢复它们。

\documentclass{article}
\usepackage{amsmath,calc,graphicx}

\newcommand{\equalto}[2]{%
  \begin{tabular}[t]{@{}c@{}}
  \makebox[\widthof{$#2$}]{$#1$}\\[-.5ex]
  \rotatebox{90}{$=$}
  \end{tabular}%
}

\begin{document}

\begin{equation}
\addtolength{\arraycolsep}{-3pt}
\renewcommand{\arraystretch}{1.2}
\begin{aligned}[b]
&\mspace{19mu}\begin{matrix}
 \equalto{\mathbf{s^{i_0}}}{b^0_{i_0}} &
 \equalto{\mathbf{s^{i_1}}}{b^0_{i_1}} &
 \cdots &
 \equalto{\mathbf{s^{i_{N - 1}}}}{b^0_{i_{N-1}}}
 \end{matrix}
\\[-1ex]
&\begin{pmatrix}
b^0_{i_0} & b^0_{i_1} & \cdots & b^0_{i_{N - 1}} \\
b^1_{i_0} & b^1_{i_1} & \cdots & b^1_{i_{N - 1}} \\
\vdots & \vdots & \ddots & \vdots \\
b^L_{i_0} & b^L_{i_1} & \cdots & b^L_{i_{N - 1}}
\end{pmatrix}
\begin{matrix}
{\rightarrow}\vphantom{b^0_{i_{N - 1}}} \\
{\rightarrow}\vphantom{b^0_{i_{N - 1}}} \\
\vdots \\
{\rightarrow}\vphantom{b^0_{i_{N - 1}}}
\end{matrix}
\begin{pmatrix}
a^0_0 & a^0_1 & \cdots & a^0_{N - 1} \\
a^1_0 & a^1_1 & \cdots & a^1_{N - 1} \\
\vdots & \vdots & \ddots & \vdots \\
a^L_0 & a^L_1 & \cdots & a^L_{N - 1}
\end{pmatrix}
=
\begin{pmatrix}
s^{}_0 & s^{}_1 & \cdots & s^{}_{N - 1} \\
s^{}_N & s^{}_{N + 1} & \cdots & s^{}_{2N - 1} \\
\vdots & \vdots & \ddots & \vdots \\
s^{}_S & 0 & \cdots & 0
\end{pmatrix}
\end{aligned}
\end{equation}

\end{document}

enter image description here

如果没有方程编号,我发现

\addtolength{\arraycolsep}{-1.5pt}

足够了,但当然设置取决于文档的(未知)大小。

答案2

align如果我理解得清楚的话,这里有一个使用简单环境来实现的方法blockarray

\documentclass{article}
\usepackage{mathtools, blkarray, graphicx}

\newcommand{\verteq}{\rotatebox{90}{$\,=$}}
\newcommand{\equalto}[2]{\underset{\scriptstyle\overset{\mkern4mu\verteq}{#2}}{#1}}

\usepackage[showframe]{geometry} 

\begin{document}

\begin{equation}%
\raisebox{1.12ex}{$\begin{blockarray}{ccccc}
\equalto{\mathbf{s^{i_0}}}{} & \equalto{\mathbf{s^{i_1}}}{} & \cdots & \equalto{\mathbf{s^{i_{N - 1}}}}{} \\[-0.4ex]
\begin{block}{(cccc)>{\!}c}
b^0_{i_0} & b^0_{i_1} & \cdots & b^0_{i_{N - 1}} & \to\\
b^1_{i_0} & b^1_{i_1} & \cdots & b^1_{i_{N - 1}} & \to \\
\vdots & \cdots & \cdots & \vdots & \to \\
b^L_{i_0} & b^L_{i_1} & \cdots & b^L_{i_{N - 1}} & \to\\
\end{block}
\end{blockarray}$}
\hspace{-0.9em}
\begin{pmatrix}
a^0_0 & a^0_1 & \cdots & a^0_{N - 1} \\
a^1_0 & a^1_1 & \cdots & a^1_{N - 1} \\
\vdots & \cdots & \cdots & \vdots \\
a^L_0 & a^L_1 & \cdots & a^L_{N - 1}
\end{pmatrix}
=
\left(
\begin{matrix}
s_0 & s_1 & \cdots & s_{N - 1} \\
s_N & s_{N + 1} & \cdots & s_{2N - 1} \\
\vdots & \cdots & \cdots & \vdots \\
s_S & 0 & \cdots & 0
\end{matrix}
\right)
\end{equation}

\end{document} 

enter image description here

相关内容