尽管指定了列宽,文本仍溢出到 threeparttable 中的相邻单元格中

尽管指定了列宽,文本仍溢出到 threeparttable 中的相邻单元格中

我正在尝试制作此表格,但尽管指定了列宽,文本仍会溢出到相邻的单元格中。这是我的 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

相关内容