Hat sich die Behandlung von Leerzeichen durch \alltt kürzlich (also seit 2021) geändert?

Hat sich die Behandlung von Leerzeichen durch \alltt kürzlich (also seit 2021) geändert?

nach dem Wechsel auf einen neuen Rechner (und der Installation eines aktuellen (2024) Texlive-Systems) fiel mir auf, dass das Layout in meinem Dokument an mehreren Stellen durcheinander geraten war. Nach einigem Experimentieren stellte sich heraus, dass dies an der Handhabung von Leerzeichen durch die alltt-Umgebung lag. Genauer gesagt:

  • Tabs werden offenbar in Leerzeichen umgewandelt, zuvor wurden sie ignoriert.
  • Wenn vor \end{alltt} Leerzeichen stehen, wird zwischen dem Code und dem folgenden Text eine zusätzliche Leerzeile eingefügt.

Als Beispiel:

 \begin{alltt}
[tab][tab] line 1
[tab] line 2
  \end{alltt}
More text

führte zuvor zu

line1
line2
More text

aber jetzt gibt es mir

  line1
 line2

More text

Ich habe versucht herauszufinden, warum und wann diese Änderung stattfand, konnte jedoch keinen Versionsverlauf oder ähnliches finden.

Ein Grund, warum ich das frage, ist, dass ich mich frage, ob das jedes Mal passieren kann, wenn ich meine Texlive-Installation aktualisiere. Ich dachte immer, dass der Code (zumindest für die grundlegenden Befehle) stabil sei oder zumindest stabil genug, um die Ausgabe von Dokumenten, die mit der vorherigen Version funktionierten, nicht zu ändern.

Antwort1

Die allttUmgebung sollte immer Leerzeichen am Zeilenanfang berücksichtigen, aber bis 2023 war dies nicht der Fall.Registerkarten.

Dies wurde in der Version 2023 behoben, sodass sich Tabs jetzt wie Leerzeichen verhalten.

Sie können zum alten Verhalten zurückkehren, dies sollte jedoch eine bewusste Entscheidung sein.

\documentclass{article}
\usepackage{alltt}
\usepackage{showframe}

\makeatletter
\AddToHook{env/alltt/begin}{\let\@xobeytab\relax}
\makeatother

\begin{document}

\begin{alltt}
                line 1
        line 2
  line 3
 line 4
\end{alltt}
More text

\end{document}

Hinweis: Die erste Zeile sollte zwei Tabulatoren am Anfang haben und die zweite nur einen Tabulator am Anfang (hier werden sie als mehrere Leerzeichen angezeigt).

Ich habe das doppelte Leerzeichen vor entfernt \end{alltt}, da es zu einer zusätzlichen Zeile führt. Rücken Sie wörtliche Umgebungen niemals ein, es sei denn, Sie möchten wirklich eine Einrückung in der Ausgabe.

Bildbeschreibung hier eingeben

Antwort2

Vor der Veröffentlichung im Herbst 2023 behielten Tabulatoren in verbatim-ähnlichen Kontexten ihr Standardverhalten bei: Sie wurden in normale Leerzeichen umgewandelt. Am Anfang einer Zeile bedeutete dies, dass sie ignoriert wurden. Seit der Veröffentlichung im Herbst 2023 werden Tabulatoren explizit von verbatim-ähnlichen Setups behandelt, sodass sie auf die gleiche Weise wie Leerzeichen gesteuert werden können. Das Standardverhalten folgt nun dem von Leerzeichen: Sie bleiben erhalten, daher die Änderung.

verwandte Informationen