套件 `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只是一列文字的寬度(因此,與\textwidth一列頁面中的寬度相同,但小於\textwidth兩列頁面中的一半)。

但在其他上下文中(表格的表格儲存格、小型頁面、巢狀清單等),文字的寬度可能小於\textwidth\columnwidth。這裡你想要的是線的寬度(即,\linewidth),它在一或兩列文字中也同樣有效(即,它可以等於\textwidth和/或\columnwidth,..或不等於)。

因此,「最安全」的是使用寬度始終相對於 的表列\linewidth。如果你想要一個p{}佔框架 50% 左右的列,那麼就p{0.5\linewidth}接近你的目標了,

  1. 您還必須考慮列之間的間隔 ( \tabcolsep)。

  2. 表格的放置方式就像一個大字母字元。也就是說,空行後面就像一個段落的第一個大字母,因此預設會縮排。因此,您應該使用\noindent或設定\parindent0pt以避免表格縮排。

氣象局:

姆韋

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

筆記:

表格被“監禁”只是為了更好地檢查四個單元格的寬度。並非所有都是風格的建議...

注意:您可能需要查看該tabularx套件以將表格簡化為:

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

相關內容