Skip to main content

代码环境

在 LaTeX 中,代码环境(code environment)是一种用于排版代码的环境,它不仅能保证“原汁原味”地呈现代码,还能通过高亮、行号、框线、自动换行等功能,极大地提升可读性、可维护性和美观度,是撰写技术文档或学术论文时不可或缺的利器。

​minted 宏包是 LaTeX 中用于实现代码高亮的强大工具,它依赖于 Python 的 Pygments 库,支持超过 150 种编程语言的语法高亮。

安装Pygments

首先,确保您的系统中安装了 Python 和 Pygments。您可以使用以下命令安装 Pygments:

pip install Pygments

一个简单的例子

下面是一个简单的例子,展示了如何在 LaTeX 中使用 minted 宏包来排版 Python 代码。

在文件夹 latex_learn中创建一个名为 code_doc.tex 的文件, 并在其中输入以下代码:

\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{python}
def hello():
print("Hello, World!")
\end{minted}
\end{document}

由于 minted 宏包需要调用外部程序 pygmentize,因此在编译 LaTeX 文档时,必须启用 -shell-escape 选项。 在终端中输入以下命令编译 LaTeX 文档:

xelatex -shell-escape code_doc.tex

常用选项

minted 宏包提供了多种选项,用于自定义代码块的显示效果:​

  • linenos:显示行号。
  • frame=lines:为代码块添加边框。
  • fontsize=\small:设置字体大小。
  • bgcolor=gray!10:设置背景颜色。
  • breaklines:自动换行。
  • autogobble=true:自动调整代码块的宽度。
  • mathescape:允许在注释中使用 LaTeX 数学公式。
  • escapeinside=||:在代码中插入 LaTeX 命令。

下面是一个示例,展示了如何使用这些选项, 将code_doc.tex修改如下并编译:


\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}
[
frame=lines,
framesep=2mm,
baselinestretch=1.2,
bgcolor=LightGray,
fontsize=\footnotesize,
linenos
]
{python}
N = 8 # 共有N项
S = [0] * (N + 1) # 包含S0共有N+1项,初始化
S[0] = 0.182 #初始值
# for循环进行递推计算
for n in range(1, N+1):
S[n] = 1/n - 5 * S[n-1] # 递推关系式
print('S' + str(n) + ' =', S[n]) # 打印算法结果
\end{minted}
\end{document}

引用外部代码文件

我们可以通过\inputminted命令来引用外部的代码文件。

例如,我们可以创建一个名为 code.py 的文件,其中包含以下代码:

def hello():
print("Hello, World!")

然后,我们可以在 LaTeX 文档中使用 \inputminted 命令来引用该文件。 将code_doc.tex修改如下并编译:

\documentclass{article}
\usepackage{minted}
\begin{document}
\inputminted[
frame=lines,
framesep=2mm,
baselinestretch=1.2,
fontsize=\small,
lineno
]
{python}
{code.py}
\end{document}