我正在使用 Biblatex,并使用以下代码创建了两个不同类别的脚注,一个带有引文,另一个带有常规脚注
\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}}}
此代码取自这个帖子
但是,当我引用时,\sfcite
上标中没有出现脚注编号,我收到错误cite:init
,cite:comp
并且cite:dump
未定义,我认为这可能是导致问题的原因
如果相关的话,我会在 biblatex 上使用以下选项
\usepackage[backend=bibtex, bibstyle=nature, citestyle = authoryear, natbib=true ,subentry, mcite, citetracker, pagetracker=page]{biblatex}
此外,整个引文在脚注中的显示方式与在参考书目中的显示方式相同,但我希望作者年份风格,但我不知道我需要改变什么
这是 MWE
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{xcolor}
\usepackage{manyfoot}
\usepackage[autostyle=true]{csquotes}
\usepackage[backend=bibtex, bibstyle=nature, citestyle = authoryear, natbib=true ,subentry, mcite, citetracker, pagetracker=page]{biblatex}
\usepackage{hyperref}
\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}
本报告由以下来源汇编而成:pdfLaTeX编译器,我尝试使用 biber 作为后端,但随后出现错误引文未定义它只是将参考文献名称放在上标中,脚注和参考书目完全消失