\verbatiminput shell 命令 Minted 等效

\verbatiminput shell 命令 Minted 等效
\verbatiminput{|"echo foo"}

生成foo,逐字包装。是否可以使用 Minted 的语法高亮功能实现相同的效果?我试过

\begin{minted}[escapeinside=!]{text}
!\verbatiminput{|"echo foo"}!
\end{minted}

但没用。我也试过

\inputminted{text}{|"echo foo"}

但它给出了一个错误

(./_minted-report/friendly.pygstyle)sh: line 1: echo foo: command not found

答案1

确实如此\inputminted,但与此不同,\verbatiminput甚至listings文件名必须传递给其他程序,pygmentize因此我怀疑要使用假管道语法来实现这一切需要做大量的工作。

您可以做的是使用它\write18来执行命令,保存到临时文件,然后使用\inputminted该文件,例如:

\immediate\write18{echo foo > /tmp/cmd_out.txt}
\inputminted{text}{/tmp/cmd_out.txt}

答案2

你可以使用我的iexec包,它将执行与相同的操作\write18,但还会检查命令的退出代码:

\documentclass{article}
\usepackage{iexec}
\begin{document}
\iexec[quiet,trace,stdout=out.txt]{echo foo}
\inputminted{text}{out.txt}
\end{document}

这里的quiet表示我们不需要将\input命令输出到 TeX 文档中;trace表示out.txt执行完成后我们应该保持不变的输出文件(默认情况下它会被删除);stdout允许您配置文件的名称。

您还可以使用stderr带有标准错误流的文件,并且包中还有更多选项,请参阅文档

相关内容