如何使用 latexmk 清理 .table 和 .gnuplot

如何使用 latexmk 清理 .table 和 .gnuplot

我将其用作latexmk建筑援助。我还想将其用作清洁承包商....latexmkrc我补充道:

$pdf_previewer = "open -a /Applications/Skim.app"; 
$clean_ext = "rel paux lox pdfsync out bbl %R.run.xml %R.table %R.gnuplot";
$pdflatex = 'pdflatex -8bit -etex -shell-escape -file-line-error -halt-on-error -synctex=1 %O %S';
$new_viewer_always [0];
$pvc_view_file_via_temporary [1];

因此除了默认文件类型之外,它还会删除tex_name.func_name.tabletex_name.func.gnuplot文件类型。不幸的是,它不起作用。当我运行 时latexmk -c,这是第一行输出(我不知道它是否相关):

Useless use of array element in void context at (eval 12) line 5, <GEN0> chunk 1.

这些文件仍保留在目录中。我怎样才能让它们消失?

编辑:

正如@NN所建议的,我纠正了最后两行代码中的错误。至于这个问题的主要问题,我必须澄清一下。编译我的文档会产生几个文件,它们都具有以下文件名模式:tex_main_name.function_name.gnuplot和类似的tex_main_name.function_name.table。我想latexmk -c删除全部其中。因此,使用func_name.table只会latexmkrc删除两个文件。我希望现在问题已经更清楚了。

编辑2:

正如@NN 所问,这是一个 WME:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
  % Function
  \begin{scope}[domain=0.9:5.5,samples=200]
    \draw[<->,color=blue,line width=2pt] plot[id=func1]
    function{(x*x+x+1)/(x*x)} node[right] {$f(x)$};
  \end{scope} 
 \begin{scope}[domain=0.9:5.5,samples=200]
   \draw[<->,color=blue,line width=2pt] plot[id=func2]
   function{-(x*x+x+1)/(x*x)} node[right] {$f(x)$};
 \end{scope} 
\end{tikzpicture}
\end{document}

编译此代码会生成两个文件,分别是file_name.func1.tablefile_name.func2.gnuplot。我想要latexmk -c删除这两个文件。

答案1

这不是答案,而是约翰·柯林斯的一封电子邮件,说将来会有可能。

好主意。

不幸的是,它与另一个要求有些冲突,即允许 $clean_ext 中的模式为正则表达式 (regexp)。通配符的想法更容易实现,但正则表达式的想法可以更精细地控制要删除的文件,这在某些情况下是需要的。

无论如何,允许在模式中使用通配符或正则表达式的建议都在我的未来增强功能列表中。

约翰

Hans-Peter E. Kristiansen 写道:感谢您提供了这么棒的工具 - latekmk。我可以提出一个改进建议吗:在第 7016 行,将“glob”添加到 unlink 命令中,这样就可以在 rc 文件中使用通配符,如下所示:$clean_ext .= '%R.*.gnuplot';

答案2

您在 .latexmkrc 中的最后两行没有使用正确的语法。您似乎所做的是从 latexmk 手册中复制了 .latexmkrc 中的最后两行,其中列出了变量及其默认值(用方括号括起来)。正确的语法大致如下(有关详细信息,请参阅手册):

$variable_name = value;

因此,.latexmkrc 的最后两行应为:

$new_viewer_always = 0;
$pvc_view_file_via_temporary = 1;

另外,您没有正确指定要清除的文件。手册内容如下:

也可以使用占位符 %R 来指定要删除的更通用的文件模式,就像在命令中一样。因此设置

$clean_ext = "out %R-blx.bib";

在初始化文件中意味着当指定清理操作时,不仅会删除标准文件集,还会删除形式为 FOO.out 和 FOO-blx.bib 的文件,其中 FOO 代表正在处理的文件的基本名称(如 FOO.tex)。

因此,如果您有一个名为 test.tex 的文件,它在编译时会生成test.func1.gnuplot和,test.func1.table并且您希望 latexmkrc 清除这些,那么您应该将func1.table和添加func1.gnuplot到变量中$clean_ext。在我的其他图的一些测试中,也test.pgf-plot.gnuplot生成test.pgf-plot.table了和。因此,为了涵盖所有情况,您应该按如下方式设置变量:

$clean_ext = "func1.gnuplot func1.table pgf-plot.gnuplot pgf-plot.table";

相关内容