![忽略本地 tikz 环境中的全局选项?](https://linux22.com/image/378531/%E5%BF%BD%E7%95%A5%E6%9C%AC%E5%9C%B0%20tikz%20%E7%8E%AF%E5%A2%83%E4%B8%AD%E7%9A%84%E5%85%A8%E5%B1%80%E9%80%89%E9%A1%B9%EF%BC%9F.png)
使用该软件包fancytikzposter
会创建一堆 tikz 样式,以便在海报上绘制方块。但是,当tikzpicture
我自己使用环境时,所有这些样式都会“渗入”自定义的 tikz 图片。特别是,这会破坏与普通 LaTeX + TikZ 安装一起使用的 tikz 图片。
'MWE':
% either use documentclass standalone OR
% the fancytikzposter template inside documentclass a0poster
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
\node at (25:4) {A};
\node at (155:4) {B};
\node at (270:2) {C};
\draw[-implies, double distance=0.25cm]
(160:3) -- (230:1.65);
\draw[implies-, double distance=0.25cm]
(165:4) -- (220:2.5);
\draw [-implies, double distance=0.25cm]
(-2, 1.7) -- (2, 1.7);
\end{tikzpicture}
\end{document}
在独立类中生成正确的图形:
fancytikzposter
但是在内部时无法产生任何有用的内容blocknode
(要复制此内容,请使用 fancytikzposter 模板,适当的 MWE 会炸毁这个帖子):
观察发现,节点本身看起来就像小块节点,这让人怀疑全局设置会干扰绘图。查看了 的源代码后fancytikzposter
,似乎包只将某些名称定义为样式(例如frame
等innerframe
),但不知何故一定有一个默认样式。
我试过了:
- 将整个绘图代码封装在
scope
空样式的环境中, - 定义
\tikzset{mystyle={}}
一切\draw[mystyle]
,
但均未取得任何成果。
我怎样才能画一个正常,默认tikzpicture,忽略现有的全局样式和选项?
PS:当然也可以在单机上先画图,然后\includegraphics
再画,不过直接在海报上画就更好了。
答案1
不幸的是,您并没有真正披露导致有问题的输出的代码。不过,有一个相当简单的技巧可以让您有效地嵌套tikzpicture
s:将它们放入在\savebox
ambient 之外创建的中tikzpicture
,然后在节点或其他任何地方使用它。请注意,在tikzposter
取代fancytikzposter
样式的调用中,这不再是必要的。(非常感谢 Torbørn T. 指出这一点!),但由于您似乎仍在使用该fancytikzposter
样式,因此这个技巧可能很有用。并且它可能在其他场合有用。
\documentclass{tikzposter}
\newsavebox{\mypic}
\usetikzlibrary{arrows}
\sbox\mypic{\begin{tikzpicture}
\node at (25:4) {A};
\node at (155:4) {B};
\node at (270:2) {C};
\draw[-implies, double distance=0.25cm]
(160:3) -- (230:1.65);
\draw[implies-, double distance=0.25cm]
(165:4) -- (220:2.5);
\draw [-implies, double distance=0.25cm]
(-2, 1.7) -- (2, 1.7);
\end{tikzpicture}}
\begin{document}
\block{Some title}{\usebox\mypic}
\end{document}
答案2
首先,fancytikzposter 已经被 tikzposter 取代。
您面临的问题来自节点的绘制方式。块节点的所有内容都使用多部分包绘制,因此具有与“主”节点相同的布局。事实上,每个块都由标题块和许多其他内容组成。
marmot 提到的解决方案是,使用 savebox 也许是最简单的解决方法。