PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pstricks (pspicture)



Spartaner
22-03-2008, 11:09
Hallo und Frohe Ostern,

ich sitze noch an meiner Formelsammlung und möchte mich nun daran machen die Grafiken dafür mit PSTricks zu erstellen. Nur leider habe ich da noch sehr große Probleme.

Ich habe mir die Seite folgendermaßen aufgeteilt:


\begin{minipage}{.4\textwidth}
\begin{flalign*} ... \end{flalign*}
\end{minipage}
\begin{minipage}{.6\textwidth}
\begin{pspicture}

\end{pspicture}
\end{minipage}


Links stehen untereinander die Formeln. Rechts daneben kommen (sollen) nun die Grafiken. Die Grafiken und Formeln sollen vertikal immer schön zentriert sein



-------
a+b=c -------
c*k=y -------
-------
;)

Das ich das ganze nicht so schaffe, wie ich es möchte, liegt wohl daran, dass ich schon die pspicture-Umgebung nicht so richtig verstanden habe.

Könnte mir das vielleicht jemand kurz erklären oder gibt es zu dem Thema eine kurze Anleitung?


Gruß
Spartaner

voss
22-03-2008, 11:53
Das ich das ganze nicht so schaffe, wie ich es möchte, liegt wohl daran, dass ich schon die pspicture-Umgebung nicht so richtig verstanden habe.

Könnte mir das vielleicht jemand kurz erklären oder gibt es zu dem Thema eine kurze Anleitung?



\documentclass{article}
\usepackage{amsmath,pstricks-add}
\begin{document}

\psset{labelFontSize=\footnotesize}

\begin{minipage}{.4\textwidth}
\begin{flalign*} f(x)=\frac{1.5\cdot(x-4)^2}{4} \end{flalign*}
\end{minipage}%
\begin{minipage}{.6\textwidth}
\begin{pspicture*}(-0.5,-0.75)(\linewidth,6)% * clipped alles außerhalb
\psaxes{->}(0,0)(\linewidth,6)
\psplot[linecolor=red,linewidth=2pt,
algebraic]{0}{8}{ 1.5*(x-4)^2/4 }
\end{pspicture*}
\end{minipage}

\end{document}

Herbert

Spartaner
22-03-2008, 12:39
Danke für die schnelle Antwort!

Ich habe das so übernommen und die pspicture-Umgebung per psframebox eingeramt (nur fürs verständnis)

Dabei raus gekommen seht Ihr auf dem Bild

Die Länge der schwarzen Linie wurde auch mittel \textwidth definiert. warum ist die pspicture-Umgebung nun breiter als die Linie?

Nehme ich: \begin{pspicture*}(0,0)(\linewidth,6) statt \begin{pspicture*}(-0.5,-0.75)(\linewidth,6)

ragt die Box nicht so weit über die Linie hinaus.

Egal welche Werte ich für das erste Koordinatenpaar angebe, die Box beginnt immer am linken Rand der pspicture-U. Was genau gebe ich denn mit dem ersten Koordinatenpaar an? Es ist ja scheinbar nicht der Fall, dass man damit den linken unteren Startpunkt, gemessen vom linken unteren Rand der Seite oder der minipage, angibt.
In anderen Programmiersprachen habe ich auch schon mit Koordinatenpaaren gearbeitet und bei weitem nicht solche Probleme damit gehabt.
Was mache ich denn hier falsch?

Spartaner

voss
22-03-2008, 13:20
Danke für die schnelle Antwort!

Ich habe das so übernommen und die pspicture-Umgebung per psframebox eingeramt (nur fürs verständnis)

Dabei raus gekommen seht Ihr auf dem Bild

Die Länge der schwarzen Linie wurde auch mittel \textwidth definiert. warum ist die pspicture-Umgebung nun breiter als die Linie?

Nehme ich: \begin{pspicture*}(0,0)(\linewidth,6) statt \begin{pspicture*}(-0.5,-0.75)(\linewidth,6)

ragt die Box nicht so weit über die Linie hinaus.

Egal welche Werte ich für das erste Koordinatenpaar angebe, die Box beginnt immer am linken Rand der pspicture-U. Was genau gebe ich denn mit dem ersten Koordinatenpaar an? Es ist ja scheinbar nicht der Fall, dass man damit den linken unteren Startpunkt, gemessen vom linken unteren Rand der Seite oder der minipage, angibt.
In anderen Programmiersprachen habe ich auch schon mit Koordinatenpaaren gearbeitet und bei weitem nicht solche Probleme damit gehabt.
Was mache ich denn hier falsch?


du musst schon mal ein komplettes Beispiel angeben. Das macht mir sonst zuviel
Arbeit. Hier ein Beispiel für eine Tabelle, dann sparst du dir die minipages. Die
(-0.5,-0.75) dienen nur dazu die LAbels mit in die pspicture-Umgebung zu negmen,
denn gezeichnet wird in PostScript aber beschriftet in TeX. Daher hat man dann
imemr dieselbe Schriftart wie im Text.

Herbert


\documentclass{article}
\usepackage{amsmath,array,calc,pstricks-add}
\parindent=0pt
\begin{document}

