Wie erstelle ich eine Tabelle mit dem Booktabs-Paket?

Wie erstelle ich eine Tabelle mit dem Booktabs-Paket?

Ich möchte die folgenden Tabellen mit dem Booktabs-Paket erstellen, bin mir aber nicht ganz sicher, wie das geht

Bildbeschreibung hier eingeben

Und

Bildbeschreibung hier eingeben

Jede Hilfe wird sehr geschätzt!

Antwort1

Calstable- und Tabularx-Tabelle

Hier sind beide Tabellen als calstables gesetzt,dh. mit dem PaketKalorien. Ich habe auch die erste Tabelle gesetzt mittabellarischx,hhline,AnordnungUndmehrreihig. Ich benutztetabellarischx, weil dieses Paket die Spaltenbreite unter Berücksichtigung aller notwendigen Variablen berechnen kann.

kalbstabil

calstableunterstützt keine Doppelregeln (doppelte Ränder), daher habe ich solche Regeln durch die Verwendung schmaler Zeilen und Spalten vorgetäuscht.

Da ich beide Tabellen im selben Dokument gesetzt habe, habe ich die Befehle zum Einrichten der Tabelle und die Definition der Tastenkombinationen von der Tabellenpräambel in die Dokumentpräambel verschoben. Ich habe alle Regeln (Zeilen) optimiert und sichergestellt, dass keine einzelnen Regeln doppelte doppelte Regeln schneiden. Daher werden Sie die Tastenkombination sehen \lb, \rbdie an mehreren Stellen verwendet wird, um Regeln für einzelne Zellen auszuschalten, zu entfernen und einzuschalten. Wie die doppelten vertikalen Linien mit den doppelten horizontalen Linien verbunden werden, hängt von den lokalen typografischen Traditionen ab, daher kann ich nicht garantieren, dass meine Wahl in Ihrer Gerichtsbarkeit richtig ist.

Ich habe einige Zelleninhalte ausgefüllt, um die Tabelle mit der richtigen Zeilenhöhe zu setzen, und als Konsequenz habe ich die Zeilenhöhen in der ersten Tabelle aufzwei \baselineskips, verglichen mit dem vorherigen Beispiel. Zusätzlich habe ich den Zellinhalt in allen Zellen vertikal zentriert, indem ich einen dokumentierten Hook verwendet habe, siehe den Befehl \def\cals@AtBeginCell{\vfil}:

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{cals}

% Set up the carlstable
\makeatletter
%% All rules of same weight
\def\cals@framers@width{0.3pt}   % Outside frame rules, reduce if the rule is too heavy
\def\cals@framecs@width{0.3pt}
\def\cals@bodyrs@width{0.3pt}
\def\cals@cs@width{0.3pt}             % Inside rules, reduce if the rule is too heavy
\def\cals@rs@width{0.3pt}
\def\cals@AtBeginCell{\vfil}            % All cell contents vertically centred

% Shorthands for spanning cells, table rules and the spece between columns and rows (padding)
\let\nc=\nullcell
\let\sc=\spancontent

\def\rb{\ifx\cals@borderR\relax     % Right Border (rules) switch (off-on)
    \def\cals@borderR{0.0pt}
\else \let\cals@borderR\relax\fi}

\def\lb{\ifx\cals@borderL\relax     % Left Border switch (off-on)
    \def\cals@borderL{0.0pt}
\else \let\cals@borderL\relax\fi}

\def\bb{\ifx\cals@borderB\relax     % Bottom Border switch (off-on)
    \def\cals@borderB{0.0pt}
\else \let\cals@borderB\relax\fi}

\def\tp{\ifdim\cals@paddingT=0.0pt\relax    % Top padding switch (off-on)
\cals@setpadding{Ag}
\else \setlength{\cals@paddingT}{0pt}\fi}

