
Antwort1
Calstable- und Tabularx-Tabelle
Hier sind beide Tabellen als calstable
s 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
calstable
unterstü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
, \rb
die 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 \baselineskip
s, 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}
:
\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.
\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}