我是 LaTeX 新手,我想我仍然对 TeX 和 LaTeX 之间的区别感到困惑。在什么情况下您实际上需要在 LaTeX 文档中定义新的 TeX 宏?\def
和之间有什么区别\newcommand
(除了一个是 TeX 而另一个是 LaTeX 之外)?有人可以给我举个例子吗?
答案1
LaTeX 基于 TeX,参见:
你可以在 LaTeX 文档中使用 TeX,但建议尽可能使用 LaTeX,因为
- LaTeX 是更高的抽象层次
- LaTeX 进行更多错误检查
- 在 LaTeX 命令中使用 LaTeX 命令更加一致,因为 TeX 命令不必知道它们所使用的 LaTeX 上下文,而 LaTeX 命令可能需要
以下是有关 LaTeX 命令与 TeX 命令的有用列表:
LaTeX\newcommand
会检查宏名称是否已存在,因此您不会意外覆盖具有相同名称的现有宏。但是,您仍然可以使用\def
,如上所述,例如,如果您想克服\newcommand
语法限制。请参阅:
有很多 LaTeX 文档解释\newcommand
和示例。但是,您可以使用本网站的搜索功能找到很多示例,例如
答案2
TeX 之间的差异并不类似于 C 和 C++ 之间的差异,在 C++ 程序中直接包含 C 代码实际上是一个问题。它更像是我正在使用的简单 HTML 文本框和 Emacs 等花哨的文本编辑器之间的差异。(我承认排版引擎和文本编辑器之间的类比并不那么有启发性。)当然,您可以将 Emacs 窗口用作文本框,但它具有大量功能,可使输入和编辑文本更快、更容易,并且具有无限的扩展能力。当然,在您超级熟练的 Meta-Super-whatever 编辑会话中,您只需输入几行,它不会破坏程序。它甚至可能更快或更容易。
TeX 和 LaTeX 也是如此。与 C++ 不同,LaTeX 不会取代 TeX,而是会取代 TeX成语。如果您尝试使用该语言,它仍将以相同的方式工作,但您可以选择(强烈建议)以不同的方式使用它。特别是,\def
两者\newcommand
都定义了相同类型的“命令”:TeX 宏。只是\newcommand
它更聪明,而\def
更灵活(因此更危险)。
就像 Emacs 与文本框一样,大多数时候您所做的事情根本不依赖于 TeX 与 LaTeX:在两者中输入纯文本是相同的。另外,我撒谎说,某些 TeX 命令(甚至是基本命令,如\def
,或实际上\atop
)可能会被重新定义,从而导致 LaTeX 出现错误。另请注意,我不会告诉您 TeX 中实际上有哪些命令(与 LaTeX 相比),因为 LaTeX 的设计方式让您甚至不需要知道。
我应该说我从来没有使用过 Emacs。