MWE

MWE

Ich habe eine Tabelle, die Regeln aus verwendet booktabs. Ich habe jedoch vertikale Platzbeschränkungen und möchte sie nicht subcaptionmit deren verwenden subtable. Ich habe auch horizontale Platzbeschränkungen, daher sollte die Spalte für die Gruppe minimal sein.

Als ersten Ansatz verwende ich bigdelimund Klammern zur Gruppierung.

MWE

Ein mögliches MWE sieht wie folgt aus:

\documentclass{article}

\usepackage{booktabs, bigdelim, rotating}

\begin{document}
\begin{table}[htbp]
\begin{tabular}{llcc}
\toprule
& header1 & header 2 & header 3 \\
\cmidrule{2-4}
\ldelim\{{4}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group1}}] & 1 & a & g \\
& 2 & b & h \\
& 3 & c & i \\
& 3 & c & i \\
\ldelim\{{6}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group2}}] & 4 & d & j \\
& 5 & e & k \\
& 6 & f & l \\
& 7 & g & m \\
& 8 & h & n \\
& 9 & i & o \\
\bottomrule
\end{tabular}
\end{table}

\end{document}

Gruppieren von Zeilen einer Tabelle

Ich möchte jedoch nicht, dass die Spalte „Gruppe“ von den horizontalen Linien erfasst wird, das finde ich nicht ästhetisch. Ich habe den cmidruleBefehl von booktabsbereits verwendet, um ihre Länge zu reduzieren. Es gibt jedoch (verständlicherweise) kein solches für \topruleund\bottomrule

Frage

  1. Gibt es eine Lösung, um ein zu haben, booktabsohne dass \toprulees \bottomrulein der Spalte „Gruppe“ angezeigt wird?(Mir fällt nur ein, für zB einen eigenen Befehl zu schreiben, \ctopruleder verwendet, für den \cmidruleaber alle Regeln von \toprulezB Dicke und Leerzeichen gelten.)

  2. Gibt es eine bessere Lösung, diese Gruppierung zu erreichen, als sich an das booktabsPaket zu halten?

Antwort1

Warum nicht einfach ein dickeres verwenden cmidrule? Soweit ich sehen kann, ist der Abstand ungefähr gleich und kann angepasst werden. Ich schlage auch vor, das Lager ganz rechts zu entfernen und die linke Seite des cmidruleS zu kürzen. Sie können auch erwägen, einen kleinen Abstand zwischen den Gruppen hinzuzufügen, 0.75exdas reicht.

Doch laut derBuchtabsHandbuch Abschnitt 5,Buchtabszusammen mitlanger Tischimplementiert das Trimmen aller Arten von Regeln. Der Betreuer schlägt vor,langer Tischfür Tabellen, wenn Sie trimmbare topruleund benötigen bottomrule. Ich habe dies in den folgenden Beispielen implementiert. Der Trimmfaktor ist ein wenig Rätselraten, es sei denn, Sie legen eine feste Breite der ersten Spalte fest oder verfügen über die Fähigkeit, Code zum Lesen der .aux-Datei oder zum Messen der ersten Spalte zu implementieren. In der letzten VersionAnordnunghabe neue W- und w-Spalten bekommen, in denen man Ausrichtung und Breite festlegen kann. Ich habe eine 4mm w-Spalte verwendet. Der Trimmfaktor sollte dann lauten 4mm+2\tabcolseps+0.75ex(Standard-Trimmfaktor siehe Handbuch S. 4):

langer Tisch

Ich habe den Code seit gestern verbessert:

  1. Ich habe den zweiten Parameter geändert, \ldelimum zwei Fehlermeldungen {*}zu entfernen . Es bleibt immer noch eine Meldung, aber ich lasse sie vorerst stehen.Overfull hbox with 10.[...]ptUnderfull vbox...
  2. \tabcolsepIch habe das 0.5emin anstelle einer festen Anzahl von Punkten geändert .
  3. Ich habe die linke Spalte auf vergrößert 5 mmund damit auch den Korrekturfaktor für die topruleund bottomrule. Das bringt etwas mehr Luft in die Tabelle.
  4. Der richtige Trimmfaktor fürcmidrule usw. sollte sein \tabcolsep, nicht 0.75ex. Wenn Sie möchten, können Sie 1pt abziehen, sodass die Linie nicht ganz bündig mit dem Text abschließt.

Bildbeschreibung hier eingeben

