我尝试编写一个表格,但是我找不到它的问题所在,因为它阻止了我的文件编译:
\documentclass[10pt,a4paper,twoside]{report}
\usepackage[version=4]{mhchem}
\usepackage{makecell, multirow, tabularx}
\begin{document}
\begin{table}[ht]
\centering
\begin{tabular}{|c|c|c|c|c|c|}
\hline
Material & $\Xi$ &
\makecell{ $\Sigma_{a}$ \\ [1/m] }
& \makecell{ Macroscopic Slowing \\ Down Power(MSDP)}
& Moderating Ratio(MR) &
\makecell{ Elastic scattering mean free path \\ MFP\textsubscript{ela} [cm] } \\[0.5ex]
\hline
\ce{H2O}(l) & 0.927 & 2.226 & 1.425 & 62 & 0.66\\
\hline
\ce{D2O}(l) & 0.510 & 0.001 & 0.177 & 4830 & 2.77\\
\hline
\ce{Be} & 0.207 & 0.094 & 0.154 & 126 & 1.29\\
\hline
Graphite(\ce{C}) & 0.158 & 0.030 & 0.083 & 216 & 2.50\\
\hline
\end{tabular}
\caption{Moderating properties of materials}
\label{table:3}
\end{table}
\end{document}
答案1
正如 @Mico 的精彩回答 (+1) 中所述,问题的根源在于在 \makecell
命令中使用方括号。在这里使用时,它们应该用花括号括起来。
使用tabularray
软件包booktabs
和siunitx
库(加载同名的包),您的表格可以写成如下形式:
\documentclass{article}
\usepackage[version=4]{mhchem}
\usepackage{tabularray}
\UseTblrLibrary{booktabs,siunitx}
\begin{document}
\begin{table}[ht]
\centering
\begin{talltblr}[
caption = {Moderating properties of materials},
label = {table:3},
note{a} = {MSDP: Macroscopic Slowing Down Power},
note{b} = {MR: Moderating Ratio},
note{c} = {MFP: Mean Free Path}
]{
width=0.9\linewidth,
colspec = {@{} l *{3}{X[c, si={table-format=1.3}]}
X[c, si={table-format=4.0}]
X[3, c, si={table-format=1.2}]
@{}}
}
\toprule
Material
& $\Xi$
& {{{$\Sigma_{a}$ \\ {[\unit{1\per\meter}]}}}}
& {{{MSDP}}}\TblrNote{a}
& {{{MR}}}\TblrNote{b}
& {{{Elastic scattering
MFP\textsubscript{ela}\TblrNote{c}\quad
{[\unit{\centi\meter}]} }}} \\
\midrule
\ce{H2O} [\unit{\liter}] & 0.927 & 2.226 & 1.425 & 62 & 0.66\\
\ce{D2O} [\unit{\liter}] & 0.510 & 0.001 & 0.177 & 4830 & 2.77\\
\ce{Be} & 0.207 & 0.094 & 0.154 & 126 & 1.29\\
Graphite (\ce{C}) & 0.158 & 0.030 & 0.083 & 216 & 2.50\\
\bottomrule
\end{talltblr}
\end{table}
\end{document}
编辑: 最后一栏添加了注释。
答案2
我认为问题的直接根源是
\makecell{ $\Sigma_{a}$ \\ [1/m] }
默认情况下,LaTeX 将方括号中的内容解释\\
为指令后面的补充垂直间距指令;要使此操作有效,方括号中的实体必须计算为长度,例如1ex
。这显然不是此处的正确解释。要告知 LaTeX 这一点,您需要将上面的表达式更改为
\makecell{ $\Sigma_{a}$ \\ {} [1/m] } % note the '{}' particle
除了修复此问题之外,您还应该对布局进行一些更改,以确保表格内容实际上适合文本块的宽度。具体来说,我认为您需要允许在第 4 列到第 6 列中换行。在下面的第一个表中,我使用了tabularx
环境和居中版本的X
列类型来实现此目标。
为了进一步简化表格的外观,我建议您在标题单元格中直接使用首字母缩略词 MSDP、MR 和 MFP,而不附带定义。(希望您在读者看到表格时已经向他们介绍了这些首字母缩略词。)这将使表格的宽度大大缩小。请参阅下面的第二个表格以获取说明。
\documentclass{article}
\usepackage{mhchem,makecell}
\usepackage{tabularx,ragged2e,booktabs,siunitx}
\newcolumntype{C}{>{\Centering\hspace{0pt}}X}
\newcommand\mC[1]{\multicolumn{1}{C}{#1}}
\begin{document}
\begin{table}[ht]
\centering
\setlength\tabcolsep{4pt} % default: 6pt
\begin{tabularx}{\textwidth}{@{} l cc C S[table-format=4.0] C @{}}
\toprule
Material
& $\Xi$
& \makecell[t]{$\Sigma_{a}$ \\ {} [\unit{1\per\meter}]}
& Macroscopic Slowing Down Power (MSDP)
& \mC{Moderating Ratio (MR)}
& Elastic scattering mean free path MFP\textsubscript{ela} [\unit{\centi\meter}] \\
\midrule
\ce{H2O} [\unit{\liter}] & 0.927 & 2.226 & 1.425 & 62 & 0.66\\
\ce{D2O} [\unit{\liter}] & 0.510 & 0.001 & 0.177 & 4830 & 2.77\\
\ce{Be} & 0.207 & 0.094 & 0.154 & 126 & 1.29\\
Graphite (\ce{C}) & 0.158 & 0.030 & 0.083 & 216 & 2.50\\
\bottomrule
\end{tabularx}
\caption{Moderating properties of materials}
\label{table:3}
\bigskip\bigskip
\setlength\tabcolsep{6pt} % return to default
\begin{tabular}{@{} l ccc S[table-format=4.0] c @{}}
\toprule
Material
& $\Xi$
& \makecell[t]{$\Sigma_{a}$ \\ {} [\unit{1\per\meter}]}
& MSDP
& {MR}
& \makecell[t]{Elastic scattering \\ MFP\textsubscript{ela} [\unit{\centi\meter}]} \\
\midrule
\ce{H2O} [\unit{\liter}] & 0.927 & 2.226 & 1.425 & 62 & 0.66\\
\ce{D2O} [\unit{\liter}] & 0.510 & 0.001 & 0.177 & 4830 & 2.77\\
\ce{Be} & 0.207 & 0.094 & 0.154 & 126 & 1.29\\
Graphite (\ce{C}) & 0.158 & 0.030 & 0.083 & 216 & 2.50\\
\bottomrule
\end{tabular}
\caption{Moderating properties of materials, 2nd version}
\label{table:3a}
\end{table}
\end{document}