“tabular...m” 和 “tabular...p” 中 \color 的不同行为

“tabular...m” 和 “tabular...p” 中 \color 的不同行为

以下 MWE:

\documentclass[10pt]{article}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}


\usepackage{color}
\usepackage{array,float}

\begin{document}
    \begin{tabular}{|*{3}{>{\centering}p{1cm}|}}
        \hline \color{red}A&B&C\tabularnewline \hline
    \end{tabular}

    \begin{tabular}{|*{3}{>{\centering}m{1cm}|}}
        \hline \color{blue}A&B&C\tabularnewline \hline
    \end{tabular}

    Some blablah...
\end{document}

给我 :

在此处输入图片描述

蓝色一直延续到单元格之后,甚至表格之后!

我知道我基本上可以用牙套来解决问题

\color{blue}A

但我想了解为什么如果我在表格中使用“m”参数而不是“p”, \color 会出现这种奇怪的行为......(否则,为什么在第一个表格中,单元格更高,而 A 位于其单元格的底部?)

答案1

请参阅包文档第 6 页的脚注color

您可以使用它\leavevmode\color... 来避免该问题。

如果你\color在段落开始前添加垂直模式,那么颜色 whatsit 节点将出现在第一行的开头,而不是第一行的开头多于第一行。p列与第一个项目对齐,因此它与该节点对齐,而不是与第一行文本的基线对齐。


您可以通过添加显式内容来解决颜色泄漏问题{},以将颜色保留在单元格中

\documentclass[10pt]{article}

\usepackage{color}
\usepackage{array}%[=2016-10-06]

\begin{document}
    \begin{tabular}{|*{3}{>{\centering}p{1cm}|}}
        \hline \leavevmode\color{red}A&B&C\tabularnewline \hline
    \end{tabular}

    \begin{tabular}{|*{3}{>{\centering}m{1cm}|}}
        \hline {\leavevmode\color{blue}A}&B&C\tabularnewline \hline
    \end{tabular}

    Some blablah...
\end{document}

但这不是必需的,如果您array通过取消注释可选参数来使用以前的版本,那么它无需 `{ 即可工作。我会在 github 上提出有关此问题的问题。

相关内容