Seite 1 von 1
Grafiken "automatisch" in den Anhang kopieren?
Verfasst: Mo 27. Feb 2012, 22:24
von Keba
Hallo,
In der Hoffnung im richtigem Forum zu sein:
In meinem LaTeX-Dokument füge ich eine Reihe Bilder ein, so z.B.:
{\includegraphics[width=0.5\textwidth, height=0.25\textwidth]{../img/foo}}
Nun sind diese Bilder doch eher klein, so dass ich meinen Lesern im Anhang größere Versionen zur Verfügung stellen möchte. Dabei haben die Bilder den gleichen Namen; es wird nur ein
_big angehangen:
{\includegraphics{../img/foo_big}}
Da ich das für recht viele Grafiken genauso mache, wäre es sinnvoll ein Makro zu schreiben, das sich im Verlauf des Dokuments die Namen merkt und schließlich im Anhang nacheinander ausgibt.
Leider hab ich keine Ahnung wie das geht und bitte euch um entsprechende Tips
Vielen Dank schonmal, Keba

Verfasst: Mo 27. Feb 2012, 23:43
von alan-g
Obwohl du mit "Anhang" vmtl. nicht das meinst was ich gleich schreibe... Ein minimal anderer Vorschlag: Verwende das "embedfile"-Paket von Heiko Oberdiek. Du müsstest dann
\includegraphics[width=0.5\textwidth, height=0.25\textwidth]{../img/foo}
\embedfile{../img/foo_big}
im Code schreiben (könnte natürlich mit einem "newcommand"-Befehl abgekürzt werden).
Hätte folgende Vorteile:
- Deine Lesern erhalten die Bilder so, wie du sie auch hast, also möglicherweise mit EXIF-, IPTC- und/oder XMP-Metadaten.
- Seitenzahl der PDF-Datei wird nicht größer.
Verfasst: Mo 27. Feb 2012, 23:49
von Hagbard Celine
Hier mein Vorschlag:
\usepackage{graphicx}
\usepackage{etoolbox}
\usepackage{xifthen}
\newcount\bilderzaehler% zaehlt die eingefuegten Bilder
\newcount\schleifenzaehler% Zaehlvariable in while-Schleife
\bilderzaehler=1% Bilderzaehler auf eins setzen
\newcommand{\bildrein}[1]% Befehl zum einfuegen eines Bildes
{%
\includegraphics[width=0.5\textwidth, height=0.25\textwidth]{#1}% Bild einfuegen
\csgdef{bild\number\bilderzaehler}{\includegraphics{#1_big}}% Befehl definieren, um Bild spaeter gross einzufuegen
\advance\bilderzaehler by 1% Bilderzaehler um eins erhoehen
}
\newcommand{\bilderauslesen}% Befehl zum ausgeben der grossen Bilder
{%
\schleifenzaehler=1% Schleifenzaehler auf eins setzen
\advance\bilderzaehler by 1% Bilderzaehler erhoehen fuer Vergleich in Schleife
\whiledo{\number\schleifenzaehler<\number\bilderzaehler}% Schleife zur Ausgabe der Bilder
{%
\csuse{bild\number\schleifenzaehler}% Ausgabe eines Bildes
\advance\schleifenzaehler by 1% Schleifenzaehler um eins erhoehen
}
\advance\bilderzaehler by -1% Bilderzaehler um eins reduzieren (auf alten Stand setzen)
}
Der erste Befehl ist zum einfügen eines (kleinen) Bildes. Der zweite zur Ausagbe aller großen Bilder. An der Formatierung muss natürlich noch gefeilt werden.
Verfasst: Di 28. Feb 2012, 16:21
von Keba
Hallo,
alan-g hat geschrieben:
Hätte folgende Vorteile:
- Deine Lesern erhalten die Bilder so, wie du sie auch hast, also möglicherweise mit EXIF-, IPTC- und/oder XMP-Metadaten.
- Seitenzahl der PDF-Datei wird nicht größer.
Danke für den Vorschlag, aber das hat leider den Nachteil, dass es ausgedruckt keine großen Versionen der Bilder gibt…
Hagbard Celine hat geschrieben:Hier mein Vorschlag […]
Der erste Befehl ist zum einfügen eines (kleinen) Bildes. Der zweite zur Ausagbe aller großen Bilder. An der Formatierung muss natürlich noch gefeilt werden.
Danke, genau sowas hab ich gesucht!
Allerdings wird bei einem
\bilderauslesen nur das letzte Bild ausgegeben, irgendwas passt da leider nicht.
Grüße, Keba.
Verfasst: Di 28. Feb 2012, 17:25
von Hagbard Celine
Das kann daran liegen, dass zwischen den Bildern keinerlei Formatierung angegeben war.
Ich habe den Eingabebefehl so geändert, dass standardmäßig nach dem großen Bild eine neue Seite angefangen wird. Über ein optionales Argument kann das bei der Eingabe für jedes Bild einzeln geändert werden.
\newcommand{\bildrein}[2][\newpage]% Befehl zum einfuegen eines Bildes
{%
\includegraphics[width=0.5\textwidth, height=0.25\textwidth]{#2}% Bild einfuegen
\csgdef{bild\number\bilderzaehler}{\includegraphics{#2_big}#1}% Befehl definieren, um Bild spaeter gross einzufuegen
\advance\bilderzaehler by 1% Bilderzaehler um eins erhoehen
}
Verfasst: Mi 29. Feb 2012, 13:39
von Keba
Hallo,
Nein, ein
\newpage hilft nicht, scheinbar liegt es an der von mir verwendeten Umgebung
figure und/oder des Befehls
subfloat. Bei diesem Minimalbeispiel
\documentclass{scrartcl}
% packages
\usepackage{subfig}
\usepackage{graphicx}
\usepackage{etoolbox}
\usepackage{xifthen}
% commands
\newcount\bilderzaehler% zaehlt die eingefuegten Bilder
\newcount\schleifenzaehler% Zaehlvariable in while-Schleife
\bilderzaehler=1% Bilderzaehler auf eins setzen
\newcommand{\bildrein}[1]% Befehl zum einfuegen eines Bildes
{%
\includegraphics[width=0.5\textwidth, height=0.25\textwidth]{#1}% Bild einfuegen
\csgdef{bild\number\bilderzaehler}{bla}% Befehl definieren, um Bild spaeter gross einzufuegen
\advance\bilderzaehler by 1% Bilderzaehler um eins erhoehen
}
\newcommand{\bilderauslesen}% Befehl zum ausgeben der grossen Bilder
{%
\schleifenzaehler=1% Schleifenzaehler auf eins setzen
\advance\bilderzaehler by 1% Bilderzaehler erhoehen fuer Vergleich in Schleife
\whiledo{\number\schleifenzaehler<\number\bilderzaehler}% Schleife zur Ausgabe der Bilder
{%
\csuse{bild\number\schleifenzaehler}% Ausgabe eines Bildes
\advance\schleifenzaehler by 1% Schleifenzaehler um eins erhoehen
}
\advance\bilderzaehler by -1% Bilderzaehler um eins reduzieren (auf alten Stand setzen)
}
% document
\begin{document}
\section{small images}
\begin{figure}[htbp]
\subfloat[1]{\bildrein{foobar}}
\subfloat[2]{\bildrein{foobar}}\\
\subfloat[3]{\bildrein{foobar}}
\subfloat[4]{\bildrein{foobar}}
\caption{foo}
\end{figure}
\section{big images}
\bilderauslesen
\end{document}
… wird im zweiten Abschnitt nur einmal „bla“ ausgegeben, statt der erwarteten vier mal. Außerhalb der
figure funktioniert das ganze wie gewollt.
Ich benötige allerdings
figure, da ich zum einem Bildunterschriften einfügen und zum anderen auf Bilder verweisen möchte.
Wie bringe ich deine Makros nun mit der Umgebung in Einklang?
Vielen Dank schonmal, Keba[/code]
Verfasst: Mi 29. Feb 2012, 15:55
von Hagbard Celine
Hallo,
da habe ich offenbar nicht ausreichend getestet, was ich gepostet habe. Soweit ich das sehe, liegt es dran, dass im Befehl \bildrein noch ein \global vor das \advance\bilderzaehler muss. Das sollte das Problem beheben und nur noch die Frage der Formatierung offen lassen.
Gruß,
Jonas
Verfasst: Mi 29. Feb 2012, 18:02
von Keba
Hallo,
Hagbard Celine hat geschrieben:Hallo,
Soweit ich das sehe, liegt es dran, dass im Befehl \bildrein noch ein \global vor das \advance\bilderzaehler muss. Das sollte das Problem beheben und nur noch die Frage der Formatierung offen lassen.
Vielen Dank, ja das löst das Problem
Die Formatierung hinzubiegen ist ja kein großes Thema mehr, das bekomm ich schon hin.
Grüße, Keba.