我多次使用以下类型的“填充数组”:
\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}