
문자를 활성/민감하게 만들고 이전 문자를 일부 명령의 인수로 전달하고 싶습니다. LuaLaTeX 엔진과 패키지를 사용하면 가능합니다 luacode
. 덕분에이것그리고이것우편.
% !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}
그러나 이것은 종속 발음 구별 문자에서는 작동하지 않는 것 같습니다. 다음 예를 참조하십시오 -
% !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}
아마도 종속 구별 부호는 일반 문자와 같은 방식으로 해석되지 않을 것입니다. 누군가 두 번째 코드에서 정확히 무엇이 잘못되었는지 설명해 주시겠습니까? 나는 이 두 코드의 출력이 동일하기를 원합니다 . aa
즉, 두 번째 코드 a
는 굵게 표시됩니다.
답변1
종속 발음 구별 문자는 다소 특별합니다. 나는 LaTeX 명령과 환경의 이름 내에서는 결코 발생하지 않는다고 가정할 것입니다. 이 가정이 맞다면 코드에 2단계 gsub 절차를 사용할 필요가 없습니다.
다음 코드에서는 종속 발음 구별 문자 바로 앞의 문자가 알파벳 문자( %a
)라고 가정합니다.
% !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}