パディングされた2列配列

パディングされた2列配列

私は次のような「パディングされた配列」を何度も使用しています。

\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 がコマンドであり、配列が環境であるため、この 2 つを混在させる正しい方法がわからないことです。たとえば、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

通常の\newenvironmentDRSX以下の環境のように)またはその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}

関連情報