我正在latexmk
跑步沉默的和预览连续模式。
latexmk -pdf -silent -pvc myfile.tex
但是当我查看终端(它有简短的日志输出)时,我无法确定文件编译的时间。换句话说,我想要一行
最后编译于 2018 年 9 月 26 日星期三 21:18:53 IST
这对于我从备份集中追踪工作版本(如果出现错误)很有用。
我可以编写一个小的 bash 脚本,它将监视文件的更新,然后pdflatex
调用批处理模式然后打印带有日期的输出。(在 aux/log 中 grep 错误/警告并相应地打印消息。)然而,这不就是重复吗latexmk
?
-- 迈克
答案1
第一次失败的尝试:
在~/.latexmkrc
文件中:
$latex = "date;latex --src-specials";
不起作用:-
第二次尝试失败(我在这里给出它,因为这可能会给某人提供更简单/替代的解决方案的想法!)
latexmk -silent -pvc -e 'print "Last compiled at: ".localtime()."\n";' myfile.tex
来自手册页:
-e <code> Execute the specified initialization code before processing. The code is Perl code of the same form as is used in latexmk's initialization files. For more details, see the information on the -r option, and the section about "Configuration/initialization (RC) files". The code is typically a sequence of assignment statements separated by semicolons.
但是这只会在开头打印所需的字符串。我相信通过修改某些变量(例如),$latex
可以实现所需的目的。
以下是完整的工作解决方案。唯一的缺点是它需要 root 权限(或者制作脚本的本地副本)。
在脚本中插入以下代码latexmk
:
$datestring = localtime();
print "Last compiled at: $datestring\n";
这些行被包含在实际调用的函数中$latex
:
sub rdb_primary_run
答案2
实际上,你不需要修改latexmk
就可以获得这种效果,只需配置它即可。 latexmkrc 文件中的以下内容将完成此工作
$pdflatex = 'internal mylatex pdflatex %O %S';
sub mylatex {
my $ret = system @_;
print "Last compilation at ", scalar(localtime()), "\n";
return $ret;
}
您可以对$latex
、$lualatex
和$xelatex
变量做出类似的定义。