
이것은 실제로 실용적인 질문이 아니라 학문적인 질문에 가깝습니다.
저는 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
및 사이의 정의를 둘러쌉니다 .\fi
secondary.tex
첫 번째 제한 사항.경로는 보조 파일의 위치를 기준으로 하므로 모든 파일은 모두 동일한 디렉터리에 있어야 합니다. 를 가지고 \input{../master}
호출 master.tex
할 수는 없습니다 \input{subdir/secondary}
.
두 번째 제한 사항.TeX는 옵션을 사용하여 명령줄에서 재정의하지 않은 경우 작업 이름을 첫 번째 입력 파일과 동일하게 설정합니다 -jobname
. 따라서 편집자/프론트 엔드의 협조 없이는 master.log
또는 을 얻을 수 master.pdf
없지만 secondary.log
. 이것은 TeX의 내장 동작이며 수정할 수 없습니다. TeX가 시작되고 입력용 파일(이 경우)을 열자마자 해당 파일이나 명령줄 에서 파생된 이름으로 파일이 secondary.tex
열립니다. 옵션..log
-jobname
따라서 그러한 접근 방식은 편집기나 프런트 엔드의 기능을 사용하여 기본 파일이 무엇인지 기술하는 것보다 낫지 않습니다. 대부분이 이 기능을 갖고 있으므로 이것이 선호되는 방법입니다.
arara
답변에 설명된 방법은 다음과 같습니다 .arara: 챕터 파일에서 메인 파일을 컴파일하는 규칙 만들기어떤 편집기/프론트 엔드를 사용하든 독립되어 있기 때문에 보기 이상의 가치가 있습니다.