PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : file existence



midi
25-01-2008, 15:48
Gibt es eine Möglichkeit mit LaTeX-Boardmitteln erst zu prüfen, ob eine Datei file.tex existiert und dann diese einzubinden mit input{file.tex}? Und kann man irgendwie herausfinden, ob ein file zwar existiert aber leer ist?

SpockinDresden
26-01-2008, 10:09
Es gibt die beiden Befehle


\IfFileExists{filename}{dann_code}{sonst_code}
bzw.

\InputIfFileExists{filename}{dann_code}{sonst_code }

letzterer liest nach Ausführung von dann_code die Datei filename ein.

filename muss wohl den vollen Namen (also inkl. Erweiterung) beinhalten - sagt zumindest Kopka (Bd. 3)...

midi
27-01-2008, 21:48
Vielen Dank! Genau was ich gesicht habe!

Ich vermute ein Test auf einen leeren input-File, wird es nicht geben? Kann mir jemand sagen, wie ich den unteren Befehl abändern könnte, damit eine nicht sichtbare Box dargestellt wird, wenn der File leer ist? Der Parameter soll ein File sein. Den File vor der Erstellung des Dokomentes zu löschen ist eher keine Option. Auf das \textbf{Hinweis:} könnte ich auch verzichten - auf die Farbe leider nicht.



\definecolor{bordercolor}{gray}{0.55}
\definecolor{backgroundcolor}{gray}{0.85}
\newcommand{\mybox}[1]{%
\fcolorbox{bordercolor}{backgroundcolor}{%
\parbox{10cm}{\textbf{Hinweis:} \input{#1}}%
}%
}

rais
28-01-2008, 21:05
Moin moin,


Ich vermute ein Test auf einen leeren input-File, wird es nicht geben?
wieso das denn?;-)


\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{color,ifthen}
\definecolor{bordercolor}{gray}{0.55}
\definecolor{backgroundcolor}{gray}{0.85}
\newlength\myftlen %die Textbreite der Datei
\newlength\myftminlen %darunter wird ignoriert...
\setlength\myftminlen{1pt}%irgendwas Kleines...
\newcommand{\mybox}[1]{%
\vskip3ex
\noindent\fcolorbox{bordercolor}{backgroundcolor}{ \parbox{0.7\linewidth}{%
\IfFileExists{#1}{%Datei existiert:
\settowidth\myftlen{\input{#1}}% effektive Textbreite ermitteln
\ifthenelse{\myftlen<\myftminlen}{%wenn leer...
Datei \textit{#1[.tex]} ist leer!}{\textbf{Hinweis:} \input{#1}}%
}{Datei \textit{#1[.tex]} gibt's hier nicht!}
}}%
\vskip1ex
}
\begin{document}
bla
\mybox{blah}
bla
\mybox{blahh}
bla
\mybox{blahhh}
bla
\end{document}

so als Ausgangsbasis vielleicht.;-)

Dazu erzeugst Du Dir zwei der drei angesprochenen Dateien, und nur eine davon füllst Du mit Inhalt...

Da der komplette Textinhalt einer einzulesenden Datei in einer Länge (\myftlen) ausgedrückt wird, sollten diese Dateien klein genug sein -- d. h., evtl. hilft hier schon, den Text in einer \parbox zu begrenzen, in etwa


\settowidth\myftlen{\parbox{\linewidth}{\input{#1} }}% effektive Textbreite ermitteln

MfG,

midi
30-01-2008, 12:30
Vielen Dank! Wo bekommt dieses grenzenlose Latex-Wissen her? In der Regel beschränken sich Bücher und Tutorials leider nur auf das Basiswissen...Wo kann man solche Sachen nachlesen?

rais
02-02-2008, 02:15
(..) dieses grenzenlose Latex-Wissen (..)
hehe, Du kannst es hier ja mal posten, wenn Du es gefunden hast :D

Keine Ahnung, ob man's überhaupt irgendwo nachlesen kann, aber wenn Du den Code mal Zeile für Zeile auseinandernimmst, dann wirst Du feststellen, daß -- vielleicht abgesehen von Befehlen wie \IfFileExists (wurde bereits von SpockinDresden angesprochen, eine Erklärung dazu findest Du z. B. im clsguide) oder \ifthenelse aus dem ifthen-Paket -- der ganze Rest eher harmlos ist.;-)

MfG

midi
04-02-2008, 17:56
Ist es mit dem grenzenlosen Latex-Wissen etwa wie mit dem Heiligen Gral oder dem Schatz der Templer? :)

Die Lösung meines ursprünglichen Problems ist schon sehr simpel zu lösen und ich musste auch feststellen, dass das Schreiben eigener Klassen sehr "lehrreich" ist. Ansonsten liegt das Problem nicht darin anderen Latex-Code zu verstehen, sondern eher darin, dass ich nicht nach Befehlen suchen kann, die ich noch gar nicht kenne....

Zum Beispiel: Mit dem datatool package kann man csv-files lesen. Aber was ist wenn ich die Spaltennamen nicht kenne? Dann ist datatool aufgeschmissen soweit ich die Doku verstanden habe. Ich habe dann versucht mit google irgendwetwas zu finden wie man files mit input o.ä. zeilenweise einliest...habe aber mal wieder nichts gefunden :)

rais
07-02-2008, 17:38
Ist es mit dem grenzenlosen Latex-Wissen etwa wie mit dem Heiligen Gral oder dem Schatz der Templer? :)
nee, ich halte es sogar für wahrscheinlicher, so unwahrscheinlich es auch sein mag, daß man über den Heiligen Gral stolpert, als daß man sich grenzenloses Wissen -- egal auf welchem Gebiet -- aneignen könnte.;-)


Zum Beispiel: Mit dem datatool package kann man csv-files lesen. Aber was ist wenn ich die Spaltennamen nicht kenne?
Wie meinst Du das? Wird vom \DTLloaddb (datatool) nicht die erste CSV-Zeile für die Spaltenüberschriften genommen?

MfG