Si può iniziare con la definizione del file di tex modello come una stringa:
content = r'''\documentclass{article}
\begin{document}
...
\textbf{\huge %(school)s \\}
\vspace{1cm}
\textbf{\Large %(title)s \\}
...
\end{document}
'''
Successivamente, utilizzare argparse
per accettare i valori per il corso, il titolo, il nome e la scuola:
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--course')
parser.add_argument('-t', '--title')
parser.add_argument('-n', '--name',)
parser.add_argument('-s', '--school', default='My U')
Un po ' della formattazione delle stringhe è sufficiente per inserire gli argomenti in content
:
args = parser.parse_args()
content%args.__dict__
Dopo aver scritto il contenuto in un file, cover.tex,
with open('cover.tex','w') as f:
f.write(content%args.__dict__)
si potrebbe usare subprocess
per chiamare pdflatex cover.tex
.
proc = subprocess.Popen(['pdflatex', 'cover.tex'])
proc.communicate()
Si potrebbe aggiungere un comando lpr
anche qui per aggiungere la stampa al flusso di lavoro.
rimuovere i file non necessari:
os.unlink('cover.tex')
os.unlink('cover.log')
Lo script potrebbe allora essere chiamati in questo modo:
make_cover.py -c "Hardest Class Ever" -t "Theoretical Theory" -n Me
mettere tutto insieme,
import argparse
import os
import subprocess
content = r'''\documentclass{article}
\begin{document}
... P \& B
\textbf{\huge %(school)s \\}
\vspace{1cm}
\textbf{\Large %(title)s \\}
...
\end{document}
'''
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--course')
parser.add_argument('-t', '--title')
parser.add_argument('-n', '--name',)
parser.add_argument('-s', '--school', default='My U')
args = parser.parse_args()
with open('cover.tex','w') as f:
f.write(content%args.__dict__)
cmd = ['pdflatex', '-interaction', 'nonstopmode', 'cover.tex']
proc = subprocess.Popen(cmd)
proc.communicate()
retcode = proc.returncode
if not retcode == 0:
os.unlink('cover.pdf')
raise ValueError('Error {} executing command: {}'.format(retcode, ' '.join(cmd)))
os.unlink('cover.tex')
os.unlink('cover.log')
L'editor di testo è più veloce IMHO. Devi comunque inserire il titolo, il nome del corso, ecc. Ogni volta che stampi una copertina. Convertirei quel PDF in un modello di parole. Prova: http://www.pdftoword.com/ –
Potresti semplicemente usare un gestore di frammenti/un sistema di template in un editor di testo. –
questa è una buona idea! ma stavo cercando qualcosa di più autodidatta/geek. – juliomalegria