对于某本期刊,我必须使用芝加哥格式并附上尾注。如果参考文献已经出现在前一个尾注中,我可能会使用“同上”。
如果参考文献没有出现在前一个尾注中,但出现在之前的一些尾注中,我必须写“作者(参见上面的注释 x)”。
目前我使用 biblatex-chicago 包
\usepackage[notes,natbib,isbn=false,backend=biber]{biblatex-chicago}
但这里的输出只是供后续引用的缩短版本的引用。
我怎样才能改变风格,用对第一个提到的参考文献的引用来替换缩写形式?
答案1
biblatex-chicago
确实不适合修改。如果您使用下面的代码,您可能不再完全兼容 CMS,因此请自行承担风险。
verbose-inote
已经实现这种风格的基础设施被窃取了。
由于一些biblatex-chicago
宏必须非常复杂才能正确完成任务,因此所需的代码行数比其他样式要多一些。
\documentclass{article}
\usepackage[notes,natbib,isbn=false,backend=biber,singletitle]{biblatex-chicago}
\usepackage{hyperref}
\addbibresource{biblatex-examples.bib}
\NewBibliographyString{above}
\DefineBibliographyStrings{english}{above = {above}}
\makeatletter
\renewbibmacro*{cite:full}{%
\printtext[bibhypertarget]{%
\usedriver
{\DeclareNameAlias{sortname}{default}\frenchspacing}%
{cite:\thefield{entrytype}}}%
\csxdef{cbx@f@\thefield{entrykey}}{\the\value{instcount}}%
\label{cbx@\the\value{instcount}}}
\newtoggle{cbx:pageref}
\renewbibmacro*{cite:short}{%
\usebibmacro{allshort+firstcite+xref}%
\ifthenelse{\ifnameundef{labelname}\OR%
\ifentrytype{inreference}\OR%
\ifentrytype{reference}\OR%
\ifentrytype{mvreference}}%
{\ifthenelse{\iffieldequalstr{entrysubtype}{magazine}\AND\NOT%
\ifentrytype{periodical}}% Simplify .bib creation
{\ifuseauthor%
{\ifboolexpr{%
not test {\iffieldundef{shortjournal}}%
and
((
test {\ifcitation}%
and
togl {cms@citejtabb}%
)
or
(
test {\ifbibliography}%
and
togl {cms@bibjtabb}%
))
}%
{\printfield[shortjournal]{shortjournal}\newcunit}%
{\printfield[journaltitle]{journaltitle}\newcunit}}%
{}}%
{\ifentrytype{manual}%
{\printlist{organization}\isdot\newcunit}%
{}}}%
{\ifboolexpr{%
test {\ifciteidem}%
and
not test {\ifbibliography}%
and
not test {\iffirstonpage}%
and
not togl {cms@noidem}%
and
not togl {cms@headlessnote}%
}%
{\bibstring[\mkibid]{idem\thefield{gender}}%
\classicpunct}%
{\iffieldequalstr{authortype}{anon}%
{\bibleftbracket\printnames{labelname}%
\bibrightbracket\classicpunct}%
{\iffieldequalstr{authortype}{anon?}%
{\bibleftbracket\printnames{labelname}?%
\bibrightbracket\classicpunct}%
{\printnames{labelname}%\usebibmacro{choose+labelname}%
\isdot\classicpunct}}}}%
\ifsingletitle
{}
{\ifboolexpr{%
togl {cms@allshort}%
or
test {\ifbibliography}%
}%
{\printtext[bibhyperref]{%
\printfield[citetitle]{labeltitle}}}%
{\printtext[cmshyperlink]{%
\printfield[citetitle]{labeltitle}}}}
\setunit{\addspace}%
\printtext[parens]{%
\bibstring{seenote}\addnbspace
\ref{cbx@\csuse{cbx@f@\thefield{entrykey}}}%
\iftoggle{cbx:pageref}
{\ifsamepage{\the\value{instcount}}{\csuse{cbx@f@\thefield{entrykey}}}
{}
{\addcomma\space\bibstring{page}\addnbspace
\pageref{cbx@\csuse{cbx@f@\thefield{entrykey}}}}}
{}
\addspace
\bibstring{above}}}
\makeatother
\begin{document}
Lorem\autocite{sigfridsson} ipsum\autocite{worman} dolor\autocite{sigfridsson}
\clearpage
Lorem\autocite{sigfridsson} ipsum\autocite{worman} dolor\autocite{sigfridsson}
\clearpage
Lorem\autocite{knuth:ct:a} ipsum\autocite{knuth:ct:b} dolor\autocite{knuth:ct:a}
\end{document}