표현식을 평가하고 newcommand에서 결과를 사용하는 방법은 무엇입니까?

표현식을 평가하고 newcommand에서 결과를 사용하는 방법은 무엇입니까?

새 명령을 선언하려고 합니다.

\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

LuaLaTeX를 사용할 수 있다면 목표는 달성하기 쉽습니다.

여기에 이미지 설명을 입력하세요

% !TEX TS-program = lualatex
\documentclass{article}  
\newcommand{\seq}[3]{#1_{#2}, #1_{\directlua{tex.sprint(#2+1)}}, \dots ,#1_{#3}}
\begin{document}
$\seq{v}{0}{N}$
\end{document}

답변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}

여기에 이미지 설명을 입력하세요

관련 정보