Alineación superior y de varias filas en formato tabular

Alineación superior y de varias filas en formato tabular

Quiero alinear verticalmente el texto en la parte superior de cada celda, en un tabularentorno donde algunas celdas debenabarcar varias filas.

Intente no utilizar otros paquetes si es posible. (No tengo control sobre la instalación de paquetes adicionales).

\documentclass[12pt, margin = 1mm]{standalone}
\newcommand\TS{\rule{0pt}{2.6ex}}         % Top strut
\newcommand\BS{\rule[-0.9ex]{0pt}{0pt}}   % Bottom strut
\usepackage{array, multirow}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\TS\BS\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering  \let\newline\\\TS\BS\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft \let\newline\\\TS\BS\arraybackslash}p{#1}}

\begin{document}
\begin{tabular} [t] { C{2cm} C{3cm} | C{2cm} C{3cm} }
    Column 1 & Column 2 & Column 3 & Column 4 \\ \hline
    Foo & Line 1 \newline Line 2 &
    \multirow{2}{*}{Alpha} & Line 1 \newline Line 2 \newline Line 3 \\
    Bar & Line 1 \newline Line 2 \\
    Spam & Line 1 \newline Line 2 &
    \multirow{2}{*}{Beta} & Line 1 \newline Line 2 \newline Line 3 \\
    Eggs & Line 1 \newline Line 2 \\
\end{tabular}
\end{document}

ingrese la descripción de la imagen aquí

Hay dos problemas:

  1. Usar p{#1}en lugar de m{#1}ayuda a alinear Foo, Bar, Spam, Eggs en la parte superior, pero no Alpha, Beta. El [t]argumento no funcionó.

  2. Alpha y sus 3 líneas no abarcan las filas de Foo, Bar. Lo mismo ocurre con Beta.

¿Cómo podemos resolver ambos problemas?

Respuesta1

¿como esto?

ingrese la descripción de la imagen aquí

sin multirow, con tipos simplificados de definiciones de columnas y con uso de makecell:

\documentclass[12pt, margin=3mm]{standalone}
\usepackage{array,  makecell}
\setcellgapes{3pt}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}

\begin{document}
{\makegapedcells
    \begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1    & Column 2 & Column 3 & Column 4 \\
    \hline
Foo         & \makecell[t]{Line 1\\ Line 2} & Alpha & \makecell[t]{Line 1\\ Line 2} \\
Bar         & \makecell[t]{Line 1\\ Line 2} &       &   \\
Spam        & \makecell[t]{Line 1\\ Line 2} & Beta  & \makecell[t]{Line 1\\ Line 2}  \\
Eggs        & \makecell[t]{Line 1\\ Line 2} &       & \\
    \end{tabular}
}
\end{document}

editar (1):o buscas una tabla simple:

{\makegapedcells
    \begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1    & Column 2 & Column 3 & Column 4 \\
    \hline
Foo         & Line 1    & Alpha & Line 1    \\ 
            & Line 2    &       & Line 2    \\ 
Bar         & Line 1    &       &           \\
            & Line 2    &       &           \\
Spam        & Line 1    & Beta  & Line 1    \\
            & Line 2    &       & Line 2    \\ 
Eggs        & Line 1    &       &           \\
            & Line 2    &       &           \\
    \end{tabular}
}

que tiene un espaciado vertical ligeramente diferente:

ingrese la descripción de la imagen aquí

editar(2):solución con multirow(como tanto deseo, sin embargo, lamentablemente no tengo claro qué/cuántas filas deben abarcar)

\documentclass[12pt, margin=3mm]{standalone}
\usepackage{array,  makecell, multirow}
\setcellgapes{3pt}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}

\begin{document}
{\makegapedcells
 \renewcommand\multirowsetup{\centering}% <-- for centering contents of multirow center
    \begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1    & Column 2 & Column 3 & Column 4 \\
    \hline
\multirow[t]{2}{=}{Foo} & Line 1    & \multirow[t]{4}{=}{Alpha} & Line 1    \\ 
                        & Line 2    &                           & Line 2    \\ 
\multirow[t]{2}{=}{Bar} & Line 1    &                           &           \\
                        & Line 2    &                           &           \\
\multirow[t]{2}{=}{Spam}& Line 1    & \multirow[t]{4}{=}{Beta}  & Line 1    \\
                        & Line 2    &                           & Line 2    \\ 
\multirow[t]{2}{=}{Eggs}& Line 1    &                           &           \\
                        & Line 2    &                           &           \\
    \end{tabular}
}
\end{document}

El resultado es el mismo que antes (en la edición (1)) si solo hay una palabra en multirowla celda. en caso de que haya más, por ejemplo como:

    \begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1    & Column 2 & Column 3 & Column 4 \\
    \hline
\multirow[t]{2}{=}{Foo} & Line 1    & \multirow[t]{4}{=}{Alpha} & Line 1    \\ 
                        & Line 2    &                           & Line 2    \\ 
\multirow[t]{2}{=}{Bar} & Line 1    &                           &           \\
                        & Line 2    &                           &           \\
\multirow[t]{2}{=}{Spam}& Line 1    & \multirow[t]{4}{=}{Beta Beta Beta Beta Beta
                                                         Beta Beta Beta Beta Beta}  
                                                                & Line 1    \\
                        & Line 2    &                           & Line 2    \\ 
\multirow[t]{2}{=}{Eggs}& Line 1    &                           &           \\
                        & Line 2    &                           &           \\
    \end{tabular}

el resultado es:

ingrese la descripción de la imagen aquí

información relacionada