这个问题与行内引用作者,脚注引用年份。然而,受访者在定制 Year 的行为方面付出了相当大的努力。我想保留 biblatex 的默认行为并定制仅有的字段出现的位置。
这就是我要的:
正如 Feynman 1975 1所描述的,我们发现 lorem ipsem dolor。类似地,Schrodinger 1954 2发现了 doe re mi fa so la。
在脚注中我们有:
1超类对称性;1975 年。物理评论快报
2寻找我的猫;1954 年。失踪动物日记
因此,元问题是,如何在不修改的情况下自定义哪些字段是内联打印,哪些是脚注打印同上行为?
编辑
鉴于下面的@Jon 评论 - 让我们缩小范围以仅修改以下字段:
- 第一作者姓氏
- 年
- 出版于
- 标题
\autocite 应该给出:
排队:第一作者姓氏年份#
脚注:#标题 出版年份
答案1
这可以通过对 cite 宏进行小幅修改来实现(我们authoyear-ibid
在这里假设)
\renewbibmacro*{cite}{%
\global\boolfalse{cbx:loccit}%
\iffieldundef{shorthand}
{\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
{\usebibmacro{cite:ibid}}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\printdelim{nonameyeardelim}}}
{\printnames{labelname}%
\setunit{\printdelim{nameyeardelim}}}%
\usebibmacro{cite:labeldate+extradate}}}
{\usebibmacro{cite:shorthand}}%
\ifentrytype{article}
{\mkbibfootnote{\usebibmacro{cite:extrainfo:article}}}
{}}
您可以\ifentrytype{article}
用\ifboolexpr{not test {\ifciteibid} and test {\ifentrytype{article}}}
或 甚至 来替换\ifboolexpr{not test {\ifciteseen} and test {\ifentrytype{article}}}
(对于最后一个建议,您需要启用citetracker
)。
新宏cite:extrainfo:article
在哪里
\newbibmacro{cite:extrainfo:article}{%
\printfield[citetitle]{labeltitle}%
\newunit
\printlabeldateextra
\newunit
\usebibmacro{journal+issuetitle}%
}
MWE 与\ifboolexpr{not test {\ifciteseen} and test {\ifentrytype{article}}}
\documentclass{article}
\usepackage[style=authoryear-ibid, backend=biber, citetracker=true, giveninits=true, uniquename=init]{biblatex}
\addbibresource{biblatex-examples.bib}
\newbibmacro{cite:extrainfo:article}{%
\printfield[citetitle]{labeltitle}%
\newunit
\printlabeldateextra
\newunit
\usebibmacro{journal+issuetitle}%
}
\renewbibmacro*{cite}{%
\global\boolfalse{cbx:loccit}%
\iffieldundef{shorthand}
{\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
{\usebibmacro{cite:ibid}}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\printdelim{nonameyeardelim}}}
{\printnames{labelname}%
\setunit{\printdelim{nameyeardelim}}}%
\usebibmacro{cite:labeldate+extradate}}}
{\usebibmacro{cite:shorthand}}%
\ifboolexpr{not test {\ifciteseen} and test {\ifentrytype{article}}}
{\mkbibfootnote{\usebibmacro{cite:extrainfo:article}}}
{}}
\begin{document}
\cite{sigfridsson} and \cite{geer} and \cite{sigfridsson} and \cite{worman} and \cite{baez/article} and \cite{baez/article}
\end{document}
编辑代码已针对biblatex
v3.8 及更新版本进行了现代化处理。请参阅旧版本的编辑历史。