以下代码创建了两个上下并列的 2×2 表格。在第一个表格中,一条水平线将第二列的两行分隔开,而在第二个表格中,一条水平线将第一列的两行分隔开。
\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{tabular}{ |c||c| }
\hline
A & B\\
\cline{2-2}
C & D\\
\hline
\end{tabular}
\vspace{.3cm}
\begin{tabular}{ |c||c| }
\hline
A & B\\
\cline{1-1}
C & D\\
\hline
\end{tabular}
\end{document}
当使用 进行编译时pdflatex
,会产生以下输出。
注意第一个和第二个表格之间的区别。在第一个表格中,水平分隔符包含在列的两个垂直边框之间,但在第二个表格中,水平分隔符超出了列的右边框,一直延伸到右列的左边框。
我希望第二个表格中的水平分隔符的行为方式与第一个表格中的水平分隔符类似。如何实现?
答案1
用于hhline
此。另外,请注意上线和下线末端的区别。
\documentclass{article}
\usepackage{multirow}
\usepackage{hhline}
\begin{document}
\begin{tabular}{ |c||c| }
\hline
A & B\\
\cline{2-2}
C & D\\
\hline
\end{tabular}
\vspace{.3cm}
\begin{tabular}{ |c||c| }
\hhline{|--|}
A & B\\
\hhline{|~||-|}
C & D\\
\hhline{|--|}
\end{tabular}
\end{document}
答案2
tblr
环境可能的解决方案tabularray
包。版本中有hlines 和 clines 的leftpos
选项(已经在 CTAN 中,需要几天时间才能到达 TeXLive 或 MiKTeX)。rightpos
2021N
当leftpos
/rightpos
有值时0
,hline/cline 将触及第一条 vline;当leftpos
/rightpos
有值时1
,hline/cline 将触及所有 vline。
\documentclass{article}
\usepackage{tabularray}
\begin{tblr}{ |c||c| }
\hline
A & B\\
\cline[leftpos=0]{2-2}
C & D\\
\hline
\end{tblr}
\vspace{.3cm}
\begin{tblr}{ |c||c| }
\hline
A & B\\
\cline[rightpos=0]{1-1}
C & D\\
\hline
\end{tblr}
\end{document}
答案3
环境(目前)没有修剪命令{NiceTabular}
的选项(也许在未来的版本中)。nicematrix
\cline
然而,这个答案想要表明nicematrix
提供工具来编程这样的命令无需使用内部nicematrix
。
实际上,环境{NiceTabular}
在表格的单元格、行和列下创建 PGF/Tikz 节点,并向用户提供对这些节点的访问。
在下面的程序中,该命令\mycline
有一个带星号的版本\mycline*
,可以修剪右侧的规则。
\documentclass{article}
\usepackage{nicematrix,tikz}
\ExplSyntaxOn
\makeatletter
\NewDocumentCommand { \mycline } { s m }
{ \__aad_mycline:nw {#1}#2 \q_stop \ignorespaces }
\cs_new_protected:Npn \__aad_mycline:nw #1#2-#3\q_stop
{
\tl_gput_right:Nx \g_nicematrix_code_after_tl
{
\__aad_mycline:nnnn
{ \int_use:c { c@iRow } }
{ #2 }
{ \int_eval:n { #3 + 1 } }
{
\bool_if:nTF { #1 }
{ \dim_eval:n { \arrayrulewidth + \doublerulesep } }
{ 0 pt }
}
}
}
% #1 is the number of row
% #2 is the number of the first column of the \mycline
% #3 is the number of the last column of the \mycline
% #4 is the length to trim on the *right* side
\cs_new_protected:Nn \__aad_mycline:nnnn
{ \tikz \draw (#1-|#2) -- ([xshift=-#4]#1-|#3) ; }
\makeatother
\ExplSyntaxOff
\begin{document}
\begin{NiceTabular}{|c||c|}
\hline
A & B\\
\mycline{1-1}
C & D\\
\hline
\end{NiceTabular}
\bigskip
\begin{NiceTabular}{|c||c|}
\hline
A & B\\
\mycline*{1-1}
C & D\\
\hline
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。