В настоящее время я работаю с LaTeX. У меня есть большой документ, разделенный на несколько вложенных документов. Когда я работаю над вложенным документом, я хотел бы скомпилировать мастер-файл при нажатии Ctrl + B, а не файл, в котором я сейчас нахожусь. Как я могу это сделать?
2 ответа
Я только что нашел ответ сам! Как уже упоминалось здесь, просто нужно %!TEX root = protokoll.tex
как первая строка вложенных документов!
Если у вас есть 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