我已经摆弄下表一段时间了,遇到了一些小问题。
\documentclass{article}
\usepackage{threeparttable}
\usepackage{multirow}
\begin{document}
\begin{table}[!ht]
\caption{
\textbf{Pheno file format}}
\begin{threeparttable}
\begin{tabular}{|l|l|c|}\hline\hline
\textbf{Pheno file headers} & \multicolumn{2}{|c|}{\textbf{Notes}} \\ \hline\hline
sex & \multicolumn{2}{|l|}{The sex column is restricted to the following values.} \\ \hline\hline
& \multicolumn{1}{|l|}{Sex} & \multicolumn{1}{p{1cm}|}{Value} \\ \hline\hline
& Male & \multicolumn{1}{p{1cm}|}{1} \\ \hline
& \multicolumn{1}{|l|}{Female} & \multicolumn{1}{p{1cm}|}{2} \\ \hline
& \multicolumn{1}{|l|}{Missing}& \multicolumn{1}{|p{1cm}|}{-1} \\ \hline
studyid & \multicolumn{2}{|l|}{\multirow{1}{*}{Description of the study the data belongs to - eg. 'Hapmap6.0'.}} \\
& \multicolumn{2}{|l|}{If studyid is not given, 'unknown' is used.} \\ \hline
studyid & \multicolumn{2}{p{\dimexpr\textwidth-2\tabcolsep\relax}|}{Description of the study the data belongs to - eg. 'Hapmap6.0'.
If studyid is not given, 'unknown' is used.} \\ \hline
%\cline{3-4}
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}
问题:
因此,我有点像在表格中嵌入子表格。我最初将它作为单独的表格,但后来我将其插入主表格中。它是带有标题
Sex
和的表格Value
。如果我可以调整第三个边距的宽度,使其仅达到必要的宽度,并且如果该表格左侧的所有行(从下方的双线开始)Sex/Value
都不存在,那就太好了。另一个问题是第三列中的数字没有左对齐。所以我希望它看起来像----------------------------------------------------------------------------- | Pheno file headers | Notes | ============================================================================== | sex | The sex column is restricted to the following values | ============================================================================== | Sex | Value | | Male | 1 | | Female | 2 | | Missing| -1 | ------------------------------------------------------------------------------ | Studyid | Some stuff | ------------------------------------------------------------------------------
这能以不太复杂的方式完成吗?
我有两个单元格示例(以 studyid 开头),横跨两行两列。我想我更喜欢底部的那个。这是最好的做法吗?它肯定比上面的那个简单。
答案1
也许是一个建议,但这是当前设置的替代方案。我已经使用tabularx
允许可变宽度的tabular
列(通过列类型X
),使用环境填充到某个固定值tabularx
。此外,booktabs
垂直方向提供更整洁的表格分布,同时实际上限制了垂直规则的使用(由于规则定义)。无论哪种方式,表格布局都有助于列对齐,从而消除了使用垂直规则的要求。
内部tabular
已调整为提供自然宽度的水平对齐,就像您的 ASCII 艺术解释所建议的那样。
\documentclass{article}
\usepackage{threeparttable}% http://ctan.org/pkg/threeparttable
\usepackage{booktabs}% http://ctan.org/pkg/booktabs
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
\usepackage[labelfont=normal,font=bf]{caption}%http://ctan.org/pkg/caption
\captionsetup[table]{skip=0pt}
\begin{document}
\begin{table}[!ht]
\caption{Pheno file format}
\begin{threeparttable}
\begin{tabularx}{\textwidth}{lX}
\toprule
\textbf{Pheno file headers} & \multicolumn{1}{c}{\textbf{Notes}} \\
\midrule
sex & The sex column is restricted to the following values: \\[\jot]
& \begin{tabular}{lc}
Sex & Value \\ \midrule
Male & $\phantom{-}1$ \\
Female & $\phantom{-}2$ \\
Missing & $-1$
\end{tabular} \\[\jot]
\midrule
studyid & Description of the study the data belongs to - eg. \texttt{Hapmap6.0}. \\
& If studyid is not given, \texttt{unknown} is used. \\
\midrule
studyid & Description of the study the data belongs to - eg. \texttt{Hapmap6.0}. \\
& If studyid is not given, \texttt{unknown} is used. \\
\bottomrule
\end{tabularx}
\end{threeparttable}
\end{table}
\end{document}
使用\phantom{-}
会留下正确数量的水平(和垂直)空间,而-
无需实际排版。这允许对齐嵌套中的条目tabular
,同时使其居中。
\jot
的长度为3pt
。将其与 一起使用\\
,例如\\[\jot]
,将tabular
行分隔符垂直向下移动3pt
。使用长度寄存器(如\jot
)比明确使用 更好\\[3pt]
,因为您可以在一个位置修改\jot
(例如使用\setlength{\jot}{5pt}
),并且它将在使用它的任何地方生效。后重新定义,而不必到处手动修改3pt
垂直跳跃。
可以对嵌套/内部的布局进行更改tabular
(例如,如果您希望它在外部水平居中tabularx
,尽管现有的对齐方式似乎足够了)。
最后,没有必要使用multirow
再说了,原因更明显。在我看来,输入代码更简单,更容易理解。