以下使用 minted 环境的示例失败并显示错误消息
_minted-test/7587C145B52367AE51CACC4AFB0EC13D2F785CCAC2A2CC760CA216BD1781DF79.pygtex:3: Extra }, or forgotten \endgroup. [ b]
_minted-test/7587C145B52367AE51CACC4AFB0EC13D2F785CCAC2A2CC760CA216BD1781DF79.pygtex:3: Missing } inserted. [ b]
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{minted}
\setminted{obeytabs}
\begin{document}
\begin{minted}[breaklines=true]{text}
a
b
\end{minted}
\end{document}
删除以下之一后,它可以正常工作:
- 前面的标签
b
- 这
breaklines=true
- 这
\setminted{obeytabs}
对于这种行为有什么解释吗?或者可以将其视为一个错误吗?
.pygtex 文件如下所示,意图也是一个选项卡:
\begin{Verbatim}[commandchars=\\\{\}]
a
b
\end{Verbatim}
- minted 需要 python 和 pygmentshttp://pygments.org/docs/cmdline/
- minted 需要 -shell-escape 标志
- 铸造的文档在这里:http://ctan.mirrorcatalogs.com/macros/latex/contrib/minted/minted.pdf
- 如果您复制/粘贴代码,它将包含空格而
b
不是制表符。为了重现此问题,您必须再次替换它。不幸的是,SE 似乎会自动将制表符替换为空格(https://meta.stackexchange.com/a/22189/293906)。如果你知道如何在代码块中使用制表符,请留言。
答案1
2016 年 7 月更新: 与 2.3 版obeytabs
兼容。此版本需要软件包,它解决了许多与标签相关的长期问题。breaklines
minted
minted
fvextra
obeytabs
由于实现的 方式不同,obeytabs
和选项不兼容。实现的方式不同,因此不可能出现中断。breaklines
obeytabs
obeytabs
的下一个版本minted
将同时使用这两个选项时给出错误消息。我还打开了一个GitHub 上的问题以便将来跟踪此问题。其他技术细节请见此处。
这个问题可以修复,但从侧面修复minted
不太可能。内部minted
使用fancyvrb
进行代码排版。fancyvrb
负责obeytabs
。fancyvrb
自 1998 年以来基本没有变化,2008 年略有修改。minted
正在执行并非为 而设计的操作fancyvrb
,并且已经包含许多 补丁fancyvrb
。这种修补方法变得不可持续。在某个时候,向 增加额外的功能minted
或修复这些不兼容性,将需要对 进行大修fancyvrb
或使用新的逐字包。