我必须创建一个表格,其中标题为数学符号,正文为数字。我想将所有数字与小数点对齐。为此,我使用了 siunitx 包。问题是,由于标题,我收到“缺少 $ 插入”错误,尽管所有 $ 都在正确的位置。有人能帮助我吗?
以下是 MWE:
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{table}
\centering
\begin{tabular}{*7S[table-format=-3.2]}
\toprule
$\varphi$ & a & $\xi$ & $\alpha$ & $\beta$ & $\dot{W}^{M1}$ & $\dot{W}^{M2}$ \\
\midrule
0.00 & 45.00 & 22.48 & 0.02 & 0.17 & 250.00 & 250.00 \\
1.00 & 45.50 & 52.21 & 44.82 & 38.39 & 236.86 & 236.72 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
谢谢
答案1
列标题S
应该用括号括起来,除非它们是\multicolumn
。
在某些情况下,siunitx
包能够恢复缺少的括号,但在整个过程中添加它们要容易得多。
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{table}
\centering
\begin{tabular}{@{}S[table-format=1.2]
*{4}{S[table-format=2.2]}
*{2}{S[table-format=3.2]}@{}}
\toprule
{$\varphi$} & {a} & {$\xi$} & {$\alpha$} & {$\beta$} & {$\dot{W}^{M1}$} & {$\dot{W}^{M2}$} \\
\midrule
0.00 & 45.00 & 22.48 & 0.02 & 0.17 & 250.00 & 250.00 \\
1.00 & 45.50 & 52.21 & 44.82 & 38.39 & 236.86 & 236.72 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
一般而言,输入诸如$\dot{W}^{M1}$
是完全合法的,并且不会对 产生任何影响${\dot{W}}^{M1}$
,这与其他答案所说的相反。这里的问题有所不同,最好使用外括号来解决。
答案2
-columntypeS
来自siunitx
,您当然已经知道了。它会尝试解析在每个单元格中找到的数字。因此,当它找到一些文本(如您的 toprow 中)时,它也会尝试解析该文本。通过在{}
每个标题文本周围放置花括号来解决这个问题。请注意,siunitx
这有点智能,因此只有那些可能被误认为是数字的文本才需要保护。这可以在siunitx
-manual 部分中看到4.6 表格材料
如果材料可能被误认为是数字的一部分,则应该用括号保护起来。
代码
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{table}
\centering
\begin{tabular}{*7S[table-format=-3.2]}
\toprule
$\varphi$ & {a} & $\xi$ & $\alpha$ & $\beta$ & ${\dot{W}^{M1}}$ & ${\dot{W}^{M2}}$ \\ \\
\midrule
0.00 & 45.00 & 22.48 & 0.02 & 0.17 & 250.00 & 250.00 \\
1.00 & 45.50 & 52.21 & 44.82 & 38.39 & 236.86 & 236.72 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案3
您收到“缺少 $ 插入”错误消息的原因是siunitx
无法正确解析术语$\dot{W}^{M1}$
。$\dot{W}^{M2}$
正如所写,这些术语满足 LaTeX 自己的数学公式语法规则。请参阅以下段落,了解有助于解析器的修改siunitx
。
一种解决方案是将术语括在花括号中,从而有效地将它们隐藏在siunitx
的解析器中。第二种解决方案是将两个\dot{W}
术语括在花括号中,即分别写为${\dot{W}}^{M1}$
和${\dot{W}}^{M2}$
。使用此方法,无需将完整的术语括在花括号中 -siunitx
正确解析它们,它们将自动居中。
顺便说一句,列规范*7S[table-format=-3.2]
并不是真正最佳的,因为(例如)没有一个数字带有减号(或加号)。如果您想要间距适当(且居中)的列,则值得为第 1 列、第 2-5 列以及第 6 列和第 7 列指定不同的格式,就像下面的代码中使用的一样。
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{table}
\centering
\begin{tabular}{@{}S[table-format=1.2]
*{4}{S[table-format=2.2]}
*{2}{S[table-format=3.2]}@{}}
\toprule
$\varphi$ & a & $\xi$ & $\alpha$ & $\beta$ & ${\dot{W}}^{M1}$ & ${\dot{W}}^{M2}$ \\
\midrule
0.00 & 45.00 & 22.48 & 0.02 & 0.17 & 250.00 & 250.00 \\
1.00 & 45.50 & 52.21 & 44.82 & 38.39 & 236.86 & 236.72 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}