![写入辅助文件时出现问题](https://linux22.com/image/425653/%E5%86%99%E5%85%A5%E8%BE%85%E5%8A%A9%E6%96%87%E4%BB%B6%E6%97%B6%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
由于没有 MWE,因此面临被否决的风险,但目前只是想获得一些指点。
我将我的 MiKTeX 安装更新为目前可用的最新版本(MiKTeX-pdfTeX 4.1(MiKTeX 20.12)),现在我在构建文档时收到错误:
Appendix D.
(../html/examples/group/latex/refman_doc.tex (../html/examples/group/latex//gro
up__group1.tex) [243]
! I can't write on file `../html/examples/group/latex//group__group2.aux'.
\@include ...mmediate \openout \@partaux "#1.aux"
\immediate \write \@partau...
l.3 \include{group__group2}
Please type another output file name
! Emergency stop.
\@include ...mmediate \openout \@partaux "#1.aux"
\immediate \write \@partau...
l.3 \include{group__group2}
*** (job aborted, file error in nonstop mode)
一些小背景:
- 正常启动
pdflatex doxygen_manual.tex
- 以下是声明:
\subinputfrom{../html/examples/group/latex/}{refman_doc}
- 并再次在此文件中:
\include{group__group2}
- 据我所知,磁盘没有满,文件和目录的保护也正常
看起来现在尝试写入目录,../html/examples/group/latex/
而之前文件被写入当前目录。我已经尝试过-shell-escape
和-enable-write18
(以及--shell-escape
和--enable-write18
),但无济于事。
- 关于写入 aux 文件有任何已知的变化吗?
- 任何提示
编辑 我问了另一个问题(在相对引用目录中写入辅助文件时出现问题) 包含详细信息和 MWE,但由于它与这个重复,因此已关闭......
所以我现在在这里添加信息:在问题中写入辅助文件时出现问题询问了我由于更新 MiKTeX 发行版而遇到的问题,但是(当时)没有花时间创建 MWE,因此没有引起太多回应。
我有目录结构:
- 主要的
- 手册.tex
- 团体
- group__group2.tex
- refman_doc.tex
手册.tex
\documentclass{book}
\usepackage{import}
\usepackage{hyperref}
\begin{document}
\subinputfrom{../group}{refman_doc}
\end{document}
group__group2.tex
\hypertarget{group__group2}{}{The Second Group}
refman_doc.tex
{Module Documentation}
\include{group__group2}
在目录中运行main
命令时pdflatex manual.tex
出现错误:
...
(../group/../group/refman_doc.tex [1{C:/Users/User/AppData/Local/MiKTeX/2.9/pdf
tex/config/pdftex.map}]
! I can't write on file `../group//group__group2.aux'.
\@include ...mmediate \openout \@partaux "#1.aux"
\immediate \write \@partau...
l.2 \include{group__group2}
Please type another output file name:
但是在非交互模式下(通常的运行方式,即使用\batchmode
),人们没有机会指定文件,并且生成崩溃。
正如原始问题中所写,添加诸如-shell-escape
和/或之类的选项-enable-write18
并没有帮助。
- 这个问题有解决办法吗?
编辑2
我做了一些进一步的测试。我\subinputfrom
用一个\input
语句替换了,虽然这对上面的有限示例有效,但它对我更大的代码库不起作用,因为这里(再次只是一个有限的视图)我们在
refman_doc.tex
{Module Documentation}
\input{group__group1}
\include{group__group2}
其内容group_group1.tex
类似于group__group2.tex
,且文件也与 平行group__group2.tex
。这会导致错误:
(manual.out) (manual.out) (../group/refman_doc.tex
! LaTeX Error: File `group__group1.tex' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)
Enter file name:
! Emergency stop.
<read *>
l.2 \input{group__group1}
! ==> Fatal error occurred, no output PDF file produced!
答案1
我没有 miktex,所以这个答案是用 texlive (cygwin) 检查的
旧版本将.aux
文件写入\include
当前目录中的文件(这通常不会发生,似乎是未记录的功能import
)这恰好使您的示例起作用,但是,例如,如果您在不同的文件夹中包含同名的文件,则这些.aux
文件会相互覆盖,导致非常奇怪的行为。
使用当前的乳胶,正常\include
行为已经恢复(我没有追踪到变化发生的具体位置),因此写入,.aux
但../group
默认情况下阻止在当前文件夹之外写入。
要处理未改变的文件,您可以执行
openout_any=a pdflatex manual.tex
这将允许写入父目录而不更改默认值。(确切的语法有一个 bash 命令行,其他系统可能有所不同)
或者你似乎没有使用\includeonly
use\input
而不是\include