LyX синхронизирует настройки дочерних документов с главными, особенно касающиеся стиля цитирования

LyX синхронизирует настройки дочерних документов с главными, особенно касающиеся стиля цитирования

Как убедиться, что настройки дочернего документа совместимы с параметрами главного документа?

Сегодня у меня возникли большие проблемы с цитированием:

Если я выбираю "стандартный стиль цитирования (числовой)" в главном документе и "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
    

(перед этим рекомендуется сделать резервную копию; скрипт перезаписывает исходные файлы).

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