我是 TeX 新手。我应该使用 LaTeX、XeLaTeX 还是……?

我是 TeX 新手。我应该使用 LaTeX、XeLaTeX 还是……?

我开始学习 LaTeX,我真的很喜欢我所看到的内容。但是,我觉得我应该从另一个“TeX”版本开始。我一直在阅读有关不同选项的文章。一些参考资料:

这些问题和答案非常有帮助,但我想检查一下我的发现是否正确。我感觉 XeLaTeX 更像是“改进”版本,它提供了更简单/更多的字体选项,并且在使用奇怪的字符时更容易。大多数人都在谈论从一种 TeX 到另一种 TeX 的“转换”,但考虑到我是初学者,我现在正在寻找合适的 TeX 风格,这样当我学习只有在使用其他 TeX 引擎时才可用的新东西时,我就不需要更改序言等。

有关我的使用的一些细节:

  • 我认为 TeX 主要应用于商业报告、备忘录和调查。
  • 我可能还会用它进行演示或以书籍形式出版。
  • 我不会使用高等数学,也不会使用中文或其他非拉丁符号。
  • 作为初学者,我不需要转换任何旧文档。我一直在阅读LaTeX3然而,这似乎就像一个优于现有 TeX 选项的版本。因此,当这个版本可用时,我设想切换到这个版本。因此,如果这是有效的,我会说轻松转换为/兼容 LaTex3 非常重要。

另外,我读到过有关 XeTeX 中“微类型”的问题,但我不太明白那是什么以及这是否会影响我。

引自这个问题与另一个初学者的问题相关:

XeLaTeX 可能(特别)适合你,因为它有更好的(Unicode)多语言支持和方便的字体切换。它还支持更多的图像格式和 PSTricks 代码。

我觉得这也适用于我的情况,所以我打算使用 XeLaTeX 代替 LaTeX,并学习使用它。考虑到我的情况,这是一个好主意吗,还是我忽略了一些重要的东西?

答案1

我的印象是,大多数人目前仍在使用 pdftex 引擎 - 我知道我是这么做的。对于您描述的那种用法,luatex 和 xetex 引擎的主要优势在于更容易访问系统上安装的 OpenType 或 TrueType 字体。如果您对 pdflatex 下可轻松使用的字体感到满意,则无需紧急切换。

microtype 包的主要应用是改善文本块右边距对齐的视觉印象,通过实际偏离严格对齐,例如将连字符稍微向外推入边距。它还可以稍微拉伸和压缩一行文本中的字符,这有助于减少带连字符的单词数量并改善外观和可读性。我了解到,使用 luatex 可以同时使用 True Type 字体和 MicroType,因此它可能是未来的最佳选择。(编辑:另请参阅下面 Holle 的回答,了解 luatex 可能适用于您的应用程序的更多优势。)

至于 pstricks,它是一款非常出色的图形包,但不能直接与 pdflatex 和 luatex 一起使用,因为它是建立在 postscript 之上的。但是,您始终可以使用 pslatex 编译 pstricks 图形,将编译后的 postscript 文档转换为 pdf,并将其包含在使用 pdflatex 编译的文档中。此外,如今大多数人似乎都在使用 TikZ,这是另一个非常强大的图形包,可以直接与所有 tex 引擎一起使用。

需要理解的一点是,pdftex、xetex 和 luatex 之间没有任何需要学习的不同语法 - 除了用于加载字体的一些特定命令外,文档级 latex 代码是相同的。因此,您不必太担心这个选择 - 中途换马很容易。

通过将大部分设置集中到一个地方,您可以进一步减少与更改设置相关的任何麻烦。为此,我制作了一个小包standardsetup,其中包括以下几行:

\RequirePackage{
    amsmath,
    amssymb,
    array,
    booktabs,
    calc,
    color,
    ...,

    myabbreviations, % package containing abbreviations I often need
    ...
}

\RequirePackage[T1]{fontenc}

\RequirePackage[altbullet]{lucidabr}  % load the lucida fonts (commercial)

myabbreviations包包含一些简单的宏,例如

\newcommand{\Pot}{K\textsuperscript{+}\xspace}    % potassium ion
\newcommand{\Sod}{Na\textsuperscript{+}\xspace}   % sodium ion
\newcommand{\Cal}{Ca\textsuperscript{2+}\xspace}  % calcium ion

在我的文档中,我大多数时候只需说

\documentclass[letterpaper,10pt]{article}
\usepackage{standardsetup}

\begin{document}
...

例如,如果我决定切换到另一个首选字体系列(我希望通过 xetex 和fontspec包访问该字体系列),我只需在包中做一次更改standardsetup,然后它就会传播到使用该包的所有文档。

Latex3 是否会成为标准还有待观察。无论如何,我认为它无意彻底破坏向后兼容性;大多数用户级命令(如分段、标签和引用以及字符格式化命令)可能会继续以相同的方式工作。一些 Latex3 开发人员经常访问此网站,可能对这个话题有更多话要说。

