写入当前文件夹之外的文件

写入当前文件夹之外的文件

是否可以TeX在当前文件夹以外的其他地方写入?

以下操作无效:

\documentclass{article}
\begin{document}

\newwrite\tempfile
\openout\tempfile=/Users/colas/Desktop/coucou.aux
\write\tempfile{Test}
\closeout\tempfile

Test

\end{document}

错误是

./bac_a_sable.tex:13: 我无法在文件 `/Users/colas/Desktop/coucou.aux' 上写入。 \endgroup \set@typeset@protect l.13 \end{document}

答案1

TeX Live(我猜你正在使用它)通常不允许在当前目录路径之外进行文件写入操作,因为这是一个安全风险。这由设置控制openout_any,可以采用以下三个值之一(信息复制自texmf.cnf):

  • a(任何):可以打开任何文件。
  • r(受限):不允许打开点文件
  • p(偏执):作为r并不允许进入父目录,并限制绝对路径在之下$TEXMFOUTPUT

正常设置是p,不允许进入父目录。我实在不建议更改此设置。

您可能需要考虑更改$TEXMFOUTPUT为目标目录(因为您使用的是绝对路径),然后应该允许在 TeX 下进行写访问(如果文件系统允许),但我认为David 的评论更好:

保留安全设置要安全得多,但在当前目录中创建一个指向全局文件的符号链接,以便可以使用本地路径写入该文件

如果您确实要降低安全设置,您可以在文件中更改您的首选设置texmf.cnf但我真的不推荐它。

相关内容