Biblatex:格式化@incollection

Biblatex:格式化@incollection

我仍在学习 LaTeX,我想@incollection从以下方面编辑我的:

Fairclough, Norman e Wodak, Ruth (1997). “批判性话语分析:概述”。在:话语研究:多学科导论。由 TA van Dijk 护理。伦敦:Sage:67-97。

变成这样:

Fairclough, Norman e Wodak, Ruth (1997). “批判性话语分析:概述”。TA van Dijk (ed.),话语研究:多学科导论.伦敦:Sage,67-97。

换句话说:

  • 我必须将 Publisher 和 Pages 之间的分隔符从冒号更改为逗号

  • 我必须改变编辑的位置

  • 我必须从“In:”中删除冒号

    @incollection{fairclough.wodak-critical.discourse.analysis.overview, author = "Norman Fairclough 和 Ruth Wodak", title = "批判性话语分析:概述", booktitle = "话语研究:多学科导论", pages = "67-97", publisher = "Sage", location = "伦敦", year = "1997", editor = "TA van Dijk",

我的序言如下(我的参考书目没有使用特定的风格):

\documentclass[a4paper,12pt,twoside]{report}
\usepackage[utf8]{inputenc}

\usepackage{fancyhdr}
\usepackage{kantlipsum} 
\usepackage{lipsum} 
\usepackage{setspace} 
\usepackage{xpatch} 
\usepackage{multicol} 
\usepackage{tabularray} 

\usepackage[italian]{babel}
\selectlanguage{italian}

\usepackage{indentfirst}

\usepackage{etoolbox}

\usepackage[autostyle]{csquotes} %% Pacchetto per gestire l'uso delle virgolette
\setquotestyle{english}
\MakeOuterQuote{"}

%=========================================%     BIBLIOGRAFIA E CITAZIONI

\usepackage[backend=biber, natbib=true, citestyle=authoryear-icomp, bibstyle=authoryear-icomp, ibidpage=true, dashed=true, pagetracker=false, maxbibnames=4, maxcitenames=2, autolang=other]{biblatex}
\addbibresource{8.bibliografia.bib} %% File .bib contenente i dati bibliografici

我还想知道如何本地化单身的条目(仅在参考书目中,而不在引用中),以便使用“and”而不是“e”(这是由\usepackage[italian]{babel}and定义的翻译\selectlanguage{italian})。

答案1

欢迎来到 TeX.SE

为了实现所需的参考书目格式,您需要对现有的 BibLaTeX 设置进行一些修改并为@incollection条目类型创建自定义格式。

这里有一种方法可以实现这一点(不是最优雅的,但很直接,并且相对容易进一步修改),通过将以下内容添加到您的序言中(在您当前的所有加载和配置之后):

% Custom settings to modify incollection entry
\DeclareFieldFormat[incollection]{title}{\mkbibquote{#1\isdot}}
\DeclareDelimFormat[incollection]{nameyeardelim}{\addcomma\space}
\DeclareDelimFormat[between:unit,pair:unit]{nameyeardelim}{\addcomma\space}

% Custom driver
\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\printdelim{nameyeardelim}}\newblock
  \usebibmacro{title}%
  \setunit{\printdelim{nameyeardelim}}\newblock
  \printtext{In }%
  \usebibmacro{editor+others}%
  \setunit{\addspace}\newblock
  \printfield{booktitle}%
  \setunit{\addcomma\space}\newblock
  \printlist{location}%
  \setunit{\addcomma\space}\newblock
  \printfield{publisher}%
  \setunit{\addcomma\space}\newblock
  \printfield{pages}%
  \usebibmacro{finentry}
}

我提供了这个修订版 MWE 的完整示例,结合了上述内容背页


关于您的另一个问题:

在您的bib文件中,您可以添加langid字段来指定该特定条目的语言。要使用“and”而不是“e”,您需要向每个适用的 BibLaTeX 条目添加一个附加字段,设置langidenglish

langid = {english}

您当前的序言(即 的加载biblatex)已经有autolang=other,它应该负责应用语言规范。


根据您稍后的评论,您可以将其修改为以下内容,以更接近您想要的输出。我现在还合并了上述修订(将“e”更改为“and”)。此外,我进一步概括了驱动程序,以确保它在面对更复杂的引用时更加强大。我保留了上述先前的修订,作为您如何学习自己修改它的一个例子。

% Load biblatex without invalid/interferring style options
\usepackage[backend=biber, natbib=true, pagetracker=false, maxbibnames=4, maxcitenames=2, autolang=other]{biblatex}

% Exactly match: <Author> (<Year>). "<Title>". In <Editor> (ed.), <BookTitle>. <Location>: <Publisher>, <Pages>.

% Custom settings to modify incollection entry
\DeclareFieldFormat[incollection]{title}{\mkbibquote{#1\isdot}}

\renewbibmacro*{byeditor+others}{%
  \ifnameundef{editor}
    {}
    {\printnames[byeditor]{editor}%
     \setunit{\addspace}%
     \printtext{(ed.)}%
     \clearname{editor}%
    }%
  \usebibmacro{byeditorx}%
  \usebibmacro{bytranslator+others}%
}

\renewbibmacro*{publisher+location+date}{%
  \printlist{location}%
  \setunit{\addcolon\space}%
  \printlist{publisher}%
  \newunit}

\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\addspace}\newblock
  \printtext[parens]{\usebibmacro{date}}\newunit\newblock
  \usebibmacro{title}%
  \newunit\newblock
  \printtext{\bibstring{in}}
  \usebibmacro{byeditor+others}%
  \setunit{}%
  \printtext{,}\newblock%
  \setunit{\addspace}\newblock
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \setunit{\addcomma\space}\newblock
  \printfield{pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}{\printfield{isbn}}{}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \usebibmacro{related}%
  \usebibmacro{finentry}
}

我现在已经更新了背页文档以反映此修订后的代码,从而产生以下编译输出:

上述最终修订代码的编译输出。

相关内容