Создать поле подпроцесса с помощью tikzstyle

Создать поле подпроцесса с помощью tikzstyle

я нашелэто руководство по созданию блок-схемы с помощью tizk, но для поля подпроцесса нет опции.

Как мне создать такую ​​коробку, с надписью между двумя строками внутри? Символ подпроцесса

Заранее спасибо! :)

Редактировать: Пока что самое близкое, что я получил, это

\tikzstyle{subprocess} = [rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=orange!30, double distance=

\node (subpro1) [subprocess, below of=start] {Failed subprocess box};

но это дает 2 строки накаждыйсторона, в то время как я хочу двойную линию только на двух вертикальных сторонах. Это также помещает цветной фон только на внутреннюю сторону, в то время как я хочу, чтобы он был на самом внешнем прямоугольнике.

введите описание изображения здесь

решение1

введите описание изображения здесь

\documentclass[tikz, margin=3mm]{standalone}
     \newcommand\ppbb{path picture bounding box}

\begin{document}
    \begin{tikzpicture}[ 
subprocess/.style = {rectangle, draw=black, fill=orange!30,
                     minimum width=3cm, minimum height=1cm,inner xsep=3mm,
                     text width =\pgfkeysvalueof{/pgf/minimum width}-2*\pgfkeysvalueof{/pgf/inner xsep},
                     align=flush center,
                     path picture={\draw 
    ([xshift =2mm] \ppbb.north west) -- ([xshift= 2mm] \ppbb.south west)
    ([xshift=-2mm] \ppbb.north east) -- ([xshift=-2mm] \ppbb.south east);
                                  },% end of path picture
                    }
                      ]
\node (subpro1) [subprocess] {Failed subprocess box};
    \end{tikzpicture}
\end{document}

Приложение (1): Стиль для subprocessвас может быть \tikzsetследующим:

\tikzset{
    subprocess/.style = {rectangle, draw=black, fill=orange!30,
                         minimum width=3cm, minimum height=1cm, inner xsep=3mm,
                         text width =\pgfkeysvalueof{/pgf/minimum width}-2*\pgfkeysvalueof{/pgf/inner xsep},
                         align=flush center,
                         path picture={\draw 
        ([xshift =2mm] \ppbb.north west) -- ([xshift= 2mm] \ppbb.south west)
        ([xshift=-2mm] \ppbb.north east) -- ([xshift=-2mm] \ppbb.south east);
                                      },% end of path picture
                        }
}

и поместить его в преамбулу документа.

Приложение (2): В случае, если вы хотите, чтобы текст располагался только в одной строке, код subprocessможно упростить до:

\documentclass[tikz, margin=3mm]{standalone}
     \newcommand\ppbb{path picture bounding box}
\tikzset{
subprocess/.style = {rectangle, draw=black, fill=orange!30,
                     minimum width=3cm, minimum height=1cm, inner xsep=3mm,
                     align=flush center,
                     path picture={\draw
    ([xshift =2mm] \ppbb.north west) -- ([xshift= 2mm] \ppbb.south west)
    ([xshift=-2mm] \ppbb.north east) -- ([xshift=-2mm] \ppbb.south east);
                                  },% end of path picture
                    }
        }% end of tikzset

\begin{document}
    \begin{tikzpicture}
\node (subpro1) [subprocess] {Failed subprocess box};
    \end{tikzpicture}
\end{document}

введите описание изображения здесь

Приложение (3): В случае, если вы хотите вручную задать «минимальную/максимальную ширину» фигуры, то вам может помочь следующий пример:

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{positioning}

     \newcommand\ppbb{path picture bounding box}
\tikzset{
subprocess/.style = {rectangle, draw=black, semithick, fill=orange!30,
                     minimum width=#1, minimum height=1cm, inner xsep=3mm, % <-- changed
                     text width =\pgfkeysvalueof{/pgf/minimum width}-2*\pgfkeysvalueof{/pgf/inner xsep},
                     align=flush center,
                     path picture={\draw
    ([xshift =2mm] \ppbb.north west) -- ([xshift= 2mm] \ppbb.south west)
    ([xshift=-2mm] \ppbb.north east) -- ([xshift=-2mm] \ppbb.south east);
                                  },% end of path picture
                    },
subprocess/.default = 24mm % <-- added 
        }% end of tikzset

\begin{document}
    \begin{tikzpicture}
\node (subpro1) [subprocess] {subprocess};% <-- use default width
\node (subpro2) [subprocess=33mm, below=of subpro1] {very long subprocess};% <-- use locally prescribed width
\node (subpro3) [subprocess=44mm, below=of subpro2] {very long subprocess};% <-- use locally prescribed width
\draw   (subpro1) edge[->] (subpro2)
        (subpro2) edge[->] (subpro3);
    \end{tikzpicture}
\end{document}

введите описание изображения здесь

Связанный контент