부분 컴파일 명령/환경?

부분 컴파일 명령/환경?

대용량 문서의 편집 시간을 빠르게 하기 위해 부분 편집에 관심을 가지게 되었습니다. (저는 이미 "사전 컴파일" 프리앰블 형식 fmt파일을 알고 있으며 이를 사용할 계획입니다.)

\input첫 번째 문제는 s 대신 (중첩) s를 사용하는 파일의 뼈대를 상속했기 \include때문에 실제로 \includeonly.

내가 원하는 것을 보여주기 위해 다음 MWE를 고려하십시오. 단순화를 위해 "플랫"/단일 test.tex파일입니다.

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

그 결과 65페이지의 문서가 생성되었습니다. 제가 섹션 2를 작성하고 있다고 가정해 보겠습니다. 섹션 2는 33페이지로 끝납니다. 여백을 제외하면 다음과 같습니다(전체 크기를 보려면 클릭하세요).

테스트.png

내가 하고 싶은 것은 환경에 대한 명령으로 관심 영역을 "래핑"하는 것입니다. 다음과 같이 말해보세요.

...
\lipsum[23]


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

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

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


\section{Section Three}
...

이 시점에서 컴파일 시(명령줄을 통해 제어하거나 "PartialPreview" 명령/환경의 존재만으로 제어 가능) Latex에서 처음 32페이지가 비어 있는 문서를 생성하고 싶습니다. 33페이지는 다음과 같습니다.

test1.png

... 다음에는 최대 65페이지까지 빈 페이지가 나옵니다. 내 작업 흐름에서는 evince미리 보는 데 사용합니다. 페이지 양이 변경되지 않으면 evincePDF 파일을 다시 로드할 때 스크롤 막대 위치를 그대로 유지합니다. 따라서 부분 편집과 전체 편집 사이를 전환하더라도 스크롤하지 않고도 PDF의 동일한 위치에 초점을 유지할 수 있습니다.

\input/ 의 임의 중첩에 이 명령/환경을 포함할 수 있었으면 좋겠습니다 \include. 그리고 이것이 페이지 번호 및 기타 변경 사항(예: 글꼴 크기)을 추적하기를 원하기 때문에 처음에는 전체 컴파일이 필요하고 부분 컴파일은 나중에만 가능하다고 생각합니다. 하지만 작성 과정(및 부분 편집 미리보기) 중에 이 "섹션 2"의 내용이 한 페이지 이상 커지면 새 페이지 수를 계산하는 것은 문제가 되지 않을 것 같습니다.

물론, 부분 컴파일이 실행되는 동안 Latex가 관심 없는 모든 부분을 "건너뛰게" 할 수 있는 한 반드시 빈 페이지를 삽입하거나 페이지 번호를 추적하지 않는 것으로 만족하겠습니다. 관심 영역으로 이동하는 동안 모든 매크로(및 텍스트/이미지)를 처리할 필요가 없습니다(따라서 상당한 속도 향상을 기대할 수 있습니다).

이를 수행하는 명령이나 환경이 포함된 패키지가 있습니까?

추신: 검색하는 동안 관련 항목(예: 지역 컴파일 가능)을 몇 개 찾았지만 실제로는 적용할 수 없습니다(그 자체로는 Latex용 패키지가 아니기 때문에).


편집: 의견에 따라 package 를 사용하려고 시도했고 comment서문 끝에 다음을 추가했습니다.

\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

... 따라서 문서 시작 부분을 수동으로 유지할 필요가 없으며 \begin{comment}명령줄에서 pdflatex "\let\doskip\relax\input{test.tex}"; 불행히도 그것은 작동하지 않습니다. 오류 메시지는 %주석으로 추가됩니다.

답변1

저는 xemacsAUC-TeX와 함께 사용합니다(일반용 패키지 emacs도 있지만 사용하지 않았습니다). 다중 파일 문서의 현재 파일 또는 표시된 영역만 처리하는 명령을 제공합니다. 처리된 작품 외부의 대부분의 참조는 정의되지 않은 것으로 표시되지만 빠르게 살펴보기에는 충분합니다.

\include{...}파일을 제출 하는 경우 \includeonly{list,of,files,to,include}전체 문서를 처리하면 요청한 파일만 제공되며 이전 실행에서 외부에서 상호 참조를 채웁니다(즉, 페이지 번호가 변경되지 않고 새 항목이 없으며 \label{...}장/섹션에 변경 사항이 없다고 가정합니다) /... 번호 매기기).

답변2

알겠습니다. 짧게 만들어서 죄송합니다. 하지만 나는 이 문제와 일치하는 예제를 게시했습니다.\AtBeginDocument에 \comment 또는 \begin{comment}를 추가하시겠습니까?; 패키지를 사용하고 {comment}해당 패키지의 수정된 버전을 정의합니다 \excludecomment. 다음을 사용할 수 있습니다.

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

... ( \end열림, \begin닫힘 참고) 프로세스가 로 실행되는 경우 조판될 부분을 정의합니다(나머지는 공백임) pdflatex "\let\doskip\relax\input{test.tex}".

나는 연결된 솔루션도 약간 문제가 있다는 것을 알고 있으므로( \input파일 내부에서도 작동하지 않음) 결국 좀 더 박식한 답변이 나올 수 있기를 바랍니다. 또한 나중에 이 질문에 더 잘 맞도록 연결된 답변을 수정하여 이 답변을 업데이트할 시간을 갖기를 바랍니다.

관련 정보