のルールを使用したテーブルがあります。ただし、垂直方向のスペースに制約があるため、を と一緒にbooktabs
使用したくありません。水平方向のスペースにも制約があるため、グループの列は最小限に抑える必要があります。subcaption
subtable
最初のアプローチとして、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
質問
「グループ」列にと を表示
booktabs
せずにを表示する解決策はありますか?\toprule
\bottomrule
\ctoprule
(たとえば、 を使用するの独自のコマンドを記述することしか考えられません\cmidrule
が、 のルール\toprule
(たとえば、厚みやスペース) はすべて適用されます。)パッケージに忠実に従いながらグループ化を実現するためのより良い解決策はありますか
booktabs
?
答え1
もっと厚いものを使用しないのはなぜですかcmidrule
? 私が見る限り、間隔はほぼ同じで、調整可能です。また、右端のサイドベアリングを削除し、 の左側をトリミングすることをお勧めしますcmidrule
。グループ間に小さなスペースを追加することも検討してください0.75ex
。それで十分です。
しかし、ブックタブマニュアルセクション5、ブックタブ一緒にロングテーブルあらゆる種類のルールのトリミングを実装します。メンテナーは、ロングテーブル表形式の場合は、トリミング可能でtoprule
が必要bottomrule
です。以下の例でこれを実装しました。トリミング係数は、最初の列の幅を固定するか、.aux ファイルを読み込むか最初の列を測定するコードを実装するスキルがない限り、少し推測する必要があります。最後のバージョンでは、配列新しいW
- 列とw
- 列が追加され、配置と幅を指定できます。私は 4mm の - 列を使用しましたw
。トリミング係数は次のようになります4mm+2\tabcolseps+0.75ex
(標準トリミング係数についてはマニュアルの 4 ページを参照してください)。
ロングテーブル
昨日からコードを改善しました:
- 2 つのエラー メッセージを削除するために
\ldelim
、の 2 番目のパラメータを変更しました。まだメッセージが残っていますが、今のところはそのままにしておきます。{*}
Overfull hbox with 10.[...]pt
Underfull vbox...
\tabcolsep
を0.5em
固定ポイント数ではなく に変更しました。- 左の列を に増やし、その結果、と
5 mm
の補正係数を増やしました。これにより、表に少し余裕が生まれます。toprule
bottomrule
- 正しいトリミング係数
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
\bottomrule
blkarray
booktabs
\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}