手动将条目添加到跟踪条目列表中

手动将条目添加到跟踪条目列表中

我觉得我缺少了一些简单的东西,但是我无法编写一个宏来手动将其添加entrykey到跟踪条目列表中,以biblatex使之\ifciteseen成为现实。

我究竟做错了什么?

\documentclass{article}
\usepackage[style=verbose,citetracker=true]{biblatex}
\addbibresource{biblatex-examples.bib}
\makeatletter
\def\sbl@blx@trackentry@global#1{%
  \ifbool{citetracker}
    {\xifinlistcs{#1}{blx@bsee@\the\c@refsection}
       {}
       {\listcsxadd{blx@bsee@\the\c@refsection}{#1}}}
    {}}
\let\trackentry\sbl@blx@trackentry@global
\def\showtrackedentries{\csshow{blx@bsee@\the\c@refsection}}
\makeatother
\begin{document}
\trackentry{augustine}

\showtrackedentries

\cite{augustine}

\showtrackedentries

\cite{augustine}

\showtrackedentries
\end{document}

答案1

biblatex对输入键进行去标记化,因此除非参数\trackentry通过,否则测试会失败\blx@xsanitizeafter。这有效:

\def\sbl@blx@trackentry@global#1{%
  \ifbool{citetracker}
    {\blx@xsanitizeafter{\def\sbl@blx@tempa}{#1}%
     \xifinlistcs{\sbl@blx@tempa}{blx@bsee@\the\c@refsection}
       {}
       {\listcsxadd{blx@bsee@\the\c@refsection}{\sbl@blx@tempa}}}
    {}}

相关内容