minted
我正在尝试使用表内的包中的一段突出显示的代码tabu
:
\documentclass{article}
\usepackage{minted}
\usepackage{longtable}
\usepackage{tabu}
\begin{document}
\begin{tabu*}{X[5,l]X[5,l]}
\begin{minted}{matlab}
function out = op(x, y)
out = x + y;
end
\end{minted}
& \\
\end{tabu*}
\end{document}
使用上述 MWE,我尝试将minted
环境放置在单元格内,类似于包文档第 1.3 节“插入 Verbatim 材料 (fancyvrb)”中解释的环境tabu
操作。但是,通过编译上述 MWE,我收到以下错误消息:Verbatim
tabu
Enter file name:
! Emergency stop.
<read *>
l.15 \end{tabu*}
^^J
*** (cannot \read from terminal in nonstop modes)
如果我尝试以滚动模式编译文档(-interaction=scrollmode
使用 MiKTeX 中的 XeLaTeX),我只会得到一个命令提示符Enter file name:
。
如何在表minted
中使用环境tabu
?
答案1
这更像是一种黑客行为,而不是真正的修复。 minted
正确地创建了突出显示的内容,并且内容被正确地引入。 但在某个时候,minted
的\minted@pygmentize
宏会尝试\input
一个“不存在”的文件。 我将“不存在”放在引号中,因为我尝试过minted
禁用所有文件删除,但仍然出现错误——所以它似乎与tabu
的多次传递有关。 无论如何,Enter file name:
可以通过修补 来避免tabu*
。 基本上,将每个 替换为\input
。在 加载\InputIfFileExists
后,在序言中插入以下内容tabu
,您的文档将进行编译。
\usepackage{etoolbox}
\let\originalinput\input
\newcommand{\newinput}[1]{\InputIfFileExists{#1}{}{}}
\AtBeginEnvironment{tabu*}{\let\input\newinput}