![如何計算表達式並在 newcommand 中使用結果?](https://rvso.com/image/392316/%E5%A6%82%E4%BD%95%E8%A8%88%E7%AE%97%E8%A1%A8%E9%81%94%E5%BC%8F%E4%B8%A6%E5%9C%A8%20newcommand%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%B5%90%E6%9E%9C%EF%BC%9F.png)
我正在嘗試聲明一個新命令
\newcommand{\seq}[3]{#1_#2, #1_{#2 + 1} \cdots ,#1_#3}
$v_0, v_1, \cdots, v_N$
我想要的基本上是透過呼叫 來列印序列,\seq{v}{0}{N}
但它正在列印$v_0, v_{0+1}, \cdots, v_N$
。基本上,我想評估並使用 expression 的結果#2 + 1
。
我該怎麼做?
答案1
答案2
這檢查是否#2
為(無符號)整數,並在這種情況下執行操作;否則它只是附加+1
.
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\seq}{mmm}
{
\chelsea_seq:nnn { #1 } { #2 } { #3 }
}
\cs_new_protected:Nn \chelsea_seq:nnn
{
#1\sb{#2}, % first item
\regex_match:nnTF { \A [0-9]+ \Z } { #2 }
{% #2 is a number
#1\sb{ \int_eval:n { #2 + 1 } }
}
{% #2 is not a number
#1\sb{ #2+1 }
}
,\dots,#1\sb{#3}
}
\ExplSyntaxOff
\begin{document}
$\seq{v}{0}{N}$
$\seq{v}{1}{N}$
$\seq{w}{n}{N}$
\end{document}