在表格中插入新行

在表格中插入新行

我正在尝试将表格标题的一部分放在新行上。

这是我的代码:

\documentclass[a4paper,11pt]{article}
\begin{document}
\title{}
\author{My name}
\date{\today}
\maketitle

\section{}


\begin{table}[!htbp] \centering 
  \caption{This is a table} 
  \label{} 
\begin{tabular}{@{\extracolsep{5pt}} lll} 
\\[-1.8ex]\hline 
\hline \\[-1.8ex]
\textbf{Rownames} & \textbf{Quite a long}\\\textbf{header} &  \textbf{Short header} \\ 
\hline \\[-1.8ex] 
value & $1.330$ & $1.080$ \\ 
value & $0.440$ & $0.360$ \\ 
value & $0.730$ & $$-$0.380$ \\ 
\normalsize 
\end{tabular} 
\end{table} 


\end{document}

这是输出:

在此处输入图片描述

我想要的输出表应该是这样的:

在此处输入图片描述

请注意,在我期望的输出中,只有“相当长的标题”中的“标题”一词位于新行上。我该如何实现此表?

答案1

我们将列类型调整为 ,p{<length>}以便我们可以引入段落并调用array包来使用选项>{\raggedright}。以下是代码中的变化:

\begin{tabular}{@{\extracolsep{5pt}} l>{\raggedright}p{8em}l} 

在此处输入图片描述

以下是 MWE:

\documentclass[a4paper,11pt]{article}
\usepackage{array}
\begin{document}
\title{}
\author{My name}
\date{\today}
\maketitle

\section{}


\begin{table}[!htbp] \centering 
  \caption{This is a table} 
  \label{} 
\begin{tabular}{@{\extracolsep{5pt}} l>{\raggedright}p{8em}l} 
\\[-1.8ex]\hline 
\hline \\[-1.8ex]
\textbf{Rownames} & \textbf{Quite a long header} &  \textbf{Short header} \\ 
\hline \\[-1.8ex] 
value & $1.330$ & $1.080$ \\ 
value & $0.440$ & $0.360$ \\ 
value & $0.730$ & $-0.380$ \\ 
\normalsize 
\end{tabular} 
\end{table} 


\end{document}

答案2

您可能需要执行以下操作:

  • 使用tabularx环境而不是tabular环境,并使用X列类型作为第 2 列和第 3 列的标题。在下面的示例中,我X也为第一行选择了列类型,但根据该列的“实际”内容,您可能希望将其类型设置为。我为环境l提出了一个总宽度;根据您使用的字体的大小和其他特性,您可能需要稍微更改该宽度。9cmtabularx

  • 对第 2 列和第 3 列中的数字使用该dcolumn包,以便数字在小数点上对齐;类型列的内容D将自动在数学模式下排版,因此无需将数字括在符号对中$

  • 使用该booktabs包及其命令\toprule、、\midrule\bottomrule代替基本\hline命令。

在此处输入图片描述

\documentclass[a4paper,11pt]{article}
\usepackage{tabularx,dcolumn,booktabs}
\newcolumntype{Y}{>{\raggedright\arraybackslash}X}
\begin{document}
\begin{table}[!h] 
\centering 
  \caption{This is a table} \label{} 

\smallskip
\begin{tabularx}{9cm}{X*{2}{D{.}{.}{2.3}}}
\toprule
\textbf{Rownames} & 
\multicolumn{1}{Y}{\textbf{Quite a long header}} &  
\multicolumn{1}{Y}{\textbf{Short header}} \\ 
\midrule
value & 1.330 & 1.080 \\ 
value & 0.440 & 0.360 \\ 
value & 0.730 & -0.380 \\ 
\bottomrule
\end{tabularx} 
\end{table} 
\end{document}

附录:此外,如果您想要数字条目右对齐并自动四舍五入到小数点后两位(这两者似乎都从您发布的示例表中可以看出),我建议您也加载该siunitx包并为包的S列类型提供合适的选项。

在此处输入图片描述

\documentclass[a4paper,11pt]{article}
\usepackage{tabularx,booktabs,siunitx}
\sisetup{round-mode=places,
         round-precision=2,
         table-format=2.2,
         table-number-alignment=right}
\newcolumntype{Y}{>{\raggedright\arraybackslash}X}
\begin{document}
\begin{table}[!h] 
\centering 
  \caption{This is another table} \label{} 
\smallskip
\begin{tabularx}{9cm}{ X *{2}{S} }
\toprule
\textbf{Rownames} & 
\multicolumn{1}{Y}{\textbf{Quite a long header}} &  
\multicolumn{1}{Y}{\textbf{Short header}} \\ 
\midrule
value & 1.330 & 1.080 \\ 
value & 0.440 & 0.360 \\ 
value & 0.730 & -0.380 \\ 
\bottomrule
\end{tabularx} 
\end{table} 
\end{document}

答案3

如果您想手动提供换行符,您可以使用类似这样的宏\Stack

在此处输入图片描述

\documentclass{article}

\usepackage{booktabs}% http://ctan.org/pkg/booktabs

\newcommand{\Stack}[3][]{#1\begin{tabular}[t]{@{}#2@{}}#3\end{tabular}}
\newcommand{\StackR}[2][]{\Stack[#1]{r}{#2}}
\newcommand{\StackL}[2][]{\Stack[#1]{l}{#2}}
\newcommand{\StackC}[2][]{\Stack[#1]{c}{#2}}

\begin{document}

\begin{tabular}{lrr} 
  \toprule
  \textbf{Rownames} & \StackC[\bfseries]{Quite a long \\ header} & \textbf{Short header} \\
  \midrule
  value & $1.330$ & $1.080$ \\ 
  value & $0.440$ & $0.360$ \\ 
  value & $0.730$ & $-0.380$ \\
  \bottomrule
\end{tabular}

\end{document}

makecell包裹提供了一个类似名称的\makecell宏,它可以执行...类似的事情。

答案4

以下是使用 makecell 和 booktabs 进行操作的方法:

\documentclass[a4paper, 11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{makecell, booktabs}

\begin{document}
\title{}
\author{My name}
\date{\today}
\maketitle

\renewcommand{\theadfont}{\bfseries}
\section{}

\begin{table}[!htbp] \centering
\caption{This is a table}
\label{}\sffamily
\begin{tabular}{ l@{\qquad} r @{\qquad} r}
\addlinespace
\toprule
\toprule
\thead{Rownames} & \thead{Quite a long\\ header} &  \thead{Short header} \\
\midrule
value & 1.330 &  1.080 \\
value & 0.340 &  0.360   \\
value & 0.730 & $ - $0.380 \\
\bottomrule
\normalsize
\end{tabular} 
\end{table}

\end{document} 

结果:

相关内容