使用 struktex 在 struktogramm 中居中声明

使用 struktex 在 struktogramm 中居中声明

我目前正在使用斯特鲁克泰克斯用于生成结构图(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. 是否可以将内容(即“做某事”)置于每个单元格的中心?
  2. 如何通过将单元格“执行某事”跨越两行来避免出现空集符号?

答案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}

在此处输入图片描述

相关内容