使用时siunitx
包中,是否可以在S
-type 列的标题单元格中“换行”或插入换行符(请参阅文档第 4.6 节)?
我有一张相对较长的桌子,我想在其中做这件事。
下面,我展示了 -type 列的一般用法S
。然后,我(有点)模仿使用 -type 列实现的功能,但如果能够在利用-type列p
的同时包装标题,那就太好了。siunitx
S
梅威瑟:
\documentclass[12pt]{article}
\usepackage{siunitx, booktabs}
\sisetup{per-mode=symbol}
\setlength\parindent{0em}
\begin{document}
\begin{tabular}{@{}cSSS@{}}
\toprule
&
{Reaction 1 (\si{\mmol\per\s})} &
{Reaction 2 (\si{\umol\per\minute})} &
{Reaction 3 (\si{\pmol\per\hour})} \\
\midrule
Item 1 & 10 & 12 & 15 \\
Item 2 & 20 & 22 & 25 \\
Item 3 & 30 & 32 & 35 \\
\bottomrule
\end{tabular}
\par\bigskip
\begin{tabular}{@{}cp{2cm}p{2cm}p{2cm}@{}}
\toprule
&
{Reaction 1 (\si{\mmol\per\s})} &
{Reaction 2 (\si{\umol\per\minute})} &
{Reaction 3 (\si{\pmol\per\hour})} \\
\midrule
Item 1 & 10 & 12 & 15 \\
Item 2 & 20 & 22 & 25 \\
Item 3 & 30 & 32 & 35 \\
\bottomrule
\end{tabular}
\end{document}
答案1
您可以嵌套任何允许换行的构造(atabular
或\parbox
,或这里我用来\shortstack
改变)
\documentclass[12pt]{article}
\usepackage{siunitx, booktabs}
\sisetup{per-mode=symbol}
\setlength\parindent{0em}
\begin{document}
\begin{tabular}{@{}cSSS@{}}
\toprule
&
{\shortstack{Reaction 1\\(\si{\mmol\per\s})}} &
{\shortstack{Reaction 2\\(\si{\umol\per\minute})}} &
{\shortstack{Reaction 3\\(\si{\pmol\per\hour})}} \\
\midrule
Item 1 & 10 & 12 & 15 \\
Item 2 & 20 & 22 & 25 \\
Item 3 & 30 & 32 & 35 \\
\bottomrule
\end{tabular}
\end{document}
答案2
\shortstack
对我来说不起作用,所以我用
\mbox{\specialcell{\textbf{24 GiB}\\\textbf{96 processors}}}
其中\specialcell
定义为埃格尔在如何在表格单元格内添加强制换行符作为
\newcommand{\specialcell}[2][c]{%
\begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}
例子:
\usepackage{siunitx}
\begin{table}
\begin{tabular}{|c|c|c|S[table-format=4.2]|S[table-format=4.2]|}
\textbf{Mount option} & \textbf{Backend API} & \specialcell{\textbf{MPI hint}\\\textbf{configuration}} & \mbox{\specialcell{\textbf{12 GiB}\\\textbf{(48 processors)}}} & \mbox{\specialcell{\textbf{24 GiB}\\\textbf{(96 processors)}}} \\
% ...
\end{tabular}
\end{table}
结果是: