Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Höhe/Breite einer rotierten Minipage?

59 views
Skip to first unread message

Oliver Pfeiffer

unread,
May 8, 2008, 4:51:37 AM5/8/08
to
Meine Minipage zickt hier irgendwie rum, vielleicht kann mir ja
diesbezüglich jemand weiterhelfen:

Ich möchte nur den Textrahmen innerhalb einer normalen Seite komplett
drehen, die rotierte Minipage soll also exakt denselben Platz ausfüllen,
wie normalerweise der Text bekommt.

1. Wenn ich innerhalb der Minipage auf \textwidth und \textheight zugreife,
scheint es so, als wenn beide denselben Wert haben. Zumindest sehe ich in
unten angehängtem Minimalbeispiel keinen Unterschied zwischen der ersten
und der zweiten Seite.

2. Außerdem möchte ich, dass die Minipage den gesamten verfügbaren Textraum
aufspannt und von oben nach unten befüllt und nicht von unten nach oben
(wie in dem Beispiel). Mit anderen Worten, das "Hello World" sollte
natürlich rechts und nicht links auf der Seite stehen.

Das ganze ist tatsächlich nur ein Minimalbeispiel und somit ist die
Sinnhaftigkeit meiner Anfrage nicht sofort zu erkennen! :) Es geht um die
Ausrichtung bestimmter ganzseitiger Abbildungen, die im Anhang
hintereinander korrekt rotiert werden sollen.

\documentclass{report}
\usepackage{graphicx}
\begin{document}
\rotatebox{-90}{
\begin{minipage}{\textheight}
\centering
\rule{1cm}{0.5\textheight}
\end{minipage}
}
\newpage
\rotatebox{-90}{
\begin{minipage}{\textheight}
\centering
\rule{1cm}{0.5\textwidth}
\end{minipage}
}
\newpage
\rotatebox{-90}{
\begin{minipage}{\textheight}
\centering
Hello World!
\end{minipage}
}
\end{document}

--
Grüße - Regards
Oliver Pfeiffer
ICQ-ID 84320006

Ulrike Fischer

unread,
May 8, 2008, 5:19:11 AM5/8/08
to
Am Thu, 8 May 2008 10:51:37 +0200 schrieb Oliver Pfeiffer:

> Meine Minipage zickt hier irgendwie rum, vielleicht kann mir ja
> diesbezüglich jemand weiterhelfen:
>
> Ich möchte nur den Textrahmen innerhalb einer normalen Seite komplett
> drehen, die rotierte Minipage soll also exakt denselben Platz ausfüllen,
> wie normalerweise der Text bekommt.

Klingt nach sowas (die fbox und die xxx sind nur fürs Sehen da):

\documentclass{report}
\usepackage{graphicx}
\begin{document}

\hbox{}\hfill xxx\rotatebox[origin=lt]{-90}{%
\fboxsep0pt
\fbox{\begin{minipage}{\dimexpr\textheight-2\fboxrule}
\centering
hello word
\end{minipage}}%
}

\end{document}

>
> 1. Wenn ich innerhalb der Minipage auf \textwidth und \textheight zugreife,
> scheint es so, als wenn beide denselben Wert haben. Zumindest sehe ich in
> unten angehängtem Minimalbeispiel keinen Unterschied zwischen der ersten
> und der zweiten Seite.

Minipage setzt innerhalb der \textwidth auf die eigene Breite. Daher ist
bei deinem Beispiel in der minipage 0.5\textwidth=0.5\textheight. Wenn
du \begin{minipage}{6cm} benutzen würdest, wäre dem nicht mehr so.


--
Ulrike Fischer

Oliver Pfeiffer

unread,
May 8, 2008, 5:27:18 AM5/8/08
to
Ulrike Fischer <ne...@nililand.de> wrote in
news:13zxl403...@nililand.de:

Ok, das mit dem \hbox\hfill funktioniert ja schonmal prächtig! :))

> Minipage setzt innerhalb der \textwidth auf die eigene Breite. Daher ist
> bei deinem Beispiel in der minipage 0.5\textwidth=0.5\textheight. Wenn
> du \begin{minipage}{6cm} benutzen würdest, wäre dem nicht mehr so.

Wie komme ich denn dann innerhalb der Minipage an die \textwidth der
umliegenden Seite?

Ulrike Fischer

unread,
May 8, 2008, 5:45:43 AM5/8/08
to
Am Thu, 8 May 2008 11:27:18 +0200 schrieb Oliver Pfeiffer:

> Ulrike Fischer <ne...@nililand.de> wrote in
> news:13zxl403...@nililand.de:
>
> Ok, das mit dem \hbox\hfill funktioniert ja schonmal prächtig! :))
>
>> Minipage setzt innerhalb der \textwidth auf die eigene Breite. Daher ist
>> bei deinem Beispiel in der minipage 0.5\textwidth=0.5\textheight. Wenn
>> du \begin{minipage}{6cm} benutzen würdest, wäre dem nicht mehr so.
>
> Wie komme ich denn dann innerhalb der Minipage an die \textwidth der
> umliegenden Seite?

Du musst den Wert halt vorher abspeichern.

Wenn du nur die Minipage aufblähen willst, kannst du sowas machen:

\documentclass{report}
\usepackage{graphicx}
\begin{document}

\noindent\hbox{}\hfill\rotatebox[origin=lt]{-90}{%
\fboxsep0pt

\fbox{\begin{minipage}[t][\dimexpr\textwidth-2\fboxrule]{\dimexpr\textheight-2\fboxrule}


\centering
hello word
\end{minipage}}%
}

\end{document}


--
Ulrike Fischer

Oliver Pfeiffer

unread,
May 8, 2008, 5:59:31 AM5/8/08
to
Ulrike Fischer <ne...@nililand.de> wrote in
news:r9xb06d1...@nililand.de:

> Du musst den Wert halt vorher abspeichern.

