
私は次のような「パディングされた配列」を何度も使用しています。
\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
通常の\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}