9

В настоящее время я работаю с LaTeX. У меня есть большой документ, разделенный на несколько вложенных документов. Когда я работаю над вложенным документом, я хотел бы скомпилировать мастер-файл при нажатии Ctrl + B, а не файл, в котором я сейчас нахожусь. Как я могу это сделать?

2 ответа2

9

Я только что нашел ответ сам! Как уже упоминалось здесь, просто нужно %!TEX root = protokoll.tex как первая строка вложенных документов!

1

Если у вас есть 3 разных файла, которые вам нужны, вы можете использовать комментарии первой строки (или секунды, если вам нужны файлы utf8). Я использую его для компиляции основного файла TeX от одного из детей.

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

\usepackage[czech,english]{babel}

У меня есть скрипт, который смотрит на первую строку:

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

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

и простой файл сборки, нацеленный на мой собственный скрипт:

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

Таким образом, вы можете иметь столько "ссылок" в ваших файлах, сколько захотите. Просто переключите значение head -n1 .

В заключение я представляю вам мой скрипт сборки 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .