PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrzeilige Box - oder minipage mit automatischer Breitenmessung



badera
22-04-2006, 22:19
Ich möchte in einer eigenen Umgebung verschiedenlange, hartumbrochene (mit \\) Zeilen auf die längste Zeile Zentrieren. (die Zeilen selbst sind alle auf selber höhe (linksbündig) jedoch mit einem bestimmten Abstand von links, so dass eben das gesamte Gebilde auf die länste Zeile zentriert ist)

Das ganze könnte man wie folgt realisieren:


\begin{center}
\begin{minipage}{längeDerLängstenZeile}
Zeile 1 \\
blablasdf bnladsf balsdf \\
nächste Zeile \\
asdf af \\
\end{minipage}
\end{center}


Nur weiss man ja eben die Länge der längsten Zeile nicht!

Gibt es keine Box, (wie mbox), die ja die Breite automatisch anpasst, in welcher aber auch Zeilenumbrüche möglich sind? - oder gibt es eine Möglichkeit, die Breite der Minipage automatisch berechnen zu lassen?
- Adrian

rais
23-04-2006, 16:00
Moin moin,
zu Not könntest Du erstmal so etwas basteln:
\newlength{\bla}
:
\settowidth{\bla}{hier der Text Deiner längsten Zeile}
\centering\begin{minipage}{\bla}
bla
:
blubb
\end{minipage}
(ungetestet)
vgl. latex2e-Doku Abschnitt 2.8.6
MfG,

badera
23-04-2006, 21:20
Vielen Dank rais, auf die Idee bin ich auch bereits gekommen. Allerdings sollte ich eben nicht noch die längste Zeile rausfischen müssen.
Wenn es wirklich nix besseres gibt, muss ich es aber so machen.

- Adrian

rais
24-04-2006, 20:46
Moin moin,
dann so vielleicht?

\centering\begin{tabular}{l}% soll n kleines L sein;)
Zeile 1 \\
blablasdf bnladsf balsdf \\
nächste Zeile \\
asdf af \\
\end{tabular}
MfG,

badera
25-04-2006, 11:09
Prima!! Genau das funktioniert so, entsprechend dem, was ich haben sollte!
Vielen Dank!
- Adrian

topspam
26-07-2008, 21:46
Hallo zusammen,
Ich grabe mal einen alten Thread wieder aus... Ich habe folgendes Problem:
Ich erstelle eine Tabelle mit zwei Spalten. In die erste Spalte kommt eine Parbox (muss so sein, weil eine align-Umgebung hin muss) rein, in die zweite eine weitere Tabelle. Ich möchte nun, dass die Parbox die Breite der ersten Spalte hat und die Tabelle (tabularx) in der zweiten Spalte die Breite der zweiten Spalte.

Ich habe das so gelöst:


\begin{tabular}{m{5cm}m{10cm}}

\parbox{5cm}{\begin{align*}a^2+b^2&=c^2\end{align*}}

&\begin{tabularx}{10cm}{lX}
$a$ & Kathete\\
$b$ & Kathete\\
$c$ & Hypothenuse
\end{tabularx}

\end{tabular}


Schön und gut. Da ich nicht nur Phythagoras habe, möchte ich die erste Spalte mit einer dynamischen Breite erstellen. Jedoch muss auch die Parbox dieselbe Grösse haben. Also quasi so:



\begin{tabularx}{lX}

\parbox{Breite von l}{\begin{align*}a^2+b^2&=c^2\end{align*}}

&\begin{tabularx}{Breite von X}{lX}
$a$ & Kathete\\
$b$ & Kathete\\
$c$ & Hypothenuse
\end{tabularx}

\end{tabularx}


Frage: gibt es eine Möglichkeit dem System das l und X herauszukitzeln?

Ziel und Zweck dieser Darstellung ist, dass bei Formeln die Bedeutung der einzelnen Variablen auf der rechten Seite zu stehen kommen. Dies brauche ich für Zusammenfassungen, wo der Platz beschränkt ist und jede Fläche gebraucht werden muss! ;-)

Ich bedanke mich für eure Vorschläge! Herzliche Grüsse aus der Schweiz.

rais
27-07-2008, 10:29
Moin moin,


Ich erstelle eine Tabelle mit zwei Spalten. In die erste Spalte kommt eine Parbox (muss so sein, weil eine align-Umgebung hin muss) rein,

ich versteh noch nicht so ganz, was Du hier mit einer align*-Umgebung genau bezwecken willst, warum nicht einfach


$a^2+b^2=c^2$
ggf. mit \displaystyle, falls es Dir um die Darstellung ging?
Dann bräuchtest Du noch nicht einmal eine \parbox...


in die zweite eine weitere Tabelle. Ich möchte nun, dass die Parbox die Breite der ersten Spalte hat und die Tabelle (tabularx) in der zweiten Spalte die Breite der zweiten Spalte.
(...)
Dies brauche ich für Zusammenfassungen, wo der Platz beschränkt ist und jede Fläche gebraucht werden muss! ;-)

Und was machst Du, wenn der inneren Tabelle so eine zu kleine Breite vorgegeben wird, die zu Zeilenumbrüchen in dessen zweiter Spalte führt, zieht das Deine Tabelle nicht unnötig in die Länge? Dann schon lieber


\begin{tabular}{@{}ll@{}}
...
\end{tabular}
für die innere Tabelle...

MfG

