对 biblatex-mla8 \autocite*-command 的更改

对 biblatex-mla8 \autocite*-command 的更改

对于一个项目,我遵循了 MLA 规则第 8 版的引用规范,但有一个问题我无法解决。我使用的biblatex-mla-new是 James Clawson 编写的(我认为它仍处于测试阶段?),除了我遇到的一些小问题外,它确实很好用。

每当我在书面文本中使用作者姓名时,我只需在文内引用(括号中)中给出页码即可。如果一位作者有多个标题,我必须添加标题 - 这是通过使用 来完成的\autocite*。如果我在文中没有提到作者姓名,也必须将其放入括号中,使用\autocite(不带星号)。只要条目有标题,一切都会正常进行 - 但如果没有标题,例如介绍,情况就会不同。为了遵循 MLA 规则,我使用字段titleaddon = {Introduction},这会在参考书目本身中产生正确的条目,但我既不使用它\autocite,也不\autocite*使用它,因此,括号内的条目总是缺少这个关键的信息。我已经实现了\autocite(参见 mwe)的预期结果,但我不知道在哪里查看\autocite*...

\documentclass{article}

\usepackage[british]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mathptmx}
\usepackage{filecontents}

\usepackage[style=mla-new,nofullfootnote]{biblatex}

%--changes to lines 173-187 of mla-new.cbx
\renewbibmacro*{cite:mla:title:internal}{%
    \ifbool{cbx@named}{\setunit{\addcomma\addspace}}{}%
    \iffieldundef{title}%
    {\iffieldequalstr{entrytype}{review}%
        {\printtext[bibhyperref]%
            {\printtext{\bibcpstring{reviewof}%
                    \setunit{\addspace}%
                    \printfield{booktitle}}}}%
        {\printfield{titleaddon}}}% -->this line replaces lines 181-185 of mla8.cbx
    {\printtext[bibhyperref]{%
            \printfield[citetitle:\strfield{entrytype}]{labeltitle}}}}%

%!!!----!!!
%--the following changes to my mind improve a couple of things in biblatex-mla-new which I noticed while working with my bibliographic entries

%--title and/or subtitle of collections do not stand in if incollections don't have a title/subtitle of their own; instead, titleaddon is used (in case of, e.g., untitled introductions)

\renewbibmacro*{title}{%
    \ifboolexpr{
        test {\iffieldundef{title}}
        and
        test {\iffieldundef{subtitle}}
    }
    {}
    {\printtext[title]{%
            \printfield[titlecase]{title}%
            \setunit{\subtitlepunct}%
            \printfield[titlecase]{subtitle}}%
        \newunit}%
    \printfield{titleaddon}\addperiod\space}

%--to put the period at the end of the title within the inverted commas

