PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pstricks - Eventuell interessantes Problem!?



Spindoctor
01-12-2007, 05:07
Hallo!

Ich versuche gerade die Maslowsche Bedürfnispyramide (http://steves.blogharbor.com/maslow.jpg) in pstricks nachzuzeichnen. Leider ist die oberste Kammer zu klein für den Text. Nach einigem herumprobieren hab ich mich entschieden, sie einfach "auszubeulen", damit der Text hineinpasst.
Das gelingt noch, allerdings fehlt ein kleiner Schritt zu meinem vollkommenen Glück...

naja, ein Quelltext und ein Bild sagen mehr als tausend Worte.
Es ist kein Minimalbeispiel, aber der Code ist so kurz, dass sich das minimieren gar nicht auszahlt:

kein Minimalbeispiel

%
% Maslowsche Bedürfnispyramide
%
\documentclass[a4paper,oneside]{scrreprt}

\usepackage{pstricks-add}
\usepackage{pst-pdf}
\usepackage[naustrian]{babel}
\usepackage[latin1]{inputenc}
\begin {document}

\begin{pspicture}(-1,-1)(13,7)
\psset{xunit=1.2cm,yunit=1.2cm,linewidth=2pt}

\pspolygon[fillstyle=solid,fillcolor=white](0,0)(5,5)(10,0)
\psline(4,4)(6,4)
\psline(3,3)(7,3)
\psline(2,2)(8,2)
\psline(1,1)(9,1)

\begin{sffamily}

\rput(5,0.5){Physiologische Bedürfnisse}
\rput(5,1.5){Sicherheitsbedürfnisse}
\rput(5,2.5){Soziale Bedürfnisse}
\rput(5,3.5){Geltungsbedürfnisse}
\rput(5,4.5){\psframebox[fillstyle=solid, fillcolor=white]{Selbstverwirklichungsbedürfnisse}}

\end{sffamily}

\end{pspicture}
\end{document}

%
%EoF
%
... und die mit roten Pfeilen versehenen Linien im Anhang hätt ich gerne unsichtbar.

Vielleicht liegts ja an der Uhrzeit, aber es will mir einfach keine Lösung einfallen, wie ich die wegbekomm.

Danke im Vorraus,

Spin

localghost
01-12-2007, 13:21
Du kannst dies umgehen, wenn Du den "Rahmen" für den oberen Bereich anders erzeugst.

%
% Maslowsche Bedürfnispyramide
%
\documentclass[oneside]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[naustrian]{babel}
\usepackage{pst-pdf}
\usepackage{pstricks-add}

\begin{document}
\psset{unit=1.2cm,linewidth=2pt}
\begin{pspicture}[showgrid=true](10,5)
\sffamily
\pspolygon[fillstyle=solid,fillcolor=white](0,0)(4,4)(6,4)(10,0)
\psline(4,4)(6,4)
\psline(3,3)(7,3)
\psline(2,2)(8,2)
\psline(1,1)(9,1)

\rput(5,0.5){Physiologische Bedürfnisse}
\rput(5,1.5){Sicherheitsbedürfnisse}
\rput(5,2.5){Soziale Bedürfnisse}
\rput(5,3.5){Geltungsbedürfnisse}
\rput(5,4.5){Selbstverwirklichungsbedürfnisse}

\psline(4,4)(4.25,4.25)(2.75,4.25)(2.75,4.75)(4.75 ,4.75)(5,5)(5.25,4.75)(7.25,4.75)(7.25,4.25)(5.75, 4.25)(6,4)
\end{pspicture}
\end{document}

%
%EoF
%
Das Polygon ist jetzt ohne Spitze. Die letzte Linie erzeugt den kompletten Rahmen für den oberen Bereich.

Spindoctor
01-12-2007, 13:32
Zunächst mal danke!

ok, verstehe. Die letzte Linie fährt als Rahmen um die Schrift herum.

Das geht natürlich, ist aber nicht sehr elegant, oder?
Weil ich halt manuell darauf achten muss, dass ich nicht in die Schrift "hineinfahre" und dass der Abstand vom Text überall ca. gleich groß ist.

Ich hab über eine andere Lösung nachgedacht, die glaub ich etwas eleganter ist (ich hoffe du bist mir nicht böse, localghost, dass ich das so ausdrücke). allerdings gelingt mir das eben nicht ganz.

Moment, ich poste es gleich.

Spindoctor
01-12-2007, 13:45
Hier meine Idee:

\documentclass[oneside]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[naustrian]{babel}
\usepackage{pst-pdf}
\usepackage{pstricks-add}

\begin{document}
\psset{dimen=middle,unit=1.2cm,linewidth=2pt}
\begin{pspicture}[showgrid=true](10,5)

\begin{sffamily}

\rput(5,4.5){\psframebox[fillstyle=solid, fillcolor=white]{\textcolor{white}{Selbstverwirklichungsbedürfniss e}}}

\pspolygon[fillstyle=solid,fillcolor=white](0,0)(5,5)(10,0)
\psline(4,4)(6,4)
\psline(3,3)(7,3)
\psline(2,2)(8,2)
\psline(1,1)(9,1)

\rput(5,0.5){Physiologische Bedürfnisse}
\rput(5,1.5){Sicherheitsbedürfnisse}
\rput(5,2.5){Soziale Bedürfnisse}
\rput(5,3.5){Geltungsbedürfnisse}
\rput(5,4.5){\psframebox[linestyle=none, fillstyle=solid, fillcolor=white]{Selbstverwirklichungsbedürfnisse}}

\end{sffamily}

\end{pspicture}
\end{document}

%
%EoF
%

So weit schaut das ja gut aus, und ich muss auch nicht manuell um die Schrift herumfahren.

Der springende Punkt ist "linestyle=none". Dadurch wird die weiße Füllung von "Selbstverwirklichungsbedürfnisse" ein bisschen größer als bei der grün markierten Zeile. Deshalb schaut das Ergebnis nicht so toll aus.

Ist es unverschämt, wenn ich - obwohl du mir einen funktionierenden Lösungsweg aufgezeigt hast - frag, ob man diesen kleinen Mißstand in meinem Lösungsweg beheben kann?

voss
02-12-2007, 20:22
Ist es unverschämt, wenn ich - obwohl du mir einen funktionierenden Lösungsweg aufgezeigt hast - frag, ob man diesen kleinen Mißstand in meinem Lösungsweg beheben kann?



\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{pstricks}

\begin{document}
\psset{unit=1.2cm,linewidth=2pt}
\sffamily
\begin{pspicture}[showgrid=true](10,5)
\pspolygon[fillstyle=solid,fillcolor=white](0,0)(5,5)(10,0)
\psline(4,4)(6,4)
\psline(3,3)(7,3)
\psline(2,2)(8,2)
\psline(1,1)(9,1)
\rput(5,0.5){Physiologische Bedürfnisse}
\rput(5,1.5){Sicherheitsbedürfnisse}
\rput(5,2.5){Soziale Bedürfnisse}
\rput(5,3.5){Geltungsbedürfnisse}
\psset{framesep=0pt}
\rput*(5,4.5){Selbstverwirklichungsbedürfnisse}
\end{pspicture}
\end{document}


Herbert

Spindoctor
03-12-2007, 01:28
Danke, voss!

Zunächst möchte ich anmerken, dass ich Deine Präsentationen für Dante mindestens schon 20x gesehen habe, und total bewundere!

Deinen Lösungsweg hab ich mir zu Herzen genommen, und etwas für meine Bedürfnisse adaptiert.

Hier das Ergebnis:

\documentclass[oneside]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[naustrian]{babel}
\usepackage{pst-pdf}
\usepackage{pstricks-add}

\begin{document}
\psset{dimen=middle,unit=1.2cm,linewidth=2pt,frame sep=1.5pt}
\begin{pspicture}[showgrid=true](10,5)

\begin{sffamily}

\rput(5,4.5){\psframebox[fillstyle=solid, fillcolor=white]{\textcolor{white}{Selbstverwirklichungsbedürfniss e}}}

\pspolygon[fillstyle=solid,fillcolor=white](0,0)(5,5)(10,0)
\psline(4,4)(6,4)
\psline(3,3)(7,3)
\psline(2,2)(8,2)
\psline(1,1)(9,1)

\rput(5,0.5){Physiologische Bedürfnisse}
\rput(5,1.5){Sicherheitsbedürfnisse}
\rput(5,2.5){Soziale Bedürfnisse}
\rput(5,3.5){Geltungsbedürfnisse}
\rput(5,4.5){\psframebox[framesep=-0.5pt,linecolor=white,fillstyle=solid, fillcolor=white]{Selbstverwirklichungsbedürfnisse}}
\end{sffamily}

\end{pspicture}
\end{document}

%
%EoF
%

Herzlichen Dank!!!