topspam
27-07-2008, 11:37
Hallo! Herzlichen Dank für deine Antwort!


Moin moin,
ich versteh noch nicht so ganz, was Du hier mit einer align*-Umgebung genau bezwecken willst, warum nicht einfach


$a^2+b^2=c^2$
ggf. mit \displaystyle, falls es Dir um die Darstellung ging?
Dann bräuchtest Du noch nicht einmal eine \parbox...

Ja, das stimmt so, das habe ich am Anfang auch so gemacht. Aber sobald eine Formel im Stil einer Herleitung hat, geht es nicht mehr mit $...$
Beispiel:


s &=1/2 a t^2\\
&=1/2\Delta v/\Delta t t^2






Und was machst Du, wenn der inneren Tabelle so eine zu kleine Breite vorgegeben wird, die zu Zeilenumbrüchen in dessen zweiter Spalte führt, zieht das Deine Tabelle nicht unnötig in die Länge? Dann schon lieber


\begin{tabular}{@{}ll@{}}
...
\end{tabular}
für die innere Tabelle...


Zu Zeilenumbrüchen in der zweiten Spalte wird es so oder so kommen, da hier die Texte u.U. lang werden können. Zeilenumbrüche sind hier sogar erwünscht.

Das Problem wird eher sein, wenn die Formel in der ersten Tabelle zu lang wird und somit kein Platz mehr für die Beschreibung vorhanden ist.

Ich hoffe ich konnte etwas Licht ins dunkel bringen... Herzlichen Dank für deine Antwort! MFG René

rais
27-07-2008, 18:01
Moin moin,


Ja, das stimmt so, das habe ich am Anfang auch so gemacht. Aber sobald eine Formel im Stil einer Herleitung hat, geht es nicht mehr mit $...$
Beispiel:


s &=1/2 a t^2\\
&=1/2\Delta v/\Delta t t^2


warum sollte das nicht mehr gehen?


$\begin{aligned}
...
\end{aligned}$
tut's doch auch -- amsmath lädst Du ja wohl -- sogar in den Standardspalten?
BTW: `1/2 a t^2' sieht gesetzt wie `1/(2 a t^2)' aus ... und wenn ich mich recht an die Kinetik erinnere, dann passt hier imho `\frac{1}{2} a t^2' besser -- aber vllt geht es ja auch um was anderes;-)


Zu Zeilenumbrüchen in der zweiten Spalte wird es so oder so kommen, da hier die Texte u.U. lang werden können. Zeilenumbrüche sind hier sogar erwünscht.

Das Problem wird eher sein, wenn die Formel in der ersten Tabelle zu lang wird und somit kein Platz mehr für die Beschreibung vorhanden ist.

Wenn dem so ist, dann reservierst Du dieser Spalte vllt besser eine Mindestbreite? Sonst kommt hier wohlmöglich eine negative Breite heraus, wenn man denn an die Breite(n) der bisherigen Spalte(n) herankommt und diese von der zur Verfügung stehenden Gesamtbreite abzieht. Afair gab es hier schonmal einen Thread, in dem die Breite einer Tabellenspalte ermittelt wurde -- ggf. lohnt es sich für Dich, hier mal die SuFu anzuwerfen.;-)

MfG

topspam
27-07-2008, 23:46
Hey Rainer


Moin moin,
warum sollte das nicht mehr gehen?


$\begin{aligned}
...
\end{aligned}$
tut's doch auch -- amsmath lädst Du ja wohl -- sogar in den Standardspalten?

Jep, das geht auch so. Was neues gelernt... :-D



BTW: `1/2 a t^2' sieht gesetzt wie `1/(2 a t^2)' aus ... und wenn ich mich recht an die Kinetik erinnere, dann passt hier imho `\frac{1}{2} a t^2' besser -- aber vllt geht es ja auch um was anderes;-)

Ist schon die Kinetikformel... Rein mathematisch ist das korrekt, sonst hätte man Klammern setzten müssen... ;-) Nur wird das "Umgangssprachlich" oft nicht gemacht... ;-) Es ging da aber nur um ein Beispiel...




Wenn dem so ist, dann reservierst Du dieser Spalte vllt besser eine Mindestbreite? Sonst kommt hier wohlmöglich eine negative Breite heraus, wenn man denn an die Breite(n) der bisherigen Spalte(n) herankommt und diese von der zur Verfügung stehenden Gesamtbreite abzieht. Afair gab es hier schonmal einen Thread, in dem die Breite einer Tabellenspalte ermittelt wurde -- ggf. lohnt es sich für Dich, hier mal die SuFu anzuwerfen.;-)
MfG

Ja, das ist gut möglich, dass da mal ein negativer Wert reserviert wird. Aber das ist mir vorläufig auch egal... ;-)

Danke für den Tipp mit der Suchfunktion. Die habe ich aber vor dem Post benutzt und jetzt nochmals. Leider habe ich den betreffenden Thread nicht finden können. Allerdings könnte ich mir vorstellen, dass ich mit



\newlength{\breite}
\settowidth{\breite}{Formel}

weiterkomme. Jedenfalls herzlichen Dank für deine Antworten!
Falls dir der Link zum anderen Thread per Zufall zwischen die Finger kommen würde, wäre ich froh, wenn du ihn hier posten könntest... (Ev. bin ich einfach zu wenig kreativ einen passenden Suchbegriff einzugeben ;-))

Gruss
René