换行

换行

前段时间这个网站上有一个问题TeX 领域中是否存在一些开放的研究问题?

本着类似的精神,我想问一下,同行评议的科学文献中是否有任何研究文章涉及 TeX/LaTeX。这可能在不同层面上

  • TeX 作为排版引擎,即低级开发。例如,Hàn Thế Thành 的工作,他实现了 pdfTeX 和微排版扩展:博士论文(PDF)

  • TeX 是一种宏语言。编写 TeX 宏与其他编程语言有很大不同。我(目前)还不知道这方面的任何研究。

在 Google 学术搜索中搜索“LaTeX 排版”大部分都是关于 LaTeX 的入门书籍。我应该查找哪些正确的关键词或必须扫描哪些期刊?

答案1

换行

经典的关于 TeX 的论文,(如果我没记错的话)DEK 曾经称之为 TeX 项目的主要研究成果,它是:

  • “将段落分成几行”(1981),作者:Donald E. Knuth 和 Michael F. Plass,《软件:实践与经验》,第 11 卷,1119–1184。

[转载于数字排版(1999),对符号等进行了一些更新。如果你有这本书的旧版,一定要读一读勘误表;不幸的是,有一些严重的拼写错误。]

在我看来,即使你从未使用过 TeX 或 LaTeX,你也应该读一读这篇论文。这是一篇绝技. 在 66 页的篇幅中,它介绍了换行问题,用数学公式表达了它,定义了可取性标准(不良性等),比较了各种方法,展示了该模型的强大功能(大量复杂的示例),然后深入研究了 TeX 算法及其所有“花哨的功能”,最后以一段鼓舞人心的历史作为结束。

从本质上讲,本文主要讨论 TeX 优雅而强大的盒子和粘合(或盒子粘合惩罚)模型。通过指定适当的盒子、粘合和惩罚序列(相同的算法),我们可以优雅地解决许多排版问题:不仅仅是典型的文本(完全对齐的段落),还包括居中文本、悬挂缩进、右对齐文本、排版程序源代码、书籍索引、引文和作者行以及在不同宽度下看起来不同的块、各种“形状”的段落等。在展示这些解决方案之后,会开发一些理论(一种“代数”)来帮助您自己想出类似的构造。

许多这些问题也出现在TeXbook作为双重危险弯道练习和附录 D:肮脏的技巧,但本文中的内容更具说明性。而且大多数这些问题都来自现实生活,出于实际需要:

我们感谢美国数学学会的 Barbara Beeton 就“现实世界”应用进行的多次讨论;

本文还有一份精简版:

  • Michael F. Plass 和 Donald E. Knuth 合著的《选择更好的换行符》(1982 年)文件准备系统,Nievergelt 等编(阿姆斯特丹:北荷兰出版社,1982 年),221–242。

这篇论文比较难找到,除了引入了一些新术语(它使用盒子、胶水和“切口”)外,与之前的论文有很多重叠。

答案2

分页

Michael Plass 的博士论文。(Plass 和 Liang 编写了第一个 (proto-)TeX;参见其他答案。)

考虑的问题是分页:给定一个图片和文本行列表,如何放置这些图片和文本以尽量减少“不良”?解决方案是一种动态规划算法,类似于 TeX 中用于分页的算法,但解决方案是不是TeX 中使用的分页符(以“愚蠢”的方式进行分页)——主要是因为当时的内存限制。该论文还表明,对于某些 badness 函数,问题是 NP 完全的,不幸的是,许多人只记得这部分,并且有引文称“Plass 表明分页符无法解决,因为它是 NP 完全的”。(但事实并非如此,它取决于 badness 函数。)

答案3

连字

Frank Liang 的博士论文。(Liang 和 Plass 是第一批研究 TeX 的人;在 Knuth 编写代码之前,他们就根据 Knuth 的规范在夏天一起实现了“原型 TeX”。)

这解决了以下问题:在自然语言中,对于某些单词应该如何连字符,存在一套(某种程度上)公认的惯例:例如,报纸房主里根都是错误的连字符。假设我们得到了一本连字符词典:一大堆单词,以及每个单词应该如何连字符。我们如何才能将这些数据归结为一些小数据(在当时机器的限制范围内),并将其用于我们的程序,以获得合理准确的连字符?

Liang 提出的解决方案(在 TeX 中使用)是使用连字符并抑制模式。(以及对 trie 数据结构的一些谨慎使用等)例如,(使用名为 的程序patgen)假设我们已经生成并存储了以下模式4m1ppu2t5puteput3er。(偶数抑制,数字越大“越强”。)然后当遇到单词时computer,我们的程序(TeX)使用这些模式并将它们组合起来,得到co4m5pu2t3er,从而产生连字符com-put-er

答案4

TeX 是通过 Knuth 的吉布斯讲座Knuth 在 1978 年 1 月受邀去美国数学学会做 Gibbs 讲座(他曾于 1974 年获得图灵奖等),他选择讲讲他当时正在研究的东西,也就是 TeX 和 METAFONT(始于 1977 年中)。

  • “数学排版”作者:Donald E. Knuth,《美国数学学会会刊》(NS),第 1 卷,第 2 期(1979 年),第 337–372 页。

他首先描述了数学排版的历史(排版如何帮助数学),然后描述了他的 TEX(原文如此)系统和换行的数学问题,然后是 METAFONT(数学如何帮助排版)及其“最令人愉悦的曲线”等。讲座结束后,许多人对这个新系统产生了浓厚的兴趣,AMS 也参与其中,等等,这在 TeX 的历史上意义重大。(本文与 TeX78 手册(TeX 的前身)一起装订而成。TeXbook) 和 METAFONT 手册,并由 AMS 发布为TeX 和 METAFONT:排版的新方向) 当该讲座于 1979 年在《AMS 公报》上发表时,它使用了 TeX。

相关内容