Reemplazo de devolución de llamada del carácter activo

Reemplazo de devolución de llamada del carácter activo

Usando LuaLaTeX, TeXlive 2024, Linux.

EDITAR: Como escribió David, en la respuesta aceptada, esto no requiere devolución de llamada de Lua. Pero dejaré la pregunta, porque otros usuarios pueden intentar hacer algo similar, sin la definición de texto preexistente para ".

Mi aplicación involucra texto (no matemáticas ni diagramas). Intercambio archivos de texto sin formato con un editor humano y, de vez en cuando, "entra alguno perdido. Las comillas dobles se utilizan ampliamente en los diálogos en inglés. La forma en que TeX los trata "es diferente de la forma en que los trata un procesador de textos (utilizado por el editor).

Las ligaduras TeX siempre se establecen "entre comillas dobles del lado derecho. No es lo que quiero. Aunque puedo eliminarlo "de la tliglista, eso no es suficiente. Lo que quiero hacer es escribir un mensaje cada vez que "lo encuentre. Luego, déjalo en su "lugar (no rizado).

Puedo escribir el mensaje creando "un carácter activo. Pero entonces no puedo dejar el "lugar, porque corre hasta el infinito.

Puedo sustituir el activo "por un carácter Unicode diferente, creado por mí para ese fin, que es una copia de ". Esto resuelve el problema (casi): puedo escribir el mensaje y, cuando lo imprimo en papel, lo veo "allí. Pero como el carácter sustituto no es en realidad "un robot, el inspector de PDF puede marcarlo. Eso está fuera del alcance de TeX.

Al mirar el código en varias partes de, texmf-dist/tex/luatexveo que hay un something.submétodo que permite la sustitución de glifos mediante devolución de llamada. Suena como lo que necesito. Por desgracia, no soy lo suficientemente programador para discernir cómo usarlo.

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}

Nota: En el cuerpo del documento, no necesito "atajos de Babel o Polyglossia, ni \char"HHHHmacros, ni matemáticas.

Aunque ya se ha preguntado antes sobre el uso de LuaLaTeX para la sustitución de caracteres, ninguna de las preguntas existentes parece abordar el problema con un carácter activo.

Respuesta1

LaTeX proporciona un comando para acceder a las comillas rectas

ingrese la descripción de la imagen aquí

\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}

información relacionada