Preguntas de compilación de subarchivos

Oct 05 2020

Entonces digamos que tengo un documento:

% Preamble
\usepackage{subfiles}
% Preamble
\begin{document}
    \maketitle
    \subfile{FileA}
    \subfile{FileB}
    \subfile{FileC}
\end{document}

Algunas preguntas:

  1. Supongamos que el archivo aún no está compilado y yo compilo, por ejemplo, FileA. ¿Aparecerá el título alguna vez o tendré que ejecutar el archivo principal para que aparezca el título?
  2. Por lo que veo, los subarchivos se compilan independientemente del resto de los subarchivos, es decir, compilar solo esa sección, mientras que compilar el archivo principal es lo mismo que si yo usara \inputo simplemente tuviera todo el código TeX de los subarchivos allí. ¿Hay alguna manera de compilar algunos subarchivos simultáneamente mientras se dejan intactos los otros subarchivos (como en, los resultados de los subarchivos no cambian en lugar de no aparecer en el pdf)?
  3. Si compilo un subarchivo, y los resultados de varios subarchivos están en la misma página que ese subarchivo, ¿los resultados de los subarchivos subsiguientes serán “sobrescritos” por los que se deben a la compilación de ese subarchivo?
  4. Acabo de compilar un subarchivo, por alguna razón, el tiempo de compilación es el mismo que el del archivo principal. Se supone que pase esto?
  5. Editar a 4: Acabo de cerrar el archivo principal y ejecuté el subarchivo, resulta que el resultado es compilar todo el archivo en lugar de solo el subarchivo, lo que parece contradictorio con que los subarchivos sean "compilables por sí mismos". ¿Alguien puede dar más detalles?

Yo uso TeXStudio por cierto.

Respuestas

1 gernot Oct 06 2020 at 18:18

Demasiado tiempo para los comentarios.

Con respecto a la pregunta 1: El título aparece en el documento que contiene el \maketitlecomando. Si está en el archivo principal y compila algún subarchivo, entonces el título no aparecerá, porque el subarchivo toma solo el preámbulo del archivo principal e ignora el resto.

Con respecto a la pregunta 2: esta pregunta no es específica de subfilesy la respuesta es básicamente "no". Hasta donde yo sé, ninguno de los procesadores TeX realiza el almacenamiento en caché y componen solo las partes que han cambiado. Algunos paquetes brindan la posibilidad de almacenar en caché el resultado de cálculos intensivos para la siguiente ejecución (como la externalización en pgfplots). A mayor escala, puede utilizar herramientas para crear un proyecto, como make, anty muchas más, para compilar solo las partes de un proyecto que han cambiado. Pero para los archivos TeX, aún llamará a un procesador tex que componga todo el archivo.

Con respecto a la pregunta 3: Creo que esta es una idea errónea de lo que hacen TeX y el paquete de subfiles. Al componer el documento principal, cargará las texfuentes de los subarchivos, ignorando cualquiera pdf. Por lo tanto, la composición tipográfica de cualquiera de los subarchivos generará nuevos pdfs para los subarchivos, pero dejará intacto el pdf del archivo principal. TeXStudio puede disfrazar el hecho de que está editando texarchivos que se componen sobre la marcha pdfpara ser vistos.

Con respecto a la pregunta 4: Al componer un subarchivo, el tiempo de procesamiento es definitivamente más corto que al componer el archivo principal. Sin embargo, en la mayoría de las situaciones no lo notará, porque iniciar el programa y abrir los archivos lleva mucho más tiempo que componer texto. Verá ahorros en tiempo real solo cuando el archivo principal sea enorme y / o algunas partes contengan gráficos intensivos en computación.

Con respecto a la pregunta 5: Probablemente se trate de un problema de uso o de TeXStudio. Es probable que TeXStudio siempre componga el conjunto de archivos como el 'actual', y probablemente no sabía que deseaba componer solo el subarchivo.

Recomendación general: comience con un solo archivo tex. Si se vuelve demasiado grande, estructúrelo usando \inputo \include. Solo si realmente necesita poder componer parte del documento de forma independiente, comience a experimentar con paquetes como subfiles.