次の表の数字だけを中央揃えにしたいと思います。中央揃えコマンドのいくつかのバリエーションを試してみましたが、表全体に影響してしまいます (私は Latex をあまり使いません)。
MWE:
\documentclass{article}
\usepackage{booktabs, threeparttable}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\begin{document}
\begin{table}[htbp]
\begin{threeparttable}
\caption{Number of Credits per Course by Year}
\label{table:nc}
\begin{tabular}{@{}p{0.18\textwidth}*{6}{L{\dimexpr0.15\textwidth-2\tabcolsep\relax}}@{}}
\toprule
& \multicolumn{2}{c}{\bfseries Commerce Faculty} &
\multicolumn{2}{c}{\bfseries EBE Faculty} &
\multicolumn{2}{c}{\bfseries Science Faculty} \\
\cmidrule(l){2-3} \cmidrule(l){4-5} \cmidrule(l){6-7}
& F, S, H Courses & W Courses & F, S, H Courses & W Courses & F, S, H Courses & W Courses \\
\midrule
First-year & 18 & 36 & Variable & Variable & 18 & 36 \\
Second-year & 18 & 36 & Variable & Variable & 24 & 48 \\
Third-year & 18 & 36 & Variable & Variable & 36 & 72 \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}
答え1
環境の代わりにtabularx
、幅が に事前設定された環境--を使用することもできます。そうすることで、列 2 から 7 の必要な幅を手作業で計算するという面倒な (そして間違いやすい) 作業が省けます。以下の例では、列タイプは右寄せの資料用で、列タイプは中央揃えの資料用です。どちらの列タイプもパッケージの列タイプに基づいています。メインの列タイプは、ほとんどの行の列 2 から 7 を中央揃えにする必要があるためです。列タイプは、列ヘッダー「F、S、H コース」および「W コース」に使用されます。これらのヘッダーでは、改行を明示的に指定する必要がないことに注意してください。\textwidth
tabular
L
C
X
tabularx
C
L
下の画像では、 の下の細い水平線は\bottomrule
によって作成されています\hrule
。これは、テーブルの幅が に等しいことを示すためだけに配置されています\textwidth
。
\documentclass{article}
\usepackage{booktabs, threeparttable}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\begin{document}
\begin{table}[htbp]
\begin{threeparttable}
\caption{Number of Credits per Course by Year}
\label{table:nc}
\begin{tabularx}{\textwidth}{@{}l*{6}{C}@{}}
\toprule
& \multicolumn{2}{c}{\bfseries Commerce Faculty} &
\multicolumn{2}{c}{\bfseries EBE Faculty} &
\multicolumn{2}{c@{}}{\bfseries Science Faculty} \\ % note use of "c@{}"
\cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(l){6-7} % left- and right-trimming
& \multicolumn{1}{L}{F, S, H Courses} &
\multicolumn{1}{L}{W Courses} &
\multicolumn{1}{L}{F, S, H Courses} &
\multicolumn{1}{L}{W Courses}&
\multicolumn{1}{L}{F, S, H Courses} &
\multicolumn{1}{L@{}}{W Courses} \\ % note use of "L@{}"
\midrule
First-year & 18 & 36 & Variable & Variable & 18 & 36 \\
Second-year & 18 & 36 & Variable & Variable & 24 & 48 \\
Third-year & 18 & 36 & Variable & Variable & 36 & 72 \\
\bottomrule
\end{tabularx}
\end{threeparttable}
\end{table}
\hrule % just to indicate the width of the text block
\end{document}
答え2
中央揃えの列に新しい列タイプを宣言します (必要に応じて、 を使用すると、特定のセルの定義をいつでも上書きできます\multicolumn
)。
\documentclass[draft]{article}
\usepackage{booktabs, threeparttable}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newlength\mylen
\setlength\mylen{\dimexpr0.135\textwidth-2\tabcolsep\relax}
\begin{document}
\begin{table}[htbp]
\begin{threeparttable}
\setlength\tabcolsep{5pt}
\caption{Number of Credits per Course by Year}
\label{table:nc}
\begin{tabular}{
@{}
p{0.18\textwidth}
*{2}{C{\mylen}}
*{2}{L{\mylen}}
*{2}{C{\mylen}}@{}
}
& \multicolumn{2}{c}{\bfseries Commerce Faculty} &
\multicolumn{2}{c}{\bfseries EBE Faculty} &
\multicolumn{2}{c@{}}{\bfseries Science Faculty} \\
\cmidrule(l){2-3} \cmidrule(l){4-5} \cmidrule(l){6-7}
& \multicolumn{1}{l}{F, S, H} & \multicolumn{1}{l}{W} & \multicolumn{1}{l}{F, S, H} & \multicolumn{1}{l}{W} & \multicolumn{1}{l}{F, S, H} & \multicolumn{1}{l@{}}{W} \\
& \multicolumn{1}{l}{Courses} & \multicolumn{1}{l}{Courses} & \multicolumn{1}{l}{Courses} & \multicolumn{1}{l}{Courses} & \multicolumn{1}{l}{Courses} & \multicolumn{1}{l@{}}{Courses} \\
\midrule
First-year & 18 & 36 & \small Variable & \small Variable & 18 & 36 \\
Second-year & 18 & 36 & \small Variable & \small Variable & 24 & 48 \\
Third-year & 18 & 36 & \small Variable & \small Variable & 36 & 72 \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}
表が右余白にはみ出さないように、列幅を再計算して縮小しました\tabcolsep
。
答え3
パッケージを使用したソリューションでmakecell
は、セルをさらにカスタマイズできます。デモとして、次のコードで、数字を太字で印刷し、セルの上下に垂直方向のスペースを追加するように要求します。さらに、2 列のグループ (2 番目から数えて) はすべて、最初のグループと同じ幅になります。
\documentclass{article}
\centering\setlength{\tabcolsep}{4.4pt}
\usepackage{booktabs, threeparttable}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\usepackage{makecell}
\renewcommand{\cellgape}{\bfseries\Gape[2pt]}
\renewcommand{\theadalign}{lc}
\renewcommand{\theadfont}{\normalsize}
\newlength{\headwd}
\settowidth{\headwd}{\bfseries Commerce Faculty}
\begin{document}
\begin{table}[htbp]
\begin{threeparttable}
\caption{Number of Credits per Course by Year}
\label{table:nc}
\begin{tabular}{@{}l*{6}{p{\dimexpr 0.5\headwd-\tabcolsep \relax}}@{}}
\addlinespace
\toprule
& \multicolumn{2}{c}{\bfseries Commerce Faculty} &
\multicolumn{2}{c}{\bfseries EBE Faculty} &
\multicolumn{2}{c}{\bfseries Science Faculty} \\
\cmidrule(lr){2-3}\cmidrule(lr){4-5} \cmidrule(lr){6-7}
&\thead{ F, S, H \\ Courses} & \thead{W\\ Courses }&\thead{ F, S, H \\ Courses } & \thead{W\\ Courses} &\thead{ F, S, H\\ Courses} & \thead{W\\
Courses} \\
\cmidrule(lr){2-3}\cmidrule(lr){4-5} \cmidrule(lr){6-7}
First-year & \makecell{18} & \makecell{36} & Variable & Variable & \makecell{18} & \makecell{36} \\
Second-year & \makecell{18} & \makecell{36} & Variable & Variable & \makecell{24} & \makecell{48} \\
Third-year & \makecell{18} & \makecell{36} & Variable & Variable & \makecell{36} & \makecell{72} \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}
答え4
なぜかは分かりませんが、tap
アイデアおそらく、Plain TeX と LaTeX を混在させるのは OK からは程遠いですが、それでも試してみる価値はあります。
\documentclass{scrartcl}
\input{tap}
\usepackage{kantlipsum}
\begin{document}
\kant[1]
\medskip
\thistable{\desiredwidth\hsize}
%\moveright\parindent
\begintable
\begintableformat & \left \endtableformat
\B" ! @6 \= \E!
\B": ! @2 \textbf{Commerce Faculty} | @2 \textbf{EBE Faculty} | @2 \textbf{Science Faculty} \E!
\B" ! @6 \- \E!
\B"^ ! F, S, H | W | F, S, H | W | F, S, H | W \E!
\B"_ ! Courses | Courses | Courses | Courses | Courses | Courses \E!
\B! @7 \= \E!
\B!^ First-year | \center{18} | \center{36} | Variable | Variable | \center{18} | \center{36} \E!
\B!+ Second-year | \center{18} | \center{36} | Variable | Variable | \center{24} | \center{48} \E!
\B!_ Third-year | \center{18} | \center{36} | Variable | Variable | \center{36} | \center{72} \E!
\=
\endtable
\medskip
\kant[4]
\end{document}