如何使用python脚本在latex文档中插入值?

时间:2015-12-03 08:01:20

标签: python latex pdflatex

我有乳胶文档,其中有各种字段,并且动态生成值。因此,我计划的是使用python脚本生成与字段相关的值,然后将其插入到latex文档中。该文件如下:

Project = ABC
Version = 1.0.0
Date = xyz

现在使用python脚本填充项目,版本和日期的值。那么,请帮助我如何在乳胶文件中有值。我搜索并从python生成了整个乳胶文档,但我希望这两个过程是分开的。所以,请帮忙。我和我一起提供了乳胶文档代码,所以我真的不想使用代码作为我的新手,我只想用python在各个字段中提供值。

1 个答案:

答案 0 :(得分:3)

如果我理解你的意图,我只会用命名变量替换LaTeX源中的值,例如$project而不是ABC$version而不是1.0.0然后,您可以运行以下Python脚本,以实际值替换这些命名变量。这假定LaTeX源不包含与变量语法$ xy冲突的其他文本。如果不是这种情况,可以选择其他语法。

您没有指定如何将值输入python程序。在这里,我假设你可以在python代码中静态定义它们。

当在源文件中找到未定义的变量名称(字典中不存在)时,程序将失败。它也可以更改为保持此类文本不变或根据您的需要将其替换为空字符串。

#!/usr/bin/env python

import sys
import re

variables = {
    'project': 'ABC',
    'version': '1.0.0',
    'date': 'xyz',
}

def run(args):
    if len(args) == 1:
        filename = args[0]
    else:
        sys.stderr.write("Filename must be passed as argument.\n")
        sys.exit(1)

    regex = re.compile(r"\$([a-zA-Z][a-zA-Z_]*)")
    with open(filename) as f:
        for line in f:
            sys.stdout.write(regex.sub(lambda m: variables[m.group(1)], line))

if __name__ == '__main__':
    run(sys.argv[1:])