理解% ! TeX指令的编辑器

理解% ! TeX指令的编辑器

有时候,我会看到其他人的文档以这样的两行开头:

% !TEX TS-program = xelatex
% !TEX encoding = UTF-8 Unicode

我很清楚第一行声明了应该用于编译的引擎,第二行声明了输入文件的文本编码。但我不清楚何时以及为什么要使用这样的表达式。

关于这一主题的更详细问题是:

  • 我如何在不确定要使用哪个引擎的情况下进行编译,以便我甚至需要该注释?
  • 哪些编辑器/程序会采纳这些指令?
  • 谁介绍他们来的?
  • 是否有任何可能值等的“文档”?还有更多这样的表达式吗?它们是否以某种方式标准化了?
  • 我可以向编译引擎添加选项吗,pdflatex -enable-write18例如xelatex -interaction=nonstopmode
  • “TS” 代表什么TS-program
  • 如果我已经在使用,编码线还会提供什么附加值inputenc
  • 使用它们有什么缺点或为什么不使用它们?

Meta:尽管从技术上讲,它包含多个问题,但我很确定这个问题符合我们的标准,即一个关于一个狭窄主题的包罗万象的问题。我想我知道一些问题的部分答案,但我将把这些答案留给那些对这些表达有经验的人。我只是想提供一个允许最大程度地提供有关这个主题的信息的问题。

答案1

TeXShop、TeXWorks 和 TeXstudio 都能理解这些指令。TS 代表 TeXShop,它是第一个在 Mac 上实现这些指令的 IDE。(其他编辑器也有类似的元数据。)

我将分别评论每个指令,因为我认为它们的用处并不相同。我的评论原则上适用于 TeXShop 和 TeXworks。JC Salomon 的回答给出了 TeXWorks 的详细信息。他还指出,还有另外两个有用的指令也可以在 TeXShop 和 TeXWorks 中使用。我也提到过这些。

% !TEX TS 程序 =

此指令允许您直接在文件本身中选择处理文件的引擎。这主要适用于您在工作中使用多个引擎的情况。TeXShop 中的默认引擎是 pdfLaTeX。我在文档中混合使用了 pdflatex、LuaTeX、XeTeX 和 LaTeX+dvips(取决于多种因素),因此对我来说,此指令非常有用,因为我只需在文件中指定引擎,TeXShop 就会通过一次按键自动执行正确的操作。从下拉菜单中手动选择引擎要烦人得多。

如果您在工作中只使用一个引擎,并且将 TeXShop 设置为默认引擎,那么使用该指令并没有真正的优势。另一方面,如果您与其他人共享文档,它可能仍然有用,因为它将覆盖他们的默认设置(如果他们使用 TeXShop/TeXworks)或至少向他们提供一些有关如何编译共享文件的指示(如果他们使用其他编辑器)。

% !TEX 编码 =

这告诉 TeXShop 使用指定的编码保存文件。我觉得这没什么必要,我自己也不用,主要是因为我对所有文档都只使用 UTF-8。但同样,如果你确实需要处理具有多种编码的文件(例如,如果你正在与不使用 UTF-8 的其他人合作),这可能会很有用,因为当你保存文件时,编码规范将覆盖 TeXShop 的默认保存编码。(我不确定 TeXworks 是否以同样的方式行事。)

编码指令和传递给包的选项之间几乎没有什么关系inputenc(除了它们应该相同之外)。传递给的选项inputenc告诉 TeX 要做什么(大致如此);编码指令告诉编辑该怎么办?在这方面,他们是完全彼此独立的。

% !TEX 根 =

此指令设置文档的根文件是否使用\include或包含到更大的文档中\input。这非常有用,因为它允许您编辑包含的文件,并使用常规的 Typeset 命令排版整个文档(因为您无法排版包含的文件本身)。

例如,假设您有一个主文件mythesis.tex,其中包含许多章节\include{chapter1}\include{chapter2}...等等。

在每个章节文件中,你需要输入以下行:

% !TEX root = mythesis.tex

然后你就可以编辑了chapter1.tex,当你选择排版时,它会排版mythesis.tex。结合 LaTeX 的\includeonly功能,你可以轻松地编辑和编译大型文档的各个部分。

根路径中给出的文件可以相对于包含的文件。例如,假设mythesis.tex位于您的主文件夹中,并且每个章节都包含在其自己的文件夹中。那么您可以使用:

% !TEX root = ../mythesis.tex

与 Program 和 Encoding 指令一样,TeXShop 提供了宏来选择根文件。当您从 Macros 菜单中选择 Root 时,系统会显示一个文件选择对话框。导航到正确的根文件并选择它,TeXShop 将填写正确的相对路径。(因此,您无需了解 Unix 路径。)

% !TEX 拼写检查 =

如果您使用多种语言编写文档,您还可以告诉 TeXShop 对每个源文件使用哪个拼写词典。例如,如果您的默认词典是英语,但有时您用法语写作,您可以添加:

% !TEX spellcheck = fr-FR

法语。

% !BIB TS 程序 =

该指令允许您选择参考书目处理后端(bibtexbiber)它也接受备用语法:

% !BIB program = 

缺点

我想不出使用它们有什么缺点。

可能值

*引擎*

TS-program 指令的值可能有无限个,因为该值是引擎的实际名称,而引擎可以是任何可以放入 shell 脚本的内容。TeXShop 有一个宏,可以从所有活动引擎文件中选择引擎。

文件编码

文件编码的值数量是有限的。在 TeXShop 中有一个宏可以从列表中选择。当前支持的编码是:

  • MacOS罗马
  • 拉丁语
  • IsoLatin2
  • IsoLatin5
  • IsoLatin9
  • 伊索拉丁希腊语
  • Mac 中欧 罗马
  • Mac日语
  • DOS日语
  • SJIS_X0213
  • EUC_JP
  • JIS日语
  • 韓國
  • UTF-8 统一码
  • 标准 Unicode
  • Mac 西里尔文
  • DOS 西里尔字母
  • DOS 俄语
  • Windows 拉丁语 1
  • Windows中央欧洲罗马
  • Windows 西里尔字母
  • KOI8_R
  • Mac 繁体中文版
  • Mac 简体中文
  • DOS繁体中文
  • DOS 简体中文
  • 繁體中文
  • 国标2312

可能的值是根.tex文件的任何有效路径。TeXShop 有一个宏,可以通过标准文件导航对话框选择根文件。

拼写检查

这里的可能值取决于您是否使用内置的 Apple 拼写词典(遵循 ISO 639-1 或 ISO 639-2 语言代码)或 CocoAspell,在这种情况下,您需要使用系统偏好设置 -> 拼写面板中显示的名称(而不是语言和文本偏好设置中列出的名称)。

因此,在上面给出的例子中,要选择 Apple 词典,请使用:

% !TEX spellcheck = fr-FR

或者对于加拿大法语:

% !TEX spellcheck = fr-CA

但要使用 CocoAspell 词典,你需要使用

% !TEX spellcheck = French (France)

答案2

理解% ! TeX指令的编辑器

              电力供应系统
TeXShop       xxxxx
TeXStudio xxx
TextMate ?xx?
特克斯沃克斯      xxxxx
SublimeText原子          奥克斯奥
Vim (vimtex)  奥克斯奥
背页      ?xx?
              | | | |
x = 是 | | | 拼写检查
o = 无 | | 根
?=?| 程序
              编码

请扩展!

笔记:SublimeText通过以下方式支持 Root、Engine 和 SpellcheckLaTeX 工具。使用拼写检查字典也应安装。

笔记:原子支持 Root 和 EngineAtom-LaTeX

笔记:Vim (vimtex)这里意味着使用Vim维姆泰克斯插件已加载。

答案3

Alan Munn 的回答涵盖了 TeXShop 的大部分问题;我会针对 TeXworks 进行解释。

(本文改编自 Joseph Wright 的博客文章TeXworks 的“神奇评论”

  • % !TeX program =程序〉:
    程序〉 应为 TeXworks 中设置的程序之一,不区分大小写。(请注意,中的“TS-”TS-program在 TeXworks 中是可选的。)
  • % !TeX encoding =编码〉:
    有关 〈 的可能值,请参阅 Alan 的回答编码〉。
  • % !TeX root =文件〉:TeXworks 将排版〈文件〉 而不是当前文件。当您使用\include或把一个大文档拆分成单独的源文件时,这很有用\input。如果您在子文件中放置指向根文档的指针,您可以在编辑它们时使用排版按钮并获得正确的结果。
  • % !TeX spellcheck =语言〉:
    将拼写检查语言设置为〈语言〉; 例如en-US或者de-DE

答案4

如果你使用非常老旧但好用为 Bbedit 编译 TeX它将允许您使用一些 % !TeX 功能,例如我使用它向 lualatex 添加 --shell-escape。(MacOSX)

% !TEX TS-program = lualatex --shell-escape

相关内容