LaTeXmk 输出的时间戳

LaTeXmk 输出的时间戳

我正在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变量做出类似的定义。

相关内容