In Variable gespeicherter String (Pfad) ändern.

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


alnilam1701
Forum-Anfänger
Forum-Anfänger
Beiträge: 13
Registriert: Di 26. Mär 2013, 10:10
Wohnort: München

In Variable gespeicherter String (Pfad) ändern.

Beitrag von alnilam1701 »

Hallo,

ich habe die Variable \texsource (ist das ein Makro?), die eine Pfadangabe auf der Festplatte speichert. An diesen Pfad will ich den String "/tmp/ anhängen, sprich an den Pfad um das Verzeichnis tmp ergänzen. Die neue Variable soll \figuresrc heißen, die Variable \texsource dabei unangetastet bleiben.

Folgendes funktioniert leider nicht:
\def\figuresrc{\texsource}
\makeatletter
\g@addto@macro\figuresrc{/tmp/}
\makeatother
Wer kann mir weiterhelfen? Vielen Dank!

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Re: In Variable gespeicherter String (Pfad) ändern.

Beitrag von cgnieder »

alnilam1701 hat geschrieben:ich habe die Variable \texsource (ist das ein Makro?)
Wenn es mit \def oder \newcommand oder ähnlichem definiert würde, dann ist es ein Makro.

Willst Du sowas:
\documentclass{article}

\makeatletter
\newcommand*\texsource{/home/alnilam1701/}

\let\figuresrc\texsource
\g@addto@macro\figuresrc{tmp/}

\show\figuresrc
\makeatother 

\begin{document}
\end{document}
im log steht:
> \figuresrc=macro:
->/home/alnilam1701/tmp/.
Die Zeile
\let\figuresrc\texsource
definiert \figuresrc als exakte Kopie von \texsource, während
\def\figuresrc{\texsource}
bedeutet, dass \figuresrc eben das Makro \texsource enthält und nicht den Ersetzungstext von \texsource:
\documentclass{article}

\newcommand*\texsource{/home/alnilam1701/}
\def\figuresrc{\texsource}
\show\figuresrc

\begin{document}
\end{document}
Im log:
> \figuresrc=macro:
->\texsource .
Wenn man den Ersetzungstext eines Makros möchte (und nicht \let verwenden will/kann) dann muss man das innere Makro zuerst expandieren:
\documentclass{article}

\newcommand*\texsource{/home/alnilam1701/}
\expandafter\def\expandafter\figuresrc\expandafter{\texsource tmp/}
\show\figuresrc

\begin{document}
\end{document}
Im log steht das gleiche wie oben im ersten Beispiel.

Grüße
Clemens
Paketauthor

Antworten