嵌套 tikzpictures、样式继承和保存框

嵌套 tikzpictures、样式继承和保存框

在我的整个文档中,我需要一个自定义符号,我用 TikZ 绘制它。我为它创建了一个宏,所以我不需要复制图片。我还需要在其他tikzpictures 中使用该符号。这里的问题是样式继承:外部图片的样式不能干扰宏生成的符号。

答案这个问题这个问题建议使用保存箱来解决这个问题。我试过这样做,但到目前为止,失败了。这是一个最小的工作示例:

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{automata, positioning}

\newsavebox{\blankbox}
\savebox{\blankbox}{\hspace{0.1ex}\tikz[baseline=0.1em]{%
    \node [shape=rectangle, anchor=south, draw, inner sep=0pt, minimum width=1ex, minimum height=0.9em] (char) {}}%
  \hspace{0.1ex}}

\begin{document}
  \begin{tikzpicture}[auto, shorten >=1pt, >=latex]
    \node[state] (0) {$\usebox{\blankbox}$};
    \node[state, dotted, right=1ex of 0] (1) {$\usebox{\blankbox}$};
  \end{tikzpicture}
\end{document}

及其输出

上述 TeX 代码的输出

可以看到,右侧节点的样式被矩形继承。

我的问题是:如何在仍然到处使用相同的宏的情况下解决这个问题?

编辑:在评论中,Zarko 建议手动更改内图的线型。这显然解决了此特定示例中的问题,但我还需要设置哪些其他属性来“保护”内图?我尝试了一些(例如,,,color),但(令我惊讶的是)这些都没有被继承。这是否意味着只有被继承了?doubledecorationrotatedash pattern

答案1

如果您可以选择切换到另一个引擎,XeTeX 将按照您的意愿运行。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{automata, positioning}

\newsavebox{\blankbox}
\savebox{\blankbox}{\hspace{0.1ex}\tikz[baseline=0.1em]{%
    \node [shape=rectangle, anchor=south, draw, inner sep=0pt, minimum width=1ex, minimum height=0.9em] (char) {}}%
  \hspace{0.1ex}}

\begin{document}
  \begin{tikzpicture}[auto, shorten >=1pt, >=latex]
    \node[state] (0) {\usebox{\blankbox}};
    \node[state, dotted, right=1ex of 0] (1) {\usebox{\blankbox}};
  \end{tikzpicture}
\end{document}

特克斯

答案2

你不能。你不能用盒子保护内部图片。你不能用 保护内部图片.pic。即使你将内部图片外部化然后再包含回来,你也无法保护它。

事实上,你可以 更改完成的 PDF 文件中的颜色

@Heiko Oberdiek 的回答表明,继承所有内容确实是 PDF 的功能。您所能做的就是重置可能影响内部图片的每个参数。

幸运的是,有一个有限的参数列表,可以在 PDF 规范中找到。祝你好运。

相关内容