使用子文件包时的不同行为

使用子文件包时的不同行为

我使用该subfiles软件包将我正在处理的主要文档分成几个章节,这样我就不必每次都编译整个文档。

这意味着我不会在任何单独的章节文件中打印参考书目,而只会在主文件中打印。在编译单独的章节时,这会导致出现警告hyperref,抱怨缺少参考书目,正如已经讨论过的这里

hyperref=false那里发布的解决方案是在加载时使用包选项biblatex。这解决了章节文件中的问题,但现在我在主文件中没有链接。

所以我的问题是:有没有办法将主文件与其他文件区分开来,以便我可以使用如下代码:

\ifmaindocument{\usepackage[backend=biber]{biblatex}}
\ifsubdocument{\usepackage[backend=biber, hyperref=false]{biblatex}}

在序言中?

答案1

主文件和子文件之间的一个不同点是名称。假设你的主文件名为main.tex

\usepackage{xstring}

\IfEq{\jobname}{\detokenize{main}}{%
    % stuff for main file
}{%
  % stuff for subfile
}

答案2

您最新的问题给了我另一个不需要额外软件包的想法:

\makeatletter
\ifdefined\preamble@file
    % stuff for the subfile
\else
    % stuff for the main file
\fi
\makeatother

相关内容