如何均衡 pgf-umlcd 图中类框的高度?

如何均衡 pgf-umlcd 图中类框的高度?

我在pdf-umlcd中有以下简单的类图:

\documentclass{article}
\usepackage{pgf-umlcd}

\begin{document}

\begin{tikzpicture}
    \begin{class}
        [text width=2cm]
        {Ah}
        {0,0}
        \operation{greet}
    \end{class}
    \begin{class}
        [text width=2cm]
        {Aj}
        {5,0}
        \operation{greet}
    \end{class}

    \unidirectionalAssociation{Ah}{knows}{}{Aj}
\end{tikzpicture}

\end{document}

不幸的是,这两个类的框具有不同的高度,因为j第二个类名称的下降幅度更大。这也导致两个类之间的关联不是完全水平的:

Aj 高于 Ah

我该如何解决这个问题?我已尝试过:

  • 在类名中使用 strut 或 phantom:显然不受 tikz/pdf-umlcd 支持(“不完整的 \iffalse”)。
  • [text width=2cm]通过更改为手动指定每个类的高度[text width=2cm,minimum height=10cm]:没有产生任何视觉差异。

您知道均衡类框高度的方法吗?理想情况下,应该有一个补丁,自动在每个新类框中插入一个支柱(如果我对支柱的理解正确的话)。

答案1

根据@Qrrbrbirlbel 的评论,我在我的序言中添加了以下补丁:

\usepackage{pgf-umlcd}

% fix inconsistent class name box heights
\tikzset{
    umlcd style class/.append style={
        execute at begin node=\strut}}
% fix inconsistent operation/attribute row heights
\usepackage{xpatch}
\xpatchcmd{\pgfumlcd@operation}{\break}{\break\strut}{}{}
\xpatchcmd{\pgfumlcd@attribute}{\break}{\break\strut}{}{}

相关内容