微量元素

微量元素

我有一個使用來自 的規則的表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命令 frombooktabs來減少它們的長度。然而,(可以理解)不存在這樣的東西\toprule\bottomrule

問題

  1. 他們是否有解決方案,可以在“組”列上booktabs不顯示\toprule並顯示?\bottomrule(我只能想到編寫自己的命令,例如\ctoprule,它正在使用,\cmidrule但 for 的所有規則\toprule,例如厚度和空格,都適用。)

  2. 是否有更好的解決方案來透過堅持包來實現分組booktabs

答案1

為什麼不直接使用更厚的呢cmidrule?據我所知,間距大致相同,並且可以調整。我還建議拆下最右側的軸承,並修剪 s 的左側cmidrule。您也可以考慮在組之間添加一個小空間,0.75ex就足夠了。

然而,根據書本標籤手冊第 5 節,書本標籤和...一起長桌實現所有類型規則的修剪。維護者建議使用長桌對於表格,如果您需要可修剪toprulebottomrule.我已經在下面的範例中實現了這一點。修剪因子是一點猜測,除非您設定第一列的固定寬度,或者有能力實現程式碼來讀取 .aux 檔案或測量第一列。在上一個版本中,大批有了新的W- 和w- 列,您可以在其中指定對齊方式和寬度。我用的是 4mm 的w柱子。調整係數應為4mm+2\tabcolseps+0.75ex(標準調整係數請參考手冊第 4 頁):

長桌

從昨天開始我改進了程式碼:

  1. 我更改了 to 的第二個參數\ldelim{*}消除兩個Overfull hbox with 10.[...]pt錯誤訊息。仍然有Underfull vbox...留言,但我暫時留下。
  2. 我已將 改為 ,\tabcolsep0.5em不是固定數量的點。
  3. 我將左欄增加到 ,從而增加了和 的5 mm修正係數。這會在表格中留下更多的空氣。toprulebottomrule
  4. 正確的微調係數為cmidrule ETC。應該是\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

這裡有兩種解決方案:一種基於模仿和\cmidrule的自訂 s ,另一種基於 s ,具有更簡單的 sy,tax,並且只有 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}

在此輸入影像描述

相關內容