[PSTricks] Text bei \psset{unit=} mitskalieren

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

[PSTricks] Text bei \psset{unit=} mitskalieren

Beitrag von Klaus »

Hi Leute,

ich bastle gerade für meine Freundin eine Übersicht, die aus mehreren Bestandteilen besteht.

Ein Teil davon sieht so aus:
\documentclass[ngerman]{scrreprt}

\usepackage{babel}

\usepackage[utf8]{inputenc}

\usepackage{pstricks}

\usepackage{amsmath,amssymb}
\usepackage{upgreek}



\begin{document}
	\begin{pspicture}(16,16)
	\psgrid[subgriddiv=1,griddots=5](0,0)(16,16)
%
	\rput[c](7,14){%
	\psset{unit=0.5cm}
		\rput[c](1,0){\textcolor{orange}{\Huge{APP}}}
%
	\psframe[fillcolor=gray!50,fillstyle=solid,linecolor=gray!50](0,1)(4,2)
	\rput[c](2,1.5){\textbf{Membrane}}
%
	\psframe[fillcolor=gray!50,fillstyle=solid,linecolor=gray!50](5,1)(9,2)
	\rput[c](7,0.5){\textbf{intrazellulär}}
	\rput[c](7,2.5){\textbf{extrazellulär}}
%
	\psframe[linecolor=orange,linewidth=2pt](4,1.5)(5,3)
	\rput[c]{L}(4.5,2.25){$\displaystyle\textcolor{orange}{\text{A}\upbeta}$}
%
	\psbezier[linewidth=2pt,linecolor=orange]{-}(4.5,3)(5.5,4)(3.5,5)(5.5,6)
%
	\psbezier[linewidth=2pt,linecolor=orange]{-}(4.5,1.5)(4,0)(5.5,-1)(3.5,-2)
	
	}
	\end{pspicture}
\end{document}
Dabei habe ich das Objekt in der \rput - Umgebung zunächst separat gebastelt (und noch andere), was wunderbar geklappt hat.
Und dachte mir dann, dass ich wie oben gezeigt einfach mittels \psset{unit=...} reskalieren kann.
Das funktioniert soweit auch ganz gut.

Das einzige Problem ist, dass der Text nicht mitskaliert! Gibt es dafür auch einen Befehl oder muss ich jetzt von neuem Beginnen die Textformatierung zu ändern? Also überall wo z.B. \Huge steht jetzt ein \small davorsetzen?

Viele Grüße,
Klaus.

CrazyHorse
Forum-Guru
Forum-Guru
Beiträge: 252
Registriert: Di 16. Mär 2010, 09:39

Re: [PSTricks] Text bei \psset{unit=} mitskalieren

Beitrag von CrazyHorse »

Klaus hat geschrieben: Das einzige Problem ist, dass der Text nicht mitskaliert! Gibt es dafür auch einen Befehl oder muss ich jetzt von neuem Beginnen die Textformatierung zu ändern? Also überall wo z.B. \Huge steht jetzt ein \small davorsetzen?
Es gibt nur drei Möglichkeiten:
  • - die Freundin wechseln, wahrscheinlich schlechte Variante :D
    - \def\Rput(#1)#2{\rput(#1){\small#2}} und dann \Rput nehmen
    - \psset{unit=} wegnehmen und stattdessen alles in eine
    \resizebox{...Breite...}{!}{...pstricks...} setzen.
Herbert

Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

Re: [PSTricks] Text bei \psset{unit=} mitskalieren

Beitrag von Klaus »

CrazyHorse hat geschrieben: Es gibt nur drei Möglichkeiten:
  • - die Freundin wechseln, wahrscheinlich schlechte Variante :D
    - \def\Rput(#1)#2{\rput(#1){\small#2}} und dann \Rput nehmen
    - \psset{unit=} wegnehmen und stattdessen alles in eine
    \resizebox{...Breite...}{!}{...pstricks...} setzen.
Danke,
ich schau mir die drei ... äh ... letzten beiden Möglichkeiten an. ;)

Viele Grüße,
Klaus.

Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

Re: [PSTricks] Text bei \psset{unit=} mitskalieren

Beitrag von Klaus »

CrazyHorse hat geschrieben: - \def\Rput(#1)#2{\rput(#1){\small#2}} und dann \Rput nehmen
Also das sieht dann bei mir so aus:
%
% uebersicht.tex
%

\documentclass[ngerman]{scrreprt}

\usepackage{babel}

\usepackage[utf8]{inputenc}

\usepackage{pstricks}

\usepackage{amsmath,amssymb}
\usepackage{upgreek}
\usepackage{graphicx}

\def\Rput(#1)#2{\rput(#1){\small#2}}

\begin{document}
	\begin{pspicture}(16,16)
	\psgrid[subgriddiv=1,griddots=5](0,0)(16,16)
%
	\Rput[c](7,14){
	\psset{unit=0.5cm}
		\rput[c](1,0){\textcolor{orange}{\Huge{APP}}}
%
	\psframe[fillcolor=gray!50,fillstyle=solid,linecolor=gray!50](0,1)(4,2)
	\rput[c](2,1.5){\textbf{Membrane}}
%
	\psframe[fillcolor=gray!50,fillstyle=solid,linecolor=gray!50](5,1)(9,2)
	\rput[c](7,0.5){\textbf{intrazellulär}}
	\rput[c](7,2.5){\textbf{extrazellulär}}
%
	\psframe[linecolor=orange,linewidth=2pt](4,1.5)(5,3)
	\rput[c]{L}(4.5,2.25){$\displaystyle\textcolor{orange}{\text{A}\upbeta}$}
%
	\psbezier[linewidth=2pt,linecolor=orange]{-}(4.5,3)(5.5,4)(3.5,5)(5.5,6)
%
	\psbezier[linewidth=2pt,linecolor=orange]{-}(4.5,1.5)(4,0)(5.5,-1)(3.5,-2)
	
	}
	\end{pspicture}
\end{document}

%
% EoF
%

Und funktioniert leider nicht, weil
! Use of \Rput doesn't match its definition.

Und
CrazyHorse hat geschrieben: - \psset{unit=} wegnehmen und stattdessen alles in eine
\resizebox{...Breite...}{!}{...pstricks...} setzen.
sieht dann bei mir so aus:
%
% uebersicht.tex
%

\documentclass[ngerman]{scrreprt}

\usepackage{babel}

\usepackage[utf8]{inputenc}

\usepackage{pstricks}

\usepackage{amsmath,amssymb}
\usepackage{upgreek}
\usepackage{graphicx}

\begin{document}
	\begin{pspicture}(16,16)
	\psgrid[subgriddiv=1,griddots=5](0,0)(16,16)
%
	\rput[c](7,14){\resizebox{4cm}{!}{%
%	\psset{unit=0.5cm}
		\rput[c](1,0){\textcolor{orange}{\Huge{APP}}}
%
	\psframe[fillcolor=gray!50,fillstyle=solid,linecolor=gray!50](0,1)(4,2)
	\rput[c](2,1.5){\textbf{Membrane}}
%
	\psframe[fillcolor=gray!50,fillstyle=solid,linecolor=gray!50](5,1)(9,2)
	\rput[c](7,0.5){\textbf{intrazellulär}}
	\rput[c](7,2.5){\textbf{extrazellulär}}
%
	\psframe[linecolor=orange,linewidth=2pt](4,1.5)(5,3)
	\rput[c]{L}(4.5,2.25){$\displaystyle\textcolor{orange}{\text{A}\upbeta}$}
%
	\psbezier[linewidth=2pt,linecolor=orange]{-}(4.5,3)(5.5,4)(3.5,5)(5.5,6)
%
	\psbezier[linewidth=2pt,linecolor=orange]{-}(4.5,1.5)(4,0)(5.5,-1)(3.5,-2)
	
	}}
	\end{pspicture}
\end{document}

%
% EoF
%
und funktioniert leider auch nicht, weil
! Package graphics Error: Division by 0.

Ich hatte spontan versucht jedes Argument, dass eine 0 enthält durch eine 0.1 zu ersetzen, aber das hat leider auch nichts gebracht.

Viele Grüße,
Klaus.

CrazyHorse
Forum-Guru
Forum-Guru
Beiträge: 252
Registriert: Di 16. Mär 2010, 09:39

Re: [PSTricks] Text bei \psset{unit=} mitskalieren

Beitrag von CrazyHorse »

Klaus hat geschrieben:
CrazyHorse hat geschrieben: und funktioniert leider auch nicht, weil
! Package graphics Error: Division by 0.

Ich hatte spontan versucht jedes Argument, dass eine 0 enthält durch eine 0.1 zu ersetzen, aber das hat leider auch nichts gebracht.
ich dachte auch eher daran _alles_ in die \resizebox zu packen. Wenn du also innerhalb der pspicture-Umgebung skalieren willst, dann entweder nochmal alles in eine pspicture-Umgebung packen, oder \psscalebox benutzen:
\documentclass[ngerman]{scrreprt}

\usepackage{babel}

\usepackage[utf8]{inputenc}

\usepackage{pstricks}

\usepackage{amsmath,amssymb}
\usepackage{upgreek}
\usepackage{graphicx}

\begin{document}

   \begin{pspicture}(16,16)
   \psgrid[subgriddiv=1,griddots=5](0,0)(16,16)
%
   \rput[c](7,14){\resizebox{4cm}{!}{%
   \begin{pspicture}(9,9)
%   \psset{unit=0.5cm}
      \rput[c](1,0){\textcolor{orange}{\Huge{APP}}}
%
   \psframe[fillcolor=gray!50,fillstyle=solid,linecolor=gray!50](0,1)(4,2)
   \rput[c](2,1.5){\textbf{Membrane}}
%
   \psframe[fillcolor=gray!50,fillstyle=solid,linecolor=gray!50](5,1)(9,2)
   \rput[c](7,0.5){\textbf{intrazellulär}}
   \rput[c](7,2.5){\textbf{extrazellulär}}
%
   \psframe[linecolor=orange,linewidth=2pt](4,1.5)(5,3)
   \rput[c]{L}(4.5,2.25){$\displaystyle\textcolor{orange}{\text{A}\upbeta}$}
%
   \psbezier[linewidth=2pt,linecolor=orange]{-}(4.5,3)(5.5,4)(3.5,5)(5.5,6)
%
   \psbezier[linewidth=2pt,linecolor=orange]{-}(4.5,1.5)(4,0)(5.5,-1)(3.5,-2)
 \end{pspicture}  
   }}
   \end{pspicture}
\end{document}
und hier mit \psscalebox, da du ja ohnehin auf 0.5 skalieren willst
\documentclass[ngerman]{scrreprt}

\usepackage{babel}

\usepackage[utf8]{inputenc}

\usepackage{pstricks}

\usepackage{amsmath,amssymb}
\usepackage{upgreek}
\usepackage{graphicx}

\begin{document}

   \begin{pspicture}(16,16)
   \psgrid[subgriddiv=1,griddots=5](0,0)(16,16)
%
   \rput[c](7,14){\psscalebox{0.5}{%
%   \psset{unit=0.5cm}
      \rput[c](1,0){\textcolor{orange}{\Huge{APP}}}
%
   \psframe[fillcolor=gray!50,fillstyle=solid,linecolor=gray!50](0,1)(4,2)
   \rput[c](2,1.5){\textbf{Membrane}}
%
   \psframe[fillcolor=gray!50,fillstyle=solid,linecolor=gray!50](5,1)(9,2)
   \rput[c](7,0.5){\textbf{intrazellulär}}
   \rput[c](7,2.5){\textbf{extrazellulär}}
%
   \psframe[linecolor=orange,linewidth=2pt](4,1.5)(5,3)
   \rput[c]{L}(4.5,2.25){$\displaystyle\textcolor{orange}{\text{A}\upbeta}$}
%
   \psbezier[linewidth=2pt,linecolor=orange]{-}(4.5,3)(5.5,4)(3.5,5)(5.5,6)
%
   \psbezier[linewidth=2pt,linecolor=orange]{-}(4.5,1.5)(4,0)(5.5,-1)(3.5,-2)
   }}
   \end{pspicture}
\end{document}
Herbert

Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

Beitrag von Klaus »

Ach,
das klappt alles wunderbar! :)

Zum Glück, sonst hatte ich Möglichkeit Nr. 1 wählen müssen! :D

Viele Grüße,
Klaus.

Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

Beitrag von Klaus »

Muss es leider nochmal öffnen, denn jetzt stehe ich vor dem Problem: Wie kriege ich ein Bild daraus im bmp oder jpg Format?

Hier hast du eine png Datei angehängt, die du wahrscheinlich direkt aus PSTricks konvertiert hast?

Ich finde im Web und in der PSTricks zwar jede Menge Hinweise, wie ich eine eps Datei draus mache, doch was nutzt mir das?

Ich bin auch auf das Programm LaTexDraw gestoßen, doch das hatte bei der Importierung meiner Latex Datei gleich Probleme, weil es manche Befehle von PSTricks nicht kannte. :-(

Also wie komme ich weiter? In was für ein Bildformat kann ich expotieren, dass meine Freundin dann einfach in ihre W**d Datei importieren kann?

Viele Grüße,
Klaus.

CrazyHorse
Forum-Guru
Forum-Guru
Beiträge: 252
Registriert: Di 16. Mär 2010, 09:39

Beitrag von CrazyHorse »

Klaus hat geschrieben:Muss es leider nochmal öffnen, denn jetzt stehe ich vor dem Problem: Wie kriege ich ein Bild daraus im bmp oder jpg Format?

Hier hast du eine png Datei angehängt, die du wahrscheinlich direkt aus PSTricks konvertiert hast?

Ich finde im Web und in der PSTricks zwar jede Menge Hinweise, wie ich eine eps Datei draus mache, doch was nutzt mir das?

Ich bin auch auf das Programm LaTexDraw gestoßen, doch das hatte bei der Importierung meiner Latex Datei gleich Probleme, weil es manche Befehle von PSTricks nicht kannte. :-(

Also wie komme ich weiter? In was für ein Bildformat kann ich expotieren, dass meine Freundin dann einfach in ihre W**d Datei importieren kann?
jpg ist ein ganz schlechtes Format für Zeichnungen. Erstelle eine pdf mit \pagestyle{empty} undwende dann auf die pdf "pdfcrop datei.pdf" an, dann ist der weiße Rand weg oder nimm das PAket pst-pdf, dann ist auch der weiße Rand weg. Dann wandelst du die Datei mit irgendeinem Konverteirungsprogramm nach png, bzw. liest die PDF direkt als Grafik ein.

Herbert

Klaus
Forum-Century
Forum-Century
Beiträge: 184
Registriert: Do 27. Jan 2011, 19:30

Beitrag von Klaus »

Ich hatte es zwischenzeitlich geschafft die PS Datei mittels Ghostview in eine jpg Datei zu verwandeln.

Deinen Vorschlag schaue ich mir jetzt in aller Ruhe an.

Auf jeden Fall ist das Projekt Masterarbeit erfolgreich beendet worden! :)

Einen heißen Dank für die Hilfe, dir zur Erstellung der Graphik geführt hat. :)

Viele Grüße,
Klaus.

Antworten