LaTeX: собрать все файлы в один

Исходный документ LaTeX может содержать команды импорта другого файла \input{filename.tex}. При активном использовании этой команды для того, чтобы разбить документ на разделы получается один основной документ, импортирующий другие файлы, которые в свою очередь могут импортировать другие и так далее. При необходимости собрать этот набор файлов в один, не содержащий команд импорта можно воспользоваться следующим скриптом.

#!/usr/bin/python
# prepare_tex.py

import sys
import re

def cat(fn):
    return open(fn, 'rt').read().replace('\\', '====')

def prepare_tex(fn):
    r = cat(fn)
    for s in re.findall(r'====input{([-a-zA-Z._0-9/]*)}', r):
    cs = prepare_tex(s)
    r = re.sub(r'====input{' + s + '}', cs, r)
    return r

print prepare_tex(sys.argv[1]).replace('====', '\\')

Скрипт необходимо сохранить под именем prepare_tex.py в каталог с основным файлом, например main.tex, после чего запустить:

$ python prepare_tex.py main.tex