Подфайлы в подкаталоге, файл не найден

Подфайлы в подкаталоге, файл не найден

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

Я попробовал следовать примеру модульных документов наВикиучебники, но у меня это не работает. Документ верхнего уровня будет создан, но в документах нижнего уровня будут ошибки «файл не найден».

Вот моя установка:

  • Папка с изображениями
  • папка текс
  • основной.текс
  • стили.sty

Внутри main.tex:

\documentclass[11pt,letterpaper]{article}
\usepackage{styling} %includes \usepackage{subfiles}
\begin{document}
\maketitle
\tableofcontents
\subfile{./tex/subpiece1}
\end{document}

Внутри subpiece1 в папке tex:

\documentclass[../main.tex]{subfiles}
\graphicspath{ {Images/subpiece1/} }

\begin{document}
\section{sectiontitle}
%Images and text
\end{document}

Ошибка при создании подфайла отдельно: ../main.tex:4: Ошибка LaTeX: Файл `styling.sty' не найден. [^^M]

решение1

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

Поскольку я не являюсь давним пользователем Latex, я не до конца понимаю механику проблемы, но подозреваю, что проблема в том, что при компиляции «ведомого» файла (в вашем случае «subpiece1.tex») ваш компилятор ищет пользовательский пакет в том же каталоге, что и «subpiece1.tex», и других каталогах tex по умолчанию.

Мне удалось решить эту проблему, изменив команду \usepackage{}, включив в нее относительный путь, который будет общим для «главного» и «подчиненного» tex-файлов.

Что тебе необходимо сделать:

  1. Добавьте папку в свой домашний каталог для главного документа. То есть в вашем домашнем каталоге должны быть папки: главная папка (содержащая main.tex), папка tex, папка images.
  2. Отредактируйте папку main.tex так, чтобы команда \usepackage{} включала относительный путь к «styling.sty» (она должна выглядеть как \usepackage{../styling} без расширения файла)
  3. Если вы правильно выполнили первый шаг, то «styling.sty» будет иметь тот же относительный путь, что и «main.tex» и «subpiece1.tex» (относительный путь для обоих — на одну папку выше. Это достигается с помощью «../» в команде \usepackage{})
  4. Обновите все остальные относительные пути к файлам, чтобы они читались так, как требуется.

main.tex теперь читается как

\documentclass[11pt,letterpaper]{article}
\usepackage{../styling} %includes \usepackage{subfiles}
\begin{document}
%\maketitle (I just removed these because for the demonstartion i didnt actually need them)
%\tableofcontents
\subfile{../tex/subpiece1}
\end{document}

subpiece1 теперь читается как

\documentclass[../master/main.tex]{subfiles}
% again I just removed the graphics path because I have no need for it
\begin{document}
\section{sectiontitle}
%Images and text
\end{document}

Лично я предпочитаю группировать preamble.sty в ту же папку, что и main.tex, но основная идея та же. Я считаю, что любой путь будет хорош, если относительные пути одинаковы для файлов 'main.tex' и 'subpiece1.tex'.

Я также подозреваю, что существуют более эффективные/элегантные способы обойти эту проблему, но пока мне это помогает.

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