附录

附录

我问过上一个问题关于如何管理我的 LaTeX 文件编译时生成的所有文件,但我接受的答案中的方法对于我生成的许多小文档仍然不能令人满意。

我意识到 LaTeX需求它生成的所有文件,所以我无法阻止它们的创建。

然而有没有办法配置pdflatex使除.tex.pdf文件之外的所有文件都变为隐藏文件(即以 为前缀.)?

(编辑:我使用的两个主要系统是 Ubuntu Linux 上的 tex live 和 OS X 上的 BasicTeX)

答案1

借助 tex 编辑器,这项工作可能很容易完成。使用 winedt,可以这样做(仅适用于 miktex):

进入 winedt 菜单Options ---> Execution Modes。在打开的窗口中选择TeX Options

在此处输入图片描述

按照图片所示进行修改。 给出OK并出来。 现在,所有辅助文件都将存储在TeXAux主文件夹内的文件夹中。 如果取消选中该框,TeXAux则将创建目录(如果该目录尚不存在)。 因此,您的主目录不会变得混乱。

其他编辑器可能也有类似的选项,但不幸的是我对它们不太了解:-(

附录

以下是 Karl Koeller(winedt 及其宏的重要贡献者)的一封个人邮件:

我只是想让你注意到,WinEdt(从最新的 6 个版本开始)使用自己的算法(由我编写)来管理 TeXAux 文件夹中的辅助文件。换句话说,它不使用某些 miktex 应用程序提供的 --aux-directory 命令行开关(请参阅 WinEdt 手册索引中的“辅助文件夹”)。

这意味着此功能不依赖于您使用的 TeX 系统。TeX Live 用户也可以利用此功能。

因此,从 winedt 6 开始,texlive 也具备此功能。

纺织机械商

前往Options ---> Configure Texmaker获取窗口:

在此处输入图片描述

勾选如图所示的方框,然后按OK就可以出来了。现在全部输出文件(不幸的是包括 pdf 文件)将存储在build主文件夹内的文件夹中。

轻松清理辅助文件

如果一切都归结为清理辅助文件,那么可以解决阿拉拉。它的手册非常出色,值得一读。您必须添加clean以下指令:

% arara: clean: {files: [yourfile.aux, yourfile.idx, yourfile.ilg, yourfile.ind, yourfile.log, yourfile.bbl, yourfile.bcf, yourfile.ist, yourfile.blg, yourfile.run.xml]}

您可以随意添加要清理的文件。一组正常的指令可能如下所示:

% arara: pdflatex: {synctex: yes}
% arara: makeindex
% arara: biber
% arara: pdflatex: {synctex: yes}
% arara: pdflatex: {synctex: yes}
% arara: clean: {files: [yourfile.aux, yourfile.idx, yourfile.ilg, yourfile.ind, yourfile.log, yourfile.bbl, yourfile.bcf, yourfile.ist, yourfile.blg, yourfile.run.xml]}
%\documentclass{article}
.
.
.

然后通过发出 编译你的文档arara yourfile。你必须确保 arara 已安装并且位于系统路径中。

答案2

显然,Nautilus 有一个不太为人所知的功能(如果您使用 Ubuntu,您可能会使用它;)),您可以在某个.hidden目录中的文件中放入文件名列表(没有通配符!),每行一个;然后 Nautilus 将不会显示这些文件(您可能需要刷新 Nautilus 中的视图才能使此功能生效)。然后,创建此文件只需要一些简单的脚本。例如,类似

#!/bin/bash
# make LaTeX intermediate files in the current directory hidden in Nautilus 
ls *.aux *.log *.toc &> /dev/null >> .hidden
sort .hidden | uniq > .hidden-new
mv .hidden-new .hidden

现在您可以在使用 TeX 处理任何文件之后调用这样的脚本。

(重要提示:您可以使用此处提供的脚本,但仅需您自行承担风险- 我的 bash-fu 比我的 TeX-fu 弱多了;)!)

另外,Emacs(我正在使用它 - 反正没有其他选择,因为它是现存最好的文本编辑器)有一个变量completion-ignored-extensions这样当你发现(意思是开幕在 emacspeak 中)文件时,自动完成功能不会考虑以指定扩展名结尾的文件(默认值相当合理,因此您可能根本不需要对其进行修改)。

最后,如果你使用 Emacs(你真的应该使用),你可能想了解dired-xDired 模式的扩展,其中包括一个名为省略文件(可使用后缀和/或正则表达式进行配置)其功能与 Nautilus.hidden文件相同,但更好 - 它正常运行™在所有目录中,而无需创建任何外部文件。(编辑:似乎至少在 Ubuntu 中,dired-x开箱即用;当dired进入目录时,您可以按 来M-o切换隐藏所有“不感兴趣”的文件。您也可以查看文档以了解如何默认启用此功能。)

编辑:今天我向一位朋友展示了这个小 bash 脚本,我们注意到最后两行或多或少是多余的。我认为一个更简单的脚本也可以做到:

#!/bin/bash
# make LaTeX intermediate files in the current directory hidden in Nautilus 
ls *.aux *.log *.toc &> /dev/null >> .hidden

答案3

如何处理所有*.aux、*.log、*.toc 文件以及类似的文件?

当 pdfLaTeX 编译 *.tex 文件时,您会不时收到一条错误消息,让您摸不着头脑,想知道到底出了什么问题。而将辅助文件隐藏在某处,除了所有其他原因外,还会增加错误源。

大多数人都喜欢整洁的办公桌。那么如何做才不会让事情变得更复杂呢?

完成后只需删除文件即可。

我的编辑器 (Emacs) 有一个清理功能,当我写完并得到 PDF 时,它会删除所有辅助文件。看看你的编辑器,可能也有类似的东西。

我发现在我的 Windows PC 上非常有用的是一个我称之为“Putzdienst”的 powershell 脚本,我在这里找到了它:http://uweziegenhagen.de/?p=2095并根据我的需求进行定制。“Putzdienst”可以翻译为“清洁服务”。

如果您开始编写自己的脚本,请务必小心不要删除整个文件夹。

答案4

您可以使用 perl 脚本来处理这个问题:

#!/usr/bin/perl
use strict 'vars';
use File::Copy;
&MAIN(@ARGV);
sub MAIN {
   ## call this by running the following from prompt:
   ##
   ## perl perl_code.pl <your_latex_filehandle>
   ##
   my ($filehandle) = @_;
   ## a list of suffixes generated by LaTeX, you may want to add others
   ## that you may need for your document.
   my @suffixes = qw / aux log toc ps /;
   ## testing whether filehandle exists and whether it ends in ".tex"
   if (( -e $filehandle ) && ($filehandle =~ /\.tex$/)){
      my $base_name = $filehandle;
      $base_name =~ s/\.tex$//;
      ## check to see whether there are hidden files that LaTeX needs to know about
      ## to properly compile file.
      foreach my $suffix ( @suffixes ){
     my $unhidden = $base_name . "." . $suffix;
     my $hidden = ".hidden_" . $unhidden;
     if ( -e $hidden){
        print "Unhiding:  " . $hidden . "\n";
        move($hidden, $unhidden) ;
      }
       }
      ## make a system call to "pdflatex" (I'm assuming this is the route you're using.
      system ("pdflatex $filehandle");
      ## hide files you want hidden.
      foreach my $suffix ( @suffixes ) {
     my $unhidden = $base_name . "." . $suffix;
     my $hidden = ".hidden_" . $unhidden;
     if ( -e $unhidden){
        print "hiding:  " . $unhidden . "\n";
        move($unhidden, $hidden) ;
      }
       }
    } else {
       print "\"$filehandle\" does not exist or is not a \".tex\" file.\n";
     }
}

相关内容