LaTeX 文件的依赖关系图

LaTeX 文件的依赖关系图

这是受到 MO 问题的启发这里

假设我正在写一篇数学论文,其中包含定理和证明等。在写作结束时,我想设计一个依赖关系图,即包含每个定理、引理等的图,以及当一个定理在其证明中依赖于其他引理、定理等时的有向箭头。有什么巧妙的方法可以做到这一点?

我知道实际绘制图表会很困难,所以我更感兴趣的是如何以一种有趣的方式将这些数据写入文件。proof例如,仅重新定义环境似乎有效,但如何在图表数据中获取实际定理编号/名称?似乎必须以更微妙的方式重新定义 ref 命令,但我不知道该怎么做。

如果您可以控制一些参数,那就更酷了,比如,也许您不是“局部”地研究定理,而是可以更“全局”地研究,只查看章节依赖关系(从而生成 Leitfaden),甚至可能在两者之间添加更多层次。还可以有“阈值”参数,这样一章必须引用另一章,比如说,10 次或更多次,它才会变得足够重要,可以包含在图形数据中。您甚至可以疯狂地包括参考书目!

我不知道这个标签适合什么,所以请随意更改它们。

答案1

这个答案概述了一个解决方案,但我没有时间为您实施建议的解决方案。

在我开始之前,我想指出,我认为你不能使用目录(TOC)来做到这一点,因为 TOC 不知道哪个定理引用了哪个其他定理。

我能想到的唯一解决方案是调整\ref命令并让它记录哪个定理在其他定理中被引用。当然,新命令必须知道它位于哪个定理中。一旦收集了依赖关系,就可以使用 TikZ 和 的组合自动绘制图形dot,这是一个自动进行图形布局的程序。请参阅http://www.graphviz.org/了解更多dot信息http://www.fauskes.net/code/dot2tex/如何转换dot为 LaTeX。

答案2

您可以相当容易地\ref写出一个 graphviz 文件行,该行从当前计数器值到引用标签的值,但如果出现以下情况,这显然会失败:

  • 你对引理和定理的编号方式不同 - 你必须以某种方式解释这种变化,也许通过修改标签本身。或者也许通过将调用\ref写入文件aux并将文件后处理aux到 graphviz 文件中。
  • 您将引理放在定理和其证明之间 - 您应该抽象对标签值的访问,可能通过添加一些\reallabel暂时改变所需值的命令。

正如我在 MO 上建议,您可能只应该考虑您的具体用例并制定出立即的解决方案。

相关内容