![\midrule 分割表格中的垂直线](https://linux22.com/image/299881/%5Cmidrule%20%E5%88%86%E5%89%B2%E8%A1%A8%E6%A0%BC%E4%B8%AD%E7%9A%84%E5%9E%82%E7%9B%B4%E7%BA%BF.png)
我意识到该booktabs
软件包不希望我在表格中使用垂直线。但是,我喜欢在表格中使用垂直线。因此,我希望有一个解决方法可以解决这个booktabs
显然不被认为是问题的问题。
这是我的表格:
是否可以将所有垂直线连接起来?
以下是代码:
\begin{table}[h]
\begin{centering}
\scalebox{.8}
\small
{\begin{tabular}{| c | l | c c c |}
\hline
{\bf HD Level} & & & & \\
\midrule[2pt]
\multirow{2}*{1} & {\it Rep-tile}: & $\{1,2\}$ & $\{1,3\}$ & $\{2,3\}$ \\
\cmidrule{2-5}
& {\it Encoding}:\ \ \ \ & 1 & 2 & 3 \\
\midrule[2pt]
\multirow{2}*{2} & {\it Rep-tile}: & $\{2\}$ & $\{3\}$ & \\
\cmidrule{2-5}
& {\it Encoding}: & 1 & 2 & \\
\hline
\end{tabular}}
\caption{\small\bf Bla bla}
\label{tab:SMuTexEncoding}
\end{centering}
\end{table}
非常感谢。
答案1
您可以 使用包及其命令来获得粗\hline
s 。您可以使用包替换水平规则周围添加的垂直间距(负责非连接垂直规则);它允许您定义给定列的单元格上方和下方的最小垂直间距,并在其说明符前加上字母。makecell
\Xhline{width}
\Xcline{col1-col2}{width}
booktabs
cellspace
S
我还借此机会set
根据包文档中的示例定义了一个命令mathtools
,该命令可以产生更好的水平间距和可变大小的括号
\documentclass{article}
\usepackage{makecell}
\usepackage{multirow}
\usepackage{hhline}
\usepackage{cellspace}
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}
\usepackage{mathtools}
\DeclarePairedDelimiterX\set[1]\{\}{\nonscript\,#1\nonscript\,}
\begin{document}
\begin{table}[!htb]
\centering
\small
\begin{tabular}{| Sc | >{\itshape}l | Sc c c |}
\hline
{\bfseries HD Level} & & & & \\
\Xhline{2pt}
\multirow{2}{*}{1} & Rep-tile: & $\set{1,2}$ & $\set{1,3}$ & $\set{2,3}$ \\
\cline{2-5}
& Encoding:\ \ \ \ & 1 & 2 & 3 \\
\Xhline{2pt}
\multirow{2}{*}{2} & Rep-tile: & $\set{2}$ & $\set{3}$ & \\
\cline{2-5}
& Encoding: & 1 & 2 & \\
\hline
\end{tabular}
\caption{\small\bf Bla bla}
\label{tab:SMuTexEncoding}
\end{table}
\end{document}
如果您想要有彩色规则,那就更复杂了:\arrayrulecolor
命令(来自colortbl
包)不起作用。解决方法是使用hhline
包,设置\arrayrulewidth
为 0pt 并为双规则的规则间空间着色。演示:
\begin{table}[!htb]
\centering
\small\arrayrulecolor{red}
\begin{tabular}{| Sc | >{\itshape}l | Sc c c |}
\hline
{\bfseries HD Level} & & & & \\
\Xhline{2pt}
\multirow{2}{*}{1} & Rep-tile: & $\set{1,2}$ & $\set{1,3}$ & $\set{2,3}$ \\
\cline{2-5}
& Encoding:\ \ \ \ & 1 & 2 & 3 \\
\Xhline{2pt}
\multirow{2}{*}{2} & Rep-tile: & $\set{2}$ & $\set{3}$ & \\
\cline{2-5}
& Encoding: & 1 & 2 & \\
\hhline{>{\arrayrulewidth = 0pt\doublerulesep = 2pt \doublerulesepcolor{red}}=====}
\end{tabular}
\caption{\small\bf Bla bla}
\label{tab:SMuTexEncoding}
\end{table}
答案2
我会绝不按照我在第一张表中所做的操作,但这是你的选择,不是我的。我只是提供了一个更好的选择。但是,请:
- 请勿使用
\it
和\bf
:我使用 \textit 或 \it、\bfseries 或 \bf 等有关系吗 - 不要手动修改表格的大小或标题的样式,这不符合语义。如果您后来决定标题不应加粗,但您已经添加了 50 个标题,该怎么办?您要手动删除它们吗?好吧,您必须这样做。或者您使用全局修改样式的软件包。(这两个东西都可以在这个网站上找到,但是,只需查看软件包和
\bfseries
的文档即可。)caption
float
- 不要
[h]
单独指定浮动位置,否则可能会发生不好的事情。 centering
不是一个环境,它是一个命令:\centering
。- 您的
\scalebox
没有任何效果,因为您缩放的是宏\small
,它不输出任何内容。请使用\scalebox
或\small
(或者不用)。
\documentclass{article}
\usepackage{array}
\newcolumntype{C}{>{\rule[-1.5ex]{0pt}{4.5ex}}c}
\makeatletter
\def\Hline{% a thicker \hline
\noalign{\ifnum0=`}\fi\hrule \@height 1pt \futurelet
\reserved@a\@xhline}
\makeatother
\usepackage{booktabs}
\newcommand\Midrule{\midrule[\heavyrulewidth]}
\begin{document}
\begin{table}
\centering
\begin{tabular}{| c | l @{\qquad} | c c C |}
\Hline
\bfseries HD Level &&&&\\
\hline
1 & \itshape Rep-tile: & $\{1,2\}$ & $\{1,3\}$ & $\{2,3\}$ \\
\cline{2-5}
& \itshape Encoding: & 1 & 2 & 3 \\
\Hline
2 & \itshape Rep-tile: & $\{2\}$ & $\{3\}$ & \\
\cline{2-5}
& \itshape Encoding: & 1 & 2 & \\
\Hline
\end{tabular}
\caption{Bla bla}
\label{tab:SMuTexEncoding}
\end{table}
\begin{table}
\centering
\begin{tabular}{ c >{\itshape}l c c c }\toprule
\bfseries HD Level\\\Midrule
1 & Rep-tile: & $\{1,2\}$ & $\{1,3\}$ & $\{2,3\}$ \\\cmidrule{2-5}
& Encoding: & 1 & 2 & 3 \\\Midrule
2 & Rep-tile: & $\{2\}$ & $\{3\}$ & \\\cmidrule{2-5}
& Encoding: & 1 & 2 & \\\bottomrule
\end{tabular}
\caption{Bla bla}
\label{tab:SMuTexEncoding}
\end{table}
\end{document}
答案3
如果您确实想要与规则兼容的垂直规则booktabs
,则应该{NiceTabular}
使用nicematrix
。
\documentclass{article}
\usepackage{nicematrix,booktabs,caption}
\begin{document}
\begin{table}[h]
\centering
\small
\begin{NiceTabular}{| c | >{\itshape}l | c c c |}
\hline
\bfseries HD Level & & & & \\
\midrule[2pt]
\Block{2-1}{1} & Rep-tile & $\{1,2\}$ & $\{1,3\}$ & $\{2,3\}$ \\
\cmidrule{2-5}
& Encoding & 1 & 2 & 3 \\
\midrule[2pt]
\Block{2-1}{2} & Rep-tile & $\{2\}$ & $\{3\}$ & \\
\cmidrule{2-5}
& Encoding & 1 & 2 & \\
\hline
\end{NiceTabular}
\caption{\small\bfseries Bla bla}
\label{tab:SMuTexEncoding}
\end{table}
\end{document}