나는 긴 문서를 작성하여 여러 장으로 나누는 중입니다. 나는 \include
my 에서 와 같은 것을 사용하고 싶습니다 main.tex
. 그리고 각 장의 조판은 특정 장의 를 main.tex
조판 할 것입니다. \includeonly
내가 아는 가장 가까운 해결책은 입니다 subfile
. 사소한 문제(예: )에 대해서는 완전히 만족하지 않습니다 minitoc
. 이를 위해 매크로를 코딩하는 방법이 있나요?
답변1
기본 \include
과 \includeonly
명령어만 있으면 될 것 같은데, 제가 잘못 이해하고 있는 것 같습니다.
다음 파일을 생성하고 주석 처리된 줄을 main.tex
두 번 컴파일하면 \includeonly
LaTeX는 문서 전체를 처리하여 정확한 페이지 번호로 목차를 생성합니다.
그런 다음 해당 줄의 주석 처리를 제거하면 LaTeX는 파일과 해당 명령에 대한 인수(이 경우 )만 \includeonly
처리합니다 . 목차에는 이전에 편집한 다른 장의 페이지 번호가 계속 반영됩니다.main
\include
ch1
파일main.tex
\documentclass{book}
\usepackage{lipsum} % for dummy text
%\includeonly{ch1} % Uncomment after first compilation
\begin{document}
\title{Your Book}
\author{Your Name}
\maketitle
\tableofcontents
\include{ch1}
\include{ch2}
\include{ch3}
\end{document}
파일ch1.tex
\chapter{First}
\lipsum
파일ch2.tex
\chapter{Second}
\lipsum
파일ch3.tex
\chapter{Third}
\lipsum
편집: 컴파일 시 명령줄에 포함된 파일을 지정합니다.
또 다른 옵션은 명령줄에 포함할 파일을 정의하는 것입니다. \selection
명령줄에서 명령을 정의합니다 .
\documentclass{book}
\usepackage{lipsum} % for dummy text
% Include files specified on the command line;
% if no files specified, include everything
\ifx\selection\undefined\relax
\else
\includeonly{\selection}
\fi
\begin{document}
\title{Your Book}
\author{Your Name}
\maketitle
\tableofcontents
\include{ch1}
\include{ch2}
\include{ch3}
\end{document}
그런 다음 다음 명령으로 컴파일하십시오.
pdflatex "\def\selection{ch1} \input main"
다음을 사용하여 이를 자동화할 수 있습니다.쉘 스크립트:
(파일 latex-selection.sh
:)
#! /bin/sh
EXCERPT=$1
MAIN=$2
pdflatex "\\def\\selection{$EXCERPT} \\input $MAIN"
만 포함하려면 ch2
as를 호출합니다 ./latex-selection.sh ch2 main
.