PSTrix Figuren in Tabelle anzeigen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: PSTrix Figuren in Tabelle anzeigen

von Tobi123456 » Mi 15. Jul 2015, 15:50

Ich danke dir vielmals für die Mühe.
Ich verstehe zwar nicht, wie du es gemacht hast aber das Ergebnis ist super.

Große Danke für deine Hilfe.

PS: Ich bin schon froh das ich die Zeichnungen überhaupt hinbekommen habe :D

von esdd » Mi 15. Jul 2015, 13:29

Passe den angegebenen Platzbedarf an den tatsächlich benötigten an und zentriere die Spalten. Dann sind die Zeichnungen und die Beschriftungen in ihrer Spalte horizontal zentriert.
\documentclass[12pt]{article} 
\usepackage{caption} 
\usepackage{pst-all} 
\usepackage{array}

\begin{document} 
\noindent\textbf{\Large{Aufgabe 1}}

\begin{center} 
\begin{minipage}{\linewidth} 
\psset{unit=.7cm} 
\centering 
\begin{tabular}{@{}*{2}{>{\centering\arraybackslash}p{6.5cm}}@{}} 
\begin{pspicture}(0,0)(9,2) 
\psline[linewidth=1.5pt](0,1.5)(9,1.5) 
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)} 
\end{pspicture}
\captionof*{figure}{Linear} 
& 
\begin{pspicture}(-4,0)(5,5) 
\psframe[linewidth=1.5pt](0,0)(1,1) 
\psarc[linewidth=1.5pt](0.5,0){3,35}{0}{180} 
\psframe[fillstyle=solid,fillcolor=white,linewidth=1.5pt](0.2,3)(0.8,3.6) 
\psframe[fillstyle=solid,fillcolor=white,linestyle=none](-3,0)(-2,1.4) 
\psframe[fillstyle=solid,fillcolor=white,linestyle=none](3,0)(4,1.4) 
\psline[linewidth=1.5pt](0.2,1)(0.4,3) 
\psline[linewidth=1.5pt](0.8,1)(0.6,3) 
\uput{4.8}[100](0,0){\rput{-80}{\psframe(0,0)(0.8,0.8)}} 
\uput{4.6}[120](0,0){\rput{-60}{\psframe(0,0)(0.8,0.8)}} 
\uput{4.4}[140](0,0){\rput{-40}{\psframe(0,0)(0.8,0.8)}} 
\uput{4.2}[160](0,0){\rput{-20}{\psframe(0,0)(0.8,0.8)}} 
\uput{4}[180](0,0){\psframe(0,0)(0.8,0.8)} 
\uput{4.8}[80](1,0){\rput{80}{\psframe(0,0)(-0.8,0.8)}} 
\uput{4.6}[60](1,0){\rput{60}{\psframe(0,0)(-0.8,0.8)}} 
\uput{4.4}[40](1,0){\rput{40}{\psframe(0,0)(-0.8,0.8)}} 
\uput{4.2}[20](1,0){\rput{20}{\psframe(0,0)(-0.8,0.8)}} 
\uput{4}[0](1,0){\psframe(0,0)(-0.8,0.8)} 
\end{pspicture} 
\captionof*{figure}{Semicircular} 
\tabularnewline 
\tabularnewline 
\tabularnewline 
\begin{pspicture}(0,0)(7,4) 
\multiput(2,0)(2,0){3}{\psframe(0,0)(1,1)} 
\psline[linewidth=1.5pt](2,2.8)(7,2.8) 
\psframe(0,1.5)(1,2.5) 
\psarc[linewidth=1.5pt](2,2){0.8}{90}{270} 
\psline[linewidth=1.5pt](2,1.2)(7,1.2) 
\multiput(2,3)(2,0){3}{\psframe(0,0)(1,1)} 
\end{pspicture}
\captionof*{figure}{U-Shaped} 
& 
\begin{pspicture}(0,0)(8.5,5.5) 
\psline[linewidth=1.5pt](2,2)(2,5) 
\psline[linewidth=1.5pt](2,2)(5,2) 
\psline[linewidth=1.5pt](5,2)(5,5) 
\psline[linewidth=1.5pt](5,5)(6.5,5) 
\psline[linewidth=1.5pt](6.5,5)(6.5,0.5) 
\psframe(0,1.5)(1,2.5) 
\psframe(0,3)(1,4) 
\psframe(0,4.5)(1,5.5) 
\psframe(1.5,0)(2.5,1) 
\psframe(3,0)(4,1) 
\psframe(4.5,0)(5.5,1) 
\psframe(3,3)(4,4) 
\psframe(3,4.5)(4,5.5) 
\psframe(7.5,0)(8.5,1) 
\psframe(7.5,1.5)(8.5,2.5) 
\psframe(7.5,3)(8.5,4) 
\psframe(7.5,4.5)(8.5,5.5) 
\end{pspicture}
\captionof*{figure}{Serpentine} 
\end{tabular} 
\end{minipage} 
\end{center} 
\end{document}
Wenn Du die Zeichnungen aber links ausgerichtet haben möchtest und unter diesen die Beschriftungen zentriert, dann musst Du auch den Zeichenbereich korrigieren, darfst aber die Spalten nicht zentrieren. Dafür kannst Du jede Zeichnung mit ihrer Beschriftung in eine \parbox oder minipage setzen, deren Breite mit der Breite des Zeichenbereiches übereinstimmt.

