LuaTeX hpack_filter-Rückruf wird bei bestimmten hlist-Erstellungen nicht ausgelöst

LuaTeX hpack_filter-Rückruf wird bei bestimmten hlist-Erstellungen nicht ausgelöst

BEARBEITEN: Der hpack_filter wird ausgelöst und meine Frage ist sinnlos. Lesen Sie in meiner Antwort, warum ich den Callback-Aufruf verpasst habe.

Ich verwende LuaTeX, um den Erstellungsprozess von mathematischen Ausdrücken in einem Dokument zu analysieren. Zu diesem Zweck verwende ich den mlist_to_hlistRückruf, um einen whatsitKnoten in die Knotenliste einzufügen. Wenn die mathematischen Ausdrücke durch das Packen verschiedener Knotenlisten in horizontale und vertikale Listen in ihre endgültige Form gebracht werden, greife ich mit hpack_filterund vpack_filterRückrufen auf diesen Prozess zu. Dadurch kann ich den Erstellungspfad vom Rohmathematikausdruck bis zur endgültigen Seite verfolgen.

Ich habe ein Problem mit einem bestimmten Teil dieses Prozesses. Es scheint, dass die Zeilen einer align-math-Umgebung der vertikalen Hauptliste als horizontale Listen mit einem bestimmten Untertyp hinzugefügt werden. Diese hlistKnoten haben den Untertyp 4, der in der LuaTeX-Dokumentation als „Ausrichtungsspalte oder -zeile“ beschrieben wird.

Mein Problem ist nun, dass die Erstellung genau dieser s nicht mit dem Callback hlistgefiltert wird . Für alle anderen Typen bekomme ich den erwarteten Aufruf von , für diese jedoch nicht. Für meine Zwecke reicht es bereits aus, die Eingabeargumente dieses Prozesses auf das Vorkommen bestimmter Knoten zu prüfen und dann das Packen komplett abzubrechen. Das Ziel ist, diesen Inhalt nicht in die Hauptvertikalliste übertragen zu lassen.hpack_filterhlisthpack_filterwhatsit

Dies führt zu meinemFragen:

  • Warum wird hpack_filterzur Erstellung kein hlistmit Subtyp 4 aufgerufen?
  • Ist es möglich, ein solches Verhalten zu aktivieren oder auf andere Weise einen gleichwertigen Rückrufmechanismus zu erhalten?

Antwort1

Beim Überprüfen der Knotenliste, die als Argumente für die hpack_filterRückrufe angegeben wurden, ist mir nicht aufgefallen, dass das Eingabeargument unsetKnoten enthielt. Meiner Meinung nach \halignwird eine Ausrichtung (die durch den TeX-Befehl generiert wird) von LuaTeX wie folgt behandelt:

  1. Durch eine Reihe von hpackAufrufen mit Argumenten groupcode == align_setwerden die Eingabeknotenlisten in das headKnotenfeld gepackt unset.
  2. Diese unsetKnoten (mit glueKnoten und möglicherweise anderem Zeug) werden dann in einen hlistKnoten mit Subtyp 4 gepackt. Die Knotenlisten, die sich in den headFeldern der unsetKnoten befanden, sind immer noch vorhanden, aber jetzt in headFeldern von hlistKnoten mit Subtyp 5. Dieses Packen geschieht in einem hpackAufruf mit dem Argument groupcode == fin_row.Dies ist genau der Teil, den ich vermisst habe und nach dem ich gefragt habe.

Das habe ich herausgefunden, indem ich mir die Zwischenknotenlisten angesehen habe, und es ist meine eigene Meinung. Diese Information ist bisher im LuaTeX-Handbuch (Version 0.76) nicht zu finden und unsetKnoten werden kaum erwähnt. Dass sie ein headFeld haben, habe ich aus dem LuaTeX-Quellcode abgeleitet.

verwandte Informationen