阻止重新创建特定的辅助文件

阻止重新创建特定的辅助文件

有时我想暂时禁止创建一些具体的辅助文件。实际示例如下:

  • 在编辑文档的后期阶段,.toc直接在文件中修复某些内容是获得特定结果的最简单方法。(我知道这很丑陋并且具有潜在的危险,但是......)

  • 获得reledpar平衡布局可能需要进行大量编译,每次编译都非常耗时。当结果最终确定(并写入辅助文件)时,我不希望在更改文本中的细节时破坏它,因为这可能会造成拼写错误,从而导致编译错误。

\nofiles在第一种情况下会有所帮助,但会阻止创建全部辅助文件。的自定义文件完全reledpar不受影响。\nofiles

对于这两种情况,操作系统锁定相关文件都是可行的,但缺点是会抛出“我无法在文件上写入......”错误,需要我做出反应。

所以我正在寻找一种定制\nofiles仅阻止的方法具体的文件。

或者是否可以采取另一种方法,指示 TeX 放弃写入不可写的文件?

答案1

这有一个手动编辑的 LOT,其余所有写入均保持不变(许多写入被重定向到日志文件)

在此处输入图片描述

\begin{filecontents}{\jobname.lot}
\contentsline {table}{\numberline {1}{HERE ztztztz}}{100}
\contentsline {table}{\numberline {2}{THERE ztztztzzzz}}{200}
\end{filecontents}

\documentclass{article}

\makeatletter
\def\tmplot{lot}
\def\@starttoc#1{%
  \begingroup
    \makeatletter
    \@input{\jobname.#1}%
    \if@filesw
      \def\tmp{#1}%
      \ifx\tmp\tmplot
        \expandafter\let\csname tf@#1\endcsname\m@ne
       \else
         \expandafter\newwrite\csname tf@#1\endcsname
         \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
        \fi
    \fi
    \@nobreakfalse
  \endgroup}

\makeatother
\begin{document}

\tableofcontents
\listoftables
\listoffigures

\section{zzz}
z
\begin{table}
  \caption{ztztztz}
\end{table}
\begin{figure}
\caption{zfzfzfz}
\end{figure}

\section{zzz}
z
\begin{table}
  \caption{ztztztzzzz}
\end{table}
\begin{figure}
\caption{zfzfzfzzzz}
\end{figure}

\end{document}

相关内容