siunitx:指定自定义命令作为输入符号

siunitx:指定自定义命令作为输入符号

这是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

它会将星星放在上标中,并将右侧的下一列推过去以腾出空间。

相关内容