![multicols 与 eqnarray 联合使用的问题](https://linux22.com/image/433410/multicols%20%E4%B8%8E%20eqnarray%20%E8%81%94%E5%90%88%E4%BD%BF%E7%94%A8%E7%9A%84%E9%97%AE%E9%A2%98.png)
我正在使用 multicols 和 eqnarray,如下所示。但是,我不知道如何消除公式 (1) 之前的垂直空间,以及如何对齐跨列的行。有什么想法吗?提前致谢。
\documentclass {article}
\usepackage {multicol}
\begin {document}
nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono
\begin{multicols}{2}
\begin{eqnarray}
S & \rightarrow & aX \label {eqn03:01:03:01} \\
S & \rightarrow & bX \label {eqn03:01:03:02} \\
S & \rightarrow & cX \label {eqn03:01:03:03} \\
X & \rightarrow & aY \label {eqn03:01:03:04} \\
X & \rightarrow & bY \label {eqn03:01:03:05} \\
X & \rightarrow & cY \label {eqn03:01:03:06} \\
Y & \rightarrow & a \label {eqn03:01:03:07} \\
Y & \rightarrow & b \label {eqn03:01:03:08} \\
Y & \rightarrow & c \label {eqn03:01:03:09}
\end {eqnarray}
\end {multicols}
nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono
\end {document}
答案1
没有一段文字在前面,数学显示就无法正常工作,两列视图使虚假的行更加明显,你可以使用\noindent
\documentclass {article}
\usepackage {multicol}
\begin {document}
nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono
\begin{multicols}{2}
\noindent
\begin{eqnarray}
S & \rightarrow & aX \label {eqn03:01:03:01} \\
S & \rightarrow & bX \label {eqn03:01:03:02} \\
S & \rightarrow & cX \label {eqn03:01:03:03} \\
X & \rightarrow & aY \label {eqn03:01:03:04} \\
X & \rightarrow & bY \label {eqn03:01:03:05} \\
X & \rightarrow & cY \label {eqn03:01:03:06} \\
Y & \rightarrow & a \label {eqn03:01:03:07} \\
Y & \rightarrow & b \label {eqn03:01:03:08} \\
Y & \rightarrow & c \label {eqn03:01:03:09}
\end {eqnarray}
\end {multicols}
nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono
\end {document}
答案2
我认为你不应该使用 eqnarray
——对齐点周围的间距不好。我建议使用两个 minipages 和align
环境:
\documentclass {article}
\usepackage {multicol}
\usepackage{amsmath}
\begin {document}
nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono\vskip -3ex
\begin{minipage}[t]{0.45\textwidth}
\begin{align}
S & \rightarrow aX \label {eqn03:01:03:01} \\
S & \rightarrow bX \label {eqn03:01:03:02} \\
S & \rightarrow cX \label {eqn03:01:03:03} \\
X & \rightarrow aY \label {eqn03:01:03:04} \\
X & \rightarrow bY \label {eqn03:01:03:05}
\end{align}
\end{minipage}
\hfill
\begin{minipage}[t]{0.45\textwidth}
\begin{align}
X & \rightarrow cY \label {eqn03:01:03:06} \\
Y & \rightarrow a \label {eqn03:01:03:07} \\
Y & \rightarrow b \label {eqn03:01:03:08} \\
Y & \rightarrow c \label {eqn03:01:03:09}
\end{align}
\end{minipage}
\vskip 3ex
nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono nono
\end {document}
答案3
您不应该使用eqnarray
。以下计算项目数并填充两个序列,左侧的项目和右侧的项目,然后它创建两个具有不同align
环境的小页面。
请注意,如果您不留空行,则显示后不会出现缩进,这通常是会发生的,但不会发生multicols
。
不要使用$$
,除非你知道自己在做什么(我知道,在这里)。
\documentclass{article}
\usepackage{amsmath}
%\usepackage{xparse} % uncomment if using LaTeX prior to 2020-10-01
\ExplSyntaxOn
\NewDocumentEnvironment{twocolalign}{b}
{
\marcus_twocolalign:n { #1 }
}
{\ignorespacesafterend}
\seq_new:N \l_marcus_twocolalign_in_seq
\seq_new:N \l_marcus_twocolalign_left_seq
\seq_new:N \l_marcus_twocolalign_right_seq
\cs_new_protected:Nn \marcus_twocolalign:n
{
\seq_set_split:Nnn \l_marcus_twocolalign_seq { \\ } { #1 }
\seq_map_indexed_inline:Nn \l_marcus_twocolalign_seq
{
\int_compare:nTF
{
##1 % the current item index
<= % is less than or equal to half the number of items
\int_div_truncate:nn { \seq_count:N \l_marcus_twocolalign_seq + 1 } { 2 }
}
{% put in the left column
\seq_put_right:Nn \l_marcus_twocolalign_left_seq { ##2 }
}
{% put in the right column
\seq_put_right:Nn \l_marcus_twocolalign_right_seq { ##2 }
}
}
$$
\begin{minipage}[t]{0.45\displaywidth}
\vspace*{-\baselineskip}\setlength{\abovedisplayskip}{0pt}
\begin{align}
\seq_use:Nn \l_marcus_twocolalign_left_seq { \\ }
\end{align}
\end{minipage}
\hspace{0.1\displaywidth}
\begin{minipage}[t]{0.45\displaywidth}
\vspace*{-\baselineskip}\setlength{\abovedisplayskip}{0pt}
\begin{align}
\seq_use:Nn \l_marcus_twocolalign_right_seq { \\ }
\end{align}
\end{minipage}
$$
}
\ExplSyntaxOff
\begin{document}
nono nono nono nono nono nono nono nono nono nono nono nono nono
nono nono nono nono nono nono nono nono nono nono nono nono nono
\begin{twocolalign}
S & \rightarrow aX \label {eqn03:01:03:01} \\
S & \rightarrow bX \label {eqn03:01:03:02} \\
S & \rightarrow cX \label {eqn03:01:03:03} \\
X & \rightarrow aY \label {eqn03:01:03:04} \\
X & \rightarrow bY \label {eqn03:01:03:05} \\
X & \rightarrow cY \label {eqn03:01:03:06} \\
Y & \rightarrow a \label {eqn03:01:03:07} \\
Y & \rightarrow b \label {eqn03:01:03:08} \\
Y & \rightarrow c \label {eqn03:01:03:09}
\end{twocolalign}
nono nono nono nono nono nono nono nono nono nono nono nono nono
nono nono nono nono nono nono nono nono nono nono nono nono nono
\end{document}