Zeilenumbruch bei \framebox in picture-Umgebung

Tabellen und Grafiken erstellen und anordnen


meep.meep
Forum-Anfänger
Forum-Anfänger
Beiträge: 45
Registriert: Do 8. Apr 2010, 10:36

Zeilenumbruch bei \framebox in picture-Umgebung

Beitrag von meep.meep »

Hallo zusammen,

ich bastele gerade an einer Abbildung mit Hilfe der picture-Umgebung. Mein Minimalbeispiel lautet wie folgt:
\documentclass[12pt]{scrartcl}		

\begin{document}

\unitlength 5mm
\begin{picture}(5,15)
\put(0,0) {\framebox(6,3){Beispiel}}
\put(8,0) {\framebox(6,3){sehr langes Beispiel}}
\put(16,0){\framebox(6,3){Beispiel}}
\put(24,0) {\framebox(6,3){Beispiel}}

\end{picture}
\end{document}
Nun hätte ich gerne in der zweiten Box einen Zeilenumbruch. Wie mache ich das wohl am elegantesten?

Wenn ich zusätzlich mit einem
\put(8,0) {\parbox{30mm}{sehr langes Beispiel}}
Befehl arbeite, ist der Text leider nicht vertikal zentriert im Bezug zur framebox. Natürlich kann ich so lange an den Parametern rumspielen, bis es passt, aber da ich das Ganze bei vielen Boxen machen muss, suche ich nach einer allgemeineren Lösung.

Besten Dank im voraus,

Anja[/code]

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

Re: Zeilenumbruch bei \framebox in picture-Umgebung

Beitrag von CrazyHorse »

meep.meep hat geschrieben:
\put(8,0) {\parbox{30mm}{sehr langes Beispiel}}
Befehl arbeite, ist der Text leider nicht vertikal zentriert im Bezug zur framebox. Natürlich kann ich so lange an den Parametern rumspielen, bis es passt, aber da ich das Ganze bei vielen Boxen machen muss, suche ich nach einer allgemeineren Lösung.
\put(8,0){\framebox(6,3){\parbox[c]{30mm}{sehr langes Beispiel}}}

Herbert

meep.meep
Forum-Anfänger
Forum-Anfänger
Beiträge: 45
Registriert: Do 8. Apr 2010, 10:36

Beitrag von meep.meep »

Hallo Herbert,

Danke schonmal für deinen schnellen Lösungsvorschlag.

Ich habe den Code jetzt wie folgt abgewandelt:
\documentclass[12pt]{scrartcl}       

\begin{document} 

\unitlength 5mm 
\begin{picture}(5,15) 
\put(0,0) {\framebox(6,3){Beispiel}} 
\put(8,0){\framebox(6,3){\parbox[c]{30mm}{sehr langes\\ Beispiel}}}
\put(16,0){\framebox(6,3){Beispiel}} 

%\put(8,0){\framebox(6,3){\parbox[c]{20mm}{sehr langes\\ Beispiel}}}
%\put(16,0){\framebox(6,3){\parbox[c]{20mm}{sehr \\ Beispiel}}}

\put(24,0) {\framebox(6,3){Beispiel}} 

\end{picture} 
\end{document}
Jetzt tritt allerdings das Problem auf, das der Text nicht horizontal zentriert ist. Ich hätte den Text gerne so wie er ist, in sich selbst linksbündig, aber im Bezug auf die framebox mittig. Ich kann natürlich am Längenmaß von parbox spielen, aber dann muss ich das wieder für jede Box einzeln nach Textlänge anpassen (siehe auskommentierten Code). Dabei hatte ich das Längenmaß von parbox extra so gewählt, dass es der Breite von framebox entspricht, weil ich dachte, das bringt mir das gewünschte Ergebnis.

Ich denke, ich brauche statt parbox eine Box, die genau der darin enthaltenen Textbreite entspricht und Zeilenumrüche erlaubt?! Oder gibt es weitere Möglichkeiten?

Beste Grüße, Anja

CollmDante
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 80
Registriert: So 9. Jan 2011, 10:00
Wohnort: Wermsdorf

Beitrag von CollmDante »

In solchen Fällen verwende ich eine Hilfslänge, die ich mit dem Befehl \settowidth auf die Länge der längsten Zeile setze. Sicher könnte man das elegant in einen neuen Befehl umsetzen, dazu fehlte mir aber bisher die Zeit.
\documentclass[ngerman,12pt]{scrartcl}       
\usepackage{babel}
\begin{document} 
\unitlength 5mm
\newlength{\parboxwidthtmp} %Hilfslänge für parbox
\begin{picture}(5,15) 
\put(0,0) {\framebox(6,3){Beispiel}} 
\put(8,0){\framebox(6,3){\settowidth{\parboxwidthtmp}{sehr langes}\parbox{\parboxwidthtmp}{{sehr langes\\ Beispiel}}}} 
\put(16,0){\framebox(6,3){Beispiel}} 
\put(24,0) {\framebox(6,3){Beispiel}} 
\end{picture} 
\end{document} 

Gruß
Jens

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

Beitrag von CrazyHorse »

meep.meep hat geschrieben:Ich denke, ich brauche statt parbox eine Box, die genau der darin enthaltenen Textbreite entspricht und Zeilenumrüche erlaubt?! Oder gibt es weitere Möglichkeiten?
\documentclass[12pt]{scrartcl}      

\begin{document}

\unitlength 5mm
\begin{picture}(5,15)
\put(0,0) {\framebox(6,3){Beispiel}}
\put(8,0){\framebox(6,3){\centering\tabular{@{}l@{}}sehr langes\\ Beispiel\endtabular}}
\put(16,0){\framebox(6,3){Beispiel}}
\put(24,0) {\framebox(6,3){Beispiel}}
\end{picture}

\end{document}
Herbert

meep.meep
Forum-Anfänger
Forum-Anfänger
Beiträge: 45
Registriert: Do 8. Apr 2010, 10:36

Beitrag von meep.meep »

Vielen Dank für eure Hilfe! :)

Ich habe jetzt mit Herberts Lösung gearbeitet, da ich ehrlich gesagt, direkt nach unten gescrollt habe und erst später gesehen habe, dass es tatsächlich zwei Vorschläge gab.

Hab jetzt eine richtig schöne Abbildung, also nochmal Danke! :)

Antworten