如何以编程方式区分TeX和LaTeX文件

时间:2014-10-08 15:42:15

标签: python latex tex

我有很多.tex个文件(TeX / LaTeX),我正在编写一个分析这些文件的Python脚本。我只希望分析LaTeX文件,因此我想删除所有纯TeX文件。

我已经考虑过确保\begin{document}包含在每个文件中,但这会拒绝相当多的文件,因为几个文件只是书中的章节,长列表或论文中的部分没有\begin{document}命令。

有没有人知道如何过滤掉我的收藏品中的所有纯TeX文件?

2 个答案:

答案 0 :(得分:1)

我认为,如果你想对可以使用\input\include输入的文件保持敏感,那么这样做的方式就不太可能是完全万无一失的。但是,给定一个特定的文件,您可以通过发现以下第一个找到的信息,以相当大的信心对其进行分类。

  1. TeX文件通常结束 \bye,而且通常没有在LaTeX文件中定义。
  2. \begin不太可能在'普通'TeX文件中定义(尽管\end格式定义plain)。
  3. 这可能是你能做的最好的事情,虽然这对于你似乎正在进行的那种统计分析肯定是足够的。

    没有什么可以阻止某人编写TeX文件,将\begin定义为某种东西,也没有人写一个LaTeX文件来定义\bye来表示某些东西。从您的角度来看,问题是没有任何 TeX构造在LaTeX文件中被禁止(反之亦然),即使像\halign这样的东西也是如此在LaTeX中很少见。实际上,由于LaTeX只是一种TeX格式,因此两者之间根本没有基本差异。

    只是为了推动后一点回家,有ConTeXt之类的东西,这是一种TeX格式,它不是plain,但也不是LaTeX。但这很罕见。

答案 1 :(得分:-3)

是的,请将所有文件名添加到数组中,通过列出目录来执行此操作。

    x = os.listdir("path") 

这会将目录内容添加到变量x中。 然后循环它:

    PureTex = []
    for Char in x:
        if Char.endswith('.tex'):
            PureTex.append(Char)
        else:
            pass

现在PureTex数组将包含纯文件。