\midrule 分割表格中的垂直线

\midrule 分割表格中的垂直线

我意识到该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

您可以 使用包及其命令来获得粗\hlines 。您可以使用包替换水平规则周围添加的垂直间距(负责非连接垂直规则);它允许您定义给定列的单元格上方和下方的最小垂直间距,并在其说明符前加上字母。makecell\Xhline{width}\Xcline{col1-col2}{width}booktabscellspaceS

我还借此机会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的文档即可。)captionfloat
  • 不要[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}

上述代码的输出

相关内容