TikZ-UML:如何缩小课堂内丢失的空间?

TikZ-UML:如何缩小课堂内丢失的空间?

我正在使用 TikZ-UML 来说明科学论文中的一些概念。它做得很好,但我遇到了一些空间问题(因为所有科学论文都有页数限制)。我已经设法根据概念中的位置适当缩小了我的图形,但对象内部有很多空间丢失。

课堂上失去空间的典型例子

考虑一下图中对象名称与线条之间的垂直间距。例如,“A”的顶部与其上方的线条之间有 4 pt 的间距,“A”下方也有 6 pt 的间距。

有没有什么办法,能够控制这个空间,从而让我的身形进一步缩小?

下面是使用以下方法制作的对象模型的最小示例tikz-uml

\documentclass[a4paper]{article}
\usepackage{tikz-uml}
\begin{document}
\begin{center}
\begin{tikzpicture}
\umlsimpleclass{A}
\umlsimpleclass[x=2]{B}
\umlassoc{A}{B}
\end{tikzpicture}
\end{center}
\end{document}

通过阅读tikzuml.sty,我看到了一行:

\tikzstyle{tikzuml simpleclass style}=[rectangle, minimum height=2em, node distance=2em]% 

我将最小高度设置为 1em。这会改变“A”和“B”上方丢失的空间,但不会影响下方的空间

非常感谢。

答案1

对于所讨论的节点,有两三处需要修改。(\umlclass最后只生成一个\node。)首先,minimum height被设置为的2emtikz-uml其次是inner ysep,它确定从节点内容到节点边界的垂直距离。

例如,如果你这样做

\umlsimpleclass[x=2,minimum height=0pt,inner ysep=0pt]{A}

您会在右侧看到输出,而默认输出在左侧:

具有较少垂直空间的简单类

由于内容设置在 a 中,因此仍有一些空间tabular,即您遇到的情况如下

\node [inner ysep=0pt,draw] {\begin{tabular}{c}A\end{tabular}};

另一个要使用的参数是text depth。请注意带有降部的字母(如 y、g、j),如果text depth太小,字母可能会伸出节点。

您可以修改样式tikzuml simpleclass styletikzuml class style例如

\tikzset{
  tikzuml class style/.append style={minimum height=0pt,inner ysep=0pt,text depth=2pt}
}

或者创建您自己的风格,并将其添加到您想要的节点。

左边是默认样式,中间是修改tikz-uml样式,右边是自定义样式。它们按以下代码中的顺序出现。

代码输出

\documentclass[border=10pt]{standalone}
\usepackage{tikz-uml}
\tikzset{
  reduce height/.style={
    minimum height=0pt,
    inner ysep=#1,
    text depth=2pt
  },
  reduce height/.default={0pt}
}
\begin{document}
\begin{tikzpicture}
\umlsimpleclass[x=-2]{Ay}
\umlclass[x=-2,y=-2]{B}{foo}{barg}
\umlclass[x=-2,y=-4]{B}{}{}

\begin{scope}[
  % instead of a scope environment, you can add these style modifications
  % in the options to a tikzpicture, or in \tikzset{} in the preamble
  tikzuml simpleclass style/.append style={minimum height=0pt,inner sep=0pt},
  tikzuml class style/.append style={minimum height=0pt,inner sep=0pt},
]
\umlsimpleclass{Ay}
\umlclass[y=-2]{B}{foo}{barg}
\umlclass[y=-4]{B}{}{}
\end{scope}

\umlsimpleclass[x=2,reduce height]{Ay}
\umlclass[y=-2,x=2,reduce height=1pt]{B}{foo}{barg}
\umlclass[y=-4,x=2,reduce height]{B}{}{}
\end{tikzpicture}
\end{document}

相关内容