Gruß
Elke

PS: Dein Code legt für mich übrigens die Verwendung von Schleifen nahe.

von Tobi123456 » Di 14. Jul 2015, 20:07

Hat super funktioniert.
Nur wie bekommt man nun die Beschriftung unter der Figur zentriert?
\documentclass[12pt]{article} 
\usepackage{caption} 
\usepackage{pst-all} 

\begin{document} 
\noindent\textbf{\Large{Aufgabe 1}}\\

\begin{center} 
\begin{minipage}{\linewidth} 
\psset{unit=.7cm} 
\centering 
\begin{tabular}{p{7.5cm}p{7.5cm}} 
\begin{pspicture}(0,0)(9,2)
\psline[linewidth=1.5pt](0,1.5)(9,1.5)
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)}
\end{pspicture}
\captionof*{figure}{Linear}
&
\begin{pspicture}(-5,0)(5,5)
\psframe[linewidth=1.5pt](0,0)(1,1)
\psarc[linewidth=1.5pt](0.5,0){3,35}{0}{180}
\psframe[fillstyle=solid,fillcolor=white,linewidth=1.5pt](0.2,3)(0.8,3.6)
\psframe[fillstyle=solid,fillcolor=white,linestyle=none](-3,0)(-2,1.4)
\psframe[fillstyle=solid,fillcolor=white,linestyle=none](3,0)(4,1.4)
\psline[linewidth=1.5pt](0.2,1)(0.4,3)
\psline[linewidth=1.5pt](0.8,1)(0.6,3)
\uput{4.8}[100](0,0){\rput{-80}{\psframe(0,0)(0.8,0.8)}}
\uput{4.6}[120](0,0){\rput{-60}{\psframe(0,0)(0.8,0.8)}}
\uput{4.4}[140](0,0){\rput{-40}{\psframe(0,0)(0.8,0.8)}}
\uput{4.2}[160](0,0){\rput{-20}{\psframe(0,0)(0.8,0.8)}}
\uput{4}[180](0,0){\psframe(0,0)(0.8,0.8)}
\uput{4.8}[80](1,0){\rput{80}{\psframe(0,0)(-0.8,0.8)}}
\uput{4.6}[60](1,0){\rput{60}{\psframe(0,0)(-0.8,0.8)}}
\uput{4.4}[40](1,0){\rput{40}{\psframe(0,0)(-0.8,0.8)}}
\uput{4.2}[20](1,0){\rput{20}{\psframe(0,0)(-0.8,0.8)}}
\uput{4}[0](1,0){\psframe(0,0)(-0.8,0.8)}
\end{pspicture}
\captionof*{figure}{Semicircular}
\tabularnewline
\tabularnewline
\tabularnewline
\begin{pspicture}(0,0)(7,4)
\multiput(2,0)(2,0){3}{\psframe(0,0)(1,1)}
\psline[linewidth=1.5pt](2,2.8)(7,2.8)
\psframe(0,1.5)(1,2.5)
\psarc[linewidth=1.5pt](2,2){0.8}{90}{270}
\psline[linewidth=1.5pt](2,1.2)(7,1.2)
\multiput(2,3)(2,0){3}{\psframe(0,0)(1,1)}
\end{pspicture}
\captionof*{figure}{U-Shaped}
&
\begin{pspicture}(0,0)(9,6)
\psline[linewidth=1.5pt](2,2)(2,5)
\psline[linewidth=1.5pt](2,2)(5,2)
\psline[linewidth=1.5pt](5,2)(5,5)
\psline[linewidth=1.5pt](5,5)(6.5,5)
\psline[linewidth=1.5pt](6.5,5)(6.5,0.5)
\psframe(0,1.5)(1,2.5)
\psframe(0,3)(1,4)
\psframe(0,4.5)(1,5.5)
\psframe(1.5,0)(2.5,1)
\psframe(3,0)(4,1)
\psframe(4.5,0)(5.5,1)
\psframe(3,3)(4,4)
\psframe(3,4.5)(4,5.5)
\psframe(7.5,0)(8.5,1)
\psframe(7.5,1.5)(8.5,2.5)
\psframe(7.5,3)(8.5,4)
\psframe(7.5,4.5)(8.5,5.5)
\end{pspicture}
\captionof*{figure}{Serpentine}
\end{tabular} 
\end{minipage} 
\end{center}
\end{document}

