使用 biblatex 分隔脚注中的重复引用和普通脚注

使用 biblatex 分隔脚注中的重复引用和普通脚注

我想使用 biblatex 和 backend=biber 来建立我想要的引用风格。所以我听从了 Audrey、Sacharja 和 moewe 的建议 (Biblatex footcite:自定义 biblatex 和参考书目样式)。输出结果如下: 在此处输入图片描述 在此处输入图片描述 在此处输入图片描述 我非常喜欢这种风格,从那时起就一直使用这种风格。但现在我尝试稍微改变一下,现在每页的末尾都会列出网站上使用的所有引用。例如,如果第一页使用了参考文献 1、2 和 3,而第二页使用了参考文献 2、3 和 4,那么应该将参考文献 2、3 和 4 放在第二页的底部,而不仅仅是那些之前没有使用过的。我尝试了以下方法:biblatex:是否有类似于 \ifciteseen 但在同一页内的命令?但无法使其正常工作。

因此,是否可以更改第一个示例中的代码,以便您可以在每个站点上引用参考文献,同时仍保留参考文献下的脚注?

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{filecontents}
\usepackage{xcolor}                 
\usepackage{manyfoot}
\usepackage[babel]{csquotes}
\usepackage[backend=biber,style=chem-angew,mcite,subentry]{biblatex}
\usepackage{hyperref}               
\hypersetup{%
colorlinks,
linkcolor={red!0!black},
citecolor={blue!0!black},
urlcolor={blue!80!black}
}

\ExecuteBibliographyOptions{citetracker=true,sorting=none,maxcitenames=3,
doi=false,url=false,isbn=false,hyperref=true,backref=false}

\DefineBibliographyStrings{ngerman}{
andothers = {\textit{et~al\adddot}}            
}

% Citation footnotes: use \footnoteA
\DeclareNewFootnote{A}

% Vanilla footnotes: use \footnoteB
\DeclareNewFootnote{B}

% Number of each bibliography entry in brackets
\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}

\makeatletter

\newtoggle{cbx@togcite}

