Zentrieren einzelner Zellen in Booktabs

Zentrieren einzelner Zellen in Booktabs

Ich möchte nur die Zahlen in der folgenden Tabelle zentrieren. Ich habe einige Variationen des Zentrierbefehls ausprobiert, aber sie wirken sich auf die gesamte Tabelle aus (ich bin relativ neu bei Latex).

Bildbeschreibung hier eingeben

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}

Antwort1

Sie könnten anstelle einer Umgebung eine tabularxUmgebung verwenden, die auf eine Breite von voreingestellt ist . Auf diese Weise könnten Sie auf die mühsamen (und fehleranfälligen) manuellen Berechnungen der erforderlichen Breiten der Spalten 2 bis 7 verzichten. Im folgenden Beispiel ist der Spaltentyp für rechts ausgerichtetes Material, während der Spaltentyp für zentriertes Material ist. Beide Spaltentypen basieren auf dem Spaltentyp des Pakets. Der Hauptspaltentyp ist, da die Spalten 2 bis 7 in den meisten Zeilen zentriert sein sollten. Der Spaltentyp wird für die Spaltenüberschriften „F, S, H Courses“ und „W Courses“ verwendet. Beachten Sie, dass Zeilenumbrüche in diesen Überschriften nicht explizit angegeben werden müssen.\textwidthtabularLCXtabularxCL

Im Bild unten \bottomrulewird die dünne horizontale Linie unter durch erstellt \hrule; sie wurde dort nur platziert, um anzuzeigen, dass die Breite der Tabelle gleich ist \textwidth.

Bildbeschreibung hier eingeben

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

Antwort2

Deklarieren Sie einen neuen Spaltentyp für die zentrierten Spalten (bei Bedarf können Sie die Definition für eine bestimmte Zelle jederzeit mit überschreiben \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}

Bildbeschreibung hier eingeben

Um zu verhindern, dass die Tabelle in den rechten Rand hineinragt, habe ich die Spaltenbreite neu berechnet und verkleinert \tabcolsep.

Wenn eine anspruchsvollere Ausrichtung der numerischen Werte erforderlich ist, können Sie diedcolumnodersiunitxPakete.

Antwort3

Eine Lösung mit dem makecellPaket, mit der Sie Ihre Zellen noch weiter anpassen können. Zur Demonstration fordere ich im folgenden Code an, dass Zahlen fett gedruckt werden und oberhalb und unterhalb der Zelle etwas vertikaler Abstand hinzugefügt wird. Außerdem hat jede Gruppe von zwei Spalten, von der zweiten an gezählt, dieselbe Breite – die der ersten Gruppe:

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

Bildbeschreibung hier eingeben

Antwort4

Warum? Ich weiß es nicht, aber mir gefiel dietapIdee. Eine Mischung aus Plain TeX und LaTeX ist wahrscheinlich alles andere als OK, aber immerhin etwas, womit man spielen kann.

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

Bildbeschreibung hier eingeben

verwandte Informationen