如何使 rmligs 脚本在 Windows 上全局可用?

如何使 rmligs 脚本在 Windows 上全局可用?

希望与“(La)TeX 相关软件和工具

我刚刚了解到林格斯脚本。由于无法通过 MiKTeX(也无法通过 TeX Live)获取该脚本,因此我手动下载了存档并将其解压。使用 Windows 命令提示符,当我在文件rmligs(没有文件扩展名)所在的目录中键入 时,rmligs 成功运行perl rmligs testfile.tex

现在我尝试让脚本在全球范围内可用,就像 latexmk 一样,但没有成功。如何让 rmligs 在全球范围内可用,这样无论我在哪个目录中都可以使用它?

我尝试将所有 rmligs 文件放在不同位置的目录中,并寻求遵循 texmf 树顺序:

  • C:\Program Files (x86)\MiKTeX 2.9\scripts\rmligs\perl\
  • C:\Program Files (x86)\MiKTeX 2.9\scripts\rmligs\
  • C:\mtpak\scripts\rmligs\perl\C:\mtpak\是我的本地/个人/自定义根,可用于其他添加。)
  • C:\mtpak\scripts\rmligs\

每次尝试之后,我都会刷新文件名数据库,但调用perl rmligs foo.texrmligs foo.tex不起作用。

我在 Windows 7 (64 位) 上使用 ActivePerl 5.12.4 Build 1205 (64 位)。我既不是高级命令行用户,也不是 Perl 程序员,我首先安装 Perl 是为了使用 latexmk。

答案1

我的回答与 TeX 完全无关,但我希望能回答您的问题。

为了在任意文件夹上运行命令,操作系统需要“知道”这些命令。系统如何知道命令是否可用?在路径中搜索。因此,首先要做的事情是:

将 的内容提取rmligs-0.84.tar.gz到文件夹中。我建议避免在目录名称中使用空格。就我而言,我提取到C:\paulo\softwares\rmligs

如果我是dir我的目录,我有:

14/11/2002  18:54               359 BUGS
14/11/2002  19:19               466 Changes
10/01/2000  19:22               747 Copyright
02/11/1999  18:28            18.007 GPL2
28/11/1999  19:43               269 makefile
14/11/2002  20:06               699 MD5sums
18/03/2000  12:40             2.621 PGPKeys
14/11/2002  18:52             4.002 README
14/11/2002  17:12            28.799 rmligs
14/11/2002  19:55             1.641 rmligs.1
01/12/1999  09:53               791 testfile.tex
14/11/2002  19:04                 5 VERSION

现在,让我们将该目录添加到 Windows 路径中。正如 Canageek 所提到的,转到Control Panel -> System and Security\System -> Advanced system settings -> Environment settings。看在上帝的份上,小心一点。:)我通常更喜欢更改我的user variables而不是system variables,因此双击PATH下的变量user variables,转到行尾,键入;并添加我们在上一步中设置的完整路径:

特性

(抱歉,我的 Windows 是葡萄牙语的,但我希望你能明白我的意思)

然后点击OK多次。:)

现在让我们进入命令提示符:

命令 1

它没用,你这个混蛋!我会解释原因。有一个名为 的系统变量PATHEXT,如果我回显它(它在您的计算机上可能有所不同):

C:\Users\Paulo>echo %PATHEXT%
.SCM;.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.wlua;.lexe;.RB;.RBW

这些是可以在命令提示符中执行的文件及其顺序。如您所见,如果路径中有bla.exe和,则将执行第一个文件,因为它具有更高的优先级。现在让我们添加我们的Perl 脚本。bla.batrmligs

转到rmligs目录(在我的情况下为C:\paulo\softwares\rmligs),然后创建一个名为rmligs.cmd(我是的粉丝.cmd而不是.bat)的文件,其内容如下:

@echo off
perl %~dp0\rmligs %1 %2 %3 %4 %5 %6 %7 %8 %9

完成了!让我们分解一下:

perl是解释器,%~dp0\rmligs给出了脚本的完整路径,并且%1%9提供给脚本的参数.cmd。太棒了!

现在让我们打开另一个命令提示符:

命令 2

太棒了,拿走我所有的钱!现在让我们测试一下。我复制testfile.tex到我的Documents文件夹中,让我们看看它是否有效:

命令 3

太棒了!希望它能帮到你。:)

答案2

我感觉这个问题也与 miktex 中的 scripts 文件夹有关。miktex bin 文件夹包含许多小型可执行文件(例如makeglossaries.exe,,makeluafontdb.exehtlatex.exe,它们是指向位于 miktex/scripts 文件夹中的 perl 脚本或 lua 脚本或批处理文件的简单包装器。

您无法通过这种方式添加自己的包装器 .exe 和脚本(或更改现有脚本的路径或名称)。出于安全原因,miktex 使用受保护的文件 (scripts.ini),其中包含允许的脚本列表。

因此,如果您必须使用通常的非 miktex 方法,例如编写一个小的批处理文件,然后将该批处理文件放在您的路径中的某个位置。

答案3

如果您不喜欢包装脚本,您可以使用以下两个命令:

ASSOC .pl=PerlScript
FTYPE PerlScript=perl.exe %1 %*

这允许您按如下方式调用 Perl 脚本:

script.pl 1 2 3

如果您不想输入扩展名,请执行以下操作:

set PATHEXT=.pl;%PATHEXT%

并且可以按如下方式调用该脚本:

script 1 2 3

当然,您必须PATH按照 Paulo Cereda 的回答调整环境变量。否则将找不到该脚本。

相关内容