Tikz 包“外部”导致未封闭的 tikzpicture@tcb@hooked 环境

Tikz 包“外部”导致未封闭的 tikzpicture@tcb@hooked 环境

不幸的是,我无法提供 MWE,因为经过一段时间的尝试,一切似乎都完美地适用于小示例。所以这可能是一些包冲突或 RTL 问题,我不确定;很高兴听到任何提示,即使是关于如何在这种情况下设置适当的 MWE。

我有一份很长的手稿,里面全是 tikz 图片,是用希伯来语 (RTL) 写的,使用 XeLaTeX + polyglossia。我的 tikz 设置很简单

\usepackage{tikz}
\usetikzlibrary{shapes,backgrounds}

由于编译时间很长,我尝试使用外部 tikz 包,方法是

\usetikzlibrary{external}
\tikzexternalize[prefix=figures/]

确保该文件夹figures/确实存在。

但是,编译时使用

xelatex -synctex=1 -interaction=nonstopmode --shell-escape "notes".tex

现在在第一个 tikz 图片的末尾导致错误:

\begin{tikzpicture@tcb@hooked} on input line 302 ended by \end{tikzpicture}. \end{tikzpicture}

第一个 tikz 图片如下所示:

\begin{tikzpicture}
  \shade[ball color=blue] (0,0) circle (.25cm);
  \shade[top color=red,bottom color=black] (0.5,-0.25) rectangle +(0.1,0.5);
  \shade[ball color=blue] (1.1,0) circle (.25cm);
  \shade[ball color=blue] (1.85,0) circle (.25cm);
  \shade[ball color=blue] (2.6,0) circle (.25cm);
  \shade[top color=red,bottom color=black] (3.1,-0.25) rectangle +(0.1,0.5);
  \shade[top color=red,bottom color=black] (3.45,-0.25) rectangle +(0.1,0.5);
  \shade[ball color=blue] (4.05,0) circle (.25cm);
  \shade[ball color=blue] (4.8,0) circle (.25cm);
\end{tikzpicture}

没什么特别的。但正如我所说,尝试使用这个 tikzpicture 和相同的 tikz 设置进行 MWE,不使用 polyglossia 和我使用的其他软件包,效果很好。

以下是日志文件中的一些日志行,直到出现相关错误:

! Package tikz Warning: The key 'up to date check=md5' is impossible, there is 
no macro to compute MD5. Falling back to 'up to date check=diff'.
\openout4 = `figures/notes-figure0.md5'.


===== 'mode=convert with system call': Invoking 'pdflatex -halt-on-error -inter
action=batchmode -jobname "figures/notes-figure0" "\def\tikzexternalrealjob{not
es}\input{notes}"' ========
\openout4 = `notes.auxlock'.

runsystem(pdflatex -halt-on-error -interaction=batchmode -jobname "figures/note
s-figure0" "\def\tikzexternalrealjob{notes}\input{notes}")...executed.

\openout4 = `notes.auxlock'.

File: figures/notes-figure0.pdf Graphic file (type QTm)
<use  "figures/notes-figure0.pdf" >

! LaTeX Error: \begin{tikzpicture@tcb@hooked} on input line 302 ended by \end{t
ikzpicture}.

我猜问题出在tcolorbox我使用的另一个包上。确实,一个 pdf 被正确处理,我的图形文件夹包含一个编译后的 pdf 文件,该文件由论文中的第一个 tcolorbox 组成。其余的 tcolorboxed 未编译(似乎),并且tikzpicture在许多这样的 tcolorbox 之后,代码中会出现产生错误的 。

有什么想法我应该寻找什么,或者关于生成适当的 MWE 的提示吗?

答案1

如果使用了 的外部化库tikz,并且全局启用了外部化,并且与其使用 的库中的tcolorbox选项一起使用,则外部化过程可能会/将出现编译错误。enhancedskinstikz

为了防止tcolorbox外部化,使用

\tcbset{shield externalize}

在你的文档中前言。有了它,的绘图部分tcolorbox就不会被外部化,这在目前的技术水平上是一件好事。然而,如果 tcolorbox 包含 tikzpicture,则该图片仍会被外部化。

相关内容