![对 biblatex-mla8 \autocite*-command 的更改](https://linux22.com/image/370387/%E5%AF%B9%20biblatex-mla8%20%5Cautocite*-command%20%E7%9A%84%E6%9B%B4%E6%94%B9.png)
对于一个项目,我遵循了 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
。