我正在尝试制作带有 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 显示出来,但没有一种是真正可以接受的:
- 删除
\setupbackgrounds
(但我希望背景颜色不是白色) - 卸妆(这也许能说明问题的本质,但我认为化妆才是定义幻灯片的正确方法)
\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
在文档中。