答案1
仅提供 utf8 编码是不够的输入。您还需要选择具有您想要排版的字形的文本和数学字体。
如下面的截图所示,Latin Modern Roman
(默认系统衬线文本字体)没有λ
字形,但Latin Modern Math
有倾斜和直立两种形状。Stix Two
相反,λ
在文本和数学中都具有字形。
\documentclass{article}
\usepackage{unicode-math} % loads 'fontspec' automatically
\begin{document}
\obeylines % just for this example
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}
Latin Modern text and math font
this is λ lambda
this is $λ$ $\symup{λ}$ lambda
\bigskip
\setmainfont{Stix Two Text}
\setmathfont{Stix Two Math}
Stix Two text and math font
this is λ lambda
this is $λ$ $\symup{λ}$ lambda
\end{document}
答案2
您需要加载支持希腊语的字体和编码。在 LuaLaTeX 中,支持希腊语的编码是 Unicode,只要您开始输入希腊语,就可以自动切换到希腊语和字体。
\documentclass{article}
\tracinglostchars=2
\usepackage[english]{babel}
\usepackage{unicode-math}
\babelprovide[import=el, onchar=ids fonts]{greek}
\babelfont{rm}[ Language=Default]{NewComputerModernBook}
\babelfont{sf}[ Language=Default]{NewComputerModernSansBook}
\babelfont{tt}[Language=Default]{NewComputerModernMonoBook}
\setmathfont{NewCMMath-Book}
\pagestyle{empty} % Suppress page numbering
\begin{document}
This is λ lambda.
And \(λ\) in math mode.
\end{document}
您可以为 定义不同的字体\babelfont[greek]{rm}
,当您在文本模式下开始输入希腊语时,Babel 会切换到这些字体。它将在数学模式下使用 Unicode 数学字体中的符号。如果您更喜欢 Polyglossia,而不是 Babel,则可以加载 Polyglossia。
我的建议是,如果可以,就使用 LuaLaTeX,unicode-math
如果必须,就使用传统的 8 位字体。在 PDFTeX 中,您需要的 8 位字体编码称为 LGR,并且您还希望alphabeta
在文本和数学模式下启用希腊字母。
\documentclass{article}
\tracinglostchars=2
\usepackage[LGR,T1]{fontenc}
\usepackage[greek, english]{babel}
\usepackage{alphabeta}
\pagestyle{empty} % Suppress page numbering
\begin{document}
This is λ lambda.
And \(λ\) in math mode.
\end{document}
如果您的主字体不属于 LGR,您可以使用 声明字体替换substitutefont
。
您收到错误是因为 PDFTeX 仅理解您设置的 Unicode 字符,而 LaTeX 内核仅设置您加载的字体编码之一中的字符。
如果您.log
从原始 LuaLaTeX MWE 检查文件,您会看到中间隐藏着一条警告消息,指出当前字体中没有 λ 字形。除此之外,TeX 会默默忽略该错误。这是一个糟糕的设计,但显然我们为了向后兼容而坚持使用它。该命令\tracinglostchars=2
至少会在控制台上显示警告。
答案3
Mico 的答案是正确的,但他没有给出带有希腊字母的示例字体,所以我想添加希腊字体协会的 GFS Artemisia 字体,效果很好。下面的应该有效
\documentclass{article}
\usepackage{unicode-math} % loads 'fontspec' automatically
\setmainfont{GFS Artemisia}
\begin{document}
this is λ lambda
\end{document}