问题 Footcite Biblatex

问题 Footcite Biblatex

我需要一些帮助来将该\footcite命令与 Biblatex 一起使用。我使用的是 authoryear 样式。

根据我的论文指导原则,脚注必须具有以下结构:

作者姓氏(年份),第 X 页。

我已经找到了该问题的以下解决方案:

\renewbibmacro*{cite:labelyear+extrayear}{%
\iffieldundef{labelyear}
{}
{
\printtext[bibhyperref]{%
\printtext[parens]{
\printfield{labelyear}%
\printfield{extrayear}}}}}

但是当我使用它时,会生成以下输出: 脚注 http://dl.dropbox.com/u/1005161/Footnote.JPG

问题在于括号后的空格。你知道为什么会发生这种情况吗?此外,我如何才能禁用脚注引用中的名字?

完美的解决方案是在脚注编号和作者之间留一个空格。但这并不那么重要。

答案1

如果名字中带有style=authoryear\footcite,则说明您做错了——我猜测是您的文件中的作者周围多了一串括号.bib

脚注的格式与 无关biblatex。例如,您可以使用scrextend包(KOMA-Script 的一部分)在脚注标记和文本之间留出空格。

编辑:添加了“文章标题后的分号”的解决方案。

编辑 2:似乎每个“单元”后都需要分号。尝试删除 bibmacro 的重新定义in:并改为添加\renewcommand*{\newunitpunct}{\addsemicolon\space}

\documentclass{article}

\usepackage{scrextend}
\deffootnote{1.5em}{1em}{\textsuperscript{\thefootnotemark}~}

\usepackage[style=authoryear,autocite=footnote]{biblatex}

\renewbibmacro*{cite:labelyear+extrayear}{%
\iffieldundef{labelyear}
  {}
  {\printtext[bibhyperref]{%
   \printtext[parens]{% <- space
   \printfield{labelyear}%
   \printfield{extrayear}}}}}

\renewbibmacro{in:}{%
  \ifentrytype{article}{%
    \setunit{\addsemicolon\space}%
    \printtext{\bibstring{in}\intitlepunct}%
  }{%
    \printtext{\bibstring{in}\intitlepunct}%
  }%
}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@article{A01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
  journaltitle = {A Journal},
  volume = {1},
  number = {1},
}
@misc{B02,
  author = {{Buthor, B.}},% Too many braces!
  year = {2002},
  title = {Bravo},
  location = {There},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

Some text \autocite{A01}.

Some text \autocite{B02}.

\printbibliography

\end{document}

答案2

您的代码中有虚假空格:

\renewbibmacro*{cite:labelyear+extrayear}{%
\iffieldundef{labelyear}
  {}
  {\printtext[bibhyperref]{%
   \printtext[parens]{% <- space
   \printfield{labelyear}%
   \printfield{extrayear}}}}}

相关内容