von Tobi123456 » Di 14. Jul 2015, 09:55

Danke. Werde ich abend gleich probieren.
Denke aber das damit mein Problem gelöst ist.

Großes danke für die schnelle und ausführliche Lösung :)

von esdd » Di 14. Jul 2015, 09:27

Natürlich verwendest Du Einheiten. Zum Beispiel legst Du mit
\begin{pspicture}(0,0)(9,2) 
fest, dass Dein Zeichenbereich 9 Einheiten in x-Richtung und 2 in y-Richtung ist. In der Voreinstellung entspricht eine Einheit 1cm. Wenn Du Dein Bild auf die Hälfte skalieren willst, ohne die Schriftgröße und die Linienstärke zu ändern, kannst Du das von mir schon genannte \psset{unit=.5cm} verwenden.
\documentclass[12pt]{article} 
\usepackage{caption} 
\usepackage{pst-all} 

\begin{document} 
\noindent\textbf{\Large{Text davor}} 

\begin{center} 
\begin{minipage}{\linewidth} 
\psset{unit=.5cm}
\centering 
\begin{tabular}{p{4.5cm}p{4.5cm}} 
\begin{pspicture}(0,0)(9,2) 
\psline[linewidth=1.5pt](0,1.5)(9,1.5) 
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)} 
\end{pspicture} 
\captionof*{figure}{Linear} 
& 
\begin{pspicture}(0,0)(9,2) 
\psline[linewidth=1.5pt](0,1.5)(9,1.5) 
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)} 
\end{pspicture} 
\captionof*{figure}{Linear} 
\tabularnewline 
\begin{pspicture}(0,0)(9,2) 
\psline[linewidth=1.5pt](0,1.5)(9,1.5) 
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)} 
\end{pspicture} 
\captionof*{figure}{Linear} 
& 
\begin{pspicture}(0,0)(9,2) 
\psline[linewidth=1.5pt](0,1.5)(9,1.5) 
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)} 
\end{pspicture} 
\captionof*{figure}{Linear} 
\end{tabular} 
\end{minipage} 
\end{center} 
\end{document}
liefert

Bild


Wenn in der Zeichnung enthaltene Schrift mit skaliert, dann kannst Du \psscalebox oder \psscaleboxto innerhalb von pspicture verwenden, musst dann aber den Zeichenbereich entsprechend anpassen, weil dessen Platz ja reserviert wird. Alternativ kannst Du auch \scalebox oder \resizebox aus dem graphicx Paket für die gesamte pspicture Umgebung verwenden.

Gruß
Elke
Dateianhänge
gl_ps_unit.png
gl_ps_unit.png (7.17 KiB) 2651 mal betrachtet

von Tobi123456 » Di 14. Jul 2015, 09:07

Die Figur hat sich aber nicht an die Spalten und Zeilen angepasst. Es hat sie einfach nur stumpf über ragt.
Ich habe bei den Figuren keine Einheiten verwendet. Ich habe das gegebene Raster verwendet.
Ich wusste ja vorher nicht wie groß sie werden.
Wollte diese zum Schluss einfach passend skalieren. Gerade das ist doch der Vorteil eine Vektorgrafik.

von esdd » Di 14. Jul 2015, 08:40

Du brauchst doch nur die beim Zeichnen verwendete Einheit entsprechend anzupassen? Die Spalten der Tabelle müssen/können dann natürlich auch schmaler sein.
\begin{center} 
\begin{minipage}{\linewidth} 
\psset{unit=.5cm}
\centering 
\begin{tabular}{p{4.5cm}p{4.5cm}} 
...
\end{tabular} 
\end{minipage} 
\end{center} 
Gruß
Elke

von Tobi123456 » Di 14. Jul 2015, 08:26

