
Я пишу технические документы с математикой/диаграммами/графиками/кодом и т. д. Я хочу скомпилировать их в один документ, а также должен иметь возможность запускать каждый из них независимо. Эти технические документы, относящиеся к каждой теме, находятся в своих папках. Может ли кто-нибудь подсказать мне, как лучше управлять этим и сделать его переносимым? Например, я работаю над теми же документами на Mac OSX/MS Windows.
решение1
Если я правильно понял вопрос, то решением может быть использование пакета subfiles
.
Допустим, main.tex
это ваш основной файл, и file1.tex
, file2.tex
, и file3.tex
— это те, которые вы хотите включить. Тогда ваш основной документ будет выглядеть примерно так:
основной.txt:
\documentclass[a4paper]{article}
<your preamble>
\usepackage{subfiles}
\begin{document}
\subfile{file1}
\subfile{file2}
\subfile{file3}
\end{document}
где вы можете разместить текст везде, где захотите, как если бы вы использовали \include
или \input
вместо \subfile
. Содержимое file1.tex
тогда будет выглядеть примерно так
файл1.tex
\documentclass[main.tex]{subfiles}
\begin{document}
<your document goes here>
\end{document}
Такая же структура должна применяться к файлам file2.tex
и file3.tex
.
Теперь, когда вы компилируете main.tex
, то содержимое файлов, то есть то, что я обозначил <ваш документ будет здесь> будет включен в ваш документ, и если вы скомпилируете, скажем file1.tex
, , то содержимое file2.tex
будет скомпилировано так, как если бы оно имело спецификации documentclass и преамбулу main.tex
.
Итак, теперь все файлы в проекте можно скомпилировать по отдельности, но для компиляции одного из них вам необходимо иметь подфайлы main.tex
в одном каталоге.
документация и установка пакета
Я не уверен, subfiles
идет ли он в стандартном пакете. Мне он не подошел, поэтому в зависимости от того, насколько вы опытны в установке пакетов, я хотел сказать, что пакеты можно найти на
http://www.ctan.org/tex-archive/macros/latex/contrib/subfiles/
где также есть документация пакета, а именно pdf-документ subfiles.pdf
. Если вы не знаете, как обращаться .ins
с .dtx
файлами, то есть небольшое руководство на
http://en.wikibooks.org/wiki/LaTeX/Packages/Установка_дополнительных_пакетов
и если вы хотите, вы можете поместить файлы subfiles.cls
и subfiles.sty
, которые генерируются при сборке пакета, в тот же каталог, что и main.tex
, так что вы не будете зависеть от того, будет ли установлен пакет в следующей системе, на которой необходимо будет скомпилировать файлы subfiels
.
РЕДАКТИРОВАТЬ
Отвечать
У меня есть три уровня каталогов, 1 - верхний уровень, который содержит rootfile.tex, 2- уровень глав, который содержит основной файл каждой главы, 3- уровень разделов, который содержит фактическое содержимое этой главы. Я создаю экземпляр 3 в 2 с помощью \include{./Sections/part1}. Как можно управлять такой системой с помощью подфайлов? – avlsi
Предположим, что у вас есть файлы
./rootfile.tex
./chapter/chap1.tex
./chapter/chap1/section1.1.tex
./chapter/chap1/section1.2.tex
./chapter/chap2.tex
./chapter/chap2/section2.1.tex
./chapter/chap2/section2.2.tex
./chapter/chap3.tex
./chapter/chap3/section3.1.tex
./chapter/chap3/section3.2.tex
и вы хотите включить файлы sectionX.1.tex
и sectionX.2.tex
в файл chapX.tex
для X=1,2 и все еще иметь возможность компилировать оба ваших файла раздела, ваши chapterfiles и ваш корневой файл. Это можно сделать, если ваши файлы будут выглядеть примерно так:
корневой файл.tex:
\documentclass[a4paper]{article}
<your preamble>
\usepackage{subfiles}
\def\dirlevel{../}
\begin{document}
\def\dirlevel{}
\subfile{./chapter/chap1}
\subfile{./chapter/chap2}
\subfile{./chapter/chap3}
\end{document}
chapX.tex:
\documentclass[./../rootfile.tex]{subfiles}
\begin{document}
\subfile{./\dirlevel chap/chapX/sectionX.1}
\subfile{./\dirlevel chap/chapX/sectionX.2}
\end{document}
sectionX.Y.tex:
\documentclass[./../../rootfile.tex]{subfiles}
\begin{document}
<your section goes here>
\end{document}
Хитрость в том, что \def\dirlevel{}
он читается только в том случае, если вы его компилируете rootfile.tex
, тогда как \def\dirlevel{../}
он читается независимо от того, какой файл вы компилируете, поэтому независимо от того, какой файл вы компилируете, LaTeX все равно сможет найти ваши файлы.