PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Suche] Tutorial für \def-Befehl



nuin
27-01-2010, 11:52
Hallo!
Ich versuche jetzt schon den ganzen Morgen (seit halb 10), ein Tutorial zu finden, das mir den \def Befehl ausführlich erklärt, aber weder Google, noch Yahoo, noch sämtliche Seiten zum Thema PSTricks, die ich durchsucht habe, scheinen etwas zu haben. Könnt ihr mir helfen?

mit freundlichen Grüßen

localghost
27-01-2010, 12:03
TeX by Topic (http://ctan.org/pkg/texbytopic)
TeX for the Impatient (http://ctan.org/pkg/impatient)



MfG
Thorsten¹

nuin
27-01-2010, 13:14
Dankeschön. ^^
Ich war nur mal wieder ziemlich dumm. Ich meinte den \def Befehl im speziellen für PSTricks. Sorry.

mfg

bobmalaria
27-01-2010, 13:19
hi,

ich glaube da gibt es nichts besonderes. \def ist ähnlich wie \newcommand. du definierst ein makro z.b. \meinmarco das es dir abnimmt diverse dinge immer wieder zu tippen. natürlich kannst du damit auch für pstricks ein makro definieren.


gruss

mechanicus
27-01-2010, 13:39
Dankeschön. ^^
Ich war nur mal wieder ziemlich dumm. Ich meinte den \def Befehl im speziellen für PSTricks. Sorry.
Was willst du angeben? Willst du Befehle für Postscript nutzen. Dann solltest du dir das Marco pstverb anschauen:

Beispiel:

\documentclass{article}
\usepackage{pst-plot}
\usepackage{pstricks-add}
\begin{document}
\begin{pspicture}(0,0)(3,3)
\pstverb{%
/TEST {3 2 mul} def %
0 0 moveto % define current point
/Helvetica findfont 14 scalefont setfont % set a font
TEST 15 string cvs show %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/TEST (3 2 mul) def %
0 20 moveto % define current point
/Helvetica findfont 14 scalefont setfont % set a font
TEST 15 string cvs show %
}
\end{pspicture}
\end{document}

\end{document}

Danke an Herbert, für das Beispiel.

Gruß
Marco

nuin
27-01-2010, 13:46
Soweit hab ich das auch verstanden, mein Problem liegt im Moment eher darin, wie ich mit den Variablen innerhalb des Makros rechnen kann. Zum Beispiel wenn ich ein Polygon mache, bei dem eine Seite immer kürzer ist als die andere:



\documentclass{article}
\usepackage{pst-3dplot}

\def\Poly(#1){\def\SeiteA{#1}
\def\two{2}
\def\SeiteB{\add\SeiteA \two}
\pspolygon(0,0)(1,0)(1,\SeiteA)(0,\SeiteB)}

\begin{document}
\Poly(2)
\end{document}


mfg

EDIT: Ja, sowas in der Richtung, auch wenn ich mir nichtr ganz sicher bin, was du mit dem Macro meinst...

mechanicus
27-01-2010, 14:01
Hi,

du verwendest den def-Befehl von tex. Postscript hat einen eigenen def-Befehl.

Du solltest aber davon absehen, def zu nutzen. Besser ist es, du nutzt newcommand.

Was du machen kannst:


\documentclass{article}
\usepackage{pst-3dplot}

\def\Poly(#1){\def\SeiteA{#1}
\def\two{2}
\pspolygon[algebraic=true](0,0)(1,0)(1,\SeiteA)(*0 {\SeiteA*\two})}

\begin{document}
\Poly(2)
\end{document}

Gruß
Marco

voss
27-01-2010, 14:05
Was willst du angeben? Willst du Befehle für Postscript nutzen. Dann solltest du dir das Marco pstverb anschauen:

Beispiel:


\documentclass{article}
\usepackage{pstricks}
\begin{document}
\begin{pspicture}(0,0)(3,3)
\pstverb{%
/Helvetica findfont 75 scalefont setfont % set a font
0 0 moveto
1 1 50 { dup /Index exch def
100 div 1 sub neg setgray
(Marco) show stroke
Index dup 4 div neg moveto
} for
}
\end{pspicture}
\end{document}

\end{document}


Herbert :)

nuin
27-01-2010, 14:07
Gut, eine Frage noch zu dem Code, die Zeile, die ich nicht verstehe (und weshalb ich eben so ein Tut suche ;))

(*0 {\SeiteA*\two}
Was geschieht da genau? Oder besser: Was hat es mit dem 1. * auf sich und wieso werden hier keine Kommas mehr benötigt?
Das zweite * ist einfach ein Multiplikationszeichen, oder?

mfg

EDIT:
P.S. Das mit dem MARCO von Herrn Voss sieht echt cool aus :), hilft aber halt nicht weiter @.@

mechanicus
27-01-2010, 14:08
Herbert :)
:D:D:D
GESTERN: TEST - TEXT
HEUTE: MACRO MARCO

:D:D:D

Ich brauche wohl mal Urlaub :p:p

Gruß
Marco

voss
27-01-2010, 14:17
Soweit hab ich das auch verstanden, mein Problem liegt im Moment eher darin, wie ich mit den Variablen innerhalb des Makros rechnen kann. Zum Beispiel wenn ich ein Polygon mache, bei dem eine Seite immer kürzer ist als die andere:
EDIT: Ja, sowas in der Richtung, auch wenn ich mir nichtr ganz sicher bin, was du mit dem Macro meinst...

die Idee ist schon richtig. Mit ! kannst du die Korrdinaten berechnen


\documentclass{article}
\usepackage{pst-3dplot}

\def\Poly(#1){%
\pspolygon(0,0)(1,0)(!1 #1)(!0 #1 2 add)}

\begin{document}
\Poly(2)
\end{document}

Herbert

nuin
27-01-2010, 15:02
Ah, ok, jetzt versteh ichs.
Sogar ganz ohne Tutorial :D
Danke!

mfg

nuin
27-01-2010, 16:20
Trotzdem so ganz bin ich scheinbar immer noch nicht dahinter gekommen... Was mach ich hier schon wieder falsch? :confused:


\documentclass{article}
\usepackage{pst-3dplot}

\def\LeiSchau(#1){
\pstThreeDLine(!#1 1 add 2.5 5)(-3.5,2.5,2.25)}

\begin{document}
\LeiSchau(2.5)
\end{document}

mfg

mechanicus
27-01-2010, 18:10
Was mach ich hier schon wieder falsch? :confused:

Ich glaube zu diesem Problem kann Herbert mehr sagen. Es hat aber den Anschein, dass du das so nicht hinbekommen kannst. Grund liegt in der Konvertierung der 3D-Eingabe zur 2D-Darstellung. Hierfür wird die Parallelprojektion genutzt:

(x*,y*)=T (x,y,z)^T

wobei T eine 2x3-Matrix ist.

Vermutung ENDE

Gruß
Marco

voss
27-01-2010, 19:35
Trotzdem so ganz bin ich scheinbar immer noch nicht dahinter gekommen... Was mach ich hier schon wieder falsch? :confused:


\documentclass{article}
\usepackage{pst-3dplot}

\def\LeiSchau(#1){
\pstThreeDLine(!#1 1 add 2.5 5)(-3.5,2.5,2.25)}

\begin{document}
\LeiSchau(2.5)
\end{document}


bei den 3D-Koordinaten weicht das Schema etwas ab, da kann man gleich
bei den einzelnen Koordinaten rechnen:


\def\LeiSchau(#1){
\pstThreeDLine(#1 1 add, 2.5, 5)(-3.5,2.5,2.25)}


Musst aber auf die Kommata achten, die bleiben hier bestehen.

HErbert

nuin
27-01-2010, 19:53
Oh man, danke. Da fällt mir ein Stein vom Herzen. So zu rechnen ist dann natürlich ziemlich einfach. :rolleyes:

Auf Bald

nuin
28-01-2010, 16:43
Könnte mir jetzt bitte noch irgendwer erklären, wie das Rechnen innerhalb
-eines Def-Befehls
-einer parametricplot
-und einer pstThreeDBox geht?

Weil wenn ich es bei einer der hier genannten so probiere, bekomme ich stets Fehler, wie zum Beispiel "missing unit".

\documentclass{article}
\usepackage{pst-3dplot}
\def\LeiSchau(#1){\pstThreeDBox[fillstyle=solid](-2.5,0,3)(#1 5 add,0,0)(0,4,0)(0,0,1)}

\begin{document}
\LeiSchau(2)
\end{document}

mit freundlichen Grüßen

voss
28-01-2010, 18:26
Könnte mir jetzt bitte noch irgendwer erklären, wie das Rechnen innerhalb
-eines Def-Befehls
-einer parametricplot
-und einer pstThreeDBox geht?

Weil wenn ich es bei einer der hier genannten so probiere, bekomme ich stets Fehler, wie zum Beispiel "missing unit".

\documentclass{article}
\usepackage{pst-3dplot}
\def\LeiSchau(#1){\pstThreeDBox[fillstyle=solid](-2.5,0,3)(#1 5 add,0,0)(0,4,0)(0,0,1)}

\begin{document}
\LeiSchau(2)
\end{document}


Ersetze mal deine pst-3dplot.tex durch diese hier:
http://voss.homedns.org/packages/pst-3dplot/pst-3dplot.tex
oder packe sie zur Not in dein Dokumentverzeichnis.
Bislang war es nur bei einfachen 3D-Koordinaten möglich zu
rechnen. Bei der Box müssen aber Vektoren addiert/subtrahiert werden,
weshalb es bislang nicht ging.

Herbert

nuin
28-01-2010, 19:03
Wunderbar, geht, danke. :)

Jetzt müsste ich nur noch verstehen, wie das innerhalb der parametricplots und innerhalb der \def-befehle geht. Mit innerhalb meine ich, wie kann ich zum Beispiel zwei Variablen miteinander multiplizieren oder durch einander teilen?

mit freundlichen Grüßen

voss
28-01-2010, 19:21
Jetzt müsste ich nur noch verstehen, wie das innerhalb der parametricplots und innerhalb der \def-befehle geht. Mit innerhalb meine ich, wie kann ich zum Beispiel zwei Variablen miteinander multiplizieren oder durch einander teilen?

Hol dir die Datei nochmal, da waren noch neue Fehler drin.


Du kannst nicht erwarten, dass du dies alles im Schnelldurchgang
verstehen kannst. Andere brauchten dafür Jahre ... ;)
Für normale 2D-Koordinaten kann man immer mit (! ... ) rechnen,
bei 3D-Koordinaten geht es (fast) immer so. In \def kann man nur sehr
bedingt rechnen.

Herbert

nuin
28-01-2010, 21:46
Kann es sein, das Spheres in dem neuen auch nicht funktionieren?

mfg

voss
28-01-2010, 22:45
Kann es sein, das Spheres in dem neuen auch nicht funktionieren?


die gehen, alle Dateien liegen hier mit der erstellten Doku
http://voss.homedns.org/packages/pst-3dplot/

Herbert