Latex3: xparse: frisst Leerzeichen, während nach nicht bereitgestelltem, nachgestelltem optionalem Argument gesucht wird

Erstellt am 8. Juli 2018  ·  6Kommentare  ·  Quelle: latex3/latex3

Hi,

Bei mehr oder weniger neuer xparse ist eine Funktionsdefinition wie
\NewDocumentCommand \foobar { m o } { ... }
führt zu seltsamem Verhalten, wenn \foobar ohne das optionale Argument aufgerufen wird. Das seltsame Verhalten ist, dass (mindestens) das folgende Leerzeichen gefressen wird. Dies geschah nicht in TL 2016 (Debian Stretch), aber in TL 2018 (Debian unstable, xparse 2018-04-30; ich habe auch xparse.sty 2018-05-12 zum Testen manuell hinzugefügt, gleiches Problem). Hier ist ein MWE:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xparse}
\usepackage{expl3}

\ExplSyntaxOn

\NewDocumentCommand \foobar { m o }
  { #1 -#2- }

\ExplSyntaxOff

\begin{document}
Hell\foobar{o} .
\end{document}

Beachten Sie, dass sich zwischen \foobar{o} und dem folgenden Punkt ein Leerzeichen befindet. In TL 2018 (Debian unstable, xparse 2018-04-30, und auch mit manuell hinzugefügtem xparse.sty 2018-05-12) enthält die resultierende PDF-Datei nach dem Ausführen von pdflatex Hello—NoValue—. (es ist kein Leerzeichen vor dem Zeitraum). In TL 2016 (Debian Stretch, auch bekannt als "stable") ist die Ausgabe jedoch das, was ich erwartet hatte, nämlich Hello—NoValue— . (ein Leerzeichen vor dem Punkt).

Vielen Dank!

bug expl3 xparse

Alle 6 Kommentare

Wir wissen davon, und es wird daran gearbeitet.

Es gab eine bewusste Änderung im Umgang mit nachgestellten optionalen Argumenten: Dies hängt damit zusammen, dass das Überspringen von Leerzeichen in einigen Fällen deaktiviert werden muss. Wenn jedoch Befehle mit abschließenden optionalen Argumenten _im Dokumentkörper_ verwendet werden, zeigt dies ein Problem mit den expl3 peek Funktionen: Sie fügen 'übersprungene' Leerzeichen nicht wieder ein, wenn keine Übereinstimmung gefunden wird. Wir sortieren derzeit eine geeignete Syntax, um peek Funktionen zu erweitern, um damit umzugehen.

(In LaTeX2e sind die einzigen Befehle mit abschließenden optionalen Argumenten für die Präambel vorgesehen, sodass sich die Frage nach dem Umgang mit diesem Szenario nicht stellt.)

Ich würde erwarten, beim TUG2018-Treffen Ende nächster Woche etwas Konkretes zu klären.

Vielen Dank für Ihre Antwort, schön zu sehen, dass das Problem so genau unter die Lupe genommen wird. :)

@blefloch überprüft und denkt über die Low-Level-Support-Probleme hier nach.

Ich habe die Low-Level-Probleme mit peek gelöst, aber ich begehe eine Lösung in xparse .

Vielen Dank, dass Sie das behoben haben!

Hi,

Ich bestätige, dass das Problem nach der Installation des neuesten l3kernels und der neuesten l3Pakete von CTAN verschwunden ist. Ich danke dir sehr!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

bastien-roucaries picture bastien-roucaries  ·  19Kommentare

dbitouze picture dbitouze  ·  4Kommentare

dbitouze picture dbitouze  ·  8Kommentare

EvanAad picture EvanAad  ·  49Kommentare

dbitouze picture dbitouze  ·  3Kommentare