下面的我的 MWE 在文本旁边和尾注列表中正确列出了参考文献编号。
\documentclass{memoir}
\usepackage{enotez}
\usepackage{blindtext}
% \setenotez{backref=true}
% \usepackage{hyperref}
\begin{document}
\blindtext\endnote{Endnote A}
\blindtext\endnote{Endnote B}
\blindtext\endnote{Endnote C}
\blindtext\endnote{Endnote D}
\blindtext\endnote{Endnote E}
\blindtext\endnote{Endnote F}
\printendnotes
\end{document}
但是,我正在写的书是流行非小说类书籍,惯例是将参考编号隐藏在文本旁边,并将页码列在尾注旁边,如下所示:
使用 enotez 可以实现上述功能吗?
答案1
enotez
由于打印列表时使用命令处理尾注编号的方式\enotez_write_list_number:n
,我无法弄清楚如何使用内置模板更改行为。相反,我只是定义了一个新模板,其中代码
\enotez_list_number:n
{ \enotez_write_list_number:n {##1} }
被替换为
\enotez_list_number:n
{ \pageref{custom:enotez:##1} }
我们custom:enotez:\@currentlabel
为每个 enotezmark 添加一个标签。要删除尾注标记,我们只需要
\renewcommand{\enotezwritemark}[1]{}
这是您的示例:
\documentclass{memoir}
\usepackage{enotez}
\usepackage{blindtext}
%\usepackage{hyperref}
\renewcommand{\enotezwritemark}[1]{}
\makeatletter
\ExplSyntaxOn
\AddToHook{cmd/enotez_endnote_mark:n/after}
{
\label{custom:enotez:\@currentlabel}
}
\DeclareTemplateInterface {enotez-list} {customlist} {1}
{
heading : function 1 = \enotezlistheading {#1} ,
format : tokenlist = \footnotesize ,
number : function 1 = \enmark{#1} ,
number-format : tokenlist = \normalfont ,
list-type : tokenlist = description
}
\DeclareTemplateCode {enotez-list} {customlist} {1}
{
heading = \enotez_list_heading:n ,
format = \l__enotez_list_format_tl ,
number = \enotez_list_number:n ,
number-format = \l__enotez_list_number_format_tl ,
list-type = \l__enotez_list_type_tl
}
{
\AssignTemplateKeys
\enotez_set_totoc:
\enotez_list_heading:n { \l__enotez_list_name_tl }
\enotez_list_preamble:
\enotez_build_print_list:nnnn {#1}
{
\group_begin:
\tl_use:N \l__enotez_list_format_tl
\begin{\l__enotez_list_type_tl}
}
{
\item
[
\enotez_list_number:n
{ \pageref{custom:enotez:##1} } % this is the only changed line
]
% \cs_set:cpn {@currentlabel}
% { \p@endnote \l__enotez_endnote_mark_tl }
\tl_use:N \g__enotez_endnote_text_tl
}
{
\end{\l__enotez_list_type_tl}
\group_end:
}
\enotez_list_postamble:
}
\DeclareInstance{enotez-list}{custom}{customlist}{}
\ExplSyntaxOff
\makeatother
\begin{document}
\blindtext\endnote{Endnote A}
\blindtext\endnote{Endnote B}
\blindtext\endnote{Endnote C}
\blindtext\endnote{Endnote D}
\blindtext\endnote{Endnote E}
\blindtext\endnote{Endnote F}
\printendnotes[custom]
\end{document}