TeX中的打字機字體和代碼高亮環境
在LaTeX之中,我們可以直接使用 exttt{blabla}調出打字機字體。就現在的應用來講,打字機字體用在代碼類文本的排版比較多。在這背後,我們實際上調用的可能是cmtt12/cmtt10/cmtt9/cmtt8/cmsltt10等字體。如果使用的是XeLaTeX或者LuaLaTeX,那麼我們可能是Latin Modern之中的等效字體,也就是說字形相似,但是是另外的字體了。如果我們不太老頑固的話,實際上可以選用一些OpenType格式的打字機字體來豐富一下我們文檔的觀感。比如最近幾年OReilly的書中展示代碼的字體已經轉為Ubuntu Mono了(非Linux環境可從Ubuntu Font Family處下載)。有時候用Consolas也還行。
當然,這都不是重點。重點是代碼高亮環境的內容。這是一部分帶彩色的內容,受限於現有LaTeX書的印刷環境,在現有的書中講的都很少。 這部分內容也都很簡單了,比如可以看minted vs. texments vs. verbments。我這裡只講一些最基本的例子。
首先我們需要使用python,並安裝pygments:
pip install pygments
之後我們準備一個簡單的例子,比如(demo.tex):
documentclass[a4paper]{article}usepackage{minted}usepackage{xcolor}definecolor{bg}{rgb}{0.95,0.95,0.95} usepackage[margin=2.5cm]{geometry}egin{document}egin{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}egin{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}
然後,注意,要在命令行下面編譯:
xelatex -shell-escape demo.tex
或者
lualatex -shell-escape demo.tex
然後就出現了結果:
更多內容,請參閱文檔:
texdoc minted
推薦閱讀:
※從軟體工程上來說,LaTeX 爛不爛?
※LaTeX 中圖和表如何並排?
※TeX Live 2015 有哪些值得關注的新特性?
※ApTeX更新:添加kpathsea的mruby支持
※CTeX 2.0有哪些新功能?
TAG:LaTeX |