我在用oscola-biblatex我的论文。OSCOLA 允许以简短格式重复引用,并交叉引用完整引文。这通常由oscola-biblatex。但是,它似乎不适用于子类型的条目comdoc
。请考虑以下 MWE:
\documentclass[10pt,a4paper]{article}
\usepackage[style=oscola,backend=biber]{biblatex}
\begin{filecontents}{test.bib}
@report{com13,
title = {Action Plan on consumer access to justice
and the settlement of disputes in the internal
market},
type = {Communication},
number = {COM (96) 13 final},
institution = {Commission},
entrysubtype = {comdoc}
}
@report{autumnperf,
title = {2008 Autumn Performance Report},
institution = {Department for Children, Schools
and Families},
series = {Cm},
number = {7507},
date = {2008},
}
\end{filecontents}
\addbibresource{test.bib}
\begin{document}
Here is some text with a first reference to the `comdoc'
document.\footcite{com13}
And here a reference to a general report.\footcite{autumnperf}
The repeated citation to the `comdoc' document will output the full
citation.\footcite{com13}
Whereas the repeated citation to anything else works as
expected.\footcite{autumnperf}
\printbibliography
\end{document}
对一般报告的重复引用按预期工作(交叉引用脚注 2)。对comdoc
条目子类型的重复引用再次产生完整引用。根据oscola-biblatex手动的,第 72 页:
后续引用将仅使用 com 号码,正如 oscola 所要求的那样。
我该如何解决这个问题,以便重复引用只输出字段,number
如果entrysubtype
是comdoc
?这是奥斯科拉的驱动程序,如果是的话,我能修补它吗补丁? 任何帮助是极大的赞赏!
答案1
由于这似乎明确违反了记录的行为(并且显然违反了 OSCOLA 风格所要求的行为),我强烈建议您打开一个问题https://github.com/PaulStanley/oscola-biblatex/issues。
目前,oscola.cbx
包含
\renewbibmacro*{footcite:note}{%
\ifboolexpr{test {\ifentrytype{legislation}}
or ( test {\ifentrytype{legal}}
and ( not test {\iffieldequals{entrysubtype}{\treatysubtype}} ))}%
{\usebibmacro{cite:short}}%
{\ifboolexpr{ test {\ifentrytype{commentary}}
or ( test {\ifentrytype{legal}} and not test {\iffieldequals{entrysubtype}{\treatysubtype}}) }%
{\usebibmacro{footcite:full}}%
{\ifboolexpr{ ( test {\ifentrytype{jurisdiction}}
and
( not test {\iffieldundef{userc}}
and not test {\iffieldundef{postnote}} ))
or (test {\ifentrytype{legal}}
and test {\iffieldequalstr{type}{parliamentary}} )}
{\usebibmacro{cite:full}}%
{\ifboolexpr{ ( test {\ifentrytype{report}} and test {\iffieldequalstr{entrysubtype}{comdoc}} )}
{\usebibmacro{cite:refonlyfull}} % FIX THIS: will need a separate macro
{\usebibmacro{footcite:note:old}}}}}}%
并且FIX THIS
注释恰好位于此处需要修复的行。
如果我理解正确的话,以下小的重新定义可能会满足您的要求
\documentclass[10pt,a4paper]{article}
\usepackage[style=oscola,backend=biber]{biblatex}
\renewbibmacro*{footcite:note}{%
\ifboolexpr{test {\ifentrytype{legislation}}
or ( test {\ifentrytype{legal}}
and ( not test {\iffieldequals{entrysubtype}{\treatysubtype}} ))}%
{\usebibmacro{cite:short}}%
{\ifboolexpr{ test {\ifentrytype{commentary}}
or ( test {\ifentrytype{legal}} and not test {\iffieldequals{entrysubtype}{\treatysubtype}}) }%
{\usebibmacro{footcite:full}}%
{\ifboolexpr{ ( test {\ifentrytype{jurisdiction}}
and
( not test {\iffieldundef{userc}}
and not test {\iffieldundef{postnote}} ))
or (test {\ifentrytype{legal}}
and test {\iffieldequalstr{type}{parliamentary}} )}
{\usebibmacro{cite:full}}%
{\ifboolexpr{ ( test {\ifentrytype{report}} and test {\iffieldequalstr{entrysubtype}{comdoc}} )}
{\usebibmacro{cite:comdoc}}
{\usebibmacro{footcite:note:old}}}}}}%
\makeatletter
\newbibmacro{cite:comdoc}{%
\printfield{number}%
\iffootnote
{\setunit*{\addspace}
\bbx@unsetpostnotedelim
\printtext[parens]{%
\midsentence
\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}}}}}
{}}}
{}%
}
\makeatother
\begin{filecontents}{\jobname.bib}
@report{com13,
title = {Action Plan on consumer access to justice
and the settlement of disputes in the internal
market},
type = {Communication},
number = {COM (96) 13 final},
institution = {Commission},
entrysubtype = {comdoc},
}
@report{autumnperf,
title = {2008 Autumn Performance Report},
institution = {Department for Children, Schools
and Families},
series = {Cm},
number = {7507},
date = {2008},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Here is some text with a first reference to the `comdoc'
document.\footcite[12]{com13}
And here a reference to a general report.\footcite[13]{autumnperf}
The repeated citation to the `comdoc' document will output the full
citation.\footcite[14]{com13}
Whereas the repeated citation to anything else works as
expected.\footcite[15]{autumnperf}
\printbibliography
\end{document}
cite:refonlyfull
我们只是用一个cite:comdoc
只打印数字的专门宏来替换通用宏。