我完全不知道如何让 LuaLaTeX 输出希腊文本。我在 TeXlive 2009 (Linux) 和 TeXlive 2011 (Win32) 上用 PDFLaTeX 和 LuaLaTeX 测试了以下 MWE,在这两种情况下,PDFLaTeX 都产生了预期的输出,而 LuaLaTeX 似乎吞噬了希腊文本,然后什么也没做。
\documentclass{minimal}
% Use LGRx if installed else LGR.
% Forcing one or the other makes no difference either.
\IfFileExists{lgrxenc.def}{%
\usepackage[LGRx,T1]{fontenc}}{%
\usepackage[LGR,T1]{fontenc}}
%\fi
\usepackage{lmodern,trace,ifluatex}
\usepackage[greek,british]{babel}
\unless\ifluatex
\usepackage[utf8]{inputenc}
\fi
\begin{document}
% pdflatex: OK.
%lualatex: "τρίγωνον" is missing from the output,
% and the sum total of output from \traceon is this:
% {into \tracingonline=1}
% {the character τ}
% {end-group character }}
Triangle: \textgreek{\traceon τρίγωνον}.
\end{document}
答案1
如果您想使用希腊语的原始 CB 字体,那么有一种方法可以解决,但您需要有lgrenc.dfu
,因此我假设它与它的兄弟字体一起可用lgrxenc.def
:
\documentclass{minimal}
\usepackage[LGRx,T1]{fontenc}
\usepackage{lmodern,ifluatex}
\usepackage[greek,british]{babel}
\ifluatex
\let\LtxDeclareUnicodeCharacter\DeclareUnicodeCharacter
\def\DeclareUnicodeCharacter#1{%
\catcode\string"#1=\active
\begingroup
\lccode`~=\string"#1\relax
\lowercase{\endgroup
\protected\def~}}
\input{lgrenc.dfu}
\let\DeclareUnicodeCharacter\LtxDeclareUnicodeCharacter
\else
\usepackage[utf8]{inputenc}
\fi
\begin{document}
Triangle: \textgreek{τρίγωνον}.
\end{document}
我使用 LuaLaTeXlgrenc.dfu
来达到不同的目的,即激活希腊字符并将它们定义为所需的含义。
但是在这种情况下,我看不出使用 LuaLaTeX 的优势。
答案2
我不能 100% 确定我理解您正在加载的所有包,但我认为这是 LuaTeX 的方式:
\documentclass{minimal}
\usepackage[greek,british]{babel}
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}
\begin{document}
Triangle: τρίγωνον.
\end{document}
您需要使用兼容的字体,您可以在以下位置找到 TeX Gyre Pagella 和其他字体字体松鼠,但它应该与你的 TeX 一起提供。
答案3
当您使用 pdflatex 和 inputenc 时,每个希腊字母输入都是一个小命令,它由lgrenc.dfu
(或)中的定义映射到内部命令。然后,此内部命令由或lgrxenc.dfu
中的定义映射到正确字体中的正确位置。lgrenc.def
lgrxenc.de
使用 lualatex,希腊字符只是字符,它们被映射到字体中与其 unicode 值匹配的位置(例如,十六进制 03B1 表示小 alpha) - 并且此位置在字体中为空。
您可以尝试\usepackage[utf8]{luainputenc}
(我不知道 texlive 2009 中是否存在)。这将转换命令中的希腊字符,就像 inputenc 使用 pdflatex 执行的那样。
但在我看来,为这些旧系统制作 lualatex 文档并不是很明智。如果 fontspec 不起作用,luatex 本身就会很旧且有缺陷。告诉这些用户只使用 pdflatex 进行编译并使用 fontspec。