Ubicación de las filas de la tabla en caso de saltos de línea

Ubicación de las filas de la tabla en caso de saltos de línea

Tengo una tabla con tres columnas que incluyen una descripción, una breve abreviatura y un valor. La descripción puede ser una entrada muy larga, por lo que uso el tipo de columna p para dividir las líneas automáticamente. Estoy usando longtable porque la tabla final ocupará un par de páginas.

Por el momento uso este código

\documentclass{article}
\usepackage{longtable}

\begin{document}

\begin{longtable}{p{0.5\textwidth}cc} 
\hline
Column 2 &  Column 2 & Column 3\\ 
\hline
short entry & Entry s.1 & Value v.s1\\
  & Entry s.2 & Value v.s2 \\
\hline
here is a very long text in the first column that will be broken into multiple rows & Entry l.1 &  Value v.l1 \\
 & Entry l.2 &  Value v.l2 \\
\hline
\end{longtable}

\end{document}

para obtener esta tabla:

versión actual

Como puede ver, si la entrada de la primera columna es corta, es fácil alinear las dos últimas columnas. Pero si el texto de la primera columna se divide en varias líneas, naturalmente habrá un espacio similar, pero ahora vacío, en las dos últimas líneas. Entonces, en el ejemplo, lo que me gustaría hacer es "subir" la Entrada l.2 y el Valor v.l2 dos "filas" hacia arriba.

Respuesta1

Puede utilizar \multirowel multirowpaquete para abarcar una celda en varias filas, por ejemplo:

\documentclass{article}
\usepackage{longtable}
\usepackage{multirow}

\begin{document}

\begin{longtable}{p{0.5\textwidth}cc} 
\hline
Column 2 &  Column 2 & Column 3\\ 
\hline
short entry & Entry s.1 & Value v.s1\\
  & Entry s.2 & Value v.s2 \\
\hline
\multirow{2}{0.5\textwidth}{here is a very long text in the first column that will be broken into multiple rows} & Entry l.1 &  Value v.l1 \\
 & Entry l.2 &  Value v.l2 \\
 \\
\hline
\end{longtable}

\end{document}

Para ajustar el texto, debe establecer el ancho de la columna manualmente; en el ejemplo, está configurado en.5\textwidth . Ver tambiénesta respuesta a "Ajuste de texto en columnas de varias filas".

EDITAR: Para evitar verificar manualmente las filas que abarca su texto, puede usar tablas anidadas para las dos últimas columnas en lugar de usar \multirow, por ejemplo:

\documentclass{article}
\usepackage{longtable}

\begin{document}

\begin{longtable}{p{0.5\textwidth}c} 
\hline
Column 2 &\begin{tabular}{cc}Column 2 & Column 3\end{tabular}\\ 
\hline
short entry &\begin{tabular}{cc}
    Entry s.1 & Value v.s1\\
    Entry s.2 & Value v.s2
\end{tabular}\\
\hline
here is a very long text in the first column that will be broken into multiple rows &\begin{tabular}{cc}
    Entry l.1 & Value v.l1 \\
    Entry l.2 & Value v.l2
\end{tabular}\\
\hline
\end{longtable}

\end{document}

Creo que preferiría comprobarlo dos veces porque, si es posible, intentaría evitar textos largos en las tablas.

Respuesta2

También puedes utilizar el paquete booktabs.

\documentclass{article}
\usepackage{booktabs}
\usepackage{longtable}
\begin{document}
\begin{longtable}{p{0.5\textwidth}p{3cm} p{3cm}} 
\toprule
Column 1 &  Column 2 & Column 3\\ 
\midrule
short entry & Entry s.1 & Value v.s1\\
& Entry s.2 & Value v.s2 \\
\midrule
There is a very long text in the  & Entry l.1 &  Value v.l1 \\
first column that will be broken  &Entry 1.2 & Value v.12\\
into multi rows&&\\
\bottomrule
\end{longtable}
\end{document}

pestañas

Respuesta3

Como todas sus columnas son p{some width}, puede usarlas \newlinedentro de una celda y tener menos filas. Alternativamente, puedes usar el makecellpaquete, que permite saltos de línea dentro de las celdas:

\documentclass{article}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{makecell}
\renewcommand\cellalign{lt}

\begin{document}

\begin{longtable}{p{0.5\textwidth}p{3cm} p{3cm}}
  \toprule
  Column 1 & Column 2 & Column 3 \\
  \midrule
  short entry & Entry s.1 & Value v.s1 \\
                                                                                    & Entry s.2 & Value v.s2 \\
  \midrule
  There is a very long text in the first column that will be broken into multi rows & \makecell{Entry l.1 & \\Entry 1.2} & \makecell{Value v.l1\\Value v.12} \\
  \addlinespace
  There is a very long text in the first column that will be broken into multi rows & Entry l.1\newline Entry 1.2 & Value v.l1\newline Value v.12 \\
  \bottomrule
\end{longtable}

\end{document} 

ingrese la descripción de la imagen aquí

información relacionada