这是siunitx 使用数学模式来表示符号 - 当对数学和文本使用不同的字体时需要解决方法。
esttab
感谢 David,问题已经解决,但是Stata生成的表格仍然存在问题。Esttab 通过新定义的\sym
命令(即)输入星号\sym{*}
。由于我已重新定义为纯文本,因此没有必要这样做\sym
,但 esttab 没有提供省略该命令的选项\sym
。
问题是 siunitx 无法将其识别\sym
为输入符号,结果是水平盒子溢出,如下面的 MWE 所示。我的问题是如何指定\sym{*}
和\sym{**}
作为\sym{***}
siunitx 的输入符号,因为我想避免破解 esttab 插件(顺便说一句,这个问题不是 pdfLaTeX 或 XeLaTeX 特有的)。
\documentclass{scrartcl}
\usepackage{booktabs}
\usepackage[osf]{mathpazo}
\usepackage[euler-digits]{eulervm}
\overfullrule=5pt
% For Tables created by estout
\newcommand{\sym}[1]{#1} % for symbols in Table
\usepackage{siunitx}
\sisetup{ detect-mode,
group-digits = false ,
input-signs = ,
input-symbols = ()[]-+* , % specifying \sym here does not work
input-open-uncertainty = ,
input-close-uncertainty = ,
table-align-text-post = false
}
\def\xxx#1{%
\bgroup\uccode`\~\expandafter`\string#1%
\uppercase{\egroup\edef~{\noexpand\text\string#1}}%
\mathcode\expandafter`\string#1"8000 }
\def\textsymbols{\xxx[\xxx]\xxx(\xxx)\xxx*}
\begin{document}
{\textsymbols
\begin{tabular*}{0.75\textwidth}{
l @{\extracolsep\fill} *{2}{S[table-format=4.6]} @{}}
\toprule
\multicolumn{1}{@{}l}{\emph{Age}} \\[0.5ex]
18--24 & [-1360.228]* & -1371.941\sym{*} \\
& (6.915)\sym{**} & (-7.953)** \\
\bottomrule
\end{tabular*}}
\end{document}
答案1
\newcommand{\sym}[1]{\rlap{$#1$}} % for symbols in Table
适用于该示例,因为符号始终位于列的右边缘,否则我需要查看周末以查看 siuintx 对其符号列表的操作。
答案2
如果你像我一样遇到星星与下一列重叠的问题,请重写 David 的代码行以读取
\newcommand{\sym}[1]{{#1}} % for symbols in Table
它会将星星放在上标中,并将右侧的下一列推过去以腾出空间。