решение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$}}}
в первую строку -- \clap
создает блок нулевой ширины, в противном случае S
это повлияет на пространство между ячейками.
Чтобы убедиться, что все ячейки имеют одинаковую ширину, я определяю пользовательские типы столбцов: L
, C
и 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}