缩小 UML 组件

缩小 UML 组件

为了适合用 TiKZ-UML 制作的 UML 图(https://perso.ensta-paris.fr/~kielbasi/tikzuml/) 放入投影机幻灯片中,我目前正在尝试缩小组件的主体部分。不幸的是,我没有找到这样做的方法。

我的代码如下:

\documentclass[aspectratio=169]{beamer}

\usepackage{tikz}

\usepackage{tikz-uml}        
        
\usepackage{parts/umldocument}
\usepackage{parts/umlmultidocument}
\usepackage{parts/umlcomponent}

\begin{document}

\begin{frame}{Example UML Components}
  \begin{tikzpicture}
  
  \begin{umlcomponent}{A}
   \hspace{-1cm}
  \end{umlcomponent}  
  
  \umlbasiccomponent[x=3, minimum height=0pt] {B} 
  
  \umlbasiccomponent[x=6, inner ysep=0pt] {C} 
  
  \umlbasiccomponent[x=9, outer ysep=0pt] {D} 
  
 \end{tikzpicture}
\end{frame}

\end{document}

但这只会产生以下输出:

四个组件均未缩小尺寸(C 除外,因为它已损坏)

在设置inner ysep=0pt(从TikZ-UML:如何缩小课堂内丢失的空间?) 可减小尺寸,这会以破坏外观的方式减小整个组件的尺寸。也可以设置inner ysep=-2pt,这会进一步减小主体,但也会减小标题尺寸。

另外添加

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

没有效果。

有谁知道如何缩小 tikz-uml 组件主体的大小而不破坏其标题部分?

答案1

我自己想出了一个中间解决方案:在 中tikz-uml.sty,可以调整第 4754 行

  \node[inner sep=2ex, font=\tikzumlDefaultFont, fit = \csname tikzumlComponentFit\tikzumlComponent@parent @@\tikzumlComponent@fitname\endcsname] (\tikzumlComponent@nodeName-body) {};%

  \node[inner sep=0ex, font=\tikzumlDefaultFont, fit = \csname tikzumlComponentFit\tikzumlComponent@parent @@\tikzumlComponent@fitname\endcsname] (\tikzumlComponent@nodeName-body) {};%

从而减小了间距。

这将影响全部图片(以及整个演示)中的组件,因此从外部设置参数的解决方案会更好。

相关内容