在 Sublime Text 3 下使用 LaTeX 代码高亮包 minted 及遇到的问题与解决
搞了一个下午啊!
minted简介
专门用来代码高亮的, 比listing
包好
前置准备
minted 依赖于 Python 和一个 Python 的库 pygments. 所以首先确保安装了 Python 和 pygments.
Sublime Text 3 中编译$\LaTeX$, 需要安装包 LaTeXTools
.
食用方式
开袋即食
以c++代码块为例
首先引用包
|
|
在需要写代码的地方使用minted环境
|
|
还用行间代码以及代码文件引用的方式, 暂时用不到, 没查
蘸点酱料
我常用的有如下选项:
linenos=true
显示行号mathescape
在注释中可以使用$\LaTeX$数学(即$$)breaklines
自动换行bgcolor=<colorstring>
背景颜色, 默认白tabsize=4
tab宽度texcl
,texcomments
注视中使用$\LaTeX$ (文档说c/c++用这个会出事)
问题
-shell-escape
当我满怀期待地编译运行时, 报错啦!
Package minted Error: You must invoke LaTeX with the -shell-escape flag.
原因
minted包需要使用$\LaTeX$以外的排版格式, 即 pygments. 所以需要在编译的时候加上一句 -shell-escape
解决方法 #1
在需要编译的 .tex
头上写 % !TEX options=--shell-escape
, 如下:
|
|
然后保证编译的时候使用的是 $\LaTeX$ Tools 的 traditional
或 basic
编译选项.
解决方法 #2
打开 $\LaTeX$ Tools 的设置, 找到 build-setting
, 加入 "options": "--shell-escape"
或 options=["--shell-escape"]
如下:
|
|
或者在指定系统里加入.
这里的 options
就是可以手写的编译命令, 后面跟的是一个字符串或者字符串列表(如果有多个选项的话就要用列表).
pygmentize
当我再一次满怀期待地编译运行时, 又报错啦!
Package minted Error: You must have ‘pygmentize’ installed to use this package.
原因
$\LaTeX$ Tools 没有找到 pygmentize.exe
解决方法
先确保成功安装 pygmentize
, 命令行输入 pygmentize -h
查看是否安装成功.
$\LaTeX$ Tools 太笨啦, 环境变量里的东西他不会找, 我们需要手动给他指定.
打开 $\LaTeX$ Tools 的设置, 找到 windows
(对于的操作系统), 在 texpath
中添加 pygmentize
所在目录( python 安装目录下的 Scripts
), 如下:
|
|
上网搜的时候查到说还可以直接把 pygmentize
复制到 tex
所在目录下. 这个方法太暴力了, 没试.
编译出现 Missing $ inserted 类似报错
使用minted包的时候, 有时候会出现奇奇怪怪的报错, 尤其是当我写C和Java程序设计报告的时候, 老出问题. 奇怪的是之前写板子的时候没有任何问题.
报错如下:
D:\Program\MiKTeX\tex\generic\ctex\zhmap\ctex-zhmap-windows.tex:2: Missing $ inserted. [%% This is file `ctex-zhmap-windows.tex']
D:\Program\MiKTeX\tex\generic\ctex\zhmap\ctex-zhmap-windows.tex:28: You can't use `macro parameter character #' in math mode. [ \catcode 35=6 % #]
D:\Program\MiKTeX\tex\generic\ctex\zhmap\ctex-zhmap-windows.tex:39: You can't use `macro parameter character #' in math mode. [ \x 35 6 % #]
D:\Program\MiKTeX\tex\generic\ctex\zhmap\ctex-zhmap-windows.tex:134: Undefined control sequence. [\ctex@zhmap@endinput]
D:\大学\java\第三次上机\report\_minted-report\762EB8EB8C4215A2FCC1A78E3499E2873876A35572848E573867E828E5D5C492.pygtex:5: Missing $ inserted. [\end{Verbatim}]
原因
由于 pygmentize 对代码进行了各种转义, 在 pdfLatex 编译下, 会出现奇奇怪怪的问题, 这是一个 pygmentize 的 bug (issue里开发者说的).
解决方法
换用 xelatex 编译就好了
字体的话默认也有粗体, 但是效果不是很明显, 不过黑白高亮还是看得出来的