忽略本地 tikz 环境中的全局选项?

忽略本地 tikz 环境中的全局选项?

使用该软件包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}

在独立类中生成正确的图形:

TikZ 代码在独立环境中执行

fancytikzposter但是在内部时无法产生任何有用的内容blocknode(要复制此内容,请使用 fancytikzposter 模板,适当的 MWE 会炸毁这个帖子):

TikZ 代码在 fancytikzposter 中执行

观察发现,节点本身看起来就像小块节点,这让人怀疑全局设置会干扰绘图。查看了 的源代码后fancytikzposter,似乎包只将某些名称定义为样式(例如frameinnerframe),但不知何故一定有一个默认样式

我试过了:

  • 将整个绘图代码封装在scope空样式的环境中,
  • 定义\tikzset{mystyle={}}一切\draw[mystyle]

但均未取得任何成果。

我怎样才能画一个正常,默认tikzpicture,忽略现有的全局样式和选项?

PS:当然也可以在单机上先画图,然后\includegraphics再画,不过直接在海报上画就更好了。

答案1

不幸的是,您并没有真正披露导致有问题的输出的代码。不过,有一个相当简单的技巧可以让您有效地嵌套tikzpictures:将它们放入在\saveboxambient 之外创建的中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 也许是最简单的解决方法。

相关内容