PDA

View Full Version : Variable für Bildpfad



petjo
04-10-2013, 13:01
Ich habe sehr viele Bilder zu verarbeiten und habe die Bilddaten in eine biblatex-Datei gegeben:



@misc{EPSN0002,
title = {Titel des Bildes},
month = {5},
day = {17},
eid ={20:56}
}


wobei bibtexkey der Name des Bildes ohne Dateiendung (jpg), month und day das Datum und eid die Uhrzeit der Aufnahme ist. Die Bilder liegen im Pfad Bilder/Datum.

Für die Verarbeitung der Bilder möchte ich vor dem Druck auslesen, ob die Bilder im Hoch- oder Querformat sind, und habe deshalb zwei neue Längen definiert.


\newlength{\breite}%
\newlength{\hoehe}%


Leider kann ich auf den spezielle Unterpfad des jeweiligen Bildes nicht zugreifen, weder bei der Berechnung von Höhe und Breite noch bei der eigentlichen Darstellung des Bildes.

Ich möchte den Namen des Pfades aus den bibtex-Feldern day und month auslesen:



\def\path{Bilder/\citefield{#1}{day}.\citefield{#1}{month}./}%
\setlength{\hoehe}{\heightof{\includegraphics{\pat #1.jpg}}}%


aber leider wird in der Variablen \path der Pfad (in dem Falle also Bilder/17.5./)nicht richtig aufgelöst und es erscheint folgende Fehlermeldung:



Package pdftex.def Error: File `Bilder/\citefield{EPSN0002}{day}.\citefield{E
N0002}{month}./EPSN0002.jpg' not found.


Kann jemand helfen.

Gruß

Thomas (petjo)

peterpetersen
06-10-2013, 11:07
Hallo Thomas (petjo),

interessanter Ansatz! So einen Bilderkatalog, der automatisch aus der biblatex-Datei generiert wird, könnte ich auch gut gebrauchen ...

Ob ich dir weiterhelfen kann, weiß ich nicht, ich hätte ein paar Fragen, die dich vielleicht weiterbringen könnten:
Wie lauten die tatsächlichen Bilddateipfade?
Klappt das Einbinden eines Bildes denn, wenn du den Bildpfad, den du mittels Variablen erzeugen möchtest/erwartest, „von Hand“ einträgst?
Müssen im Pfad Punkte stehen, die könnten nämlich Probleme machen? (Siehe: http://www.golatex.de/wiki/Dateipfade)
Ist das ein Übertragungsfehler, oder steht in der Fehlermeldung wirklich ... \citefield{EN0002} ...? Das Bild heißt doch EPSN0002.

Ich fürchte, richtig weiterhelfen kann man dir hier nur mit einem (möglichst) vollständigen Minimalbeispiel.

Gruß, Peter

petjo
07-10-2013, 18:02
Hallo Peter,

danke für Deine Antwort. Hier ein (nicht funktionierendes) Minmalbeispiel:



\begin{filecontents}{bilder.bib}
@misc{EPSN0002,
title = {Titel des Bildes},
month = {5},
day = {17},
eid ={20:56}
}
\end{filecontents}

\documentclass[a4paper]{article}
\usepackage{calc}
\usepackage{graphicx}
\usepackage[backend=biber]{biblatex}
\addbibresource{bilder.bib}

\newlength{\breite}%
\newlength{\hoehe}%

\newcommand{\bild}[1]{
\def\path{Bilder/\citefield{#1}{day}.\citefield{#1}{month}./}%
\setlength{\hoehe}{\heightof{\includegraphics{\pat h#1.jpg}}}%
}

\begin{document}
\bild{EPSN0002}
\printbibliography
\end{document}


Ich kompliliere mit


pdflatex Bild
biber Bild
pdflatex Bild


Und hier nochmal die Fehlermeldung:


! Package pdftex.def Error: File `Bilder/\citefield {EPSN0002}{day}.\citefield {EPSN0002}{month}./EPSN0002.jpg' not found.


Zu Deinen Fragen:
Wie lauten die tatsächlichen Bilddateipfade?
D:\Projekt\Bilder\17.5.\

unter Umständen kann es auch sein, dass der Bilddateipfad die Zeichen '-' und '_' enthalten können. Insbesondere wenn ich die Dateinnamen direkt aus der Kamera übernehmen will, haben die Bilder das Format xxxxx_yyy.jpg.

Klappt das Einbinden eines Bildes denn, wenn du den Bildpfad, den du mittels Variablen erzeugen möchtest/erwartest, „von Hand“ einträgst? Müssen im Pfad Punkte stehen, die könnten nämlich Probleme machen?
Ja, das geht. Da ich mit der Arbeit forfahren musste, habe ich mir geholfen, indem ich die Bilder direkt, ohne biblatex-Datei, "händisch" eingebunden und den Pfad mit "\graphicspath" angegeben habe. Diese Befehl nimmt auch Punkte, Gedanken- und Unterstriche ohne Fehler an.

Ist das ein Übertragungsfehler, oder steht in der Fehlermeldung wirklich ... \citefield{EN0002} ...? Das Bild heißt doch EPSN0002.
Ja, war ein Tippfehler.

Gruß Thomas

klops
07-10-2013, 18:49
Das kann leider nicht funktionieren, da \citefield \protected deklariert ist, also nicht einmal bei \edef geschweige denn bei einem \includegraphics, sondern nur im Typesetter expandiert. Du bräuchtest aber eine expandierende Version davon. Aus einem solchen \protected Macro, das auch noch selbst aus mehreren Stufen von \protected Macros besteht, ein Ergebnis zu expandieren, das mit \includegraphics weiter verarbeitet werden kann, könnte tatsächlich schwierig werden.

Wobei das AFAIK ohnehin erst ein sinnvolles Ergebnis liefern kann, wenn biber einmal gelaufen ist, also bereits ein LaTeX-Lauf erfolgte.