我们在使用 LaTeX 写作时,经常需要插入代码,但是 LaTeX 默认的代码插入方式并不是很好看,所以我们需要使用一些宏包来实现代码的语法高亮.minted 宏包就是其中之一.
安装
minted 宏包可以在CTAN上找到,下载后解压,将其中的minted.sty
文件放到你的工作目录下,然后在你的文档中添加如下代码:
\usepackage{minted}
live2022 中已经包含了该宏包, 无需单独安装.
配置
这里以live2022 和 VSCode 为例, 介绍 minted 宏包的配置.
安装 Pygments
minted 宏包依赖于 Pygments,所以我们需要先安装 Pygments.在python
环境下,我们可以用pip
命令安装 Pygments:
pip install Pygments
如果你事先安装过 Anaconda,则可以直接使用 Anaconda 的环境,Pygments 可能已经安装在你的电脑上了.
当然也可以顺便更新一下 Pygments:
pip install --upgrade Pygments
配置 VSCode
在 VSCode 中,我们可以使用LaTeX Workshop
插件来编译文档.
然而按照默认配置在编译时会报错:
于是我们需要修改一下LaTeX Workshop
的配置,
首先在 VSCode 中按下Ctrl+Shift+P
打开命令面板, 输入LaTeX Workshop: Open LaTeX Workshop Settings
, 然后打开LaTeX Workshop
的配置文件.
在LaTeX Workshop
的配置文件中, 添加"-shell-escape"
这一行:
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-shell-escape",
"%DOC%"
]
}
]
minted 基本使用
代码块
在文档中,我们可以使用minted
环境来插入代码块:基本格式如下:
\begin{minted}[options]{language}
code
\end{minted}
其中 options 是可选的, language 是代码的语言, code 是代码内容.
例如我们可以这样插入一段 Python 代码:
\begin{minted}{python}
print("Hello World!")
\end{minted}
效果如下:
print("Hello World!")
单行代码和代码文件
我们也可以使用mintinline
命令来插入单行代码:
\mintinline{language}{code}
甚至可以插入代码文件:
\mintfile{language}{filename}
其中 filename 是代码文件的路径.可以是相对路径或绝对路径.
option 选项
详细的 option 选项可以参考 官方文档, 这里只介绍一些常用的选项.
frame
选项:是否显示代码块的边框. 可选值为single
和lines
.single
表示只显示一个方形边框,lines
表示上下包围一条线.linenos
选项:是否显示代码行号. 可选值为true
和false
.bgcolor
选项:设置代码块的背景颜色. 可选值为颜色名称或颜色代码.fontsize
选项:设置代码块的字体大小. 可选值为tiny
,scriptsize
,footnotesize
,small
,normalsize
,large
,Large
,LARGE
,huge
,Huge
mathescape
选项:是否对数学公式进行转义.breaklines
选项:是否自动换行.autogobble
选项:是否自动删除代码块中的空白行.numbersep
选项:设置行号和代码之间的距离.
定义全局选项
虽然minted
设置代码高亮很方便, 但是每次都要写一大堆选项很麻烦.
我们可以在文档的开头定义一些全局选项, 这样就不用每次都写选项了.
\usepackage{minted}
\usemintedstyle{monokai} % 设置代码高亮风格
% 定义全局选项 (代码块)
\newminted{python}{bgcolor=black, frame=lines, fontsize=\footnotesize, mathescape, breaklines, autogobble, numbersep=5pt}
% 定义全局选项 (单行代码)
\newmintinline{python}{bgcolor=black, frame=lines, fontsize=\footnotesize, mathescape, breaklines, autogobble, numbersep=5pt}
% 定义全局选项 (代码文件)
\newmintfile{python}{bgcolor=black, frame=lines, fontsize=\footnotesize, mathescape, breaklines, autogobble, numbersep=5pt}
这样我们就可以直接使用python
环境来插入代码了:
单行代码:
\pythoninline{print("Hello World!")}
代码块:
\begin{pythoncode}
print("Hello World!")
\end{pythoncode}
代码文件:
\pythonfile{./code.py}