Ayuda con una tabla de booktabs

Soy un usuario relativamente nuevo de Latex, y esta es la primera vez que intento construir una tabla para mi tesis. quisiera que la tabla se vea así:

ingrese la descripción de la imagen aquí

Después de investigar un poco en Internet, se me ocurrió el siguiente código (ignore las diferencias en los encabezados de columna entre el código de Latex y el documento de Word)

\begin{table}[htbp] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{lrrrr} \toprule \multicolumn{2}{c}{{BCom} & \multicolumn{2}{c}{B.Bus.Sci} \\ \cmidrule{2-3} \cmidrule{4-5} & Number of courses required to pass & Cumulative Total of Courses && Number of courses & Cumulative Total of Courses \midrule First year & 4 & 8 & 4 & 18 \\ \bottomrule \end{tabular} \label{table:mr} \end{table} 

¡no funciona en absoluto!

Comentarios

  • Sin conocer los detalles de bookstable, tiene un error tipográfico aquí: {{BCom}, y cada la fila debe terminar con \\ (falta en su » Número de cursos … » fila). Y el total de columnas combinadas en las multicolumnas deben ser iguales al número total de columnas de su tabla, así que simplemente coloque un & al comienzo de la fila para producir una primera columna vacía.

Respuesta

Una versión mejor:

\documentclass{article} \usepackage{booktabs} \usepackage[margin=1in]{geometry} \usepackage{array} \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} \begin{document} \begin{table}[htbp] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{@{}p{0.12\textwidth}*{4}{L{\dimexpr0.22\textwidth-2\tabcolsep\relax}}@{}} \toprule & \multicolumn{2}{c}{BCom} & \multicolumn{2}{c}{B.Bus.Sci} \\ \cmidrule(r{4pt}){2-3} \cmidrule(l){4-5} & Number of courses required to pass & Cumulative Total of Courses & Number of courses & Cumulative Total of Courses\\ \midrule First year & 4 & 8 & 4 & 18 \\ \bottomrule \end{tabular} \label{table:mr} \end{table} \end{document} 

ingrese la descripción de la imagen aquí

¿Por qué su código no se compiló?

  1. Te perdiste un & al comienzo de

    \multicolumn{2}{c}{{BCom} & \multicolumn{2}{c}{B.Bus.Sci} \\ 

    haciendo la primera entrada para ir a la primera columna.

  2. Tiene un && en la línea

    Number of courses required to pass & Cumulative Total of Courses && Number of courses & Cumulative Total of Courses 

    Debe ser & y debes poner un & al comienzo de la línea. Y al final de esta línea se perdió \\ justo antes de \cmidrule.

Ahora las modificaciones

Después de corregir todo lo anterior, he introducido un nuevo tipo de columna con el ayuda del paquete array:

\usepackage{array} \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} 

\raggedright se agrega para evitar efectos de justificación desagradables, ya que las columnas pueden ser estrechas y las palabras pueden variar en longitud. Esto también se ocupa de las cajas defectuosas.

He usado esta L columna con un ancho

\dimexpr0.22\textwidth-2\tabcolsep\relax 

hasta

*{4}{L{\dimexpr0.22\textwidth-2\tabcolsep\relax}} 

en lugar de repetir.

Como nota al margen, el \cmidrule puede acortarse de l eft o r ight por

\cmidrule(r{4pt}){2-3} 

Aquí {4pt} es la cantidad que reducimos. Se puede dejar como \cmidrule(r){4-5}.

Comentarios

  • Muchas gracias. Funciona perfectamente y gracias por la explicación detallada. Solo otra pregunta rápida – la alineación del encabezado de la tabla parece un poco tonta – mi imagen . ¿Cuáles son las opciones para que se vea más agradable estéticamente? ¿Sería posible que el encabezado quepa en una línea?
  • @Chris lo edité. Los cambios están en el margen y el ancho de las columnas. Esto es lo mejor posible con encabezados tan largos. : 0
  • @Chris Como nota al margen, decir gracias aquí se comunica mejor votando a favor (todas las buenas respuestas) y aceptando (la respuesta más útil). Es posible que desee consultar ¿Cómo acepta una respuesta? en caso de dudas 🙂
  • hola @Harish Kumar, he votado a favor tu respuesta y otra :). Solo otra pregunta rápida: ¿cómo lleno una celda vacía en una tabla con un » – «. Intenté » \ – » pero la celda permanece en blanco.
  • @Chris Gracias. :). Debe poner solo -, (no \) o mejor $-$ o incluso mejor --- . Espero que te ayude.

Responder

Además de usar el booktabs (para obtener líneas horizontales atractivas, es decir, bien espaciadas), también le recomendaría que utilice el paquete tabularx para simplificar el trabajo de obtener cuatro columnas.

ingrese la descripción de la imagen aquí

\documentclass{article} \usepackage{booktabs,tabularx} \usepackage[margin=1in]{geometry} % set margins to meet your document"s needs \newcolumntype{Y}{>{\raggedright\arraybackslash}X} % use ragged-right, not fully-justified, look in narrow columns \begin{document} \begin{table}[t] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \label{table:mr} %\centering % not needed, since table is as wide as text block \begin{tabularx}{\textwidth}{@{}lYYYY@{}} \toprule &\multicolumn{2}{c}{\bfseries BCom} &\multicolumn{2}{c}{\bfseries B.Bus Sci} \\ \cmidrule(lr){2-3} \cmidrule(l){4-5} &Number of courses required to pass &Cumulative Total of Courses & Number of courses & Cumulative Total of Courses\\ \midrule First year & 4 & 8 & 4 & 18 \\ \bottomrule \end{tabularx} \end{table} \end{document} 

