Quiero dibujar la siguiente tabla de múltiples columnas en látex. Los títulos están alineados centralmente y el resto del texto está alineado a la izquierda. ¿Como hacer esto? Aquí todos los campos como Uno, Dos, etc. pueden contener una cantidad arbitraria de texto.
Mi intento actual es el siguiente. Además quiero tener:
(a) Dos y Tres divididos por la mitad con respecto al texto de la columna uno.
(b) Todo el texto, excepto los títulos, se alineará a la izquierda.
(c) Una línea recta entre Dos y Tres
\documentclass{article}
\usepackage{blindtext}
\begin{document}
\begin{tabular}{|p{5cm}|c|c|c|}
\hline
\textbf{A} & \textbf{B} & \textbf{C} & \textbf{D}\\
\hline
\blindtext & \begin{tabular}{@{}c@{}}Two \\ Three\end{tabular} & Four & Six
\end{tabular}
\end{document}
Respuesta1
\documentclass{article}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{blindtext}
\begin{document}
\begin{tabular}{|p{5cm}|l|l|l|}
\hline
\multicolumn{1}{|c}{\textbf{A} }& \multicolumn{1}{|c|}{\textbf{B} }& \multicolumn{1}{c}{\textbf{C} }& \multicolumn{1}{|c|}{\textbf{D} }\\
\hline
\multirow{2}{*}{One} & Two & Four & \multirow{2}{*}{Six} \\ \cline{2-3}
& Three & Five & \\ \hline
Seven& Eight & Nine & Ten \\ \hline
\end{tabular}
\end{document}
Respuesta2
Estoy interpretando sus requisitos de la siguiente manera: (a) La columna "A" debe tener la mitad de ancho que la columna "B", y juntas deben abarcar la primera mitad del ancho disponible; b) las columnas "C" y "D" deberían tener la misma anchura y abarcar la segunda mitad; (c) el contenido de todas las celdas debería estar alineado en la parte superior; y (d) la altura de la fila central de celdas está determinada por cuál de las celdas "Uno" y "Seis" sea más alta.
Si esta interpretación es correcta, la siguiente configuración puede ser lo que estás buscando. El único inconveniente, en mi opinión, es que la línea horizontal que separa las celdas Dos/Cuatro de las celdas Tres/Cinco no se equilibra automáticamente; Dependiendo del contenido de las celdas dos y cuatro, \phantom
es posible que se necesite una instrucción, como se demuestra en el código siguiente.
\documentclass{article}
\usepackage{array,ragged2e}
\newcolumntype{P}[1]{>{\RaggedRight\arraybackslash}p{#1}}
\newlength\tablengtho
\newlength\tablengtha
\newlength\tablengthb
\newlength\tablengthcd
% Calculare widths of columns A, B, and C/D
\setlength\tablengtho{\dimexpr\textwidth-8\tabcolsep-5\arrayrulewidth\relax}
\setlength\tablengtha{\dimexpr0.6667\tablengtho/4\relax}
\setlength\tablengthb{\dimexpr1.3333\tablengtho/4\relax}
\setlength\tablengthcd{\dimexpr\tablengtho/4\relax}
\begin{document}
\noindent
\begin{tabular}{| P{\tablengtha} | P{\tablengthb} |
P{\tablengthcd} | P{\tablengthcd} |}
\hline
\multicolumn{1}{|c|}{\textbf{A}} & \multicolumn{1}{c|}{\textbf{B}} &
\multicolumn{1}{c|}{\textbf{C}} & \multicolumn{1}{c|}{\textbf{D}} \\
\hline
One One One One One One One One One &
\multicolumn{1}{@{}c@{}|}{%
\begin{tabular}[t]{P{\tablengthb}}
Two Two Two Two Two Two Two \\
\hline
Three Three Three Three Three \\
\end{tabular}} &
\multicolumn{1}{@{}c@{}|}{%
\begin{tabular}[t]{P{\tablengthcd}}
Four Four Four \phantom{Four} \\ % \phantom{Four} needed for balance
\hline
Five Five Five \\
\end{tabular}} &
Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six Six \\
\hline
Seven & Eight & Nine & Ten \\
\hline
\end{tabular}
\end{document}
Respuesta3
Intenté hacer esto conestablos – Tablas TEX simples simplificadasque generalmente coloca el texto centrado en cada celda. Utilicé 4 macros, una para cada fila, para controlar el tamaño horizontal de las filas y proporcionar una manera de controlar la ubicación del texto en cada celda tanto horizontal como verticalmente.
\documentclass{article}
\input stables.tex
%the width of each column is controlled by the "\hsize=" in each of the four macros
%for each macro the first variable controls horizontal placement of the text, the second
%takes the text itself and the third controls vertical placement of the text.
\def\AA#1#2#3{\hphantom{\hspace{#1}}%
\vtop{\hsize=1.2in\vskip#3 #2}\hphantom{\hspace{1pt}}}
\def\BB#1#2#3{\hphantom{\hspace{#1}}%
\vtop{\hsize=2.2in\vskip#3 #2}\hphantom{\hspace{1pt}}}
\def\CC#1#2#3{\hphantom{\hspace{#1}}%
\vtop{\hsize=1in\vskip#3 #2}\hphantom{\hspace{1pt}}}
\def\DD#1#2#3{\hphantom{\hspace{#1}}%
\vtop{\hsize=1.4in\vskip#3 #2}\hphantom{\hspace{1pt}}}
\begin{document}
\begintable
A|B|C|D\elt
\multirow4{\AA{-.1cm}{One}{-.9cm}}|\BB{-.6cm}{Two}{-.2cm} |\CC{-.8cm}%
{Four}{-.2cm}|\multirow4{\DD{-.1cm}{Six}{-.9cm}}\elspec
|||\el
|||\el
|\trule|\trule| \el
|\BB{-.6cm}{Three}{-.4cm} |\CC{-.8cm}{Five}{-.4cm}|\el
|||\elt
\AA{-.9cm}{Seven}{-.2cm}|\BB{-.9cm}{Eight}{-.2cm}|\CC{-.8cm}{Nine}%
{-.2cm}|\DD{-1cm}{Ten}{-.2cm}
\endtable
\end{document}
Este fue mi resultado:
Respuesta4
Es mejor utilizar el paquete booktabs. Las reglas proporcionan algo de espacio entre filas.
\documentclass{article}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}
\begin{tabular}{p{5cm}|l|l|l}
\toprule
\multicolumn{1}{c}{\textbf{A} }& \multicolumn{1}{|c}{\textbf{B} }& \multicolumn{1}{|c}{\textbf{C} }& \multicolumn{1}{|c}{\textbf{D} }\\
\midrule
\multirow{2}{*}{One} & Two & Four & \multirow{2}{*}{Six} \\ \cmidrule{2-3}
& Three & Five & \\ \midrule
Seven& Eight & Nine & Ten \\ \bottomrule
\end{tabular}
\end{document}