填充的两列数组

填充的两列数组

我多次使用以下类型的“填充数组”:

\setlength{\fboxrule}{0pt}
\setlength{\fboxsep}{3pt}
\fbox{
\ensuremath{
\begin{array}{|l|l|}
\hline 
A & B\\ 
C & D\\
\vdots & \vdots \\
E & F\\
\hline 
\end{array}
}
} 

我希望能够直接写入,例如,

\begin{DRS}
A & B\\ 
C & D\\
\vdots & \vdots \\
E & F\\
\end{DRS}

(或者用命令代替环境),但我不知道如何干净地设置它。问题是 fbox 是一个命令,而 array 是一个环境,所以我不确定如何正确地混合这两个。我可能会将它们组合在一起,例如使用 environ 包(我刚刚通过搜索这个主题找到的),但如果知道正确的方法就更好了。

谢谢!

编辑:这是我正在制作的图像类型(使用嵌套的 DRS):

在此处输入图片描述

答案1

如果您需要一些填充,请明确要求:

\documentclass{article}

\newif\ifDRSmath
\newenvironment{DRS}
  {\relax\ifmmode\global\DRSmathtrue\else$\fi
   \kern3pt\begin{array}{|l|l|}
   \noalign{\kern3pt}
   \hline\mathstrut}
  {\hline
   \noalign{\kern3pt}
   \end{array}\kern3pt
   \ifDRSmath\global\DRSmathfalse\else$\fi}

\begin{document}
\begin{DRS}
    A & B\\ 
    C & D\\
    \vdots & \vdots \\
    E & F\\
\end{DRS}
\begin{DRS}
    A & B\\ 
    C & D\\
    \vdots & \vdots \\
    E & F\\
\end{DRS}

\end{document}

需要条件才能在文本模式和数学模式下使用环境。两种模式均可使用:开始时我们检查数学模式,结束时仅检查数学模式,\ifDRSmath此技巧可避免发出$错误。

答案2

您可以使用正常\newenvironment(如DRSX下面的环境),或者包裹environ(如在DRS环境中):

在此处输入图片描述

没有必要使用\fbox{}正常方式\hline即可完成工作。

代码:

\documentclass{article}
\usepackage{environ}

\NewEnviron{DRS}{%
    \setlength{\fboxrule}{0pt}
    \setlength{\fboxsep}{3pt}
    $\begin{array}{|l|l|}%
        \hline
        \BODY%
        \hline
    \end{array}$%
}

\newenvironment{DRSX}{%
    \setlength{\fboxrule}{0pt}
    \setlength{\fboxsep}{3pt}
    \begin{math}\begin{array}{|l|l|}%
        \hline
}{%
    \hline
    \end{array}\end{math}%
}


\begin{document}
\begin{DRS}
    A & B\\ 
    C & D\\
    \vdots & \vdots \\
    E & F\\
\end{DRS}
\begin{DRSX}
    A & B\\ 
    C & D\\
    \vdots & \vdots \\
    E & F\\
\end{DRSX}
\end{document}

相关内容