我有一张带有一堆拆分单元格(或大\multirow
单元格,取决于人们如何看待它)的表格。这是一个最小示例,对于我需要表格的设置:
\documentclass{memoir}
\usepackage{float}
\usepackage{arydshln}
\newcommand{\colheading}[1]{\textrm{\fontfamily{ppl}\selectfont#1}}
\newcommand{\specialcell}[1]{\begin{tabular}[t]{@{}l@{}}#1\end{tabular}} % for multi-row cells, adapted from user @egreg's answer to http://tex.stackexchange.com/questions/2441/how-to-add-a-forced-line-break-inside-a-table-cell
\begin{document}
\begin{Spacing}{1}
\begin{table}[H]
\caption{Selection of popular Linux distributions}
\begin{center}
\begin{small}
\begin{tabular}{|l|l|l|}
\hline
\colheading{name of distribution} & \colheading{\specialcell{abbreviated \\ name}} & \colheading{inventor} \\
\hline
Debian GNU/Linux & Debian & Ian Murdock \\
\hline
\specialcell{Red Hat \\ Enterprise Linux} & RHEL & \specialcell{Red Hat, \\ Inc.} \\
\cdashline{1-2}[.4pt/1pt]
\specialcell{\ \ \textit{formerly:} \\ \ \ Red Hat Linux \\ \ \ Advanced Server} & \ \ --- & {} \\
\hline
Slackware & --- & \specialcell{Patrick \\ Volkerding} \\
\hline
\end{tabular}
\end{small}
\end{center}
\end{table}
\end{Spacing}
\end{document}
(1. 从概念上讲,一些东西(例如列标题的特殊字体)不是必需的,但如果解决方案适用于非平凡/非最小设置,那就太好了。2. 请不要修改单元格内容:有些事情(例如,中间行簇的单元格不是定义列宽的最长的单元格)是故意的。)
布局是有效的:从视觉上看,一切都符合我的要求。然而,当我在编译的 PDF 文件中选择文本时,我想要的某种突出显示顺序还不够正确。PDF 文件中单元格的当前突出显示选择顺序是
“Red Hat Enterprise Linux”→“RHEL”→“Red Hat,Inc.”→“以前是 [...]”→“---”。
然而我想要:
“Red Hat Enterprise Linux”→“以前 [...]”→“RHEL”→“---”→“Red Hat, Inc.”
我尝试了很多方法,包括\multirow
、\minipage
以及将列长度存储在某个地方(\newlength{\colwidthColumnnumber} \settowidth{\colwidthColumnnumber}{Debian GNU/Linux}
)的技巧,但总有一些东西不起作用。我得到:
- 分割单元格的点太短,没有覆盖整个单元格宽度
- 单元格中出现多余的空行
\\
涉及/&
/的错误消息\cr
- 垂直条缺失或加倍
顺便说一句,看来应用于\cdashline
单个列的正确方法是写\cdashline{1-1}
,而不是\cdashline{1}
。
有没有一种简单的方法可以保持当前的精确视觉外观(单元格布局和内容),只是单元格选择顺序不同?这可能涉及更多地使用子表。
注意:通常\specialcell
-trick(参见我的代码;它是用户 @egreg 的另一个问题的解决方案的变体)就足够了。虚线(来自包arydshln
)使事情变得复杂,并且需要更通用的处理。
答案1
要保持特定的选择顺序,您必须同时设置整个单元格的内容,然后再移动到下一个单元格。我在以下示例中通过将单元格结构包装在 中来实现这一点\smash
。这样可以设置任意多的内容,而不会影响 的其余部分tabular
。[t]
的操作对齐\specialcell
很有帮助,我已经用一些空行更正了任何溢出:
\documentclass{memoir}% http://ctan.org/pkg/memoir
\usepackage{float,arydshln}% http://ctan.org/pkg/{float,arydshln}
\newcommand{\colheading}[1]{\textrm{\fontfamily{ppl}\selectfont#1}}
\newcommand{\specialcell}[1]{\begin{tabular}[t]{@{}l@{}}#1\end{tabular}} % http://tex.stackexchange.com/q/2441/5764
\begin{document}
\begin{Spacing}{1}
\begin{table}[H]
\caption{Selection of popular Linux distributions}
\centering\small
\begin{tabular}{|l|l|l|}
\hline
\colheading{name of distribution} & \colheading{\specialcell{abbreviated \\ name}} & \colheading{inventor} \\
\hline
Debian GNU/Linux & Debian & Ian Murdock \\
\hline
\smash{\specialcell{Red Hat \\ Enterprise Linux \\ \quad \textit{formerly:} \\ \quad Red Hat Linux \\ \quad Advanced Server}} &
\smash{\specialcell{RHEL \\ \\ \quad ---}} & \specialcell{Red Hat, \\ Inc.} \\
\cdashline{1-2}[.4pt/1pt]
& & \\
& & \\
& & \\
\hline
Slackware & --- & \specialcell{Patrick \\ Volkerding} \\
\hline
\end{tabular}
\end{table}
\end{Spacing}
\end{document}
请注意,我已删除center
环境以代替\centering
。请参阅我应该使用center
或centering
来制作图表和表格吗?