簡體   English   中英

如何使用使用Python導入(.tex文件),創建新的(.tex文件)並從導入的(.tex文件)附加新的(.tex文件)

[英]How to use use Python to import (.tex file), create a new (.tex file) and append the new (.tex file) from the imported (.tex file)

我有幾個(1000+). .tex文件,其內容如下:

File1.tex:

\documentclass[15pt]{article}
\begin{document}

Question1:

$f(x)=sin(x)$\\

Question2:

$f(x)=tan(x)$

\end{document}

File2.tex的結構類似:

\documentclass[15pt]{article}

\begin{document}

Question1:

$f(x)=cos(x)$\\


Question2:

$f(x)=sec(x)$\\

Question3:

$f(x)=cot(x)$

\end{document}

我希望做的是寫一個Python腳本,讓我從中選擇問題1 file1.tex和問題3 file2.tex和編譯新的file3.tex以下格式文件(或PDF格式):

\documentclass[15pt]{article}
\begin{document}

Question1:
$f(x)=sin(x)$\\

Question2:
$f(x)=cot(x)$

\end{document}

PS-我不介意我是否可以在LaTex上進行此類工作。 我只是認為使用Python最終可以創建GUI。

到目前為止,我已經設法通過手動鍵入所需內容來讀取/附加.tex文件,而不是創建某種系統使我可以將一個或多個.tex文件的特定部分“復制”到另一個.tex文件中。 。

我完全使用了file1和file2.tex的文件。 我在全文中留下評論,而不是逐步解釋。

預處理

預處理包括創建一個xlsx文件,該文件在第一列中將包含tex文件的所有名稱。

import os
import xlsxwriter

workbook = xlsxwriter.Workbook('Filenames.xlsx')
worksheet = workbook.add_worksheet("FileNames")
worksheet.write(0, 0, "NameCol")

path = os.getcwd()  # get path to directory
filecount = 1
for file in os.listdir(path):  # for loop over files in directory
    if file.split('.')[-1] == 'tex':  # only open latex files
        worksheet.write(filecount, 0, file)
        filecount += 1

workbook.close()

選擇問題

現在,您將通過右邊的列表,就像我在文件中遇到了什么問題一樣。 文件名.xlsx

后期過程

現在,我們可以運行我們的xlsx文件,並從中創建一個新的乳膠文件。

import pandas as pd
import math
import os

# get data
allfileqs = []
df = pd.read_excel('Filenames.xlsx')
for row in df.iterrows():
    tempqs = []
    for i in range(len(row[1].values) - 1):
        if math.isnan(row[1].values[i + 1]):
            continue
        else:
            tempqs.append(int(row[1].values[i + 1]))
    allfileqs.append(tempqs)
print(allfileqs)
allfileqs = [["Question" + str(allfileqs[i][j]) + ':' for j in range(len(allfileqs[i]))] for i in range(len(allfileqs))]

starttex = [r'\documentclass[15pt]{article}', r'\begin{document}']
endtex = [r'\end{document}']
alloflines = []


path = os.getcwd()  # get path to directory
for file in os.listdir(path):  # for loop over files in directory
    if file.split('.')[-1] == 'tex':  # only open latex files
        lf = open(file, 'r')
        lines = lf.readlines()
        # remove all new lines, each item is on new line we know
        filt_lines = [lines[i].replace('\n', '') for i in range(len(lines)) if lines[i] != '\n']
        alloflines.append(filt_lines)  # save data for later
        lf.close()  # close file
# good now we have filtered lines
newfile = []
questcount = 1
for i in range(len(alloflines)):
    for j in range(len(alloflines[i])):
        if alloflines[i][j] in allfileqs[i]:
            newfile.append("Question" + str(questcount) + ":")
            newfile.append(alloflines[i][j + 1])
            questcount += 1
# okay cool we have beg, middle (newfile) and end of tex
newest = open('file3.tex', 'w')  # open as write only
starter = '\n\n'.join(starttex) + '\n' + '\n\n'.join(newfile) + '\n\n' + endtex[0]
for i in range(len(starter)):
    newest.write(starter[i])
newest.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM