expl3 par und Sequenzen

expl3 par und Sequenzen

Nachdem ich expl3 erkundet hatte, habe ich einen Teil meines Codes entsprechend aktualisiert und bin auf ein interessantes Problem gestoßen, mit dem ich nicht gerechnet hatte.

Ich erhalte einen seltsamen Fehler, der meiner Meinung nach daher kommt, dass ich versuche, mehrere Absätze in einer Sequenz zu speichern. Im Handbuch von interface3 habe ich nichts gefunden. Kennt jemand einen Weg, das zu umgehen?

Für alle, die interessiert sind, habe ich unten meine alte Methode und meine neue Testmethode zur variablen Speicherung aufgeführt.

Hier ist mein alter Code.

\newcommand{\@supernote}{}
\newcommand{\supernote}[1]{\renewcommand\@supernote{#1}}

Und hier ist mein neuer Code.

\seq_new:N \itemsupernote
\NewDocumentCommand{\supernote}{sm} {
    \seq_put_right:Nn \itemsupernote {#2}
}

Der Aufruf der Funktion funktioniert für beide gleich

\supernote{Here is my example

and here is the other half}

Hier ist mein Fehler für die neue Methode, falls es hilft.

runaway argument? {here is my example Paragraph ended before \supernote was omplete.
<to be read again> \par l.109 

Antwort1

Das Problem liegt nicht in der Codeebene (die komplett „lang“ ist), sondern in der Einrichtung Ihrer Schnittstelle. Da Dokumentbefehle häufiger nur kurze Textstücke annehmen sollen, xparsewerden standardmäßig „kurze“ Befehle erstellt. Um ein Argument „lang“ zu machen, müssen Sie es als solches mit einem+

\NewDocumentCommand \supernote { s +m }
  {
    \seq_put_right:Nn \itemsupernote {#2}
  }

Beachten Sie, dass xparselange/kurze Argumente Argument für Argument behandelt werden, anstatt sie alle auf einmal umzuschalten.

verwandte Informationen