答案2

我建议从 ConTeXt(准确地说是 ConTeXt MkIV)开始。它的主要优势是一致的、键值驱动的用户界面。请参阅我的详细回答(以及其他回答)我为什么会对 ConTeXt 感兴趣?

如果您使用 XeTeX 或 LuaTeX 引擎,ConTeXt 和 LaTeX 都允许您使用系统字体。

我建议从 LuaTeX 引擎 (ConTeXt MkIV) 开始,因为它将允许您使用 Lua 编写 TeX 宏。请参阅ConTeXt 维基更多细节。

ConTeXt 还有其它一些优点,不过这些只是个人喜好问题。

  • 我发现,在定义新布局和文档样式时,ConTeXt 比 LaTeX 更灵活。
  • 您可以使用 Metapost 在页面上绘制装饰。请参阅Metafun 手册了解详情。类似饰品
  • ConTeXt 可以直接解析 XML 并从 TeX 文件生成 XML/XHTML 输出。

如果开始使用 ConTeXt,需要记住的其他要点。

  • 文档不如 LaTeX 详尽。ConTeXt 有大量文档:手册图书(与相应的手册相同,但以装订形式提供),以及 维基百科;但与 LaTeX 的庞大文档相比,它仍然很小。

  • 用户群相对较小(但邮件列表活跃)

  • 其他工具对 LaTeX 的支持不如它好。

答案3

不要忘记 LuaTeX 为何被称为 LuaTeX。不是因为它支持 Open Type 字体,而是因为它使用了 Lua 脚本语言。Lua 是一种功能强大且非常容易学习的脚本语言。它可以读取外部数据或文本文件、进行数据计算/修改以及格式化您需要的任何 LaTeX 字符串或环境。所有这些都可以在一次 (!!) latex 运行中完成。每次外部数据发生变化时,无需执行外部脚本并将结果文件复制到 latex 项目文件夹。每次运行 latex 时,您都会使用最新的外部数据。设置一个项目非常简单,当您或用户需要时,该项目会自动重复生成报告。您的 latex 项目在哪里,您的 Lua 环境就在哪里,您的 Lua 脚本就在哪里。无需在使用 LaTeX 的每台计算机上安装额外的软件来运行脚本。在这里您可以看到它有多么简单:https://tex.stackexchange.com/a/41499/10570。我很喜欢 LuaLaTeX,因为我不仅可以用 LaTeX 排版,还可以用它来生成条件数据。而且它非常简单!

答案4

我会避免使用 Context。过去 8 年来我一直在使用它。一开始,它的主要吸引力在于,你可以简化文档,并通过一些设置来设置样式。但随着需求的增长,找到正确的设置和值真的很难。不同的设置命令不直观,其中一些命令没有记录。

提到文档,大多数都已过时(2005 年的文档,9 年前,仍被用作参考)。数学字体支持也存在问题。一些数学符号根本没有定义。您可以向 Context 邮件列表发送电子邮件并寻求帮助,但我的印象是 Context 开发人员认为您是 Tex 专家。它不适合新手用户。此外,由于许多用户会进行数学排版,我会完全避免使用 Context。我的印象是 Context 团队(小团队)不是数学导向的,例如,一些符号(例如积分符号)的间距完全错误,或者一些数学符号完全缺失。

针对特定一般问题给出的答案是善意的,但结构不合理。给出的解决方案不会出现在任何版本中,甚至不会记录在案。您只需查阅邮件列表并希望找到合适的答案。或者一般建议是升级到最新的测试版。这肯定会为常见的上下文命令引入更多不稳定性或新语法或配置。或者记录良好的上下文命令会停止工作,而不会发出警告和/或输出。

此外,字体支持也是一场噩梦,基本的字体切换需要你了解 TypeScript 的概念。我挑战你这个初学者去学习和理解它们。我试过了,但失败了。

我最近尝试重新编译旧的 Context 文档,结果遇到了很多错误(Tex 或 Context 都有),我真的不知道原因在哪里。我不再费心询问邮件列表,因为给出的答案要求您采用一些 Tex 宏来实现,并希望下一个 Context 测试版不会破坏宏或反之亦然。或者在 Google 上搜索 2006 年的问题,而新 Context 版本中没有可靠的后续跟进。2006 年之后它仍然没有准备好投入生产,Context 团队似乎认为,好吧,我们有了一个新版本,让我们把它放到网上,看看它在哪里失败了。

您只是他们代码的测试人员,您 1 个月的 Context 文档不一定能编译,因为您作为最终用户没有安全措施或基线来检查您的 Context 环境是否稳定。您的安全措施是目视检查您的 PDF 文档,或者像我一样,编写一个 Context 测试脚本并在每次升级后运行它并检查输出是否存在缺陷。

最后,我正在考虑切换回 latex、xelatex 或其他 tex/pdftex 引擎。我确信转换需要一些时间,但我确信我的文档将编译并产生所需的输出。

相关内容