Seite 2 von 2

Verfasst: Mo 12. Okt 2009, 21:24
von sommerfee
sLy hat geschrieben:da ich im inet nichts über einen \toks befehl finde.
Gugst du hier: http://www.eijkhout.net/tbt/

Liebe Grüße,
Axel

Verfasst: Di 13. Okt 2009, 09:16
von phi
Mit e-TeX geht das auch expandierbar und ohne Tokenregister:
\documentclass{minimal}

\usepackage{etex}
\usepackage{pst-circ}

\protected\def\WiderstandReihe(#1)(#2)#3{%
  \edef\x{\noexpand\multidipole(#1)(#2)\WiderstandReiheII{1}{#3}.}%
  \x
}

\def\WiderstandReiheII#1#2{%
  \unless\ifnum#2<#1
    \noexpand\resistor[labeloffset=0]{$R_{\number#1}$}%
    \expandafter\WiderstandReiheII\expandafter{\number\numexpr#1+1}{#2}%
  \fi
} 

\begin{document}

\begin{pspicture}[showgrid=true](0,0)(8,5)
  \pnode(0.5,4.5){A}
  \pnode(0.5,1.75){B}
  \pnode(7.5,1.75){C}
  \pnode(7.5,4.5){D}
  \battery(D)(A){$U_0$}
  \wire(A)(B)
  \wire(C)(D)
  \WiderstandReihe(B)(C){3}
\end{pspicture}

\end{document}

Verfasst: Mi 14. Okt 2009, 18:48
von phi
Hier eine etwas einfachere Möglichkeit, die vor allem dokumentiere High-Level-Befehle benutzt. Ein bisschen Expansionskontrolle (mit \eappto und \noexpand) ist allerdings auch hier nötig.
\documentclass{minimal}

\usepackage{etoolbox}
\usepackage{pst-circ}
\usepackage{multido}

\newrobustcmd*{\WiderstandReihe}[3]{%
  \def\x{\multidipole(#1)(#2)}%
  \Multido{\i=1+1}{#3}{%
    \eappto\x{\noexpand\resistor[labeloffset=0]{$R_{\i}$}}%
  }%
  \appto\x{.}%
  \x
}

\begin{document}

\begin{pspicture}[showgrid=true](0,0)(8,5)
  \pnode(0.5,4.5){A}
  \pnode(0.5,1.75){B}
  \pnode(7.5,1.75){C}
  \pnode(7.5,4.5){D}
  \battery(D)(A){$U_0$}
  \wire(A)(B)
  \wire(C)(D)
  \WiderstandReihe{B}{C}{3}
\end{pspicture}

\end{document}

Verfasst: Mo 19. Okt 2009, 21:45
von sLy
Hi wiedermal.

Einfache Frage:
Wieso funktioniert das für sich alleine...:
\newrobustcmd*{\SStandard}[2]{%
\psset {unit=#1cm}%
	\begin{pspicture}[showgrid=true](0,0)(8,5)%
		\def\x{%
			\pnode(0.5,4.5){A}%
			\pnode(0.5,1.75){B}%
			\pnode(7.5,1.75){C}%
			\pnode(7.5,4.5){D}%
			\battery (D)(A){$U_0$}%
		 	\wire (A)(B)%
		 	\wire (C)(D)%
		 	}%
		\eappto\x{\noexpand#2}%
		\x%	
	\end{pspicture}%
}
...aber NICHT, wenn ich phi's code und meinen zusammenlege?
\documentclass{minimal}

\usepackage{etoolbox}
\usepackage{pst-circ}
\usepackage{multido}

\newrobustcmd*{\WiderstandReihe}[3]{%
  \def\x{\multidipole(#1)(#2)}%
  \Multido{\i=1+1}{#3}{%
    \eappto\x{\noexpand\resistor[labeloffset=0]{$R_{\i}$}}%
  }%
  \appto\x{.}%
  \x
}

\newrobustcmd*{\SStandard}[2]{%
\psset {unit=#1cm}%
	\begin{pspicture}[showgrid=true](0,0)(8,5)%
		\def\x{%
			\pnode(0.5,4.5){A}%
			\pnode(0.5,1.75){B}%
			\pnode(7.5,1.75){C}%
			\pnode(7.5,4.5){D}%
			\battery (D)(A){$U_0$}%
		 	\wire (A)(B)%
		 	\wire (C)(D)%
		 	}%
		\eappto\x{\noexpand#2}%
		\x%	
	\end{pspicture}%
}

\begin{document}
\SStandard{1}{\WiderstandReihe(B)(C){3}}
\end{document}

pstricks

Verfasst: Mo 19. Okt 2009, 22:31
von Stefan Kottwitz
Hallo,
sLy hat geschrieben: Wieso funktioniert das für sich alleine...:
es funktioniert nicht für sich alleine, es fehlen Dokumentklasse, Pakete u.a. Daher lässt es sich nicht für einen Vergleich testen.
sLy hat geschrieben: ...aber NICHT, wenn ich phi's code und meinen zusammenlege?
"funktioniert nicht" ist zu vage - gibt es Fehler, Warnungen, fehlende oder falsche Ausgaben? Bei mir treten jedenfalls beim Übersetzen Fehlermeldungen auf. K.A. ob Du diese oder was anderes meinst.

Stefan

Verfasst: Di 20. Okt 2009, 20:09
von sLy
Danke, hat sich erledigt.
Ich habe einfach sämtliche dateien bis auf .tex files gelöscht, dann ging es.

@Stefan
nächstes mal beschreib ichs genauer. kritik ist angekommen ;)

mfg
sLy