LaTeX 适合普通 TeX 用户吗?

LaTeX 适合普通 TeX 用户吗?

是否存在一些简明的文档,说明对于在纯 TeX 中常见的操作,推荐/惯用的“LaTeX 方式”可以完成相同的操作?如果没有,最常见的操作是什么?


背景/背景:最近,在回答关于不寻常的页面布局的问题,我首先用纯 TeX 写了一个答案,然后开始尝试用 LaTeX 来处理它。在此过程中,我发现了一些事情,例如:

  1. 在 LaTeX 中(我猜在典型的文档类中也是如此),要更改主文本区域的尺寸,请不要直接更改\hsize\vsize。相反,最简单的方法是更改\textwidth​​ 和\textheight
  2. 要控制页面输出,不要重新定义用\output做什么\box255,而是重新定义\@outputpage用 做什么\box\@outputbox
  3. 要影响页面上主文本区域的偏移量,不仅要更改\hoffset\voffset,还要更改\oddsidemargin\evensidemargin\topmargin\headheight\headsep
  4. 页码计数器不是存储在 TeX 计数寄存器中,\pageno而是存储在LaTeX 计数器page

这些只是例子(有些可能不对);我问的是一般情况,即有人编写了一些(相对简单的)纯 TeX 文档(了解其功能),并想将其更改为与 LaTeX 兼容。在这种情况下,需要了解哪些有用的信息?


我知道这可能不是一个有完美答案的问题,所以我对以下任何一种答案都非常满意:

  • 在 [location] 处有这样一份文档。或者:只有几个主要内容需要了解,即 [list]。

  • 没有这样的文档:你只需通过阅读 [Book1]、[Book2] 和/或阅读 LaTeX 源文件来学习整个 LaTeX 即可(texdoc source2e)。

  • 有几种类型的事物,每种类型都包含在不同类型的文档中:[X] 代表主题 [T1],[Y] 代表主题 [T2],...

  • 如果你使用的是简单的纯 TeX,那么你需要知道的主要是 ~1000 行 提供的 LaTeX 等效功能plain.tex。这些功能转换成 LaTeX 后是:[…]。


编辑:有人向我指出,在 LaTeX 文档中,应该简单地不是做上述任何一件事。我完全同意!

我应该早点把这一点说清楚,但我自己没有想清楚:

  • 在 LaTeX 文档中,作为 LaTeX 的“用户”,应该不是诉诸这种“原始”排版。(因此,如果以 LaTeX 用户的身份提出上述问题,那么答案是“不要这样做”。)相反,人们将自己的意图表达为对包提供的命令的调用的某种组合。

  • 在 LaTeX 包或类中作为包/类的作者,是唯一可以摆弄排版的地方。我的问题是关于这部分:在哪里可以学习这些普通 TeX 命令的 LaTeX 等效命令,以在 LaTeX 中完成常见的排版解决方案?(我确实理解您还应该提供良好的命令,以便您的包的用户能够逻辑/语义地表达自己。)

例如,来自 plain-TeX 版本链接答案的修订版本 1,为了得到一些可以在 LaTeX 中编译的东西(假设我想把它做成一个包),我通过阅读source2e.pdf、阅读其他类似解决方案的包实现(注释不充分)、随机搜索互联网和这个网站、使用\show\message调试正在发生的事情,有时纯粹是猜测,拼凑了一些东西。我的问题是:如果你想编写一个包来完成某种排版,那么在哪里可以学到这个呢?

答案1

首先是一些个人经历​​:我负责技术方面的一个会议论文集,其中有几篇论文需要整理。其中一篇是 Word 格式的:我要求打印出来,然后按照打印输出逐行转换“另存为文本”版本。

另一个是纯 TeX 格式的。转换过程相当简单:我将初始宏定义改为使用\newcommand\newtheorem;然后我浏览文档,翻译成 LaTeX 是一个相当简短且简单的工作。

更痛苦的是将大多数论文从作者的 LaTeX 概念翻译成真实的一。


关于您在列表中提出的具体观点,以下是我的看法。

  1. 绝不在 LaTeX 文档中使用\hsize,甚至在序言中也不行(唯一的例外,使用 的一些技巧tabularx)。使用\textwidth并不“更简单”:你会说在英国靠左行驶更简单吗?嗯,是一样的:使用 设置文本宽度\hsize就像在英国靠右行驶一样。

  2. 绝不(无一例外)改变\@outputpage,除非你的名字是弗兰克并且你是德国人(加上一些其他严格的条件)。

  3. 虽然可以通过明确更改\oddsidemargin和朋友来指定页面参数,但使用 会更好geometry。顺便说一句,\hoffset\voffset应该始终为零。

  4. 当前页码值可通过\thepage(根据所选的编号样式而变化)访问。使用\value{page}(或\c@page)应该很少见。此外,不应\pageno在纯 TeX 文档中使用 ,但\folio,这类似于\thepage

可能您的第 2 点是关于添加页眉和页脚的结构;这是通过诸如或之类的包fancyhdr完成scrlayer-scrpagetitleps

如果您使用\beginsection\proclaim,则切换到 LaTeX 并不困难;当然,您将删除所有手动分配的数字。

大多数常见的纯 TeX 结构在 LaTeX 中也能使用;手册\line中提到了具有不同含义的结构。当然,字体选择命令不起作用。

然而,普通的 TeX 宏在 LaTeX 中也能工作,这并不意味着我们可以保留它。一个典型的例子是\centerline,它在 LaTeX 文档中基本上没有位置(例如,它不是颜色安全的),但也不\root 3\of{2017}应该使用。

是的,我知道\centerline在某些情况下这可以让我简单地摆脱问题,但这种用法应该始终埋在序言中定义的宏中。

我之前提到的结构良好的纯 TeX 文档,是用逻辑方式编写的,带有一致的标记。标记与 LaTeX 中的标记不同,但这不是问题:我只需要制作一个翻译表并应用一些搜索和替换。

一份写得不好的文档,使用纯 TeX、AMS-TeX、ConTeXt、LaTeX、Lollipop 或任何格式,都是写得不好,有时使其成为原始格式的有效文档也很麻烦。

答案2

也许我的建议不能满足你问题的“简洁”要求,而且我仍然不清楚你到底想要什么;但恕我直言,我怀疑是否有一种简单的方法可以像你所说的那样从 Plain 过渡到 LaTeX hacker。据我所知,没有针对 LaTeX2e 的 LaTeX 编程手册,而计划用于 LaTeX3 的手册仍然相当基础。因此,在此期间,我建议你找一本 Winter Snow 的TeX 初学者指南作者偶尔会将一些 Plain hack 与 LaTeX hack 进行比较。

相关内容