
서브파일의 다른 섹션을 어떻게 참조해야 하는지 알 수 없습니다. 아래에 간단한 예를 준비했습니다.
기본
\documentclass[12pt,letterpaper]{article}
\usepackage[utf8]{inputenc}
\usepackage{xr}
\usepackage{subfiles}
\begin{document}
\subfile{Afile}
\subfile{Bfile}
\end{document}
파일
\documentclass[main.tex]{subfiles}
\begin{document}
\section{Blah Blah}
\label{section: asection}
blah blah blah blah
\end{document}
B파일
\documentclass[main.tex]{subfiles}
\begin{document}
\section{Bo bo boooooo}
\label{section: bsection}
Unlike section \ref{section: asection}.
\end{document}
기본 파일을 컴파일하면 모든 것이 올바르게 작동합니다. 하위 파일을 별도로 컴파일하고 다른 하위 파일에 대한 상호 참조를 작동시키는 방법을 알 수 없습니다. \externaldocument{Afile}
bfile의 서문에서 to를 사용하여 하위 문서를 컴파일할 수 있지만 기본 파일의 컴파일이 중단됩니다. 기본 파일과 하위 파일을 모두 올바르게 상호 참조할 수 있는 방법이 있습니까? 더 자세한 설명이 필요하면 언제든지 문의하세요.
답변1
문서 환경의 기초가 되는 명령은 \document
및 입니다 \enddocument
.
하위 파일이 기본 TeX 파일에 의해 로드되면 명령은 토큰을 전달하지 않도록 재정의됩니다. 이는 LaTeX 2ε 커널의 \document
명령과 동일 하지만 -command 와 달리 .\empty
\empty
\long
하위 파일 패키지의 패키지 작성자/유지관리자가 이 동작을 변경하기로 결정하지 않는 한 하위 파일의 프리앰블 내에서 LaTeX에서 명령 정의가 - - 명령 \document
과 같은지 확인할 수 있습니다 . 그렇다면 하위 파일은 -명령을 통해 기본 TeX 파일에서 로드되므로 필요하지 않습니다. 그렇지 않은 경우 하위 파일은 "독립형"으로 컴파일되므로 필요합니다.\long
\empty
\subfile
\externaldocument
\externaldocument
다음과 같이 보일 수 있습니다:
main.tex
\documentclass[12pt,letterpaper]{article}
\usepackage[utf8]{inputenc}
\usepackage{xr}
%\usepackage{xr-hyper} % in case of also loading hyperref.
\makeatletter
\newcommand\longempty{}%
\newcommand\DoIfAndOnlyIfStandAlone{%
\ifx\document\longempty
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
}%
\makeatother
\usepackage{subfiles}
\begin{document}
\subfile{Afile}
\subfile{Bfile}
\end{document}
Afile.tex
\documentclass[main.tex]{subfiles}
\DoIfAndOnlyIfStandAlone{%
\externaldocument{Bfile}%
}%
\begin{document}
\section{Blah Blah}
\label{section: asection}
blah blah blah blah
\end{document}
Bfile.tex
\documentclass[main.tex]{subfiles}
\DoIfAndOnlyIfStandAlone{%
\externaldocument{Afile}%
}%
\begin{document}
\section{Bo bo boooooo}
\label{section: bsection}
Unlike section \ref{section: asection}.
\end{document}
\externaldocument
subfiles-package/documentclass의 매뉴얼에 언급되지 않은 xr-package/와 관련된 짜증의 원인은 LaTeX의 \include
.. \includeonly
-메커니즘일 수 있습니다:
subfiles-package 매뉴얼에는 subfiles-package를 사용할 때 command \subfileinclude
대신 command 를 사용해야 한다고 나와 있습니다 \include
.
\include
그럼에도 불구하고 LaTeX는 / \subfileinclude
대신 \input
/를 통해 가져온 각 파일에 대해 \subfile
파일 이름이 포함된 .tex 파일의 이름과 같고 파일 이름 확장자가 .aux인 별도의/부분 .aux 파일을 만듭니다.
따라서 하위 파일의 독립 실행형 컴파일 중에 생성된 .aux 파일의 파일 이름은 다음을 통해 문제의 하위 파일을 로드할 때 기본 TeX 파일을 컴파일하는 동안 생성된 부분 .aux 파일의 파일 이름과 동일합니다. \subfileinclude
.
따라서 \include
/를 사용할 때 \subfileinclude
main.tex 컴파일에서 문제의 하위 파일 컴파일로 전환할 때 main.tex 컴파일에서 생성된 해당 부분 .aux 파일이 제거되었는지 확인하십시오. 반대로 문제의 하위 파일을 독립 실행형으로 컴파일하는 것에서 main.tex 컴파일로 전환할 때 문제의 하위 파일을 독립 실행형으로 컴파일하여 생성된 .aux 파일을 제거했는지 확인하십시오.
서로 다른 문서 간의 상호 참조의 경우 LaTeX에서 상호 참조가 구현되는 방법에 대한 개요에 관심이 있을 수 있습니다. 나는 질문에 대한 대답에서 이러한 것들을 설명하려고 노력했습니다."새 환경 내에서 열거 참조를 방지하는 방법은 무엇입니까?".
이 외에도 xr-package/xr-hyper-package를 사용하여 서로 다른 문서 간 상호 참조를 수행할 때 하이퍼링크 대상 이름의 고유성은 하이퍼링크와 함께 하이퍼링크를 갖는 하이퍼참조를 로드할 때 문제가 될 수 있습니다. -참고자료. 질문에 대한 나의 대답에는"`xr` 패키지와 최종 PDF 조합과의 상호 참조?"나는 dvipdfmx-driver를 사용하고 dvipdfmx 프로그램(즉, XeTeX 기반 TeX 엔진의 자동화된 기본값)을 통해 .dvi에서 .pdf로 변환할 때 이러한 문제를 해결할 수 있는 방법에 대해 자세히 설명했습니다.