multicols 与 eqnarray 联合使用的问题

multicols 与 eqnarray 联合使用的问题

我正在使用 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}

在此处输入图片描述

相关内容