为 biblatex 定制 citestyle

为 biblatex 定制 citestyle

我现在正在使用

\usepackage[backend=biber, citestyle=numeric]{biblatex}

\usepackage[flushmargin]{footmisc}

\newcommand{\myautocite}[2][1]{\autocite[#1]{#2}{\let\thempfn\relax\footnotetext{\autocite{#2} \citeauthor{#2}, \citeyear{#2}, \citetitle{#2}.}}}

结果是\mayautocite{key}文中的引用确实是“[3]”,而在页面底部我记得“[3] Hilbert,1901,《第 19 条定理》”。我有两个问题:

--[main] 当我在页面上使用相同的引用时,它会被调用两次或多次,这是我不想要的。我希望每页只调用一次。

--[辅助] 我不希望在此回忆的开头有缩进空格,但希望将其保留用于通常的脚注。

非常感谢您就如何实现这一目标给出的指点!

答案1

这是完成该作业的代码。

\usepackage{csquotes}
\usepackage[%
    backend=biber,
    style=numeric-comp,
    citetracker=true,
    pagetracker=true,
    ]{biblatex}

\makeatletter
\renewbibmacro*{cite:comp}{%
  \xdef\cbx@citekey{\thefield{entrykey}}%
  \addtocounter{cbx@tempcntb}{1}%
  \ifciteseen
    {}
    {\csnumgdef{cbx@instcount\cbx@citekey}{-100}}%  
  \ifsamepage{\value{instcount}}{\number\csuse{cbx@instcount\cbx@citekey}}%
    {}
    {\renewcommand{\@makefntext}[1]{\noindent\normalfont##1}%
     \footnotetext{
       \printtext[labelnumberwidth]{%
         \printfield{prefixnumber}%
         \printfield{labelnumber}}%
       \addspace
       \renewcommand{\newunitpunct}{\addcomma\addspace}
       \bibfootnotewrapper{%\fullcite{\thefield{entrykey}}%
         \printfield{labelname}\usebibmacro{author}\newunit\printfield{year}\newunit\printfield{title}\addperiod}}}%
   \csnumgdef{cbx@instcount\cbx@citekey}{\value{instcount}}%
   \iffieldundef{shorthand}
    {\ifbool{bbx:subentry}
       {\iffieldundef{entrysetcount}
          {\usebibmacro{cite:comp:comp}}
          {\usebibmacro{cite:comp:inset}}}
       {\usebibmacro{cite:comp:comp}}}
    {\usebibmacro{cite:comp:shand}}}

\makeatletter
\newcommand{\myautocite}[2][1]{\cite[#1]{#2}}

相关内容