Jag är relativt ny användare till Latex, och det är första gången jag försöker skapa en tabell för min avhandling. vill att tabellen ska se ut så här:
Efter en del undersökningar på internet kom jag fram till följande kod (ignorera skillnaderna i kolumnrubrikerna mellan Latex-koden och orddokumentet)
\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}
det fungerar inte alls!
Kommentarer
Svar
En bättre 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}
Varför kompilerade inte din kod?
-
Du saknade en
&
i början av\multicolumn{2}{c}{{BCom} & \multicolumn{2}{c}{B.Bus.Sci} \\
gör den första posten för att gå in i den första kolumnen.
-
Du har en
&&
i radenNumber of courses required to pass & Cumulative Total of Courses && Number of courses & Cumulative Total of Courses
Det ska vara
&
och du bör lägga en&
i början av raden. Och i slutet av denna rad saknade du\\
strax före\cmidrule
.
Nu har ändringarna
Efter att ha rättat till allt ovan har jag infört en ny kolumntyp med hjälp av array
paket:
\usepackage{array} \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\raggedright
läggs till för att undvika fula motiveringseffekter eftersom kolumnerna kan vara smala och ord kan variera i längd. Detta tar också hand om dåliga rutor.
Jag har använt denna L
kolumn med en bredd
\dimexpr0.22\textwidth-2\tabcolsep\relax
till och med
*{4}{L{\dimexpr0.22\textwidth-2\tabcolsep\relax}}
istället för att upprepa.
Som en sidnot, \cmidrule
kan förkortas från l
eft eller r
ight av
\cmidrule(r{4pt}){2-3}
Här är {4pt}
det belopp som vi förkortar. Det kan slutas som \cmidrule(r){4-5}
.
Kommentarer
- Tack så mycket. Fungerar perfekt, och tack för den grundliga förklaringen. Bara en snabb fråga – inriktningen av tabellens rubrik ser lite dum ut – min bild . Vilka är alternativen för att få det att se mer estetiskt tilltalande ut? Skulle det vara möjligt att göra rubriken passande på en rad?
- @Chris jag redigerade. Ändringarna är i marginal och bredden på kolumner. Detta är bäst möjligt med så långa rubriker. : 0
- @Chris Som en sidoanteckning kommuniceras bäst genom att rösta (alla bra svar) och acceptera (det mer användbara svaret). Du kanske vill hänvisa till Hur accepterar du ett svar? vid tvivel 🙂
- hej @ Harish Kumar, jag har röstat ditt svar och en annan :). Bara en snabb fråga – hur fyller jag en tom cell i en tabell med en ” – ”. Jag försökte ” \ – ” men cellen förblir tom.
- @Chris Tack. :). Du bör bara sätta
-
, (no \) eller bättre$-$
eller ännu bättre---
. Hoppas det hjälper.
Svar
Förutom att använda booktabs
paket (för att få snygga, dvs väl avstånd, horisontella linjer), skulle jag också rekommendera att du använder paketet tabularx
för att förenkla jobbet att få fyra lika breda kolumner.
\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}
Tillägg : Förresten kan utseendet på tabellen du visar i ditt inlägg inte uppnås när du använder kommandona i paketet booktabs
. Om du verkligen behöver alla dessa vertikala och horisontella linjer bör du inte använda kommandot \toprule
, \bottomrule
, \midrule
och \cmidrule
. Istället använder du bara grundinstruktionen-LaTeX \hline
. (Du kan naturligtvis fortfarande använd paketet tabularx
för att förenkla skapandet av kolumner med samma bredd för kolumnerna 2 till 5 i tabellen.)
Dessa ändringar leder till nedan.Jag hoppas att du håller med om att ”boktavlorna ser ut” – inga vertikala linjer, färre horisontella linjer övergripande och väl placerade regler – är mycket att föredra framför vad man kan kalla ”kalkylbladets utseende”.
\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}
Kommentarer
- Hej – ja jag håller med om att boktavlorna ser mycket bättre ut. Bilden jag hade i min OP är från Word, och jag bråttom för att posta för jag var tvungen att gå någonstans. De vertikala linjerna var där eftersom de kommer som standard med verktyget Word ” ”.
Svar
Ta en titt på följande:
\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}
Svar
Du kan försöka
\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
har du ett stavfel här: {{BCom} och varje raden måste sluta med \\ (saknas i din ” Antal kurser … ” rad). Och antalet kolumner kombinerade i multikolumner ska motsvara ditt totala antal kolumner i din tabell, så lägg bara en & i början av raden för att skapa en tom första kolumn.