我定义了一个新环境\CCG
,它接受两个参数(即文本上方和下方)和一个可选后缀。我用它\hrulefill
来确保水平线填充后缀前的空间。
该解决方案似乎被包弄乱了colortbl
(例如,当我使用着色单元格时)。
我如何使用colortbl
并保持类似的结构CCG
?手动编码\hrule
大小不是一个解决方案,因为 CCG 结构可以嵌套,并且文本的长度也会变化。
具有嵌套结构的 MWE2:
\documentclass[10pt,a4paper]{article}
\usepackage{colortbl}
\newcommand{\CCG}[3][]{
\begin{tabular}[t]{@{\hspace{-3pt}}c@{\hspace{-3pt}}}
#2\\[-7pt]
\hrulefill\raisebox{-2.5pt}{\footnotesize{#1}}\\
\begin{tabular}[t]{@{}c@{}}
#3
\end{tabular}
\end{tabular}
}
\begin{document}
\CCG[suffix]{\cellcolor{green}above text}{below text}
%\hspace{2cm}
%\CCG[suffix]{above text}{below text}
\vspace{5mm}
\CCG[$<$]{
\CCG[$>$]{%
\CCG{some}{$NP/N$}
\CCG{man}{$N$}}
{$NP$}
\CCG{run}{$S\backslash NP$}}
{$S$}
\end{document}
答案1
评论colortbl.dtx
表明,该包的作者 David Carlisle故意地将单元格周围的一阶无限粘连 ( ) 改为fil
二阶无限粘连 ( fill
),目的是为了“阻止人们在表格条目中放置拉伸粘连”。你可以很容易地看到这种粘连\showlists
。
一个可行但却糟糕的解决方法如下:
\documentclass[10pt,a4paper]{article}
\usepackage{colortbl}
\newcommand{\CCG}[3][]{
\begin{tabular}[t]{@{\hspace{-3pt}}c@{\hspace{-3pt}}}
#2\\[-7pt]
\leavevmode \leaders \hrule \hskip 0pt plus 1filll \kern 0pt % <<< change
\raisebox{-2.5pt}{\footnotesize{#1}}\\
\begin{tabular}[t]{@{}c@{}}
#3
\end{tabular}
\end{tabular}
}
\begin{document}
\CCG[suffix]{\cellcolor{green}above text}{below text}
\hspace{2cm}
\CCG[suffix]{above text}{below text}
% \showboxbreadth = 1000
% \showboxdepth = 10
% \showlists
\vspace{5mm}
\CCG[$<$]{
\CCG[$>$]{%
\CCG{some}{$NP/N$}
\CCG{man}{$N$}}
{$NP$}
\CCG{run}{$S\backslash NP$}}
{$S$}
\end{document}
但我不能承担任何责任,因为这可能会导致彩色表格包裹! ;-)
编辑
顺便说一下,这是输出:
答案2
我使用计算用于计算文本宽度然后\rule
根据文本宽度设置大小的包。
虽然线条画得很漂亮(这是我需要的),但单元格颜色有点混乱。但它在新环境之外运行良好。
了解为什么颜色在新环境中超出边界将会很有帮助。
\documentclass[10pt,a4paper]{article}
\usepackage{colortbl}
\usepackage{calc}
\newcommand{\newccg}[3][]{%
\begin{tabular}[t]{@{\kern-1pt}c@{\kern-1pt}}
#2
\\[-1mm]
\rule[2.3pt]{\maxof{\widthof{#2}}{\widthof{#3}}-\widthof{#1}}{1pt}#1
\\[-1mm]
#3
\end{tabular}
}
\begin{document}
\newccg[$>>>$]{AA}{BBBBB}
~
\newccg[$<$]{CCCCCCCC}{DD}
~
\newccg[$<$]{
\newccg[$>$]{%
\newccg{\cellcolor{green}some}{$NP/N$}
\newccg{man}{$N$}}
{$NP$}
\newccg{run}{\cellcolor{red}$S\backslash NP$}}
{$S$}
\begin{tabular}{c | c}\hline
A & \cellcolor{red}A\\\hline
\cellcolor{green}C & D\\\hline
\end{tabular}
\end{document}