LuaLaTeX 不可见的 unicode 字符

LuaLaTeX 不可见的 unicode 字符

我有一个最小文件:

\documentclass{article}
\begin{document}
this is λ lambda
\end{document}

使用 latex 构建时,出现错误

Package inputenc: Unicode character λ (U+03BB)
(inputenc)    not set up for use with LaTeX.

当使用 lualatex 构建时,它会输出:

拉姆达

(unicode λ 字符不可见)

如何使λ可见?

答案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}

相关内容