Aiuto con una tabella booktabs

Sono un utente relativamente nuovo di Latex, e questa è la prima volta che tento di costruire una tabella per la mia tesi. vorrei che la tabella fosse simile a questa:

inserisci la descrizione dellimmagine qui

Dopo alcune ricerche su Internet, mi è venuto in mente il codice seguente (ignora le differenze nelle intestazioni delle colonne tra il codice Latex e il documento 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} 

non funziona affatto!

Commenti

  • Senza conoscere le specifiche di bookstable, hai un errore di battitura qui: {{BCom} e ogni la riga deve terminare con \\ (mancante nella riga ” Numero di corsi … “). E il totale delle colonne combinate in le colonne multiple devono corrispondere al numero totale di colonne della tabella, quindi inserisci un & allinizio della riga per produrre una prima colonna vuota.

Rispondi

Una versione migliore:

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

inserisci qui la descrizione dellimmagine

Perché il tuo codice non è stato compilato?

  1. Ti sei perso un & allinizio di

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

    inserendo la prima voce nella prima colonna.

  2. Hai un && in la riga

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

    Dovrebbe essere & e dovresti inserire un & allinizio della riga. E alla fine di questa riga ti sei perso \\ appena prima di \cmidrule.

Ora le modifiche

Dopo aver corretto tutto quanto sopra, ho introdotto un nuovo tipo di colonna con il aiuto del array pacchetto:

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

\raggedright è stato aggiunto per evitare brutti effetti di giustificazione poiché le colonne possono essere strette e le parole possono variare in lunghezza. Questo si prende cura anche delle caselle danneggiate.

Ho usato questa L colonna con una larghezza

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

a

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

invece di ripetere.

Come nota a margine, il \cmidrule può essere abbreviato da l eft o r ight di

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

Qui {4pt} è limporto di cui accorciamo. Può essere omesso come \cmidrule(r){4-5}.

Commenti

  • Grazie mille. Funziona perfettamente e grazie per la spiegazione approfondita. Solo unaltra rapida domanda: lallineamento dellintestazione della tabella sembra un po sciocco – mia immagine . Quali sono le opzioni per renderlo esteticamente più gradevole? Sarebbe possibile adattare lintestazione su una riga?
  • @Chris Ho modificato. Le modifiche riguardano il margine e la larghezza delle colonne. Questo è il migliore possibile con intestazioni così lunghe. : 0
  • @Chris Come nota a margine, dire grazie qui è meglio comunicato votando (tutte le buone risposte) e accettando (la risposta più utile). Puoi fare riferimento a Come accetti una risposta? in caso di dubbi 🙂
  • ciao @Harish Kumar, ho votato contro la tua risposta e unaltra :). Solo unaltra rapida domanda: come faccio a riempire una cella vuota in una tabella con ” – “. Ho provato ” \ – ” ma la cella rimane vuota.
  • @Chris Thanks. :). Dovresti inserire solo -, (no \) o migliore $-$ o anche meglio --- . Spero che sia daiuto.

Rispondi

Oltre a utilizzare booktabs pacchetto (per ottenere linee orizzontali di bellaspetto, cioè ben distanziate), ti consiglio anche di utilizzare il pacchetto tabularx per semplificare il lavoro di ottenere quattro di uguale larghezza colonne.

inserisci qui la descrizione dellimmagine

\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 : per inciso, laspetto della tabella che mostri nel tuo messaggio non può essere ottenuto quando usi i comandi del pacchetto booktabs. Se hai veramente bisogno di tutte quelle linee verticali e orizzontali, non dovresti “utilizzare il comando \toprule, \bottomrule, \midrule e \cmidrule. Invece, usa semplicemente listruzione \hline di base-LaTeX. (Puoi, ovviamente, comunque fare uso del pacchetto tabularx per semplificare la creazione di colonne di uguale larghezza per le colonne da 2 a 5 della tabella.)

Queste modifiche porteranno al tabella mostrata di seguito.Spero che concorderai sul fatto che “laspetto del foglio di lavoro” – nessuna linea verticale, meno linee orizzontali complessive e regole ben distanziate – è di gran lunga preferibile a quello che si potrebbe chiamare “aspetto del foglio di lavoro”.

inserisci qui la descrizione dellimmagine

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

Commenti

  • Ciao, sì, sono daccordo che laspetto dei booktabs è molto migliore. Limmagine che avevo nel mio OP proviene da Word, e avevo fretta di postare perché dovevo andare da qualche parte. Le linee verticali erano lì perché sono fornite come standard con lo strumento Word ” table “.

Risposta

Dai unocchiata a quanto segue:

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

esempio

Risposta

Potresti provare

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *