调用pdflatex的简单包装

pdflatex的Python项目详细描述


概述

这是一个简单的模块,以一种简单和干净的方式执行pdflatex。 默认情况下,pdflatex命令行实用程序会生成大量输出,并可以创建许多文件。

实例化

pdflatex类可以直接实例化,也可以通过帮助程序来实例化:

  • 来自_texfile(文件名)
  • 来自二进制字符串(binstr,jobname)
  • 来自_jinja2_template(jinja2_template,jobname=none,**render_kwargs)

jobname是可用于创建有效文件名的任何字符串;

示例:

在下面的所有示例中,文件系统中没有文件, 除非使用keep_pdf_filekeep_log_file参数请求 到create_pdf方法。

从.tex文件创建pdf

from pdflatex import PDFLaTeX

pdfl = PDFLaTeX.from_texfile('my_file.tex')
pdf, log, completed_process = pdfl.create_pdf(keep_pdf_file=True, keep_log_file=True)

函数create_pdf返回3个结果:

  1. 二进制字符串中的pdf文件;
  2. pdflatex生成的日志文件为text;
  3. 带有pdflatex执行结果的subprocess.completeprocess的实例。

另外,create_pdf需要几个参数:

  1. keep_pdf_file:可选布尔值。默认为false。如果为真,则保留PDF文件。它的位置和名称取决于-output directory和-jobname参数的值。它还派生自tex文件名或jinja2模板文件名(如果未给定参数);
  2. 保存日志文件:同样的事情,对于日志文件。
  3. env:执行pdflatex的默认env映射。你可能想跳过这个。

从jinja2模板创建pdf

import os
import pdflatex
import jinja2 

env = pdflatex.JINJA2_ENV
env['loader'] = jinja2.FileSystemLoader(os.path.abspath('.'))
env = jinja2.Environment(**env)
template = env.get_template('jinja.tex')
pdfl = pdflatex.PDFLaTeX.from_jinja2_template(template, data='Hello world!')
pdf, log, cp = pdfl.create_pdf()

不言而喻,只要注意pdflatex包含一个字典 Jinja2_env提供了一个环境参数建议,供您使用 Jinja2和乳胶。IT OS定义为:

JINJA2_ENV = {'block_start_string': '\BLOCK{',
              'block_end_string': '}',
              'variable_start_string': '\VAR{',
              'variable_end_string': '}',
              'comment_start_string': '\#{',
              'comment_end_string': '}',
              'line_statement_prefix': '%%',
              'line_comment_prefix': '%#',
              'trim_blocks': True,
              'autoescape': False }

从二进制字符串创建pdf文件:

import pdflatex

with open('my_file.tex', 'rb') as f:
    pdfl = pdflatex.PDFLaTeX.from_binarystring(f.read(), 'my_file')
pdf, log, cp = pdfl.create_pdf()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Map<String,String>传递给需要Map<String,Object>   java在循环中使用字符串而不是StringBuilder是否会造成内存损失?   jnlp如何更新java控制台JRE?   java更改、修改和重新打包CXFAPI源文件   JavaFXJava应用程序在Fedora上运行一段时间后关闭   使用来自不同类的方法的java   java如何通过ant脚本在linux中使用subst?   java在使用camunda modeler进行base64编码/解码时出错   获取java。netbeans、weblogic和fastswap设置为true时的lang.NoSuchMethodError   java如何提高FinalizerThread在GC中收集对象的优先级   java检测具有相同根的单词   netbeans crud应用程序中的java错误