PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zentrierung in \parbox



DieterH
11-06-2010, 00:10
Hallo,

ich beabsichtige, einen Textvergleich durchzuführen. Dazu setzte ich Text von Version 1 links und rechts daneben den Text der Version 2. Die Textstücke sind nicht allzu groß.

Optisch gesehen scheint es sich um zweispaltigen Text zu handeln; tatsächlich verwende ich pro zu vergleichender Texteinheit drei waagrecht angeordnete \parbox-Elemente. Die linke \parbox nimmt die Texteinheit von Version 1 auf, die rechte \parbox die Texteinheit von Version 2. Die mittlere \parbox (sie ist deutlich schmäler) enthält ein manuell gesetztes Ausrufezeichen (oder ein anderes kurzes Kennzeichen), wenn die Texteinheiten von Version 1 und 2 verschieden sind.

Meine Fragen:

1. Die Überschriftszeile, die ich mit einem ähnlichen Konstrukt setze, soll die Jahreszahlen 2008 (links) und 2010 (rechts) zentriert und in Fettdruck setzen. Trotz \centering und \textbf erreiche ich nicht das gewünschte Ergebnis.

2. Im Makro \YAparbox soll der Inhalt der mittleren \parbox zentriert werden. trotz \centering kein Erfolg.

3. Warum ist die durch YAparboxHL erzeugte Überschriftszeile (siehe PDF-Datei) nach rechts verschoben? Wie richte ich sie bündig aus an den durch \YAparbox erzeugten Zeilen?

Vielen Dank im voraus

Gruss
Dieter

sommerfee
11-06-2010, 07:55
1. Die Überschriftszeile, die ich mit einem ähnlichen Konstrukt setze, soll die Jahreszahlen 2008 (links) und 2010 (rechts) zentriert und in Fettdruck setzen. Trotz \centering und \textbf erreiche ich nicht das gewünschte Ergebnis.

2. Im Makro \YAparbox soll der Inhalt der mittleren \parbox zentriert werden. trotz \centering kein Erfolg.

Da steht \centerline statt \centering im Quelltext, wenn du es durch \centering ersetzt, funktioniert beides.



3. Warum ist die durch YAparboxHL erzeugte Überschriftszeile (siehe PDF-Datei) nach rechts verschoben? Wie richte ich sie bündig aus an den durch \YAparbox erzeugten Zeilen?

Verwende \noindent vor \begin{minipage}.

Liebe Grüße,
Axel

Xenara
11-06-2010, 08:20
Die Lösungsvorschläge hat mir Axel schon vorweggenommen ;)

Nur noch die Frage: Willst du im Hauptdokument dann auch den Textvergleich und zweispaltigen Text auf einer Seite setzen? Wenn ja, sollte man noch etwas an den genauen Maßen der Parboxen basteln.

DieterH
11-06-2010, 10:07
@Sommerfee
@Xenara,

vielen Dank für eure Hinweise.

Die Abmaße für die \parbox-Elemente sind noch richtig zu bemessen, damit sie mit der \multicols-Umgebung dem Auge wohlgefällig übereinstimmen.

Gruss
Dieter

Xenara
11-06-2010, 10:38
Ich hab hier mal etwas mit den Längen gespielt. Die Rahmen der Boxen sind jetzt exakt mit dem Text bündig und die Eintragung in der Mitte hat genau den Platz, der zwischen zwei Spalten leer bleibt. Kommt das für dich hin?



\documentclass{scrbook}
%
\usepackage{ucs}% % Allow Unicode
\usepackage[utf8x]{inputenc}% % Umlaute in der Eingabe
\usepackage[T1]{fontenc}% % Umlaute in der Ausgabe
\usepackage[english,ngerman]{babel}% % Sprachenpaket

\usepackage{multicol}%
\usepackage{blindtext}%
\usepackage{calc}

\newlength{\lenZ}
%

\begin{document}


\begin{multicols}{2}
\blindtext
\end{multicols}

