您可以通過定義模板TEX文件作爲字符串開頭:
content = r'''\documentclass{article}
\begin{document}
...
\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')
有點字符串格式化只需要將參數粘貼到content
:
args = parser.parse_args()
content%args.__dict__
出內容寫入到文件中,cover.tex後,
with open('cover.tex','w') as f:
f.write(content%args.__dict__)
你可以使用subprocess
調用pdflatex cover.tex
。
proc = subprocess.Popen(['pdflatex', 'cover.tex'])
proc.communicate()
您也可以在此處添加lpr
命令以將打印添加到工作流程。
刪除不必要的文件:
os.unlink('cover.tex')
os.unlink('cover.log')
腳本然後可以這樣調用:
make_cover.py -c "Hardest Class Ever" -t "Theoretical Theory" -n Me
全部放在一起,
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')
文本編輯器更快恕我直言。每次打印封面時,您仍然需要輸入標題,課程名稱等。我會將該PDF轉換爲單詞模板。試試:http://www.pdftoword.com/ –
您可以在文本編輯器中使用代碼管理器/模板系統。 –
這是個好主意!但我正在尋找更多的自制/怪胎。 – juliomalegria