下面列出的文件(取自此处:texample.net) 在我的系统(运行 MacTeX 2011)上失败,并出现错误:
Package pgfkeys Error: I do not know the key '/tikz/drop shadow' and
I am going to ignore it. Perhaps you misspelled it.
我使用 TeX Live Utility 检查了我的软件包,它们似乎都是最新的。您知道我可能做错了什么吗?谢谢。
该文件:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgf-umlsd}
\usepgflibrary{arrows} % for pgf-umlsd
\begin{document}
\begin{figure}
\centering
\begin{sequencediagram}
\newthread{ss}{}{SimulationServer}
\newinst{ctr}{}{SimControlNode}
\newinst{ps}{}{PhysicsServer}
\newinst[1]{sense}{}{SenseServer}
\begin{call}{ss}{Initialize()}{sense}{}
\end{call}
\begin{sdloop}{Run Loop}
\begin{call}{ss}{StartCycle()}{ctr}{}
\begin{call}{ctr}{ActAgent()}{sense}{}
\end{call}
\end{call}
\begin{call}{ss}{Update()}{ps}{}
\begin{call}{ps}{PrePhysicsUpdate()}{sense}{state}
\end{call}
\begin{callself}{ps}{PhysicsUpdate()}{}
\end{callself}
\begin{call}{ps}{PostPhysicsUpdate()}{sense}{}
\end{call}
\end{call}
\begin{call}{ss}{EndCycle()}{ctr}{}
\begin{call}{ctr}{SenseAgent()}{sense}{}
\end{call}
\end{call}
\end{sdloop}
\end{sequencediagram}
\caption{UML sequence diagram demo.}
\end{figure}
\end{document}
更新:我找到了答案:软件包是错误的 -pgf-umlsd.sty v0.5
至少对于我运行的系统而言。它们应该是...
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shadows} % for pgf-umlsd
\usepackage[underline=true,rounded corners=false]{pgf-umlsd}
此外,现在命令\begin{sdloop}{Run Loop}
需要是\begin{sdblock}{Run Loop}
。
答案1
对于这样的错误消息:
! Package pgfkeys Error: I do not know the key '/tikz/drop shadow' and I am going to ignore it. Perhaps you misspelled it.
See the pgfkeys package documentation for explanation.
解决方案是包含适当的 TikZ 库,在本例中
\usetikzlibrary{shadows}
更详细地说,你可以按照以下方法找到解决方案:
首先打开 TikZ 手册,通过调用
texdoc tikz
或texdoc pgfkeys
或texdoc pgfmanual
。你也可以通过CTAN镜像。在这种情况下,搜索错误抱怨的键
/tikz/drop shadow
。 (不可否认,这在一个近 1200 页长的文件中可能需要一段时间。)(您也可以尝试手册末尾的索引。)- 向上查找,直到找到它出现的部分。在本例中,出现在第 66.3.1 节:
如果你上升到 66.3(就在那里)然后再到 66,你就会找到需要包含的库:
按照说明所述,您可以使用\usetikzlibrary{shadows}
它以便不再收到错误消息。