Seite 1 von 1
Pfadangabe von Bildern
Verfasst: Fr 16. Okt 2015, 09:51
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]
Verfasst: Fr 16. Okt 2015, 10:08
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.
Verfasst: Fr 16. Okt 2015, 14:18
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
Kleine Korrektur
Verfasst: Fr 16. Okt 2015, 14:20
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.
Verfasst: Fr 16. Okt 2015, 14:28
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?
Verfasst: Fr 16. Okt 2015, 15:26
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
Verfasst: Fr 16. Okt 2015, 17:24
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.
Verfasst: Fr 16. Okt 2015, 21:18
von Francesco
Moin ihr beiden,
danke für eure schnelle Hilfe, es klappt wunderbar.
Viele Grüße und ein schönes Wochenende,
Francesco
Verfasst: Sa 17. Okt 2015, 07:41
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!
Verfasst: Sa 17. Okt 2015, 10:45
von Francesco
Moin,
ja das hatte ich dann auch gemerkt und entsprechend angepasst. Ist also gelöst das Problem.
Viele Grüße