다른 하위 파일의 섹션을 어떻게 참조합니까?

다른 하위 파일의 섹션을 어떻게 참조합니까?

서브파일의 다른 섹션을 어떻게 참조해야 하는지 알 수 없습니다. 아래에 간단한 예를 준비했습니다.

기본

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

\externaldocumentsubfiles-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/를 사용할 때 \subfileincludemain.tex 컴파일에서 문제의 하위 파일 컴파일로 전환할 때 main.tex 컴파일에서 생성된 해당 부분 .aux 파일이 제거되었는지 확인하십시오. 반대로 문제의 하위 파일을 독립 실행형으로 컴파일하는 것에서 main.tex 컴파일로 전환할 때 문제의 하위 파일을 독립 실행형으로 컴파일하여 생성된 .aux 파일을 제거했는지 확인하십시오.

서로 다른 문서 간의 상호 참조의 경우 LaTeX에서 상호 참조가 구현되는 방법에 대한 개요에 관심이 있을 수 있습니다. 나는 질문에 대한 대답에서 이러한 것들을 설명하려고 노력했습니다."새 환경 내에서 열거 참조를 방지하는 방법은 무엇입니까?".

이 외에도 xr-package/xr-hyper-package를 사용하여 서로 다른 문서 간 상호 참조를 수행할 때 하이퍼링크 대상 이름의 고유성은 하이퍼링크와 함께 하이퍼링크를 갖는 하이퍼참조를 로드할 때 문제가 될 수 있습니다. -참고자료. 질문에 대한 나의 대답에는"`xr` 패키지와 최종 PDF 조합과의 상호 참조?"나는 dvipdfmx-driver를 사용하고 dvipdfmx 프로그램(즉, XeTeX 기반 TeX 엔진의 자동화된 기본값)을 통해 .dvi에서 .pdf로 변환할 때 이러한 문제를 해결할 수 있는 방법에 대해 자세히 설명했습니다.

관련 정보