\psset{labelFontSize=\footnotesize}
\rule{\textwidth}{1pt}

\begin{tabular}{@{}>{$\displaystyle}m{0.4\linewidth}<{$} m{0.6\linewidth-2\tabcolsep} @{}}
\boxed{f(x)=\frac{1.5\cdot(x-4)^2}{4}} &
\psframebox{%
\begin{pspicture*}(-0.5,-0.75)(6,6)% * clipped alles außerhalb
\psaxes{->}(0,0)(6,6)
\psplot[linecolor=red,linewidth=2pt,
algebraic]{0}{8}{ 1.5*(x-4)^2/4 }
\end{pspicture*}}
\end{tabular}

\end{document}

Spartaner
22-03-2008, 17:37
\documentclass[fleqn]{scrbook}

\usepackage{amsmath}
\usepackage{amssymb}

\usepackage{ngerman}
\usepackage[latin1]{inputenc}

\usepackage{graphicx}
\usepackage{tabularx}
\usepackage{pst-all}

\newcommand{\Formel}[1]{
\begin{minipage}{.4\textwidth}
\begin{flalign*} #1 \end{flalign*}
\end{minipage}

\begin{document}

\subsection{Gleichförmige Bewegung}
\psframebox{\Formel{v=\frac{s}{t}} }
\begin{minipage}{.6\textwidth}
\psframebox{\begin{pspicture*}(-0.5,-0.75)(\linewidth,6)
\end{pspicture*}}
\end{minipage}

% Tabelle
\rule{\textwidth}{1.2pt}
\end{document}

erzeugt oben gezeigte Ausgabe

\psframebox{\begin{pspicture*}(0,0)(\linewidth,6)

erzeugt die Ausgabe im Anhang.



\psframebox\begin{pspicture*}(0,0)(3,1)
\end{pspicture*}}

erzeugt mir, wie erwartet eine Box, die links am Rand beginnt und 3cm breit sowie 1cm hoch ist.


\psframebox\begin{pspicture*}(1,0)(3,1)
\end{pspicture*}}

erzeugt, unerwartetet, eine Box, welche links am Rand beginnt und 2cm breit ist.

In den Anleitungen steht, dass mit dem ersten Koordinatenpaar die linke untere Rechte und mit dem 2. Paar die rechte obere Ecke angegeben wird. Diese scheint aber, zumindest bei mir, nicht der Fall zu sein.

Spartaner

voss
22-03-2008, 17:56
[CODE]erzeugt, unerwartetet, eine Box, welche links am Rand beginnt und 2cm breit ist.

In den Anleitungen steht, dass mit dem ersten Koordinatenpaar die linke untere Rechte und mit dem 2. Paar die rechte obere Ecke angegeben wird. Diese scheint aber, zumindest bei mir, nicht der Fall zu sein.

du musst natürlich bei der Formel den Abstand zwischen Rahmen und Formel
und bei pspicture -0.5cm noch berücksichtigen. Das folgende Beispiel hat jetzt
lediglich die 4 Liniendicken nicht berücksichtigt, was man auch noch machen könnte.


\documentclass[ngerman,fleqn]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{calc}
\usepackage{babel}
\usepackage{graphicx}
\usepackage{tabularx}
\usepackage{pst-all}

\newcommand{\Formel}[1]{%
\begin{minipage}{.4\textwidth-2\psframesep}\centering
$\displaystyle#1$\end{minipage}}

\psset{framesep=10pt}
\newlength\Bildbreite
\begin{document}

\subsection{Gleichförmige Bewegung}
\psframebox{\Formel{v=\frac{s}{t}}}%
\begin{minipage}{.6\textwidth-2\psframesep}
\setlength\Bildbreite{\linewidth}%
\psaddtolength\Bildbreite{-0.5}%
\psframebox{\begin{pspicture*}(-0.5,-0.75)(\Bildbreite,6)
\end{pspicture*}}%
\end{minipage}

% Tabelle
\noindent%
\rule{\textwidth}{1.2pt}
\end{document}


Herbert

Spartaner
22-03-2008, 18:34
Noch mal vielen Dank für die schneller Hilfe Herbert! Ich verstehe zwar einiges aus deinem Beispiel nicht, aber da muss ich dann selber erst mal ein wenig recherchieren.

Aber ich habe trotzdem noch das allgemeine Verständnissproblem der pspicture-Umgebung.




\psframebox\begin{pspicture*}(0,0)(3,1)
\end{pspicture*}}
erzeugt mir, wie erwartet eine Box, die links am Rand (Textbereich) beginnt und 3cm breit sowie 1cm hoch ist.



\psframebox\begin{pspicture*}(1,0)(3,1)
\end{pspicture*}}
erzeugt, unerwartetet, eine Box, welche links am Rand (Textbereich) beginnt und 2cm breit ist.

Die erste Umgebung erzeugt genau das was ich erwartet habe. Bei der zweiten hätte ich allerdings erwartet, dass zum linken Rand (Textbereich) 1cm Platz ist und dann eine 2cm breite Box gezeichnet wird.

