![tikzpicture 选项导致“字体 nullfont 中没有 [!”?](https://linux22.com/image/271065/tikzpicture%20%E9%80%89%E9%A1%B9%E5%AF%BC%E8%87%B4%E2%80%9C%E5%AD%97%E4%BD%93%20nullfont%20%E4%B8%AD%E6%B2%A1%E6%9C%89%20%5B%EF%BC%81%E2%80%9D%EF%BC%9F.png)
我正在跟进TikZ & PGF 手册,第 47 页(绘制 Petri 网)。该示例演示了如何使用以下代码将每个标签变为红色:
\begin{tikzpicture}[every label/.style={red}]
当我使用这个时,标签确实变成红色,但我失去了所有其他颜色:
(这是我的图像,没有[every label/.style={red}]
部分):
我的日志包含如下几行:
缺失字符:字体 nullfont 中没有 [!
缺失字符:字体 nullfont 中没有 p!
缺失字符:字体 nullfont 中没有 l!
这个问题这表明空白行是原因所在,但是当我删除该[every label/.style={red}]
部分时,图像可以工作,而当我将其放回原位时,图像则无法工作。这个问题这表明我得到的是裸文本。恐怕我了解的还不够多,无法确定我的情况是否如此(但我正在从链接的手册中复制...)。
有人可以解释一下这个问题吗?这是我的最小的非工作示例:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,decorations.pathmorphing,backgrounds,positioning, fit,petri}
\begin{document}
\begin{tikzpicture}[every label/.style={red}]
[place/.style={circle,draw=blue!50,fill=blue!20,thick,
inner sep=0pt, minimum size=6mm},
transition/.style={rectangle,draw=black!50,fill=black!20,thick,
inner sep=0pt, minimum size=4mm}]
%
\node [place] (waiting) at ( 0,2) {};
\node [place] (critical) at ( 0,1) [below=of waiting] {};
\node [place] (semaphore) at ( 0,0) [below=of critical,label=above:$s\le3$] {};
\node [transition] (leave critical) at ( 1,1) [right=of critical] {};
\node [transition] (enter critical) at (-1,1) [left =of critical] {};
\end{tikzpicture}
\end{document}
答案1
知道了。
\begin{tikzpicture}[every label/.style={red}]
[place/.style={circle,draw=blue!50,fill=blue!20,thick,
inner sep=0pt, minimum size=6mm},
transition/.style={rectangle,draw=black!50,fill=black!20,thick,
inner sep=0pt, minimum size=4mm}]
这有两个样式设置部分( 中的两个部分[ ]
)。其中一个(第二个)被解释为纯文本,而不是第一个的附录。由于第二组包含 的颜色nodes
,因此它们没有被着色。
为了解决这个问题,我应该只使用一个[ ... ]
包含我所有样式的样式:
\begin{tikzpicture}[every label/.style={red},
place/.style={circle,draw=blue!50,fill=blue!20,thick,
inner sep=0pt,minimum size=6mm},
transition/.style={rectangle,draw=black!50,fill=black!20,thick,
inner sep=0pt,minimum size=4mm}]