Aide avec un tableau de booktabs

Je « suis un utilisateur relativement nouveau de Latex, et cest la première fois que jessaye de construire un tableau pour ma thèse. I souhaite que le tableau ressemble à ceci:

entrez la description de limage ici

Suite à quelques recherches sur Internet, jai trouvé le code suivant (ignorez les différences dans les en-têtes de colonne entre le code Latex et le document 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} 

cela ne fonctionne pas du tout!

Commentaires

  • Sans connaître les particularités de bookstable, vous avez une faute de frappe ici: {{BCom}, et chacun la ligne doit se terminer par \\ (manquant dans votre  » Nombre de cours …  » ligne). Et le total des colonnes combinées dans les multicolonnes doivent correspondre au nombre total de colonnes de votre tableau, il suffit donc de mettre un & au début de la ligne pour produire une première colonne vide.

Réponse

Une meilleure version:

\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} 

entrez la description de limage ici

Pourquoi votre code na « pas été compilé?

  1. Vous avez manqué un & au début de

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

    en créant la première entrée pour aller dans la première colonne.

  2. Vous avez un && dans la ligne

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

    Elle doit être & et vous devez mettre un & au début de la ligne. Et à la fin de cette ligne, vous avez manqué \\ juste avant \cmidrule.

Maintenant les modifications

Après avoir corrigé tout ce qui précède, jai introduit un nouveau type de colonne avec le laide du paquet array:

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

\raggedright est ajoutée pour éviter les effets de justification laids car les colonnes peuvent être étroites et les mots peuvent varier en longueur. Cela prend également en charge les mauvaises boîtes.

Jai utilisé cette L colonne avec une largeur

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

à

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

au lieu de répéter.

En remarque, le \cmidrule peut être raccourci de l eft ou r ight par

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

Ici {4pt} est le montant par lequel nous raccourcissons. Il peut être laissé comme \cmidrule(r){4-5}.

Commentaires

  • Merci beaucoup. Fonctionne parfaitement, et merci pour lexplication approfondie. Juste une autre petite question – lalignement de len-tête du tableau semble un peu idiot – mon image . Quelles sont les options pour le rendre plus esthétique? Serait-il possible de faire tenir le titre sur une seule ligne?
  • @Chris jai édité. Les changements concernent la marge et la largeur des colonnes. Cest le meilleur possible avec des en-têtes aussi longs. : 0
  • @Chris En remarque, dire merci ici est mieux communiqué en votant (toutes les bonnes réponses) et en acceptant (la réponse la plus utile). Vous pouvez vous référer à Comment acceptez-vous une réponse? en cas de doute 🙂
  • salut @Harish Kumar, jai voté pour votre réponse et une autre :). Juste une autre question rapide – comment remplir une cellule vide dans un tableau avec un  » – « . Jai essayé  » \ –  » mais la cellule reste vide.
  • @Chris Merci. :). Vous ne devez mettre que -, (no \) ou mieux $-$ ou encore mieux --- . Jespère que cela aidera.

Réponse

En plus dutiliser le booktabs (pour avoir une belle apparence, cest-à-dire des lignes horizontales bien espacées), je vous recommande également dutiliser le package tabularx pour simplifier le travail dobtention de quatre de largeur égale Colonnes.

entrez la description de limage ici

\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} 

Addendum : Incidemment, lapparence du tableau que vous montrez dans votre message ne peut pas être obtenue en utilisant les commandes du package booktabs. Si vous avez vraiment besoin de toutes ces lignes verticales et horizontales, vous ne devriez pas utiliser la commande \toprule, \bottomrule, \midrule et \cmidrule. À la place, utilisez simplement linstruction basic-LaTeX \hline. (Vous pouvez, bien sûr, toujours utilisez le package tabularx pour simplifier la création de colonnes de même largeur pour les colonnes 2 à 5 du tableau.)

Ces modifications conduiront à la tableau ci-dessous.Jespère que vous conviendrez que le « look des booktabs » – pas de lignes verticales, moins de lignes horizontales dans lensemble et des règles bien espacées – est de loin préférable à ce que lon pourrait appeler le « look de feuille de calcul ».

entrez la description de limage ici

\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} 

Commentaires

  • Salut – oui, je suis daccord que le look des booktabs est bien meilleur. Limage que javais dans mon OP vient de Word, et jétais pressé de poster parce que je devais partir quelque part. Les lignes verticales étaient là parce quelles sont fournies en standard avec loutil Word  » table « .

Réponse

Regardez ce qui suit:

\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} 

exemple

Réponse

Vous pouvez essayer

\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} 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *