Medir una parte de la página

Medir una parte de la página

Estoy intentando medir la altura de una parte de mi página.

La página de título completa, junto con la parte de la página que estoy tratando de medir, está delineada en rojo, y el código para compilar la página se muestra debajo. Sí, tengo que medirlo todo de una vez.:-(

https://i.stack.imgur.com/kXhDH.png

\documentclass[10pt]{extarticle}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage[a4paper,margin=.9in]{geometry}
\usepackage{xcolor}
\definecolor{palette2}{RGB}{235,249,249}
\usepackage[letterspace=400]{microtype}
\usepackage[english]{babel}
\usepackage{ragged2e}
\usepackage{array}
\usepackage[bitstream-charter]{mathdesign}
\usepackage[T1]{fontenc}
\usepackage{fancyhdr}
\usepackage{etoolbox}

\newcommand{\headrulecolor}[1]{\patchcmd{\headrule}{\hrule}{\color{#1}\hrule}{}{}}
\makeatletter
\fancypagestyle{plain}{
  \fancyhf{}
  \headrulecolor{lightgray}
  \chead{\textit{Some science institution}}
  \renewcommand{\headrulewidth}{.5pt}
}
\setlength\parindent\z@
\newcommand*\docparspacing{
\setlength\parindent{16pt}
\setlength\parskip{0pt}
}
\makeatother

\begin{document}
\thispagestyle{plain}

\raisebox{3.5ex}{\hbadness=9999
\colorbox{palette2}{\vrule width 0pt height 5.8ex \begin{tabular}{>{\RaggedRight\arraybackslash}p{\dimexpr.3\linewidth-\tabcolsep} >{\centering\arraybackslash}p{\dimexpr.35\linewidth-2\tabcolsep} >{\RaggedLeft\arraybackslash}p{\dimexpr.35\linewidth-4.4\tabcolsep}}
&
&
\end{tabular}}}
\vskip 2ex
\textcolor{lightgray}{\hrule height .5pt}
\vskip 6ex
\Huge{A title in fontsize Huge}
\vskip .4ex
\large{Doe, J. (John)}
\vskip 2ex
\normalsize
\vskip .5ex
\valign{%
    \hsize=\dimexpr.5\linewidth-2\tabcolsep
    \vskip 2ex
    #\vfil\nointerlineskip
    \vskip 1.5ex
    \cr
    \noindent\textls{\itshape\footnotesize KEYWORDS}
    \vskip -1.5ex
    \hbox to\hsize{\color{lightgray}\leaders\hrule height .5pt\hfill}
    \vskip 1.5ex
    \itshape{obituary

    linguist

    typography}\cr
    \noalign{\hfill}
    \noindent\textls{\itshape\footnotesize ABSTRACT}
    \vskip -1.5ex
    \hbox to\hsize{\color{lightgray}\leaders\hrule height .5pt\hfill}
    \vskip 1.5ex

    \small \lipsum[4] \cr
  }\par
  \vskip2ex

  \hbox to\linewidth{\color{lightgray}\leaders\hrule height .5pt\hfill}
\vskip 3ex

\colorbox{palette2}{%
\begin{minipage}{\dimexpr\textwidth-2\fboxsep}
\lipsum[1-2]
\end{minipage}%
}
\vskip 5ex
\docparspacing
\begin{multicols*}{3}
\section{Document structure}
\lipsum[1-3]
\end{multicols*}
\end{document}

Intenté medir esto creando mi propio cuadro, que se compila con ocho errores y requiere un uso extensivo de \hboxy \vbox. También requirió que reemplazara cada instancia de \hrulecon una \leadersvariante, que requiere pegamento (la pesadilla de mi existencia). Sospecho firmemente que este es el culpable de la salida incorrecta. Sin embargo, mi pregunta principal es que mi enfoque actual parece particularmente engorroso, lo que me lleva a creer que mi enfoque no es el correcto, es decir, existe un enfoque más flexible (o "fácil", si lo desea). ¿Cómo puedo crear este cuadro para medición y uso en el documento, de la manera más accesible/flexible?

http://i.imgur.com/o89CdlS.png?1

\documentclass[10pt]{extarticle}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage[a4paper,margin=.9in]{geometry}
\usepackage{xcolor}
\definecolor{palette2}{RGB}{235,249,249}
\usepackage[letterspace=400]{microtype}
\usepackage[english]{babel}
\usepackage{ragged2e}
\usepackage{array}
\usepackage[bitstream-charter]{mathdesign}
\usepackage[T1]{fontenc}
\usepackage{fancyhdr}
\usepackage{etoolbox}

\newcommand{\headrulecolor}[1]{\patchcmd{\headrule}{\hrule}{\color{#1}\hrule}{}{}}
\makeatletter
\fancypagestyle{plain}{
  \fancyhf{}
  \headrulecolor{lightgray}
  \chead{\textit{Some science institution}}
  \renewcommand{\headrulewidth}{.5pt}
}
\setlength\parindent\z@
\newcommand*\docparspacing{
\setlength\parindent{16pt}
\setlength\parskip{0pt}
}
\makeatother

\newsavebox\titlebox
\setbox\titlebox=\vbox{%
\hbox{\raisebox{3.5ex}{\hbadness=9999
\colorbox{palette2}{\vrule width 0pt height 5.8ex \begin{tabular}{>{\RaggedRight\arraybackslash}p{\dimexpr.3\linewidth-\tabcolsep} >{\centering\arraybackslash}p{\dimexpr.35\linewidth-2\tabcolsep} >{\RaggedLeft\arraybackslash}p{\dimexpr.35\linewidth-4.4\tabcolsep}}
&
&
\end{tabular}}}
}
\vskip 2ex
\hbox to \linewidth{\textcolor{lightgray}{\leaders\hrule height .5pt\hfil}}
\vskip 6ex
\hbox{\Huge{A title in fontsize Huge}}
\vskip .4ex
\hbox{\large{Doe, J. (John)}}
\vskip 2ex
\normalsize
\vskip .5ex
\valign{%
    \hsize=\dimexpr.5\linewidth-2\tabcolsep
    \vskip 2ex
    #\vfil\nointerlineskip
    \vskip 1.5ex
    \cr
    \noindent\textls{\itshape\footnotesize KEYWORDS}
    \vskip -1.5ex
    \hbox to\hsize{\color{lightgray}\leaders\hrule height .5pt\hfil}
    \vskip 1.5ex
    \itshape{obituary

    linguist

    typography}\cr
    \noalign{\hfill}
    \noindent\textls{\itshape\footnotesize ABSTRACT}
    \vskip -1.5ex
    \hbox to\hsize{\color{lightgray}\leaders\hrule height .5pt\hfil}
    \vskip 1.5ex

    \small \lipsum[4] \cr
  }\par
\vskip2ex
\hbox to\linewidth{\color{lightgray}\leaders\hrule height .5pt\hfil}
\vskip 3ex
\colorbox{palette2}{%
\begin{minipage}{\dimexpr\textwidth-2\fboxsep}
  \lipsum[1-2]
\end{minipage}%
}
\vskip 5ex
}

\begin{document}
\thispagestyle{plain}

\usebox\titlebox
\docparspacing
\begin{multicols*}{3}
\section{Document structure}
\lipsum[1-3]
\end{multicols*}
\end{document}

Respuesta1

Puede utilizar el tcolorboxpaquete (versión 3.12 (2014/07/29)o más reciente) para realizar la medición. En mi solución, el kernel es un entorno measureboxconstruido con el siguiente código:

\makeatletter
\newtcolorbox{measurebox}[1][]{blank,parbox=false,
  show bounding box,
  finish={\node[draw,fill=white,fill opacity=0.85,inner sep=5mm,
    rounded corners,align=left,node font=\Large\bfseries]
    at (frame.center) { width: \tcb@width,\\ height: \tcb@height};},
  #1}
\makeatother

Cualquier párrafo rodeado por este entorno tcolorboxse mide y se escribe su dimensión en la pantalla o en el papel. El código completo es:

\documentclass[10pt]{extarticle}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage[a4paper,margin=.9in]{geometry}
\usepackage{xcolor}
\definecolor{palette2}{RGB}{235,249,249}
\usepackage[letterspace=400]{microtype}
\usepackage[english]{babel}
\usepackage{ragged2e}
\usepackage{array}
\usepackage[bitstream-charter]{mathdesign}
\usepackage[T1]{fontenc}
\usepackage{fancyhdr}
\usepackage{etoolbox}
\usepackage[many]{tcolorbox}% version `3.12 (2014/07/29)` or newer

\makeatletter% construct boxing environment
\newtcolorbox{measurebox}[1][]{blank,parbox=false,
  show bounding box,
  finish={\node[draw,fill=white,fill opacity=0.85,inner sep=5mm,
    rounded corners,align=left,node font=\Large\bfseries]
    at (frame.center) { width: \tcb@width,\\ height: \tcb@height};},
  #1}
\makeatother% end construction

\newcommand{\headrulecolor}[1]{\patchcmd{\headrule}{\hrule}{\color{#1}\hrule}{}{}}
\makeatletter
\fancypagestyle{plain}{
  \fancyhf{}
  \headrulecolor{lightgray}
  \chead{\textit{Some science institution}}
  \renewcommand{\headrulewidth}{.5pt}
}
\setlength\parindent\z@
\newcommand*\docparspacing{
\setlength\parindent{16pt}
\setlength\parskip{0pt}
}
\makeatother

\begin{document}
\thispagestyle{plain}

\begin{measurebox}%----- start measuring -----
\raisebox{3.5ex}{\hbadness=9999
\colorbox{palette2}{\vrule width 0pt height 5.8ex \begin{tabular}{>{\RaggedRight\arraybackslash}p{\dimexpr.3\linewidth-\tabcolsep} >{\centering\arraybackslash}p{\dimexpr.35\linewidth-2\tabcolsep} >{\RaggedLeft\arraybackslash}p{\dimexpr.35\linewidth-4.4\tabcolsep}}
&
&
\end{tabular}}}
\vskip 2ex
\textcolor{lightgray}{\hrule height .5pt}
\vskip 6ex
\Huge{A title in fontsize Huge}
\vskip .4ex
\large{Doe, J. (John)}
\vskip 2ex
\normalsize
\vskip .5ex
\valign{%
    \hsize=\dimexpr.5\linewidth-2\tabcolsep
    \vskip 2ex
    #\vfil\nointerlineskip
    \vskip 1.5ex
    \cr
    \noindent\textls{\itshape\footnotesize KEYWORDS}
    \vskip -1.5ex
    \hbox to\hsize{\color{lightgray}\leaders\hrule height .5pt\hfill}
    \vskip 1.5ex
    \itshape{obituary

    linguist

    typography}\cr
    \noalign{\hfill}
    \noindent\textls{\itshape\footnotesize ABSTRACT}
    \vskip -1.5ex
    \hbox to\hsize{\color{lightgray}\leaders\hrule height .5pt\hfill}
    \vskip 1.5ex

    \small \lipsum[4] \cr
  }\par
  \vskip2ex

  \hbox to\linewidth{\color{lightgray}\leaders\hrule height .5pt\hfill}
\vskip 3ex

\colorbox{palette2}{%
\begin{minipage}{\dimexpr\textwidth-2\fboxsep}
\lipsum[1-2]
\end{minipage}%
}
\vskip 5ex
\end{measurebox}%----- end measuring -----
\docparspacing
\begin{multicols*}{3}
\section{Document structure}
\lipsum[1-3]
\end{multicols*}
\end{document}

ingrese la descripción de la imagen aquí

El entorno measureboxtoma un argumento opcional que puede usarse para influir en el cuadro. En esta aplicación, puede resultar útil cambiar el espaciado antes o después del cuadro, por ejemplo,

\begin{measurebox}[before=\par\bigskip,
                   after=\par\vskip 10ex]
...

Segunda solución:

Esta es una variante de la primera parte. Ahora, la altura del cuadro se guarda en un parámetro obligatorio measureboxpara su uso posterior:

\makeatletter
\newtcolorbox{measurebox}[2][]{blank,parbox=false,
  overlay={\xdef#2{\tcb@height}},
  #1}
\makeatother

Se utiliza de la siguiente manera:

\begin{measurebox}{\myheight}

En conjunto, esto es:

\documentclass[10pt]{extarticle}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage[a4paper,margin=.9in]{geometry}
\usepackage{xcolor}
\definecolor{palette2}{RGB}{235,249,249}
\usepackage[letterspace=400]{microtype}
\usepackage[english]{babel}
\usepackage{ragged2e}
\usepackage{array}
\usepackage[bitstream-charter]{mathdesign}
\usepackage[T1]{fontenc}
\usepackage{fancyhdr}
\usepackage{etoolbox}
\usepackage[many]{tcolorbox}

\makeatletter
\newtcolorbox{measurebox}[2][]{blank,parbox=false,
  overlay={\xdef#2{\tcb@height}},
  #1}
\makeatother

\newcommand{\headrulecolor}[1]{\patchcmd{\headrule}{\hrule}{\color{#1}\hrule}{}{}}
\makeatletter
\fancypagestyle{plain}{
  \fancyhf{}
  \headrulecolor{lightgray}
  \chead{\textit{Some science institution}}
  \renewcommand{\headrulewidth}{.5pt}
}
\setlength\parindent\z@
\newcommand*\docparspacing{
\setlength\parindent{16pt}
\setlength\parskip{0pt}
}
\makeatother

\begin{document}
\thispagestyle{plain}

\begin{measurebox}{\myheight}
\raisebox{3.5ex}{\hbadness=9999
\colorbox{palette2}{\vrule width 0pt height 5.8ex \begin{tabular}{>{\RaggedRight\arraybackslash}p{\dimexpr.3\linewidth-\tabcolsep} >{\centering\arraybackslash}p{\dimexpr.35\linewidth-2\tabcolsep} >{\RaggedLeft\arraybackslash}p{\dimexpr.35\linewidth-4.4\tabcolsep}}
&
&
\end{tabular}}}
\vskip 2ex
\textcolor{lightgray}{\hrule height .5pt}
\vskip 6ex
\Huge{A title in fontsize Huge}
\vskip .4ex
\large{Doe, J. (John)}
\vskip 2ex
\normalsize
\vskip .5ex
\valign{%
    \hsize=\dimexpr.5\linewidth-2\tabcolsep
    \vskip 2ex
    #\vfil\nointerlineskip
    \vskip 1.5ex
    \cr
    \noindent\textls{\itshape\footnotesize KEYWORDS}
    \vskip -1.5ex
    \hbox to\hsize{\color{lightgray}\leaders\hrule height .5pt\hfill}
    \vskip 1.5ex
    \itshape{obituary

    linguist

    typography}\cr
    \noalign{\hfill}
    \noindent\textls{\itshape\footnotesize ABSTRACT}
    \vskip -1.5ex
    \hbox to\hsize{\color{lightgray}\leaders\hrule height .5pt\hfill}
    \vskip 1.5ex

    \small \lipsum[4] \cr
  }\par
  \vskip2ex

  \hbox to\linewidth{\color{lightgray}\leaders\hrule height .5pt\hfill}
\vskip 3ex

\colorbox{palette2}{%
\begin{minipage}{\dimexpr\textwidth-2\fboxsep}
\lipsum[1-2]
\end{minipage}%
}
\vskip 5ex
\end{measurebox}
\docparspacing
\begin{multicols*}{3}
\section{Document structure}
\textcolor{red}{The box above has a height of \myheight.}\par
\lipsum[1-3]
\end{multicols*}
\end{document}

ingrese la descripción de la imagen aquí

Tercera solución:

La tercera solución se omite tcolorboxpor completo. Una macro \measureboxes creada por

\newcommand{\measurebox}[4]{%
  \sbox{#1}{\begin{minipage}{#2}#4%
  \end{minipage}}%
  \edef#3{\the\dimexpr\ht#1+\dp#1\relax}%
}

Se necesitan cuatro parámetros: #1es un nombre de cuadro válido, #2es un ancho, #3es un nombre de macro que obtendrá la altura total del cuadro, #4es el contenido del cuadro. Se utiliza de la siguiente manera:

\newsavebox\titlebox
\measurebox{\titlebox}{\textwidth}{\myheight}{%----- start measuring
...
}%----- end measuring
%
\usebox\titlebox%  somewhere
The box above has a height of \myheight.% somewhere

El código completo con el mismo resultado que el anterior es:

\documentclass[10pt]{extarticle}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage[a4paper,margin=.9in]{geometry}
\usepackage{xcolor}
\definecolor{palette2}{RGB}{235,249,249}
\usepackage[letterspace=400]{microtype}
\usepackage[english]{babel}
\usepackage{ragged2e}
\usepackage{array}
\usepackage[bitstream-charter]{mathdesign}
\usepackage[T1]{fontenc}
\usepackage{fancyhdr}
\usepackage{etoolbox}

\makeatletter
\newcommand{\measurebox}[4]{%
  \sbox{#1}{\begin{minipage}{#2}#4%
  \end{minipage}}%
  \edef#3{\the\dimexpr\ht#1+\dp#1\relax}%
}
\makeatother

\newcommand{\headrulecolor}[1]{\patchcmd{\headrule}{\hrule}{\color{#1}\hrule}{}{}}
\makeatletter
\fancypagestyle{plain}{
  \fancyhf{}
  \headrulecolor{lightgray}
  \chead{\textit{Some science institution}}
  \renewcommand{\headrulewidth}{.5pt}
}
\setlength\parindent\z@
\newcommand*\docparspacing{
\setlength\parindent{16pt}
\setlength\parskip{0pt}
}
\makeatother

\begin{document}
\thispagestyle{plain}

\newsavebox\titlebox
\measurebox{\titlebox}{\textwidth}{\myheight}{%----- start measuring
\raisebox{3.5ex}{\hbadness=9999
\colorbox{palette2}{\vrule width 0pt height 5.8ex \begin{tabular}{>{\RaggedRight\arraybackslash}p{\dimexpr.3\linewidth-\tabcolsep} >{\centering\arraybackslash}p{\dimexpr.35\linewidth-2\tabcolsep} >{\RaggedLeft\arraybackslash}p{\dimexpr.35\linewidth-4.4\tabcolsep}}
&
&
\end{tabular}}}
\vskip 2ex
\textcolor{lightgray}{\hrule height .5pt}
\vskip 6ex
\Huge{A title in fontsize Huge}
\vskip .4ex
\large{Doe, J. (John)}
\vskip 2ex
\normalsize
\vskip .5ex
\valign{%
    \hsize=\dimexpr.5\linewidth-2\tabcolsep
    \vskip 2ex
    #\vfil\nointerlineskip
    \vskip 1.5ex
    \cr
    \noindent\textls{\itshape\footnotesize KEYWORDS}
    \vskip -1.5ex
    \hbox to\hsize{\color{lightgray}\leaders\hrule height .5pt\hfill}
    \vskip 1.5ex
    \itshape{obituary

    linguist

    typography}\cr
    \noalign{\hfill}
    \noindent\textls{\itshape\footnotesize ABSTRACT}
    \vskip -1.5ex
    \hbox to\hsize{\color{lightgray}\leaders\hrule height .5pt\hfill}
    \vskip 1.5ex

    \small \lipsum[4] \cr
  }\par
  \vskip2ex

  \hbox to\linewidth{\color{lightgray}\leaders\hrule height .5pt\hfill}
\vskip 3ex

\colorbox{palette2}{%
\begin{minipage}{\dimexpr\textwidth-2\fboxsep}
\lipsum[1-2]
\end{minipage}%
}
\vskip 5ex
}%----- end measuring
%
\usebox\titlebox

\docparspacing
\begin{multicols*}{3}
\section{Document structure}
\textcolor{red}{The box above has a height of \myheight.}\par
\lipsum[1-3]
\end{multicols*}
\end{document}

Tenga en cuenta que debe usar la medición después \begin{document}, pero puede medir tantas cajas como desee antes de usar cualquiera de ellas.

información relacionada