LaTeX는 기본 다중 파일 관리를 지원합니까?

LaTeX는 기본 다중 파일 관리를 지원합니까?

이것은 실제로 실용적인 질문이 아니라 학문적인 질문에 가깝습니다.

저는 emacs를 사용하여 LaTeX 파일을 작성하고 여러 파일 문서를 처리하기 위해 각 파일 끝에 로컬 변수를 포함시켜 %%% TeX-master: "master"이 파일을 컴파일할 때 실제로 "master.tex" 파일을 컴파일하고 싶다고 emacs에 알려줍니다.

\setmaster{master}이제 LaTeX에서 이 작업을 수행할 수 있는 방법이 있는지 또는 \includedin{master}파일의 시작 부분에 간단히 넣을 수 있고 컴파일러에 직접 다른 파일을 먼저 살펴봐야 한다고 알려주는 방법이 있는지 궁금합니다 .

답변1

이는 가능하지만 중요한 제한 사항이 있습니다. master.tex와 가 있다고 가정해 봅시다 secondary.tex.

우선 어떻게 \setmaster정의해야 할까요? 그것은 매우 쉽습니다:

\makeatletter
\newcommand{\setmaster}[1]{%
   % Make all later \setmaster commands to be no-ops
   \global\let\setmaster\@gobble
   % Start reading the master file
   \input{#1}%
   % When it's finished, don't read from this file any more
   \endinput}
\makeatother

하지만어디정의 해야 \setmaster합니까? 문서 자체 또는 개인화된 형식 파일에 있습니다. 첫 번째 경우에는 입력 시 이를 읽고 싶지 않기 때문에 \ifdefined\setmaster\else및 사이의 정의를 둘러쌉니다 .\fisecondary.tex

첫 번째 제한 사항.경로는 보조 파일의 위치를 ​​기준으로 하므로 모든 파일은 모두 동일한 디렉터리에 있어야 합니다. 를 가지고 \input{../master}호출 master.tex할 수는 없습니다 \input{subdir/secondary}.

두 번째 제한 사항.TeX는 옵션을 사용하여 명령줄에서 재정의하지 않은 경우 작업 이름을 첫 번째 입력 파일과 동일하게 설정합니다 -jobname. 따라서 편집자/프론트 엔드의 협조 없이는 master.log또는 을 얻을 수 master.pdf없지만 secondary.log. 이것은 TeX의 내장 동작이며 수정할 수 없습니다. TeX가 시작되고 입력용 파일(이 경우)을 열자마자 해당 파일이나 명령줄 에서 파생된 이름으로 파일이 secondary.tex열립니다. 옵션..log-jobname

따라서 그러한 접근 방식은 편집기나 프런트 엔드의 기능을 사용하여 기본 파일이 무엇인지 기술하는 것보다 낫지 않습니다. 대부분이 이 기능을 갖고 있으므로 이것이 선호되는 방법입니다.

arara답변에 설명된 방법은 다음과 같습니다 .arara: 챕터 파일에서 메인 파일을 컴파일하는 규칙 만들기어떤 편집기/프론트 엔드를 사용하든 독립되어 있기 때문에 보기 이상의 가치가 있습니다.

관련 정보