Wie kann ich eine FILE Struktur in einer Tabelle darstellen/anzeigen. Anbei ein Code (Netzfund) den ich teilweise adaptiert habe. Dieser Code zeigt eine File Tree Struktur. Jetzt zu meiner Frage kann ich diese Struktur in meiner Tabelle (siehe unten) anzeigen lassen? Zb: in der Spalte 1?

Vollständiges Minimalbeispiel:

Öffne in Overleaf
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{trees}
\begin{document}
\tikzstyle{every node}=[draw=black,thick,anchor=west]
\tikzstyle{selected}=[draw=red,fill=red!30]
\tikzstyle{optional}=[dashed,fill=gray!50]
\begin{tikzpicture}[%
  grow via three points={one child at (0.5,-0.7) and
  two children at (0.5,-0.7) and (0.5,-1.4)},
  edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
  \node {texmf}
    child { node {S1*1}}        
    child { node {S2*3}}
    child { node {S2*3}}
    child { node [selected] {S*ALL}
      child { node [optional] {latex}}
      child { node {plain}}
    }
    child [missing] {}              
    child [missing] {}              
    child [missing] {}              
    child { node {S END}};
\end{tikzpicture}
\end{document}

Anbei meine Tabelle (kein Standalone Code - sorry)

Öffne in Overleaf
\begin{longtable}{@{\extracolsep{\fill}}|C{3.2cm}|L{4.5cm}|L{8cm}|}
\caption{} \\
\hline
\textbf{a} & \textbf{a a a} & \textbf{a a a} \\
\hline \addlinespace[1pt] \hline
\endfirsthead

\multicolumn{3}{c}{(a of a)} \\
\hline
\textbf{a a} & \textbf{a a a} & \textbf{a a a} \\
\hline \addlinespace[1pt] \hline
\endhead

\multicolumn{3}{c}{(To be continued)}
\endfoot
\endlastfoot
01a & 01\_gws (a) & \\ \hline
02a & 02\_aws (a) & \\ \hline
aa & 14a  & \\\cline{2-3}
 & v & \\ \hline
... &... & ...\\ \hline
\end{longtable}

UPDATE: Anbei mein lauffähiges Beispiel! Leider werden keine hlines bzw | Striche dargestellt. Kann ich weiters das "aaa" nicht mittig sondern nach oben-linksbündig positionieren?

Öffne in Overleaf
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{trees}
\usepackage{longtable} %Large tables (longtable)
\usepackage{tikz,booktabs}
\usepackage{tabularx}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcommand{\ltab}{\raggedright\arraybackslash} % Tabellenabschnitt linksbündig
\newcommand{\ctab}{\centering\arraybackslash} % Tabellenabschnitt zentriert
\newcommand{\rtab}{\raggedleft\arraybackslash} % Tabellenabschnitt rechtsbündig
%\renewcommand*{\footfont}{\normalfont} 
%\renewcommand*{\headfont}{\normalfont} 
\begin{document}
\tikzstyle{every node}=[draw=black,thick,anchor=west]
\tikzstyle{selected}=[draw=red,fill=red!30]
\tikzstyle{optional}=[dashed,fill=gray!50]

\begin{longtable}{@{\extracolsep{\fill}}|C{3.2cm}|L{4.5cm}|L{8cm}|}
\caption{} \\
\hline

%\textbf{a} & \textbf{a a a} & \textbf{a a a} \\ <- ursprüngliche Zeile
%Einfügen in der 1 Zeile/ 1 Spalte diesen File-Tree
% % % % % % % % % % % % % % % % % % % % % % % % % % %
\begin{tikzpicture}[%
  grow via three points={one child at (0.5,-0.7) and
  two children at (0.5,-0.7) and (0.5,-1.4)},
  edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
  \node {texmf}
    child { node {S1*1}}        
    child { node {S2*3}}
    child { node {S2*3}}
    child { node [selected] {S*ALL}
      child { node [optional] {latex}}
      child { node {plain}}
    }
    child [missing] {}              
    child [missing] {}              
    child [missing] {}              
    child { node {S END}};
\end{tikzpicture} & \textbf{a a a} & \textbf{a a a} \\
% % %ENDE % % % % % % % % % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %

\hline \addlinespace[1pt] \hline
\endfirsthead

\multicolumn{3}{c}{(a of a)} \\
\hline
\textbf{a a} & \textbf{a a a} & \textbf{a a a} \\
\hline \addlinespace[1pt] \hline
\endhead

\multicolumn{3}{c}{(To be continued)}
\endfoot
\endlastfoot
01a & 01\_gws (a) & \\ \hline
02a & 02\_aws (a) & \\ \hline
aa & 14a  & \\\cline{2-3}
 & v & \\ \hline
... &... & ...\\ \hline
\end{longtable}

\end{document}

alt text

gefragt 10 Aug, 07:32

Questionmark's gravatar image

Questionmark
121
Akzeptiert: 100%

bearbeitet Gestern

Zunächst einmal ist minimal keine Klasse für Minimalbeispiele, sondern eine minimale Klasse, zum Testen des LaTeX-Kerns und ggf. als Ausgangspunkt für echte Klassen. Für ein vollständiges Minimalbeispiel verwendet man besser einer Standardklasse wie article.

(10 Aug, 13:48) saputello

Ich die Frage, ehrlich gesagt, nicht so recht. Wer hindert Dich daran, eine tikzpicture in einer Tabelle zu verwenden? Oder möchtest Du gerne, dass die Abbildung über mehrere Zeilen geht? Dann sollte das in der Frage auch möglichst genau thematisiert werden. Am besten zeigst Du ein VM, das zeigt, was Du probiert hast und erklärst daran, was genau anders sein soll.

(10 Aug, 13:51) saputello

Und falls Du willst, dass die Abbildung automatisch über mehrere Seiten umbrochen wird: Das dürfte schwierig werden. Dann müsste man sie stückweise erstellen und diese Stücke auf mehrere Tabellenzeilen verteilen.

(10 Aug, 13:53) saputello
1

Was hast Du an meinem ersten Kommentar nicht verstanden? Dass Du gleich den ersten Satz nicht beachtet hast, ist nämlich die Ursache dafür, dass die Linien fehlen. Andererseits verzichten man ohnehin besser auf vertikale Linien. Siehe dazu auch die deutsche Anleitung zum verwendeten Paket booktabs.

(Gestern) saputello
1

Wenn Du Dich wirklich wunderst, dass Du bei Verwendung von m-Spalten vertikal zentrierte Tabellenzellen bekommst, dann hast Du die array-Anleitung vermutlich nicht gelesen. Nimm entweder p-Spalten oder bei den gezeigten Inhalten besser gleich c und l. Dann ist die Frage der vertikale Ausrichtung einer tikzpicture in einer Tabelle ein Duplikat.

(Gestern) saputello

Dein Beispiel ist leider noch immer nicht minimal. Darüber hinaus beachtet es nicht den wichtigen Hinweis aus saputellos Kommentar, dass man für ein Minimalbeispiel nicht die Klasse minimal verwenden sollte, sondern beispielsweise article. Dieser Hinweis findet sich übrigens auch in der Minimalbeispiel-Anleitung. Beachtet man das:

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees}
\usepackage{longtable} %Large tables (longtable)
\usepackage{booktabs}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\begin{document}
\tikzstyle{every node}=[draw=black,thick,anchor=west]
\tikzstyle{selected}=[draw=red,fill=red!30]
\tikzstyle{optional}=[dashed,fill=gray!50]

\begin{longtable}{@{\extracolsep{\fill}}|C{3.2cm}|L{4.5cm}|L{8cm}|}
\caption{} \\
\hline
\begin{tikzpicture}[%
  grow via three points={one child at (0.5,-0.7) and
  two children at (0.5,-0.7) and (0.5,-1.4)},
  edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
  \node {texmf}
    child { node {S1*1}}        
    child { node {S2*3}}
    child { node {S2*3}}
    child { node [selected] {S*ALL}
      child { node [optional] {latex}}
      child { node {plain}}
    }
    child [missing] {}              
    child [missing] {}              
    child [missing] {}              
    child { node {S END}};
\end{tikzpicture} & \textbf{a a a} & \textbf{a a a} \\
% % %ENDE % % % % % % % % % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %

\hline \addlinespace[1pt] \hline
\endfirsthead

\multicolumn{3}{c}{(a of a)} \\
\hline
\textbf{a a} & \textbf{a a a} & \textbf{a a a} \\
\hline \addlinespace[1pt] \hline
\endhead

\multicolumn{3}{c}{(To be continued)}
\endfoot
\endlastfoot
01a & 01\_gws (a) & \\ \hline
02a & 02\_aws (a) & \\ \hline
aa & 14a  & \\\cline{2-3}
 & v & \\ \hline
... &... & ...\\ \hline
\end{longtable}

\end{document}

dann sind die bei dir fehlenden Linien zu sehen:

Tabelle mit Linien aber viel zu breit

Damit erübrigt sich die Frage nach den Linien also eigentlich bereits. Dass die Tabelle dabei über die Seite hinaus ragt (das ist die dicke Linie rechts in der Abbildung), sollte nicht verwundern 3.2cm + 4.5cm + 8cm + 6\tabcolsep sind nun einmal deutlich zu breit.

Auch die vertikale Zentrierung wurde von dir explizit angefordert. Du verwendest sowohl für die Definition der C- als auch der L-Spalten eine m-Spalte. Der Inhalt von m-Spalten wird per \vcenter zentriert (siehe dazu die Anleitung zum Paket array, das diesen Spaltentyp bereit stellt). Man müsste also m in den Definitionen min. durch p ersetzen und auch die Breitenangaben anpassen:

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees}
\usepackage{longtable} %Large tables (longtable)
\usepackage{booktabs}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}
\begin{document}
\tikzstyle{every node}=[draw=black,thick,anchor=west]
\tikzstyle{selected}=[draw=red,fill=red!30]
\tikzstyle{optional}=[dashed,fill=gray!50]

\begin{longtable}{@{\extracolsep{\fill}}|C{3.2cm}|L{4cm}|L{4cm}|}
\caption{} \\
\hline
\begin{tikzpicture}[%
  grow via three points={one child at (0.5,-0.7) and
  two children at (0.5,-0.7) and (0.5,-1.4)},
  edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
  \node {texmf}
    child { node {S1*1}}        
    child { node {S2*3}}
    child { node {S2*3}}
    child { node [selected] {S*ALL}
      child { node [optional] {latex}}
      child { node {plain}}
    }
    child [missing] {}              
    child [missing] {}              
    child [missing] {}              
    child { node {S END}};
\end{tikzpicture} & \textbf{a a a} & \textbf{a a a} \\
\hline \addlinespace[1pt] \hline
\endfirsthead

\multicolumn{3}{c}{(a of a)} \\
\hline
\textbf{a a} & \textbf{a a a} & \textbf{a a a} \\
\hline \addlinespace[1pt] \hline
\endhead

\multicolumn{3}{c}{(To be continued)}
\endfoot

\endlastfoot

01a & 01\_gws (a) & \\ \hline
02a & 02\_aws (a) & \\ \hline
aa & 14a  & \\\cline{2-3}
 & v & \\ \hline
... &... & ...\\ \hline
\end{longtable}

\end{document}

Hässliche Tabelle mit korrekter Breite und Ausrichtung

Allerdings scheint es so, dass die Tabellenzellen überhaupt nicht umbrochen werden müssen. Daher wäre es einfacher, c- und l-Spalten an Stelle von selbst definierten C- und L-Spalten zu verwenden, oder auch nur drei l-Spalten:

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees}
\usepackage{longtable} %Large tables (longtable)
\usepackage{booktabs}
\begin{document}
\tikzstyle{every node}=[draw=black,thick,anchor=west]
\tikzstyle{selected}=[draw=red,fill=red!30]
\tikzstyle{optional}=[dashed,fill=gray!50]

