我需要一些帮助来将该\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}}}}}