Paquete `flowfram`: ¿Cómo consulto el ancho del marco actual?

Paquete `flowfram`: ¿Cómo consulto el ancho del marco actual?

Estoy usando una tabla dentro de un marco, algo como:

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

Resultados en el siguiente diseño: ingrese la descripción de la imagen aquí

Esto es casi lo que quiero, pero observe cómo lo estoy usando 0.2\textwidthpara especificar el tamaño de cada miembro tabular. En cambio, me gustaría poder especificar la mitad del ancho del marco, sin tener que definir mi propia longitud para ese propósito. Algo parecido a 0.4\framewidthsería perfecto. ¿Existe algún mecanismo dentro del flowframpaquete que me permita consultar el ancho del marco actual?

Respuesta1

Es \textwidthel ancho de la página menos los márgenes principales, mientras que \columnwidthes solo el ancho de una columna de texto (por lo tanto, igual que \textwidthen las páginas de una columna, pero algo menos de la mitad de \textwidthlas páginas de dos columnas).

Pero en otros contextos (la celda de una tabla, una minipágina, una lista anidada, etc.) el ancho del texto puede ser menor que \textwidtho \columnwidth. Aquí lo que desea es el ancho de la línea (es decir, \linewidth) que funcionará igualmente bien también en textos de una o dos columnas (es decir, podría ser igual a \textwidthy/o \columnwidth, ..o no).

Por lo tanto, lo "más seguro" es utilizar columnas de tabla con anchos siempre relativos a \linewidth. Si desea una p{}columna de aproximadamente el 50% del marco, entonces p{0.5\linewidth}está cerca de su objetivo,pero:

  1. Debes tener en cuenta también las separaciones entre columnas ( \tabcolsep).

  2. La tabla se coloca como un gran carácter alfabético. Es decir, después de una línea en blanco hay como la primera letra grande de un párrafo, por lo que tiene sangría de forma predeterminada. Por lo tanto, debe utilizar \noindento, alternativamente, establecer \parindenten 0ptpara evitar la sangría de la tabla.

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

Nota:

Los tabulares han sido "encarcelados" sólo para comprobar mejor las anchuras de las cuatro celdas. No todo es una sugerencia de estilo...

Nota: Es posible que desee echar un vistazo al tabularxpaquete para simplificar las tablas a algo como:

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

información relacionada