\def\bp{\ifdim\cals@paddingB=0.0pt\relax    % Bottom padding switch (off-on)
\cals@setpadding{Ag}
\else \setlength{\cals@paddingB}{0pt}\fi}
\makeatother

\begin{document}

\begin{calstable}[c]
% Defining 11 columns, 2 are for double vertical rules (col2 and col7)
\colwidths{{\dimexpr(\columnwidth/21*3)}
                   {2pt}
                   {\dimexpr(\columnwidth/21*2)}
                   {\dimexpr(\columnwidth/21*1)}
                   {\dimexpr(\columnwidth/21*2)}
                   {\dimexpr(\columnwidth/21*4)}
                   {2pt}
                   {\dimexpr(\columnwidth/21*2)}
                   {\dimexpr(\columnwidth/21*1)}
                   {\dimexpr(\columnwidth/21*2)}
                   {\dimexpr(\columnwidth/21*4)}
            }

\makeatletter
% R1H1  % This first row is just to ‘fake’ double horizontal lines
\thead{%
\brow
    \rb\tp\cell{}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}\rb
    \cell{}\tp
    \ht\cals@current@row=2pt
\erow
%
%R2H2 % Header
\brow
    \alignC\cell{C}
    \bb\cell{}\bb
    \nc{ltb}
    \nc{tb}
    \nc{tb}
    \nc{rtb}\sc{}
    \bb\cell{}\bb
    \nc{ltb}
    \nc{tb}
    \nc{tb}
    \nc{rtb}\sc{}
\erow
}
\tfoot{\lastrule\strut}
%R3B1
\brow
    \cell{C}
    \bb\cell{}\bb
    \nc{ltb}
    \nc{rtb}\sc{}
    \cell{}
    \cell{}
    \bb\cell{}\bb
    \nc{ltb}
    \nc{rtb}\sc{}
    \cell{}
    \cell{}
\erow
%R4B2
\brow
    \nc{lrt}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \ht\cals@current@row=2\normalbaselineskip
\erow
%R5B3
\brow
    \nc{lrb}\alignC\sc{C}
    \bb\cell{}\bb
    \cell{C}
    \cell{}
    \cell{}
    \cell{}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}
    \cell{}
\erow
%R6B4
\brow
    \nc{lrt}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \ht\cals@current@row=2\normalbaselineskip
\erow
%R7B5
\brow
    \nc{lrb}\alignC\sc{C}
    \bb\cell{}\bb
    \cell{C}
    \cell{}
    \cell{}
    \cell{}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}
    \cell{}
\erow
%R8B6
\brow
    \nc{lrt}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \ht\cals@current@row=2\normalbaselineskip
\erow
%R9B7
\brow
    \nc{lrb}\alignC\sc{C}
    \bb\cell{}\bb
    \cell{C}
    \cell{}
    \cell{}
    \cell{}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}
    \cell{}
\erow
%R10B9  % This last row is just to ‘fake’ double horizontal lines
\brow
    \rb\bp\cell{}
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \cell{}
    \cell{}\rb
    \cell{}\bp
    \ht\cals@current@row=2pt
\erow
\makeatletter
\end{calstable}\par

\vspace{1cm}

\begin{calstable}[l]
% Defining 5 columns, 1 are for double vertical rules (col2)
\colwidths{{\dimexpr(\columnwidth/15*3)}
                   {2pt}
                   {\dimexpr(\columnwidth/15*2)}
                   {\dimexpr(\columnwidth/15*1)}
                   {\dimexpr(\columnwidth/15*3)}
            }

\makeatletter
% R1H1  % This first row is just to ‘fake’ double horizontal lines
\thead{%
\brow
    \rb\tp\cell{}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}\rb\tp
    \ht\cals@current@row=2pt
\erow
%
%R2H2 % Header
\brow
    \alignC\cell{C}
    \bb\cell{}\bb
    \cell{}
    \cell{}
    \cell{}
\erow
}
\tfoot{\lastrule\strut}
%R4B2
\brow
    \bb\cell{C}
    \cell{}
    \cell{}
    \cell{}
    \cell{}
\erow
%R5B3
\brow
    \cell{C}
    \cell{}
    \cell{}
    \cell{}
    \cell{}
\erow
%R6B4
\brow
    \cell{C}
    \cell{}
    \cell{}
    \cell{}
    \cell{}
\erow
%R7B5
\brow
    \cell{C}
    \cell{}
    \cell{}
    \cell{}
    \cell{}
\erow
%R8B6
\brow
    \bb\cell{C}\bb
    \cell{}
    \bb\cell{}
    \cell{}
    \cell{}\bb
\erow
%R10B9  % This last row is just to ‘fake’ double horizontal lines
\brow
    \bb\rb\bp\cell{}
    \cell{}
    \cell{}
    \cell{}\rb
    \cell{}\bb
    \ht\cals@current@row=2pt
\erow
\makeatletter
\end{calstable}\par
\end{document}

tabularx und Freunde

Hier ist Ihr erster Tabellensatz mittabellarischxund Freunde. Wie Sie sehen werden, sind die Einrichtung und Definition von Spalten und Spaltenbreiten ziemlich kompliziert. Um korrekte Verbindungsregeln zu haben, habe ich diehhlinePaket.

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{array, tabularx, multirow, hhline}

% Two shorthands to secured equal rowheigth 
\newcommand*{\hz}{\vphantom{\parbox[c]{1cm}{\rule{1cm}{1.5\normalbaselineskip}}}}
\newcommand*{\vz}{\vphantom{\parbox[c]{1cm}{\rule{1cm}{2.5\normalbaselineskip}}}}

% Define four new X column types based on width. tabularx takes care of the maths involved
\newcolumntype{A}{>{\centering\arraybackslash\hsize=0.4\hsize\linewidth=\hsize}X}
\newcolumntype{B}{>{\centering\arraybackslash\hsize=0.3\hsize\linewidth=\hsize}X}
\newcolumntype{C}{>{\centering\arraybackslash\hsize=0.2\hsize\linewidth=\hsize}X}
\newcolumntype{D}{>{\centering\arraybackslash\hsize=0.1\hsize\linewidth=\hsize}X}

% Uncomment to see margins etc.
%\usepackage{showframe}
%\renewcommand*\ShowFrameColor{\color{red}}
%\renewcommand*\ShowFrameLinethickness{.15pt}

\setlength{\tabcolsep}{0.5em}
\setlength{\extrarowheight}{4pt} % Push first line of text away from rules above.

\begin{document}

\centering
\begin{tabularx}{\linewidth}{|B||C|D|C|A||C|D|C|A|}

\hhline{|*{9}{=}|}
\hz B   &    \multicolumn{4}{c||}{}   &  \multicolumn{4}{c|}{}\\
\hhline{|-||----||----|}
\hz B   &    \multicolumn{2}{c|}{}   &    &      &   \multicolumn{2}{c|}{} &   & \\
\hhline{|-||--|-|-||--|-|-|}
\vz\multirow[c]{3}{=}{\centering B}     &       &      &    &      &    &   &   & \\
\hhline{|~||--|-|-||--|-|-|}
\hz     &    C  &      &    &      &    &   &   & \\
\hhline{|-||--|-|-||--|-|-|}
\vz\multirow[c]{3}{=}{B}    &       &     &    &      &    &   &   & \\
\hhline{|~||--|-|-||--|-|-|}
\hz     &    C  &      &   &      &    &   &   & \\
\hhline{|-||--|-|-||--|-|-|}
\vz \hz\multirow[c]{3}{=}{B}    &       &      &    &      &    &   &   & \\
\hhline{|~||--|-|-||--|-|-|}
\hz     &    C  &      &    &      &    &   &   &  \\
\hhline{|*{9}{=}|}

\end{tabularx}

\end{document}

verwandte Informationen