如何在使用 Siunitx 时在表格中进行换行?

如何在使用 Siunitx 时在表格中进行换行?

正如标题所示,我想在表格中使用 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}

使用 S 模式时表格太宽

在这种情况下,我希望“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}

在此处输入图片描述

相关内容