LuaLaTeX 명령에 선행 문자 전달

LuaLaTeX 명령에 선행 문자 전달

문자를 활성/민감하게 만들고 이전 문자를 일부 명령의 인수로 전달하고 싶습니다. 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")}

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

관련 정보