¿Comandos/entorno de compilación parcial?

¿Comandos/entorno de compilación parcial?

Con el fin de acelerar los tiempos de compilación de documentos grandes, me interesé en la compilación parcial. (Ya conozco la "precompilación" de fmtarchivos de formato de preámbulo y tengo la intención de usarlos también).

El primer problema es que heredé un esqueleto de archivos que usan \inputs (anidados) en lugar de \includes, por lo que realmente no puedo usar \includeonly.

Para demostrar lo que quiero, considere este MWE; para simplificar, un test.texarchivo "plano"/único:

\documentclass[11pt]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{lipsum}

% https://tex.stackexchange.com/questions/4139/how-to-change-font-size-mid-document
% only 10, 11 and 12
\def\changeBaseFontSize#1{%
  \let\orignewcommand\newcommand
  \let\newcommand\renewcommand
  \makeatletter
  \input{bk#1.clo}%
  \makeatother
  \let\newcommand\orignewcommand
}

\usepackage{lastpage}
% page number override for book class:
\makeatletter
\def\@evenhead{\thepage\ of\ \pageref{LastPage}\hfil\slshape\leftmark}%
\def\@oddhead{{\slshape\rightmark}\hfil\thepage\ of\ \pageref{LastPage}}%
\makeatother
% \usepackage{fancyhdr}
% \pagestyle{plain}
% \lhead[\thepage\ of \pageref{LastPage}]{}
% \rhead[]{\thepage\ of \pageref{LastPage}}


\begin{document}
\frontmatter
\clearpage
\mainmatter

\chapter{Some chapter}
\section{Section One}
\lipsum[1-145]

Changing the FONT here... \changeBaseFontSize{12}

\lipsum[20]
\lipsum[23]


\section{Section Two}
\lipsum[35]

Changing the FONT here... \changeBaseFontSize{11}

\lipsum[38]


\section{Section Three}
\lipsum[1-145]


\end{document}

Esto da como resultado un documento de 65 páginas; digamos que estoy escribiendo la sección dos, que termina en la página 33 y se ve así, menos los márgenes (haga clic para ver en tamaño completo):

prueba.png

Lo que me gustaría hacer es "envolver" la región de interés en comandos sobre el entorno, por ejemplo:

...
\lipsum[23]


\begin{PartialPreview} % PSEUDO
\section{Section Two}
\lipsum[35]

Changing the FONT here... \changeBaseFontSize{11}

\lipsum[38]
\end{PartialPreview} % PSEUDO


\section{Section Three}
...

En este punto, tras la compilación (ya sea controlable a través de la línea de comandos o por la mera presencia de los comandos/entorno "PartialPreview"), me gustaría que Latex genere un documento con las primeras 32 páginas en blanco; La página 33 queda así:

prueba1.png

... seguido de páginas en blanco hasta la página 65. En mi flujo de trabajo, uso evincela vista previa, y si la cantidad de páginas no cambia, evincemantendré la posición de la barra de desplazamiento como está, cuando recarga un archivo pdf. y así, podría mantener el foco en el mismo lugar del PDF, sin desplazarme, incluso si cambio entre compilación parcial y completa.

Me gustaría poder incluir este comando/entorno en un anidamiento arbitrario de \input/ \include; y como me gustaría que esto realizara un seguimiento de los números de página y otros cambios (como el tamaño de fuente), me imagino que al principio se requeriría una compilación completa, siendo posible una compilación parcial solo posteriormente. Pero entonces, supongo que no sería un problema calcular nuevos números de páginas, si en el proceso de escritura (y vista previa de la compilación parcial), el contenido de esta "sección Dos" crece más allá de una página en tamaño.

Por supuesto, me conformaría con algo que no necesariamente inserte páginas en blanco, ni realice un seguimiento de los números de página, siempre y cuando de alguna manera pueda hacer que Latex "salte" todas las partes que no son de interés durante la ejecución de compilación parcial, de modo que no tiene que procesar todas las macros (y texto/imágenes) en el camino a la región de interés (y por lo tanto, se podría esperar una aceleración significativa).

¿Existe algún paquete con comandos o entornos que hagan esto?

PD: Durante mi búsqueda, encontré solo un par de cosas relacionadas (es decir, puedo hacer una compilación regional), pero que no son realmente aplicables (ya que no son paquetes para Latex per se):


EDITAR: según los comentarios, intenté usar el paquete commenty agregar esto al final del preámbulo:

\newenvironment{PartialPreview}{}{}
\ifx\doskip\relax
  \typeout{DOSKIP}
  \usepackage{etoolbox}
  \usepackage{comment}
  % https://tex.stackexchange.com/questions/14135/how-to-automatically-add-text-immediately-after-begindocument
  %\AtBeginDocument{\comment} % ! Extra \endgroup.
  %\AtBeginDocument{\begin{comment}} % Runaway argument? ! File ended while scanning use of \next.
  %\AfterEndPreamble{\comment} % ! Extra \endgroup.
  \AfterEndPreamble{\begin{comment}} % Runaway argument? ! File ended while scanning use of \next.
  %\AtEndDocument{\endcomment}%{\end{comment}}
\fi

... así que no tendría que mantener manualmente el \begin{comment}inicio del documento, y podría controlar la vista previa desde la línea de comando a través de pdflatex "\let\doskip\relax\input{test.tex}"; desafortunadamente, eso no funciona: los mensajes de error se agregan como %comentarios.

Respuesta1

Lo uso xemacscon AUC-TeX (también hay un paquete para regular emacs, pero no lo he usado). Ofrece comandos para procesar solo el archivo actual de un documento de varios archivos, o solo la región marcada. La mayoría de las referencias fuera de la pieza procesada aparecerán como indefinidas, pero para echar un vistazo rápido es suficiente.

Si presenta \include{...}archivos, puede indicar \includeonly{list,of,files,to,include}y procesar el documento completo le proporciona solo los archivos solicitados, completando referencias cruzadas externas de ejecuciones anteriores (es decir, se supone que los números de página no cambian, no hay nuevos \label{...}, no hay cambios en el capítulo/sección). /... numeración).

Respuesta2

Ok, disculpas por hacer esto breve; pero logré publicar un ejemplo que coincida con este problema en¿Agregar \comment o \begin{comment} a \AtBeginDocument?; utiliza el {comment}paquete y define una versión modificada de su \excludecomment; tal que se puede utilizar:

\end{SKIPLINES} % the below range will be typeset:
\lipsum[5]
\begin{SKIPLINES}

... (tenga en cuenta las \endaperturas y \begincierres) para definir las partes que se componerán (mientras que el resto se borrará), si el proceso se ejecuta con pdflatex "\let\doskip\relax\input{test.tex}".

Soy consciente de que la solución vinculada también es un poco problemática (tampoco funciona dentro de \inputarchivos), por lo que espero que eventualmente surja una respuesta más erudita; También espero tener tiempo en el futuro para actualizar esta respuesta, con una modificación de la respuesta vinculada para que se ajuste mejor a esta pregunta.

información relacionada