多列表格的问题

多列表格的问题

在 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}

第一个代码的输出

如果您的列宽不一样,您可以S使用 Tikz(以及由 创建的 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

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

这是一个使用两个表格的简单方法。

代码

\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类似环境中,可以通过@{}列类型之间插入文本作为列分隔符。另一方面,可以为一个单元格重新定义列类型。因此,在您的例子中,您只需在第一行\multicolumn添加一个宏链——创建零宽度框,否则会影响单元格之间的空间。\multicolumn{1}{c@{\clap{$S$}}}\clapS

为了确保所有单元格的宽度相同,我定义了自定义列类型:L和。但您可能不一定需要这样做CR

\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}

在此处输入图片描述

相关内容