不幸的是,我无法提供 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
选项一起使用,则外部化过程可能会/将出现编译错误。enhanced
skins
tikz
为了防止tcolorbox
外部化,使用
\tcbset{shield externalize}
在你的文档中前言。有了它,的绘图部分tcolorbox
就不会被外部化,这在目前的技术水平上是一件好事。然而,如果 tcolorbox 包含 tikzpicture,则该图片仍会被外部化。