Pomoc z tabelą booktabs

Jestem stosunkowo nowym użytkownikiem Latex i po raz pierwszy próbuję stworzyć tabelę do mojej pracy magisterskiej. chciałbym, aby tabela wyglądała następująco:

wprowadź tutaj opis obrazu

Po kilku poszukiwaniach w Internecie wymyśliłem następujący kod (zignoruj różnice w nagłówkach kolumn między kodem Latex a dokumentem 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} 

w ogóle nie działa!

Komentarze

  • Nie znając szczegółów bookstable, masz literówkę tutaj: {{BCom} i każdy wiersz musi kończyć się znakiem \\ (brak w wierszu ” Liczba kursów … „). Łączna liczba kolumn w wielokolumny powinny równać się całkowitej liczbie kolumn w tabeli, więc po prostu umieść & na początku wiersza, aby utworzyć pustą pierwszą kolumnę.

Odpowiedź

Lepsza wersja:

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

tutaj wprowadź opis obrazu

Dlaczego twój kod nie został skompilowany?

  1. Przegapiłeś & na początku

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

    dokonanie pierwszego wpisu do pierwszej kolumny.

  2. Masz && w wiersz

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

    Powinien to być & i należy umieścić & na początku wiersza. Na końcu tego wiersza pominięto \\ tuż przed \cmidrule.

Teraz modyfikacje

Po poprawieniu wszystkich powyższych, wprowadziłem nowy typ kolumny z pomoc pakietu array .:

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

\raggedright jest dodany aby uniknąć brzydkich efektów justowania, ponieważ kolumny mogą być wąskie, a słowa mogą mieć różną długość. To rozwiązuje również problem złych pól.

Użyłem tej L kolumny o szerokości

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

do

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

zamiast powtarzać.

Na marginesie, \cmidrule można skrócić z l eft lub r ight o

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

Tutaj {4pt} to kwota, o którą skracamy. Można go pominąć, jak \cmidrule(r){4-5}.

Komentarze

  • Bardzo dziękuję. Działa idealnie i dziękuję za dokładne wyjaśnienie. Jeszcze jedno krótkie pytanie – wyrównanie nagłówka tabeli wygląda trochę głupio – mój obraz . Jakie są opcje, aby wyglądał bardziej estetycznie? Czy byłoby możliwe zmieszczenie nagłówka w jednej linii?
  • @Chris, który redagowałem. Zmiany dotyczą marginesów i szerokości kolumn. To najlepsze możliwe przy tak długich nagłówkach. : 0
  • @Chris Na marginesie, podziękowanie najlepiej przekazać za pomocą głosowania za (wszystkie dobre odpowiedzi) i zaakceptowania (bardziej przydatna odpowiedź). Możesz odnieść się do Jak akceptujesz odpowiedź? w przypadku wątpliwości 🙂
  • cześć @Harish Kumar, zagłosowałem za Twoja odpowiedź i jeszcze jedna :). Jeszcze jedno krótkie pytanie – jak wypełnić pustą komórkę w tabeli ” – „. Próbowałem ” \ – „, ale komórka pozostaje pusta.
  • @Chris Dzięki. :). Należy umieścić tylko -, (no \) lub lepiej $-$ lub jeszcze lepiej --- . Mam nadzieję, że to pomoże.

Odpowiedź

Oprócz korzystania z booktabs (aby uzyskać ładny wygląd, tj. dobrze rozmieszczone poziome linie), poleciłbym również użycie pakietu tabularx, aby uprościć zadanie uzyskania czterech równych szerokości kolumny.

tutaj wprowadź opis obrazu

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

Dodatek : Nawiasem mówiąc, wygląd tabeli, którą pokazujesz w swoim poście, nie może być nie osiągnięty przy użyciu poleceń pakietu booktabs. Jeśli naprawdę potrzebujesz tych wszystkich pionowych i poziomych linii, nie „nie używaj polecenia \toprule, \bottomrule, \midrule i \cmidrule. Zamiast tego użyj instrukcji basic-LaTeX \hline. (Oczywiście nadal możesz skorzystaj z pakietu tabularx, aby uprościć tworzenie kolumn o równej szerokości w kolumnach od 2 do 5 tabeli.)

Te modyfikacje doprowadzą do tabela pokazana poniżej.Mam nadzieję, że zgodzisz się z tym, że „wygląd kart książek” – brak pionowych linii, ogólnie mniej poziomych linii i dobrze rozmieszczone reguły – jest o wiele lepszy niż to, co można by nazwać „wyglądem arkusza kalkulacyjnego”.

tutaj wprowadź opis obrazu

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

Komentarze

  • Cześć – tak, zgadzam się, że wygląd zakładek jest dużo lepszy. Obraz, który miałem w moim OP, pochodzi z programu Word i spieszyłem się, aby opublikować, ponieważ musiałem gdzieś wyjechać. Pionowe linie pojawiły się, ponieważ są standardowo dostarczane z narzędziem Word ” table „.

Odpowiedź

Spójrz na następujące kwestie:

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

przykład

Odpowiedź

Możesz spróbować

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *