给出下表:
\documentclass{standalone}
\usepackage{booktabs, siunitx, multirow}
\begin{document}
\begin{tabular}{p{1.5cm}lSS}
\toprule
& a & x & y \\ \midrule
\multirow{2}{=}{entdimensionalisiert} & abc & 0,00 & 20,95 \\
& def & 0,004 & 0,7 \\ \midrule
\multirow{2}{=}{normalisiert} & abc & 0,00& 20,95 \\
& def & 1,00 & 175,00 \\ \bottomrule
\end{tabular}
\end{document}
我怎样才能将 p 列的宽度传递给两个多行,以便每个多行内的文本可以相应地自动换行? 而不是*
尝试宽度信息=
,但无济于事。
答案1
编辑:现在被视为 OP 评论。添加了使用LuaLaTeX
引擎编译 MWE 的解决方案。它还允许对单元格内容中的第一个单词进行连字符处理。
siunitx
列包的使用S
可以像在 MWE 中使用一样简单:只需S
在没有任何选项的情况下,预期在数字中写入具有默认整数和小数位数的简单数字。但是包的功能要强大得多。它允许指定(作为选项)整数和小数的数量:(table-format=<number of integer digits>.<number of decimal digits>
基本选项)、数字舍入、添加符号等。有关详细信息,请参阅包文档。它通过许多示例进行了说明。
使用\multirow{2}{=}{...}
是正确的方法,但是您编译的 MWEpdfLaTeX
不支持单元格文本中第一个单词的连字符。您可以通过两种方式解决问题:
- 通过在单词中插入连字符点
\-
,如以下 MWE 中所做的那样:
\documentclass[margin=2mm]{standalone}
\usepackage{booktabs, multirow}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{ p{19mm} l S[table-format=1.3] S[table-format=3.2] }
\toprule
& a & {x} & {y} \\ \midrule
\multirow{2}{=}{entdimen\-sionalisiert}
& abc & 0,00 & 20,95 \\
& def & 0,004 & 0,7 \\ \midrule
\multirow{2}{=}{normalisiert}
& abc & 0,00& 20,95 \\
& def & 1,00 & 175,00 \\ \bottomrule
\end{tabular}
\end{document}
- 或者通过将包添加
babel
到 MWE 然后通过以下方式进行编译LuaLaTeX
:
\documentclass[margin=2mm]{standalone}
\usepackage[ngerman]{babel} % <---
\usepackage{booktabs, multirow}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{ p{17mm} l S[table-format=1.3] S[table-format=3.2] }
\toprule
& a & {x} & {y} \\ \midrule
\multirow{2}{=}{entdimensionalisiert}
& abc & 0,00 & 20,95 \\
& def & 0,004 & 0,7 \\ \midrule
\multirow{2}{=}{normalisiert}
& abc & 0,00& 20,95 \\
& def & 1,00 & 175,00 \\ \bottomrule
\end{tabular}
\end{document}
答案2
以下是使用新tabularray
包的解决方案(加拿大运输安全局)。
\documentclass{article}
\usepackage{booktabs, siunitx}
\usepackage{tabularray}
\UseTblrLibrary{booktabs, siunitx}
\begin{document}
\begin{tblr}{p{1.7cm}lSS}
\toprule
& a & x & y \\ \cmidrule{2-4}
\SetCell[r=2]{t} entdimensionalisiert & abc & 0,00 & 20,95 \\
& def & 0,004 & 0,7 \\ \midrule
\SetCell[r=2]{t} normalisiert & abc & 0,00& 20,95 \\
& def & 1,00 & 175,00 \\ \bottomrule
\end{tblr}
\end{document}
我已将宽度增加到1.7cm
,因为否则文本“entDimensionisert”将跨越 3 行。
相当于tabularray
。宽度自动从表格列定义中获取\multirow{2}
。\SetCell[r=2]
笔记
这必须用 LuaLaTex 进行编译才能允许对段落中的第一个单词进行连字。