将 vc 添加到限制 write18 列表

将 vc 添加到限制 write18 列表

我想使用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}

我尝试过添加vcshell_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

相关内容