在LaTeX 之中,我们可以直接使用texttt{blabla}调出打字机字体。就现在的应用来讲,打字机字体用在代码类文本的排版比较多。在这背后,我们实际上调用的可能是cmtt12/cmtt10/cmtt9/cmtt8/cmsltt10等字体。如果使用的是XeLaTeX或者LuaLaTeX,那么我们可能是Latin Modern之中的等效字体,也就是说字形相似,但是是另外的字体了。如果我们不太老顽固的话,实际上可以选用一些OpenType格式的打字机字体来丰富一下我们文档的观感。比如最近几年O’Reilly的书中展示代码的字体已经转为Ubuntu Mono了(非Linux环境可从Ubuntu Font Family处下载)。有时候用Consolas也还行。
当然,这都不是重点。重点是代码高亮环境的内容。这是一部分带彩色的内容,受限于现有LaTeX书的印刷环境,在现有的书中讲的都很少。 这部分内容也都很简单了,比如可以看minted vs. texments vs. verbments。我这里只讲一些最基本的例子。
安装pygments
首先我们需要使用python,并安装pygments:
代码语言:javascript复制pip install pygments
实例
之后我们准备一个简单的例子,比如(demo.tex):
代码语言:javascript复制documentclass[a4paper]{article}
usepackage{minted}
usepackage{xcolor}
definecolor{bg}{rgb}{0.95,0.95,0.95}
usepackage[margin=2.5cm]{geometry}
begin{document}
begin{minted}[bgcolor=bg]{rust}
fn foo(v1: Vec<i32>, v2: Vec<i32>) -> (Vec<i32>, Vec<i32>, i32) {
// Do stuff with `v1` and `v2`.
// Hand back ownership, and the result of our function.
(v1, v2, 42)
}
let v1 = vec![1, 2, 3];
let v2 = vec![1, 2, 3];
let (v1, v2, answer) = foo(v1, v2);
end{minted}
begin{minted}[bgcolor=bg]{go}
import "math"
type Shape interface {
Area() float64
}
type Square struct { // Note: no "implements" declaration
side float64
}
func (sq Square) Area() float64 { return sq.side * sq.side }
type Circle struct { // No "implements" declaration here either
radius float64
}
func (c Circle) Area() float64 { return math.Pi * math.Pow(c.radius, 2) }
end{minted}
end{document}
编译
然后,注意,一定要带-shell-escape
参数:
xelatex -shell-escape demo.tex
或者
代码语言:javascript复制lualatex -shell-escape demo.tex
然后就出现了结果:
文档
更多内容,请参阅文档:
代码语言:javascript复制texdoc minted
- Previous Naïve Bayes(朴素贝叶斯)
- Next 神经网络