LaTex实战笔记 4-插入 Python 程序代码块

LaTex插入 Python 程序代码块

    • 1. 需求描述和解决方案
    • 2. minted 包的安装与配置
      • 2.1 安装 Python 第三方库 Pygments
      • 2.2 下载和安装 minted 宏包
      • 2.3 配置 LaTeX 编译环境
    • 3. minted 包的使用
      • 3.1 基本使用
      • 3.2 扩展使用
        • 3.2.1 `\mint` 命令行
        • 3.2.2 `\mintinline` 行内使用
        • 3.2.3 `\inputminted` 文件输入
    • 4. Pygments 样式表
    • 5. 自定义显示风格

本文以插入 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 包: \usepackage{minted}
  • 将程序代码插入 minted 环境中
\begin{minted}{<language>}
<code>
\end{minted}

测试案例:

新建一个 .tex 文件,复制以下代码进行编译,就可以测试 minted 的安装配置是否正确。注意要选择 xeLaTex 编译器。

\documentclass{article}\usepackage{minted}\begin{document}
\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}
\end{document}

运行结果:

在这里插入图片描述

注意事项:

minted 包与 LaTeX 中其它的一些定义可能存在冲突,同时存在将会报错。这也是本文推荐新建文件,复制上述简单代码进行测试的原因。

例如,将以下设置英文字体的语句加入刚才的 tex 文件中,就会发生错误,如下图所示。

\usepackage{newtxtext} % 设置英文字体

在这里插入图片描述


3.2 扩展使用

3.2.1 \mint 命令行

对于单行的源代码,可以使用 \mint 命令简写,语法为:

\mint[⟨options⟩]{⟨language⟩}⟨delim⟩⟨code⟩⟨delim⟩

使用 \mint 命令来排版一行程序代码,可以简化代码,效果与 minted 环境的输出是等效的。例如:

\mint{python}|import this|

3.2.2 \mintinline 行内使用

使用 \mintinline 命令可以排版一行文本内的程序代码,语法为:

\mintinline[⟨options⟩]{⟨language⟩}⟨delim⟩⟨code⟩⟨delim⟩

\mintinline 命令的分隔符可以是一对字符,如\ mint,也可以是一对匹配的花括号,如 {}。例如:

words \mintinline{python}{print(x**2)} words

3.2.3 \inputminted 文件输入

使用 \inputmented 命令可以读取和格式化整个文件,语法为:

\inputminted[<options>]{<language>}{<filename>}

4. Pygments 样式表

Pygments 提供了很多样式表,因此设置所需的样式表就可以切换高亮显示的效果。语法为:

\usemintedstyle[⟨language⟩]{⟨style⟩}

可以对整个文档(不指定语言)设置新的样式,也可以仅针对特定语言设置新的样式。

stylename可以通过 Pygments 在线演示 https://pygments.org/demo/ 或者 pygmentize−Lstylespygmentize -L stylespygmentizeLstyles 命令查看。所有可用样式表的列表如下:

* 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 可以通过定义键值 key=valuekey=valuekey=value 使用选项,自定义显示风格。

行间和行内代码分别用命令\setminted\setmintedinline设置。

常用选项很多,具体参见 minted 说明文档。

在这里插入图片描述

本文只给出一个案例。

\documentclass{article}
\usepackage{minted} %  -shell-escape 
\begin{document}
\begin{minted}[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}\frac{P_n}{d}$ where $P$ is the perimeterof an $n$-sided regular polygon circumscribing acircle of diameter $d$.*/const double pi = 3.1415926535
\end{minted}
\end{document} 

显示结果如下:

在这里插入图片描述

(本文完)


版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125137881)
Copyright 2022 youcans, XUPT
Crated:2022-6-5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 安装与配置

Redis 安装与配置 Window 下安装 下载地址&#xff1a;https://github.com/MSOpenTech/redis/releases。 这里我们下载 Redis-x64-xxx.zip 解压到指定目录&#xff1a;  打开命令行&#xff08;cmd&#xff09;跳转至解压路径,并运行安装命令&#xff0c;结果如图 C:\U…

智能家居(2)智能体验与智能交互

1. 智能体验的分析与讨论 随着信息和网络技术的发展&#xff0c;可以网络连接的电子电器产品越来越丰富&#xff0c;智能家居、智慧园区、智能汽车等智能控制系统和产品应用越来越广泛。 智能交互终端是智能控制系统的人机交互接口&#xff0c;既是实现智能功能的重要载体&am…

netbeans java9_Java 开发新选择?Apache NetBeans IDE 9.0 备受好评

Apache NetBeans 9.0 目前已发布 Beta 版本&#xff0c;离正式版本越来越近。9.0 版本的主要目标囊括 Oracle 捐赠的大量代码&#xff0c;以及提供 Java 9 和 10 支持。Apache NetBeans 近期在社区上发起了一项满意度调查&#xff0c;用于验收用户如何对 9.0 版本的看法&#x…

LaTex实战笔记 1-快速入门

LaTex插入 Python 程序代码块1. 为什么用 LaTeX&#xff1f;2. LaTeX 的安装与配置2.1 安装 TeXLive2.2 选择 LaTeX 编辑器3. LaTeX 的初次使用3.1 最短的 LaTeX 示例3.2 从模板创建文档3.3 编译生成 PDF 文件4. 基于模板编辑文档4.1 tex 模板的基本结构4.2 基于模板编辑排版5.…

java fx 皮肤_JavaFX 皮肤功能

作为RIA技术之一&#xff0c;为了让应用程序的界面看起来更加的漂亮或者更有个性&#xff0c;皮肤功能自然是必不可少的。在JavaFX中&#xff0c;可以使用CSS样式表来进行皮肤的更换。不过JavaFX中的CSS是基于W3C CSS version 2.1&#xff0c;但又不完全相同。JavaFX中的换肤有…

LaTex实战笔记 2-文档层次与结构

LaTeX 支持结构化文档的编写。 什么是结构化文档&#xff1f;会议论文、期刊论文、学位论文&#xff0c;这类有统一结构、统一版式的文档&#xff0c;是典型的结构化文档。而报刊文章的结构则因人而异&#xff0c;因文而异&#xff0c;是典型的非结构化文档。 1. 结构化文档的…

java爬取小说

使用Java爬取网站&#xff1a;http://www.shicimingju.com的小说内容 代码详解 1.在本地创建存储位置 2.编写正则表达式 3.循环获取内容 4.把内容存入文件夹中 5.判断成功或失败 效果演示 代码展示 package text;import java.io.BufferedReader;import java.io.BufferedWri…

智能家居(3)智能交互的竞品分析

智能家居系统与产品的交互方式&#xff0c;早已从物理按键、遥控操作发展为以触摸面板手机APP作为主要的交互方式&#xff0c;并已经实现了语音交互、生物识别等新技术的导入&#xff0c;未来可能会流行基于视觉的交互方式、基于机器学习的无感交互方式。融合这些交互方式的多模…

java爬取单张图片

我们经常需要在网页上获取一些图片&#xff0c;有的图片我们是可以直接下载使用&#xff0c;有的图片需要我们登陆账号甚至付费下载&#xff0c;所以在此我写了一个使用Java爬取任意网页单张图片的爬虫。 代码解析 1.图片的网络位置 2.进行访问和下载 3.建立本地存储位置 效果…

LaTex实战笔记 3-宏包与控制命令

1. LaTeX 命令的基本架构 LaTex 排版系统对于格式控制、公式编辑比 Word 更加灵活、准确。 Tex 环境中&#xff0c;字符、图片等各种文档内容都装在不同的盒子&#xff08;box&#xff09;容器内。这些盒子根据 Tex/Latex 的默认规则和控制命令组合为更大的盒子。字符组合为单…

【OpenCV 例程200篇】201. 图像的颜色空间转换

OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换&#xff08;cv.LUT&#xff09; 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 文章目录【youcans 的 OpenCV 例程200篇】201. 图像的颜色空间转换图像的色彩空间基础图像的…

CSDN 搜索工具使用体验与对比分析

搜索工具是 C 站的核心产品&#xff0c;也是广大计算机学习读者的最爱。基于 CSDN 的程序设计与基于 Baidu 的程序设计并肩&#xff0c;成为计算机学习者的最爱。 本文对几种常用的计算机行业相关搜索工具进行对比分析。 本次对比分析只针对各网站的 PC 端网页版。 文章目录0…

【OpenCV 例程200篇】202. 查表快速替换(cv.LUT)

OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换&#xff08;cv.LUT&#xff09; 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 文章目录【youcans 的 OpenCV 例程200篇】202. 查表快速替换&#xff08;cv.LUT&#xff09;…

LaTex实战笔记 4-字体格式

LaTeX 中的字体有 5 种属性&#xff1a; 字体编码&#xff1a;正文字体编码&#xff0c;数学字体编码字体族&#xff1a;罗马字体&#xff0c;无衬线字体&#xff0c;打字机字体&#xff08;等宽字体&#xff09;等字体系列&#xff1a;粗细&#xff0c;宽度字体形状&#xff…

PHP在哪里执行_php文件放在哪运行

下载一个WampServer (集成环境)安装后&#xff0c;把要运行的放到安装目录下的www(我安装在D盘&#xff1a;D:\wamp\wamp\www)&#xff0c;然后本机访问localhost/text.php(text.php是你要运行的php文件)。WampServer(推荐学习&#xff1a;PHP编程从入门到精通)WampServer是一款…

LaTex实战笔记 5-段落格式

2.1 换行和分段 通常 LATEX 会自动换行&#xff0c;也可以用\\ 或\newline 命令来强制换行。 开始一个段落&#xff0c;可以通过插入一个空行&#xff0c;也可以使用 \par 命令来强制分段。 连续两个换行符就是一个空行&#xff0c;可以将文字分段。但连续多个换行符&#xff…

【OpenCV 例程200篇】203. 伪彩色图像处理

OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换&#xff08;cv.LUT&#xff09; 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 文章目录【youcans 的 OpenCV 例程200篇】203. 伪彩色图像处理什么是伪彩色图像&#xff1f;…

php post 丢失,php post大量数据时发现数据丢失问题解决方法,post数据丢失_PHP教程...

php post大量数据时发现数据丢失问题解决方法&#xff0c;post数据丢失解决办法&#xff1a;在php.ini中将max_input_vars调大改为5000就可以了原因追查&#xff1a;from的enctype”multipart/form-data”php版本5.6.6问题&#xff1a;部分POST数据接收不到追源代码发现是php中…

Jquery鼠标点击出现文字

点击鼠标左键出现文字效果。 原理解说 1.首先确定你是不是点的鼠标左键&#xff1b; 2.文字效果要出现在你鼠标点击的地方&#xff1b; 3.点击后文字出现一个由下往上的显示效果&#xff1b; 4.点击完成后固定时间内还得消失 效果演示 代码演示 <!DOCTYPE html> <h…

【OpenCV 例程200篇】204. 图像的色彩风格滤镜

OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换&#xff08;cv.LUT&#xff09; 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 文章目录【youcans 的 OpenCV 例程200篇】204. 图像的色彩风格滤镜4. 图像的色彩风格滤镜4.1…