我发现了这个包裹bashful
在文档中打印 shell 命令的结果。我们可以使用命令在当前行(不带回车符)打印结果\bashStdout
。下面是一个应该写入编译日期的示例。例如,我尝试使用以下命令在文档中插入日期:
\bash
date +"%b %d %Y"
\END
Compilation of this document completed on \bashStdout
问题是,在生成的pdf中,结果是:
Compilation of this document completed on Jul_15_2021
用特殊字符代替空格(此处用 代替_
)。我在文档中看到可以使用 自定义结果的显示,但此命令似乎仅在我使用命令的lstdefinestyle
选项时才有效。[stdout]
\bash
但是使用这个选项,代码
Compilation of this document completed on
\bash[stdout]
date +"%b %d %Y"
\END
将打印
Compilation of this document completed on
Jul 15 2021
在许多方面
有没有办法自定义显示方式bashStdout
?我在文档中没有找到。
以下是完整的 ECM:
\documentclass{article}
\usepackage{bashful}
\begin{document}
\bash
date +"%b %d %Y"
\END
Compilation of this document completed on \bashStdout
Compilation of this document completed on
\bash[stdout]
date +"%b %d %Y"
\END
\end{document}
有办法解决我的问题吗?
谢谢
答案1
\documentclass{article}
\usepackage{bashful}
\begin{document}
\bash
date +"%b %d %Y"
\END
Compilation of this document completed on \scantokens\expandafter{\bashStdout}
Compilation of this document completed on
\bash[stdout]
date +"%b %d %Y"
\END
\end{document}
或者更简单地在这种情况下不使用任何包:
\documentclass{article}
\begin{document}
\makeatletter
\let\%\@percentchar
\makeatother
Compilation of this document completed on \input{|date +'\%b \%d \%Y'}.
Compilation of this document completed on
\input{|date +'\%b \%d \%Y' }.
\end{document}