Links- und rechtsbündige Miniseiten mit Tabellenlayout

Links- und rechtsbündige Miniseiten mit Tabellenlayout

Ich versuche, ein Layout mit zwei „Spalten“ zu erstellen, wobei die rechte Spalte selbst zwei Spalten hat, die jeweils rechts- und linksbündig ausgerichtet sind. Zum Beispiel:

This is some text in the first                Label  Foo
column.                               Another Label  Foo Bar Baz

Ich bin mit der Technik vertraut, links- und rechtsbündigen Text in derselben Zeile über minipageUmgebungen zu erstellen. Ich habe diese Idee erweitert und die rechte Spalte so eingerichtet, dass sie eine enthält, um tabularBeschriftungen und Text auszurichten. Hier ist, was ich habe:

\documentclass[letterpaper,12pt]{report}
\usepackage[margin=1in]{geometry}
\begin{document}

\noindent
\begin{minipage}[t]{.49\textwidth}
\flushleft
Some long testing text to illustrate the alignment problem.
\end{minipage}
%
\hfill
%
\noindent
\begin{minipage}[t]{.49\textwidth}
\flushright
\begin{tabular}{r l}
\textbf{Some Long Label} & Bar \\
\textbf{Another Long Label} & Foo Bar Baz \\
\end{tabular}
\end{minipage}

\end{document}

Dies kompiliert undmeistensfunktioniert, bis auf ein Problem: Der obere Rand des Textes in der Tabelle erscheint etwas höher als der obere Rand des Textes auf der linken Miniseite. Ich glaube, das liegt daran, dass tabularvor und nach 's natürlicherweise ein zusätzlicher vertikaler Abstand besteht, aber ich weiß nicht, wie ich das Problem beheben kann.

Meine Frage ist entweder, wie ich meinen Code so anpassen kann, dass die Textzeilen in jeder minipageZeile vertikal angeordnet sind, oder gibt es alternativ eine sauberere Möglichkeit, dieses Layout ohne zu erstellen tabular?

Antwort1

[t]Sie haben vergessen , auch Folgendes zu verwenden tabular:

\documentclass[letterpaper,12pt]{report}
\usepackage[margin=1in]{geometry}
\begin{document}

\noindent
\begin{minipage}[t]{.49\textwidth}
\raggedright
Some long testing text to illustrate the alignment problem.
\end{minipage}% <-- Don't forget this one
%
\hfill
%
\begin{minipage}[t]{.49\textwidth}
\raggedleft
\begin{tabular}[t]{@{} r l @{}}% <-- Don't forget @{}!
\textbf{Some Long Label} & Bar \\
\textbf{Another Long Label} & Foo Bar Baz \\
\end{tabular}
\end{minipage}

\end{document}

Bildbeschreibung hier eingeben

Verwenden Sie \flushleftund niemals \flushrightals Befehle: Sie existieren nur, weil es die Umgebungen flushleftund gibt flushright. Die zu verwendenden Befehle sind \raggedrightund \raggedleft.

Ein einfacherer Ansatz ist mit tabular*:

\documentclass[letterpaper,12pt]{report}
\usepackage[margin=1in,showframe]{geometry}
\begin{document}

\noindent
\begin{tabular*}{\textwidth}{@{}p{.45\textwidth}@{\extracolsep{\fill}}r@{}}
\raggedright
Some long testing text to illustrate the alignment problem.
&
\begin{tabular}[t]{@{}r l@{}}
\textbf{Some Long Label} & Bar \\
\textbf{Another Long Label} & Foo Bar Baz \\
\end{tabular}
\end{tabular*}

\end{document}

Ich habe es showframenur hinzugefügt, um die Ränder anzuzeigen.

Bildbeschreibung hier eingeben

Antwort2

Hier ist eine Lösung, die stattdessen jeweils minipageFolgendes festlegt tabularx:

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
\begin{document}

Some text before.

\noindent
\begin{tabularx}{.5\linewidth}[t]{@{}X@{}}
  Some long testing text to illustrate the alignment problem.
\end{tabularx}%
\begin{tabularx}{.5\linewidth}[t]{%
    >{\raggedleft\bfseries}p{.3\linewidth}
    >{\raggedright\arraybackslash}X@{}}
  Some Long Label & Bar \\
  Another Long Label & Foo Bar Baz
\end{tabularx}%

Some text after.

\end{document}

Die Ausrichtung jeder Spalte wird mit folgendem angegeben:arrayPaketSchnittstelle (geladen vontabularx).

Beachten Sie, dass diese Blöcke die Seitengrenzen nicht überschreiten.

verwandte Informationen