我如何确保子文档的文档设置与主文档兼容?
今天我遇到了一个关于引用的大麻烦:
如果我在主文档中选择“引用样式标准(数字)”,在子文档中选择“natbib”,那么在“插入引用窗口”(在子文档中)中,我会得到属于 natbib 包的选项(citet、citep、citeauthor 等)。尝试呈现文档时会出现错误:“控制序列未定义”(显然,因为 \citet 仅在 natbib 包中定义,而我没有将其包括在内(至少在主文档中))。
我是否必须手动保持主设置和子设置同步?难道不能自动完成吗?或者是否有不同的设置有用的用例?我期望一种类似于 LaTeX 的行为,其中也可以有没有任何标题的子文档。
这个问题:LyX BibTeX 与子文档无法正常工作 显然是由同一问题引起的。
答案1
这也许只能部分回答您的问题:我有一个主文档和一些子文档。所有 lyx 文件都具有相同的文档类型并使用默认值。为了包含包或定义宏,我有一个额外的 tex 文件 (options.tex),其中包含序言中需要完成的所有内容。
在 lyx 文档的序言中我添加了一条input
说明。
\input{options}
这个解决方案并不完美,但它使我能够编译主文档(这需要一些时间,因为它有 190 多页)或仅编译子文档。
答案2
目前唯一的选择似乎是手动同步设置,这很容易出错。为了减少错误,我发现最可靠的工作流程是:
- 更改父文档的设置。
- 关闭 LyX
\begin_header
将父文档作为纯文本文档打开(例如使用 Emacs)并复制以 开头和以 结尾的部分\end_header
。- 对于每个子文档:
- 以纯文本形式打开子文档
- 用父文档页眉覆盖该页眉。
我已经编写了一个脚本来自动执行这个过程,lyx-header-util.py
[gist.github.com](需要 Python 3),这将工作流程简化为
对于每个子文档运行
lyx-header-util.py copyheaderinplace PARENTFILE.LYX CHILDDOCUMENT.lyx
(执行此操作之前建议备份;脚本会覆盖原始文件)。