import subprocess import csv import time def compile_latex(latex_file): try: # Run the pdflatex command to compile the LaTeX file subprocess.run(['pdflatex', latex_file], check=True) print(f'Successfully compiled {latex_file}') except subprocess.CalledProcessError as e: print(f'Error compiling {latex_file}: {e}') def timesheet2Tex(): with open("timesheet.tex", 'r') as f: lines = f.readlines() timesheetStart = findIn(lines, "% OPEN Timesheet") timesheetStop = findIn(lines, "% CLOSE Timesheet") timetable = csv2Table("timesheet.csv") with open("timesheet.tex", 'w') as f: f.write(''.join(lines[:timesheetStart+1]) + timetable + ''.join(lines[timesheetStop:])) def csv2Table(inFile): with open(inFile, 'r') as f: reader = csv.reader(f) rows = list(reader) out = "\\begin{table}[h!]\n\\centering\n" out += "\\begin{tabular}[t]{|" + " c | c | c | c | p{6cm} |}\n" out += "\\hline\n" for row in rows: # Escape special LaTeX characters row = [cell.replace('&', '\\&') for cell in row] out += " & ".join(row) + " \\\\\n" out += "\\hline\n" out += "\\end{tabular}\n\\end{table}\n" return out def findIn(arr, target): for i, s in enumerate(arr): if target in s: return i return -1 if __name__ == "__main__": timesheet2Tex() compile_latex('timesheet.tex') # latex makes all kinds of files :( subprocess.run(['rm -f *.aux *.log *.fdb_latexmk *.fls *.gz'], check=True, shell=True)