Pfadvariable definieren

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


caiusjuliuscaesar
Forum-Anfänger
Forum-Anfänger
Beiträge: 35
Registriert: Mo 15. Feb 2010, 18:13
Wohnort: Bochum

Pfadvariable definieren

Beitrag von caiusjuliuscaesar »

Hallo,

ich habe Dokumente mit vielen Bildern, die über einen Pfad mit includegraphics eingebunden werden.

Code: Alles auswählen

\includegraphics[width=13cm]{../../../../bilder/verzeichnis/bild.jpg}
Nun möchte ich diesen Pfad gern abkürzen, indem ich eine Variable, also ein Makro, definiere:

Code: Alles auswählen

\newcommand{\BILDER}{../../../../bilder/verzeichnis/}
... und dann mit

Code: Alles auswählen

\includegraphics[width=13cm]{\BILDERbild.jpg}
oder

Code: Alles auswählen

\includegraphics[width=13cm]{\{BILDER}bild.jpg}
einbinde. Daran scheitere ich, da eine Vielzahl von Fehlermedungen erhalte. Im wesnbetlichen liegt es daran, daß die / verschwinden, wie ich an Hand einer Test-Ausgabe ersehen habe.

Weiß jemand Abhilfe?

Viele Grüße,
CJC

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2641
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Du hast offenbar keine Ahnung, wie man Makros anwendet. Bei
caiusjuliuscaesar hat geschrieben:

Code: Alles auswählen

\includegraphics[width=13cm]{\BILDERbild.jpg}
wird nämlich nicht das Makro \BILDER, sondern ein Makro \BILDERbild aufgerufen. Es fehlt ein Leerzeichen nach \BILDER. Bei
caiusjuliuscaesar hat geschrieben:

Code: Alles auswählen

\includegraphics[width=13cm]{\{BILDER}bild.jpg}
wird hingegen das Makro \{ gefolgt von der Zeichenkette "BILDER" aufgerufen und die dann folgende schließende geschweifte Klammer beendet das Argument von \includegraphics. Bevor ich Dir aber erkläre, wie man \newcommand und die damit definierten Makros anwendet, empfehle ich Dir lieber, die graphics/x-Anleitung zu lesen und dort nach \graphicspath zu suchen. Bitte beachte in der Erklärung unbedingt die korrekte Klammer-Setzung!

Zwar empfehlen die Entwickler selbst, auf \graphicspath zu verzichten und stattdessen die Umgebungs- bzw. Environment-Variable TEXINPUTS passend zu setzen (das wäre eine schnellere Lösung, die HASH und POOL von TeX nicht belasten), aber damit sind DAUs in der Regel dann doch total überfordert.

Ansonsten sei noch auf meine Signatur und http://www.golatex.de/wiki/index.php?ti ... albeispiel hingewiesen. Das betrifft insbesondere auch andere Anfragen von Dir, die an Ungenauigkeit und Vollständigkeit kaum zu übertreffen sind!

caiusjuliuscaesar
Forum-Anfänger
Forum-Anfänger
Beiträge: 35
Registriert: Mo 15. Feb 2010, 18:13
Wohnort: Bochum

Beitrag von caiusjuliuscaesar »

Hallo,
danke für den Hinweis auf graphicspath usw.

Ich hatte das Problem, die Variable / das Makro /BILDER anzuwenden, da ich es ohne nachfolgendes Leerzeichen bündig mit dem DDateinamen zusammenfügen wollte.

Code: Alles auswählen

\BILDERdateiname
funktionierte genauso wenig wie

Code: Alles auswählen

\{BILDER}dateiname
noch wie das vermutlich richtige

Code: Alles auswählen

{\BILDER}dateiname
Letzteres funktioniert nicht, wie ich oben schon benannt habe, wegen der "/" Pfad. Auch escapen ("\/")halb nicht. Latex dachte immer, dort seien Divisionen.

Gruß, CJC[/code]

Rainer Unsinn

Beitrag von Rainer Unsinn »

KOMA hat doch explizit geschrieben, dass ein Leerzeichen nach \BILDER fehlt. Man kann an ein Makro nicht ohne Leerzeichen einen String anhängen. TeX ist nicht C64-Basic.

Wie jeder Anwender wissen sollte, werden Leerzeichen nach Makros immer überlesen und beenden nur das Makro. Das gilt sogar bei Makros in Dateinamen, wo sonst das Leerzeichen den Dateinamen beendet. Vgl:

Code: Alles auswählen

\def\Test{ABC}
\input \Test DEF.tex
Sowohl bei der Verarbeitung mit latex als auch mit tex (=plainTeX) wird dabei nach der Datei "ABCDEF.tex" und nicht nach "ABC" oder "ABC DEF.tex" gesucht. Dagegen wird bei

Code: Alles auswählen

\input ABC DEF.tex
nach der Datei "ABC" gesucht. Auch bei diesem zweiten Beispiel ist es egal, ob man latex oder tex verwendet.

Rainer Unsinn

Beitrag von Rainer Unsinn »

Gerade ausprobiert: Wenn man das Leerzeichen wie von KOMA angegeben setzt, dann funktioniert das. Dass LaTeX dort irgendwelche Divisionen vermutet halte ich für ein Gerücht. Wie KOMA schon schrieb aber auch von Dir unbeachtet geblieben ist: http://www.golatex.de/wiki/index.php?ti ... albeispiel. Das ist mit Sicherheit besser als irgendwie wild zu spekulieren.

Antworten