TikZ Externalize 和 Linegoal 冲突吗?

TikZ Externalize 和 Linegoal 冲突吗?

我是 stackexchange 的新手,没有找到有关此问题的任何信息。每当我尝试将 TikZ 的 externalize 与(与 TikZ 图片无关)一起使用时,我都会遇到错误。\linegoal我的引擎是 Win7 上的带有 TeXstudio 的 MikTeX。一旦将linegoal包与一起使用externalizelinegoal就会引发错误:

! Package linegoal Error: \linegoal does not work if output file are disabled 
(linegoal) please check the value of \if@filesw!.

MWE 是:

\documentclass[11pt]{article}
\usepackage{linegoal}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
  \begin{tikzpicture}
    \draw (0,0) -- (1,1);
  \end{tikzpicture}

  \parbox[t]{\linegoal}{test}
\end{document}

有人知道如何解决这个问题吗?

答案1

external库明确抑制了辅助 LaTeX 文件的生成(因为它们的生成不是线程安全的)。

它用于在生成外部图形时\nofiles禁用文件处理.aux。它将使用自定义功能来允许辅助数据,如\label\ref

因此,简短的回答是:抱歉,这两个包不兼容。


话虽如此,但还是存在或多或少可靠的解决方法。这就像打开保修封条一样……

您可以尝试暂时进行黑客攻击\nofiles,使其tikz认为已禁用它们,但事实并非如此:

\let\oldnofiles=\nofiles
\let\nofiles=\relax
\tikzexternalize
\let\nofiles=\oldnofiles

使用此 hack,您的最小示例可以编译。但是,它可能会彻底失败。也许您应该使用\tikzexternalize[mode=list and make]或类似的东西 -mode=convert with system call由于这些辅助文件周围不可避免的竞争条件,默认设置最终注定会失败。

相关内容