![我如何确定要将哪些项目添加到我的“restricted-shell-escape”安全列表中?](https://linux22.com/image/252789/%E6%88%91%E5%A6%82%E4%BD%95%E7%A1%AE%E5%AE%9A%E8%A6%81%E5%B0%86%E5%93%AA%E4%BA%9B%E9%A1%B9%E7%9B%AE%E6%B7%BB%E5%8A%A0%E5%88%B0%E6%88%91%E7%9A%84%E2%80%9Crestricted-shell-escape%E2%80%9D%E5%AE%89%E5%85%A8%E5%88%97%E8%A1%A8%E4%B8%AD%EF%BC%9F.png)
我正在尝试关注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.cnf
而auto-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
。