includegraphics - dynamisch Bilder einbinden

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Verrain
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Di 21. Apr 2020, 10:30

includegraphics - dynamisch Bilder einbinden

Beitrag von Verrain »

Die Schilderung des Problems ist etwas umfangreicher. Damit ihr gleich wisst, worum es geht, deswegen die Frage knapp zusammengefasst:

Ist es möglich,

Code: Alles auswählen

\includegraphics[width = 0.3\linewidth]{./Ax.png}
derart zu gestalten, dass x dynamisch als Variable aus einem counter zugeordnet wird?

Und nun die Beschreibung des Problems:

Ich möchte 4 Aufgaben texen, die in einer Hauptdatei eingebunden werden. Zusätzlich enthält eine Aufgaben-Datei ein Bild, das mit \includegraphics eingebunden ist.

Das heißt meine Ordnerstruktur sieht wie folgt aus:
main.tex
A1.tex
A2.tex
A2.png
A3.tex
A4.tex

Ich habe eine Counter definiert, damit die Aufgaben nach der Reihenfolge nummeriert werden, in der sie eingebunden werden. Dafür wird der Counter mit \theNr ausgegeben und um eins erhöht. Es gibt einen 2. Befehl \Nr , der den Counter ausgibt, aber eben nicht um 1 erhöht (jetzt wo ich es sehe, ist es etwas umständlich gemacht, aber es hätte so oder so 2 Befehle gebraucht). Diesen Befehl nutz ich innerhalb einer Aufgaben Datei zum Beispiel für Überschriften. Außerdem kann der Counter bei einer beliebigen Zahl (im Minimalbeispiel bei 5) beginnen.

Meine Main.tex Datei sieht also so aus:

Code: Alles auswählen

\newcounter{Nr}
\renewcommand*\theNr{\arabic{Nr} \stepcounter{Nr}}
\newcommand{\Nr}[0]{\addtocounter{Nr}{-1}\theNr }
\begin{document}
	\begin{enumerate}\setcounter{Nr}{5}
		\item[\textbf{ Aufgabe \theNr :}]
		\input{A1.tex}
		\item[\textbf{ Aufgabe \theNr *:}] 
		\input{A2.tex}
		\item[\textbf{ Aufgabe \theNr :}] 
		\input{A3.tex}
		\item[\textbf{ Aufgabe \theNr *:}] 
		\input{A4.tex}
	\end{enumerate}
\end{document}
Eine Aufgabendatei z.B. so:

Code: Alles auswählen

\textbf{Lösung Aufgabe \Nr\\ \ \\ a)}\\
\includegraphics[width = 0.3\linewidth]{./A2.png}
Und jetzt kommt die Frage:
Ich möchte im Anschluss doch nochmal die Reihenfolge der Aufgaben ändern. Das könnte ich natürlich machen, in dem ich in main.tex die einfach \input{A2.tex} und \input{A3.tex} vertausche. Angenommen, dass möchte ich nicht, sondern möchte die Reihenfolge ändern in dem ich die Dateien umbennen. Also A2.tex -> A3.tex und A3.tex -> A2.tex. Zusätzlich benenne ich das zugehörige Bild um: A2.png -> A3.png.

Dann habe ich ja das Problem, dass es logischerweise nicht mehr gefunden wird. Dem wollte ich Abhilfe verschaffen in dem ich das Bild unter Verwendung des Counter einbinde:

Code: Alles auswählen

\includegraphics[width = 0.3\linewidth]{./A\Nr.png}
Das Problem ist, dass der Counter als 0 ausgegeben wird. Das deutet daraufhin, dass beim compilieren zu erst überprüft wird, ob die Bilder existieren, bevor der document-body compiled wird:
! Package pdftex.def Error: File `./A0.png' not found

Habt ihr eine Idee, wie ich den includegraphicsbefehl dynamisch gestalten kann?

gast

Re: includegraphics - dynamisch Bilder einbinden

Beitrag von gast »

Wie wäre es mit einem vollständigen Minimalbeispiel?

Das hier funktioniert nämlich:

Code: Alles auswählen

\documentclass{article}

\usepackage{mwe}
\newcounter{bild}
\renewcommand*{\thebild}{\alph{bild}}

\begin{document}
\stepcounter{bild}\includegraphics[height=.3\textheight]{example-image-\thebild}

\stepcounter{bild}\includegraphics[height=.3\textheight]{example-image-\thebild}

\stepcounter{bild}\includegraphics[height=.3\textheight]{example-image-\thebild}

\end{document}
Ich halte es übrigens für keine gute Idee, wenn \the<counter> den Zähler nicht nur ausgibt, sondern auch noch erhöht. Es ist nämlich eine LaTeX-Konvention, dass damit nur der Zähler ausgegeben wird.

Verrain
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Di 21. Apr 2020, 10:30

Re: includegraphics - dynamisch Bilder einbinden

Beitrag von Verrain »

Ja stimmt, ich habe die Dokumentenklasse vergessen :). Verzeihung.

Ja das mit dem Counter ist mir auch aufgefallen, dass ich es lieber hätte andersrum definieren soll. Also the gibt den Zähler nur aus und der neue Command erhöht den Zähler und gibt ihn aus.

Ich hab jetzt die TheCounter wieder in die reine Ausgabe das Counters geändert und jetzt geht es bei mir komischer Weise auch.

Also danke für das Durchkämpfen durch meine verkomplizierte Beschreibung ^^.

Viele Grüße

Antworten