colortbl 改变数组行为

colortbl 改变数组行为

David Reiter 将以下代码传递给我,用于生成 CCG 证明。只要不加载,此代码就可以正常工作colortbl

没有colortbl我得到:

在此处输入图片描述

colortbl得到:

在此处输入图片描述

有办法解决这个问题吗?CCG 的出气方式不同吗?我想同时使用这两个包。

\documentclass{article}

\newcommand{\deriv}[2]
{ %\arraycolsep=.25em
   \renewcommand{\arraystretch}{.5}
  \ensuremath{\begin{array}[t]{@{}*{#1}{c}@{}}
     #2
   \end{array}} }

\newcommand{\hr}{\ensuremath{\hrulefill}}
\newcommand{\forwardapp}{\ensuremath{\hrulefill_{>}}}
\newcommand{\backwardapp}{\ensuremath{\hrulefill_{<}}}

\newcommand{\bs}{\char`\\}

\usepackage{colortbl}

\begin{document}

\deriv{4}{
the  & cat & chased         & Mary\\
\hr  & \hr & \hr            & \hr \\
np/n & n   & (s\bs np)/np   & np\\
\multicolumn{2}{@{}c}{\forwardapp} & \multicolumn{2}{c@{}}{\forwardapp}\\
\multicolumn{2}{c}{{np}}             & \multicolumn{2}{c@{}}{{s\bs np}}\\
\multicolumn{4}{@{}c@{}}{\backwardapp}\\
\multicolumn{4}{c@{}}{{s}}\\
}

\end{document}

答案1

colortbl 文档确实警告不要在 colortbl 中使用无限拉伸,因此您需要更有力地挤压它:

在此处输入图片描述

\documentclass{article}

%all the %% are needed...
\newcommand{\deriv}[2]
{%% %\arraycolsep=.25em
   \renewcommand{\arraystretch}{.5}%%
  \ensuremath{\begin{array}[t]{@{}*{#1}{c}@{}}
     #2
   \end{array}}%%
 }

\def\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern0pt }
\newcommand{\hr}{\ensuremath{\hrulefilll}}
\newcommand{\forwardapp}{\ensuremath{\hrulefilll_{>}}}
\newcommand{\backwardapp}{\ensuremath{\hrulefilll_{<}}}

\newcommand{\bs}{\char`\\}

\usepackage{colortbl}

\begin{document}

\deriv{4}{
\mathrm{the}  & \mathrm{cat} & \mathrm{chased}  & \mathrm{Mary}\\ %math italic too painful
\hr  & \hr & \hr            & \hr \\
np/n & n   & (s\bs np)/np   & np\\
\multicolumn{2}{@{}c}{\forwardapp} & \multicolumn{2}{c@{}}{\forwardapp}\\
\multicolumn{2}{c}{{np}}             & \multicolumn{2}{c@{}}{{s\bs np}}\\
\multicolumn{4}{@{}c@{}}{\backwardapp}\\
\multicolumn{4}{c@{}}{{s}}\\
}

\end{document}

相关内容