几天以来,我无法再用 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