ムウェ

ムウェ

のルールを使用したテーブルがあります。ただし、垂直方向のスペースに制約があるため、を と一緒にbooktabs使用したくありません。水平方向のスペースにも制約があるため、グループの列は最小限に抑える必要があります。subcaptionsubtable

最初のアプローチとして、bigdelimグループ化には括弧を使用します。

ムウェ

考えられる MWE は次のようになります。

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

表の行をグループ化する

しかし、私は「グループ」列が水平線で囲まれるのは望んでいません。それは美的ではないと思います。私はすでに長さを短くするためcmidruleにコマンドを使用しました。しかし、(当然のことながら)およびbooktabsにはそのようなものはありません。\toprule\bottomrule

質問

  1. 「グループ」列にと を表示booktabsせずにを表示する解決策はありますか?\toprule\bottomrule\ctoprule(たとえば、 を使用するの独自のコマンドを記述することしか考えられません\cmidruleが、 のルール\toprule(たとえば、厚みやスペース) はすべて適用されます。)

  2. パッケージに忠実に従いながらグループ化を実現するためのより良い解決策はありますかbooktabs?

答え1

もっと厚いものを使用しないのはなぜですかcmidrule? 私が見る限り、間隔はほぼ同じで、調整可能です。また、右端のサイドベアリングを削除し、 の左側をトリミングすることをお勧めしますcmidrule。グループ間に小さなスペースを追加することも検討してください0.75ex。それで十分です。

しかし、ブックタブマニュアルセクション5、ブックタブ一緒にロングテーブルあらゆる種類のルールのトリミングを実装します。メンテナーは、ロングテーブル表形式の場合は、トリミング可能でtopruleが必要bottomruleです。以下の例でこれを実装しました。トリミング係数は、最初の列の幅を固定するか、.aux ファイルを読み込むか最初の列を測定するコードを実装するスキルがない限り、少し推測する必要があります。最後のバージョンでは、配列新しいW- 列とw- 列が追加され、配置と幅を指定できます。私は 4mm の - 列を使用しましたw。トリミング係数は次のようになります4mm+2\tabcolseps+0.75ex(標準トリミング係数についてはマニュアルの 4 ページを参照してください)。

ロングテーブル

昨日からコードを改善しました:

  1. 2 つのエラー メッセージを削除するために\ldelim、の 2 番目のパラメータを変更しました。まだメッセージが残っていますが、今のところはそのままにしておきます。{*}Overfull hbox with 10.[...]ptUnderfull vbox...
  2. \tabcolsep0.5em固定ポイント数ではなく に変更しました。
  3. 左の列を に増やし、その結果、と5 mmの補正係数を増やしました。これにより、表に少し余裕が生まれます。toprulebottomrule
  4. 正しいトリミング係数cmidrule \tabcolsepは ではなく である必要があります0.75ex。必要に応じて、1pt を減算して、行がテキストと完全に揃わないようにすることもできます。

ここに画像の説明を入力してください

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

表形式および修正された cmidrule

ここに画像の説明を入力してください

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

答え2

ここでは 2 つのソリューションを紹介します。1 つはとを模倣したカスタマイズ\cmidruleされたに基づき、もう 1 つは に基づき、より単純な構文と 3 列のみを使用します。残念ながら、後者のパッケージは と互換性がないため、 を調整して、より太い罫線と上部と下部の適切な間隔を取得する必要がありました。\toprule\bottomruleblkarraybooktabs\BAhhline

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

ここに画像の説明を入力してください

関連情報