\documentclass{article}

\usepackage{booktabs, bigdelim, rotating, longtable, array}
\setlength{\tabcolsep}{0.5em}   % As recommended by James Felici ‘The Complete Manual of Typography’
\begin{document}

%\begin{table}[htbp]
\begin{longtable}[l]{w{l}{5mm}lcc@{}}
\toprule(l{\dimexpr(5mm+3\tabcolsep)})
& header1 & header 2 & header 3
\endfirsthead
\cmidrule(l{\tabcolsep}){2-4}
\ldelim\{{4}{*}[\parbox{4mm}{\rotatebox[origin=c]{90}{group1}}] & 1 & a & g \\
& 2 & b & h \\
& 3 & c & i \\
& 3 & c & i \\\addlinespace[0.75ex]
\ldelim\{{6}{*}[\parbox{4mm}{\rotatebox[origin=c]{90}{group2}}] & 4 & d & j \\
& 5 & e & k \\
& 6 & f & l \\
& 7 & g & m \\
& 8 & h & n \\
& 9 & i & o \\
\bottomrule(l{\dimexpr(5mm+3\tabcolsep)})
\end{longtable}
%\end{table}

\end{document}

tabellarische und modifizierte cmidrule

Bildbeschreibung hier eingeben

\documentclass{article}

\usepackage{booktabs, bigdelim, rotating}

\begin{document}
\begin{table}[htbp]
\begin{tabular}{llcc@{}}
\cmidrule[\heavyrulewidth](l){2-4}
& header1 & header 2 & header 3 \\
\cmidrule(l){2-4}
\ldelim\{{4}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group1}}] & 1 & a & g \\
& 2 & b & h \\
& 3 & c & i \\
& 3 & c & i \\\addlinespace[0.75ex]
\ldelim\{{6}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group2}}] & 4 & d & j \\
& 5 & e & k \\
& 6 & f & l \\
& 7 & g & m \\
& 8 & h & n \\
& 9 & i & o \\
\cmidrule[\heavyrulewidth](l){2-4}
\end{tabular}
\end{table}

\end{document}

Antwort2

Hier sind zwei Lösungen: eine basiert auf benutzerdefinierten \cmidrules, die \topruleund nachahmen \bottomrule, und eine andere basiert auf blkarray, mit einem einfacheren System und nur 3 Spalten. Leider ist das letztere Paket nicht mit kompatibel booktabs, also musste ich mit herumspielen, \BAhhlineum dickere Linien und den richtigen Abstand oben und unten zu erhalten.

\documentclass{article}

\usepackage{booktabs, bigdelim, rotating}%{
\newcommand{\mytoprule}{\noalign{\vskip -\aboverulesep}\cmidrule[\heavyrulewidth]{2-4}}
\newcommand{\mybottomrule}{\cmidrule[\heavyrulewidth]{2-4}\noalign{\vskip -\belowrulesep}}
\usepackage{blkarray, hhline}

\begin{document}

\begin{table}[htbp]
\centering
\begin{tabular}{llcc}
\mytoprule
& header1 & header 2 & header 3 \\
\cmidrule{2-4}
\ldelim\{{4}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group1}}] & 1 & a & g \\
& 2 & b & h \\
& 3 & c & i \\
& 3 & c & i \\
\addlinespace[0.5ex]
\ldelim\{{6}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group2}}] & 4 & d & j \\
& 5 & e & k \\
& 6 & f & l \\
& 7 & g & m \\
& 8 & h & n \\
& 9 & i & o \\
\mybottomrule
\end{tabular}
\end{table}

\begin{table}[htbp]
\centering
\doublerulesep =0.05pt
\begin{blockarray}{lcc}
\hhline{===}
\BAnoalign{\vskip -5.3ex}
 header1 & header 2 & header 3 \\
 \BAhline
\begin{block}{\Left{\rotatebox[origin=c]{90}{group1}\,}{\{\,}lcc}
 1 & a & g \\
 2 & b & h \\
 3 & c & i \\
 3 & c & i \\
\end{block}
\begin{block}{\Left{\rotatebox[origin=c]{90}{group2}\,}{\{\,}lcc}%
 4 & d & j \\
 5 & e & k \\
 6 & f & l \\
 7 & g & m \\
 8 & h & n \\
 9 & i & o \\%\
\end{block}
\BAnoalign{\vskip -5.3ex}
\hhline{===}
\end{blockarray}
\end{table}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen