有时候,我会看到其他人的文档以这样的两行开头:
% !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 程序 =
该指令允许您选择参考书目处理后端(bibtex
或biber
)它也接受备用语法:
% !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
答案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