Antwort1
Mit {NiceArray}
von 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}
Wenn Ihre Spalten nicht die gleiche Breite haben, können Sie sie S
mithilfe von Tikz (und den von erstellten PGF/Tikz-Knoten nicematrix
) über die vertikalen Linien setzen.
\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}
Antwort2
Mit 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}
Antwort3
Hier ist ein Hack, der zwei Tabellen verwendet.
Code
\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}
Ergebnis
Antwort4
In tabular
ähnlichen Umgebungen ist es möglich, Texte als Spaltentrenner zwischen Spaltentypen einzufügen @{}
. Andererseits \multicolumn
kann ein Spaltentyp für eine Zelle an Ort und Stelle neu definiert werden. In Ihrem Fall müssen Sie daher nur eine Makrokette \multicolumn{1}{c@{\clap{$S$}}}
in der ersten Zeile hinzufügen \clap
– erstellt ein Feld mit der Breite Null, da sonst S
der Abstand zwischen den Zellen beeinträchtigt würde.
Um sicherzustellen, dass alle Zellen die gleiche Breite haben, definiere ich benutzerdefinierte Spaltentypen: L
, C
und R
. Aber das brauchen Sie vielleicht nicht unbedingt.
\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}