打印出使用的命令行

打印出使用的命令行

有没有办法打印出编译 latex 文档所用的命令行?该文档是使用编辑器编译的,我想知道它具体使用了什么。

答案1

在 Linux 中,您可以从文档中打印所有进程和grep相关行。此命令的输出可以打印到文档中。改编自Write18:捕获 shell(脚本)输出作为命令/变量?

\documentclass{article}
\begin{document}
Command used is

{\catcode`_=12 \ttfamily
\input{|"ps aux|grep -Eoh '[a-z]+latex.*\jobname.*'|head -n 1" }

}
\end{document}

示例结果:

在此处输入图片描述

请注意,这需要设置--shell-escape,如果您知道如何设置,您可能还可以找到默认的编译选项,但这不是真正的重点。

-progname还要注意,当您更改或之类的内容时,此方法不起作用-jobname,在这种情况下,您应该grep相应地修改正则表达式。使用非 LaTeX 编译器(如 pdfTeX 或 ConTeXt)也是如此。


wmic在 Windows 中,您可以使用命令(Windows Management Instrumentation 命令行实用程序)执行类似操作。但是,由于这包括带反斜杠的文件路径,因此直接使用时会导致未定义的命令序列错误\input(即,LaTeX 认为C:\Program Files包含命令\Program并尝试执行此命令)。因此,您可以将命令的输出保存到文件中,然后使用例如来自包的命令wmic打印此文件的内容,这允许换行。\lstinputlistinglistings

梅威瑟:

 \documentclass{article}

\usepackage{listings}

\begin{document}

Command used is

\immediate\write18{wmic process get commandline /format:list |findstr escape > cmdout.tmp}

\lstinputlisting[breaklines]{cmdout.tmp}

\end{document}

结果:

在此处输入图片描述

相关内容