
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- luacode
Paket 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")}
aæ
bæ
\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 aa
der zweite a
fett 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.
% !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}