我想使用VC 包将版本信息添加到我的文件中。至少目前,我想采用“write18”路线,而不是 makefile 路线。我认为要使其工作,我需要允许 vc 脚本运行。TeXlive 有一个受限制的 write18 列表,其中包含可以运行的命令。(我相信我理解得没错……)所以我的问题是:如何将脚本添加vc
到此列表中?
我在 ubuntu 10.10 上安装了 TeXlive 2009 的打包版本。我想我找到了正确的文件,/etc/texmf/texmf.d/95NonPath.cnf
但它是只写的。所以在使用sudo emacs
它之前,我想检查一下我是否做对了。有没有办法保留我在树中更改的配置文件~/texmf
?
我可以使用 emacs-fu 来自动运行 vc,但我更喜欢 write18 解决方案......
以下是我序言的相关部分:
\immediate\write18{sh ./vc}
\input{vc}
我尝试过添加vc
到shell_escape_commands
列表中,/etc/texmf/texmf.d/95NonPath.cnf
但不起作用。kpsewhich -expand-var '$shell_escape_commands'
仍然没有列出它。所以我vc
直接添加到,/usr/share/texmf/web2c/texmf.cnf
但这也不起作用。我不认为我可以添加sh ./vc
到 shell 转义列表中,因为该列表中不允许有空格,对吗?添加sh
到列表中会起作用吗?这是个好主意吗?我很确定那会很危险……
答案1
TeX Live 2009 有一个限制写入 18,但它显然不安全,因此默认禁用。它在 TeX Live 2010 中启用。
我无法特别帮助解决 Ubuntu 的打包版本问题,因为我总是自己安装 TeX Live。使用标准安装脚本安装的 TeX Live,应该更改的文件是.../texlive/2010/texmf.cnf
。您可以将其添加到shell_escape_commands
列表中。
我不是 kpathsea 专家,所以我不确定是否有办法直接添加到列表中而不进行覆盖。显然,应该尝试一下
shell_escape_commands = ./vc, ${shell_escape_commands}
不起作用:
$ kpsewhich -expand-var '$shell_escape_commands'
warning: kpathsea: variable `shell_escape_commands' references itself (eventually).
但您可以复制原始列表,然后添加./vc
。