这是我的代码(utf8):
\documentclass{article}
\usepackage[no-math]{fontspec}
\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc}
\usepackage{anttor}
\begin{document}
text $math$
Russian: Щ
\end{document}
问题是,“数学”仍然是 CM 字体;而西里尔字体并没有出现。
答案1
Antykwa Toruńska 字体支持西里尔文和数学;如果您想使用 XeLaTeX,那么您可以这样做
\documentclass{article}
\usepackage[math]{anttor}
\usepackage[no-math]{fontspec}
\setmainfont[Ligatures=TeX]{Antykwa Torunska}
\begin{document}
text $math$
Russian: Щ
\end{document}
你可能需要了解如何在你的机器上加载 AT 字体,可能需要
\setmainfont[
Ligatures = TeX,
Extension = .otf,
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = *-Italic,
BoldItalicFont = *-Italic
]{AntykwaTorunska}
这应该适用于 TeX Live 发行版。如果您已经在系统中安装了 Antykwa Toruńska 字体,那么上述更简单的声明就足够了。
如果您想使用pdflatex
,那么使用字体编码的方法是必要的:
\documentclass{article}
\usepackage[T2A,T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[math]{anttor}
\DeclareRobustCommand{\cyr}[1]{%
{\fontencoding{T2A}\selectfont#1}%
}
\begin{document}
text $math$
Russian: \cyr{Щ}
\end{document}
不幸的是,如果不改变字体编码就不可能书写西里尔字符,而且这需要大量的工作。
答案2
您不必使用XeLaTeXinputenc
和fontenc
软件包,因为它已经适用于 Unicode。因此,您首先必须删除以下行:
\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc}
那么你必须使用包含Unicode字形的字体。Computer Modern(CM)对应的是Computer Modern Unicode(CMU)。
如果你将 MWE 更改为
\documentclass{article}
\usepackage[no-math]{fontspec}
\setmainfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}
\begin{document}
text $math$
Russian: Щ
\end{document}
并使用 XeLaTeX 进行编译,它应该可以工作。
答案3
一般来说,inputenc
与 XeTeX 一起使用是错误的。XeTeX 将其Щ
视为一个 Unicode 字符 (U+0429),而 pdfTeX 将其视为 UTF-8 编码中的两个字符 (0xD0, 0xA9)。这是一个很大的区别。
如果要在 XeTeX 中排版西里尔字母,最好使用 Unicode 字体(TrueType 或 OpenType)fontspec
包,正如 karlkoeller 所说。并非所有字体都支持西里尔字母。对于 CM 字体,CMU 系列是不错的选择。
但是,仍然可以使用旧T2A
字体。
\XeTeXinputencoding "byte"
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc}
\usepackage{anttor}
\begin{document}
text $math$
Russian: Щ
\end{document}
但在这种情况下,fontspec
根本就用不到,为什么不直接使用 pdfTeX?
答案4
如果您只是需要数学中的西里尔字母,请尝试使用包\text{}
中的命令amsmath
。它适用于任何引擎,无论是 (pdf)latex 还是 xelatex。
\documentclass{article}
\usepackage{ifxetex}
\ifxetex
\usepackage{fontspec}
\setmainfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}
\else
\usepackage[T1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\fi
\usepackage[english,russian]{babel}% you need babel 3.9
\begin{document}
\[
\text{Щ}
\]
Russian: Щ
\end{document}