让 latex 接受来自某个包的命令

让 latex 接受来自某个包的命令

\num我希望 pdflatex从包中获取命令siunitx,但该命令似乎已经在stata可获得的包中定义(不幸的是,如果你没有 stata,则以复杂的方式)http://repec.sowi.unibe.ch/stata/texdoc/index.html(我会在 github repo 中提供整个 sty 文件,但我不知道 Stata ToS 或 Ben Jann 是否允许这样做,所以,对此我很抱歉。)

主要问题

如何告诉 LaTeX 采取\numfrom的定义siunitx.sty而不改变stata.sty(例如,直接删除该行stata.sty,虽然可以立即解决问题,但稍后我可能在另一个文档中需要该定义)欢迎其他任何建议性评论。

这是 MWE,期望的输出和错误的输出:

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{stata} % <--- deactivate to get desired output
\usepackage{siunitx}

\begin{document}
    \begin{align*}
        P(x \leq 2) & = \num{1e-9} + \num{8.1e-8} 
    \end{align*}

    \num{1e-9}
\end{document}

什么应该看起来像

期望输出方程

什么看起来像

电流输出方程

我收到的错误(日志文件)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! LaTeX error: "xparse/command-already-defined"
! 
! Command '\num' already defined!
! 
! See the LaTeX3 documentation for further information.
! 
! For immediate help type H <return>.
!...............................................  

l.7289 }

|'''''''''''''''''''''''''''''''''''''''''''''''
| You have used \NewDocumentCommand with a command that already has a
| definition.
| The existing definition of '\num' will not be altered.
|...............................................

和(texstudio中的错误列表)

LaTeX error: "xparse/command-already-defined" Command '\num' already defined! For immediate help type H <return>. }

\num的定义siunitx.sty

\NewDocumentCommand \num { o m } {
  \leavevmode
  \group_begin:
    \bool_set_false:N \l__siunitx_font_set_bool
    \IfNoValueF {#1}
      { \keys_set:nn { siunitx } {#1} }
    \__siunitx_number_output:n {#2}
  \group_end:
}

和相同的定义stata.sty

\def\num{{\it \#\/}}

注释:我知道该命令\it已被弃用,因为程序告诉我,如果我反转包stata和的加载顺序siunitx,但这是另一回事,我需要与 Jann 博士讨论

相关内容