我在英语 LaTeX 文档中有一个俄语西里尔文单词,我安装了 texlive-full TeX 发行版来处理它。俄语单词应该以粗体显示,但它太模糊了。英语字体是“Tex Gyre Schola”,在我看来比一般字体更粗,所以我希望西里尔文单词更粗,以便与英语字体更好地匹配。
我的文档是用 pdftex 或 pdflatex 生成的(?我不确定它们有什么区别)。此外,序言也做了一些调整以适应俄语单词。
--在选项中添加“T2A”:
\usepackage[T2A,T1]{fontenc}
--确保这是 UTF8 编码:
\usepackage[utf8]{inputenc}
--使用 babel 包并在选项中添加“russian”
\usepackage[russian,english]{babel}
在英文文档正文中,我实现了俄语单词,如下所示
\foreignlanguage{russian}{русское слово} %% русское слово = my russian word %%
为了使俄语单词加粗,我尝试在俄语单词前加上前缀:
{\bfseries русское слово}
和
{\textbf{русское слово}}
但俄语单词并没有变得更加粗体。
有没有简单的方法可以解决这个问题?
答案1
如果没有 MWE,我们就无法重现此问题。但是,您说您正在使用字体tgschola
。这不支持西里尔文,因此如果您检查日志,您可能会收到类似以下内容的消息:
LaTeX Font Warning: Font shape `T2A/qcs/b/n' undefined
(Font) using `T2A/qcs/m/n' instead on input line 23.
这告诉您不存在T2A
TeX Gyre Schola (家族qcs
) Bold (系列b
, 形状n
) 的版本,因此它恢复到了 Computer Modern 的中等粗细。
解决方案是选择一种西里尔字体来补充 TeX Gyre Schola。由于这是 URW 版本的 New Century Schoolbook 的克隆版,因此如果您的系统上有 Century 或 Century Schoolbook,您可以使用它。基于 Century 的免费字体是 Old Standard,尽管它比 TeX Gyre Schola 略轻。在这里,我选择了 DejaVu Serif。
您也可以使用支持西里尔字母和拉丁字母的字体作为主字体。
在现代工具链中
我建议尽可能使用现代字体和 Unicode,必要时使用旧式 8 位字体。遗憾的是,有些出版商仍要求作者使用它们。
\babelfont[russian]{rm}
您可以使用、\babelfont[russian]{sf}
和声明俄语的替代字体\babelfont[russian]{tt}
。您也可以只选择包含西里尔文的字体。(例如旧版本的 TeX Gyre Schola 本身!见下文。)
\tracinglostchars=2
如果您尝试显示当前字体不包含的字形,请务必声明以警告您!如果没有这个,如果您选择了错误的语言,TeX 将默默地忽略任何西里尔字母,只会在.log
文件中隐藏一条警告消息。
使用旧字体
如果您需要 PDFLaTeX 兼容性,您可以为您的字体系列声明一个西里尔替代字体。CTAN 打包为 T2A 的字体选择非常有限(除非您想使用 TrueType 或 OpenType 字体并自行转换)。在这里,我选择了基于 Times 的 Tempora。
您可以使用\substitutefont{T2A}{\rmdefault}{...}
和\substitutefont{T2A}{\sfdefault}{...}
来substitutefont
声明这些替换。
代码
\tracinglostchars=2 % Warn if a glyph is missing from the current font.
\documentclass[russian, english]{article}
\usepackage{iftex}
\ifTUTeX
\usepackage{babel}
\usepackage{fontspec}
\defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX }
\babelfont{rm}
[Ligatures=Common]{TeX Gyre Schola}
\babelfont[russian]{rm}
{DejaVu Serif}
\else
\usepackage[T2A,T1]{fontenc}
\usepackage{babel}
\usepackage{substitutefont}
\usepackage{tempora}
\usepackage{tgschola}
\substitutefont{T2A}{\rmdefault}{Tempora-TLF}
\fi
\babeltags{russian=russian} % Adds \textrussian, \begin{russian}, etc.
\begin{document}
English text and \textrussian{русские}.
\textbf{In bold, \textrussian{русское слово}.}
\end{document}
使用 LuaLaTeX (DejaVu Serif 中的西里尔文) 输出:
使用 PDFLaTeX 编译后,您会得到 Tempora 中的西里尔文:
使用旧版本的 TeX Gyre Schola
奇怪的是,TeX Gyre Schola 1.103 版 做过包含西里尔字母,该字母已从 2.005 版中删除。如果您使用类似以下内容指定旧版本
\babelfont{rm}
[Ligatures = Common,
Path=fonts/,% Must contain version 1.103 of the font files.
UprightFont=*-regular,
BoldFont=*-bold,
ItalicFont=*-italic,
BoldItalicFont=*-bolditalic,
Extension=.otf
]{texgyreschola}
这将在 LuaLaTeX 或 XeLaTeX 中起作用。