我尝试在 LaTeX 文档中使用 β 字符,但输出 PDF 从未显示它。我正在使用 xelatex 构建。来自以下代码:
\documentclass{article}
\usepackage{fontspec,xltxtra,xunicode}
\usepackage{textgreek}
\title{Beta Test}
\begin{document}
\maketitle
% UTF-8 beta and \textbeta don't show in the output.
β
\textbeta
% However, UTF-8 delta and \textDelta work fine.
Δ
\textDelta
\end{document}
我的输出只会显示两个 Δ 字符。所以 UTF-8 似乎textgreek
没问题,除了 beta 版?
答案1
最好的解决方案是使用支持希腊文的字体。但是,即使没有这种支持,也可以采取一些措施。
如果希腊语中的部分很小并且连字符的问题不会困扰您,则不需要标记,如果需要较长的部分则不需要;在这种情况下,使用polyglossia
和定义提供的功能\greekfont
就足够了,再加上定义希腊语的字体。
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{greek}
\newfontfamily\greekfont{GFS Artemisia}[
Scale=MatchUppercase
]
\title{Beta Test}
\begin{document}
\maketitle
Here is a \textgreek{β} beta.
\end{document}
如果你只是偶尔使用希腊字母,那么解决方案ucharclasses
更简单:
\documentclass{article}
\usepackage{fontspec}
\usepackage[Latin,Greek]{ucharclasses}
\newfontfamily\greekfont{GFS Artemisia}[
Scale=MatchUppercase
]
\setTransitionsForGreek{\begingroup\greekfont}{\endgroup}
\title{Beta Test}
\begin{document}
\maketitle
Here is a β beta.
\end{document}
答案2
这个问题刚刚被提出,也许是为了将其他问题合并到其中。截至 2020 年,您可以在 LuaLaTeX 中使用babel
、不带\textgreek
或\foreignlanguage{greek}
文档正文中的任何其他命令来实现此目的。
\documentclass{article}
\tracinglostchars=2 % Warn if any character is missing
\usepackage[english]{babel}
\usepackage{unicode-math} % Or fontspec, fontsetup, etc.
\usepackage{microtype} % Enable font expansion and protrusion
\usepackage[paperwidth=10cm]{geometry} % Narrow the MWE
\pagestyle{empty} % Suppress page numbers
\babelprovide[import=el, onchar=ids fonts]{greek} % Or import=el-polyton
\babelfont{rm}
[Language=Default]{NewComputerModernBook}
\babelfont{sf}
[Language=Default]{NewComputerModernSansBook}
\babelfont{tt}
[Language=Default]{NewComputerModernMonoBook}
\setmathfont{NewCMMath-Book}
\begin{document}
Greek (modern Ελληνικά, romanized: El\-lin\-i\-ká, ancient Ἑλληνική,
Hel\-lēn\-i\-kḗ) is an independent branch of the Indo-European family of
languages
Η ελληνική γλώσσα ανήκει στην ινδοευρωπαϊκή οικογένεια και αποτελεί το
μοναδικό μέλος του ελληνικού κλάδου
\end{document}
默认字体 Latin Modern Roman 不支持希腊语,因此需要加载支持希腊语的字体。该\babelfont
命令将为当前选定的语言设置Script=
和Language=
选项。它还允许您加载不同的字体,如\babelfont[greek]{rm}
,等等。(虽然我关闭了这些字体的语言选择,以抑制一些无害的警告消息。)
您会注意到,Babel 还会使用您输入的语言的正确连字符模式。我需要手动为带有重音符号的英语音译添加一些连字符点\-
,但两种语言的本土单词都正确连字符了。
这种方法在从左到右和从右到左的语言中切换完整段落时会出现问题,或者如果您需要在使用相同脚本的两种不同语言之间切换,但对于两种具有不同字母表的从左到右的语言,它效果很好。
您提到您正在使用 XeTeX。该引擎不支持onchar=
,并且也处于维护模式。如果可以,我建议您切换到 LuaTeX。如果您确实需要使用 XeTeX,一种可能的解决方案是返回语言标记命令,例如\begin{greek}
。另一种方法是使用ucharclasses
在您输入希腊语时更改语言,就像 egreg 的第二个 MWE 一样,但该包对我来说并不可靠。
我从维基百科中取出了这段文字,所以如果您有任何异议,请去编辑那些页面。
答案3
由于 Latin Modern 字体不包含希腊符号,因此您必须从其他字体手动添加它们。在我的示例中,我从 Linux Libertine 字体中获取符号。
textgreek
不起作用,因为包fontspec
在这里重新定义了一些东西(例如\textbeta
)。
% arara: xelatex
\documentclass{article}
\usepackage{textgreek}
\usepackage{fontspec}
\usepackage{newunicodechar}
\newfontfamily{\greekfont}{Linux Libertine O}
\newunicodechar{β}{{\greekfont β}}
\begin{document}
β
Δ
\textDelta
\end{document}
我省略了命令\textgreek
。您可以重新定义它以便将其与新符号一起使用,但由于我不确定fontspec
此命令的作用是什么,我宁愿不去碰它。
答案4
希腊文排版几乎不需要什么。您遇到的问题之一如上所述。需要一种包含适当字符的字体。SBL Cardo 字体具有广泛的希腊文支持,包括多音调和文本关键。
您可以设置文档,以便使用不同的字体来排版各种语言。这意味着您可以将自己喜欢的罗马字体用于英语,将专业字体用于希腊语。请参见下面的示例。
两个关键元素是\newfontfamily\greekfont{FreeSans}
,它告诉 XeTeX 使用 FreeSans 字体来排版任何希腊文。然后在正文中,\textgreek{}
指示哪些字符是希腊文。我为希腊文使用了 sans 字体,以便清楚地区分。
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\newfontfamily\greekfont{FreeSans}
\setdefaultlanguage[variant=australian]{english}
\setotherlanguage{greek}
\begin{document}
afd AFD
\textgreek{αφδ ΑΦΔ}
\end{document}