我想在表格中设置彩色垂直线,同时保持水平线为黑色。这可以通过!{\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}
两者的结果看起来相同: