文章目录
- 1.背景
- 2. 基本示例
- 2.1 hello world
- 2.1.1 代码与输出结果
- 2.1.2 说明
- 2.1.3 如何编译使用了pythontex宏包的Latex文档
- 2.1.4 如何既输出python代码又输出代码执行结果
- 2.2 在Latex中嵌入python变量的值
- 2.2.1 示例代码与文档输出
- 2.2.2 说明
- 2.3 在latex文档中输出控制台会话
- 2.3.1 代码示例与输出结果
- 2.3.2 说明
- 3. 更多高级示例
1.背景
latex可以做许多事,因为latex语言具有一定的程序描述能力。但是,在一些情况下,所需要的编程工作,往往令人痛苦。
如果能够在latex文档中使用流行的编程语言进行文档自动化,那该多好?latex在2020年前后,就已经具备这种能力了,最新版的texlive已经完整地提供了这一功能,它以pythontex宏包的形式体现出来。要使用它,您的电脑应该安装python2,最好安装python3,其路径在系统环境变量PATH中。
简而言之:pythontex宏包使得我们可以在latex文档中使用python语言编写程序代码,输出python代码自身、代码执行结果或两者的混合到最终生成的PDF文档中。这种特性使得latex文档成为一种可再生的文档(reproducible document)。也使得在web应用中自动生成pdf文档多了一个可选的技术方案。
2. 基本示例
2.1 hello world
2.1.1 代码与输出结果
\documentclass{article}
\usepackage{pythontex}
\begin{document}
\begin{pycode}
print(r'\emph{Hello} world!')
\end{pycode}
\end{document}
上述latex文件正确编译后,pdf文档将出现如下内容:
2.1.2 说明
这个示例展示了pythontex的基本用法:
(1)在latex文档导言区中引入pythontex宏包
\usepackage{pythontex}
(2)使用pycode环境,可以把一段python代码的执行结果输出
到文档。
特别注意:不要用tab制表符进行缩进,一律使用空格缩进,否则就会造成语法错误。
其中,print函数是用来向文档中输出结果的。
2.1.3 如何编译使用了pythontex宏包的Latex文档
三步曲:
$ xelatex xxx.tex # 编译,将python代码分离出来
$ pythontex xxx.tex # 编译,执行python代码,把结果保存
$ xelatex xxx.tex # 把保存的结果编译到最终的输出文档
2.1.4 如何既输出python代码又输出代码执行结果
使用pyblock环境和printpythontex命令,代码和PDF内容如下:
2.2 在Latex中嵌入python变量的值
2.2.1 示例代码与文档输出
2.2.2 说明
使用pycode环境和py命令,可以避免复制粘贴错误。
使用py命令,可以执行一些简单的运算,把运算结果输出到文档中。
例如,可以通过命令\py{2**12}在文档中产生
2
12
2^{12}
212的运算结果。
相应于环境“pycode”、“pyblock”,pythontex包还提供了具有相同
功能的命令,分别为pyc,pyb,都可以带可选参数。具体请参考pythontex帮助文档。
\py{x}还可以写成\py#x#形式。
2.3 在latex文档中输出控制台会话
2.3.1 代码示例与输出结果
2.3.2 说明
pyconsole环境相当于是把python在命令行下的输出作为文稿的输出。
如果希望把该环境中的变量的值嵌入到文档,怎么办?
使用命令:\pycon
具体请参考文档:pythontex.pdf
3. 更多高级示例
参考: