无法在 ConTeXt 中使用 TikZ“记住图片”

无法在 ConTeXt 中使用 TikZ“记住图片”

为了尝试像在 LaTeX 中那样连接两个内联节点,我编写了以下代码:

\usemodule[tikz]
\starttext
\starttikzpicture[remember picture]
     \node (A) {Node 1};
\stoptikzpicture
Hi world
\starttikzpicture[remember picture]
\node (B) {Node 2};
\stoptikzpicture
\starttikzpicture[overlay,remember picture]
\draw (B) --++(0,0.5) -| (A);
\stoptikzpicture
\stoptext

但运行时什么都没有出现,被认为是致命错误。我想知道 TikZ 中是否有一些 LaTeX 独有的库或选项。如果诸如remember pictureContext 中的选项无法使用,还有其他选择吗?

答案1

这是 ConTeXt 中的一个问题,定义

\def\lastxpos{\clf_lastxpos}
\def\lastypos{\clf_lastypos}

再向下

\let\pdflastxpos\lastxpos
\let\pdflastypos\lastypos

其中\clf_lastxpos\clf_lastypos只是扩展为数字。这意味着\pdflastxpos\pdflastypos不能再用作寄存器。一个简单的解决方法是将它们包装在\numexpr。我已在邮件列表中报告了此问题:https://mailman.ntg.nl/pipermail/dev-context/2019/003602.html

\unprotect
% This fixes the present bug
\unexpanded\def\pdflastxpos{\numexpr\clf_lastxpos\relax}
\unexpanded\def\pdflastypos{\numexpr\clf_lastypos\relax}
% This might be needed if you run PGF 3.1.3
% see https://github.com/pgf-tikz/pgf/issues/675
\def\XC@tgt@mod#1{#1}
\def\XC@sdef#1#2{\edef#1{#2}}
\protect
\usemodule[tikz]
\starttext
\starttikzpicture[remember picture]
     \node (A) {Node 1};
\stoptikzpicture
Hi world
\starttikzpicture[remember picture]
    \node (B) {Node 2};
\stoptikzpicture
\starttikzpicture[overlay,remember picture]
    \draw (B) --++(0,0.5) -| (A);
\stoptikzpicture
\stoptext

相关内容