2014-10-08 27 views
0

區分我的.tex文件(的TeX/LaTeX的)大集合,我正在寫一個Python腳本分析這些文件。我只希望分析LaTeX文件,因此我想刪除所有純TeX文件。如何以編程TeX和一個LaTeX文件

我已經考慮確保\begin{document}包含在每個文件中,但是這會拒絕相當大量的文件,因爲一些文件只是書中的章節,長列表或論文中沒有的章節命令\begin{document}

沒有任何人有一個想法,如何過濾所有的純TeX的文件從我的收藏品了嗎?

+0

只是出於好奇,你可以給的區別在哪裏的問題給你不知道如何反正處理的文件的使用情況(例如,他們可能只是包含章節乳膠片段,甚至只有選項集合)? – 2014-10-08 19:05:08

+0

如何使用'\ begin {document}'來查找主要的LaTeX文件,然後在這些文件中搜索'\ input'和'\ include'以查找包含LaTeX片段的文件。任何沒有包含在已知LaTeX文件中的'\ begin {document}'的文件都可能是一個普通的TeX文件。 – 2014-10-08 21:28:39

+0

@BenjaminBannier:我試圖確定一個學校項目中最常用的LaTeX排版結構。 – askemottelson 2014-10-09 05:30:45

回答

-3

對沒錯,添加所有文件名陣列,通過列出的目錄中做到這一點。

x = os.listdir("path") 

這會將目錄內容添加到變量x中。通過它 然後循環:

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

現在PureTex陣列將包含純文件。

+0

他的問題在於,在典型的約定中* TeX和LaTeX文件都以'.tex' *結尾。 – 2014-10-08 17:28:32

1

我認爲這樣做不太可能是一種完全萬無一失的方式,因爲您希望對可以用\input\include輸入的文件敏感。然而,給定一個特定的文件,你可以通過發現你找到的以下第一個文件來相當有信心地對它進行分類。

  1. TeX的文件通常年底\bye,而這通常不是一個LaTeX文件中定義。
  2. 宏'\begin不太可能在'正常'TeX文件中定義(儘管\endplain格式中定義)。

這可能是您可以做的最好的事情,儘管對於您似乎正在進行的那種統計分析來說,這確實足夠了。

沒有什麼可以阻止某人從定義\begin來定義一個TeX文件意味着什麼,也沒有人寫一個LaTeX文件來定義\bye意味着什麼。這個問題,從您的角度來看,是有沒有了在一個LaTeX文件(反之亦然)真正禁止任何 Tex構造,即使之類的東西\halign將是乳膠罕見。事實上,因爲乳膠是「只是」 TeX的格式,沒有任何兩者之間的根本差異,在所有。

只是爲了推動後者的家庭,有這樣的東西,如ConTeXt,這是一種TeX格式不是plain,但它不是LaTeX。雖然這很少見。

相關問題