¿Cómo hago referencia a secciones en otros subarchivos?

¿Cómo hago referencia a secciones en otros subarchivos?

No puedo entender cómo se supone que debo hacer referencia a otras secciones en los subarchivos. He preparado un ejemplo sencillo a continuación:

principal

\documentclass[12pt,letterpaper]{article}
\usepackage[utf8]{inputenc}
\usepackage{xr}
\usepackage{subfiles}

\begin{document}
\subfile{Afile}
\subfile{Bfile}
\end{document}

Un archivo

\documentclass[main.tex]{subfiles}
\begin{document}
\section{Blah Blah}
\label{section: asection}
blah blah blah blah 
\end{document}

Archivo B

\documentclass[main.tex]{subfiles}
\begin{document}
\section{Bo bo boooooo}
\label{section: bsection}
Unlike section \ref{section: asection}.
\end{document}

Si compilo el archivo principal todo funciona correctamente. No puedo entender cómo compilar los subarchivos por separado y hacer que funcionen las referencias cruzadas con otros subarchivos. Puedo hacer que la compilación del subdocumento funcione usando to \externaldocument{Afile}en el preámbulo del archivo b, pero interrumpe la compilación del archivo principal. ¿Hay alguna manera de hacer que tanto el archivo principal como el subarchivo hagan referencias cruzadas correctamente? Si necesita más aclaraciones no dude en preguntar.

Respuesta1

Los comandos que subyacen al entorno de documentos son \documenty \enddocument.

Cuando el archivo TeX principal carga un subarchivo, el comando \documentse redefine para no entregar tokens: es igual al comando \emptydel kernel LaTeX 2ε pero, a diferencia del \emptycomando -, se redefine en términos de \long.

Siempre que los autores/mantenedores del paquete de subarchivos no decidan cambiar este comportamiento, puede hacer que LaTeX verifique dentro de los preámbulos de sus subarchivos si la definición del comando \documentes igual a ese \longcomando \empty. Si es así, el subarchivo se carga desde el archivo TeX principal mediante el \subfilecomando -y \externaldocumentno es necesario. De lo contrario, el subarchivo se compila de forma "independiente" y \externaldocumentes necesario.

Podría verse así:

principal.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}

ArchivoB.tex

\documentclass[main.tex]{subfiles}
\DoIfAndOnlyIfStandAlone{%
  \externaldocument{Afile}%
}%
\begin{document}
\section{Bo bo boooooo}
\label{section: bsection}
Unlike section \ref{section: asection}.
\end{document}

Una fuente de irritación en conjunto con el xr-package/ \externaldocumentno mencionado en el manual del subfiles-package/documentclass podría ser el \include.. \includeonlymecanismo de LaTeX:

El manual del paquete de subarchivos dice que cuando se usa el paquete de subarchivos se debe usar el comando \subfileincludeen lugar del comando \include.

No obstante, LaTeX para cada archivo que se importa a través de \include/ \subfileincludeen lugar de \input/ \subfilecrea un archivo .aux separado/parcial cuyo nombre de archivo es igual al nombre del archivo .tex incluido y cuya extensión de nombre de archivo es .aux.

Por lo tanto, el nombre del archivo .aux creado durante la compilación independiente de un subarchivo será el mismo que el nombre del archivo .aux parcial creado durante la compilación del archivo TeX principal al cargar el subarchivo en cuestión a través de \subfileinclude.

Por lo tanto, cuando use \include/ \subfileincludeasegúrese de eliminar el archivo .aux parcial correspondiente que proviene de la compilación de main.tex al cambiar de compilar main.tex a compilar el subarchivo en cuestión de forma independiente. Viceversa, asegúrese de eliminar el archivo .aux que proviene de la compilación independiente del subarchivo en cuestión cuando cambie de compilar el subarchivo en cuestión de forma independiente a compilar main.tex.

En caso de referencias cruzadas entre diferentes documentos, es posible que le interese un resumen de cómo se implementan las referencias cruzadas en LaTeX. Intenté explicar estas cosas en mi respuesta a la pregunta."¿Cómo evitar referencias a enumeraciones dentro de un nuevo entorno?".

Además de esto, al hacer referencias cruzadas entre diferentes documentos mediante el paquete xr/mediante el paquete xr-hyper, la unicidad de los nombres de los destinos de los hipervínculos puede ser un problema al cargar hyperref por tener también hipervínculos junto con la cruz. -referencias. En mi respuesta a la pregunta"¿Referencia cruzada con el paquete `xr` y la combinación final de PDF?"Expliqué cómo se pueden solucionar estos problemas al utilizar el controlador dvipdfmx y convertir de .dvi a .pdf mediante el programa dvipdfmx (que es, por ejemplo, el valor predeterminado automatizado con motores TeX basados ​​en XeTeX).

información relacionada