minted 因 breaklines 和 subjecttabs 而失败

minted 因 breaklines 和 subjecttabs 而失败

以下使用 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}


  • 如果您复制/粘贴代码,它将包含空格而b不是制表符。为了重现此问题,您必须再次替换它。不幸的是,SE 似乎会自动将制表符替换为空格(https://meta.stackexchange.com/a/22189/293906)。如果你知道如何在代码块中使用制表符,请留言。

答案1

2016 年 7 月更新: 与 2.3 版obeytabs兼容。此版本需要软件包,它解决了许多与标签相关的长期问题。breaklinesmintedmintedfvextraobeytabs


由于实现的 方式不同,obeytabs和选项不兼容。实现的方式不同,因此不可能出现中断。breaklinesobeytabsobeytabs

的下一个版本minted将同时使用这两个选项时给出错误消息。我还打开了一个GitHub 上的问题以便将来跟踪此问题。其他技术细节请见此处。

这个问题可以修复,但从侧面修复minted不太可能。内部minted使用fancyvrb进行代码排版。fancyvrb负责obeytabsfancyvrb自 1998 年以来基本没有变化,2008 年略有修改。minted正在执行并非为 而设计的操作fancyvrb,并且已经包含许多 补丁fancyvrb。这种修补方法变得不可持续。在某个时候,向 增加额外的功能minted或修复这些不兼容性,将需要对 进行大修fancyvrb或使用新的逐字包。

相关内容