Wie wertet man einen Ausdruck aus und verwendet das Ergebnis in einem neuen Befehl?

Wie wertet man einen Ausdruck aus und verwendet das Ergebnis in einem neuen Befehl?

Ich versuche, einen neuen Befehl zu deklarieren

\newcommand{\seq}[3]{#1_#2, #1_{#2 + 1} \cdots ,#1_#3}

$v_0, v_1, \cdots, v_N$Ich möchte die Sequenz grundsätzlich durch Aufrufen ausdrucken, \seq{v}{0}{N}aber sie wird gedruckt $v_0, v_{0+1}, \cdots, v_N$. Grundsätzlich möchte ich das Ergebnis des Ausdrucks auswerten und verwenden #2 + 1.

Wie werde ich das machen?

Antwort1

Ihr Ziel ist leicht zu erreichen, wenn Sie LuaLaTeX verwenden können.

Bildbeschreibung hier eingeben

% !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}

Antwort2

Dies prüft, ob #2es sich um eine (vorzeichenlose) Ganzzahl handelt und führt in diesem Fall die Operation aus; andernfalls wird einfach angehängt +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}

Bildbeschreibung hier eingeben

verwandte Informationen