Мое выравнивание текста заголовков столбцов - "Совокупное количество курсов, необходимых для сдачи" и "Совокупное количество курсов для старших классов, необходимых для сдачи" - явно неправильное. Я понимаю, что это необычно длинные заголовки столбцов, но на данный момент я не могу придумать более точного термина.
Мне бы хотелось, чтобы заголовки двух столбцов больше "оборачивались" вокруг "BSc" и "EDP", хотя и не совсем. Возможно, если бы обрезание было на слове "Courses" (перенести "Required" на вторую строку), это было бы неплохо. Также возможно ли переместить столбцы EDP немного правее, чтобы они были более тесно выровнены со словом "Courses" выше?
МВЭ:
\documentclass{article}
\usepackage{booktabs, threeparttable}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\begin{document}
\begin{table}[H]
\begin{threeparttable}
\caption{Minimum Requirements for Automatic Readmission into the Science Faculty}
\label{table:sci}
\begin{tabular}{@{}p{0.18\textwidth}*{4}{L{\dimexpr0.1\textwidth-2\tabcolsep\relax}}@{}}
\toprule
& \multicolumn{2}{c}{\bfseries Cumulative Number of Courses Required to be Passed} &
\multicolumn{2}{c}{\bfseries Cumulative Number of Senior Courses Required to be Passed} \\
\cmidrule(l){2-3} \cmidrule(l){4-5}
& BSc & EDP & BSc & EDP \\
\midrule
First-year & 2 & 2 & --- & --- \\
Second-year & 7 & 6 & --- & --- \\
Third-year & 11 & 10 & 3 & 2 \\
Fourth-year & 15 & 14 & 6 & 5 \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}
решение1
Я внес три изменения в вашу таблицу:
1) Я добавил\centering
2) Я изменил ширину 4 правых столбцов на 0.2\textwidth...
, и
3) Я поместил заголовки каждый в свой собственный \Longstack
. Это потребовало трех дополнительных настроек в преамбуле: добавить пакет stackengine
; указать пакету использовать \#
в качестве конца строки, так как tabular
уже использует \\
(обратите внимание, что последняя stackengine
версия 4.00 может использовать \\
разделители конца строки, даже вложенные в tabular
); и указать пакету установить 12pt между базовыми линиями строк стека, так как tabular
обнуляет значение \baselineskip
, которое в противном случае является зазором длинного стека по умолчанию. Обратите внимание, что вы можете указать a \Longstack
или [l]
необязательный [r]
аргумент, чтобы изменить его с [c]
выравнивания по умолчанию.
\documentclass{article}
\usepackage{booktabs, threeparttable, stackengine}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\setstackEOL{\#}
\setstackgap{L}{12pt}
\begin{document}
\begin{table}[ht]
\centering
\begin{threeparttable}
\caption{Minimum Requirements for Automatic Readmission into the Science Faculty}
\label{table:sci}
\begin{tabular}{@{}p{0.18\textwidth}*{4}{L{\dimexpr0.20\textwidth-2\tabcolsep\relax}}@{}}
\toprule
& \multicolumn{2}{c}{\bfseries \Longstack{Cumulative Number\# of Courses Required\# to be Passed}} &
\multicolumn{2}{c}{\bfseries \Longstack{Cumulative Number of\# Senior Courses Required\# to be Passed}} \\
\cmidrule(l){2-3} \cmidrule(l){4-5}
& BSc & EDP & BSc & EDP \\
\midrule
First-year & 2 & 2 & --- & --- \\
Second-year & 7 & 6 & --- & --- \\
Third-year & 11 & 10 & 3 & 2 \\
Fourth-year & 15 & 14 & 6 & 5 \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}
решение2
Не используйте c
in \multicolumn{2}{c}{...
но
\multicolumn{2}{L{\dimexpr0.3\linewidth-8\tabcolsep\relax}}{...
Полный код:
\documentclass{article}
\usepackage{booktabs, threeparttable}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\begin{document}
\begin{table}[H]
\begin{threeparttable}
\caption{Minimum Requirements for Automatic Readmission into the Science Faculty}
\label{table:sci}
\begin{tabular}{@{}p{0.18\textwidth}*{4}{L{\dimexpr0.3\linewidth-8\tabcolsep\relax}}@{}}
\toprule
& \multicolumn{2}{L{\dimexpr0.4\linewidth-4\tabcolsep\relax}}{\bfseries Cumulative Number of Courses Required to be Passed} &
\multicolumn{2}{L{\dimexpr0.4\linewidth-4\tabcolsep\relax}}{\bfseries Cumulative Number of Senior Courses Required to be Passed} \\
\cmidrule(l){2-3} \cmidrule(l){4-5}
& BSc & EDP & BSc & EDP \\
\midrule
First-year & 2 & 2 & --- & --- \\
Second-year & 7 & 6 & --- & --- \\
Third-year & 11 & 10 & 3 & 2 \\
Fourth-year & 15 & 14 & 6 & 5 \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}