Cline 未在表中与自定义线完全连接

Cline 未在表中与自定义线完全连接

我有一张表格,表格中有两条粗线(一条水平线和一条垂直线),并且有多行和多列单元格。现在其中一条线没有连接到我想要的位置。

这就是我必须创建的其他线型。(公然从这个网站窃取的):

\makeatletter
\newcommand{\thickhline}{%
    \noalign {\ifnum 0=`}\fi \hrule height 1pt
    \futurelet \reserved@a \@xhline
}
\newcolumntype{"}{@{\hskip\tabcolsep\vrule width 1pt\hskip\tabcolsep}}
\makeatother

以及表格本身:

\begin{table}[h]
\centering
\begin{tabular}{|c|>{\centering\arraybackslash}p{1cm}">{\centering\arraybackslash}p{1cm}|>{\centering\arraybackslash}p{1cm}|>{\centering\arraybackslash}p{1cm}|}
\hline
\multicolumn{2}{|c"}{\multirow{2}{*}{}} & \multicolumn{3}{c|}{Retort Diameter (mm)}             \\ \cline{3-5} 
\multicolumn{2}{|c"}{}                              & 750          & 1000           & 1200      \\ \thickhline
\multirow{3}{*}{Gas Flow (SLM)}         & 25        & 5.7          & 3.2            & 2.2       \\ \cline{2-5} 
                                        & 50        & 11           & 6.4            & 4.4       \\ \cline{2-5} 
                                        & 75        & 17           & 9.6            & 6.6       \\ \hline
\end{tabular}
\caption{Approximate Peclet values}
\label{tb:Peclet}
\end{table}

\cline{3-5} 没有完全连接到粗垂直线。有办法解决这个问题吗?

在此处输入图片描述

附注:有没有更简洁的方法将文本置于定义的列的中心?

答案1

array包提供!{decl.}<decl.>代替垂直线。要获得 1pt 宽的垂直线,可以使用\vrule width 1pt。您还可以基于此声明新的列类型,使用类似 的内容\newcolumntype{V}{!{\vrule width 1pt}}。(我在这里使用V而不是您的原始内容,"以避免与包发生可能的冲突,babel因为"在某些语言中是简写。)

除了定义命令之外\thickrule,您还可以使用包\Xhline中的命令makecell。它接受宽度作为参数:\Xhline{1pt}

如果您计划在整个文档中多次使用较粗的垂直线和水平线,那么您可能有兴趣在行距中定义它们的宽度,就像我在下面的示例中所做的那样。

在以下 MWE 中,我还包含了表格的第二个版本,该版本利用booktabs包来实现没有垂直线和较少水平线的布局。我还在其中添加了siunitx包以排版单位:

在此处输入图片描述

\documentclass{article}
\usepackage{array}
\usepackage{multirow}
\usepackage{makecell}

\newlength{\mytablinewidth}
\setlength{\mytablinewidth}{1pt}
\newcommand{\myhline}{\Xhline{\mytablinewidth}}
\newcolumntype{V}{!{\vrule width \mytablinewidth}}

\usepackage{booktabs}
\usepackage{siunitx}


\begin{document}

\begin{table}[h]
\centering
\begin{tabular}{|c|>{\centering\arraybackslash}p{1cm}V>{\centering\arraybackslash}p{1cm}|>{\centering\arraybackslash}p{1cm}|>{\centering\arraybackslash}p{1cm}|}
\hline
\multicolumn{2}{|cV}{\multirow{2}{*}{}} & \multicolumn{3}{c|}{Retort Diameter (mm)}             \\ \cline{3-5} 
\multicolumn{2}{|cV}{}                              & 750          & 1000           & 1200      \\ \myhline
\multirow{3}{*}{Gas Flow (SLM)}         & 25        & 5.7          & 3.2            & 2.2       \\ \cline{2-5} 
                                        & 50        & 11           & 6.4            & 4.4       \\ \cline{2-5} 
                                        & 75        & 17           & 9.6            & 6.6       \\ \hline
\end{tabular}
\caption{Approximate Peclet values}
\label{tb:Peclet}
\end{table}


\begin{table}[h]
\centering
\begin{tabular}{ccccc}
\toprule
                                                 &          & \multicolumn{3}{c}{Retort Diameter}   \\
                                                 &          & \multicolumn{3}{c}{(\si{\mm})}        \\
\cmidrule{3-5} 
                                                 &          & 750          & 1000           & 1200  \\ 
\midrule
\multirow{3}{*}{\makecell[cl]{Gas Flow \\ (SLM)}}& 25       & 5.7          & 3.2            & 2.2   \\  
                                                 & 50       & 11           & 6.4            & 4.4   \\
                                                 & 75       & 17           & 9.6            & 6.6   \\ 
\bottomrule
\end{tabular}
\caption{Approximate Peclet values}
\label{tb:Peclet2}
\end{table}


\end{document}

答案2

除了!已经提到的技巧之外莱安德里斯,您可以使用w代码更轻量的列类型。

您也可以删除左上角的空白矩形。但我认为还有更好的方法来排版表格,下面我将介绍其中一种。

\documentclass{article}
\usepackage{array,multirow}
\usepackage{booktabs}

\makeatletter
\newcommand{\thickhline}{%
    \noalign {\ifnum 0=`}\fi \hrule height 1pt
    \futurelet \reserved@a \@xhline
}
\newcolumntype{"}{!{\vline width 1pt}}
\makeatother

\newcommand{\smashedheader}[2][c]{%
  \smash{\begin{tabular}[t]{@{}#1@{}}#2\end{tabular}}%
}

\begin{document}

\begin{tabular}{| c | w{c}{1cm} " w{c}{1cm} | w{c}{1cm} | w{c}{1cm} |}
\cline{3-5}
\multicolumn{2}{c"}{\multirow{2}{*}{}} & \multicolumn{3}{c|}{Retort Diameter (mm)} \\
\cline{3-5} 
\multicolumn{2}{c"}{}                               & 750          & 1000           & 1200 \\
\thickhline
\multirow{3}{*}{Gas Flow (SLM)}         & 25        & 5.7          & 3.2            & 2.2  \\
\cline{2-5} 
                                        & 50        & 11           & 6.4            & 4.4  \\
\cline{2-5} 
                                        & 75        & 17           & 9.6            & 6.6  \\
\hline
\end{tabular}

\bigskip

\begin{tabular}{ @{} c w{c}{1.5cm} w{c}{1.5cm} w{c}{1.5cm} @{} }
\toprule
\smashedheader{Gas Flow \\ (SLM)} & \multicolumn{3}{c@{}}{Retort Diameter (mm)} \\
\cmidrule(l){2-4} 
          & 750          & 1000           & 1200 \\
\midrule
25        & 5.7          & 3.2            & 2.2  \\
50        & 11           & 6.4            & 4.4  \\
75        & 17           & 9.6            & 6.6  \\
\bottomrule
\end{tabular}

\end{document}

在此处输入图片描述

答案3

这里是一种使用 制作表格的{NiceTabular}方法nicematrix

\documentclass{article}

\usepackage{nicematrix}
\usepackage{tikz}

\begin{document}

\begin{table}[h]
\centering
\renewcommand{\arraystretch}{1.2}
\begin{NiceTabular}{c c |[tikz=very thick] *{3}{w{c}{1cm}}}[hvlines]
\Block{2-2}{}               &     & \Block{1-3}{Retort Diameter (mm)} \\ 
                            &     & 750 & 1000 & 1200 \\ 
\Hline[tikz=very thick]
\Block{3-1}{Gas Flow (SLM)} & 25  & 5.7  & 3.2 & 2.2  \\ 
                            & 50  & 11   & 6.4 & 4.4  \\ 
                            & 75  & 17   & 9.6 & 6.6  
\end{NiceTabular}
\caption{Approximate Peclet values}
\label{tb:Peclet}
\end{table}
    

\begin{table}[h]
\centering
\renewcommand{\arraystretch}{1.2}
\begin{NiceTabular}{c c |[tikz=very thick] *{3}{w{c}{1cm}}}[hvlines,corners=NW]
                            &     & \Block{1-3}{Retort Diameter (mm)} \\ 
                            &     & 750 & 1000 & 1200 \\ 
\Hline[tikz=very thick]
\Block{3-1}{Gas Flow (SLM)} & 25  & 5.7  & 3.2 & 2.2  \\ 
                            & 50  & 11   & 6.4 & 4.4  \\ 
                            & 75  & 17   & 9.6 & 6.6  
\end{NiceTabular}
\caption{Approximate Peclet values}
\label{tb:Peclet}
\end{table}

\end{document}

您需要多次编译(因为nicematrix使用 PGF/Tikz 节点)。

上述代码的输出

相关内容