包“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}

相关内容