如何实现 luabidi 以便我可以在 XeLaTeX 中使用 luacode

如何实现 luabidi 以便我可以在 XeLaTeX 中使用 luacode

我想使用以下内容luacode(来自这个帖子):

\usepackage{luacode}
\begin{luacode*}

function replace_punc ( buff )
   if string.find ( buff , "\\gla" ) then
      buff = string.gsub ( buff , " (``)" ,
             "\\nogloss{%1} @ " )
      buff = string.gsub ( buff, "([:.,;'!?]+)( )" ,
          " @ \\nogloss{%1}%2" )

   end
   return ( buff )
end

luatexbase.add_to_callback ( "process_input_buffer", replace_punc, "replace_punc" )
\end{luacode*}

其目的是实现自动化\nogloss

它适用于LuaLaTeX,但我的整个文档都是用 设置的polyglossia,这与 不兼容。@alanmunn 提到,如果我使用包LuaLaTeX,上述代码可以与 一起使用。我尝试过 ,但没有成功。XeLaTeXluabidiluabidi

我希望上述代码能够XeLaTex与以下 MWE 一起工作:

\documentclass{book}

\usepackage{expex}
\usepackage{polyglossia}
\usepackage{fontenc}
\setdefaultlanguage{english}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{FrankRuehl}
\newfontfamily\englishfont{Linux Libertine O}

\lingset{everygla=\Large,glwordalign=center}

\begin{document}
\begin{hebrew}

\begingl
  \gla "שלום {קוראים לי} דוד." //
  \glb shalom \textenglish{korim li} david//
  \glc Hello \textenglish{my name is} David//
\endgl

\begingl
  \gla "מה נשמע דוד?" //
  \glb ma nishma david //
  \glc what \textenglish{is heard} David //
\endgl

\begingl
  \gla "יום טוב!" //
  \glb yom tov //
  \glc day good //
\endgl

\end{hebrew}
\end{document}

答案1

你的问题没什么意义。luacode 只能在 luatex 中工作。绝对不可能让它与 xelatex 一起工作。

\luatexpardir如果我添加一些代码来获取你的文档,它会用 lualatex 为我编译\luatextextdir(见https://tex.stackexchange.com/a/273303/2388)。我还必须更改字体。

但是我不知道 bidi 代码与 lualatex 配合得如何,因为我看不懂希伯来语。

\directlua{
tex.enableprimitives("luatex",tex.extraprimitives("omega","luatex"))
}

\documentclass{book}

\usepackage{expex}
\usepackage{polyglossia}
\usepackage{fontenc}
\setdefaultlanguage{english}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{EzraSIL}
\newfontfamily\englishfont{Linux Libertine O}

\lingset{everygla=\Large,glwordalign=center}

\begin{document}
\begin{hebrew}

\begingl
  \gla "שלום {קוראים לי} דוד." //
  \glb shalom \textenglish{korim li} david//
  \glc Hello \textenglish{my name is} David//
\endgl

\begingl
  \gla "מה נשמע דוד?" //
  \glb ma nishma david //
  \glc what \textenglish{is heard} David //
\endgl

\begingl
  \gla "יום טוב!" //
  \glb yom tov //
  \glc day good //
\endgl

\end{hebrew}
\end{document}

相关内容