ConTeXt:使用化妆后的 tikzpicture 背景颜色会隐藏文本

ConTeXt:使用化妆后的 tikzpicture 背景颜色会隐藏文本

我正在尝试制作带有 tikz 图片和一些文本的幻灯片。我正在定义一种布局以获得垂直居中。经过反复试验,我发现设置页面的背景颜色似乎会隐藏 tikz 图片后的文本,我不知道发生了什么。

最小示例(Test2 没有显示给我):

%&context

% Loading tikz
\usemodule[tikz]
\usemodule[pgfplots]

\setupbackgrounds[page][background=color,backgroundcolor=white]

% Defining centered slides
\definemakeup[center]

\definestartstop
[CenterSlide]
[before={\page\startcentermakeup}, 
 after=\stopcentermakeup\page]

\starttext

\startCenterSlide

\starttikzpicture
\node[draw] (test) {Test1};
\stoptikzpicture \\

Test2 %<- I don't see this show up

\stopCenterSlide

\stoptext

我有三种方法可以让 Test2 显示出来,但没有一种是真正可以接受的:

  1. 删除\setupbackgrounds(但我希望背景颜色不是白色)
  2. 卸妆(这也许能说明问题的本质,但我认为化妆才是定义幻灯片的正确方法)
  3. \startikzpicture在(再次,可能表明某事,但我希望选择将图表放在最顶部)之前添加任何文本

有人可以纠正我做错的事或者解释发生了什么吗?

更新:

根据@Ulrike Fischer的评论,我可以确认问题似乎出在文本的颜色上。强制文本颜色会使Test2显示出来:

\definecolor[myblack][c=0, m=.6, y=.3, k=100]
\color[myblack]{Test2} %<- This now shows up

在最小示例中,使用 设置颜色\startcolor似乎也有效,但在我的实际文档中无效(表明存在其他交互)。使用正常定义black也不起作用。

答案1

TikZ 和 ConTeXt 的颜色机制不兼容。因此,您必须添加

\dontleavehmode\forcecolorhack

在 TikZ 图片前面使其工作。您也可以以编程方式为每个 TikZ 图片执行此操作

\prependvalue{starttikzpicture}{\dontleavehmode\forcecolorhack}

我通常在外部文档中编译我的 TikZ 图片,然后使用 包含它们\externalfigure。这加快了主文档的构建过程,并使我免于所有颜色冲突。

或者,直接用 Metafun 画图。它也比 TikZ 快得多。

%&context

% Loading tikz
\usemodule[tikz]
\usemodule[pgfplots]

\setupbackgrounds[page][background=color,backgroundcolor=white]

% Defining centered slides
\definemakeup[center]

\definestartstop
[CenterSlide]
[before={\page\startcentermakeup}, 
 after=\stopcentermakeup\page]

\starttext

\startCenterSlide

\dontleavehmode\forcecolorhack
\starttikzpicture
\node[draw] (test) {Test1};
\stoptikzpicture \\

Test2 %<- I don't see this show up

\stopCenterSlide

\stoptext

在此处输入图片描述

使用 Metafun 您可以使用

\startMPinclusions
  input boxes ;
\stopMPinclusions

在序言和

\startMPcode
  boxit.test("Test 1") ;
  drawboxed(test) ;
\stopMPcode

在文档中。

相关内容