Danke, dass ich das Figure weglassen muss ist mir gestern beim rumspielen auch aufgefallen.
Ich werde das nachher mal mit der Minipage versuchen umzusetzen.
Bei der Tabellenumgebung hatte ich das Problem, dass die Zeichnungen zwar angeordnet waren, nur leider passten sie von der Größe her nicht...

Ich habe natürlich gestern keine Möglichkeit gefunden, die Figuren in ihrer Größe anzupassen.

von esdd » Mo 13. Jul 2015, 22:01

Bitte teste Deine Beispiele. Dein Code enthält in der ersten Tabellenzeile ein \end{document}.

Du kannst in eine Tabelle keine Gleitumgebungen einfügen. Lass also die figure Umgebung um Deine Zeichnungen weg. Wenn Du eine Beschriftung brauchst, kannst Du mit dem von Dir geladenen Paket caption auch \captionof{figure}{...} verwenden. Davon existiert ebenfalls eine Sternversion. Allerdings kannst Du die Abbildungen mit Beschriftung nicht in c Spalten setzen, sondern musst p Spalten verwenden.

Wenn Du außerdem nicht möchtest, dass die Tabelle mit den Abbildungen gleitet, dann lass die table Umgebung weg und verwende statt dessen eine zentrierte minipage.

Die Tabelle ist momentan übrigens zu breit für den Textbereich. Im folgenden Beispiel habe ich sie trotzdem verwendet, aber alle für das Beispiel nicht benötigten rausgenommen. Nebenbei: einige von ihnen hast Du doppelt geladen, was man vermeiden sollte.
\documentclass[12pt]{article} 
\usepackage{caption} 
\usepackage{pst-all} 

\begin{document} 
\noindent\textbf{\Large{Text davor}}

\begin{center}
\begin{minipage}{\linewidth}
%\begin{table} 
\centering 
\begin{tabular}{p{9cm}p{9cm}} 
\begin{pspicture}(0,0)(9,2) 
\psline[linewidth=1.5pt](0,1.5)(9,1.5) 
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)} 
\end{pspicture} 
\captionof*{figure}{Linear} 
& 
\begin{pspicture}(0,0)(9,2) 
\psline[linewidth=1.5pt](0,1.5)(9,1.5) 
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)} 
\end{pspicture} 
\captionof*{figure}{Linear} 
\tabularnewline 
\begin{pspicture}(0,0)(9,2) 
\psline[linewidth=1.5pt](0,1.5)(9,1.5) 
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)} 
\end{pspicture} 
\captionof*{figure}{Linear} 
& 
\begin{pspicture}(0,0)(9,2) 
\psline[linewidth=1.5pt](0,1.5)(9,1.5) 
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)} 
\end{pspicture} 
\captionof*{figure}{Linear} 
\end{tabular}
%\end{table}
\end{minipage}
\end{center}
\end{document}
Gruß
Elke

von Tobi123456 » Mo 13. Jul 2015, 20:06

So will ich das gerne haben. Geht aber so nicht.
\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath}
\usepackage{algpseudocode} 
\usepackage{scrpage2} 
\usepackage{booktabs} 
\usepackage{rotating} 
\usepackage{multirow} 
\usepackage{textcomp} 
\usepackage{caption} 
\usepackage{amstext} 
\usepackage{amsmath} 
\usepackage{amssymb} 
\usepackage{textcomp} 
\usepackage{tabularx} 
\usepackage{pst-all} 
\usepackage{framed}
\begin{document}
\noindent\textbf{\Large{Aufgabe 1}}

\begin{table}
\centering 
\begin{tabular}{cc}
\begin{figure}
\begin{pspicture}(0,0)(9,2)
\psline[linewidth=1.5pt](0,1.5)(9,1.5)
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)}
\end{pspicture}
\caption*{Linear}
\end{figure}
\end{document}
&
\begin{figure}
\begin{pspicture}(0,0)(9,2)
\psline[linewidth=1.5pt](0,1.5)(9,1.5)
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)}
\end{pspicture}
\caption*{Linear}
\end{figure}
\tabularnewline
\begin{figure}
\begin{pspicture}(0,0)(9,2)
\psline[linewidth=1.5pt](0,1.5)(9,1.5)
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)}
\end{pspicture}
\caption*{Linear}
\end{figure}
&
\begin{figure}
\begin{pspicture}(0,0)(9,2)
\psline[linewidth=1.5pt](0,1.5)(9,1.5)
\multiput(1,0)(2,0){4}{\psframe(0,0)(1,1)}
\end{pspicture}
\caption*{Linear}
\end{figure}
\end{tabular}
\end{table}



\end{document}

Nach oben