PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : minipage-Höhe auslesen



BenniW
04-06-2007, 23:46
Hallo,
ich melde mich schon wieder...
Wie kann ich die Höhe einer minipage auslesen/ermitteln?
Die Höhe eines Texts ließe sich ja mit /heightof{<text>} ermitteln - aber das bringt mir hier leider reichlich wenig, da sich in der minipage nicht nur Text befindet (wodurch ich das ganze _vllt_ ja abschätzen könnte...).

Vielen Dank für Hinweise!


Viele Grüße,
Benni

BenniW
05-06-2007, 01:03
Hallo,
ich habe eine Teillösung...


\newsavebox\MessBox
\savebox{\MessBox}{ \includegraphics[width=3.81cm]{Bild} }

\ht\MessBox %Zugriff auf die Höhe der Box und somit auf die Höhe des Bildes...

Mein Problem ist nun, dass ich das eigentlich in einen neuen Befehl einarbeiten möchte.
Wie kann ich obiges so ändern, dass der Name der Box (oben: \MessBox) gleich einem Parameter des Befehls ist? (Einfach \MessBox#1 oder so geht nicht!!)

Vielen Dank!!!


Viele Grüße,
Benni

edico
05-06-2007, 06:51
[1] Wofür Du die Höhe brauchst, ist mir nicht klar, da sie sich bei einer minipage 'automatisch' anpasst.
[2] Das Auslesen funktioniert doch - nur ist dein Befehl nicht ganz korrekt, um die Höhe zu drucken:

\documentclass{article}
\begin{document}
\fbox{%
\begin{minipage}{3cm}
\rule{3cm}{3cm}
\end{minipage}
}
\fbox{%
\begin{minipage}{3cm}
\rule{3cm}{6cm}
\end{minipage}
}

\vskip20pt
\newsavebox\MessBox
\savebox{\MessBox}{\rule{20pt}{60pt}}
Breite, Hoehe, Tiefe: \the\wd\MessBox, \the\ht\MessBox, \the\dp\MessBox
\end{document}

edico

BenniW
05-06-2007, 12:49
zu 1): ich möchte zwei minipages nebeneinander setzen - in der einen ist ein Bild und in der anderen ein Text, dessen Absatz unten am Bild ausgerichtet sein soll.

zu 2): Macht das was, dass ich das \the nicht gesetzt hatte? Bei mir hat's ja auch funktioniert... Was ich ja möchte, ist, dass ich das in einen Befehl einbauen kann und dazu muss sich der Name "MessBox" ja ändern lassen (mit Parameter). Wenn ich statt "Messbox" aber "#1" oder so setze, dann funzt's nicht mehr!! <-- Das ist mein Problem!

Noch eine Frage zu deinem Code: wieso setzt du die "minipage"'s noch in "fbox"en?


Vielen Dank,
Benni

edico
05-06-2007, 14:25
zu 1): ich möchte zwei minipages nebeneinander setzen - in der einen ist ein Bild und in der anderen ein Text, dessen Absatz unten am Bild ausgerichtet sein soll.
Benni

...
\begin{minipage}[t]{.6\linewidth}\vspace{0pt}%<<<<<<<<< top aligning
here comes the text
\end{minipage}
\hfill
\begin{minipage}[t]{.3\linewidth}\vspace{0pt}%<<<<<<<<< top aligning
\includegraphics[scale=.1]{lion}\par
{\textsf{Abb.: Ein stattlicher kleiner Lwe.}}
\end{minipage}

\bigskip
\begin{minipage}[b]{.6\linewidth}
here comes the text
\end{minipage}
\hfill
\begin{minipage}[b]{.3\linewidth}
\includegraphics[scale=.1]{lion}\par
{\textsf{Abb.: Ein stattlicher kleiner Lwe.}}
\end{minipage}
...



zu 2): Macht das was, dass ich das \the nicht gesetzt hatte?
Benni
nein - ich hatte Dich nur so verstanden, dass Du den Wert nicht lesen konntest



Noch eine Frage zu deinem Code: wieso setzt du die "minipage"'s noch in "fbox"en?
Benni
Nur zur Demo

edico

BenniW
05-06-2007, 15:06
lool

Ich habe das schon geschafft, dass ich den Text und die Grafik nebeneinander gesetzt habe!!
Mein Problem ist, dass ich den Namen meiner savebox nicht variabel mit einem Parameter belegen kann (ich möchte ja ein "newcommand" machen!!)! Das andere habe ich alles hinbekommen! :-)

Vielen Dank trotzdem für deine bisherigen Bemühungen, edico! Wenn du (oder jemand anderes! :) ) mir da noch helfen könntest (könnte) wäre es super!

Danke,
Benni

edico
06-06-2007, 00:29
... ich weiss nicht, was Du wirklich erreichen willst. Aber vielleicht meinst Du sowas oder kannst es weiterentwickeln:

\documentclass{article}
\usepackage[german]{babel}
\usepackage[latin1]{inputenc}
\usepackage[demo]{graphicx}
\usepackage{multicol,calc}

\def\x{Ich glaube, dass diese Germanen Ureinwohner sind und keineswegs durch die Einwanderung und gastliche Aufnahme fremder Völker vermischt wurden, weil einst nicht über Land, sondern mit einer Flotte herbeikam, wer die Heimat wechseln wollte, und das auf der anderen Seite der Welt liegende Weltmeer wird selten von Schiffen aus unserem Umkreis befahren.
}
\def\xc{Eine lange Bildbeschreibung, die nicht schnell zu erzählen ist.}

\newsavebox{\BildBox}
%
\newcommand{\BILD}[2]{%
\vskip\baselineskip\noindent
\savebox{\BildBox}{\includegraphics[width=.6\linewidth]{#1}}
\begin{minipage}[b]{\wd\BildBox}
\usebox{\BildBox}
\end{minipage}\hfill
\begin{minipage}[b]{\linewidth-1.1\wd\BildBox}
#2
\end{minipage}
\vskip.5\baselineskip
}

\begin{document}
\x
\BILD{duck}{\xc}
\x
\begin{multicols}{2}
\x\x
\BILD{duck}{\xc}
\x
\end{multicols}

\end{document}


edico

BenniW
06-06-2007, 14:20
Hi,
vielen Dank, edico!!! Mein Fehler war, dass ich "\newsavebox{\BildBox}" in den neuen Befehl reingepackt habe und nicht außerhalb, wie es richtig wäre! :)

Danke,
Benni