\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
带有标准错误流的文件,并且包中还有更多选项,请参阅文档。