Anzeige:
Ergebnis 1 bis 11 von 11

Thema: pstricks (pspicture)

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.02.2008
    Beiträge
    24

    pstricks (pspicture)

    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:
    Code:
    \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

    Code:
                  -------
    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

  2. #2
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Spartaner Beitrag anzeigen
    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?
    Code:
    \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

  3. #3
    Registrierter Benutzer
    Registriert seit
    16.02.2008
    Beiträge
    24
    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

  4. #4
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Spartaner Beitrag anzeigen
    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

    Code:
    \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}

  5. #5
    Registrierter Benutzer
    Registriert seit
    16.02.2008
    Beiträge
    24
    Code:
    \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.


    Code:
    \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.

    Code:
    \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

  6. #6
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Spartaner Beitrag anzeigen
    [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.

    Code:
    \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

  7. #7
    Registrierter Benutzer
    Registriert seit
    16.02.2008
    Beiträge
    24
    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.

    Code:
    \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.


    Code:
    \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

  8. #8
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Spartaner Beitrag anzeigen
    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
    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:
    Code:
    \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

  9. #9
    Registrierter Benutzer
    Registriert seit
    16.02.2008
    Beiträge
    24
    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

  10. #10
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Spartaner Beitrag anzeigen
    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

  11. #11
    Registrierter Benutzer
    Registriert seit
    16.02.2008
    Beiträge
    24
    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!

Lesezeichen

Berechtigungen

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