我怎样才能提高我对 TeX 的低/中/高/高级控制序列的“动手”/“工作”知识?

我怎样才能提高我对 TeX 的低/中/高/高级控制序列的“动手”/“工作”知识?

我不是经验丰富的 TeX/LaTeX 用户。我所知道的知识仅够写论文。随着我的兴趣越来越浓厚,我希望继续提高我的 TeX/LaTeX 知识,更具体地说,提高我的“工作”知识!

在 TeX.SX 上,每当我看到包含 TeX 控制序列的答案时,我都会立即退后一步!... 我已经使用这个社区作为知识资源 3 年多了!

有时我会找到包含 TeX 控制序列的答案,它们可以让我做我需要做的事情,但我盲目地相信 -

“这些人都是专业人士,他们知道自己在说什么!”

..因为,我对 TeX 的低/中/高/高级控制序列了解不够,无法理解他们在解决方案中所做的事情。

例如,我发布了一个问题早些时候,我得到了此解决方案非常感谢回答的人;然而,我的第一印象是 -

“该死!它包含很多纯 TeX 的东西,所以它一定比我想到的更好的解决方案!”

这次经历让我意识到,如果我想要理解一些更有经验的用户在说什么,我需要扩展我关于 TeX/LaTeX 低/中/高/更高级控制序列的“工作”知识。

因此,我再次提出这个问题:

我怎样才能提高我对 TeX 的低/中/高/高级控制序列的“动手”/“工作”知识;以便有一天,如果需要的话,我也能使用其中一些有用的 TeX/LaTeX 工具?

提前谢谢了!

答案1

我的第一个资源是 TeX.SX!我在这里学到了很多关于 TeX/LaTeX 和宏扩展的知识,但有时仍然觉得有点缺乏知识,但正在进步 ;-)

然而,如果没有明确的问题(标题)来说明要寻找什么,那么一些手册也许是更好的选择。

我的主要印刷资料来源是TeX by TopicVictor Eijkhout 的书,但它对 TeX 有一些启发,可以让我获得更深入的见解。

(不,我没有这本书的副本TeX Book,我在此承认。)

这些原则TeX可以分为几类(基本上是我在过去 16 个月里学到的)

  • 用于定义宏的\def\edef和语句gdef\xdef

  • 臭名昭著的\expandafter(或者一群臭名昭著的\expandafter人;-))

  • 命令序列本身,并使用\csname foo \endcsname

  • 条件语句如\if...\else...\fi
  • 分配的寄存器如\newcount\newdim等等。

  • 低级文件访问,文件句柄由和\newread以及\newwrite\openin和生成。\openout\closein\closeout

了解这些命令/概念背后的基本语法和原理将会提供一些线索。

但最重要的是(在我看来)练习使用問題!

对于 LaTeX 的特定问题,网络上有资源,也有LaTeX CompanionHerbert Voss 撰写的与该主题相关的书籍,但其中一些仅以德语出版(到目前为止)

答案2

从我作为最终用户(而不是专业开发人员)的经验来看,我会说你走在正确的道路上:首先,找到需求(某样东西需求),然后尝试编写一个包来解决该需求。在此过程中,检查可靠的文档(我经常仔细阅读源2e.pdf以及基础 LaTeX 的源代码课程.pdf,均可在CTAN 的基本目录以及基本工具包该系统,这是 TeX 编程的很好例子,并且有很多针对 LaTeX 的巧妙技巧;然后查看 Abrahams、Berry 和 Hargreaves 的缺乏耐心的 TeX,这非常切中要点,在阅读源代码时,您可以根据需要随时了解 TeX 内核原语;也许还可以阅读您最喜欢的引擎 -mltex、etex、pdftex 的文档,以了解其实现的细节)。最后,询问相关论坛(comp.text.tex 比 SE 压力小,imnsho)。黑客就像诗歌:首先你唱别人的歌;然后你大量复制;最后,你可以开始自己唱歌。

相关内容