Dateibaum abbilden

Tabellen und Grafiken erstellen und anordnen


MoritzF

Dateibaum abbilden

Beitrag von MoritzF »

Hallo an diesem regnerischen Samstag,

ich möchte einen Dateibaum einbinden und habe dazu im Internet diese tolle Vorlage gefunden:
\documentclass[12pt,a4paper]{article}% Walter Schmidt
\usepackage[T1]{fontenc}\usepackage{textcomp}
\usepackage{mathpazo}
\usepackage{courier}
\usepackage{geometry,url,ngerman}

\usepackage[inactive]{pst-pdf}

\parindent0pt
\pagestyle{empty}

\usepackage{pstricks,pst-node}
\newcounter{leaves}
\newcounter{directories}

\newenvironment{directory}[2][\linewidth]%
% Startet neues Verzeichnis 
% und produziert eine Minipage der angeg. Breite.
% Syntax: \begin{directory}[width]{text}
% text muss in eine \parbox der angegebenen Breite passen;
% wenn keine Breite angegeben ist, wird \linewidth angenommen.
{%
\setcounter{leaves}{0}%
\addtocounter{directories}{1}
\edef\directoryname{D\thedirectories}
\begin{minipage}[t]{#1}% <-------- !!!
  \setlength{\parindent}{\linewidth}
  \addtolength{\parindent}{-\dirshrink\parindent}
  \parskip0pt%
  \noindent
  \Rnode[href=-\dirshrink]{\directoryname}{\parbox[tt]{#1}{#2}}%
  \par
}  
{\end{minipage}}

% !!! --> Problem:  
% Wegen [tt] stimmt der Zeilenabstand _nach_ der minipage nicht.
% Der Referenzpunkt eines Knoten muss aber in der _ersten_ Zeile 
% liegen, mehrzeilige Knoten, also Unterverzeichnisse, mit ihrer
% ersten Zeile im Dateibaum verankert weren.

\newcommand{\file}[2][]{%
% Fuer einen einzelnen Eintrag innerhalb der directory-Umgebung.
% Das Argument darf seinerseits eine directory-Umgebung sein.
  \addtocounter{leaves}{1}%
  \edef\leaflabel{L\theleaves\directoryname}%
  \par
  \Rnode{\leaflabel}{\parbox[tt]{\dirshrink\linewidth}{#2\hfill#1}}%
  \ncangle[angleA=270,angleB=180,armB=0,nodesep=1pt]
    {\directoryname}{\leaflabel}%
  % \typeout{\directoryname,\leaflabel}% Debugging
\par}

\newcommand{\dirshrink}{.95} 
% relative Verringerung der Breite der Verzeichniseintraege 
% pro Stufe


\begin{document}

The draft directory of \url{fontinst}:
\begin{verbatim}
doc/
  manual/
  fontinst.aux
  fontinst.log
  fontinst.pdf
  fontinst.tex
  fontinst.toc
  intro98.tex
  ltxguide.cfg
  roadmap.eps
encspecs.zip
examples.zip
inputs.zip
latex.zip
README
source.zip
test.zip
\end{verbatim}


\medskip

\dots\ and what can be with \verb+pst-tree+

\def\url#1{#1}

\begin{postscript}
\begin{directory}{\url{fontinst}}
\file{\begin{directory}{\url{doc/}}
  \file{\begin{directory}{\url{manual/}}
    \file[ auxiliary file]{\url{fontinst.aux}}
    \file{\url{fontinst.log}}
    \file{\url{fontinst.pdf}}
    \file{\url{fontinst.tex}}
    \file[ table of contents ]{\url{fontinst.toc}}
    \file{\url{intro98.tex }}
    \file{\url{ltxguide.cfg}}
    \file{\url{roadmap.eps }}
  \end{directory}}
\file{\url{encspecs.zip }}
\end{directory}}
\file{\url{examples.zip }}
\file{\url{inputs.zip   }}
\file{\url{latex.zip    }}
\file{\url{README       }}
\file{\url{source.zip   }}
\file{\url{test.zip     }}
\end{directory}
\end{postscript}

\end{document}

Leider spuckt er mir 68 Fehler aus, alle bei \file{\url{source.zip }} oder auch \file{\url{README }} mit "undefined control sequence".

Zudem erhalte ich auch nicht den Strich an den Ordnern wie er hier abgebildet ist: http://tug.org/PSTricks/main.cgi?file=pst-tree/pst-tree unter "Directory Tree"

Funktioniert die Vorlage bei Euch?

Grüße Moritz

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Deine Vorlage habe ich nicht getestet, vielleicht wäre Paket dirtree etwas für dich.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Stamm-

Problem nicht nachvollziehbar

Beitrag von Stamm- »

Aktualisiere mal dein TeX-System. Im Online-Editor »Overleaf« läuft das Beispiel fehlerfrei durch. Das kannst Du auch selbst einfach durch Klick auf "Öffne in Online-Editor" direkt über dem Code-Block testen.

MoritzF

Beitrag von MoritzF »

Das ist eine gute Idee mit dem "dirtree". Danke!

PS: Am TeX System kanns nich liegen :-/

MoritzF

Beitrag von MoritzF »

Nochmal eine Frage:

Ich habe nun einen Baum erstellt:
\documentclass[border=5pt]{standalone}
\usepackage{forest}

\definecolor{folderbg}{RGB}{124,166,198}
\definecolor{folderborder}{RGB}{110,144,169}

\def\Size{4pt}
\tikzset{
  folder/.pic={
    \filldraw[draw=folderborder,top color=folderbg!50,bottom color=folderbg]
      (-1.05*\Size,0.2\Size+5pt) rectangle ++(.75*\Size,-0.2\Size-5pt);  
    \filldraw[draw=folderborder,top color=folderbg!50,bottom color=folderbg]
      (-1.15*\Size,-\Size) rectangle (1.15*\Size,\Size);
  }
}

\begin{document}

\begin{forest}
  for tree={
    font=\ttfamily,
    grow'=0,
    child anchor=west,
    parent anchor=south,
    anchor=west,
    calign=first,
    inner xsep=7pt,
    edge path={
      \noexpand\path [draw, \forestoption{edge}]
      (!u.south west) +(7.5pt,0) |- (.child anchor) pic {folder} \forestoption{edge label};
    },
    before typesetting nodes={
      if n=1
        {insert before={[,phantom]}}
        {}
    },
    fit=band,
    before computing xy={l=15pt},
  }  
[case
  [system
		[fvSchemes
    ]
    [fvSolution
    ]
		[fvOptions
    ]
		[effTable
    ]
		[snappyHexMeshDict
    ]
		[ControlDict
    ]
  ]
  [constant
    [polyMesh
		  [blockMesh
      ]
			[boundary
      ]
    ]
    [triSurface
    ]
		[RASProperties
    ]
  ]
  [time directory
	  [U 
    ] 
		[p
    ]
		[T
    ]
		[mu
    ]
		[alphat
    ]
		[k
    ]
		[omega
    ]
  ]
]
\end{forest}

\end{document}
Ist es möglich hinter alle Einträge noch zu schreiben: siehe Kapitel xxx ? Und das in einem gleichmäßigen Abstand?

Grüße Moritz

Beinschuss
Forum-Meister
Forum-Meister
Beiträge: 808
Registriert: Di 2. Okt 2012, 21:42
Wohnort: NRW

Beitrag von Beinschuss »

Funktioniert die Vorlage bei Euch?
Ja - wie Du selbst problemlos feststellen kannst, indem Du auf "Öffnen im Online-Editor" klickst. Ich erhalte genau den Dateibaum, wie er auf der angegebenen Webseite angezeigt wird.

MoritzF

Beitrag von MoritzF »

Das habe ich jetzt bereits auch gemacht :-) Hast du mir vielleicht einen Tipp zu meiner Frage?

MoritzF

Beitrag von MoritzF »

Hat hier noch jemand eine Idee wie ich hinter den Dateibaum noch etwas schreiben kann?

Beinschuss
Forum-Meister
Forum-Meister
Beiträge: 808
Registriert: Di 2. Okt 2012, 21:42
Wohnort: NRW

Beitrag von Beinschuss »

Ohne wirklich Ahnung davon zu haben, habe ich aus der Diskussion http://tex.stackexchange.com/questions/ ... -alignment die \newcommand-Zeile genommen, etwas angepasst und in Dein Beispiel eingebaut - es ist mit Sicherheit noch nicht das Gelbe vom Ei, aber vielleicht ein Startpunkt:
\documentclass[border=5pt]{standalone} 
\usepackage{forest} 

\definecolor{folderbg}{RGB}{124,166,198} 
\definecolor{folderborder}{RGB}{110,144,169} 

\def\Size{4pt} 
\tikzset{ 
	folder/.pic={ 
		\filldraw[draw=folderborder,top color=folderbg!50,bottom color=folderbg] 
		(-1.05*\Size,0.2\Size+5pt) rectangle ++(.75*\Size,-0.2\Size-5pt);   
		\filldraw[draw=folderborder,top color=folderbg!50,bottom color=folderbg] 
		(-1.15*\Size,-\Size) rectangle (1.15*\Size,\Size); 
	} 
} 

\begin{document} 
	\newcommand\kap[2][2cm]{\draw () ++(#1,0) node{#2};}
	
	\begin{forest} 
		for tree={ 
			font=\ttfamily, 
			grow'=0, 
			child anchor=west, 
			parent anchor=south, 
			anchor=west, 
			calign=first, 
			inner xsep=7pt, 
			edge path={ 
				\noexpand\path [draw, \forestoption{edge}] 
				(!u.south west) +(7.5pt,0) |- (.child anchor) pic {folder} \forestoption{edge label}; 
			}, 
			before typesetting nodes={ 
				if n=1 
				{insert before={[,phantom]}} 
				{} 
			}, 
			fit=band, 
			before computing xy={l=15pt}, 
		}   
		[case    
		[system
		[fvSchemes 
		]{\kap{Kapitel 8}} 
		[fvSolution 
		]{\kap{Kapitel 9}} 
		[fvOptions 
		] 
		[effTable 
		] 
		[snappyHexMeshDict 
		] 
		[ControlDict 
		] 
		]
		{\kap{Kapitel 7}} 
		[constant 
		[polyMesh 
		[blockMesh 
		] 
		[boundary 
		] 
		] 
		[triSurface 
		] 
		[RASProperties 
		] 
		] 
		[time directory 
		[U 
		] 
		[p 
		] 
		[T 
		] 
		[mu 
		] 
		[alphat 
		] 
		[k 
		] 
		[omega 
		] 
		] 
		]
	\end{forest} 
	
\end{document}

Antworten