我觉得我缺少了一些简单的东西,但是我无法编写一个宏来手动将其添加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}}}
{}}