
Как убедиться, что настройки дочернего документа совместимы с параметрами главного документа?
Сегодня у меня возникли большие проблемы с цитированием:
Если я выбираю "стандартный стиль цитирования (числовой)" в главном документе и "natbib" в дочернем документе, то в "окне вставки цитирования" (в дочернем документе) я получаю опции, которые принадлежат пакету natbib (citet, citep, citeauthor и т. д.). Попытка отобразить документ приводит к ошибке: "control sequence undefinded" (очевидно, поскольку \citet определен только в пакете natbib, который я не включил (по крайней мере в главном)).
Нужно ли мне вручную синхронизировать настройки master и child? Разве это не должно быть возможно сделать автоматически или есть случаи использования, где разные настройки полезны? Я ожидаю поведения, похожего на LaTeX, где также возможно иметь поддокументы без заголовка.
Эта проблема:LyX BibTeX с дочерними документами не работает очевидно, была вызвана той же проблемой.
решение1
Это может ответить на ваш вопрос, вероятно, только частично: у меня есть главный документ с несколькими дочерними документами. Все файлы lyx имеют одинаковый тип документа и используют значения по умолчанию. Для включения пакетов или определения макросов у меня есть дополнительный файл tex (options.tex), который содержит все, что нужно сделать в преамбуле.
В преамбуле документов Lyx я добавляю input
инструкцию.
\input{options}
Это решение не идеально, но оно позволяет мне скомпилировать главный документ (что занимает некоторое время, поскольку он содержит более 190 страниц) или скомпилировать только дочерний документ.
решение2
В настоящее время единственным вариантом, похоже, является ручная синхронизация настроек, что чревато ошибками. Чтобы уменьшить количество ошибок, наиболее надежный рабочий процесс, который я нашел, это:
- Измените настройки родительского документа.
- Закрыть LyX
- Откройте родительский документ как текстовый документ (например, с помощью Emacs) и скопируйте часть, начинающуюся с
\begin_header
и заканчивающуюся на\end_header
. - Для каждого дочернего документа:
- Открыть дочерний документ как обычный текст
- Замените заголовок заголовком родительского документа.
Я написал скрипт для автоматизации этого процесса,lyx-header-util.py
[gist.github.com](требуется Python 3), что сокращает рабочий процесс до
Для каждого дочернего документа запустите
lyx-header-util.py copyheaderinplace PARENTFILE.LYX CHILDDOCUMENT.lyx
(перед этим рекомендуется сделать резервную копию; скрипт перезаписывает исходные файлы).