Включение полноценных файлов в один документ

Включение полноценных файлов в один документ

Возможный дубликат:
Создайте файл .tex, который объединяет полные документы .tex в подкаталогах.

У меня есть пара файлов, которые изначально задумывались как отдельные документы. Но теперь я хочу скомпилировать их в один документ. Проблема в том, что у каждого из них есть свои собственные пакеты, заголовки и т. д., и метод \includeне так прост для таких документов. (Мне нужно включить тот же список пакетов в основной файл и закомментировать их все в поддокументе, что является долгой ручной процедурой.)

Какой лучший способ объединить их все в один, помимо внешнего объединения PDF-файлов?

решение1

Я использовал {standalone}пакет именно для этой цели. Основные файлы должны использовать:

\documentclass[preview=false]{standalone}

или загрузите standaloneпакет около начала преамбулы. Полная преамбула, необходимая для подфайлов, должна быть загружена основным документом.

В примере ниже я использовал пакет filecontentsтолько для того, чтобы иметь возможность обернуть подфайл в один пример кода. Итак, файл subfile.texздесь является подфайлом, в данном случае он состоит из tikzрисунка. Этот файл может быть скомпилирован сам по себе. Основной файл загружается:

\usepackage{standalone}
\usepackage{tikz}

а затем просто \input{subfile}импортирует подфайл.

Код:

\documentclass{article}
\usepackage{standalone}
\usepackage{tikz}

\usepackage{filecontents}
\begin{filecontents}{subfile.tex}
    \documentclass{article}
    \usepackage{tikz}
    
    \begin{document}
    \begin{tikzpicture}
    
    \coordinate (EllipseOrigin) at (0,0);
    \newcommand*{\XRadius}{4.0}
    \newcommand*{\YRadius}{3.0}
    
    \draw [blue, thin, ->] (-5,0) -- (5,0) node [right] {$x$};
    \draw [blue, thin, ->] (0,-4) -- (0,4) node [above] {$y$};
    
    \draw [red, ultra thick]% Graph Ellipse
        (EllipseOrigin) ellipse [x radius=\XRadius,y radius=\YRadius];
    
    \end{tikzpicture}
    \end{document}
\end{filecontents}

\begin{document}
    \input{subfile}
\end{document}

Также есть subpreamblesопция пакета для автономного класса, которая позволяет использовать преамбулу из подфайлов. Так что если вы не можете иметь одну преамбулу в главном файле для всех ваших подфайлов, возможно, это может быть полезной опцией.


А также естьпакетcombine, который также позволяет объединять отдельные документы в один документ.

решение2

В дополнение к связанному вопросу,subfilesупаковкапредоставляет похожую функциональность. Из пакета README:

Использование subfilesпользователя позволяет более комфортно работать с многофайловыми проектами, позволяя как обрабатывать вспомогательные файлы по отдельности, так и обрабатывать основной файл, который их включает, не внося никаких изменений ни в один из них.

Связанный контент