![Как оценить выражение и использовать результат в newcommand?](https://rvso.com/image/392316/%D0%9A%D0%B0%D0%BA%20%D0%BE%D1%86%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B8%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%20%D0%B2%20newcommand%3F.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$
. По сути, я хочу оценить и использовать результат выражения #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}