\begin{longtable}{|*3{l|}}
\caption{} \\
\hline
\begin{tikzpicture}[%
  grow via three points={one child at (0.5,-0.7) and
  two children at (0.5,-0.7) and (0.5,-1.4)},
  edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
  \node {texmf}
    child { node {S1*1}}        
    child { node {S2*3}}
    child { node {S2*3}}
    child { node [selected] {S*ALL}
      child { node [optional] {latex}}
      child { node {plain}}
    }
    child [missing] {}              
    child [missing] {}              
    child [missing] {}              
    child { node {S END}};
\end{tikzpicture} & \textbf{a a a} & \textbf{a a a} \\
\hline \addlinespace[1pt] \hline
\endfirsthead

\multicolumn{3}{c}{(a of a)} \\
\hline
\textbf{a a} & \textbf{a a a} & \textbf{a a a} \\
\hline \addlinespace[1pt] \hline
\endhead

\multicolumn{3}{c}{(To be continued)}
\endfoot

\endlastfoot

01a & 01\_gws (a) & \\ \hline
02a & 02\_aws (a) & \\ \hline
aa & 14a  & \\\cline{2-3}
 & v & \\ \hline
... &... & ...\\ \hline
\end{longtable}

\end{document}

In der Tat schließe ich mich aber der booktabs-Anleitung an und empfehle, auf vertikale Linien ganz zu verzichten und horizontale Linien auf ein Minimum zu reduzieren:

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees}
\usepackage{longtable} %Large tables (longtable)
\usepackage{booktabs}
\begin{document}
\tikzstyle{every node}=[draw=black,thick,anchor=west]
\tikzstyle{selected}=[draw=red,fill=red!30]
\tikzstyle{optional}=[dashed,fill=gray!50]

