![缩小 UML 组件](https://linux22.com/image/454228/%E7%BC%A9%E5%B0%8F%20UML%20%E7%BB%84%E4%BB%B6.png)
为了适合用 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}
但这只会产生以下输出:
在设置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) {};%
从而减小了间距。
这将影响全部图片(以及整个演示)中的组件,因此从外部设置参数的解决方案会更好。