tikz-uml 和 pgf-umlcd 崩溃

tikz-uml 和 pgf-umlcd 崩溃

我被困在使用 的继承图中pgf-umlcd。我同时使用pgf-umlcdtikz-uml。没有错误,但继承的行没有显示。

\documentclass[a4paper,10pt]{book}
\usepackage{tikz-uml}
\usepackage{pgf-umlcd}
\begin{document}
\begin{figure}[H]
\centering

\begin{tikzpicture}
  \begin{abstractclass}[text width=5cm]{Shape}{0,0}
  \end{abstractclass}

  \begin{class}[text width=4cm]{Rectangle}{-3,-3}
    \inherit{Shape}
  \end{class}

  \begin{class}[text width=4cm]{Ellipse}{3,-3}
    \inherit{Shape}
  \end{class}
  \begin{class}[text width=4cm]{Circle}{3,-6}
    \inherit{Ellipse}
  \end{class}

\end{tikzpicture}
\end{figure}
\end{document}

答案1

错误信息完整地解释了事情的经过:

! LaTeX Error: Command \umlnote already defined.
               Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.

两个包都尝试定义命令\umlnote只能有一个!– 高地人

您可以通过选择哪个包应保留正常功能并最后加载该包来解决此问题\umlnote。然后,在加载两个包之间,使用类似

\let\umlnoteold\umlnote
\let\umlnote\relax

第一行是可选的,用于存储第一个包的版本\umlnote以供以后需要时使用。这可能涉及修补第一个包以使用此保存的命令而不是原始的\umlnote。第二行“删除”的定义,\umlnote以便当第二个包尝试创建命令时,\newcommand不会抛出错误。

\documentclass[a4paper,10pt]{book}
\usepackage{tikz-uml}
\let\umlnotetikzuml\umlnote
\let\umlnote\relax
\usepackage{pgf-umlcd}
\begin{document}
\begin{figure}[H]
\centering

\begin{tikzpicture}
  \begin{abstractclass}[text width=5cm]{Shape}{0,0}
  \end{abstractclass}

  \begin{class}[text width=4cm]{Rectangle}{-3,-3}
    \inherit{Shape}
  \end{class}

  \begin{class}[text width=4cm]{Ellipse}{3,-3}
    \inherit{Shape}
  \end{class}
  \begin{class}[text width=4cm]{Circle}{3,-6}
    \inherit{Ellipse}
  \end{class}

\end{tikzpicture}
\end{figure}
\end{document}

在此处输入图片描述

相关内容