为了保持文档目录整洁,我在文档的顶层保留一个主文件,并将其他文件放在文件夹中:
.
├── bib
│ └── refs.bib
├── img
│ ├── img1.png
│ └── img2.png
├── tex
│ ├── part1.tex
│ ├── part2.tex
│ └── part3.tex
├── tmp
└── master.tex
我使用以下命令从 tex 导入 tex 文件:
% include from tex/
\usepackage{import}
\def\includeFromTex#1 {\subimport{tex/}{#1.tex}\include{#1}}
使用示例:
\begingroup\let\clearpage\relax % tweak that stops include from starting with newpage
\includeFromTex{10_-_calc}
\includeFromTex{20_-_disc}
\includeFromTex{30_-_app}
\endgroup
下面的每个文件都tex/
以以下内容开头:
% -*- TeX-master: "../master.tex" -*-
这对 tex 来说很好,但会破坏 reftex 构建目录和引用内容的能力。是否可以通知 reftex 我将 tex 文件保存在 下tex/
?
编辑:
由于我无法调整 reftex 来做到这一点,因此我将 texs 移到了 doc 目录:
.
├── bib
│ └── refs.bib
├── img
│ ├── img1.png
│ └── img2.png
├── tmp
├── 10_-_part1.tex
├── 20_-_part2.tex
├── 30_-_part3.tex
└── master.tex
现在我正在使用普通\input{}
文件并且一切正常(latex 和 reftex)。
(顺便说一句,如果对各个部分进行编号,则主文件将始终是最后一个。在这种情况下,可以TeX-master
自动进行:
% -*- eval: (setq TeX-master (car (last (directory-files default-directory nil ".*\\.tex$")))) -*-
应该把这一行放在子 tex 文件的顶部)
答案1
如果你不需要系统\includeonly
并且不希望包含的文件在新页面上开始,只需使用
\input{tex/10_-_calc}
\input{tex/20_-_disc}
\input{tex/30_-_app}
正如评论中提到的
\def\includeFromTex#1 {..
定义\includeFromTex
为将所有内容作为参数,直到下一个空格(或行尾),因此在您的示例中使用{}
被忽略的内容,并且行尾空格是必需的。
重新定义\clearpage
to\relax
肯定会破坏\include
机制,并可能导致数据丢失或写入错误的辅助文件。
reftex 工作显示输入文件中选取的部分:
答案2
嗯:这个变量reftex-include-file-commands
可能也很有用,它列出了需要包含其他文档的宏名称。