表格:我可以将列移动行高一半吗?

表格:我可以将列移动行高一半吗?

这个问题最好通过给出用例来解释:

我有一张表格,其中列出了一些数据,我想在右侧添加一列,给出两个相邻行的比率。现在,为了让这行的比率更加明显,我想将比率列移动一行高度的一半,以便每个比率值都位于计算它的两列的右侧。

例如,而不是这个

 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}

Table with numbers in ratio column shifted downwards

这里的关键部分是\raisebox将数字向下移动并\smash阻止它仅仅扩展行(就表格而言,数字根本不占用空间)。然后我们使用 Martin Scharrer 的(在后台collcell加载)将其一次性应用于整个列,并使用它阻止列标题出错。array\multicolumn

使用booktabs只是为了让它看起来更漂亮。

(我还要指出的是,可能有比将其硬编码为 -1ex 更好的方法来编码移位距离!)

相关内容