
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, xparse
werden 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 xparse
lange/kurze Argumente Argument für Argument behandelt werden, anstatt sie alle auf einmal umzuschalten.