这个问题可能属于其他地方,但我想如果我把它发布在这里,我可能会遇到一个处理 LaTeX 幕后问题的人。我是学校的 Linux 管理员助理,我们为显然需要它的教授安装 LaTeX。但是,为什么执行“yum install”LaTeX 会导致安装近 2500 个不同的软件包?我意识到我们可能安装量可能比“普通人”要大,但是这难道不看起来像是应用程序的过度模块化吗?
答案1
显而易见的答案是:因为它可以。大多数系统都缺乏灵活性,而且比 TeX 更早消亡。看看其他成功的系统,你会发现它们具有相同的特征:Perl、Python、Java、Ruby、C 和 Unix - 仅举几例。
然而,LaTeX 开发出如此强大的软件包生态系统实际上相当令人惊讶,因为 TeX 的 DNA 并不是为此而生的。TeX 缺乏我们今天在编程语言中习以为常的模块、范围和抽象机制。这意味着 TeX 和 LaTeX 中的模块化主要基于惯例,因此非常脆弱(很像 C 中的模块化)。
因此,虽然我理解许多软件包(有时还有它们的不兼容性)可能会带来不便,尤其是对于经验不足的用户来说,但这实际上是一种力量的象征。我建议发挥 TeX 的优势,而不是克服它的弱点。
附录
最后一句话可能暗示我认为没有必要在模块化方面改进 TeX 或 LaTeX。事实恰恰相反,因为我认为像 LaTeX3 或 LuaTeX 这样的项目对于推动 TeX 和 LaTeX 的发展非常重要。我这么说更多的意思是,人们应该拥抱 TeX/LaTeX 的强大功能和灵活性,而不是试图限制它以使其更简单。关于安装,像 TeX Live 这样的项目已经为用户和管理员做了繁重的工作。
答案2
答案可能是:ConTeXt
!为什么?因为 ConTeXt
更紧凑,避免了多个包带来的一些问题LaTeX
。其中一些已经过时或不兼容。我们可以谈论灵活性,但我们需要谈论稳定性。我不是 ConTeXt 用户,但我读过 Hans Hagen 的精彩访谈,其中 HH(太棒了!就像草原狼中的赫尔曼·黑塞)谈到了和之间的ConTeXt
区别LaTeX
。
HH 的采访
摘录:
我记得的是,编写样式和扩展涉及对内核进行修改。我认为可扩展性从来都不是这个概念的一部分,这一点很明显。我还从与核心 LaTeX 人员的交谈中了解到,一旦用户开始进行这种修改,就很难改进。此外,输出需要“与之前一样”,而我使用 ConTeXt 时没有给自己施加这种限制。
答案3
我认为这是 LaTeX 最好的地方:你可以按照自己的意愿定制它,并添加自己的点点滴滴:D
您永远不知道什么时候会需要某些特定的东西,因此您有很多选择……
答案4
我认为这是软件包管理器和共享环境普遍存在的一个问题。在您的 Linux 管理系统中,您面临的问题是只有授权人员才能安装软件 - 并且或多或少只有已打包到发行版中的软件才可以安装。
在许多情况下,每个用户自行决定需要安装哪些 Tex 包是有利的 - 并且在最佳情况下,该包实际上会自行安装。(我认为 Windows 上的 Miktex 使这成为可能。)
但是,tex 结构使本地安装变得有点复杂,因为它的目录结构非常特殊,因此让任何人在本地安装包都是不切实际的。这些系统的唯一出路似乎是全局安装程序 - 这意味着需要运送 2500 个包才能满足所有需求。