2009-05-02 46 views
2

我对乳胶本身了解不多。我需要的是可用命令的列表。所有标准命令和来自“usepackage”声明的。如何获得乳胶文档上的可用命令列表?

我目前专注于MiKTeX,所以如果MiKTeX确实提供了,它当然很棒,否则我会得到解析某些.sty或.def文件的想法。但我不明白这些文件背后的语法。如果分析是唯一的解决方案,我应该在这些文件中寻找什么?

回答

0

乳胶是一个宏包,宏系统(一些例外的例外)是非常难以解析的。

事实上,没有像样的胶乳到html转换器经过这些年来证明了这一点。

但无论如何,在现有的可以给你一个例子,如何着手,寻找latex2html(在Perl),tex2ht和三叶胶

+0

我想我不能说清楚,我不会将乳胶转换成任何东西,也不会解析乳胶文档。当我提到解析时,它解析了包描述以获取包提供的命令。 – 2009-05-02 11:58:05

+0

也许胶乳到html的困难更多的是难以表达的问题。乳胶只是提供了更多的控制,所以不是所有的乳胶结构*都可以映射到html,并且乳胶的图灵完整性意味着你永远无法覆盖所有的基础。 – dmckee 2009-05-02 16:40:25

1

在我看来,你可以使用像一个“小抄”。有一个here,但肯定会有更多的人躺在周围。

3

解析TeX代码绝不是获得所有控制序列列表的唯一方法。其他可能性包括:

  • 导致TeX在加载相关包后转储其数据结构,然后解析转储文件;当您运行latex命令时,真正发生的是tex二进制文件加载latex.fmt转储文件,该文件是通过使用相同的二进制文件解析LaTeX的所有内置代码并转储其数据结构而生成的;

  • 修改TeX的源代码,每次控制序列被定义时输出一些东西;

  • 在可编写脚本的调试器中运行TeX,在序列插入散列表的位置插入断点,并让脚本输出序列的名称。

这些都不是一个特别简单的解决方案,但可能比自己编写一个与TeX等价的解析器更容易。要开始,请查看TeX: The Program和TeX系统的源代码。

如果您的目标是在编辑器中提供“智能感知”,那么仅仅命令序列列表将不会有太大的帮助:当用户输入\ref{时,您应该提供文档中定义的标签列表(奖金如果在章节标签列表中键入Chapter~\ref{结果,而不是所有标签);对于\settowidth{,长度命令列表;为\begin{,环境清单;等等。

你可以看到AUCTeX(一个Emacs模式)的功能;它有一个有限的,基于regexp的解析器来处理常见的情况,以及一些扩展功能的特定于包的库。

0

从你的问题中不清楚你是否想要一个在程序中使用的列表,或者只是为自己的文档?

在后一种情况下,最近的TeX发行版包括命令texdoc,它可以找到并打开任何问题的文档,例如texdoc hyperref。它有为方便定义的别名:texdoc koma将查找并打开koma-script手册,即使实际文件名为scrguien.pdf