Pfadangabe von Bildern Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


Francesco

Pfadangabe von Bildern

Beitrag von Francesco »

Moin zusammen,

ich habe ein Anliegen zum Thema Pfadangabe von Bildern. Ich bin relativ neu bei der Sache, weiß aber schon, welche Möglichkeiten ich habe, einen Pfad anzugeben. Allerdings bin ich mit einer Anwendung auf ein Problem gestoßen, bei dem ich nach stundenlangem googlen nicht weitergekommen bin. Folgendes:

Ich programmiere eine Datenbank, mit der ich dynamisch .tex-Dateien erzeuge (Im Folgenden "Hauptdateien"). Diese sollen zum Schluss als .pdf-Dokument ausgegeben werden. Dafür greife ich teilweise (auch auf mehrere) auf bereits vorhandene .tex-Dateien (die werden hochgeladen und anschließend nicht mehr angefasst) per include zu (Im Folgenden "Unterdateien"). Haben diese Unterdateien eine Abbildung, so wurde diese beim Hochladen im selben Ordner abgelegt und der Pfad zu dieser Abbildung ist logischerweise mittels
\includegraphics{Bild.pdf}
angegeben. Es ist zu beachten, dass die Unterdateien in einem Ordner abgelegt werden, dessen Namen vor dem Hochladen noch nicht bekannt ist.

Wenn ich die Hauptdatei kompilieren möchte (via pdflatex mit php), dann sagt er mir, dass er die Abbildung nicht finden kann, weil er die Abbildung bzw. den Pfad von der Hautdatei aus sucht.

Jetzt meine Frage: Gibt es eine Möglichkeit, dass man dieses Problem umgehen kann? Es kommt leider nicht in Frage, die Ordnerstruktur zu ändern, da kann ich leider nicht viel bis gar nichts dran machen. Leider liegen die Haupt- und Unterdateien niemals im selben Ordner.

Vielen Dank schonmal im Voraus und ein schönes Wochenende,

Francesco[/code]

Besserwisser

Beitrag von Besserwisser »

Ich verstehe eventuell nur halb,was du da treibst. Trotzdem:

Du kannst im Hauptdokument die Unterordner per \graphicspath (korrekte Syntax in der [d]graphicx[/d]-Anleitung beachten!) dem Suchpfad von Grafiken hinzufügen. Allerdings bedeutet das einen deutlich erhöhten Suchaufwand mit Belastung des string-memory von TeX (außer bei lualatex). Alternativ kannst du die Umgebungsvariable TEXINPUTS (bei Windows beispielsweise per set in einem batch, bei *nix abhängig von der Shell per export o. ä.) um die Unterordner erweitern. Die Suche darüber findet unterhalb der Makro-Ebene auf Implementierungsebene statt und ist daher schneller.

Weitere Lösungen sind denkbar. Dazu müsste ich aber wirklich verstanden haben, was du hast und was zu welchem Zeitpunkt bekannt ist.

Francesco

Beitrag von Francesco »

Moin Besserwisser,

vielen Dank für die sehr schnelle Antwort, war grade noch an der Hochschule deswegen jetzt meine Nachricht.

Nach einem Gespräch mit einem Dozenten habe ich bereits eine Lösung gefunden, die dieses Problem via php umgehen kann (sie ist zwar nicht schön und sehr aufwändig, aber immerhin). Dennoch könnte das ja eine interessante Problemstellung sein. Ich versuche es nochmal etwas klarer zu erläutern.

Ich habe eine Datenbank mit Aufgaben, die der Benutzer hochladen kann. Diese werden Abgelegt im Verzeichnis /Aufgaben/(Aufgabentyp)/Aufgabe_(id)/. Die Teile in Klammern können variabel ein. Im selben Verzeichnis liegen dann auch die Abbildungen, die der jeweiligen Aufgabe zugeordnet wurden. In den Aufgaben ist dementsprechend angegeben:
\includegraphics{Abbildung_1.pdf}
. Über eine Eingabemaske kann dann eine Aufgabensammlung erstellt werden. Dazu wird unter dem Pfad /Klausur/(Studiengang)/(Klausurendurchgang)/ ein .tex-Dokument angelegt, das auf alle gewählten Aufgaben per include zugreifen soll. Das funktioniert bei mir aber nur, wenn ich in der Aufgabe den Pfad relativ zum Dokument einstelle. Da vor dem Hochladen ja aber noch nicht klar ist, wie die ID der Aufgabe sein wird, ist es also unmöglich den Pfad bereits im .tex-Dokument zu hinterlegen.

Vielleicht hat das ja weitergeholfen. Ich wäre fast überrascht, wenn sowas in Latex nicht möglich ist. Wie gesagt, bin jetzt aber selber auf eine andere (sehr unelegante) Lösung gestoßen. Falls es doch eine Lösung in Latex gibt, wäre das natürlich deutlich schöner.

Viele Grüße und ein schönes Wochenende,

Francesco

Francesco

Kleine Korrektur

Beitrag von Francesco »

"Das funktioniert bei mir aber nur, wenn ich in der Aufgabe den Pfad relativ zum Dokument einstelle." Sollte sich natürlich auf das Bild beziehen. Also der Pfad zum Bild muss relativ zum neu erstellten Dokument angegeben werden, damit das geht.

Besserwisser

Beitrag von Besserwisser »

Francesco hat geschrieben:Ich wäre fast überrascht, wenn sowas in Latex nicht möglich ist. Wie gesagt, bin jetzt aber selber auf eine andere (sehr unelegante) Lösung gestoßen. Falls es doch eine Lösung in Latex gibt, wäre das natürlich deutlich schöner.
Hast du die Erklärung zu \graphicspath in der verlinkten Anleitung gelesen?

Francesco

Beitrag von Francesco »

Ich glaube zumindest, es verstanden zu haben. Kann ich den Befehl \graphicspath denn in einem Dokument des öfteren verändern? Ich müsste das dann ja vor dem include jeder einzelnen Aufgabe machen, richtig? Sprich nach dem Motto:
\graphicspath{../../../Aufgaben/Vektorrechnung/Aufgabe_1/}
\include{../../../Aufgaben/Vektorrechnung/Aufgabe_1/Aufgabe_1.tex}
\graphicspath{../../../Aufgaben/Integralrechnung/Aufgabe_17/}
\include{../../../Aufgaben/Integralrechnung/Aufgabe_17/Aufgabe_17.tex}
Viele Grüße und danke für deine Hilfe,

Francesco

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4298
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Francesco hat geschrieben:Ich glaube zumindest, es verstanden zu haben. Kann ich den Befehl \graphicspath denn in einem Dokument des öfteren verändern?
Das kannst du doch leicht ausprobieren.

Francesco

Beitrag von Francesco »

Moin ihr beiden,

danke für eure schnelle Hilfe, es klappt wunderbar.

Viele Grüße und ein schönes Wochenende,

Francesco

Noch so einer

Beitrag von Noch so einer »

Die Argumente von \graphicspath sind so aber nicht korrekt. Da fehlen Klammern. Genau wegen diesen Klammern. Die in der von Besserwisser verlinkten Anleitung angegebenen zusätzlichen Klammern sind nämlich keineswegs optional. Man soll die auch setzen, wenn nur ein Verzeichnis angegeben wird:
graphicx-Anleitung hat geschrieben:A list of directories, each in a {} group (even if there is only one in the list).
PS: Bitte den Status aktuell halten!

Francesco

Beitrag von Francesco »

Moin,

ja das hatte ich dann auch gemerkt und entsprechend angepasst. Ist also gelöst das Problem.

Viele Grüße

Antworten