Anzeige:
Ergebnis 1 bis 3 von 3

Thema: PGF-Keys Variablen Nummerieren

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    213

    PGF-Keys Variablen Nummerieren

    Hallo,

    ich verwende pgfkeys um an newcommands Optionen zu übergeben. Dabei verwende ich häufig die gleichen Optionen. Damit Variablen nicht doppelt verwendet werden und es so zu ungewollten Wechselwirkungen kommt, benennen ich die Variablen dann immer nach dem jeweiligen Kommando (Zum Beispiel wie im MB loesungcoma und loesungcomb).

    Ich verwende die Kommandos innerhalb eines Dokument häufig mehrfach und es wäre optimal, wenn jeder Aufruf seinen eigenen Variablennamen hätte.

    In Luacode mache ich es so, dass ich bei Variablen einen Counter hochzähle, denn ich dann in den Variablennamen einbinde, damit jedes Kommando seine eigenen Variablen hat (Siehe MB).

    Ich suche jetzt ein Möglichkeit die Variablen in den pgfkeys auch irgendwie hochzuzählend, dass jedes Kommando individuelle Variablennamen hat. Dabei habe ich zum einen das Problem, dass ich in Latex ja keine Zahlen in den Variablen einbauen kann. Zum anderen habe ich bisher keine Syntax gefunden, dass der Counter dem Variablennamen zugeordnet wird.

    Daher sind meine Fragen:
    1. Gibt es eine Möglichkeit in Latex mit Buchstaben zu "zählen"? (Zum Beispiel a,b,...,z,aa,ab,..,az,ba,bb,...bz,...)
    2. Gibt es eine Möglichkeit mit pgfkeys eine Variablennamen durch eine anderen Variable zu definieren? Also irgendwas wie \pgfkeysgetvalue{/coma/loesung}{\loesung{\theloesung}}?

    Viele Grüße und vielen Dank im Voraus
    mc

    MB
    Code:
    \documentclass[12pt,listof=totoc,bibliography=totoc,numbers=noenddot]{scrartcl}
    \usepackage{tikz}
    
    \newcounter{loesung}
    \newcommand\coma[1][]{%//
    	\stepcounter{loesung}
    	\pgfkeys{%//
    		/coma/loesung/.initial=1,
    	}%\\
    	\pgfkeys{/coma/.cd,#1}
    	\pgfkeysgetvalue{/coma/loesung}{\loesungcoma}
    	\directlua{
    		loesung\theloesung = \theloesung;
    	}
    
    	\begin{tikzpicture}
    			\node at (0,0){Command A};
    			\node at (0,-0.5){Latex: \loesungcoma};
    			\node at (0,-1){Lua: \directlua{tex.print(loesung\theloesung)}};
    	\end{tikzpicture}
    
    }
    
    \newcounter{loesung}
    \newcommand\coma[1][]{%//
    	\stepcounter{loesung}
    	\pgfkeys{%//
    		/comb/loesung/.initial=1,
    	}%\\
    	\pgfkeys{/comb/.cd,#1}
    	\pgfkeysgetvalue{/comb/loesung}{\loesungcoma}
    	\directlua{
    		loesung\theloesung = \theloesung;
    	}
    
    	\begin{tikzpicture}
    			\node at (0,0){Command B};
    			\node at (0,-0.5){Latex: \loesungcomb};
    			\node at (0,-1){Lua: \directlua{tex.print(loesung\theloesung)}};
    	\end{tikzpicture}
    
    }
    
    
    	
    \begin{document}	
    
    \coma
    
    \coma
    
    \comb
    
    \coma
    
    
    
    \end{document}

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.820
    Hallo,
    so ganz hab ich Dein Vorhaben noch nicht verstanden, was auch damit zusammenhängen mag, daß Dein hier gezeigter Code nicht funktioniert, nun ja.

    1) a--z geht mit \alph, alles was darüber hinausgeht mit \alphalph aus dem gleichnamigen Paket.
    2) hier würde ich ersmal eine temporäre Variable setzen und die dann an einen entsprechend zusammengesetzten Befehl füttern:
    Code:
    \documentclass[12pt,listof=totoc,bibliography=totoc,numbers=noenddot]{scrartcl}
    \usepackage{tikz}
    
    \newcounter{loesung}
    \newcommand\comx[2][]{%//
    	\stepcounter{loesung}
    	\pgfkeys{%//
    		/coma/loesung/.initial=\the\value{loesung},
    	}%\\
    	\pgfkeys{/coma/.cd,#1}
    	\pgfkeysgetvalue{/coma/loesung}{\loesungcomtmp}
    	\expandafter\def\csname loesungcom\alph{loesung}\endcsname{\loesungcomtmp}%
    	\directlua{
    		loesung\theloesung = \theloesung;
    	}
    	\begin{tikzpicture}
    			\node at (0,0){Command X};
    			\node at (0,-0.5){Latex: \csname loesungcom\alph{loesung}\endcsname};
    			\node at (0,-1){Lua: \directlua{tex.print(loesung\theloesung)}};
    	\end{tikzpicture}
    }
    \makeatletter
    \newcommand\comy[2][]{%//
    	\stepcounter{loesung}
    	\pgfkeys{%//
    		/coma/loesung/.initial=\the\value{loesung},
    	}%\\
    	\pgfkeys{/coma/.cd,#1}
    	\pgfkeysgetvalue{/coma/loesung}{\loesungcomtmp}
    	\@namedef{loesungcom\alph{loesung}}{\loesungcomtmp}%
    	\directlua{
    		loesung\theloesung = \theloesung;
    	}
    	\begin{tikzpicture}
    			\node at (0,0){Command Y};
    			\node at (0,-0.5){Latex: \@nameuse{loesungcom\alph{loesung}}};
    			\node at (0,-1){Lua: \directlua{tex.print(loesung\theloesung)}};
    	\end{tikzpicture}
    }
    \makeatother
    \begin{document}	
    
    \comx
    
    
    \comx
    
    
    \comy
    
    
    \comx
    
    \end{document}
    VG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    213
    Entschuldige bitte, dass ich hier gar nicht mehr rauf geantwortet hatte.
    Da ist tatsächlich ein Fehler drin. Danke, dass du trotzdem so konstruktiv geantwortet hast.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •