如何让 enotez 列出页码而不是参考编号?

如何让 enotez 列出页码而不是参考编号?

下面的我的 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}

埃诺特兹

相关内容