希望与“(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.tex
或rmligs 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
多次。:)
现在让我们进入命令提示符:
它没用,你这个混蛋!我会解释原因。有一个名为 的系统变量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.bat
rmligs
转到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
。太棒了!
现在让我们打开另一个命令提示符:
太棒了,拿走我所有的钱!现在让我们测试一下。我复制testfile.tex
到我的Documents
文件夹中,让我们看看它是否有效:
太棒了!希望它能帮到你。:)
答案2
我感觉这个问题也与 miktex 中的 scripts 文件夹有关。miktex bin 文件夹包含许多小型可执行文件(例如makeglossaries.exe
,,makeluafontdb.exe
)htlatex.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 的回答调整环境变量。否则将找不到该脚本。