So zeichnen Sie ein Blockdiagramm wie dieses in LaTeX

So zeichnen Sie ein Blockdiagramm wie dieses in LaTeX

Ich habe versucht, ein Blockdiagramm ähnlich dem im Diagramm gezeigten zu zeichnen, aber ich kann es nicht. Kann mir bitte jemand einen Weg vorschlagen, wie man ein solches Blockdiagramm zeichnet? Danke

Ich habe bisher versucht,

\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}

Ich erhalte diese Art von Ausgabe im PDF-Format.falsche Ausgabe]1

Diese Ausgabe möchte ich

Antwort1

Dies ist weitgehend adaptiert vonHier. Sie müssen for tree={folder, grow'=0}jedes Mal einfügen, wenn Sie einen Ordner starten möchten. Ihr Baum ist etwas zu breit, daher habe ich die Textbreite für alle Knoten außer den Stammknoten reduziert.

\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}

Bildbeschreibung hier eingeben

showframedient nur dazu, zu zeigen, dass dieser Baum passt (das bloße Laden des Geometriepakets macht die Seite allerdings etwas breiter).

BEARBEITEN: Entfernt tempcounta/.max={level}{tree},, was nicht verwendet wurde, vielen Dank an @cfr.

2. BEARBEITUNG: Fix hinzugefügt vonhttps://tex.stackexchange.com/a/513549, einem Vorschlag von @cfr folgend.

verwandte Informationen