LaTex实战笔记 2-插入 Python 程序代码块
Posted 小白YouCans
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LaTex实战笔记 2-插入 Python 程序代码块相关的知识,希望对你有一定的参考价值。
LaTex插入 Python 程序代码块
本文以插入 Python 程序代码块为例,详细介绍 minted 包的下载、安装、配置和使用。
minted 是一个用于突出显示源代码的 LaTeX 包,特别适用于 Python 程序代码的显示,也可以用于其它常用程序语言。
minted 包使用 Pygments 库简化了表达性语法高亮显示,还可以使用 fancyvrb 自定义选项输出。
网上关于使用 minted 包的资料很多,但有些讲的不清楚,有些跳过了一些步骤。我也踩了不少坑,干脆写篇笔记记录下来。
1. 需求描述和解决方案
在 LaTeX 将程序代码块按照程序设计语言的语法进行高亮显示。
常用的解决方案有:
- 使用
listings
宏包。
应用 listings 宏包可以对程序源代码的关键词、注释和字符串等使用不同的字体、颜色、加粗,也可以为代码添加边框、背景等风格,还可以自动显示程序行数。
该方法需要自己设置语法高亮,在 LaTeX 中定义的参数比较复杂。 - 使用
minted
宏包。
应用 minted 宏包可以对程序源代码的 关键词、注释和字符串等使用不同的字体、颜色、加粗,也可以为代码添加边框、背景等风格,还可以自动显示程序行数。
该方法需要安装其他软件的 Pygments,安装配置比较复杂,但在 LaTeX 中的定义和使用比较简单。
本文以插入 Python 程序代码块为例,详细介绍 minted 包的下载、安装、配置和使用。
2. minted 包的安装与配置
2.1 安装 Python 第三方库 Pygments
Pygments 可以完全定制任何程序语言所支持的突出显示标记,包括字符串、数字、类型标识符和外来结构(如html标记)中的特殊格式序列。
minted
包需要安装其他软件的 Pygments。
基于 minted
包插入 Python 程序代码块,首先要在 Python 中安装 Pygments
第三方库。步骤如下:
-
打开命令行窗口
cmd
-
使用包管理工具
pip
安装Pygments
第三方库
pip install pygments
推荐从国内镜像源安装:
pip install pygments -i http://mirrors.aliyun.com/pypi/simple/
说明:也可以通过 Anaconda 或其它方法安装。
2.2 下载和安装 minted 宏包
-
TeXLive 和 MiKTeX 编辑器已经带有自带
minted
宏包,则可以跳过包的下载安装步骤。 -
如果编辑器没有自带
minted
宏包,则需要自行下载 minted.sty 文件,可以从 CTAN 或 Github 获得:- CTAN 官方地址:CTAN: Package minted (https://ctan.org/pkg/minted)
- Github 官方地址下载: github.com (https://github.com/gpoore/minted/tree/master/source)
-
下载后要将 minted.sty 文件复制到 LaTeX 的安装路径,如:D:\\Texlive\\texmf-local\\tex\\latex\\local
2.3 配置 LaTeX 编译环境
在 Latex 编译环境中要加入参数 –shell-escape
。
需要注意的是,如果在命令行窗口使用 latex 编译器,直接添加参数 –shell-escape
。例如:
latex -shell-escape test.tex
但是在 TeXworks 等编译器中设置时,添加的参数是 -–shell-escape
,注意是两个短横线。
- 对于 TexStudio 软件:
- 打开 TeXworks,选择菜单 编辑 >> 首选项;
- 弹出
TeXworks首选项
窗口,选择 排版; - 在下方
处理工具
选中XeLaTeX
,点击 编辑,弹出工具配置
窗口; - 选择添加按钮
+
+
+ 添加新参数,输入
-–shell-escape
,注意是两个短横线; - 选择箭头按钮
⇑
\\Uparrow
⇑ ,将输入的参数
-–shell-escape
上移到第一行。
- 对于 TexStudio 编辑器,通过 Options >> Configure TeXstudio >> Commands,将编译命令参数修改为:
xelatex.exe -synctex=1 -interaction=nonstopmode --shell-escape %.tex
- 对于 WinEdit 编辑器,通过 Options >> Execution Modes, 在 Console Applications 的 Accessories 中选择 XeLaTeX,在下方的 Switches 中加入
--shell-escape
即可。
3. minted 包的使用
3.1 基本使用
minted
包的基本使用是:
- 引用
minted
包: \\usepackageminted - 将程序代码插入 minted 环境中
\\beginminted<language>
<code>
\\endminted
测试案例:
新建一个 .tex 文件,复制以下代码进行编译,就可以测试 minted
的安装配置是否正确。注意要选择 xeLaTex 编译器。
\\documentclassarticle
\\usepackageminted
\\begindocument
\\beginmintedc
int main()
printf("hello, world");
return 0;
\\endminted
\\enddocument
运行结果:
注意事项:
minted
包与 LaTeX 中其它的一些定义可能存在冲突,同时存在将会报错。这也是本文推荐新建文件,复制上述简单代码进行测试的原因。
例如,将以下设置英文字体的语句加入刚才的 tex 文件中,就会发生错误,如下图所示。
\\usepackagenewtxtext % 设置英文字体
3.2 扩展使用
3.2.1 \\mint
命令行
对于单行的源代码,可以使用 \\mint
命令简写,语法为:
\\mint[⟨options⟩]⟨language⟩⟨delim⟩⟨code⟩⟨delim⟩
使用 \\mint
命令来排版一行程序代码,可以简化代码,效果与 minted
环境的输出是等效的。例如:
\\mintpython|import this|
3.2.2 \\mintinline
行内使用
使用 \\mintinline
命令可以排版一行文本内的程序代码,语法为:
\\mintinline[⟨options⟩]⟨language⟩⟨delim⟩⟨code⟩⟨delim⟩
\\mintinline
命令的分隔符可以是一对字符,如\\ mint,也可以是一对匹配的花括号,如 。例如:
words \\mintinlinepythonprint(x**2) words
3.2.3 \\inputminted
文件输入
使用 \\inputmented
命令可以读取和格式化整个文件,语法为:
\\inputminted[<options>]<language><filename>
4. Pygments 样式表
Pygments 提供了很多样式表,因此设置所需的样式表就可以切换高亮显示的效果。语法为:
\\usemintedstyle[⟨language⟩]⟨style⟩
可以对整个文档(不指定语言)设置新的样式,也可以仅针对特定语言设置新的样式。
stylename可以通过 Pygments 在线演示 https://pygments.org/demo/ 或者 p y g m e n t i z e − L s t y l e s pygmentize -L styles pygmentize−Lstyles 命令查看。所有可用样式表的列表如下:
* default:
The default style (inspired by Emacs 22).
* emacs:
The default style (inspired by Emacs 22).
* friendly:
A modern style based on the VIM pyte theme.
* colorful:
A colorful style, inspired by CodeRay.
* autumn:
A colorful style, inspired by the terminal highlighting style.
* murphy:
Murphy's style from CodeRay.
* manni:
A colorful style, inspired by the terminal highlighting style.
* material:
This style mimics the Material Theme color scheme.
* monokai:
This style mimics the Monokai color scheme.
* perldoc:
Style similar to the style used in the perldoc code blocks.
* pastie:
Style similar to the pastie default style.
* borland:
Style similar to the style used in the borland IDEs.
* trac:
Port of the default trac highlighter design.
* native:
Pygments version of the "native" vim theme.
* fruity:
Pygments version of the "native" vim theme.
* bw:
* vim:
Styles somewhat like vim 7.0
* vs:
* tango:
The Crunchy default Style inspired from the color palette from the Tango Icon Theme Guidelines.
* rrt:
Minimalistic "rrt" theme, based on Zap and Emacs defaults.
* xcode:
Style similar to the Xcode default colouring theme.
* igor:
Pygments version of the official colors for Igor Pro procedures.
* paraiso-light:
* paraiso-dark:
* lovelace:
The style used in Lovelace interactive learning environment. Tries to avoid the "angry fruit salad" effect with desaturated and dim colours.
* algol:
* algol_nu:
* arduino:
The Arduino® language style. This style is designed to highlight the Arduino source code, so exepect the best results with it.
* rainbow_dash:
A bright and colorful syntax highlighting theme.
* abap:
* solarized-dark:
The solarized style, dark.
* solarized-light:
The solarized style, light.
* sas:
Style inspired by SAS' enhanced program editor. Note This is not meant to be a complete style. It's merely meant to mimic SAS' program editor syntax highlighting.
* stata:
Light mode style inspired by Stata's do-file editor. This is not meant to be a complete style, just for use with Stata.
* stata-light:
Light mode style inspired by Stata's do-file editor. This is not meant to be a complete style, just for use with Stata.
* stata-dark:
* inkpot:
* zenburn:
Low contrast Zenburn style.
* gruvbox-dark:
Pygments version of the "gruvbox" dark vim theme.
* gruvbox-light:
Pygments version of the "gruvbox" Light vim theme.
5. 自定义显示风格
minted
可以通过定义键值
k
e
y
=
v
a
l
u
e
key=value
key=value 使用选项,自定义显示风格。
行间和行内代码分别用命令\\setminted
和\\setmintedinline
设置。
常用选项很多,具体参见 minted
说明文档。
本文只给出一个案例。
\\documentclassarticle
\\usepackageminted % -shell-escape
\\begindocument
\\beginminted[mathescape,
linenos,
numbersep=5pt,
gobble=2,
frame=lines,
framesep=2mm]csharp
string title = "This is a Unicode π in the sky"
/*
Defined as $\\pi=\\lim_n\\to\\infty\\fracP_nd$ where $P$ is the perimeter
of an $n$-sided regular polygon circumscribing a
circle of diameter $d$.
*/
const double pi = 3.1415926535
\\endminted
\\enddocument
显示结果如下:
(本文完)
版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125137881)
Copyright 2022 youcans, XUPT
Crated:2022-6-5
以上是关于LaTex实战笔记 2-插入 Python 程序代码块的主要内容,如果未能解决你的问题,请参考以下文章