Biblatex 在连续引用时不显示相同的来源。我尝试过dashed=false
,但不起作用。我怎样才能使作品始终被完整引用,即使在后续引用中也是如此?
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@interview{homer,
interviewee = {Homer Simpson},
interviewer = {Bart Simpson},
date = {2018-07-25},
address = {Springfield},
}
\end{filecontents*}
\begin{filecontents}{interview.dbx}
\DeclareDatamodelEntrytypes{interview}
\DeclareDatamodelFields[type=list,datatype=name]{
interviewer,
interviewee,
}
\DeclareDatamodelEntryfields[interview]{
addendum,
doi,
eprint,
eprintclass,
eprinttype,
interviewer,
interviewee,
location,
note,
pubstate,
}
\end{filecontents}
\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[datamodel=interview,backend=biber, dashed=false, style=authortitle, citestyle=verbose,]{biblatex}
\usepackage{hyperref}
\addbibresource{\jobname.bib}
\NewBibliographyString{interview}
\DefineBibliographyStrings{german}{%
interview = {Interview},
}
\DeclareNameAlias{interviewee}{author}
\DeclareBibliographyDriver{interview}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printnames{interviewee}%
\newunit\newblock
\bibstring{interview}%
\setunit{\addspace}%
\printnames{interviewer}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{location+date}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\begin{document}
\footcite{homer}
\footcite{homer}
\printbibliography
\end{document}
答案1
该系列的样式verbose
在第一次引用时显示完整引用(即完整的参考/参考书目条目),在后续引用时显示较短的作者标题引用。
对于较短的作者-标题引文,样式verbose
使用通常的labelname
和labeltitle
字段。这些字段是人工字段,它们按一定的优先顺序从其他字段中获取内容。、和labelname
中的第一个;、 、中的第一个。我们的引文没有这些字段,因此引文仍然完全为空。获取引文的一种解决方案是将具有 的字段包含在和的定义中,这样这些字段就不会为空。(short)author
(short)editor
translator
labeltitle
shorttitle
title
maintitle
@interview
@interview
labelname
labeltitle
在评论中您提到,@interview
s 也应该在后续引用中被完整引用,因此我们采取了略有不同的方法。以下 MWE 设置了一个通用结构,以区别对待特定条目类型的后续( short
in -speak)引用。biblatex
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@interview{homer,
interviewee = {Homer Simpson},
interviewer = {Bart Simpson},
date = {2018-07-25},
address = {Springfield},
}
\end{filecontents*}
\begin{filecontents}{interview.dbx}
\DeclareDatamodelEntrytypes{interview}
\DeclareDatamodelFields[type=list,datatype=name]{
interviewer,
interviewee,
}
\DeclareDatamodelEntryfields[interview]{
addendum,
doi,
eprint,
eprintclass,
eprinttype,
interviewer,
interviewee,
location,
note,
pubstate,
}
\end{filecontents}
\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[datamodel=interview,backend=biber, dashed=false, style=verbose]{biblatex}
\usepackage{hyperref}
\addbibresource{\jobname.bib}
\NewBibliographyString{interview}
\DefineBibliographyStrings{german}{%
interview = {Interview},
}
\DeclareNameAlias{interviewee}{author}
\DeclareBibliographyDriver{interview}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printnames{interviewee}%
\newunit\newblock
\bibstring{interview}%
\setunit{\addspace}%
\printnames{interviewer}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{location+date}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\newbibmacro*{cite:short:interview}{%
\usebibmacro{cite:full:citepages}%
\printtext[bibhyperlink]{%
\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}}
% cite:short is really 'cite:subsequent'
\renewbibmacro*{cite:short}{%
\ifbibmacroundef{cite:short:\strfield{entrytype}}
{\printnames{labelname}%
\setunit*{\printdelim{nametitledelim}}%
\printtext[bibhyperlink]{%
\printfield[citetitle]{labeltitle}}}
{\usebibmacro*{cite:short:\strfield{entrytype}}}}
\begin{document}
Lorem\footcite{homer}
ipsum\footcite{homer}
\printbibliography
\end{document}