Will's Blog
850 字
4 分钟
minted 宏包教程

我们在使用 LaTeX 写作时,经常需要插入代码,但是 LaTeX 默认的代码插入方式并不是很好看,所以我们需要使用一些宏包来实现代码的语法高亮.minted 宏包就是其中之一.

安装#

minted 宏包可以在CTAN上找到,下载后解压,将其中的minted.sty文件放到你的工作目录下,然后在你的文档中添加如下代码:

\usepackage{minted}

TeX\TeXlive2022 中已经包含了该宏包, 无需单独安装.

配置#

这里以TeX\TeXlive2022 和 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\LaTeX文档.

然而按照默认配置在编译时会报错:

于是我们需要修改一下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 选项可以参考 官方文档, 这里只介绍一些常用的选项.

  1. frame选项:是否显示代码块的边框. 可选值为singlelines. single表示只显示一个方形边框, lines表示上下包围一条线.

  2. linenos选项:是否显示代码行号. 可选值为truefalse.

  3. bgcolor选项:设置代码块的背景颜色. 可选值为颜色名称或颜色代码.

  4. fontsize选项:设置代码块的字体大小. 可选值为tiny, scriptsize, footnotesize, small, normalsize, large, Large, LARGE, huge, Huge

  5. mathescape选项:是否对数学公式进行转义.

  6. breaklines选项:是否自动换行.

  7. autogobble选项:是否自动删除代码块中的空白行.

  8. 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}
minted 宏包教程
https://will-c137.vercel.app/posts/minted宏包教程/
作者
Will
发布于
2023-03-14
许可协议
CC BY-NC-SA 4.0