Creando una tabla especial con diferentes longitudes de fila en látex.

Creando una tabla especial con diferentes longitudes de fila en látex.

¿Cómo puedo tener una mesa como la siguiente imagen en látex? ingrese la descripción de la imagen aquí

Respuesta1

Una posible solución. yo sugierono usar las líneas verticales, sino más bien elbooktabspaquete. Para la alineación horizontal 20se puede aprovechar elmultirowpaquete, mientras que para la alineación vertical puede calcular el ancho de la entrada más grande de las primeras columnas a través delcalcpaquete.

ingrese la descripción de la imagen aquí

\documentclass{article}
\usepackage{booktabs,calc,multirow}

\newlength\wdx% for vertical alignment
\setlength{\wdx}{\widthof{66}}

\begin{document}

\begin{table}
\centering
\addtolength{\tabcolsep}{10pt}% increase distance between cells 
\begin{tabular}{cccccc}
\toprule
\textsf{x} & \multicolumn{5}{c}{\textsf{y}}\\
\cmidrule(l{\wdx}r{\wdx}){1-1}\cmidrule(l){2-6}
10 & 22 & 33 \\
\multirow{2}[2]{\wdx}{20} & 45 & 34 & 88 & 77 & 80 \\
 & 34 & 67\\
66 & 12 & 10 & 45 & 66\\ 
\bottomrule
\end{tabular}
\end{table}

\end{document}

Respuesta2

Si debe utilizar una regla vertical en su tabla, le sugiero que también inserte "puntales" para obtener un mejor espacio vertical por encima y por debajo de las líneas horizontales dibujadas por \hline. Sin embargo, en general me parece preferible construir tablassinreglas verticales y usar el booktabspaquete para obtener líneas horizontales bien espaciadas dibujadas por \toprule, \midrule, etc.

Para centrar verticalmente la segunda entrada en la primera columna, use una \multirowinstrucción.

También puedes automatizar el trabajo de hacer que la primera columna esté siempre en negrita.

Finalmente, si desea utilizar el tabularxpaquete, digamos porque desea lograr un ancho preespecificado de la tabla, y si desea que el contenido esté centrado (que parece ser el caso en la captura de pantalla que publicó), también necesitará para definir una versión especial "centrada" del Xtipo de columna que proporciona el tabularxpaquete.

La primera tabla a continuación usa un tabularentorno y la segunda usa un tabularxentorno con el ancho total establecido en 0.7\textwidth. La segunda tabla también está ambientada en sans-serif.

ingrese la descripción de la imagen aquí

\documentclass[10pt,a4paper]{article}
\usepackage{multirow,array}
% define "struts" as suggested by Claudio Beccari in
%    a piece in TeX and TUG News, Vol. 2, 1993.
\newcommand\T{\rule{0pt}{2.6ex}}       % = `top' strut
\newcommand\B{\rule[-0.9ex]{0pt}{0pt}} % = `bottom' strut
\newcommand\TB{\T\B} % top-and-bottom strut 

\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}

\begin{tabular}{>{\bfseries}c|ccccc}
x & \multicolumn{5}{c}{\bfseries y\B}\\
\hline
10 & 22 & 33\TB\\
\hline
\multirow{2}{*}{20} & 45 & 34 & 88 & 77 & 80\T\\
 & 34 & 67\B \\
\hline
66 & 12 & 10 & 45 & 66\T\\
\end{tabular}

\bigskip

\textsf{ % switch to sans-serif for the second table
\begin{tabularx}{0.7\textwidth}{>{\bfseries}C|CCCCC}
x & \multicolumn{5}{c}{\bfseries y\B}\\
\hline
10 & 22 & 33\TB\\
\hline
\multirow{2}{*}{20} & 45 & 34 & 88 & 77 & 80\T\\
 & 34 & 67\B \\
\hline
66 & 12 & 10 & 45 & 66\T\\
\end{tabularx}}
\end{document}

Respuesta3

Una solución que utiliza, además de array, únicamente el makecellpaquete. Una ventaja es que uno puede tener filas mucho menos apretadas con el \makecell*comando (agrega\jot simétricamenteen la parte superior e inferior de una celda, a diferencia de \renewcommand{\arraystretch}{…}. Otra es la posibilidad de cambiar el grosor de las líneas (como booktabs, pero manteniendo la posibilidad de usar líneas verticales).

    \documentclass{article}

    \usepackage[utf8]{inputenc}
    \usepackage{array, makecell}

    \begin{document}

    \begin{table}
    \centering\sffamily
    \addtolength{\tabcolsep}{10pt}% increase distance between cells
    \begin{tabular}{c!{\vline width1pt}*{5}{c}}
    \makecell*{x} & \multicolumn{5}{c}{y}\\
    \Xhline{1pt}
    \makecell*{10} & 22 & 33 \\
    \hline
    \makecell{20\\[-2.5ex]}& \makecell*[tc]{45\\34} & \makecell[tc]{34\\67} & 88 & 77 & 80 \\
    \hline
    \makecell*{66} & 12 & 10 & 45 & 66
    \end{tabular}
    \end{table}

    \end{document} 

ingrese la descripción de la imagen aquí

información relacionada