自从我开始使用 LaTeX 以来就有一个问题,但直到现在我也无法在网上找到答案。
从一开始我就使用这段代码来控制与我编写的语言和我使用的字体相关的一切:
\usepackage[english]{babel}
\setmainfont
[
Ligatures=TeX,
Extension=.otf,
UprightFont=*,
BoldFont=*Bold,
ItalicFont=*It,
BoldItalicFont=*BoldIt,
Mapping=tex-text
]{GFSArtemisia}
\setsansfont[Mapping=tex-text]{GFSArtemisia.otf}
\setmathfont{latinmodern-math.otf}
\setmathfont[range=\varnothing]{Asana-Math.otf}
\setmathfont[range=\int]{latinmodern-math.otf}
问题是,我多次从这个网站用小段代码创建了这段代码,所以我不明白是否需要所有这些行,也不太明白这些行有什么用(每次创建新文档时,我都只是复制粘贴它们)。此外,我相信总体上有一种更好的方法来处理语言和字体,因为很多时候我都遇到了那段特定代码的问题(我甚至不确定这段代码是否正确)。
如果需要的话我会使用 TeX Live。
答案1
正如评论中所说,这些行与 fontspec 相连。是否需要这些 setmainfont 选项取决于您的系统和字体。您可以先尝试加载字体
\setmainfont{GFSArtemisia}
如果你收到错误消息,则必须向 fontspec 展示字体文件的位置。这就是那些
[Extension=.otf,
UprightFont=*,
BoldFont=*Bold,
ItalicFont=*It,
BoldItalicFont=*BoldIt,]
是给。
[Ligatures=TeX,
mapping=tex-text]
是 XeLaTeX 下可能多余的 fontspec 选项。摘自 fontspec 文档:
请注意使用 Ligatures=TeX 访问的附加功能。这些实际上不是真正的 OpenType 功能,而是 luaotfload(即 LuaTEXonly)提供的附加功能,用于模拟 TEX 对花括号和标点符号的 ascii 输入的行为。在 XETEX 中,这是通过 Mapping 功能实现的(请参阅第 39 页的第 11.1 节),但为了保持一致性,Ligatures=TeX 将执行与 Mapping=tex-text 相同的功能。
这些选项会影响字体的连字方式。在这里您应该获得标准的 TeX 连字。您可以将许多选项传递给 otf 字体。请阅读 fontspec 文档并尝试(如果您使用的是类 Unix 系统)
otfinfo -f GFSArtemisa.otf
在您的控制台上查看哪些 otf 功能可以传递给 fontspec。