在 Latex 中编写新命令

在 Latex 中编写新命令

我想在下面的新命令中写入此命令

\numrange[⟨options⟩]{⟨numbers⟩}{⟨number2⟩}

我想这样写

\nums{number - number}

或类似的东西

例如, \numrange[⟨options⟩]{20}{30} 新命令将类似于 \nums{20-30}

输出: 20-30

答案1

ltcmd您可以使用/内置的参数处理器xparse

\documentclass{article}

\NewDocumentCommand \nums { O{} >{\SplitArgument{1}{-}}m }
  {\numrange[{#1}]#2}

\newcommand\numrange[3][]{from #2 to #3}

\begin{document}
\nums{3-10}
\end{document}

在此处输入图片描述

如果你确实在使用,siunitx你可以考虑使用它:

\documentclass{article}

\usepackage{siunitx}

\ExplSyntaxOn
\NewDocumentCommand \nums { O{} >{\SplitArgument{1}{-}}m }
  {
    \group_begin:
      \keys_set:nn { siunitx } {#1}
      \siunitx_number_range:nn #2
    \group_end:
  }
\ExplSyntaxOff

\begin{document}
\nums{3-10}
\end{document}

答案2

恕我直言,\defprimitive 是解决您的问题的正确工具。

\def\nums #1{\numsA #1;}
\def\numsA #1-#2;{from #1 to #2}

test: \nums{3-10}

相关内容