![尽管指定了列宽,文本仍溢出到 threeparttable 中的相邻单元格中](https://linux22.com/image/470767/%E5%B0%BD%E7%AE%A1%E6%8C%87%E5%AE%9A%E4%BA%86%E5%88%97%E5%AE%BD%EF%BC%8C%E6%96%87%E6%9C%AC%E4%BB%8D%E6%BA%A2%E5%87%BA%E5%88%B0%20threeparttable%20%E4%B8%AD%E7%9A%84%E7%9B%B8%E9%82%BB%E5%8D%95%E5%85%83%E6%A0%BC%E4%B8%AD.png)
我正在尝试制作此表格,但尽管指定了列宽,文本仍会溢出到相邻的单元格中。这是我的 MWE:
\documentclass[a4paper,12pt]{article}
\usepackage{microtype}
\usepackage{siunitx}
\sisetup{separate-uncertainty}
\sisetup{tight-spacing=true}
\sisetup{retain-zero-uncertainty=true}
\usepackage{multirow}
\usepackage{threeparttable}
\usepackage{pdflscape}
\usepackage{booktabs}
\begin{document}
\begin{landscape}
\scriptsize
\begin{table}[h!]
\begin{threeparttable}
\begin{tabular}{p{2.5cm}
p{2.5cm}
l
S[table-format=3.2(5)]
S[table-format=3.2(2)]
S[table-format=3.2(4)]
S[table-format=3.2(4)]
S[table-format=3.2(2)]
S[table-format=3.2(2)]
}
\toprule
\textbf{Group} &
\textbf{Compound} &
\textbf{Sample} &
\multicolumn{1}{c}{\textbf{Met 1}} &
\multicolumn{1}{c}{\textbf{Met 2}} &
\multicolumn{1}{c}{\textbf{Dia 1}} &
\multicolumn{1}{c}{\textbf{Dia 2}} &
\multicolumn{1}{c}{\textbf{Fal 1}} &
\multicolumn{1}{c}{\textbf{Fal 2}} \\
\midrule
\multirow{6}*{Cholesterols/others} &
\multirow{2}*{{cyclopentanoperhydrophenanthrene}} &
Acrotab &
0.18(08) &
0.15(00) &
0.22(00) &
0.15(00) &
0.03(00) &
NA \\
\cline{3-9}
&
&
Marotab &
4.10(168) &
2.88(30) &
2.88(30) &
3.45(8) &
0.92(4) &
0.04(1) \\
\cline{2-9}
&
\multirow{2}*{3-hydroxy-3-methylglutaryl CoA} &
Acrotab &
0.21(37) &
0.36(2) &
0.53(21) &
NA &
NA &
NA\\
\cline{3-9}
&
&
Marotab &
7.12(256) &
4.74(37) &
7.92(48) &
5.67(32) &
0.66(57) &
NA\\
\cline{2-9}
&
\multirow{2}*{indole-3- carboxylic acid} &
Acrotab &
17.13(894) &
15.56(123) &
19.21(195) &
16.58(31) &
1.50(06) &
NA\\
\cline{3-9}
&
&
Marotab &
402.67(17943) &
321.13(593) &
430.54(3571) &
333.67(3723) &
50.53(234) &
18.47(54)\\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{landscape}
\end{document}
产生的输出如下:
尽管我p{2.5cm}
在设置中指定了,但还是会发生这种\tabular{}
情况。似乎列宽正在调整,但文本没有换行。我以为这也应该换行。我没有在这里展示它,但即使我\-
在音节之间添加,它也不会换行。
答案1
如果使用
*
多行的宽度,它们将适应文本的宽度。要使用列的宽度,请使用=
如果你有不寻常的单词,比如
cyclopentanoperhydrophenanthrene
,你可以通过用标记来帮助乳胶找到合适的断点\-
(我不是化学家,请检查我在下面代码中添加的那些,它们很可能是错误的)即使文本跨行,你分配的两行也太小了,无法容纳你的长篇大论。我使用了较小的字体大小,并加宽了第二列
\documentclass[a4paper,12pt]{article}
\usepackage{microtype}
\usepackage{siunitx}
\sisetup{separate-uncertainty}
\sisetup{tight-spacing=true}
\sisetup{retain-zero-uncertainty=true}
\usepackage{multirow}
\usepackage{threeparttable}
\usepackage{pdflscape}
\usepackage{booktabs}
\begin{document}
\begin{landscape}
\begin{table}
\begin{threeparttable}
\small
\setlength{\tabcolsep}{2.3pt}
\begin{tabular}{p{1.4cm}
p{3.4cm}
l
S[table-format=3.2(5)]
S[table-format=3.2(2)]
S[table-format=3.2(4)]
S[table-format=3.2(4)]
S[table-format=3.2(2)]
S[table-format=3.2(2)]
}
\toprule
\textbf{Group} &
\textbf{Compound} &
\textbf{Sample} &
{\textbf{Met 1}} &
{\textbf{Met 2}} &
{\textbf{Dia 1}} &
{\textbf{Dia 2}} &
{\textbf{Fal 1}} &
{\textbf{Fal 2}} \\
\midrule
\multirow{6}{=}{Choles\-terols/ others} &
\multirow{2}{=}{{cyclo\-pen\-tano\-per\-hydro\-phen\-anthrene}} &
Acrotab &
0.18(08) &
0.15(00) &
0.22(00) &
0.15(00) &
0.03(00) &
NA \\
\cline{3-9}
&
&
Marotab &
4.10(168) &
2.88(30) &
2.88(30) &
3.45(8) &
0.92(4) &
0.04(1) \\
\cline{2-9}
&
\multirow{2}{=}{3-hydroxy-3-methylglutaryl CoA} &
Acrotab &
0.21(37) &
0.36(2) &
0.53(21) &
NA &
NA &
NA\\
\cline{3-9}
&
&
Marotab &
7.12(256) &
4.74(37) &
7.92(48) &
5.67(32) &
0.66(57) &
NA\\
\cline{2-9}
&
\multirow{2}{=}{indole-3-carboxylic acid} &
Acrotab &
17.13(894) &
15.56(123) &
19.21(195) &
16.58(31) &
1.50(06) &
NA\\
\cline{3-9}
&
&
Marotab &
402.67(17943) &
321.13(593) &
430.54(3571) &
333.67(3723) &
50.53(234) &
18.47(54)\\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{landscape}
\end{document}
答案2
- 您的表格不包含任何表格注释,为什么要使用
threeparttable
? - 编写表格的另一种方法是使用
tabularray
包。我认为使用它生成的表格更美观。 - 多行单元格的语法
\SetCell[r=<num. of rows>]{<options>} cell contents
等同tabularray
于的语法multirow{num. rows>}{=}{content of cell}
(如@samcarter_is_at_topanswers.xyz 答案中所建议的),但重要的区别<num. rows>
在于行数,而不是单元格中跨行的行数multirow
。
梅威瑟:
\documentclass[a4paper,12pt]{article}
\usepackage{microtype}
\usepackage{tabularray}
\UseTblrLibrary{booktabs,
siunitx}
\sisetup{separate-uncertainty,
tight-spacing=true,
retain-zero-uncertainty=true}
\newcommand\NA{\SetCell{guard,c} NA}
\usepackage{pdflscape}
\begin{document}
\begin{landscape}
\begin{table}[ht]
\small
\begin{tblr}{colsep = 3 pt,
colspec = {@{} X[0.75,l]
X[1.75,l]
l
Q[c, si={table-format=3.2(5)}]
Q[c, si={table-format=3.2(2)}]
*{2}{Q[c, si={table-format=3.2(4)}]}
*{2}{Q[c, si={table-format=2.2(2)}]}
@{}},
row{1} = {guard, font=\bfseries}
}
\toprule
Group & Compound & Sample & Met 1 & Met 2 & Dia 1 & Dia 2 & Fal 1 & Fal 2 \\
\midrule
\SetCell[r=6]{} Choles\-terols/ others
& \SetCell[r=2]{} cyclo\-pentan\-oper\-hydro\-phenan\-threne
& Acrotab & 0.18(08) & 0.15(00) & 0.22(00)
& 0.15(00) & 0.03(00) & \NA \\
\midrule
& & Marotab & 4.10(168) & 2.88(30) & 2.88(30)
& 3.45(8) & 0.92(4) & 0.04(1) \\
\midrule
& \SetCell[r=2]{} 3-hydroxy-3-methylglutaryl CoA
& Acrotab & 0.21(37) & 0.36(2) & 0.53(21)
& \NA & \NA & \NA \\
\midrule
& & Marotab & 7.12(256) & 4.74(37) & 7.92(48)
& 5.67(32) & 0.66(57) & \NA \\
\midrule
& \SetCell[r=2]{} indole-3- carboxylic acid
& Acrotab &17.13(894) &15.56(123) & 19.21(195)
& 16.58(31) & 1.50(06) & \NA \\
\midrule
& & Marotab & 402.67(17943) & 321.13(593) & 430.54(3571)
& 333.67(3723) & 50.53(234) & 18.47(54)\\
\bottomrule
\end{tblr}
\end{table}
\end{landscape}
\end{document}
您可以观察到,由于使用了更大的字体大小(),因此该表的可读性更强,\small
就像您在 MWE 中使用的一样( )。\scriptsize