我有一张表格 ( tabulary
),其中有些单元格仅用一条线填充。这条线很1ex
粗,我希望线的底部与基线(该行所有单元格的基线)匹配。
我发现,当我为该规则定义颜色时,如果规则之前的单元格中没有文本,则规则单元格的基线与该行其他单元格的基线不匹配。
我没有找到的虚拟错误在哪里?!
\documentclass{scrartcl}
\usepackage{tabulary}
\usepackage{xcolor}
\begin{document}
\begin{tabulary}{.5\textwidth}{|L|L|R|}
\hline%
foo
&
\rule{1cm}{1ex}
&
bar
\\\hline
foo
&
\rule{1cm}{1ex} bar
&
baz
\\\hline
foo
&
bar \rule{1cm}{1ex}
&
baz
\\\hline
\end{tabulary}
\begin{tabulary}{.5\textwidth}{|L|L|R|}
\hline%
foo
&
{\color{black!50}\rule{1cm}{1ex}}
&
bar
\\\hline
foo
&
{\color{black!50}\rule{1cm}{1ex}} bar
&
baz
\\\hline
foo
&
bar {\color{black!50}\rule{1cm}{1ex}}
&
baz
\\\hline
\end{tabulary}
\end{document}
答案1
\color
除非您特别需要(这种情况很少见),否则不要使用;\textcolor
而是使用 , 。
\documentclass{scrartcl}
\usepackage{tabulary}
\usepackage{xcolor}
\begin{document}
\begin{tabulary}{.5\textwidth}{|L|L|R|}
\hline
foo & \rule{1cm}{1ex} & bar \\
\hline
foo & \rule{1cm}{1ex} bar & baz \\
\hline
foo & bar \rule{1cm}{1ex} & baz \\
\hline
\end{tabulary}
\begin{tabulary}{.5\textwidth}{|L|L|R|}
\hline
foo & \textcolor{black!50}{\rule{1cm}{1ex}} & bar \\
\hline
foo & \textcolor{black!50}{\rule{1cm}{1ex}} bar & baz \\
\hline
foo & bar \textcolor{black!50}{\rule{1cm}{1ex}} & baz \\
\hline
\end{tabulary}
\end{document}
问题是\color{...}
插入一个 whatsit(列表中要排版的特殊节点)没有启动段落模式。因此段落以 开始\rule
,而内容则以一行结束。
答案2
解决方法:添加>{\mbox{}}
(或>{\leavevmode}
在表格的序言中添加相关列:
\documentclass{scrartcl}
\usepackage{tabulary}
\usepackage{xcolor}
\begin{document}
\begin{tabulary}{.5\textwidth}{|L|L|R|}
\hline%
foo
&
\rule{1cm}{1ex}
&
bar
\\\hline
foo
&
\rule{1cm}{1ex} bar
&
baz
\\\hline
foo
&
bar \rule{1cm}{1ex}
&
baz
\\\hline
\end{tabulary}
\begin{tabulary}{.5\textwidth}{|L| >{\mbox{}}L|R|}
\hline%
foo
&
\color{black!50}\rule{1cm}{1ex}
&
bar
\\\hline
foo
&
{\color{black!50}\rule{1cm}{1ex}} bar
&
baz
\\\hline
foo
&
bar {\color{black!50}\rule{1cm}{1ex}}
&
baz
\\\hline
\end{tabulary}
\end{document}