ConTeXt MkIV 中 TiKz 支持的当前状态如何?我之所以问这个问题,是因为 pgfmanual 2.10 第 25 页上写着:
请注意,最新的 ConTEXt 版本(例如 mark IV,ConTEXt 的 LuaTEX 感知部分)不支持 pgf/TikZ。
我尝试了以下示例,但它没有按预期工作。
\setupcolors[state=start]
\usemodule[tikz]
\starttext
\starttikzpicture
[node distance=4cm,
place/.style={circle,draw=blue!50,fill=blue!20,thick,
inner sep=0pt,minimum size=6mm}]
\node[place] (wat) {};
\node[place] (wag) [below=of wat] {};
\stoptikzpicture
\stoptext
无论有多大node distance=4cm
,圆圈都会重叠,偏移量约为 0.5 厘米。
ConTeXt 版本:mtx-context | current version: 2012.05.22 16:12
答案1
我在手册中找不到您提到的引文。(见编辑)
当前 ConTeXt 支持 TikZ。但是,在 ConTeXt 中使用 TikZ 的人并不多。这反过来意味着错误不容易被发现。当您将手册中使用的 LaTeX 特定命令(例如字体切换命令)转换为 ConTeXt 风格的命令时,您应该会得到所需的结果。
当文件编译成功,但输出结果却出乎意料时,查看日志文件几乎总能发现问题所在。在您的特定示例中,您遗漏了调用\usetikzlibrary[positioning]
。
编辑:我有一个旧版本的手册,其中没有您提到的引文。新版本显然不正式支持 ConTeXt MkIV(我猜旧版本也不支持)。但是,我将 TikZ 与当前 MkIV 结合使用,大多数时候它都能按预期工作。
答案2
我从 LaTeX tikz 转到 ConTeXt MkIV tikz 的笔记。
第一步、安装:
first-install.sh --modules="t-tikz"
第二步,使用方法:和LaTeX下的tikz类似,不过有以下区别:
\start...\stoptikzpicture
为了\begin{tikzpicture}...
\start...\stopscope
为了\begin{scope}...
tikz 使用的每个命名颜色都必须像这样定义(
\unprotect
不需要,至少在 MkIV 中不需要):\pgfutil@definecolor{coscolor}{rgb}{0, 0, 0.8} \pgfutil@definecolor{fillcolor}{gray}{.625}
tikz 使用的每种命名颜色在文本节点中必须以正常的 ConTeXt 方式定义:
\definecolor[coscolor][r=0, g=0, b=0.8] \definecolor[fillcolor][s=.625]
(为了比较:这是 tikz/pgf 定义颜色的方式)
\definecolor[coscolor][r=0,g=0,b=.8] \definecolor[fillcolor][.625black]
颜色定义放在哪里并不重要!
最后,对于那些对自动转换感兴趣的人,这里是所有替换的列表:
\\begin{tikzpicture} --> \\starttikzpicture
\\end{tikzpicture} --> \\stoptikzpicture
\\begin{scope} --> \\startscope
\\end{scope} --> \\stopscope
% Because we don't know for any of the defined colours whether tikz
% will use them in a text node or in a drawing bit, we replace the
% original with the ConTeXt definition *and* the pgfutil definition.
\\definecolor[named]{coscolor}{rgb}{r=0,g=0,b=.8}
-->
\\definecolor[coscolor][r=0,g=0,b=.8]
\\pgfutil@definecolor[named]{coscolor}{rgb}{0, 0, 0.8}
\\definecolor[named]{fillcolor}{.625black}
-->
\\definecolor[fillcolor][s=.625]
\\pgfutil@definecolor{coscolor}{gray}{.625}