Podniosły tekst 2: Praca z wieloma dokumentami, tworzenie głównego pliku

9

Obecnie pracuję z LaTeX. Mam duży dokument podzielony na kilka poddokumentów. Kiedy pracuję nad dokumentem podrzędnym, chciałbym skompilować plik główny po naciśnięciu klawiszy Ctrl + b, a nie plik, w którym aktualnie się znajduję. Jak to zrobić?

Elumbella
źródło

Odpowiedzi:

9

Właśnie znalazłem odpowiedź! Jak wspomniano tutaj , wystarczy umieścić %!TEX root = protokoll.tex jako pierwszy wiersz dokumentów podrzędnych!

Elumbella
źródło
Bardzo to doceniam!!! Ten problem wprawił mnie w zakłopotanie.
Zhigong Li
1

Jeśli masz 3 różne potrzebne pliki, możesz użyć komentarzy pierwszego wiersza (lub drugiego, jeśli potrzebujesz rzeczy utf8). Używam go do kompilacji głównego pliku TeX od jednego z dzieci.

%!../main_file.tex
\documentclass[12pt,a4paper]{scrartcl}

\usepackage[czech,english]{babel}

Mam skrypt, który wygląda w pierwszym wierszu:

match=`head -n1 $1 | grep %!`

if [[ $match ]]
    then
        # do stuff with the parent's name, which is ${match:2:100}
    else
        # no match :/
fi

i prosty plik kompilacji mający na celu mój własny skrypt:

{
    "cmd": ["/path/to/build/script.sh", "$file"],
    "selector": "whatever"
}

W ten sposób możesz mieć dowolną liczbę „referencji” w swoich plikach. Po prostu zmień wartość head -n1.

Na koniec przedstawiam wam mój skrypt kompilacji XeLaTeX;)

#!/bin/bash
file="$1"
flag="-halt-on-error"

match=`head -n1 $file | grep %!`

if [[ $match ]]
    then
        if [ ${match:2:3} = ../ ]
            then
                cd .. &&
                target=${match:5:100}
            else
                target=${match:2:100}
        fi
    else
        target=$file
fi
rubber -c 'set arguments -shell-escape' -f -m xelatex -W all $target

exit 0
mreq
źródło