Vorangehendes Zeichen an einen Befehl übergeben LuaLaTeX

Vorangehendes Zeichen an einen Befehl übergeben LuaLaTeX

Ich möchte ein Zeichen aktiv/sensitiv machen und sein vorangehendes Zeichen als Argument eines Befehls übergeben. Ich könnte dies mit der LuaLaTeX-Engine und dem LuaLaTeX- luacodePaket tun. DankDasUndDasPost.

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{luacode}
\begin{luacode}
function myligs ( s )
   s = unicode.utf8.gsub ( s , '(\\?)([%a@]+)' , function( backslash, text )
       if backslash=='' then 
           text = unicode.utf8.gsub(text, '(.)(æ)', '%1%\\textbf{%1}' )  
       end
       return backslash .. text
   end)
   return s
end
\end{luacode}

\begin{document}
\directlua{luatexbase.add_to_callback("process_input_buffer", myligs, "myligs")}

\end{document}

aber dies scheint mit abhängigen diakritischen Zeichen nicht zu funktionieren. Siehe das folgende Beispiel -

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{luacode}
\begin{luacode}
function myligs ( s )
   s = unicode.utf8.gsub ( s , '(\\?)([%a@]+)' , function( backslash, text )
       if backslash=='' then 
           text = unicode.utf8.gsub(text, '(.)(◌́)', '%1%\\textbf{%1}' )  
       end
       return backslash .. text
   end)
   return s
end
\end{luacode}

\begin{document}
\directlua{luatexbase.add_to_callback("process_input_buffer", myligs, "myligs")}

a◌́
\end{document}

Wahrscheinlich wird das abhängige diakritische Zeichen nicht auf die gleiche Weise interpretiert wie ein normales Zeichen. Kann mir bitte jemand erklären, was genau im zweiten Code falsch ist? Ich möchte, dass die Ausgabe beider Codes identisch ist, d. h. dass aader zweite afett gedruckt ist.

Antwort1

Abhängige diakritische Zeichen sind etwas Besonderes; ich gehe davon aus, dass sie nie in den Namen von LaTeX-Befehlen und -Umgebungen vorkommen. Wenn diese Annahme richtig ist, ist das in Ihrem Code verwendete zweistufige gsub-Verfahren nicht erforderlich.

Der folgende Code geht davon aus, dass das Zeichen unmittelbar vor dem abhängigen diakritischen Zeichen ein alphabetisches Zeichen ( %a) ist.

Bildbeschreibung hier eingeben

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{fontspec}
\usepackage{luacode}
\begin{luacode}
function makebold ( s )
   return ( unicode.utf8.gsub ( s , '(%a)◌́' , '%1\\textbf{%1}' ) )
end
\end{luacode}

\begin{document}
a◌́

% Assign 'makebold' to 'process_input_buffer' callback:
\directlua{luatexbase.add_to_callback("process_input_buffer", makebold, "makebold")}

a◌́
\end{document}

verwandte Informationen