![如果为表格条目指定颜色,则表格列不会对齐](https://linux22.com/image/329791/%E5%A6%82%E6%9E%9C%E4%B8%BA%E8%A1%A8%E6%A0%BC%E6%9D%A1%E7%9B%AE%E6%8C%87%E5%AE%9A%E9%A2%9C%E8%89%B2%EF%BC%8C%E5%88%99%E8%A1%A8%E6%A0%BC%E5%88%97%E4%B8%8D%E4%BC%9A%E5%AF%B9%E9%BD%90.png)
我的代码如下:
\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}