Anexo : Por cierto, el aspecto de la tabla que muestra en su publicación no puede lograrse cuando se usan los comandos del paquete booktabs. Si realmente necesita todas esas líneas verticales y horizontales, no debería usar el comando \toprule, \bottomrule, \midrule y \cmidrule. En su lugar, utilice la instrucción básica-LaTeX \hline. (Por supuesto, aún puede haga uso del paquete tabularx para simplificar la creación de columnas de igual ancho para las columnas 2 a 5 de la tabla.)

Estas modificaciones conducirán a la tabla que se muestra a continuación.Espero que esté de acuerdo en que el «aspecto de las pestañas de libros» (sin líneas verticales, menos líneas horizontales en general y reglas bien espaciadas) es mucho mejor que lo que podríamos llamar el «aspecto de hoja de cálculo».

ingrese la descripción de la imagen aquí

\documentclass{article} \usepackage{tabularx} \usepackage[margin=1in]{geometry} % choose margin as needed \newcolumntype{Y}{>{\raggedright\arraybackslash}X} \begin{document} \begin{table}[h!] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \label{table:mr} \begin{tabularx}{\textwidth}{|l|Y|Y|Y|Y|} \hline &\multicolumn{2}{c|}{\bfseries B. Com} &\multicolumn{2}{c|}{\bfseries B. Bus. Sci} \\ \hline & Number of courses required to pass & Cumulative Total of Courses & Number of courses required to pass & Cumulative Total of Courses \\ \hline First Year & 4 & 8 & 4 & 18 \\ \hline Second Year & 10 & 16 & 11 & 16 \\ \hline Third Year & 18 & 24 & 20 & 25 \\ \hline \end{tabularx} \end{table} \end{document} 

Comentarios

  • Hola, sí, estoy de acuerdo en que el aspecto de las pestañas es mucho mejor. La imagen que tenía en mi OP es de Word, y tenía prisa por publicar porque tenía que irme a algún lado. Las líneas verticales estaban ahí porque vienen de serie con la herramienta Word » table «.

Respuesta

Eche un vistazo a lo siguiente:

\documentclass{scrartcl} \usepackage{booktabs} \begin{document} \begin{table}[htbp] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{p{0.2\textwidth}p{0.2\textwidth}p{0.2\textwidth}p{0.2\textwidth}p{0.2\textwidth}} \\ \toprule & \multicolumn{2}{c}{BCom} & \multicolumn{2}{c}{B. Bus Scii} \\ \midrule & Number of courses required to pass & Cumulative Total of Courses & Number of courses & Cumulative Total of Courses \\ \midrule First year & 4 & 8 & 4 & 8 \\ Second year & 10 & 16 & 11 & 16 \\ Third year & 18 & 24 & 20 & 25 \\ \bottomrule \end{tabular} \end{table} \begin{table}[htbp] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{p{0.18\textwidth}p{0.18\textwidth}p{0.18\textwidth}p{0.18\textwidth}p{0.18\textwidth}} \\ \toprule & \multicolumn{2}{c}{BCom} & \multicolumn{2}{c}{B. Bus Scii} \\ \midrule & \multicolumn{1}{p{3.5cm}}{Number of courses required to pass} & Cumulative Total of Courses & \multicolumn{1}{p{2cm}}{Number of courses} & Cumulative Total of Courses \\ \midrule First year & 4 & 8 & 4 & 8 \\ Second year & 10 & 16 & 11 & 16 \\ Third year & 18 & 24 & 20 & 25 \\ \bottomrule \end{tabular} \end{table} \end{document} 

ejemplo

Respuesta

Puede intentar

\documentclass{amsart} \usepackage{booktabs} \begin{document} \begin{table}[htbp] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{@{}lp{3cm}p{3cm}p{3cm}p{3cm}@{}} \toprule & \multicolumn{2}{c}{BCom} & \multicolumn{2}{c}{B.Bus.Sci} \\ \cmidrule(r){2-3} \cmidrule(l){4-5} \\ & Number of courses required to pass & Cumulative total of courses & Number of courses & Cumulative total of courses \\ \midrule \\ First year & 4 & 8 & 4 & 18 \\ \bottomrule \end{tabular} \label{table:mr} \end{table} \newcommand*{\head}[1]{\parbox{2cm}{\begin{flushright}#1\end{flushright}}} \begin{table} \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{@{}lrrr@{}} \toprule & Year & \head{Courses required to pass} & \head{Cumulative total} \\ \midrule \\ BCom & 1 & 4 & 8 \\ & 2 & 4 & 8 \\ & 3 & 4 & 8 \\ B.Bus Sci & 1 & 4 & 18 \\ & 2 & 4 & 8 \\ & 3 & 4 & 8 \\ \bottomrule \end{tabular} \label{table:mr.2} \end{table} \end{document} 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *