
私はフレーム内で次のような表形式を使用しています:
\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 列の幅のみです (したがって、\textwidth
1 列のページの場合は同じですが、2 列のページの場合は半分より少し小さくなります\textwidth
)。
しかし、他のコンテキスト (テーブルのセル、ミニページ、ネストされたリストなど) では、テキストの幅は または 未満になる可能性があります\textwidth
。\columnwidth
ここで必要なのは、1 列または 2 列のテキストでも同様に機能する線の幅 (つまり ) です(つまり、および/または\linewidth
に等しい場合もあれば、そうでない場合もあります)。\textwidth
\columnwidth
したがって、「最も安全」なのは、常に に相対的な幅を持つテーブル列を使用することです。フレームの約 50% の列が\linewidth
必要な場合は、が目標に近くなります。p{}
p{0.5\linewidth}
しかし:
列間の間隔( )も考慮する必要があります
\tabcolsep
。表は大きなアルファベット文字のように配置されます。つまり、空白行の後は段落の最初の大きな文字のようになるため、デフォルトでインデントされます。したがって、表のインデントを回避するには
\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}