Parbox ohne fest vorgeschriebene Größe?

Neue Frage »

Calvin Auf diesen Beitrag antworten »
Parbox ohne fest vorgeschriebene Größe?
Hi allerseits,

ich mache gerade mit tikz ein Ablaufdiagramm. Dazu habe ich z.B. mehrzeiligen, umrandeten Text. Der Text ist in einer parbox. Da ich aus Platzgründen oft Schriftgrößen ändere, ist es mühsam, die Breite der parbox jedes mal anzupassen.

Kann man die Breite in Abhängigkeit der längsten Zeile festmachen?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
\documentclass[a4paper,11pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node (a) [rectangle,draw=black] {\parbox{5cm}{Diese Box\\ist zu breit}};
\end{tikzpicture}
\end{document}
Stefan_K Auf diesen Beitrag antworten »
\pbox
Hallo Calvin,

das pbox-Paket könnte sich dafür eignen.

Viele Grüße,

Stefan
Calvin Auf diesen Beitrag antworten »

Danke Stefan, genau das habe ich gesucht. Perfekt wäre es, wenn man den Text auch noch zentriert darstellen könnte. In der Doku habe ich gesehen, dass pbox mit der tabular-Umgebung arbeitet. Mal schauen, ob ich da fündig werde.
Stefan_K Auf diesen Beitrag antworten »
\pbox und \centering
Hallo Calvin,

pbox verwendet tabular, um die notwendige Breite zu bestimmen, am Ende wird jedoch \parbox benutzt.
\centering funktioniert mit pbox leider nicht ohne weiteres. Man könnte sich jedoch das ausgebende Makro hernehmen und darin \centering eintragen, etwas grob, aber funktionierend:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
\makeatletter
\DeclareRobustCommand{\pb@xiii}[2]{%
  \settominwidth[#1]{\pb@xlen}{#2}%
  \ifthenelse{\equal{\pb@xargi}{}}
    {\parbox{\pb@xlen}{\centering #2}}
    {\ifthenelse{\equal{\pb@xargii}{}}
      {\ifthenelse{\equal{\pb@xargiii}{}}
        {\parbox[\pb@xargi]{\pb@xlen}{\centering #2}}
        {\parbox[\pb@xargi][][\pb@xargiii]{\pb@xlen}{\centering #2}}}
      {\ifthenelse{\equal{\pb@xargiii}{}}
        {\parbox[\pb@xargi][\pb@xargii]{\pb@xlen}{\centering #2}}
        {\parbox[\pb@xargi][\pb@xargii][\pb@xargiii]{\pb@xlen}{\centering #2}}}}%
  \def\pb@xargi\relax
  \def\pb@xargii\relax
  \def\pb@xargiii\relax
  \makebox[0pt]{}}
\makeatother

Der Code zu \pb@xiii ist pbox.sty entnommen.

Stefan
Calvin Auf diesen Beitrag antworten »

Super, vielen Dank. Dass es funktioniert, reicht mir vollkommen.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »