这个问题最好通过给出用例来解释:
我有一张表格,其中列出了一些数据,我想在右侧添加一列,给出两个相邻行的比率。现在,为了让这行的比率更加明显,我想将比率列移动一行高度的一半,以便每个比率值都位于计算它的两列的右侧。
例如,而不是这个
A ratio
------------
3 2
6 3
18
想象一下同一张表格,但右列的数字向下移动了半行。
这可能吗?
答案1
\documentclass[a4paper]{article}
\usepackage{collcell,array}
\newcommand{\shiftdown}[1]{\smash{\raisebox{-.5\normalbaselineskip}{#1}}}
\newcolumntype{C}{>{\collectcell\shiftdown}c<{\endcollectcell}}
\begin{document}
\begin{tabular}{cC}
A & \multicolumn{1}{c}{ratio}\\
\hline
3 &2\\
6 &3\\
18
\end{tabular}
\end{document}
必须\multicolumn{1}{c}{...}
避免将这种转变也应用到标题上。
答案2
\documentclass[a4paper]{article}
\usepackage{booktabs}
\usepackage{collcell}
\newcommand*{\movedown}[1]{%
\smash{\raisebox{-1ex}{#1}}}
\newcolumntype{q}{>{\collectcell\movedown}r<{\endcollectcell}}
% (for "quotient")
\begin{document}
\begin{tabular}{rq}
\toprule
A & \multicolumn{1}{l}{ratio}\\
\midrule
3 & 2\\
6 & 3\\
18 \\
\bottomrule
\end{tabular}
\end{document}
这里的关键部分是\raisebox
将数字向下移动并\smash
阻止它仅仅扩展行(就表格而言,数字根本不占用空间)。然后我们使用 Martin Scharrer 的(在后台collcell
加载)将其一次性应用于整个列,并使用它阻止列标题出错。array
\multicolumn
使用booktabs
只是为了让它看起来更漂亮。
(我还要指出的是,可能有比将其硬编码为 -1ex 更好的方法来编码移位距离!)