我目前正在使用斯特鲁克泰克斯用于生成结构图(Nassi-Shneiderman 图)。
我的源代码如下所示:
\begin{struktogramm}(150,45)
\assign{Do something}
\ifthenelse{5}{5} {Make a decision?}{Yes}{No}
\ifthenelse{3}{3} {Make a decision?}{Yes}{No}
\assign{Do something}
\change
\assign{Do something}
\ifend
\change
\assign{Do something}
\ifend
\end{struktogramm}
得到这个简单的图表:
实际上我遗漏了两件事:
- 是否可以将内容(即“做某事”)置于每个单元格的中心?
- 如何通过将单元格“执行某事”跨越两行来避免出现空集符号?
答案1
最初,我进一步采用了 Harish 的答案来解决 #2:添加\rule
。需要手动调整才能猜测规则的高度。但在我的编辑中,我意识到我也可以使用\hfill
关于条目的对称 s 来实现居中。
\documentclass{article}
\usepackage{struktex}
%\usepackage{etoolbox}
%\patchcmd{\sub}{}{}{}{}
\begin{document}
\begin{struktogramm}(150,45)
\assign{\mbox{}\hfil Do something}
\ifthenelse{5}{5} {Make a decision?}{Yes}{No}
\ifthenelse{3}{3} {Make a decision?}{Yes}{No}
\assign{\hfill Do something\hfill}
\change
\assign{\hfill Do something\hfill}
\ifend
\change
\assign{\hfill Do something\rule[-4.7ex]{0ex}{10.3ex}\hfill}
\ifend
\end{struktogramm}
\end{document}
答案2
最简单(也可能最丑陋)的是使用
\mbox{}\hfil Do something
您也可以使用\null
而不是\mbox{}
。
\documentclass{article}
\usepackage{struktex}
%\usepackage{etoolbox}
%\patchcmd{\sub}{}{}{}{}
\begin{document}
\begin{struktogramm}(150,45)
\assign{\mbox{}\hfil Do something}
\ifthenelse{5}{5} {Make a decision?}{Yes}{No}
\ifthenelse{3}{3} {Make a decision?}{Yes}{No}
\assign{\mbox{}\hfil Do something}
\change
\assign{\mbox{}\hfil Do something}
\ifend
\change
\assign{\mbox{}\hfil Do something}
\ifend
\end{struktogramm}
\end{document}