\DeclareFieldFormat
[article,inbook,incollection,inproceedings,patent,thesis,unpublished]
{title}{\mkbibquote{#1\addperiod}}

%--changing the way dates are written (ordinal numbers become cardinal numbers in, e.g., dates of last access for websites)

\DefineBibliographyExtras{british}{%
    \protected\def\mkbibdatelong#1#2#3{%
        \iffieldundef{#3}
        {}
        {\stripzeros{\thefield{#3}}%
            \iffieldundef{#2}{}{\nobreakspace}}%
        \iffieldundef{#2}
        {}
        {\mkbibmonth{\thefield{#2}}%
            \iffieldundef{#1}{}{\space}}%
        \stripzeros{\thefield{#1}}}%
}

%--IMPORTANT!!! I also needed to make a change directly to mla-new.bbx, replace \newunit with \newblockpunct in line 398 (within \DeclareBibliographyDriver{book}; cf. entry for Jason Donald, which ends with a comma instead of with a period in the bibliography without the change - so far, I haven't noticed any unwanted behaviour and copying all the relevant lines into my preamble was rather too much). 

%!!!----!!!

\addbibresource{katrinbiblio.bib}

\begin{filecontents*}{katrinbiblio.bib}
@collection{Anker.2017,
    year = {2017},
    title = {New Directions in Law and Literature},
    publisher = {{Oxford UP}},
    editor = {Anker, Elizabeth S. and Meyler, Bernadette},
    location = {New York}
}
@incollection{Anker.2017b,
    author = {Anker, Elizabeth S. and Meyler, Bernadette},
    pages = {1--30},
    publisher = {{Oxford UP}},
    editor = {Anker, Elizabeth S. and Meyler, Bernadette},
    booktitle = {New Directions in Law and Literature},
    titleaddon = {Introduction},
    year = {2017},
    location = {New York}
}
@book{Donald.2018,
    author = {Donald, Jason},
    year = {2018},
    title = {Dalila},
    publisher = {Vintage},
    isbn = {1784702986},
    location = {London},
    abstract = {}
}
@article{Posner.1986,
    author = {Posner, Richard A.},
    year = {1986},
    title = {Law and Literature},
    pages = {1351--1392},
    volume = {72},
    journaltitle = {Virginia Law Review},
    subtitle = {A Relation Reargued},
    number = {8},
    shorttitle = {Relation Reargued}
}
@book{Posner.2009,
    author = {Posner, Richard A.},
    year = {2009},
    title = {Law and Literature},
    edition = {3},
    publisher = {{Harvard UP}},
    location = {Cambridge}
}
@incollection{Stern.2017,
    author = {Stern, Simon},
    title = {Legal and Literary Fictions},
    pages = {313--326},
    publisher = {{Oxford UP}},
    editor = {Anker, Elizabeth S. and Meyler, Bernadette},
    booktitle = {New Directions in Law and Literature},
    year = {2017},
    location = {New York}
}

\end{filecontents*}

\begin{document}

As Anker and Meyler state, the situation is diverse \autocite*[2]{Anker.2017b}. They go even further and present more diversity \autocite[3]{Anker.2017b}. Posner, on the other hand, is a real pessimist \autocite*[2]{Posner.2009}. He has been that all through his career \autocite[3]{Posner.1986}. Still, the others respect him \autocite[1]{Anker.2017b}.

\nocite{*}
\printbibliography

\end{document}

中间的内容%!!!----!!!与我的问题无关,但在我看来,这些变化改善了 mla-new-style - 我提供它们是为了防止有人遇到这个线程来寻找解决方案。

有谁能帮我更改 \autocite*,因为我似乎无法找到此命令的设置位置......

答案1

@suppcollection我认为使用而不是@incollection进行介绍可以获得更好的结果

@suppcollection{Anker.2017b,
  author    = {Anker, Elizabeth S. and Meyler, Bernadette},
  pages     = {1--30},
  publisher = {Oxford UP},
  editor    = {Anker, Elizabeth S. and Meyler, Bernadette},
  booktitle = {New Directions in Law and Literature},
  title     = {Introduction},
  year      = {2017},
  location  = {New York},
}

然后您可以使用title而不是titleaddon

@suppcollection专门用于介绍和前言。

biblatex文档在第 9-10 页上说

[ @suppbook] 补充材料@book。此类型与条目类型密切相关@inbook。虽然@inbook主要用于具有自己标题的书籍的一部分(例如,同一作者的论文集中的一篇论文),但此类型适用于前言、介绍、序言、后记等通常只有一个通用标题的元素。样式指南可能要求此类项目的格式与其他项目不同@inbook

[ @suppcollection] 中的补充材料@collection。此类型与条目类型类似@suppbook但相关@collection


如果这对你不起作用,请尝试

\renewbibmacro*{cite:mla:title:alone}{%
  \printtext[bibhyperref]{% suggested by StackExchange user Audrey
  \iffieldundef{labeltitle}
    {\printfield{titleaddon}}
    {\printfield[citetitle:\strfield{entrytype}]{labeltitle}}}%
  \ifthenelse{\iffieldequalstr{entrytype}{suppbook}\and\iffieldundef{title}}%
    {\printtext[bibhyperref]{%
      \printfield[mla:capital]{entrysubtype}}}%
    {}}

titleaddon如果不存在则打印labeltitle

相关内容