有没有办法打印出编译 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
打印此文件的内容,这允许换行。\lstinputlisting
listings
梅威瑟:
\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}
结果: