Paket „flowfram“ – Wie frage ich die Breite des aktuellen Rahmens ab?

Paket „flowfram“ – Wie frage ich die Breite des aktuellen Rahmens ab?

Ich verwende eine Tabelle innerhalb eines Rahmens, etwa so:

\documentclass{article}

\usepackage{flowfram}
\usepackage[showframe]{geometry}

\newflowframe{0.5\textwidth}{\textheight}{0pt}{0pt}
\newflowframe{0.5\textwidth}{\textheight}{0.5\textwidth}{0pt}

\begin{document}
\begin{tabular}{p{0.2\textwidth}p{0.2\textwidth}}
    First thing & Second thing
\end{tabular}
\framebreak
\begin{tabular}{p{0.2\textwidth}p{0.2\textwidth}}
    Third thing & Fourth thing
\end{tabular}
\end{document}

Ergibt folgendes Layout: Bildbeschreibung hier eingeben

Das ist fast das, was ich will, aber beachten Sie, wie ich 0.2\textwidthdie Größe jedes Tabellenelements spezifiziere. Stattdessen möchte ich die Hälfte der Breite des Rahmens angeben können, ohne dafür meine eigene Länge definieren zu müssen. Etwas in der Art 0.4\framewidthwäre perfekt. Gibt es innerhalb des flowframPakets einen Mechanismus, der es mir ermöglicht, die Breite des aktuellen Rahmens abzufragen?

Antwort1

Dies \textwidthist die Breite der Seite abzüglich der Hauptränder, wobei 1 \columnwidthlediglich die Breite einer Textspalte ist (also dasselbe wie \textwidthbei einspaltigen Seiten, aber etwas weniger als die Hälfte von \textwidthzweispaltigen Seiten).

Aber in anderen Kontexten (der Zelle einer Tabelle, einer Miniseite, einer verschachtelten Liste usw.) kann die Textbreite kleiner als \textwidthoder sein \columnwidth. Hier ist die Breite der Zeile (also ) gefragt, die genauso gut in ein- oder zweispaltigen Texten funktioniert (also gleich und/oder \linewidthsein kann , … oder auch nicht).\textwidth\columnwidth

Daher ist es am „sichersten“, Tabellenspalten mit Breiten zu verwenden, die immer relativ zu sind \linewidth. Wenn Sie eine p{}Spalte von etwa 50 % des Rahmens wünschen, dann p{0.5\linewidth}ist es nahe an Ihrem Ziel,Aber:

  1. Dabei müssen auch die Spaltenabstände ( \tabcolsep) berücksichtigt werden.

  2. Die Tabelle wird wie ein großes Alphabetzeichen platziert. Das heißt, nach einer Leerzeile steht sie wie ein großer Anfangsbuchstabe eines Absatzes und wird daher standardmäßig eingerückt. Daher sollten Sie verwenden \noindentoder alternativ \parindentauf setzen, 0ptum die Einrückung der Tabelle zu vermeiden.

Das MWE:

mwe

\documentclass{article}

\usepackage{flowfram}
\usepackage[showframe]{geometry}

\newflowframe{0.5\textwidth}{\textheight}{0pt}{0pt}
\newflowframe{0.5\textwidth}{\textheight}{0.5\textwidth}{0pt}

\begin{document}

\tabcolsep1em

\noindent\begin{tabular}{|p{\dimexpr 0.5\linewidth-2\tabcolsep}|p{\dimexpr 0.5\linewidth-2\tabcolsep}|}
    First thing & Second thing \\\hline
\end{tabular}

\framebreak

\noindent\begin{tabular}{|p{\dimexpr 0.5\linewidth-2\tabcolsep}|p{\dimexpr 0.5\linewidth-2\tabcolsep}|}
    Third thing & Fourth thing \\\hline
\end{tabular}


\end{document}

Notiz:

Die Tabellen wurden nur „eingesperrt“, um die Breite der vier Zellen besser überprüfen zu können. Nicht unbedingt ein Stilvorschlag ...

Hinweis: Möglicherweise möchten Sie einen Blick auf das tabularxPaket werfen, um die Tabellen wie folgt zu vereinfachen:

\noindent
\begin{tabularx}{\linewidth}{XX}
    First thing & Second thing \\
\end{tabularx}

verwandte Informationen