如果为表格条目指定颜色,则表格列不会对齐

如果为表格条目指定颜色,则表格列不会对齐

我的代码如下:

\documentclass{book}
\usepackage{color,colortbl}
\begin{document}

\begin{tabular}{ll>{\color{red}}p{20pc}}
a &1 &Test
\end{tabular}

\end{document}

输出为:

enter image description here

最后一列之前有一些不必要的垂直空间。如果我删除标签\color{red},一切正常,我该如何解决这个问题?

上述问题是根据 David Carlisle 和 CarLaTeX 的建议修复的,但如果我使用环境,也会出现同样的问题supertabular,我使用了supertabular自动拆表包,代码如下:

\documentclass{book}
\usepackage{color,colortbl,supertabular}
\begin{document}

\begin{supertabular}{ll>{\leavevmode\color{red}}p{4pc}>{\leavevmode\color{black}}l>{\leavevmode\color{black}}l>{\leavevmode\color{red}}p{4pc}}
a &1 &Test &a &1 &Test\\
a &1 &Test &a &1 &Test\\
\end{supertabular}

\end{document}

答案1

放在\leavevmode之前\color{red},以确保结束垂直模式并进入水平模式。

有关详细信息,请参阅:\leavevmode 的功能和使用或阅读第 6 页的脚注“‘图形’包中的软件包”。如果您有 TeX Live,您可以使用texdoc grfguide或轻松找到它texdoc color

\documentclass{book}
\usepackage{color}
\usepackage{array}

\begin{document}

    \begin{tabular}{ll>{\leavevmode\color{red}}p{20pc}}
        a &1 & Test \\
    \end{tabular}   

\end{document}

enter image description here

PS =我在 David Carlisles 对这个问题的评论中找到了解决方案:如何为一行/一列的字体着色而不让文本跳行?

答案2

supertablular 显然改变了表格序言,使其不再符合颜色安全要求,增加额外的组可以解决这个问题(但会增加额外的垂直空间,除非在 p 列末尾添加负空间)

\documentclass{book}
\usepackage{color,colortbl,supertabular}
\begin{document}

\begin{supertabular}{
l
l
>{\bgroup\leavevmode\color{red}}p{4pc}<{\endgraf\egroup}
>{\bgroup\leavevmode\color{black}}l<{\egroup}
>{\bgroup\leavevmode\color{black}}l<{\egroup}
>{\bgroup\leavevmode\color{red}}p{4pc}<{\endgraf\egroup}
}
a &1 &Test &a &1 &Test\\
a &1 &Test &a &1 &Test\\
\end{supertabular}

\end{document}

答案3

我不知道为什么会发生这种情况!但使用包m中定义的选项array将解决问题。

\documentclass{book}
\usepackage{color,colortbl}
\begin{document}

\begin{tabular}{ll>{\color{red}}m{20pc}}
a &1 &Test\\
\end{tabular}

\end{document}

enter image description here

相关内容