OSCOLA 中重复引用“comdoc”类型

OSCOLA 中重复引用“comdoc”类型

我在用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如果entrysubtypecomdoc?这是奥斯科拉的驱动程序,如果是的话,我能修补它吗补丁? 任何帮助是极大的赞赏!

答案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只打印数字的专门宏来替换通用宏。

1 委员会,“消费者获得司法公正和解决内部市场争端的行动计划”(通讯) COM (96) 13 final。//2 儿童、学校和家庭部,2008 年秋季绩效报告 (Cm 7507, 2008)//3 COM (96) 13 final//4 2008 年秋季绩效报告 (n 2)。

相关内容