\begin{longtable}{*3l}
\caption{} \\
\toprule
\begin{tikzpicture}[%
  grow via three points={one child at (0.5,-0.7) and
  two children at (0.5,-0.7) and (0.5,-1.4)},
  edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
  \node {texmf}
    child { node {S1*1}}        
    child { node {S2*3}}
    child { node {S2*3}}
    child { node [selected] {S*ALL}
      child { node [optional] {latex}}
      child { node {plain}}
    }
    child [missing] {}              
    child [missing] {}              
    child [missing] {}              
    child { node {S END}};
\end{tikzpicture} & \textbf{a a a} & \textbf{a a a} \\
\midrule
\endfirsthead

\multicolumn{3}{c}{(a of a)} \\
\textbf{a a} & \textbf{a a a} & \textbf{a a a} \\
\midrule
\endhead

\midrule
\multicolumn{3}{c}{(To be continued)}
\endfoot

\bottomrule
\endlastfoot

01a & 01\_gws (a) & \\
02a & 02\_aws (a) & \\
aa & 14a  & \\
 & v & \\
... &... & ...\\
\end{longtable}

\end{document}

bessere Tabelle

Permanenter link

beantwortet Gestern

Ijon%20Tichy's gravatar image

Ijon Tichy
7.6k11019

bearbeitet Gestern

Danke. Habe es verstanden :)

(Gestern) Questionmark
-1

Alternativ -> einfacher (funktioniert auch in meiner Tabellenumgebung)

Öffne in Overleaf
\documentclass[border=5pt]{standalone}
\usepackage{forest}

\begin{document}

\begin{forest}
  for tree={
    font=\ttfamily,
    grow'=0,
    child anchor=west,
    parent anchor=south,
    anchor=west,
    calign=first,
    edge path={
      \noexpand\path [draw, \forestoption{edge}]
      (!u.south west) +(7.5pt,0) |- node[fill,inner sep=1.25pt] {} (.child anchor)\forestoption{edge label};
    },
    before typesetting nodes={
      if n=1
        {insert before={[,phantom]}}
        {}
    },
    fit=band,
    before computing xy={l=15pt},
  }
[text1
  [text1.1
    [text1.1.1]
    [text1.1.2]
    [text1.1.3]
  ]
  [text1.2
    [text1.2.1]
    [text1.2.2]
  ]
]
\end{forest}

\end{document}
Permanenter link

beantwortet Gestern

Questionmark's gravatar image

Questionmark
121

Das IMHO kaum eine Antwort auf die Fragen, wie man eine tikzpicture o. ä. in einer Tabelle verwenden kann, wie man in der Tabelle die Linien angezeigt bekommt und wie man die vertikale Ausrichtung ändert. Das ist eher eine Antwort auf die gar nicht gestellte Frage nach besseren Baumdiagrammen, wobei wir die irgendwie auch schon hatten. Bitte beachte, dass das hier kein Diskussionsforum ist, sondern ein (strenges) Frage-Antwort-System. Antworten, die nicht direkt etwas mit der Frage zu tun haben, wird aber ein anderer Hilfesuchender kaum finden.

(Gestern) saputello
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×603
×205
×7

Frage gestellt: 10 Aug, 07:32

Frage wurde angeschaut: 110 Mal

Zuletzt aktualisiert: Gestern