Как нарисовать такую ​​блок-схему в LaTeX

Как нарисовать такую ​​блок-схему в LaTeX

Я пытался нарисовать блок-схему, похожую на ту, что показана на рисунке, но у меня не получается. Пожалуйста, кто-нибудь подскажите мне способ, как нарисовать такую ​​блок-схему. Спасибо.

Я пытался до сих пор,

\usepackage{forest}
\useforestlibrary{edges}

\begin{forest}
for tree={draw, minimum width=2cm, minimum height=1cm, rounded corners},
forked edges,

[IDS for Automotive CAN Bus System [Deployment Strategy[ECU][CAN][Gateway]][Detection Approach[Specification Based][Anomaly Based[Machine Learning][Hybrid Based][Frequency Based]][Signature Based]][Attacking Technique[DoS][Replay]]]
\end{forest}

Я получаю такой вывод в формате PDF.неправильный вывод]1

Этот вывод я хочу

решение1

Это в значительной степени адаптировано изздесь. Вам нужно вводить for tree={folder, grow'=0}всякий раз, когда вы хотите начать папку. Ваше дерево слишком широкое, поэтому я уменьшил ширину текста для всех узлов, кроме корневых.

\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{forest}
\useforestlibrary{edges}
\makeatletter
% remove the stray space https://tex.stackexchange.com/a/513549
\patchcmd{\pgfutilsolvetwotwoleqfloat}
  { \noexpand\pgfmathfloatdivide@}
  {\noexpand\pgfmathfloatdivide@}
  {}{}
\makeatother
\begin{document}
\noindent\begin{forest}
before typesetting nodes={
   if={isodd(n_children("!r"))}{
     for nodewalk/.wrap pgfmath arg={{fake=r,n=#1}{calign with current edge}}{int((n_children("!r")+1)/2)},
   }{},
 },
forked edges,
for tree={draw, minimum width=2cm, minimum height=1cm, rounded corners,
if level=0{}{text width=2cm}},
[IDS for Automotive CAN Bus System 
 [Deployment Strategy,for tree={folder, grow'=0}
  [ECU]
  [CAN]
  [Gateway]
 ]
 [Detection Approach
  [Specification Based]
  [Anomaly Based,for tree={folder, grow'=0}
   [Machine Learning]
   [Hybrid Based]
   [Frequency Based]
  ]
  [Signature Based]
 ]
 [Attacking Technique,for tree={folder, grow'=0}
  [DoS]
  [Replay]
 ]
]
\end{forest}
\end{document}

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

showframeтолько для того, чтобы показать, что это дерево помещается (хотя простая загрузка пакета геометрии делает страницу немного шире).

РЕДАКТИРОВАТЬ: Удалил tempcounta/.max={level}{tree},то, что не использовалось, большое спасибо @cfr.

2-е ИЗМЕНЕНИЕ: Добавлено исправление изhttps://tex.stackexchange.com/a/513549, следуя предложению @cfr.

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