\includegraphics stolpert über Dateinamen mit mehr als einem Punkt. Datei wäre nicht zu laden, Division durch 0 usw.

Open in writeLaTeX
\documentclass{scrartcl}

\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

\usepackage{graphicx}

\begin{document}
% funktioniert nicht
\includegraphics{data/analy.sub01a.A.pdf}

% funktioniert
%\includegraphics{data/analysub01aA.pdf}
\end{document}

In der Doku sehe ich die Optionen "ext" und "type". Aber die Doku sagt nichts über gültige Werte aus.

gefragt 24 Mai '14, 20:38

MoonKid's gravatar image

MoonKid
502142227
Akzeptiert-Rate: 33%

bearbeitet 25 Mai '14, 00:15

Bes's gravatar image

Bes
2913937


graphicx nutzt den Punkt, um zwischen Dateinamen und Dateiendung unterscheiden zu können. Das ist deshalb relevant, weil \includegraphics auch die Eingabe ohne Endung erlaubt. Dann wird geschaut, ob eine Datei mit dem angegebenen Namen und einer erlaubten Endung existiert. (Welche Endungen in der Voreinstellung erlaubt sind, hängt vom verwendeten Treiber ab).

Open in writeLaTeX
\documentclass{scrartcl}
\usepackage{graphicx}
\usepackage{mwe}
\begin{document}

\includegraphics{example-image-a}

\includegraphics{example-image-a.jpg}

\end{document}

Wenn man allerdings mehrere Punkte im Argument von \includegraphics hat, dann wird alles ab dem ersten Punkt als Endung interpretiert. Das folgende Beispiel

Open in writeLaTeX
\documentclass{scrartcl}
\usepackage{graphicx}
\begin{document}
\includegraphics{example.image.a.jpg}
\end{document}

verursacht zum Beispiel den Fehler

Open in writeLaTeX
! LaTeX Error: Unknown graphics extension: .image.a.jpg.

Es hilft aber in solchen Fällen, um den Dateinamen vor der Endung geschweifte Klammern zu machen. Das folgende gibt nur deshalb einen Fehler, weil die Datei tatsächlich nicht existiert:

Open in writeLaTeX
\documentclass{scrartcl}
\usepackage{graphicx}
\begin{document}
\includegraphics{{example.image.a}.jpg}
\end{document}

Angewendet auf Dein Beispiel also

Open in writeLaTeX
\documentclass{scrartcl}

\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

\usepackage{graphicx}

\begin{document}

\includegraphics{{data/analy.sub01a.A}.pdf}

\end{document}
Permanenter link

beantwortet 24 Mai '14, 21:31

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 25 Mai '14, 12:47

Alles ab dem ersten Punkt ist eine Dateiendung? Das ist definitiv ein BUG. Nicht mal MS Windows arbeitet so. DateiENDUNG - sagt schon der Name, dass man den Dateinamen-String von rechts beginnend durchsucht.

Der Paketmaintainer hat auf CTAN und in der Doku allerdings keinen Kontakt für Bugreports angegeben.

(25 Mai '14, 07:11) MoonKid
1

Das ist kein Bug, sondern der Tatsache geschuldet, wie TeX begrenzte Argumente liest. Vielleicht ein ungünstig Feature. Die Lösung ist doch einfach genug, oder nicht?

(25 Mai '14, 09:11) cgnieder
1

Stelle Dir z.B. vor, Du hast eine Datei namens test.jpg.jpg. Wenn Du jetzt \includegraphics{test.jpg} verwendest, wie soll graphicx wissen, dass Du nicht eine Datei mit dem Namen test.jpg meinst, sondern es noch eine Endung anfügen soll?

(25 Mai '14, 11:12) cgnieder

Ich verstehe euren Standpunkt und auch (teilweise) den technischen Hintergrund. ;)

Das graphics Dateiendungen ergänzt, ist ein Hinkefuß. Wozu brauch ich das? Führt offensichtlich zu Problemen.

"Dateiendung" ist ein per Quasi-Standard klarer Begriff und meint alles hinter dem letzten Punkt. Letzter Punkt ist der erste Punkt von rechts gezählt. Das ist überall so.

Als TeX-er muss man natürlich diverse Internas kennen. Aber ich möchte nicht darüber nachdenken, dass TeX (oder ein Packet) Dateinamen entgegen geltenden Standards behandelt.

(25 Mai '14, 11:55) MoonKid
2

Nun, graphics' Verhalten ist ja nicht erst seit gestern so und genügend Anwender verlassen sich darauf, dass es nach eventuellen Dateiendungen sucht. Selbst wenn Du David Carlisle einen Bug-Report/ein Feature-Request sendest, wird er Dir auch nur sagen, dass das Verhalten nicht mehr verändert werden wird. Du musst also einfach damit leben. Oder grffile laden... (fun fact, Zitat David: »code: it's a bug, my code: it's a feature«)

(25 Mai '14, 12:17) cgnieder
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×39
×21
×16

gestellte Frage: 24 Mai '14, 20:38

Frage wurde gesehen: 14,271 Mal

zuletzt geändert: 25 Mai '14, 18:55