Comandos/ambiente de compilação parcial?

Comandos/ambiente de compilação parcial?

No interesse de agilizar o tempo de compilação de documentos grandes, me interessei pela compilação parcial. (Já estou ciente da "pré-compilação" fmtde arquivos em formato de preâmbulo e pretendo usá-los também).

O primeiro problema é que herdei um esqueleto de arquivos, que usam (aninhados) \inputs em vez de \includes, então não posso realmente usar \includeonly.

Para demonstrar o que desejo, considere este MWE - para simplificar, um test.texarquivo "simples"/ú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}

Isto resulta num documento de 65 páginas; digamos que estou escrevendo a seção Dois, que termina na página 33 - e tem esta aparência, menos as margens (clique para ampliar):

teste.png

O que eu gostaria de fazer é "envolver" a região de interesse em comandos de ambiente, digamos assim:

...
\lipsum[23]


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

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

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


\section{Section Three}
...

Neste ponto, após a compilação (controlável através da linha de comando ou pela mera presença dos comandos/ambiente "PartialPreview"), gostaria que o Latex gerasse um documento com as primeiras 32 páginas em branco; página 33 sendo assim:

teste1.png

... seguido por páginas em branco até a página 65. No meu fluxo de trabalho, eu uso evincepara visualizar - e se a quantidade de páginas não mudar, então evincemanterei a posição da barra de rolagem como está, quando recarregar um arquivo pdf - e assim eu poderia manter o foco no mesmo lugar do PDF, sem rolar, mesmo alternando entre compilação parcial e completa.

Eu gostaria de poder incluir este comando/ambiente no aninhamento arbitrário de \input/ \include; e como eu gostaria que isso monitorasse os números das páginas e outras alterações (como o tamanho da fonte), imagino que uma compilação completa seria necessária no início, sendo a compilação parcial possível somente posteriormente. Mas então, acho que não seria um problema calcular novos números de páginas, se no processo de escrita (e pré-visualização parcial da compilação), o conteúdo desta "seção Dois" crescer além do tamanho de uma página.

Claro, eu me contentaria com algo que não necessariamente inserisse páginas em branco, nem monitorasse os números das páginas - contanto que de alguma forma possa fazer o Latex "pular" todas as partes que não são de interesse durante a execução parcial da compilação, então é não precisa processar todas as macros (e textos/imagens) no caminho para a região de interesse (e, portanto, uma aceleração significativa poderia ser esperada).

Existe algum pacote com comandos ou ambientes que façam isso?

PS: Durante minha pesquisa, encontrei apenas algumas coisas relacionadas (ou seja, posso fazer compilação regional), mas não realmente aplicáveis ​​(já que não são pacotes para Latex em si):


EDIT: conforme comentários, tentei usar package commente adicionei isto no final do 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

... então não teria que manter manualmente o \begin{comment}início do documento e eu poderia controlar a visualização na linha de comando por meio de pdflatex "\let\doskip\relax\input{test.tex}"; infelizmente, isso não funciona - as mensagens de erro são adicionadas como %comentários.

Responder1

Eu uso xemacscom AUC-TeX (tem pacote regular emacstambém, mas não usei). Oferece comandos para processar apenas o arquivo atual de um documento com vários arquivos ou apenas a região marcada. A maioria das referências fora da peça processada aparecerá como indefinida, mas para uma rápida olhada é o suficiente.

Se você \include{...}arquiva, você pode declarar \includeonly{list,of,files,to,include}, e o processamento do documento completo fornece apenas os arquivos solicitados, preenchendo referências cruzadas de fora das execuções anteriores (ou seja, assume que os números das páginas não mudam, não há novo \label{...}, não há alterações no capítulo/seção /... numeração).

Responder2

Ok, desculpas por ser curto; mas consegui postar um exemplo correspondente a esse problema emAdicionando \comment ou \begin{comment} a \AtBeginDocument?; ele usa o {comment}pacote e define uma versão modificada de seu \excludecomment; tal que se possa usar:

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

... (observe as \endaberturas, \beginfechamentos) para definir as partes que serão compostas (enquanto o restante ficará em branco), se o processo for executado com pdflatex "\let\doskip\relax\input{test.tex}".

Estou ciente de que a solução vinculada também é um pouco problemática (também não funciona dentro de \inputarquivos), então espero que eventualmente surja uma resposta mais erudita; Também espero ter tempo no futuro para atualizar esta resposta, com uma modificação da resposta vinculada para que ela se ajuste melhor a esta questão.

informação relacionada