混合 sepfootnotes、endnotes 和子文件并在子文件中声明 notecontents

混合 sepfootnotes、endnotes 和子文件并在子文件中声明 notecontents

这个问题引出了包中的一个新功能:
sepfootnotes

我使用了 sepfootnotes、尾注和子文件的“混合”,其排列方式与下面的 MWE 类似。实际项目现在有 11 个章节(因此有几个文件),我想将注释内容保留在章节/子文件中。

我想\sepfootnotecontent在每章顶部声明 ,就像\sepfootnotecontent{a}{In subfile.}在子文件中声明 一样。不幸的是,这不起作用,我收到一条消息 'a' has not been assigned a content on input line 4.

在生成的 PDF 中,脚注无人的脚注内容(显然)是空的,而脚注 2 和 3 看起来符合预期。

我一直在阅读sepfootnotes.sty文件,但没明白。该subfiles包只是input读取子文件,那么第一条和第三条注释相对于 sepfootnotes 的实际区别是什么?

我想知道为什么会这样以及是否有解决方案。

subfiles-sepfootnotes.tex

\documentclass{article}
\usepackage{subfiles,sepfootnotes}
\usepackage{endnotes}
\let\footnote\endnote
\begin{document}

\sepfootnotecontent{b}{In main file.}
\subfile{child}

\theendnotes
\end{document}

child.tex

\documentclass[subfiles-sepfootnotes.tex]{subfiles}
\begin{document}

\sepfootnotecontent{a}{In subfile.}

Some text with footnotes in
subfile\sepfootnote{a}, with
endnote\endnote{In endnote.}
and in parent
file\sepfootnote{b}.

\end{document}

答案1

这是由于范围:注释中定义的子文件不适用于主文档,因为在子文件中它们必须在document环境内定义,因此仅限于该环境。

为了避免这种情况,您可以在 (v0.3b) 的第 134 行和第 145 行\global之前插入\@namedef(not ) ,以使您的注释定义具有全局范围。但我无法保证其他情况下的任何事情。\sep@namedefsepfootnote.sty

相关内容