![표현식을 평가하고 newcommand에서 결과를 사용하는 방법은 무엇입니까?](https://rvso.com/image/392316/%ED%91%9C%ED%98%84%EC%8B%9D%EC%9D%84%20%ED%8F%89%EA%B0%80%ED%95%98%EA%B3%A0%20newcommand%EC%97%90%EC%84%9C%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%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}