"Call by value" anstelle von "Call by refence

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: "Call by value" anstelle von "Call by refence

von Schweinebacke » Fr 9. Okt 2009, 07:57

Offenbar expandiert \Oldindex nicht. Man muss also zusätzlich selbst für die Expansion sorgen. Wenn \acl voll expandierbar ist, geht das beispielsweise per:
\protected@edef\expanded@acl{\acl{#1}}\expandafter\Oldindex\expandafter{\expanded@acl}
an Stelle Deines einfachen \Oldindex{\acl{#1}}.
Wie gesagt, das geht nur, wenn \acl voll expandierbar ist, was ich leider nicht weiß.

"Call by value" anstelle von "Call by refence

von Chili » Do 8. Okt 2009, 20:28

Hallo,

habe mir ein kleines Makro zusammengebastelt, welches jedes mal, wenn ich ein Akronym verwende, einen voll ausgeschriebenen Eintrag im Index erstellen soll. Das Funktioniert auch grundsätzlich, nur steht im .ind dann so was:
  \item \acl {FIB}, \hyperpage{3, 4}, \hyperpage{17}, \hyperpage{20}, 
Da sollte aber stehen:
  \item Focussed-Ion-Beam, \hyperpage{3, 4}, \hyperpage{17}, \hyperpage{20}, 
Wie kann ich Latex dazu bewegen an \Oldindex den Wert von \acl{#1} zu übergeben?

Mein kleines Makro (Danke an die vielen Foreneinträge da draussen):
\let\Oldindex\index
\makeatletter
\renewcommand{\ac}{\protect\@acr}%
\newcommand{\@acr}[1]{%
    \expandafter\ifx\csname ac@#1\endcsname\AC@used
        \textit{\acs{#1}}\Oldindex{\acl{#1}}%
    \else
        \textit{\acl{#1} (\acs{#1})}\Oldindex{\acl{#1}}%
        \global\expandafter\let\csname ac@#1\endcsname\AC@used%
        \AC@addtoclearlist{#1}%
        \AC@logged{#1}%
    \fi
}
\makeatother
lg. Chili

Nach oben