Ok, habe ich gemacht. Aber scheinbar sind die Werte vorher auch schon
identisch gewesen!? Die beiden Rechtecke sind immer noch identisch! :(

\documentclass{report}
\usepackage{graphicx}
\begin{document}

\newcommand{\oldtextwidth}{\textwidth}
\newcommand{\oldtextheight}{\textheight}


\rotatebox{-90}{
\begin{minipage}{\textheight}
\centering

\rule{1cm}{0.5\oldtextheight}


\end{minipage}
}
\newpage
\rotatebox{-90}{
\begin{minipage}{\textheight}
\centering

\rule{1cm}{0.5\oldtextwidth}
\end{minipage}
}
\end{document}

Ulrike Fischer

unread,
May 8, 2008, 6:29:26 AM5/8/08
to
Am Thu, 8 May 2008 11:59:31 +0200 schrieb Oliver Pfeiffer:


>> Du musst den Wert halt vorher abspeichern.
>
> Ok, habe ich gemacht. Aber scheinbar sind die Werte vorher auch schon
> identisch gewesen!? Die beiden Rechtecke sind immer noch identisch! :(
>
> \documentclass{report}
> \usepackage{graphicx}
> \begin{document}
> \newcommand{\oldtextwidth}{\textwidth}
> \newcommand{\oldtextheight}{\textheight}

So geht das nicht. Speichere den Wert in einem neuen Längenregister.

Ich habe übrigens gerade bemerkt, dass \rotatebox keine Leerzeilen im
Argument akzeptiert. Du solltest also die minipage besser vorher in
einem Boxregister abspeichern.

--
Ulrike Fischer

Oliver Pfeiffer

unread,
May 8, 2008, 6:44:11 AM5/8/08
to
Ulrike Fischer <ne...@nililand.de> wrote in
news:8rx25oqzspmb$.d...@nililand.de:

>> \documentclass{report}
>> \usepackage{graphicx}
>> \begin{document}
>> \newcommand{\oldtextwidth}{\textwidth}
>> \newcommand{\oldtextheight}{\textheight}
>
> So geht das nicht. Speichere den Wert in einem neuen Längenregister.

Supi, jetzt klappt es und wieder ne Menge dazu gelernt!

\newlength{\oldtextwidth}
\setlength{\oldtextwidth}{\textwidth}
\newlength{\oldtextheight}
\setlength{\oldtextheight}{\textheight}

> Ich habe übrigens gerade bemerkt, dass \rotatebox keine Leerzeilen im
> Argument akzeptiert. Du solltest also die minipage besser vorher in
> einem Boxregister abspeichern.

Das ist zum Glück in meinem Echtszenario kein Problem!

Vielen Lieben Dank!

Oliver Pfeiffer

unread,
May 8, 2008, 7:14:41 AM5/8/08
to
Ulrike Fischer <ne...@nililand.de> wrote in
news:8rx25oqzspmb$.d...@nililand.de:

> So geht das nicht. Speichere den Wert in einem neuen Längenregister.

Meine Minipage ist übrigends immer einen ganz kleinen Tick zu breit. Nur
aus reiner Neugierde, kannst Du mir sagen, was man von der Breite abziehen
muss, damit keine Warnings beim Compilieren erscheinen?

Es reicht aus, die Minipage 2% kleiner in der Breite zu definieren, damit
TeX nicht mehr meckert!

\documentclass{report}
\usepackage{graphicx}
\begin{document}

\begin{figure}
\setlength{\oldtextwidth}{\textwidth}
\setlength{\oldtextheight}{\textheight}
\centering
\rotatebox[origin=lt]{-90}{
\begin{minipage}{0.98\oldtextheight}
\centering
\includegraphics[width=1\oldtextheight]{figures/test.pdf}
\end{minipage}
}
\end{figure}

Ulrike Fischer

unread,
May 8, 2008, 7:54:23 AM5/8/08
to
Am Thu, 8 May 2008 13:14:41 +0200 schrieb Oliver Pfeiffer:

> Ulrike Fischer <ne...@nililand.de> wrote in
> news:8rx25oqzspmb$.d...@nililand.de:
>
>> So geht das nicht. Speichere den Wert in einem neuen Längenregister.
>
> Meine Minipage ist übrigends immer einen ganz kleinen Tick zu breit. Nur
> aus reiner Neugierde, kannst Du mir sagen, was man von der Breite abziehen
> muss, damit keine Warnings beim Compilieren erscheinen?

Du solltest auf Leerzeichen achten.

> \documentclass{report}
> \usepackage{graphicx}
> \begin{document}
> \begin{figure}
> \setlength{\oldtextwidth}{\textwidth}
> \setlength{\oldtextheight}{\textheight}
> \centering

> \rotatebox[origin=lt]{-90}{%
^

> \begin{minipage}{0.98\oldtextheight}
> \centering
> \includegraphics[width=1\oldtextheight]{figures/test.pdf}

> \end{minipage}%
^


--
Ulrike Fischer

Oliver Pfeiffer

unread,
May 8, 2008, 7:57:28 AM5/8/08
to
Oliver Pfeiffer <oliver....@gmx.net> wrote in
news:Xns9A988DE984AAFol...@pfeiffer.myfqdn.de:

> Die sind nur noch das Zusammenschneiden zum Minimalbeispiel

noch = durch

Oliver Pfeiffer

unread,
May 8, 2008, 7:56:57 AM5/8/08
to
Ulrike Fischer <ne...@nililand.de> wrote in
news:1g5i75t2...@nililand.de:

> Du solltest auf Leerzeichen achten.

Die sind nur noch das Zusammenschneiden zum Minimalbeispiel entstanden, im
Original sind keine abschließenden Leerzeichen am Ende einer Zeile
vorhanden. Lediglich die Tabulatoren zum Einrücken!

Karsten Neumann

unread,
May 8, 2008, 8:01:05 AM5/8/08
to
Oliver Pfeiffer schrieb:

> Meine Minipage ist übrigends immer einen ganz kleinen Tick zu breit.

Ich vermute mal, LaTeX interpretiert das Zeilenende vor und nach der
Minipage als Leerzeichen. Daher einfach mit % abschließen.

> \documentclass{report}
> \usepackage{graphicx}
> \begin{document}
> \begin{figure}
> \setlength{\oldtextwidth}{\textwidth}
> \setlength{\oldtextheight}{\textheight}
> \centering

> \rotatebox[origin=lt]{-90}{% <--hier einmal


> \begin{minipage}{0.98\oldtextheight}
> \centering
> \includegraphics[width=1\oldtextheight]{figures/test.pdf}

> \end{minipage}% <-- und hier einmal
> }
> \end{figure}
> \end{document}
>

Ulrike Fischer

unread,
May 8, 2008, 8:07:51 AM5/8/08
to
Am Thu, 8 May 2008 13:56:57 +0200 schrieb Oliver Pfeiffer:


>> Du solltest auf Leerzeichen achten.
>
> Die sind nur noch das Zusammenschneiden zum Minimalbeispiel entstanden, im
> Original sind keine abschließenden Leerzeichen am Ende einer Zeile
> vorhanden. Lediglich die Tabulatoren zum Einrücken!

Nun, ich kann nicht wissen, wo bei dir vielleicht noch weitere
überflüssige Leerzeichen sind oder woran es sonst hakt. Dein
Minimalbeispiel ist ja nicht lauffähig. Sende nie ein Minimalbeispiel
ohne es wenigstens einmal zu testen! Und ersetze die Bilder durch
\rule-Befehle.

--
Ulrike Fischer

Oliver Pfeiffer

unread,
May 8, 2008, 8:21:00 AM5/8/08
to
Karsten Neumann <karsten...@stud.tu-ilmenau.de> wrote in
news:fvupu1$l2q$1...@inn-newsserver.rz.tu-ilmenau.de:

> Ich vermute mal, LaTeX interpretiert das Zeilenende vor und nach der
> Minipage als Leerzeichen. Daher einfach mit % abschließen.

Nachdem ich alle Zeilen mit % abgeschlossen habe, funktioniert es
tatsächlich. Das gibt mir jetzt zu denken, da dort eigentlich keine
Leerzeichen an Ende waren.

Welche Zeilen sollte man denn mit % abschließen, wenn sogar Newlines zu
solchen Effekten führen können? Gibt es da eine Empfehlung?

Oliver Pfeiffer

unread,
May 8, 2008, 8:19:50 AM5/8/08
to
Ulrike Fischer <ne...@nililand.de> wrote in
news:1jhtqo3n...@nililand.de:

> Nun, ich kann nicht wissen, wo bei dir vielleicht noch weitere
> überflüssige Leerzeichen sind oder woran es sonst hakt.

Ok, der Tipp mit den Leerzeichen hat definitiv geholfen. Wenn ich alle
Einrückungen entferne und alle Zeilen mit % abschließe und die Kommentare
rausnehme, dann klappt es! Jetzt taste ich mich mal weiter ran. Darauf wäre
ich übrigends nie gekommen.

> Dein Minimalbeispiel ist ja nicht lauffähig. Sende nie ein
> Minimalbeispiel ohne es wenigstens einmal zu testen! Und ersetze
> die Bilder durch \rule-Befehle.

Urks, da hatte ich den erst später geänderten \newlength Befehl vergessen.
Die Bilder durch \rule zu ersetzen, ist ein guter Hinweis!

Oliver Pfeiffer

unread,
May 8, 2008, 8:42:41 AM5/8/08
to
Ulrike Fischer <ne...@nililand.de> wrote in
news:1jhtqo3n...@nililand.de:

> Und ersetze die Bilder durch \rule-Befehle.

Ok, ich habe zwischenzeitlich noch rausgefunden, dass die verbleibenden 21
Warnings ausschließlich nur noch bei den PDF Abbildungen kommen, die exakt
die Größe des Textrahmen ausfüllen. Das ganze lässt sich mit einer \rule
leider nicht reproduzieren.

\documentclass{report}%
\usepackage{graphicx}%
\begin{document}%
\begin{figure}[htbp]%
\includegraphics[width=1\textwidth,height=1\textheight]%
{figures/uni-logo.pdf}%
\end{figure}%
\end{document}%

Karsten Neumann

unread,
May 8, 2008, 9:27:31 AM5/8/08
to
Oliver Pfeiffer schrieb:

> Nachdem ich alle Zeilen mit % abgeschlossen habe, funktioniert es
> tatsächlich. Das gibt mir jetzt zu denken, da dort eigentlich keine
> Leerzeichen an Ende waren.

Am Ende der Zeile ist aber ein Zeilenwechsel-Zeichen, dass durch den
Druck auf Enter eingegeben wird. Das ist gleichbedeutend wie ein
Leerzeichen für LaTeX. Zwei davon aufeinander sind gleichbedeutend einem
Absatz bzw. einem \par.

> Welche Zeilen sollte man denn mit % abschließen, wenn sogar Newlines zu
> solchen Effekten führen können? Gibt es da eine Empfehlung?

Immer die Zeilen mit % abschließen, bei denen das Leerzeichen nicht
gewünscht wird, sprich wenn zwei Elemente direkt aufeinander folgen
sollen. Bei dir ist der Fall gegeben durch die gewünschte Gleichheit der
minipage-Breite mit der Zeilenbreite.

Ob es allgemeine Empfehlungen gibt weiss ich nicht. Entfernen tue ich es
immer dann, wenn es einen Hinweis gibt, dann ist es halt wichtig zu
wissen, dass übervolle Boxen an solch einem unbeabsichtigten Abstand
liegen können.


Karsten

Ulrike Fischer

unread,
May 8, 2008, 9:32:19 AM5/8/08
to
Am Thu, 8 May 2008 14:42:41 +0200 schrieb Oliver Pfeiffer:


>> Und ersetze die Bilder durch \rule-Befehle.
>
> Ok, ich habe zwischenzeitlich noch rausgefunden, dass die verbleibenden 21
> Warnings ausschließlich nur noch bei den PDF Abbildungen kommen, die exakt
> die Größe des Textrahmen ausfüllen. Das ganze lässt sich mit einer \rule
> leider nicht reproduzieren.

Dann ist es wahrscheinlich ein Rundungsfehler. Nimm 0.999\textwidth.

--
Ulrike Fischer

Oliver Pfeiffer

unread,
May 8, 2008, 9:38:27 AM5/8/08
to
Ulrike Fischer <ne...@nililand.de> wrote in
news:v7nizhsdtpbn$.d...@nililand.de:

> Dann ist es wahrscheinlich ein Rundungsfehler. Nimm 0.999\textwidth.

Ok, ich hatte gedacht, ich müsste vielleicht noch irgendeine Einrückung
oder Rahmenbreite abziehen, von der ich nichts weiß. Dann kann ich ja guten
Gewissens 0.999 nehmen! :)

Ulrike Fischer

unread,
May 8, 2008, 9:44:28 AM5/8/08
to
Am Thu, 8 May 2008 14:21:00 +0200 schrieb Oliver Pfeiffer:


> Nachdem ich alle Zeilen mit % abgeschlossen habe, funktioniert es
> tatsächlich. Das gibt mir jetzt zu denken, da dort eigentlich keine
> Leerzeichen an Ende waren.
>
> Welche Zeilen sollte man denn mit % abschließen, wenn sogar Newlines zu
> solchen Effekten führen können? Gibt es da eine Empfehlung?

Nun
ein%
fach
alle
bei
denen
du
bei
normalem
Text e%
in Leer%
zeichen
erwarten
würdest%
, aber keins willst.

--
Ulrike Fischer

Oliver Pfeiffer

unread,
May 8, 2008, 9:47:22 AM5/8/08
to
Ulrike Fischer <ne...@nililand.de> wrote in
news:3gd9gdwo...@nililand.de:

> Nun
> ein%
> fach
> alle
> bei
> denen
> du
> bei
> normalem
> Text e%
> in Leer%
> zeichen
> erwarten
> würdest%
> , aber keins willst.

;))

Bei Kommandosequenzen ist es allerdings nicht mehr ganz so offensichtlich!

Axel Berger

unread,
May 8, 2008, 1:04:00 PM5/8/08
to
*Ulrike Fischer* wrote on Thu, 08-05-08 13:54:

>Du solltest auf Leerzeichen achten.

>> \rotatebox[origin=lt]{-90}{%
>> \begin{minipage}{0.98\oldtextheight}

Hilf mir bitte:
Ich sehe sehr oft in vielen Beispielen das Prozent am Zeilenende und
die Folgezeile ist eingerückt. Irgendwie habe ich das Gefühl, das muß
Unsinn sein. Das Prozent hat sicher einen gewissen Sinn, um optisch auf
die Fortsetzung hinzuweisen, aber einen echten Wert kann es eigentlich
nicht haben, oder?

Oliver Pfeiffer

unread,
May 9, 2008, 10:20:13 AM5/9/08
to
Axel_...@b.maus.de (Axel Berger) wrote in
news:200805081...@b.maus.de:

> Ich sehe sehr oft in vielen Beispielen das Prozent am Zeilenende und
> die Folgezeile ist eingerückt. Irgendwie habe ich das Gefühl, das muß
> Unsinn sein. Das Prozent hat sicher einen gewissen Sinn, um optisch auf
> die Fortsetzung hinzuweisen, aber einen echten Wert kann es eigentlich
> nicht haben, oder?

Wenn Du ein paar Postings rauf und runter in diesem Thread liest, dann
erschließt sich die Antwort sofort ...

Ulrike Fischer

unread,
May 9, 2008, 10:45:50 AM5/9/08
to

Doch.

\documentclass[]{scrreprt}
\usepackage{graphicx}


\begin{document}
\fbox{\rotatebox{180}{
a}}


\fbox{\rotatebox{180}{
a
}}

\fbox{\rotatebox{180}{%
a%

Axel Berger

unread,
May 9, 2008, 7:38:00 PM5/9/08
to
*Ulrike Fischer* wrote on Fri, 08-05-09 16:45:
>Doch.

Danke, das ist eindeutig. Ist dieses abweichende Verhalten von
Leerzeichen am Zeilenanfang irgendwo dokumentiert? Ich kann mich nicht
erinnern, je irgendwo einen Hinweis gesehen zu haben.

Ulrike Fischer

unread,
May 10, 2008, 8:39:20 AM5/10/08
to
Am Sat, 10 May 2008 01:38:00 +0200 schrieb Axel Berger:


> Danke, das ist eindeutig. Ist dieses abweichende Verhalten von
> Leerzeichen am Zeilenanfang irgendwo dokumentiert? Ich kann mich nicht
> erinnern, je irgendwo einen Hinweis gesehen zu haben.

TeX-Book Kapitel 8.


--
Ulrike Fischer

Oliver Pfeiffer

unread,
May 12, 2008, 9:13:12 AM5/12/08
to
Ulrike Fischer <ne...@nililand.de> wrote in
news:13zxl403...@nililand.de:

> Klingt nach sowas (die fbox und die xxx sind nur fürs Sehen da):
>
> \documentclass{report}
> \usepackage{graphicx}
> \begin{document}
> \hbox{}\hfill xxx\rotatebox[origin=lt]{-90}{%
> \fboxsep0pt
> \fbox{\begin{minipage}{\dimexpr\textheight-2\fboxrule}
> \centering
> hello word
> \end{minipage}}%
> }
>
>
> \end{document}

In Anlehnung an dieses Beispiel würde mich interessieren, wie man eine
Textbox mit exakter Angabe von Breite *und* Höhe spezifizieren kann, in der
dann der Text horizontal/vertikal zentriert erscheint und sich nach
links/rechts (langer Text) und oben/unten (mehrzeiliger Text) ausbreitet?
Zweiteres wäre schön, aber nicht ganz so wichtig.

Ich habe hier schon diverse Varianten ausprobiert (vspaces in parbox etc.),
aber nichts funktioniert so wie ich es brauche ... :(

Ulrich M. Schwarz

unread,
May 12, 2008, 10:11:22 AM5/12/08
to

\parbox und minipage haben mehr Argumente, als man denkt:

\documentclass{article}

\begin{document}
Das folgende ist
\fbox{%
\begin{minipage}[t][8cm][c]{5cm}\centering
Mittenmang

Wirklich
\end{minipage}%
}%
\end{document}

HTH
Ulrich
--
'Nerd' is a word just like 'legacy' - not usually meant as a compliment
by those who use it but aren't _in_ it, but to people in the know it
means you've got all your priorities straight and can have a blast
without having to worry about being fashionable. (M. Wiltink)

Oliver Pfeiffer

unread,
May 12, 2008, 10:30:20 AM5/12/08
to
"Ulrich M. Schwarz" <broth...@gmx.net> wrote in
news:1092.4828...@absatzen.de:

> \parbox und minipage haben mehr Argumente, als man denkt:

Hey klasse, das wußte ich nicht und hilft mir definitiv an verschiedenen
Stellen weiter -- danke!

Lediglich die Einfärbung einer Bytefield Zelle funktioniert damit nicht so
wirklich gut, ich hatte gehofft, das könnte damit auch gleich erschlagen:

\documentclass{article}
\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel} % \usepackage{ngerman}
\usepackage{colortbl}
\usepackage{bytefield}
\begin{document}
\ttfamily\noindent\begin{bytefield}{16}
\bitheader{0,8,16} \\
\bitbox{8}{%
\colorbox{red}{\parbox[t][\height][c]{\width}{\centering Type}}%
}&
\bitbox{8}{\# of nodes}\\
\end{bytefield}\normalfont\\
\end{document}

Andreas Matthias

unread,
May 12, 2008, 11:27:47 AM5/12/08
to
Oliver Pfeiffer wrote:

Du musste zum einen noch \fboxsep auf 0pt setzen und zum anderen
\height zwischenspeichern.

\bitbox{8}{%
\setlength\fboxsep{0pt}%
\setlength\myheight{\height}%
\colorbox{red}{\parbox[t][\myheight][c]{\width}{\centering Type}}%
}&


Ciao
Andreas

Oliver Pfeiffer

unread,
May 12, 2008, 11:53:10 AM5/12/08
to
Andreas Matthias <am...@kabsi.at> wrote in news:j84mf5-
td6...@buckbeak.hogwarts:

> Du musste zum einen noch \fboxsep auf 0pt setzen und zum anderen
> \height zwischenspeichern.
>
> \bitbox{8}{%
> \setlength\fboxsep{0pt}%
> \setlength\myheight{\height}%
> \colorbox{red}{\parbox[t][\myheight][c]{\width}{\centering Type}}%
> }&

Warum geht denn \height verloren? Ich dachte das wäre eine Variable von
Bitbox, oder wird die von Color-/Parbox überschrieben?

Problem ist jetzt nur noch die vertikale Ausrichtung, wenn ich die Parbox
auf [b] setze, dann klebt das e unten, wenn vertikal zentriert, dann stimmt
die Grundlinie nicht mehr.

\documentclass{article}
\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel} % \usepackage{ngerman}
\usepackage{colortbl}
\usepackage{bytefield}
\begin{document}

\newlength{\bitboxheight}
\noindent\begin{bytefield}{5}
\bitheader{0-4}\\
\ttfamily
\bitbox{1}{l}&
\bitbox{1}{e}&
\bitbox{1}{l}&
\bitbox{1}{%
\setlength{\fboxsep}{0pt}%
\setlength{\bitboxheight}{\height}%
\colorbox{red}{\parbox[b][\bitboxheight][c]%
{\width}{\centering e}}%
}&
\bitbox{1}{%
\setlength{\fboxsep}{0pt}%
\setlength{\bitboxheight}{\height}%
\colorbox{red}{\parbox[b][\bitboxheight][c]%
{\width}{\centering l}}%


}\\
\end{bytefield}\normalfont\\
\end{document}

--

Andreas Matthias

unread,
May 12, 2008, 12:40:07 PM5/12/08
to
Oliver Pfeiffer wrote:

> Problem ist jetzt nur noch die vertikale Ausrichtung, wenn ich die Parbox
> auf [b] setze, dann klebt das e unten, wenn vertikal zentriert, dann stimmt
> die Grundlinie nicht mehr.

Das ist ein Designfehler von bytefield.


\documentclass[a4paper]{article}
\usepackage{bytefield}

\begin{document}

\begin{bytefield}{3}


\bitbox{1}{l} &
\bitbox{1}{e} &

\bitbox{1}{g}
\end{bytefield}

\end{document}


Ciao
Andreas

Oliver Pfeiffer

unread,
May 12, 2008, 1:05:17 PM5/12/08
to
Andreas Matthias <am...@kabsi.at> wrote in news:8g8mf5-
f77...@buckbeak.hogwarts:

> Das ist ein Designfehler von bytefield.

Ja, sieht echt schrecklich aus. Kann man das denn irgendwie mit der parbox
lösen, wo das Beispiel schon so weit gereift ist?! :)

Wenn man der Colorbox schon die Höhe mitgeben könnte, dann könnte die
Parbox immer fest auf 1,5ex stehen und dann würde die Höhe des Textes keine
Rolle mehr für die Positionierung spielen? Oder fällt Dir eine saubere
Lösung für das Problem ein?

Oliver Pfeiffer

unread,
May 12, 2008, 1:15:11 PM5/12/08
to
Oliver Pfeiffer <oliver....@gmx.net> wrote in
news:Xns9A9CC2317FBA4ol...@pfeiffer.myfqdn.de:

> Wenn man der Colorbox schon die Höhe mitgeben könnte, dann könnte die
> Parbox immer fest auf 1,5ex stehen und dann würde die Höhe des Textes
> keine Rolle mehr für die Positionierung spielen? Oder fällt Dir eine
> saubere Lösung für das Problem ein?

Mir ist bei der vollständigen Parametrisierung der Parbox leider nicht
klar, wofür das erste [t] steht (eigentlich für Ausrichtung der oberen
Textzeile mit Umgebung) aber im letzten Parameter [c] gebe ich ja die
vertikale Ausrichtung an, was für eine Bedeutung hat denn das [t] dann
noch?

Oliver Pfeiffer

unread,
May 12, 2008, 2:46:00 PM5/12/08
to

> Ja, sieht echt schrecklich aus. Kann man das denn irgendwie mit der


> parbox lösen, wo das Beispiel schon so weit gereift ist?! :)

Nach einem Experimentieren, bin ich darauf gekommen, dass man bloß vor und
hinter dem Zeichen eine unsichtbare Rule mit voller Höhe erstellen braucht!

\rule{0pt}{1.5ex}

Dabei würde mich noch interessieren, wie ich die volle Höhe eines 'W'
Buchstaben der aktuellen Schrift errechnen kann? 1ex ist bei mir nur die
Höhe eines 'e' ...

Andreas Matthias

unread,
May 12, 2008, 5:03:38 PM5/12/08
to
Oliver Pfeiffer wrote:

> Oliver Pfeiffer <oliver....@gmx.net> wrote in
> news:Xns9A9CC2317FBA4ol...@pfeiffer.myfqdn.de:
>
>> Ja, sieht echt schrecklich aus. Kann man das denn irgendwie mit der
>> parbox lösen, wo das Beispiel schon so weit gereift ist?! :)
>
> Nach einem Experimentieren, bin ich darauf gekommen, dass man bloß vor und
> hinter dem Zeichen eine unsichtbare Rule mit voller Höhe erstellen braucht!
>
> \rule{0pt}{1.5ex}

Gute Idee. Aber die Unterlänge solltest du auch noch angeben.


\documentclass[a4paper]{article}
\usepackage{colortbl}
\usepackage{bytefield}

\makeatletter
\newdimen\myheight
\let\orig@bitbox\bitbox
\renewcommand\bitbox[3][]{%
\orig@bitbox{#2}{%


\setlength\fboxsep{0pt}%
\setlength\myheight{\height}%

\ifx\\#1\\\expandafter\@thirdofthree\fi
\colorbox{#1}{\parbox[b][\myheight][c]{\width}{%
\rule[-.3\myheight]{\z@}{\myheight}\centering #3}}}}
\makeatother


\begin{document}

\begin{bytefield}{16}
\bitheader{0,8,16} \\

\bitbox[red]{1}{l}&
\bitbox[blue]{1}{e}&
\bitbox[red]{1}{g} &
\bitbox[red]{5}{Type} &


\bitbox{8}{\# of nodes}\\
\end{bytefield}

\end{document}


> Dabei würde mich noch interessieren, wie ich die volle Höhe eines 'W'
> Buchstaben der aktuellen Schrift errechnen kann?

Gar nicht. Zumindest nicht exakt. TeX kennt nur die Metriken (`Bounding
Box') eines Zeichens. Sehr oft ragen Zeichen jedoch über diese Box
hinaus. Meist nur geringfügig, aber es gibt auch Schriften, bei denen
zum Beispiel der Unterstrich eines Q das gesamte Wort unterstreicht.
Die Abmessungen einer Box erhält man so:

\newsavebox{\mybox}
\savebox{\mybox}{W}
\showthe\wd\mybox
\showthe\ht\mybox
\showthe\dp\mybox

\savebox{\mybox}{p}
\showthe\wd\mybox
\showthe\ht\mybox
\showthe\dp\mybox

> 1ex ist bei mir nur die Höhe eines 'e' ...

Auch nur ungefähr. 1ex ist nur eine Designgröße, es muss nicht exakt
der Höhe eines Kleinbuchstaben entsprechen.


Ciao
Andreas

Oliver Pfeiffer

unread,
May 12, 2008, 5:52:03 PM5/12/08
to
Andreas Matthias <am...@kabsi.at> wrote in news:aunmf5-
dsb...@buckbeak.hogwarts:

> Gute Idee. Aber die Unterlänge solltest du auch noch angeben.

Das war in meiner Idee inbegriffen, in meinen Fähigkeiten nicht! :) Ich
teXe erst seit ein paar Tagen.


> \makeatletter
> \newdimen\myheight
> \let\orig@bitbox\bitbox
> \renewcommand\bitbox[3][]{%
> \orig@bitbox{#2}{%
> \setlength\fboxsep{0pt}%
> \setlength\myheight{\height}%
> \ifx\\#1\\\expandafter\@thirdofthree\fi
> \colorbox{#1}{\parbox[b][\myheight][c]{\width}{%
> \rule[-.3\myheight]{\z@}{\myheight}\centering #3}}}}
> \makeatother

Den Auszug habe ich mir gerade ausgedruckt und an die Wand gehängt! Respekt
und DANKE!

Oliver Pfeiffer

unread,
May 13, 2008, 4:03:12 AM5/13/08
to
Andreas Matthias <am...@kabsi.at> wrote in news:aunmf5-
dsb...@buckbeak.hogwarts:

> Gute Idee. Aber die Unterlänge solltest du auch noch angeben.

Hier noch ein überarbeitetes Beispiel. So kann man pro Zelle noch die
horizontale Ausrichtung angeben und mehrzeilig geht jetzt auch.

\documentclass[a4paper]{article}

\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel} % \usepackage{ngerman}

\usepackage{colortbl}
\usepackage{bytefield}

\makeatletter
\newdimen\myheight
\let\orig@bitbox\bitbox
\renewcommand\bitbox[3][]{%
\orig@bitbox{#2}{%
\setlength\fboxsep{0pt}%
\setlength\myheight{\height}%
\ifx\\#1\\\expandafter\@thirdofthree\fi
\colorbox{#1}{\parbox[b][\myheight][c]{\width}{%

\rule{\z@}{3ex}\\#3\\\rule{\z@}{3ex}}}}}
\makeatother

\begin{document}
\setlength{\byteheight}{10ex}


\begin{bytefield}{16}
\bitheader{0,8,16}\\

\bitbox[red]{1}{\centering l}&
\bitbox[blue]{1}{}&
\bitbox[red]{1}{\centering g} &


\bitbox[red]{5}{Type} &

\bitbox{8}{\centering \# of nodes\\\# of nodes}\\
\end{bytefield}
\end{document}


0 new messages