我的代码如下:
\documentclass{book}
\usepackage{color,colortbl}
\begin{document}
\begin{tabular}{ll>{\color{red}}p{20pc}}
a &1 &Test
\end{tabular}
\end{document}
输出为:
最后一列之前有一些不必要的垂直空间。如果我删除标签\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}
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}