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:
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
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}
Perché il tuo codice non è stato compilato?
-
Ti sei perso un
&
allinizio di\multicolumn{2}{c}{{BCom} & \multicolumn{2}{c}{B.Bus.Sci} \\
inserendo la prima voce nella prima colonna.
-
Hai un
&&
in la rigaNumber 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.
\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”.
\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}
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}
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.