我使用report
类,并且刚刚开始使用表。我创建了一个:
\begin{table} [ht]
\centering
\caption{Ut convallis pharetra augue at aliquet}
\label{table1_disc_log}
\small
\begin{tabular}{ |p{4cm} || p{5cm} | p{5cm} | }
\hline\hline
\textbf{Ut convallis} & \multicolumn{2}{|c|}{\textbf{Lorem ipsum dolor sit amet}}\\
\cline{2-3}
\ & Ut convallis pharetra & Consectetur adipisci veliturea \\
\hline
Lorem ipsum dolor sit amet & \centering $O(n)$ & Lorem ipsum dolor \\
\hline
Veliturea adipiscing, consectetur adipisci & \centering $O(\sqrt{n})$ & Lorem ipsum \\
\hline
$\rho$--Pollard method & \centering $O(\sqrt{n})$ & Lorem ipsum dolor \\
\hline
Pharetra augue at aliquet, consectetur adipisci &
\centering $O\left(\left(\sum_{i=1}^rk_i\left(\sqrt{p_i} + \ln p \right) \right)\ln^2p \right)$ &
Ut convallis pharetra augue at aliquet, consectetur \\
\hline
Adipiscing elit, ut convallis & \centering $L_p\left[\frac{1}{3},const\right]$ &
Lorem ipsum dolor sit amet, consectetur adipisci (ut convallis pharetra augue at aliquet, consectetur) \\
\hline\hline
\end{tabular}
\end{table}
不幸的是,我还没有找到关于如何调整其中某些元素的明确解释。所以我的问题是:
如何使文本在某些单元格中水平居中?我尝试过
\centering
在单元格中这样做,但这种方法并不适用于所有表格单元格。例如,我需要使两列的标题居中:“Ut convallis pharetra”和'Consectetur adipisci veliturea',我该如何解决呢?为什么第一个单元格中的文本没有自动垂直居中?另外,如何同时使其水平居中?
如何设置单元格的文本边距(一般来说,某些列和某些单元格的边距可自定义)?如何设置某些行的自定义高度?(高于行内的文本。)
我如何设置整个表格的默认文本对齐方式(“在牢房顶部”, 或者“位于细胞中心”.) 我该如何改变某些特定列或单元格的这种行为?
如何创建空单元格?我必须使用
\
(空格),否则会出现错误。
答案1
以下是对您问题的一些解答:
p
aragraph 样式的列可以居中,因为它们具有已知的宽度。但是,由于水平对齐的变化也会改变宏的工作方式\\
,因此您需要对此进行更正。array
包裹提供\arraybackslash
重新定义工作方式\\
。因此,要将两个子列标题居中,您可以使用\usepackage{array}% http://ctan.org/pkg/array %... \textbf{Ut convallis} & \multicolumn{2}{c|}{\textbf{Lorem ipsum dolor sit amet}}\\ \cline{2-3} \ & \centering Ut convallis pharetra & \centering\arraybackslash Consectetur adipisci veliturea \\ %...
最简单的方法是使用
multirow
将该元素向下推一半。或者您\raisebox
也可以直接使用。为什么它没有自动执行此操作?因为这个要求可能非常特定于用户,所以手动指定是唯一的方法。\usepackage{multirow}% http://ctan.org/pkg/multirow %... \hline\hline \centering\arraybackslash\multirow{2}*{\textbf{Ut convallis}} & \multicolumn{2}{c|}{\textbf{Lorem ipsum dolor sit amet}} \\ \cline{2-3} %...
另一种方法是将第 2-3 列中的列标题/子标题作为单独的 提供
tabular
,使其成为单个单元格(而不是tabular
现在的 4 个单元格)。然后其他对齐选项变得可用,但垂直规则重新定义和一些间距补偿可能会突然出现。我会使用表单中的空格
\hspace*{<len>}
作为水平填充,并可能使用零宽度规则:\rule{0pt}{<len>}
作为垂直填充。这将有助于逐个单元格进行水平调整。对于特定于列的填充,您可以使用列规范在两列之间
@{<stuff>}
插入<stuff>
。例如,r@{\quad}l
将在右对齐列和左对齐列\quad
之间插入。r
l
对于一般的表格填充,请参见表格中的列填充。
您可以使用
array
包裹在每个单元格的开头插入一个元素以使其居中(例如),同时仍指定一个p
aragraph 样式的列。这通常使用(例如)>{\centering\arraybackslash}p{5cm}
提供5cm
宽的居中对齐列来完成。此外,array
使用列类型提供垂直对齐的单元格规范m{<len>}
。请参阅array
文档有关这些规范的更多信息。\
空单元格无需使用(控制空间)。
这是您的表格,包含在一个最小工作文档中:
\documentclass{report}
\usepackage{array}% http://ctan.org/pkg/array
\usepackage{multirow}% http://ctan.org/pkg/multirow
\begin{document}
\begin{table} [ht]
\centering
\caption{Ut convallis pharetra augue at aliquet}
\label{table1_disc_log}
\small
\begin{tabular}{ |m{4cm} || >{\centering\arraybackslash}m{5cm} | m{5cm} | }
\hline\hline
\centering\arraybackslash\multirow{2}*{\textbf{Ut convallis}} & \multicolumn{2}{c|}{\textbf{Lorem ipsum dolor sit amet}}\\
\cline{2-3}
& Ut convallis pharetra & \centering\arraybackslash Consectetur adipisci veliturea \\
\hline
Lorem ipsum dolor sit amet & $O(n)$ & Lorem ipsum dolor \\
\hline
Veliturea adipiscing, consectetur adipisci & $O(\sqrt{n})$ & Lorem ipsum \\
\hline
$\rho$--Pollard method & $O(\sqrt{n})$ & Lorem ipsum dolor \\
\hline
Pharetra augue at aliquet, consectetur adipisci &
$O\left(\left(\sum_{i=1}^rk_i\left(\sqrt{p_i} + \ln p \right) \right)\ln^2p \right)$ &
Ut convallis pharetra augue at aliquet, consectetur \\
\hline
Adipiscing elit, ut convallis & $L_p\left[\frac{1}{3},\mathrm{const}\right]$ &
Lorem ipsum dolor sit amet, consectetur adipisci (ut convallis pharetra augue at aliquet, consectetur) \\
\hline\hline
\end{tabular}
\end{table}
\end{document}