表格具体问题

表格具体问题

我使用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}

结果表

不幸的是,我还没有找到关于如何调整其中某些元素的明确解释。所以我的问题是:

  1. 如何使文本在某些单元格中水平居中?我尝试过\centering在单元格中这样做,但这种方法并不适用于所有表格单元格。例如,我需要使两列的标题居中:“Ut convallis pharetra”'Consectetur adipisci veliturea',我该如何解决呢?

  2. 为什么第一个单元格中的文本没有自动垂直居中?另外,如何同时使其水平居中?

  3. 如何设置单元格的文本边距(一般来说,某些列和某些单元格的边距可自定义)?如何设置某些行的自定义高度?(高于行内的文本。)

  4. 我如何设置整个表格的默认文本对齐方式(“在牢房顶部”, 或者“位于细胞中心”.) 我该如何改变某些特定列或单元格的这种行为?

  5. 如何创建空单元格?我必须使用\(空格),否则会出现错误。

答案1

以下是对您问题的一些解答:

  1. paragraph 样式的列可以居中,因为它们具有已知的宽度。但是,由于水平对齐的变化也会改变宏的工作方式\\,因此您需要对此进行更正。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 \\
    %...
    
  2. 最简单的方法是使用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 个单元格)。然后其他对齐选项变得可用,但垂直规则重新定义和一些间距补偿可能会突然出现。

  3. 我会使用表单中的空格\hspace*{<len>}作为水平填充,并可能使用零宽度规则:\rule{0pt}{<len>}作为垂直填充。这将有助于逐个单元格进行水平调整。

    对于特定于列的填充,您可以使用列规范在两列之间@{<stuff>}插入<stuff>。例如,r@{\quad}l将在右对齐列和左对齐列\quad之间插入。rl

    对于一般的表格填充,请参见表格中的列填充

  4. 您可以使用array包裹在每个单元格的开头插入一个元素以使其居中(例如),同时仍指定一个paragraph 样式的列。这通常使用(例如)>{\centering\arraybackslash}p{5cm}提供5cm宽的居中对齐列来完成。此外,array使用列类型提供垂直对齐的单元格规范m{<len>}。请参阅array文档有关这些规范的更多信息。

  5. \空单元格无需使用(控制空间)。

这是您的表格,包含在一个最小工作文档中:

在此处输入图片描述

\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}​

相关内容