表格中的垂直线缩进,但仅当它是命令时

表格中的垂直线缩进,但仅当它是命令时

我想在表格中设置彩色垂直线,同时保持水平线为黑色。这可以通过!{\color{green}\vline}在需要垂直线时插入来轻松实现。这按预期工作,如本示例所示;

表按预期工作

为了减少打字,我把它变成一个命令,但是这样表格就变得奇怪了,垂直线稍微向内移动了一点;

桌子,但有奇怪的垂直线

然后,我在相同的环境中创建了两个表,但尽管运行的是基本相同的代码,但表的结果却如上所示。

我想知道是什么原因造成的,这样我就能知道它会对我的设置产生什么其他后果。

\documentclass{article}
\usepackage{graphicx}
\usepackage{color}
\usepackage{tikz}
\usepackage{array}
\usepackage{colortbl}
\usepackage{hhline}
\usepackage{tabularx}

\begin{document}

\newcommand\gline{
{\color{green}\vline}
}

\begin{table}[p]
\centering
\begin{tabular} [b] {!{\gline}  l !{\gline} l !{\gline}}
\hline
htext1 & htext2 \\
text 1 & text2 \\
\end{tabular} \\
\vspace{1 cm}
\begin{tabular} [b] {!{\color{green}\vline}  l !{\color{green}\vline} l !{\color{green}\vline}}
\hline
htext1 & htext2 \\
text 1 & text2 \\
\end{tabular}
\end{table}

\end{document}

上述代码的结果

答案1

您的宏周围有虚假的空格,因此该空格实际上位于 内!。请注意,如果您在行%尾省略,则会在那里添加一个空格(如果 TeX 未处于忽略空格的模式,例如在控制序列之后,那就没问题,因为 TeX 会忽略它们后面的空格)。

因此,你的

\newcommand\gline{
{\color{green}\vline}
}

你实际上得到的!{\gline}

!{ {\color{green}\vline} }

为了修复这个问题,只需要在定义%之后加上一个:{}

\documentclass{article}
\usepackage{array}
\usepackage{colortbl}

\newcommand\gline{%
{\color{green}\vline}%
}

\begin{document}

\begin{table}[p]
\centering
\begin{tabular} [b] {!{\gline}  l !{\gline} l !{\gline}}
\hline
htext1 & htext2 \\
text 1 & text2 \\
\end{tabular} \\
\vspace{1 cm}
\begin{tabular} [b] {!{\color{green}\vline}  l !{\color{green}\vline} l !{\color{green}\vline}}
\hline
htext1 & htext2 \\
text 1 & text2 \\
\end{tabular}
\end{table}

\end{document}

请注意,您可以通过定义为“列类型”来进一步减少输入量\gline(显然这不是列类型,但这是提供的接口的名称array):

\documentclass{article}
\usepackage{array}
\usepackage{colortbl}

\newcolumntype\gline{!{{\color{green}\vline}}}

\begin{document}

\begin{table}[p]
\centering
\begin{tabular} [b] {\gline  l \gline l \gline}
\hline
htext1 & htext2 \\
text 1 & text2 \\
\end{tabular} \\
\vspace{1 cm}
\begin{tabular} [b] {!{\color{green}\vline}  l !{\color{green}\vline} l !{\color{green}\vline}}
\hline
htext1 & htext2 \\
text 1 & text2 \\
\end{tabular}
\end{table}

\end{document}

两者的结果看起来相同:

在此处输入图片描述

相关内容