写入辅助文件时出现问题

写入辅助文件时出现问题

由于没有 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 命令行,其他系统可能有所不同)

或者你似乎没有使用\includeonlyuse\input而不是\include

相关内容