% Citation number superscript in brackets
\renewcommand\@makefntext[1]{%
  \iftoggle{cbx@togcite}
    {\@textsuperscript{\normalfont[\@thefnmark]}\enspace #1}
    {\@textsuperscript{\normalfont\@thefnmark}\enspace #1}%
  \global\togglefalse{cbx@togcite}}

% Citation number superscript in brackets (for babel french)
\ifdef{\@makefntextFB}{%
\renewcommand\@makefntextFB[1]{%
  \iftoggle{cbx@togcite}
    {\@textsuperscript{\normalfont[\@thefnmark]}\enspace #1}
    {\@textsuperscript{\normalfont\@thefnmark}\enspace #1}%
  \global\togglefalse{cbx@togcite}}}{}

%---------------------------------------------------------------
% Mostly verbatim from Joseph Wright
% http://www.texdev.net/2010/03/08/biblatex-numbered-citations-as-footnotes/

\DeclareCiteCommand{\sfcite}[\cbx@superscript]%
  {\usebibmacro{cite:init}%
   \let\multicitedelim=\supercitedelim
   \iffieldundef{prenote}
     {}
     {\BibliographyWarning{Ignoring prenote argument}}%
   \iffieldundef{postnote}
     {}
     {\BibliographyWarning{Ignoring postnote argument}}}
  {\usebibmacro{citeindex}%
   \usebibmacro{sfcite}%
   \usebibmacro{cite:comp}}
  {}
  {\usebibmacro{cite:dump}}

\newbibmacro*{sfcite}{%
  \ifciteseen
  {}
  {\xappto\cbx@citehook{%
   \global\toggletrue{cbx@togcite}%
   \noexpand\footnotetextA[\thefield{labelnumber}]{%
     \fullcite{\thefield{entrykey}}\addperiod}}}}

\newrobustcmd{\cbx@superscript}[1]{%
  \mkbibsuperscript{\mkbibbrackets{#1}}%
  \cbx@citehook%
  \global\let\cbx@citehook=\empty}

\let\cbx@citehook=\empty
%---------------------------------------------------------------

\makeatother


\begin{filecontents}{jobname.bib}
@Article{Frank1953,
  author  = {Frank, F. C.},
  title   = {On spontaneous asymmetric synthesis},
  journal = {Biochim. Biophys. Acta},
  year    = {1953},
  volume  = {11},
  pages   = {459-463},
  doi     = {http://dx.doi.org/10.1016/0006-3002(53)90082-1},
  url     = 
  {http://www.sciencedirect.com/science/article/pii/0006300253900821},
  }

@Article{Kagan1986,
  author  = {Puchot, C. and Samuel, O. and Dunach, E. and Zhao, S. and 
  Agami, C. and Kagan, H. B.},
  title   = {Nonlinear effects in asymmetric synthesis. Examples in 
  asymmetric oxidations and aldolization reactions},
  journal = {J. Am. Chem. Soc.},
  year    = {1986},
  volume  = {108},
  number  = {9},
  pages   = {2353-2357},
  doi     = {10.1021/ja00269a036},
  url     = {http://dx.doi.org/10.1021/ja00269a036},
}

@article{Soai1995,
   author = {Soai, Kenso and Shibata, Takanori and Morioka, Hiroshi and 
   Choji, Kaori},
   title = {Asymmetric autocatalysis and amplification of enantiomeric 
   excess of a chiral molecule},
   journal = {Nature},
   year = {1995},
   volume = {378},
   number = {6559},
   pages = {767-768},
   url = {http://dx.doi.org/10.1038/378767a0}
}

@Article{Brown2001,
  author  = {Blackmond, Donna G. and McMillan, Christopher R. and Ramdeehul, 
  Shailesh and Schorm, Andrea and Brown, John M.},
  title   = {Origins of Asymmetric Amplification in Autocatalytic Alkylzinc 
  Additions},
  journal = {J. Am. Chem. Soc.},
  year    = {2001},
  volume  = {123},
  number  = {41},
  pages   = {10103-10104},
  doi     = {10.1021/ja0165133},
  url     = {http://dx.doi.org/10.1021/ja0165133},
}
\end{filecontents}

\addbibresource{jobname.bib}

\newbibmacro{string+doiurlisbn}[1]{%
  \iffieldundef{doi}{%
    \iffieldundef{url}{%
      \iffieldundef{isbn}{%
       \iffieldundef{issn}{%
          #1%
        }{%
          \href{http://books.google.com/books?vid=ISSN\thefield{issn}}{#1}%
        }%
      }{%
        \href{http://books.google.com/books?vid=ISBN\thefield{isbn}}{#1}%
      }%
    }{%
      \href{\thefield{url}}{#1}%
    }%
  }{%
    \href{https://doi.org/\thefield{doi}}{#1}%
  }%
}

\DeclareFieldFormat{journaltitle}{\usebibmacro{string+doiurlisbn} 
{\mkbibemph{#1}}}

\begin{document}
\tableofcontents
\newpage
\section{Title}
\null\vfill\noindent
Vanilla footnote.\footnoteB{Vanilla footnote text.}
First citation.\sfcite{Frank1953}
First citation.\sfcite{Kagan1986}
Vanilla footnote.\footnoteB{Vanilla footnote text.}
First ``multi'' citation.\sfcite{Frank1953,Kagan1986,Soai1995}
\newpage
\section{Title}
\null\vfill\noindent
Second citation.\sfcite{Frank1953}
Vanilla footnote.\footnoteB{Vanilla footnote text.}
Second citation.\sfcite{Soai1995}
Second citation.\sfcite{Kagan1986}\footnoteB{Vanilla footnote text.}
First citation.\sfcite{Brown2001}
\newpage
\printbibliography
\end{document}  

答案1

你可能想尝试使用 Audrey 的答案来在不同页面的脚注中重复相同的引用(顺便说一下,几天前德国的golatex.de上也有类似的问题https://golatex.de/chronologisch-zitierte-fussnoten-mit-literaturverzeichnis-t20577.html

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{xcolor}
\usepackage{manyfoot}
\usepackage[babel]{csquotes}
\usepackage[
  backend=biber,
  style=chem-angew,
  sorting=none,
  maxcitenames=3,
  subentry,
  doi=false,url=false,isbn=false,
  backref=false,
  mcite,
  citetracker,
  pagetracker=page,
]{biblatex}
\usepackage{hyperref}
\hypersetup{%
  colorlinks,
  linkcolor={red!0!black},
  citecolor={blue!0!black},
  urlcolor={blue!80!black}
}

\DefineBibliographyStrings{ngerman}{
  andothers = {\textit{et~al\adddot}}
}

\DeclareNewFootnote{A}
\DeclareNewFootnote{B}

\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}

\makeatletter
\newtoggle{cbx@togcite}

% Citation number superscript in brackets
\renewcommand\@makefntext[1]{%
  \iftoggle{cbx@togcite}
    {\@textsuperscript{\normalfont[\@thefnmark]}\enspace #1}
    {\@textsuperscript{\normalfont\@thefnmark}\enspace #1}%
  \global\togglefalse{cbx@togcite}}

% Citation number superscript in brackets (for babel french)
\ifdef{\@makefntextFB}{%
\renewcommand\@makefntextFB[1]{%
  \iftoggle{cbx@togcite}
    {\@textsuperscript{\normalfont[\@thefnmark]}\enspace #1}
    {\@textsuperscript{\normalfont\@thefnmark}\enspace #1}%
  \global\togglefalse{cbx@togcite}}}{}

% See https://tex.stackexchange.com/a/71566/35864
\let\cbx@savelist\@empty
\newcounter{cbx@inst@iter}
\newcounter{cbx@inst@lastonpage}
\setcounter{cbx@inst@lastonpage}{0}

\AtDataInput{%
  \csnumgdef{cbx@instcount@\thefield{entrykey}}{-1}}

% user-level citation command
\DeclareCiteCommand{\sfcite}[\cbx@superscript]
  {\usebibmacro{cite:init}%
   \let\multicitedelim\supercitedelim
   \iffieldundef{prenote}{}{\BibliographyWarning{Ignoring prenote argument}}%
   \iffieldundef{postnote}{}{\BibliographyWarning{Ignoring postnote argument}}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite:super:foot}%
   \usebibmacro{cite:comp}}
  {}
  {\usebibmacro{cite:dump}}

% save instcount, save key and last inline instcount if seen first on page
\newbibmacro*{cite:super:foot}{%
  \xdef\cbx@key{\thefield{entrykey}}%
  \ifsamepage{\value{instcount}}{\csuse{cbx@instcount@\cbx@key}}
    {}
    {\listxadd{\cbx@savelist}{\cbx@key}%
     \ifnumequal{\value{cbx@inst@lastonpage}}{0}%
       {\defcounter{cbx@inst@iter}{\value{instcount}}%
        \loop\ifnum\value{cbx@inst@iter}>0
          \ifsamepage{\value{instcount}}{\value{cbx@inst@iter}}
            {\ifcsundef{blx@fnpage@\the\value{cbx@inst@iter}}
               {\setcounter{cbx@inst@lastonpage}{\value{cbx@inst@iter}}}
               {}%
             \stepcounter{cbx@inst@iter}}
            {\setcounter{cbx@inst@iter}{0}}%
        \repeat}
       {}}%
  \csnumgdef{cbx@instcount@\cbx@key}{\value{instcount}}}

\newrobustcmd*{\cbx@superscript}[1]{%
  \mkbibsuperscript{\mkbibbrackets{#1}}%
  \cbx@footnote}

% defer citation footnotes to last inline reference instance on page
\newrobustcmd*{\cbx@footnote}{%
  \ifboolexpr{ not test {\ifdefempty{\cbx@savelist}}
               and test {\ifnumequal{\value{instcount}}{\value{cbx@inst@lastonpage}}} }
    {\cbx@sortlist@init%
     \let\do\cbx@do
     \dolistloop{\cbx@sortlist}%
     \global\let\cbx@savelist\@empty
     \setcounter{cbx@inst@lastonpage}{0}}
    {}}

% print footnotes in 'sorting' order
\def\cbx@do#1{%
  \ifinlist{#1}{\cbx@savelist}
    {\begingroup
     \blx@resetdata
     \blx@getdata@cite{#1}%
     \blx@setoptions@type\abx@field@entrytype
     \blx@setoptions@entry
     \blx@execute
     \blx@beglang
     \toggletrue{cbx@togcite}%
     \footnotetextA[\thefield{labelnumber}]{\blx@driver\abx@field@entrytype}%
     \blx@endlang
     \endgroup}
    {}}

% access internal list of sorted entry keys
\def\cbx@sortlist@init{%
  \global\letcs{\cbx@sortlist}
    {blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}}
\let\cbx@sortlist\@empty
\makeatother


\newbibmacro{string+doiurlisbn}[1]{%
  \iffieldundef{doi}{%
    \iffieldundef{url}{%
      \iffieldundef{isbn}{%
       \iffieldundef{issn}{%
          #1%
        }{%
          \href{http://books.google.com/books?vid=ISSN\thefield{issn}}{#1}%
        }%
      }{%
        \href{http://books.google.com/books?vid=ISBN\thefield{isbn}}{#1}%
      }%
    }{%
      \href{\thefield{url}}{#1}%
    }%
  }{%
    \href{https://doi.org/\thefield{doi}}{#1}%
  }%
}

\DeclareFieldFormat{journaltitle}{\usebibmacro{string+doiurlisbn}
{\mkbibemph{#1}}}

\begin{filecontents}{\jobname.bib}
@article{Frank1953,
  author  = {Frank, F. C.},
  title   = {On spontaneous asymmetric synthesis},
  journal = {Biochim. Biophys. Acta},
  year    = {1953},
  volume  = {11},
  pages   = {459-463},
  doi     = {10.1016/0006-3002(53)90082-1},
  url     =
  {http://www.sciencedirect.com/science/article/pii/0006300253900821},
}

@article{Kagan1986,
  author  = {Puchot, C. and Samuel, O. and Dunach, E. and Zhao, S. and
             Agami, C. and Kagan, H. B.},
  title   = {Nonlinear effects in asymmetric synthesis.
             Examples in asymmetric oxidations and aldolization reactions},
  journal = {J. Am. Chem. Soc.},
  year    = {1986},
  volume  = {108},
  number  = {9},
  pages   = {2353-2357},
  doi     = {10.1021/ja00269a036},
}
@article{Soai1995,
  author  = {Soai, Kenso and Shibata, Takanori and Morioka, Hiroshi 
             and Choji, Kaori},
  title   = {Asymmetric autocatalysis and amplification of
             enantiomeric excess of a chiral molecule},
  journal = {Nature},
  year    = {1995},
  volume  = {378},
  number  = {6559},
  pages   = {767-768},
  doi     = {10.1038/378767a0},
}
@article{Brown2001,
  author  = {Blackmond, Donna G. and McMillan, Christopher R.
             and Ramdeehul, Shailesh and Schorm, Andrea and Brown, John M.},
  title   = {Origins of Asymmetric Amplification
             in Autocatalytic Alkylzinc Additions},
  journal = {J. Am. Chem. Soc.},
  year    = {2001},
  volume  = {123},
  number  = {41},
  pages   = {10103-10104},
  doi     = {10.1021/ja0165133},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\tableofcontents
\newpage
\section{Title}
\null\vfill\noindent
Vanilla footnote.\footnoteB{Vanilla footnote text.}
First citation.\sfcite{Frank1953}
First citation.\sfcite{Kagan1986}
Vanilla footnote.\footnoteB{Vanilla footnote text.}
First ``multi'' citation.\sfcite{Frank1953,Kagan1986,Soai1995}
\newpage
\section{Title}
\null\vfill\noindent
Second citation.\sfcite{Frank1953}
Vanilla footnote.\footnoteB{Vanilla footnote text.}
Second citation.\sfcite{Soai1995}
Second citation.\sfcite{Kagan1986}\footnoteB{Vanilla footnote text.}
First citation.\sfcite{Brown2001}
\newpage
\printbibliography
\end{document}

在此处输入图片描述

相关内容