一些背景信息

一些背景信息

让我直接说吧:在编写新的文档类时,我应该加载fontspec其他需要 LuaLaTeX 和 XeLaTeX 的包吗?

一些背景信息

大约 10 年前,当我学习使用 LaTeX 时,我被告知要使用转义码(例如\^{a}-like 命令)来书写变音符号。很快我就发现这已经过时了,而且这已经\usepackage[utf8]{inputenc}解决了这个问题。

大多数 LaTeX 介绍都不会告诉你有关 LuaLaTeX 或 XeLaTeX 的信息,即使有,他们也会将其视为非标准解决方案。在我看来,情况不应该如此。在我的母语葡萄牙语中,我们有一些不属于 ASCII 的字符,但经常使用。因此,在教新手学习 LaTeX 时,我总是告诉他们使用 Lua 或 XeLaTeX。

但是,我从未教过如何编写 LaTeX 文档类。我想教我的学生最佳实践,所以我想知道社区对这个话题的看法。

答案1

类和包通常应该与引擎/字体/编码无关

我认为这里忽略了一些东西。总的来说,除非绝对需要,否则类和包都不应该对字体、输入编码或引擎做出任何假设;这几乎总是应该留给文档级别。类通常用于设置某些特定的文档类型:页面布局、章节标题等。包通常会向任何类别的文档添加特定功能。当然,这个一般规则也有例外(请参阅下面的一些示例)。两者都不需要假设字体或引擎的属性。

类似地,类和包不应该假设正在使用某种特定的语言,因此也应该将加载留给babel用户polyglossia

教学生使用 XeLaTeX 或 LuaLaTeX 作为日常文档的主要引擎(这确实使字体处理更容易)是一回事,但教他们编写的类或包应该包含引擎相关代码则完全是另一回事。这是在教他们坏习惯。

什么时候类或包可能需要引擎特异性

显然,在某些时候,类或包假设引擎或字体设置是有意义的。

  • 需要 Lua 代码且只能使用 LuaTeX 运行的软件包
  • 需要 XeTeX 特定功能的软件包(例如XeTeXinterchartoks
  • 使用指定字体重现特定形式的类

这些都是非常专业的用途,并且不太可能是初学者会做的事情。

相关内容