Problema con la tabla multicolumna

Problema con la tabla multicolumna

¿Cuál es la mejor manera de obtener una tabla como esta en LaTeX?

ingrese la descripción de la imagen aquí

Respuesta1

Con {NiceArray}de 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}

Salida del primer código.

Si sus columnas no tienen el mismo ancho, puede poner las Sreglas verticales anteriores usando Tikz (y los nodos PGF/Tikz creados por 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}

Salida del segundo código.

Respuesta2

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

ingrese la descripción de la imagen aquí

Respuesta3

Aquí hay una forma ingeniosa de utilizar dos tablas.

Código

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

Resultado

ingrese la descripción de la imagen aquí

Respuesta4

En tabularentornos similares, es posible insertar textos como separadores de columnas @{}entre tipos de columnas. Por otro lado, \multicolumnpuede redefinir un tipo de columna para una celda. Por lo tanto, en su caso solo necesita agregar una cadena de \multicolumn{1}{c@{\clap{$S$}}}macros en la primera fila; \clapcrea un cuadro de ancho cero; de lo contrario, Safectaría el espacio entre las celdas.

Solo para asegurarme de que todas las celdas tengan el mismo ancho, defino tipos de columnas personalizadas L: Cy R. Pero es posible que no necesariamente lo necesites.

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

ingrese la descripción de la imagen aquí

información relacionada