Jeg er relativt ny bruger til Latex, og det er første gang, jeg prøver at konstruere en tabel til min afhandling. vil gerne have, at tabellen ser sådan ud:
Efter nogle undersøgelser på internettet kom jeg op med følgende kode (ignorer forskellene i kolonneoverskrifterne mellem Latex-koden og 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 fungerer slet ikke!
Kommentarer
Svar
En bedre 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}
Hvorfor kompilerede din kode ikke?
-
Du gik glip af en
&
i begyndelsen af\multicolumn{2}{c}{{BCom} & \multicolumn{2}{c}{B.Bus.Sci} \\
gør den første post til at gå ind i den første kolonne.
-
Du har en
&&
i linjenNumber of courses required to pass & Cumulative Total of Courses && Number of courses & Cumulative Total of Courses
Den skal være
&
og du skal sætte en&
i starten af linjen. Og i slutningen af denne linje savnede du\\
lige før\cmidrule
.
Nu er ændringerne
Efter at have rettet alle ovenstående, har jeg introduceret en ny kolonnetype med hjælp til array
pakke .:
\usepackage{array} \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\raggedright
tilføjes for at undgå grimme berettigelseseffekter, da kolonnerne kan være smalle, og ordene kan variere i længde. Dette tager sig også af dårlige kasser.
Jeg har brugt denne L
kolonne med en bredde
\dimexpr0.22\textwidth-2\tabcolsep\relax
til
*{4}{L{\dimexpr0.22\textwidth-2\tabcolsep\relax}}
i stedet for at gentage.
Som en sidebemærkning er \cmidrule
kan forkortes fra l
eft eller r
ight med
\cmidrule(r{4pt}){2-3}
Her er {4pt}
det beløb, vi forkorter med. Det kan udelades som \cmidrule(r){4-5}
.
Kommentarer
- Mange tak. Fungerer perfekt, og tak for den grundige forklaring. Bare et andet hurtigt spørgsmål – justeringen af overskriften på tabellen ser lidt fjollet ud – mit billede . Hvad er mulighederne for at få det til at se mere æstetisk ud? Ville det være muligt at få overskriften til at passe på en linje?
- @Chris, jeg redigerede. Ændringerne er i margen og bredden af kolonner. Dette er bedst muligt med så lange overskrifter. : 0
- @Chris Som en sidebemærkning kommunikeres det bedst ved at sige tak her ved at opstemme (alle de gode svar) og acceptere (det mere nyttige svar). Det kan være en god idé at henvise til Hvordan accepterer du et svar? i tvivl 🙂
- hej @ Harish Kumar, jeg har opstemt dit svar og en anden :). Bare et andet hurtigt spørgsmål – hvordan udfylder jeg en tom celle i en tabel med en ” – “. Jeg prøvede ” \ – ” men cellen forbliver tom.
- @Chris Tak. :). Du skal kun sætte
-
, (no \) eller bedre$-$
eller endnu bedre---
. Håber det hjælper.
Svar
Ud over at bruge booktabs
pakke (for at få flotte, dvs. vandrette linier med god afstand), vil jeg også anbefale, at du bruger tabularx
-pakken for at forenkle jobbet med at få fire lige bredde kolonner.
\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 : I øvrigt kan udseendet af den tabel, du viser i dit indlæg, ikke opnås, når du bruger kommandoerne i booktabs
-pakken. Hvis du virkelig har brug for alle disse lodrette og vandrette linjer, skal du ikke bruge kommandoen \toprule
, \bottomrule
, \midrule
og \cmidrule
. I stedet skal du bare bruge grundlæggende LaTeX \hline
instruktion. (Du kan selvfølgelig stadig benyt tabularx
-pakken for at forenkle oprettelsen af kolonner med samme bredde for kolonne 2 til 5 i tabellen.)
Disse ændringer vil føre til nedenstående tabel.Jeg håber, du er enig i, at “booktabs-udseendet” – ingen lodrette linjer, færre vandrette linjer generelt og velplacerede regler – er meget at foretrække frem for, hvad man kan kalde “regneark-look”.
\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, jeg er enig i, at booktabs-udseendet er langt bedre. Det billede, jeg havde i min OP, er fra Word, og jeg skyndte mig at poste, fordi jeg var nødt til at gå et sted. De lodrette linjer var der, fordi de kommer som standard med ordet ” tabel ” værktøj.
Svar
Se på følgende:
\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 prøve
\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 en tastefejl her: {{BCom} og hver række skal slutte med \\ (mangler i din ” Antal kurser … ” række). Og det samlede antal kolonner kombineret i multikolonner skal svare til dit samlede antal kolonner i din tabel, så læg bare en & i begyndelsen af rækken for at producere en tom første søjle.