PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \def in \def schachteln?



ElEsido
11-08-2009, 18:11
Hallo

Folgender Code (von Ulrike, besten Dank!) schreibt die in den Klammern definierten Begriffe aus. ("Benutze ...")

\documentclass[11pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}

\makeatletter
\def\bibmacrofor@abl{Benutze abl}
\def\bibmacrofor@ABL{Benutze abl}
\def\bibmacrofor@rpw{Benutze rpw}
\def\bibmacrofor@RPW{Benutze rpw}

\newcommand\journalcheck{%
\begingroup
\def\gls##1{##1}%
\csname bibmacrofor@\abx@field@journaltitle\endcsname
\endgroup}

\def\abx@field@journaltitle{{\gls{abl}}}
\journalcheck

\def\abx@field@journaltitle{\gls{abl}}
\journalcheck

\def\abx@field@journaltitle{abl}
\journalcheck

\def\abx@field@journaltitle{ABL}
\journalcheck

\def\abx@field@journaltitle{rpw}
\journalcheck

\end{document}
Ich möchte jedoch, dass nicht die Angaben in den Klammern ausgedruckt werden, sondern dass eine Variable definiert wird. Wo wie ich das unten geschrieben habe, funktioniert es leider nicht. Wie codiert man so etwas?

\documentclass[11pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}

\makeatletter
\def\tempP{leer}
\def\bibmacrofor@abl{\def\tempP{abl}}
\def\bibmacrofor@ABL{\def\tempP{abl}}
\def\bibmacrofor@rpw{\def\tempP{rpw}}
\def\bibmacrofor@RPW{\def\tempP{rpw}}

\newcommand\journalcheck{%
\begingroup
\def\gls##1{##1}%
\csname bibmacrofor@\abx@field@journaltitle\endcsname
\endgroup}

\def\abx@field@journaltitle{\gls{abl}}
\journalcheck
\tempP
\def\abx@field@journaltitle{abl}
\journalcheck
\tempP
\def\abx@field@journaltitle{ABL}
\journalcheck
\tempP
\def\abx@field@journaltitle{rpw}
\journalcheck
\tempP

\end{document}

u_fischer
11-08-2009, 18:20
Du musst dein \tempP global definieren.


\def\bibmacrofor@abl{\gdef\tempP{abl}}

ElEsido
11-08-2009, 18:50
Super, danke!