\newcommand{\YAparbox}[3]{%
\noindent%
\begin{minipage}{\textwidth}
\fbox{\parbox[][][c]{(\linewidth-\columnsep)/2-2\fboxsep-2\fboxrule}{#1}}%
\parbox[][][c]{\columnsep}{\centering #2}%
\fbox{\parbox[][][c]{(\linewidth-\columnsep)/2-2\fboxsep-2\fboxrule}{#3}}\\[\lenZ]
\end{minipage}
\normalsize
}%%% END of \YAparbox
%* -*----1----*----2----*----3----*----4----*----5----*----6----*----7--
\newcommand{\YAparboxHL}{%
\noindent%
\begin{minipage}{\textwidth}
\fbox{\parbox[c][][c]{(\linewidth-\columnsep)/2-2\fboxsep-2\fboxrule}{\centering \textbf{2008}}}%
\parbox[][][c]{\columnsep}{\mbox{}}%
\fbox{\parbox[c][][c]{(\linewidth-\columnsep)/2-2\fboxsep-2\fboxrule}{\centering \textbf{2010}}}\\[\lenZ]
\end{minipage}
\normalsize
}%%% END of \YAparboxHL
%* -*----1----*----2----*----3----*----4----*----5----*----6----*----7--
\setlength{\lenZ}{0.48em}

\YAparboxHL
\YAparbox{kurzer Text}{\mbox{!}}{längerer Text bla bla blub blub bla bla blub blub bla bla blub blub}
\YAparbox{links ein längerer Text bla bla blub blub bla bla blub blub bla bla blub blub}{\mbox{!}}{rechts kurzer Text}
\YAparbox{\mbox{}}{\mbox{}}{links nichts}
\YAparbox{rechts nichts}{\mbox{!}}{\mbox{}}

\begin{multicols}{2}
\blindtext
\end{multicols}

\end{document}


Kurze Erklärung dazu: Mit dem calc-Paket können beliebige Längen miteinander verrechnet werden. Daher ist jetzt die Länge der gerahmten Parboxen
(\linewidth-\columnsep)/2-2\fboxsep-2\fboxrule

was nichts anderes heisst als:

Gesamtbreite des einspaltigen Textes minus Breite des Raums zwischen den Spalten in zweispaltigen Text, das dann geteilt durch 2 entspricht einer Spaltenbreite im zweispaltigen Satz.
Von diesem Wert wird 2x der Abstand des fbox-Rahmens vom innenstehenden Text abgezogen (2x, da es ja rechts und links der Fall ist), und dann wird noch 2x die Liniendicke des Rahmens abgezogen (wieder rechts und links).
(Hoffentlich ist das noch einigermassen verständlich.)

DieterH
11-06-2010, 15:06
@Xenara,

ich komme erst am Wochenende dazu, Deine Längenangaben konkret auszuprobieren. Hier am Arbeitsplatz habe ich nur Windoze (engl. "to doze" = dösen), aber kein LaTeX :(

Ich danke Dir für Deine Vorarbeit. Sie wird mir viele Versuche ersparen.
Macht es Sinn, die Kalkulationen nur einmal vorzunehmen und ihr Ergebnis in einer Längenvariablen (z.B. \lenA) abzuspeichern, und ihren Inhalt abzurufen?
Ich vermute, das geht mit einer Anweisung wie

\setlength{\lenA}{....},

wobei mit "..." Deine "Calc"-Anweisung gemeint ist.

Gruss
Dieter

Xenara
11-06-2010, 15:41
Macht es Sinn, die Kalkulationen nur einmal vorzunehmen und ihr Ergebnis in einer Längenvariablen (z.B. \lenA) abzuspeichern, und ihren Inhalt abzurufen?

Gute Idee, daran habe ich gar nicht gedacht :)
Hier funktionierts:



\documentclass{scrbook}
%
\usepackage{ucs}% % Allow Unicode
\usepackage[latin1]{inputenc}% % Umlaute in der Eingabe
\usepackage[T1]{fontenc}% % Umlaute in der Ausgabe
\usepackage[english,ngerman]{babel}% % Sprachenpaket

\usepackage{multicol}%
\usepackage{blindtext}%
\usepackage{calc}

\newlength{\lenZ}
\newlength{\lenA}
%

\begin{document}


\begin{multicols}{2}
\blindtext
\end{multicols}


\setlength{\lenA}{(\linewidth-\columnsep)/2-2\fboxsep-2\fboxrule}

\newcommand{\YAparbox}[3]{%
\noindent%
\begin{minipage}{\textwidth}
\fbox{\parbox[][][c]{\lenA}{#1}}%
\parbox[][][c]{\columnsep}{\centering #2}%
\fbox{\parbox[][][c]{\lenA}{#3}}\\[\lenZ]
\end{minipage}
\normalsize
}%%% END of \YAparbox
%* -*----1----*----2----*----3----*----4----*----5----*----6----*----7--
\newcommand{\YAparboxHL}{%
\noindent%
\begin{minipage}{\textwidth}
\fbox{\parbox[c][][c]{\lenA}{\centering \textbf{2008}}}%
\parbox[][][c]{\columnsep}{\mbox{}}%
\fbox{\parbox[c][][c]{\lenA}{\centering \textbf{2010}}}\\[\lenZ]
\end{minipage}
\normalsize
}%%% END of \YAparboxHL
%* -*----1----*----2----*----3----*----4----*----5----*----6----*----7--
\setlength{\lenZ}{0.48em}

\YAparboxHL
\YAparbox{kurzer Text}{\mbox{!}}{längerer Text bla bla blub blub bla bla blub blub bla bla blub blub}
\YAparbox{links ein längerer Text bla bla blub blub bla bla blub blub bla bla blub blub}{\mbox{!}}{rechts kurzer Text}
\YAparbox{\mbox{}}{\mbox{}}{links nichts}
\YAparbox{rechts nichts}{\mbox{!}}{\mbox{}}

\begin{multicols}{2}
\blindtext
\end{multicols}

\end{document}