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
\begin{minted}{javascript}
// greet a list of people
const people = ["Erika", "Hans", "John"];
for (const name of people) {
console.log(`Hello, ${name}!`);
}
\end{minted}选项会被接受但不起作用,所以这个代码块在这里没有行号,也没有边框:
linenos 和 frame 被忽略
\begin{minted}[linenos, frame=lines]{rust}
fn main() {
let total: u32 = (1..=8).sum();
println!("{}", total + 8); // 44
}
\end{minted}如果需要带编号的标题,请使用 figure 代替 minted 的 listing 环境。这样在这里标题会显示为“Listing 1”,\ref 会给出编号:
放在 figure 中带标题的 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.兼容性
- 从 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