パッケージ `flowfram` - 現在のフレームの幅を照会するにはどうすればよいですか?

パッケージ `flowfram` - 現在のフレームの幅を照会するにはどうすればよいですか?

私はフレーム内で次のような表形式を使用しています:

\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}

結果は次のレイアウトになります。 ここに画像の説明を入力してください

これはほぼ私が望んでいることですが、0.2\textwidth各表メンバーのサイズを指定するために を使用していることに注意してください。代わりに、フレームの幅の半分を指定できるようにしたいのですが、そのために独自の長さを定義する必要はありません。 のようなものが0.4\framewidth理想的です。flowframパッケージ内に、現在のフレームの幅を照会できるメカニズムはありますか?

答え1

\textwidthページの幅からメインの余白を引いた値ですが、 は\columnwidthテキストの 1 列の幅のみです (したがって、\textwidth1 列のページの場合は同じですが、2 列のページの場合は半分より少し小さくなります\textwidth)。

しかし、他のコンテキスト (テーブルのセル、ミニページ、ネストされたリストなど) では、テキストの幅は または 未満になる可能性があります\textwidth\columnwidthここで必要なのは、1 列または 2 列のテキストでも同様に機能する線の幅 (つまり ) です(つまり、および/または\linewidthに等しい場合もあれば、そうでない場合もあります)。\textwidth\columnwidth

したがって、「最も安全」なのは、常に に相対的な幅を持つテーブル列を使用することです。フレームの約 50% の列が\linewidth必要な場合は、が目標に近くなります。p{}p{0.5\linewidth}しかし:

  1. 列間の間隔( )も考慮する必要があります\tabcolsep

  2. 表は大きなアルファベット文字のように配置されます。つまり、空白行の後は段落の最初の大きな文字のようになるため、デフォルトでインデントされます。したがって、表のインデントを回避するには\noindent、 を使用するか、 に設定する\parindent必要があります。0pt

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}

注記:

表形式は、4 つのセルの幅をより適切にチェックするためだけに「監禁」されています。スタイルに関する提案ではありません...

tabularx注:表を次のように簡略化するには、パッケージを確認することをお勧めします。

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

関連情報