Funktionen werden innerhalb von \newcommand aufgerufen

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: Funktionen werden innerhalb von \newcommand aufgerufen

von mf123 » Di 16. Apr 2013, 22:38

Danke, jetzt hat es geklappt! Beim Einbinden ins persönliche Package musste ich die Dollarzeichen bei jedem Ausdruck einzeln setzen.

Lieber Gruss

Marcel

von Epllus » Di 16. Apr 2013, 20:13

Wie wärs hiermit:
\documentclass{article} 
\usepackage{pst-plot} 
\usepackage{pstricks-add} 
\usepackage{xcolor}

\makeatletter 
\newcommand{\radianzwei} 
{%
\def\pst@@@hlabel##1{\pshlabel{##1}} 
\def\pshlabel##1{$% 
  \ifodd##1   %ungerade? 
         \ifnum##1>0 
            \frac{##1}{2}\pi% 
         \else 
            \pst@abs{##1}\pst@cnta 
            -\frac{\the\pst@cnta}{2}\pi% 
         \fi 
   \else% 
         \pst@cntb=##1\divide\pst@cntb by 2 % ##1/2 
            \ifnum##1=2 
               \pi% 
            \else 
               \ifnum##1=-2 
               -\pi% 
               \else 
               \the\pst@cntb\pi 
               \fi 
            \fi 
   \fi$}% 
} 
\makeatother 


\begin{document} 

\radianzwei 
\psset{xunit=1.570796327} 
\begin{pspicture}(-5,-1.25)(6.3,1.25) 
  \psplot[linecolor=red,linewidth=1.5pt]% 
     {-5}{6.3}{x 180 mul 3.141592654 div sin} 
  \psaxes[showorigin=false]{->}(0,0)(-5,-1.25)(6.3,1.25) 
%   \psgrid[gridwidth=0.2pt,subgriddiv=2,gridlabels=0pt,griddots=20](-5,-1.25)(6.3,1.25) %Gitter 
\end{pspicture} 

\end{document} 
 
Hoffe es hilft
Epllus

von mf123 » Di 16. Apr 2013, 18:57

Danke für die Antwort, leider funktioniert mein Code immer noch nicht. Gibt es eine Doku, wo man Details des Codes (den ich aus einem Buch von H.Voss habe) nachlesen kann (z.B. was die Zeile \def\pst@@@hlabel##1{\pshlabel{##1}} für eine Funktion hat?)? Unten noch einmal der veränderte Code.

Die erste Fehlermeldung lautet:

"Missing Number, treatet as zero". Vermutlich wird das im Code angekündigte Argument vermisst, das jetzt nicht übergeben wird! Wie teile ich newcommand mit, dass kein Argument mitgeliefert werden muss?

Danke und Gruss, Marcel
\documentclass{article}
\usepackage{pst-plot}
\usepackage{pstricks-add}

\newcommand{\radianzwei}
{
\makeatletter
\def\pst@@@hlabel##1{\pshlabel{##1}}
\def\pshlabel##1{$%
  \ifodd##1	%ungerade?
			\ifnum##1>0
				\frac{##1}{2}\pi%
			\else
				\pst@abs{##1}\pst@cnta
				-\frac{\the\pst@cnta}{2}\pi%
			\fi
   \else%
			\pst@cntb=##1\divide\pst@cntb by 2 % ##1/2
				\ifnum##1=2
					\pi%
				\else
					\ifnum##1=-2
					-\pi%
					\else
					\the\pst@cntb\pi
					\fi
				\fi
   \fi$}%
\makeatother
}


\begin{document}

\radianzwei
\psset{xunit=1.570796327}
\begin{pspicture}(-5,-1.25)(6.3,1.25)
  \psplot[linecolor=red,linewidth=1.5pt]%
     {-5}{6.3}{x 180 mul 3.141592654 div sin}
  \psaxes[showorigin=false]{->}(0,0)(-5,-1.25)(6.3,1.25)
%	\psgrid[gridwidth=0.2pt,subgriddiv=2,gridlabels=0pt,griddots=20](-5,-1.25)(6.3,1.25) %Gitter
\end{pspicture}

\end{document}

von u_fischer » Di 16. Apr 2013, 11:55

Für innere Argumente musst du die # verdoppeln:
\def\pst@@@hlabel##1{\pshlabel{##1}}
usw.

Funktionen werden innerhalb von \newcommand aufgerufen

von mf123 » Di 16. Apr 2013, 11:40

\documentclass{article}
\usepackage{pst-plot}
\usepackage{pstricks-add}

\newcommand{\radianzwei}
{
\makeatletter
\def\pst@@@hlabel#1{\pshlabel{#1}}
\def\pshlabel#1{$%
\ifodd#1 %ungerade?
\ifnum#1>0
\frac{#1}{2}\pi%
\else
\pst@abs{#1}\pst@cnta
-\frac{\the\pst@cnta}{2}\pi%
\fi
\else%
\pst@cntb=#1\divide\pst@cntb by 2 % #1/2
\ifnum#1=2
\pi%
\else
\ifnum#1=-2
-\pi%
\else
\the\pst@cntb\pi
\fi
\fi
\fi$}%
\makeatother
}


\begin{document}

\radianzwei
\psset{xunit=1.570796327}
\begin{pspicture}(-5,-1.25)(6.3,1.25)
\psplot[linecolor=red,linewidth=1.5pt]%
{-5}{6.3}{x 180 mul 3.141592654 div sin}
\psaxes[showorigin=false]{->}(0,0)(-5,-1.25)(6.3,1.25)
% \psgrid[gridwidth=0.2pt,subgriddiv=2,gridlabels=0pt,griddots=20](-5,-1.25)(6.3,1.25) %Gitter
\end{pspicture}

\end{document}

Ich möchte den Code zwischen \makealetter und \makeatother gerne als kurzen Befehl \radianzwei definieren. Allerdings verlangt die Funktion \pshlabel ein Argument, was so zu einer Fehlermeldung führt. Wie muss ich meinen Code ändern, damit das gewünschte Ergebnis eintritt?

Nach oben