当我切换自minted
至listings
,我想请教一下这个比较。
以下是我目前想到的:
minted
需要 Pygments 才能工作,但listings
实际上不需要(对于初学者来说这可能是一个缺陷,但对于专家用户来说却是一个优势)minted
具有verbatim
默认样式,listings
必须设置它(我怎样才能使 lstlisting 看起来和 verbatim 一模一样?)在 in 中
listings
很容易添加一个新关键字,但minted
对于初学者来说,如何添加自定义 C++ 关键字以供 Minted 识别?)minted
,使用samepage
选项,可让您的代码片段不跨页面拆分,如果您想在 中执行相同操作listings
,则必须使用tcolorbox
或其他技巧(避免在 \lstlistings 中分页)listings
允许在字符串中使用转义字符,minted
但不允许(Minted escapeinside 在字符串中不起作用)。
最后,这两个包的优缺点是什么?
答案1
这实际上是对 samcarter 的回答的进一步评论。
minted
使用外部库进行突出显示,listings 则在 TeX 中完成所有操作。几乎所有优点和缺点都归因于这一差异。
minted 的设置比较麻烦(你需要安装 pygments 和 python,并且 tex 才能找到它们)
minted 需要(在处理的某个阶段)
-shell-escape
允许访问 shell。请注意,最新版本不需要在文档的最终版本中进行 shell 访问,因此您可以向期刊等提交不需要-shell-escape
但使用先前缓存运行中生成的文件的源。pygmentize 解析库比列表中的简单关键字检测更加广泛和更具表现力,因此 minted 对特定语言的支持更加强大。
pygmentize 被许多其他系统使用,并以除 Tex 之外的其他格式(尤其是 HTML/CSS)生成输出。例如,它被 trac svn/wiki 系统使用,因此可以使用与其他系统相同的突出显示规则使用 minted 排版代码。
由于 minted 中的大部分实际工作是在 pygmentize(python)中完成的,因此仅从 TeX 进行定制不太容易,但另一方面,如果您为特定语言定制了 pygments 词法分析器,它可以在 TeX 以外的环境中使用。
答案2
(免责声明:我是列表用户,所以我的观点可能有偏见)
据我所知,minted
需要使用 来运行-shell-escape
。这在以下几种情况下可能是一个缺点:
tex 系统设置为不允许
-shell-escape
- 因此minted
根本无法使用。即使
-shell-escape
可能,由于安全问题也可能不适合使用。在我看来,它
-shell-escape
不应该默认使用,而应该只在需要它的文档中激活 - 这会给编译铸造文档带来额外的麻烦。
依赖外部工具也会降低文档的可移植性。如果您将其发送给朋友/同事/...,他们很可能无法编译该文档。除了过时的软件包版本外,listings
文档应该是可移植的。
不确定如何解释以下情况:此网站上有 2,288 个问题listings
,而其他网站有 467 个minted
问题。这可能意味着
listings
被更多人使用,这意味着你在遇到问题时可以找到更多资源,也有更多人能够帮助你listings
导致更多问题 - 因此提出更多问题listings
只是更加可定制或具有更多可能性,因此可能提出更多问题。
请自己判断这一点是优点还是缺点。
优点minted
:维护者是用户 TeX.Stackexchange。
(我不是说这对来说不成立listings
,我只是不知道)