正如标题所示,我想在表格中使用 S[table-format = xyz] 格式,同时将较长的标题换行。
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs}
\begin{document}
\begin{table}[!h]
\centering
\caption{Pipettierschema Teilversuch 2}
\label{tab:ps2}
\begin{tabular}{@{} l S[table-format = 1.3] S[table-format = 3.0] c c c c @{}}
\toprule
{nº} & {Pyruvatkonzentration} & {Bidestilliertes Wasser} & {Pyruvat} & {Imidazolpuffer} & {NADH} & {Lactat}\\
\midrule
1 & 0,01 & 878 & 20 & 5 & 2 & 0 \\
2 & 0,015 & 877 & 20 & 15 & 2 & 0 \\
3 & 0,02 & 876 & 20 & 25 & 2 & 0 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
在这种情况下,我希望“Pyruvatkonzentration”和/或“Bidestilliertes Wasser”换行,但数字保留 Siuntix 外观。最好在序言中或在表格本身的代码中设置它,并让它为我换行,而不是手动设置每个单词中的每个连字符。
答案1
您可以使用\multicolumn{1}{…}{…}
为头部指定另一种列类型,例如:
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{siunitx}
\usepackage{booktabs}
\begin{document}
\newcommand*{\TableHead}[1]{\multicolumn{1}{p{4em}}{\centering\hskip0pt#1}}
\begin{table}[!h]
\centering
\caption{Pipettierschema Teilversuch 2}
\label{tab:ps2}
\begin{tabular}{@{} l S[table-format = 1.3] S[table-format = 3.0] c c c c @{}}
\toprule
{nº} & \TableHead{Pyruvatkonzentration} & \TableHead{Bidestilliertes Wasser} & {Pyruvat} & \TableHead{Imidazolpuffer} & {NADH} & {Lactat}\\
\midrule
1 & 0,01 & 878 & 20 & 5 & 2 & 0 \\
2 & 0,015 & 877 & 20 & 15 & 2 & 0 \\
3 & 0,02 & 876 & 20 & 25 & 2 & 0 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
如果您还需要指定头部某些列的宽度,则可以定义,例如
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{siunitx}
\usepackage{booktabs}
\begin{document}
\NewExpandableDocumentCommand{\TableHead}{O{4em}m}{\multicolumn{1}{p{#1}}{\centering\hskip0pt#2}}
\begin{table}[!h]
\centering
\caption{Pipettierschema Teilversuch 2}
\label{tab:ps2}
\begin{tabular}{@{} l S[table-format = 1.3] S[table-format = 3.0] c c c c @{}}
\toprule
{nº} & \TableHead[6em]{Pyruvatkonzentration} & \TableHead[6em]{Bidestilliertes Wasser} & {Pyruvat} & \TableHead{Imidazolpuffer} & {NADH} & {Lactat}\\
\midrule
1 & 0,01 & 878 & 20 & 5 & 2 & 0 \\
2 & 0,015 & 877 & 20 & 15 & 2 & 0 \\
3 & 0,02 & 876 & 20 & 25 & 2 & 0 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
简单来说,tblr
使用tabularray
包。不需要为列标题定义命令,列标题中的文本通过添加cmd=\hskip0pt
到第一个表格行的规范中进行连字符连接:
\documentclass{book}
\usepackage[ngerman]{babel}
\usepackage{tabularray}
\UseTblrLibrary{booktabs, siunitx}
\begin{document}
\begin{table}[ht]
\begin{tblr}{colspec = {@{} c X[c, si={table-format=1.3}]
X[c, si={table-format=3.0}]
*{2}{X[c, si={table-format=2.0}]}
*{2}{X[c, si={table-format=1.0}]}
@{} },
row{1} = {guard, f, cmd=\hskip0pt}
}
\toprule
nº & Pyruvatkonzentration
& Bidestilliertes Wasser
& Pyruvat & Imidazolpuffer
& NADH & Lactat \\
\midrule
1 & 0,01 & 878 & 20 & 5 & 2 & 0 \\
2 & 0,015 & 877 & 20 & 15 & 2 & 0 \\
3 & 0,02 & 876 & 20 & 25 & 2 & 0 \\
\bottomrule
\end{tblr}
\end{table}
\end{document}