我如何确定要将哪些项目添加到我的“restricted-shell-escape”安全列表中?

我如何确定要将哪些项目添加到我的“restricted-shell-escape”安全列表中?

我正在尝试关注MacTeX-2012 说明从 (unsafe) 迁移shell-escape到使用“restricted-shell-escape”。但我不清楚在指定此模式的“安全列表”的文件中应放入哪些项目。

例如,如果我shell-escape从命令行中删除(或者从 TeXShop 中的警告对话框中禁用它),并尝试使用需要它的包,例如,auto-pst-pdf我收到错误:

“您需要使用相当于“pdflatex -shell-escape”的命令运行 LaTeX,或者关闭 auto-pst-pdf。”

处理即使是最简单的文件时:

\documentclass{article}
\usepackage{auto-pst-pdf}
\begin{document}
Test. 
\end{document}

我还注意到,即使是这个简单的例子,我也收到了其他警告,例如

“软件包 ifplatform 警告:Shell 转义已被禁用,因此我只能检测到 \ifwindows”

并想知道是否有办法避免这些问题,以及使用“restricted-shell-escape”相应的功能损失 - 或者至少在不扫描日志的情况下找出我遗漏的内容。

我需要将哪些项目添加到我的工作中texmf.cnfauto-pst-pdf无需启用shell-escape?一般来说,我如何确定哪些项目应该在这个列表中?有些东西会仅有的使用shell-scape标志,而不是使用“restricted-shell-escape”;我如何确定它们是什么?


(本地)texmf.cnf文件:

shell_escape_commands = bibtex,bibtex8,kpsewhich,makeindex,mpost,repstopdf

答案1

我会避免修改允许在受限 shell 中运行的程序列表。这些程序要么不输出任何输出(当请求输出重定向时,它们在受限 shell 转义设置中不起作用),要么遵守openout_any中的设置texmf.cnf

就目前的问题而言,pdflatex在文件上启用 shell escape运行filename.tex包括使用命令行

pdflatex -shell-escape filename

(无引号)。

如何设置前端来运行此命令取决于前端本身。例如,使用 TeXShop,可以定义一个新引擎。在您的~/Library/TeXShop/Engines文件夹中复制XeLaTeX.engine并命名为pdflatexshell.engine。修改文件(使用 TeXShop 本身)以读取

#!/bin/tcsh

set path= (/usr/texbin /usr/local/bin $path)
pdflatex -shell-escape "$1"

对于要使用不受限制的 shell 转义进行编译的文件,请在其开头写入

% !TEX TS-program = pdflatexshell

以便在打开时自动选择引擎。

与其他前端或 LyX 配合使用会有所不同。


如果你确实想使用受限 shell 逃逸,你必须启用

uname
rm
echo
latex

runsystem可以通过在文件中搜索来确定程序列表.log

相关内容