您可以首先将模板tex文件定义为字符串:
content = r'''documentclass{article}begin{document}...textbf{huge %(school)s \}vspace{1cm}textbf{Large %(title)s \}...end{document}'''接下来,使用
argparse接受课程,标题,名称和学校的值:
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粘贴进去只需要做一些字符串格式化
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 argparseimport osimport subprocesscontent = 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()retpre = proc.returnpreif not retpre == 0: os.unlink('cover.pdf') raise ValueError('Error {} executing command: {}'.format(retpre, ' '.join(cmd)))os.unlink('cover.tex')os.unlink('cover.log')


