回忆录类尾注 \idtextinnotes 和 \printpageinnotes 的反向顺序

回忆录类尾注 \idtextinnotes 和 \printpageinnotes 的反向顺序

memoir课程有一个非常方便的尾注选项(\notepageref),通过该选项,注释可以根据文本词条以及词条出现的页码来键入,而不是尾注编号。(回忆录课手册,第 245 页)

在尾注中,词干似乎必须始终位于页码之前,因为\idinnotes始终在之前调用\pageinnotes(手册第 248 页),这必然会产生类似以下最小工作示例的结果:

\documentclass{memoir}

\makepagenote
\notepageref

\begin{document}

\chapter{A numbered chapter}

Some text that is going to require an endnote keyed to 
a lemma in the text, namely the following: `The doctrine, 
or belief, that everything is beautiful, including what 
is ugly, everything good, especially the bad, and everything 
right that is wrong.'\pagenote[The doctrine or belief]{Ambrose 
Bierce, \emph{The Devil's Dictionary}, s.v.\ `Optimism'.}

\printpagenotes

\end{document}

这是我在尾注部分得到的内容:

结果尾注

不过,我希望能够首先标出引理的页码,这样读者就可以快速识别特定页面的注释。(如果页码只出现在任何一页上几个引理中的第一个引理上,那就太好了。)

理想情况下,我希望有类似以下内容的尾注(取自 Judith McClure 和 Roger Collins 编辑的尾注),比德:英国教会史(牛津世界经典丛书,1999 年),第 375 页):

在此处输入图片描述

如能提供解决方案的建议,我们将不胜感激。

答案1

对于memoir类(与pagenote包中的宏定义不正确,正确的做法是重新定义\startnoteentrystart宏。

\documentclass{memoir}

\makepagenote
\notepageref

\makeatletter
\renewcommand\startnoteentrystart[4]{%
  \prenoteinnotes%
  \pageinnotes{#3}% ADDED
  \noteidinnotes{#1}{#2}%
  \@ifmtarg{#2}{\def\@currentlabel{#1}}{}%
  \pagenoteanchor{#4}%
%  \pageinnotes{#3}% DELETED
  \prenotetext%
}
\makeatother

\begin{document}

\chapter{A numbered chapter}

Some text that is going to require an endnote keyed to 
a lemma in the text, namely the following: `The doctrine, 
or belief, that everything is beautiful, including what 
is ugly, everything good, especially the bad, and everything 
right that is wrong.'\pagenote[The doctrine or belief]{Ambrose 
Bierce, \emph{The Devil's Dictionary}, s.v.\ `Optimism'.}

\printpagenotes

\end{document}

在此处输入图片描述

答案2

这还没有经过测试,但你可以在序言中尝试类似这样的操作(少一些我的错别字):

\renewcommand{\noteentry}[4]{%
  \prenoteinnotes
  \pageinnotes{#4}\noteidinnotes{#1}{#2}\noteinnotes{#3}%
  \postnoteinnotes}

即交换中的\noteidinnotes和的顺序。您可能需要调整 中各个元素之间的打印间距\pageinnotes\noteentry\noteenry

一个更繁琐的解决方案可能是\mynoteentry像上面那样定义一个,然后重新定义\noteentry调用该宏的任何宏。

相关内容