Callback-Ersetzung des aktiven Zeichens

Callback-Ersetzung des aktiven Zeichens

Verwendung von LuaLaTeX, TeXlive 2024, Linux.

BEARBEITEN: Wie David in der akzeptierten Antwort geschrieben hat, ist hierfür kein Lua-Rückruf erforderlich. Ich werde die Frage jedoch stehen lassen, da andere Benutzer möglicherweise versuchen, etwas Ähnliches zu tun, ohne die vordefinierte Textdefinition für ".

Meine Anwendung beinhaltet Text (keine Mathematik oder Diagramme). Ich tausche reine Textdateien mit einem menschlichen Redakteur aus, und gelegentlich "kommt ein Fremdwort dazwischen. Die Anführungszeichen werden in englischen Dialogen häufig verwendet. Die Art und Weise, wie TeX sie behandelt, "unterscheidet sich von der Art und Weise, wie ein Textverarbeitungsprogramm (das vom Redakteur verwendet wird) sie behandelt.

TeX-Ligaturen werden immer "auf doppelte Anführungszeichen rechts gesetzt. Das ist nicht das, was ich will. Ich kann sie zwar "aus der tligListe entfernen, aber das reicht nicht. Ich will immer dann eine Nachricht schreiben, wenn sie auftritt. Dann soll sie an Ort und Stelle "bleiben (nicht in Anführungszeichen)."

Ich kann die Nachricht schreiben, indem ich "einen aktiven Charakter erstelle. Dann kann ich den "In-Place aber nicht verlassen, da er unendlich lang ist.

Ich kann das aktive "durch ein anderes Unicode-Zeichen ersetzen, das ich zu diesem Zweck erstellt habe und das eine Kopie von ist ". Dies löst das Problem (fast): Ich kann die Nachricht schreiben und wenn ich sie auf Papier drucke, sehe ich sie "dort. Aber da das Ersatzzeichen eigentlich kein "Roboter ist, kann es sein, dass der PDF-Inspektor es markiert. Das liegt außerhalb des Anwendungsbereichs von TeX.

Wenn ich mir den Code an verschiedenen Stellen anschaue, texmf-dist/tex/luatexsehe ich, dass es eine something.subMethode gibt, die Glyphensubstitution per Callback ermöglicht. Klingt nach dem, was ich brauche. Leider bin ich nicht gut genug als Programmierer, um zu verstehen, wie man sie benutzt.

MWE:

\documentclass{article} % compile with lualatex
\usepackage{fontspec}
\begin{document}
\catcode`\"=13 % straight double quotes now active.
\def"{\typeout{EEEEEK}º} % message, and subtitute with something else.
Hello, "World."\par
% I used the degree symbol as substitute character, because they have
% similar metrics in Latin Modern Roman. In my own usage, I use a different
% character, specifically created for the purpose (custom font).
% That character is identical to " but at a different Unicode location.
% At this point I would like to use a Lua callback for the finished paragraph,
% and revert the substitute back to ".
I said, "Hello," previously.
% Do it again.
\end{document}

Hinweis: Im Dokumenttext benötige ich keine "Verknüpfungen für Babel oder Polyglossia, für \char"HHHHMakros oder für Mathematik.

Obwohl die Verwendung von LuaLaTeX zur Zeichenersetzung bereits zuvor gefragt wurde, scheint keine der vorhandenen Fragen das Problem mit einem aktiven Zeichen zu behandeln.

Antwort1

LaTeX bietet einen Befehl zum Zugriff auf die geraden Anführungszeichen

Bildbeschreibung hier eingeben

\documentclass{article} % compile with lualatex
\usepackage{fontspec}
\begin{document}
\catcode`\"=13 % straight double quotes now active.
\def"{\typeout{EEEEEK}\textquotedbl} % message, and subtitute with something else.
Hello, "World."\par
% I used the degree symbol as substitute character, because they have
% similar metrics in Latin Modern Roman. In my own usage, I use a different
% character, specifically created for the purpose (custom font).
% That character is identical to " but at a different Unicode location.
% At this point I would like to use a Lua callback for the finished paragraph,
% and revert the substitute back to ".
I said, "Hello," previously.
% Do it again.
\end{document}

verwandte Informationen