Von wo wird denn nun gemessen; was genau gebe ich mit dem ersten und zweiten Koordinatenpaar an? Die linke untere und die rechte obere Ecke ist es ja nicht. Zumindest nicht so, wie ich es für logisch erachte.

Also irgendwie bin ich total verwirrt :confused:

voss
22-03-2008, 19:00
Aber ich habe trotzdem noch das allgemeine Verständnissproblem der pspicture-Umgebung.



Die erste Umgebung erzeugt genau das was ich erwartet habe. Bei der zweiten hätte ich allerdings erwartet, dass zum linken Rand (Textbereich) 1cm Platz ist und dann eine 2cm breite Box gezeichnet wird.

Von wo wird denn nun gemessen; was genau gebe ich mit dem ersten und zweiten Koordinatenpaar an? Die linke untere und die rechte obere Ecke ist es ja nicht. Zumindest nicht so, wie ich es für logisch erachte.

Also irgendwie bin ich total verwirrt :confused:

Du musst dir vorstellen, dass du mit der pspicture-Umgebung lediglich eine Box
in der laufenden Zeile oder als eigener Absatz resevierst, die für TeX die Maße

xMax-xMin x yMax-yMin

hat, hier also wegen (1,0)(3,1)

3-1 x 1-0, also eine Box der Größe 2cm x 1cm. In diesen Bereich setzt TeX nun keinen
Text. Auf PostScript-Seite wird jetzt diese Angabe bnutzt, um den internen Koordinatenursprung festzulegen, denn Postscript interessiert sich überhaupt
nciht dafür, dass da mal eine Box reserviert war. Bezogen auf den ursprünglichen
unteren Eckpunkt der TeX-Box liegt jetzt der Koordinatenursprung beo (-1,0), also
außerhalb der TeX-Box, was PostScript aber völlig egal ist, das würde auch über den
Text malen. Wenn du beispielsweise eine Linie \psline(0,0)(3,1) ziehen würdest,
dann wäre tatsächlich ein Teil über dem Text.

Halbwegs klar?

ein BEispiel noch:

\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{pstricks,pst-plot,geometry}

\begin{document}
\raggedright Die reservierte Box ist per Definition mit ihrer unteren Seite auf der
Grundlinie der Zeile angeordnet, was man hier leicht an dieser
\psframebox[framesep=0]{%
\begin{pspicture}(-1,-0.5)(1.5,1)
\psaxes[labels=none]{->}(0,0)(-1,-0.5)(1.5,1)
\end{pspicture}}
erkennen kann, deren \textbf{interner} Ursprung jedoch ganz woanders liegen kann,
auch au\ss erhalb der Box. In diesem Beispiel bei (1,0.5), gemessenen von der
linken unteren Ecke der Box.

\raggedright Die reservierte Box ist per Definition mit ihrer unteren Seite auf der
Grundlinie der Zeile angeordnet, was man hier leicht an dieser
\psframebox[framesep=0]{%
\begin{pspicture}(-1,-0.5)(1.5,1)
\psaxes[labels=none]{->}(0,0)(-1,-1)(2,2)
\end{pspicture}}
erkennen kann, deren \textbf{interner} Ursprung jedoch ganz woanders liegen kann,
auch au\ss erhalb der Box. In diesem Beispiel bei (1,0.5), gemessenen von der
linken unteren Ecke der Box.

\end{document}

Herbert

Spartaner
23-03-2008, 11:09
Danke, so ist es doch schon etwas verständlicher.
Die Position der Box (pspicture) kann ich also über diese beiden Koordinatenpaare gar nicht beeinflussen. Sie wird immer an der aktuellen Position der Zeile ausgerichtet. Wenn ich nun auf einer Seite mehrere Zeichnungen "wild" verteilen möchte, muss ich dies über Tabellen, minipages und was es da sonst noch so gibt, machen.

Hab ich das so richtig verstanden?

Gruß
Spartaner

voss
23-03-2008, 11:34
Danke, so ist es doch schon etwas verständlicher.
Die Position der Box (pspicture) kann ich also über diese beiden Koordinatenpaare gar nicht beeinflussen. Sie wird immer an der aktuellen Position der Zeile ausgerichtet. Wenn ich nun auf einer Seite mehrere Zeichnungen "wild" verteilen möchte, muss ich dies über Tabellen, minipages und was es da sonst noch so gibt, machen.

Hab ich das so richtig verstanden?


prinzipiell ja, aber ... :-)
du kannst natürlich die ganze DINA4-Seite als großes Koordinatensystem ansehen und
dann einfach alles mit \rput[lb](x,y){ beliebiger Inhalt} koordinatengenau positionieren.
Macht natürlich nur Sinn, wenn man nicht viel Text hat.
So erstelle ich beispielsweise A0-Poster.

Für eine Tabelle findest du hier ein Beispiel:
http://tug.org/PSTricks/main.cgi?file=Examples/tabular1

Herbert

Spartaner
23-03-2008, 12:09
na, das hätte ich mir ja denken können, dass da noch ein aber ist. ;)

Das aber werde ich mir dann später ansehen...

Danke noch mal für deine Hilfe Herbert!