偶然,我在使用文件内容包:LaTeX 抱怨由文件内容环境不可写:
LaTeX Warning: Overwriting file `./data.tex'.
! I can't write on file `data.tex'.
<to be read again>
\relax
l.6 \begin{filecontents*}{data.tex}
只需按回车键即可。我怀疑 MS Windows 使用了一些文件访问控制机制,有时在另一个 LaTeX 编译尝试“锁定”并再次写入同一文件之前无法及时“解锁”文件(在具有 SSD 的相当快的系统上运行)。也许我的防病毒软件(Symantec)造成了这个问题,因为它忙于检查新创建的文件。
是否有任何技巧可以帮助 LaTeX 内部实现此机制?刷新文件缓存?延迟处理几毫秒?
细节:
诚然,我有一大批文档文件(超过 100 个),它们由单个 DOS 脚本在批处理作业中一个接一个地处理,该脚本随后对所有文件调用 LaTeX。一个进程连续多次调用 LaTeX。
典型的 LaTeX 文档文件如下所示:
\documentclass[varwidth=469pt]{standalone}
\begin{filecontents*}{data.tex}
\begin{tabular}{|c|l|c|}
Data & Parameter & Hex
\end{tabular}
\end{filecontents*}
\begin{document}
\input{data.tex}
\end{document}
典型的 DOS 脚本如下所示(但包含更多调用pdflatex):
D:
cd "/foo/bar/GeneratedImages"
pdflatex 27.tex
pdflatex 56.tex
pdflatex 161.tex
pdflatex 231.tex
目前,我对所有文档重复使用同一个文件,data.tex
这就是出现此问题的原因。
如果没有这样的修复,我会尽量避免使用文件内容包(从而替换文本表经过表列)或者将其包含\jobname
在数据文件的名称中(文件垃圾邮件)。
答案1
最简单的方法是使用以下命令使文件名唯一\jobname
:
\documentclass[varwidth=469pt]{standalone}
\begin{filecontents*}{\jobname-data.tex}
\begin{tabular}{|c|l|c|}
Data & Parameter & Hex
\end{tabular}
\end{filecontents*}
\begin{document}
\input{\jobname-data.tex}
\end{document}
根据您的示例,\jobname
扩展为27
,,,,。56
161
231