Minted ` \begin{minted}{...}` KO 但 `\inputminted` OK

Minted ` \begin{minted}{...}` KO 但 `\inputminted` OK

几天以来,我无法再用 python 代码着色minted;日志文件中没有任何错误消息,只有 minted 输出没有出现在 pdf 文件中。

另一方面,使用命令一切都运行得很好\inputminted。如何解决这个问题?

平均能量损失

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{minted}
\begin{document}
ABCDE
\begin{minted}{python}
def __init__(self, x, y): 
    self.x=x
    self.y=y
\end{minted}
% \inputminted ... work's 
\end{document}

在此处输入图片描述

答案1

更新(2021 年 11 月 27 日):fancyvrb此问题现已在4.1中修复。在 4.0 版中,fancyvrb更改了选项的处理方式lastline,以便使用lastline=隐藏所有行(不显示任何内容)。但是,这也导致lastline没有参数的使用隐藏所有行。也就是说,lastline默认是隐藏所有行。minted使用lastline(默认参数)作为环境突出显示过程的一部分minted,因此这些环境在 4.0 中停止显示任何内容fancyvrb。在 4.1 中,一切都恢复正常fancyvrb,将lastline(默认参数)切换回原始行为。


相关变化似乎是\@ne->\z@fancyvrb.sty第 225 行。这导致minted它不会向用于突出显示代码的临时文件中写入任何内容,而不是写入代码。

一切都可以切换回原来的行为,修复minted,通过在序言中添加以下内容:

\makeatletter
\def\FV@DefineFindStop{%
  \ifx\FancyVerbStopString\relax
    \ifnum\FancyVerbStopNum<\@ne
      \let\FV@FindStartStop\FV@@PreProcessLine
    \else
      \let\FV@FindStartStop\FV@FindStopNum
    \fi
  \else
    \let\FV@FindStartStop\FV@FindStopString
  \fi}
\makeatother

到目前为止(2021 年 11 月 22 日),我仍然不确定这个更改是在fancyvrb修复旧错误(在这种情况下minted应该适应)、引入新错误还是定义新行为。

答案2

这是最新 fancyvrb 中的一个错误/更改。以下使用旧版本打印所有内容,但使用最新版本隐藏行:

\documentclass[12pt]{article}
\usepackage{fancyvrb}
\begin{document}
\begin{Verbatim}[lastline=]
blub
\end{Verbatim}

\end{document}

你应该举报此事。

答案3

\documentclass[12pt]{article}
\usepackage{fancyvrb}
\makeatletter
\def\KV@FV@lastline@default{%
  \let\FancyVerbStopNum\m@ne
  \let\FancyVerbStopString\relax}
\fvset{lastline}
\makeatother
\usepackage{minted}
\begin{document}
ABCDE
\begin{minted}{python}
def __init__(self, x, y): 
    self.x=x
    self.y=y
\end{minted}
blub

\begin{Verbatim}
abc
\end{Verbatim}

\end{document}

我会修复它并上传到 CTAN

相关内容