我有以下代码:
\documentclass{standalone}
\usepackage{siunitx}
\usepackage{tabu}
\usepackage{lmodern}
\usepackage{textcomp}
\begin{document}
\begin{tabu}{rS}
US & \$5.00\\
CAN & \$6.50\\
UK & \textsterling4.00\\
EU & \texteuro4.50\\
\end{tabu}
\end{document}
但是,尝试编译它会出现以下错误:
! Extra }, or forgotten \endgroup.
\__siunitx_table_column_end:n ...ne_fill_skip -#1}
\tex_kern:D \c_zero_skip \...
l.14 \end{tabu}
?
答案1
这些命令不够强大/保护性,因此siunitx
“认为”它们代表可扩展的内容。因此,尝试扩展它们会导致问题。您最好让它们具有引擎鲁棒性:
\documentclass{standalone}
\usepackage{siunitx}
\usepackage{tabu}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage{etoolbox}
\robustify\textsterling
\robustify\texteuro
\begin{document}
\begin{tabu}{rS}
US & \$5.00\\
CAN & \$6.50\\
UK & \textsterling4.00\\
EU & \texteuro4.50\\
\end{tabu}
\end{document}
你可能还想进行强化\$
,以便所有标记的解释都是相同的,并告诉siunitx
数字和数字前部分的间距
\documentclass{standalone}
\usepackage{siunitx}
\usepackage{tabu}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage{etoolbox}
\robustify\$
\robustify\textsterling
\robustify\texteuro
\begin{document}
\begin{tabu}{rS[table-format = 1.2, table-space-text-pre = \textsterling]}
US & \$5.00\\
CAN & \$6.50\\
UK & \textsterling4.00\\
EU & \texteuro4.50\\
\end{tabu}
\end{document}
“隐藏”输入标记也会起作用,但代价是阅读起来会稍微不那么“愉快”。
\documentclass{standalone}
\usepackage{siunitx}
\usepackage{tabu}
\usepackage{lmodern}
\usepackage{textcomp}
\begin{document}
\begin{tabu}{rS[table-format = 1.2, table-space-text-pre = \textsterling]}
US & {\$}5.00\\
CAN & {\$}6.50\\
UK & {\textsterling}4.00\\
EU & {\texteuro}4.50\\
\end{tabu}
\end{document}
这告诉包内容是文本,因此不是数字的一部分。
最好使用单独的列来表示该单元
\documentclass{standalone}
\usepackage{siunitx}
\usepackage{tabu}
\usepackage{lmodern}
\usepackage{textcomp}
\begin{document}
\begin{tabu}{rl@{}S}
US & \$ & 5.00\\
CAN & \$ & 6.50\\
UK & \textsterling & 4.00\\
EU & \texteuro & 4.50\\
\end{tabu}
\end{document}
你可能还应该告诉包有多少位数字
\documentclass{standalone}
\usepackage{siunitx}
\usepackage{tabu}
\usepackage{lmodern}
\usepackage{textcomp}
\begin{document}
\begin{tabu}{rl@{}S[table-format = 1.2]}
US & \$ & 5.00\\
CAN & \$ & 6.50\\
UK & \textsterling & 4.00\\
EU & \texteuro & 4.50\\
\end{tabu}
\end{document}