複数列テーブルの問題

複数列テーブルの問題

このような表を LaTeX で作成する最善の方法は何ですか?

ここに画像の説明を入力してください

答え1

のと。{NiceArray}nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

$\begin{NiceArray}{c|c|c|c}
\Block{1-2}{\scriptstyle S}& \Block{1-2}{\scriptstyle S} & \Block{1-2}{\scriptstyle S} & \\
\hline
1 & 2 & \hphantom{1} & 1 \\
\hline
2 &   & &   \\
\hline
\end{NiceArray}$

\end{document}

最初のコードの出力

列の幅が同じでない場合は、STikz (および によって作成された PGF/Tikz ノードnicematrix) を使用して、上記の垂直ルールを配置できます。

\documentclass{article}
\usepackage{nicematrix,tikz}

\begin{document}

$\begin{NiceArray}{c|c|c|c}
  \hline
  1 & 2 & 123478 & 1 \\
  \hline
  2 &   & &   \\
  \hline
\CodeAfter
  \tikz \foreach \i in {2,3,4} \node at (1-|\i) [above] { $\scriptstyle S$ } ; 
\end{NiceArray}$

\end{document}

2番目のコードの出力

答え2

tabularray

\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{amsmath}
\newlength{\mylen}
\settowidth{\mylen}{2}
\newsavebox{\mysep}
\sbox{\mysep}{\scriptsize\bfseries\textit{S}}

\begin{document}
    \begin{tblr}{
        columns={wd=\mylen},
        cells={c,m},
        hline{2-Z}={leftpos=-1, rightpos=-1, endpos},
        vline{2-Y}={2-Z}{},
        vline{2-4}={1}{text=\clap{\usebox{\mysep}}},
        }
        &&&\\
        1&2&&1\\
        2&&&2\\
    \end{tblr}
\end{document}

ここに画像の説明を入力してください

答え3

ここでは、2 つの表形式を使用するハッキーな方法を紹介します。

コード

\documentclass{article}

\usepackage{tabularx}
\newcolumntype{C}[1]{>{\hspace{0pt}\centering\arraybackslash}p{#1}}

\begin{document}

\noindent
\begin{tabular}{ C{1mm} *{3}{C{4mm}}}
    & S & S & S
\end{tabular}

\noindent
\renewcommand{\arraystretch}{2}
\begin{tabular}{ C{4mm} *{3}{|C{4mm}} }
    \hline
    1 & 2 &   & 1\\ \hline
    2 &   &   & 2\\ \hline
\end{tabular}

\end{document}

結果

ここに画像の説明を入力してください

答え4

のような環境ではtabular、列タイプ間の を介して列セパレーターとしてテキストを挿入できます@{}。一方、 は1 つのセルの列タイプを再定義できます。したがって、あなたの場合は、最初の行にマクロ\multicolumnのチェーンを追加するだけで済みます。これにより、幅がゼロのボックスが作成されます。そうしないと、セル間のスペースに影響します。\multicolumn{1}{c@{\clap{$S$}}}\clapS

すべてのセルの幅が同じになるように、カスタム列タイプ 、 、 を定義しますLCただしR、必ずしもそれが必要なわけではありません。

\documentclass{article}
\usepackage{array}
\newcolumntype{C}{>{\centering\arraybackslash}p{0.35cm}}
\newcolumntype{L}{>{\raggedright\arraybackslash}p{0.35cm}}
\newcolumntype{R}{>{\raggedleft\arraybackslash}p{0.35cm}}

\newcommand\mc{\multicolumn{1}{c@{\clap{$S$}}}{}}


\begin{document}
\begin{table}
  \centering
  \begin{tabular}{@{} L *2{|C} | R @{}}
    \mc & \mc & \mc & \\
    \hline
    1 & 2 & & 1 \\
    \hline
    2 &   & & 2 \\
    \hline
  \end{tabular}
\end{table}
\end{document}

ここに画像の説明を入力してください

関連情報