我应该将 latexmkrc 文件放在哪里(使用 TeXLive 2011 和 Windows 7)以便它可用于我的所有文档文件?

我应该将 latexmkrc 文件放在哪里(使用 TeXLive 2011 和 Windows 7)以便它可用于我的所有文档文件?

我昨天花了大部分时间尝试LaTeX使用包创建一个缩写列表{nomencl},经过大量研究后,我成功使用latexmk并在文件中创建了自定义规则latexmkrc。(这是通过复制示例,我不知道我实际上在做什么!)。但是,只有当我将文件放在latexmkrc当前文档文件夹中时,它才有效。文件中的代码latexmkrc是从 John Collins 在另一个论坛上的帖子中克隆的,如下所示:

add_cus_dep('nlo', 'nls', 0, 'makenlo2nls');
sub makenlo2nls {
my $cwd = cwd();
my $base = $_[0];
# Normalize the filenames to use / to separate the directory
# components, since both \ and / are allowed under MSWin:
$base =~ s(\\)(/)g;
$cwd =~ s(\\)(/)g;
# Remove any initial string equal to the name of current
# working directory (and the following separator):
$base =~ s(^$cwd/)();
# Normalize the filename back to standard MSWin:
$base =~ s(/)(\\)g;
# Quote the filenames in the command line
# (to give safety against special characters):
system("makeindex \"$base.nlo\" -s nomencl.ist -o \"$base.nls\"");
}

是否有一个中心位置可以放置该latexmkrc文件,以便我的所有文档都可以使用它?我尝试过一些明显的位置,例如C:\Users\*username*

答案1

尝试命名该文件LatexMK并将其放入C:\latexmk

编辑:引用手册latexmk,部分“配置/初始化(RC)文件”,第9-10页:

乳胶可以使用初始化文件进行定制,初始化文件在启动时按以下顺序读取:

1) 系统 RC 文件(如果存在)。

[...]

在 MS-WINDOWS 系统上,它会查找“C:\latexmk\LatexMk”。

[...]

2) 用户的 RC 文件“$HOME/.latexmkrc”(如果存在)。此处 $HOME 是环境变量 HOME 的值。[...] 在 MS-Windows 中,用户可以选择设置它。

3) 当前工作目录中的 RC 文件。此文件可以命名为“latexmkrc”或“.latexmkrc”,如果存在,则使用其中第一个找到的文件。

4) 在命令行上使用 - 指定的任何 RC 文件r选项。

答案2

实际上,latexmk 的文档在解释用户主文件夹位置的概念时并不完整。

如果环境变量 HOME 存在,则使用该变量(通常在类 UNIX 系统上有效,或者用户定义此变量)。如果不存在,则使用 USERPROFILE 的值(在 Windows 系统上应该有效)。回退只是使用当前目录,但这在这里无关紧要

在 Windows 7 系统上,USERPROFILE 的默认值应该是C:\Users\*username*。因此将初始化文件放在那里应该可以,但问题说这样做不行。但是,主目录中文件的名称应该是.latexmkrc,前面有一个句点(根据 UNIX 惯例,将此类文件视为隐藏文件)。也许文件名中缺少句点,或者(可能性较小)用户配置文件不在其默认位置。

答案3

我猜想,与每次将设置文件放入工作文件夹中相比,类似下面的操作可以提供更合适的选择:

  1. 创建具有适当值的变量 HOME

  2. 在1中相应的文件夹中创建文件.latexmkrc。

  3. 将以下内容放入其中:

    # Custom dependency and function for nomencl package 
    add_cus_dep( 'nlo', 'nls', 0, 'makenlo2nls' );
    sub makenlo2nls {
    system( "makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"" );
    }
    
  4. 假设已安装 Perl,请安装 PAR 打包程序:

    cpan -i PAR::Packer
    
  5. 修改latexmk.pl如下:

    # Note that each rc file may unset $auto_rc_use to
    # prevent lower-level rc files from being read.
    # So test on $auto_rc_use in each case.
    if ( $auto_rc_use ) {
        # System rc file:
        read_first_rc_file_in_list( @rc_system_files );
    }
    if ( $auto_rc_use ) {
        # User rc file:
    
    # Give Perl access to the windows HOME environment variable
    
     my $HOME = $ENV{HOME}; 
    
    read_first_rc_file_in_list( "$HOME/.latexmkrc" );
    }
    if ( $auto_rc_use ) { 
    # Rc file in current directory:
    read_first_rc_file_in_list( "latexmkrc", ".latexmkrc" );
    }
    
  6. 现在,编译它:

    pp -o latexmk latexmk.pl
    
  7. 完成。Latexmk 现在应该使用命名法进行编译%HOME%/.latexmkrc

不幸的是,我无法测试它,因为经过多次尝试后,我放弃在 Windows x64 平台上安装 pp。

相关内容