Erhabener Text 2: Arbeiten mit mehreren Dokumenten, Erstellen einer Stammdatei

9

Ich arbeite derzeit mit LaTeX. Ich habe ein großes Dokument, das in mehrere Unterdokumente aufgeteilt ist. Wenn ich in einem Unterdokument arbeite, würde ich gerne die Masterdatei kompilieren, wenn ich Strg + B drücke, nicht die Datei, in der ich mich gerade befinde. Wie mache ich das?

Elumbella
quelle

Antworten:

9

Ich habe die Antwort gerade selbst gefunden! Wie hier erwähnt , muss man nur %!TEX root = protokoll.tex als erste Zeile der Unterdokumente setzen!

Elumbella
quelle
Ich weiß das wirklich zu schätzen !!! Dieses Problem hat mich eine Weile verwirrt.
Zhigong Li
1

Wenn Sie 3 verschiedene Dateien benötigen, können Sie Kommentare in der ersten Zeile (oder in der zweiten Zeile, wenn Sie utf8-Inhalte benötigen) verwenden. Ich benutze es, um die Haupt-TeX-Datei von einem der Kinder zu kompilieren.

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

\usepackage[czech,english]{babel}

Ich habe ein Skript, das in der ersten Zeile steht:

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

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

und eine einfache Build-Datei, die auf mein benutzerdefiniertes Skript abzielt:

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

Auf diese Weise können Sie so viele "Referenzen" in Ihren Dateien haben, wie Sie möchten. Schalten Sie einfach den Wert von head -n1.

Zum Schluss präsentiere ich Ihnen mein XeLaTeX-Build-Skript;)

#!/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
quelle