跳到正文

Scissor LaTeX 中的 minted

minted 宏包在 Scissor LaTeX 中部分可用:\begin{minted}{python} 和 \mintinline 无需 Python 或 -shell-escape 即可使用,并按固定配色方案进行语法着色;linenos 等选项、\setminted、\usemintedstyle、listing 标题、\mint 和 \inputminted 不受支持。

宏包的作用

minted 用 Pygments 库为源代码着色。你可以写 \begin{minted}{python} ... \end{minted},或在句子中写 \mintinline{python}{code}。linenos 和 frame=lines 等选项会改变版式,\setminted 为整篇文档设置这些选项,\usemintedstyle 用来选择配色主题。在 TeX 发行版中,minted 需要安装了 Pygments 的 Python,并且编译文档时必须使用 -shell-escape。

这里可用的功能

功能在 Scissor LaTeX 中说明
\begin{minted}{lang} ... \end{minted}可用有语法着色,无需 Python 或 shell escape。
\mintinline{lang}{code}可用等宽字体,没有颜色。
选项:[linenos, frame=lines, bgcolor=...]忽略被忽略,不显示提示。
\setminted{...}, \usemintedstyle{...}忽略被忽略,不显示提示;颜色是固定的。
带 \caption 的 listing 环境部分可用代码会显示,标题作为普通文本输出,没有“Listing 1”;指向它的 \ref 显示为“??”。
\mint{lang}|code|不支持会被跳过并显示提示;语言和代码作为普通文本输出。
\inputminted{lang}{file}不支持会被跳过并显示提示。
\newminted, \newmintinline不支持会被跳过并显示提示,参数会被输出。

语言名称与 listings 相同:Python、C、C++、Java、JavaScript、Rust、Go、R、MATLAB、SQL、Bash、HTML、TeX 等,大小写均可。

示例

指定语言的 minted 代码块:

使用 JavaScript 的 minted

LaTeX导言区: \usepackage{minted}在编辑器中打开 (在新标签页中打开)
\begin{minted}{javascript}
// greet a list of people
const people = ["Erika", "Hans", "John"];
for (const name of people) {
  console.log(`Hello, ${name}!`);
}
\end{minted}
由 Scissor LaTeX 排版: 使用 JavaScript 的 minted

选项会被接受但不起作用,所以这个代码块在这里没有行号,也没有边框:

linenos 和 frame 被忽略

LaTeX导言区: \usepackage{minted}在编辑器中打开 (在新标签页中打开)
\begin{minted}[linenos, frame=lines]{rust}
fn main() {
    let total: u32 = (1..=8).sum();
    println!("{}", total + 8); // 44
}
\end{minted}
由 Scissor LaTeX 排版: linenos 和 frame 被忽略

如果需要带编号的标题,请使用 figure 代替 minted 的 listing 环境。这样在这里标题会显示为“Listing 1”,\ref 会给出编号:

放在 figure 中带标题的 minted 代码块

LaTeX导言区: \usepackage{minted}在编辑器中打开 (在新标签页中打开)
\begin{figure}[h]
\begin{minted}{python}
print(sum(range(44)))
\end{minted}
\caption{Adding the numbers below 44}
\label{lst:sum}
\end{figure}
Listing~\ref{lst:sum} prints 946.
由 Scissor LaTeX 排版: 放在 figure 中带标题的 minted 代码块

兼容性

  • 从 TeX 发行版迁移到这里: 每个 minted 代码块都会带颜色显示。选项和样式不会生效;请把 \mint 换成 \mintinline,并把 \inputminted 所引用文件中的代码粘贴到文档里。
  • 从这里迁移到 TeX 发行版: 只要有 Python、Pygments 和 -shell-escape,minted 代码块就能在那里编译。包裹 minted 代码块的 figure 在那里的标题会显示为“Figure 1”。

完整手册见 CTAN:ctan.org/pkg/minted。另请参阅 LaTeX 中的代码清单。

常见问题

不用 shell escape 能使用 minted 吗?

在这里可以。Scissor LaTeX 自己为 minted 代码块着色,所以既不需要 Python,也不需要 -shell-escape。在 TeX 发行版中,两者仍然都是必需的。

应该用 minted 还是 listings?

两者在这里效果相同:都会读取语言,其他选项都被忽略。如果文档还需要在别处不借助 shell escape 编译,listings 是更稳妥的选择。

本页的每个示例都在构建网站时由 Scissor LaTeX 排版。 最后更新:2026-11-07