使用 \usebibmacro 自定义 biblatex 样式

使用 \usebibmacro 自定义 biblatex 样式

我目前正在尝试biblatex根据自己的需要调整风格。我通过阅读这里所有类似需求的答案(例如抑制“在:” biblatex或者自定义 biblatex 样式的指南)。

然而,尽管我付出了所有努力,我尝试与之合作的尝试仍未成功\usebibmacro

我从风格开始authoryear,我想达到《剑桥国际事务评论》的引用格式

除了条目之外,我可以改变一切@incollection

这是他们的例子:

Cottier, Thomas (2001)《WTO 争端解决中的风险管理经验》,载 David Robertson 和 Aynsley J Kellow 编 全球化与环境:风险评估和世贸组织(英国切尔滕纳姆:爱德华埃尔加出版社),41-62

这是我目前得到的:

Cottier, Thomas (2001)《WTO 争端解决中的风险管理经验》。收录于:David Robertson 和 Aynsley J Kellow 编辑。 全球化与环境:风险评估和世贸组织.英国切尔滕纳姆:Edward Elgar Publishing,41–62。

因此我无法解决的差异是:

  1. 删除标题、编辑和合集标题后的标点符号。
  2. 从“In:”中删除大写字母以及‘:’。
  3. 移动“ed. by”并将其更改为“(eds)”。
  4. 将出版商放在括号中。

实际上,我更喜欢每个参考书目末尾的标点符号,但以防万一:如何删除它?

我知道关键在于 和\renewcommand\usebibmacro但我就是无法让它工作。我该如何更改每个引用类型的这些参数?

非常感谢您提前告诉我从这里要搬到哪里。

附言:我刚刚意识到对于其他参考类型,我也必须将一些点改为逗号,但我想一旦我理解了如何在这里进行这些更改,这将不再是问题。

编辑:尝试 MWE

paper.tex

\documentclass[a4paper,oneside,12pt,notitlepage]{article}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[style=authoryear-comp,maxnames=2,maxbibnames=4,bibstyle=mybibstyle,autocite=inline,useprefix=true,backend=bibtex]{biblatex}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{pages}{#1}
\bibliography{lit} 

\begin{document}

This is just a test sentence to show you how I cite within my text. \autocite[]{cottier2001}

\newpage

%%%%%%%%%%%%%% BIBLIOGRAPHY
\renewcommand*{\bibfont}{\small}
\printbibliography[title=Bibliography]

\end{document}

lit.bib

@incollection{cottier2001,
  title={Risk management experience in WTO dispute settlement},
  author={Cottier, Thomas},
  booktitle={Globalization and the environment: risk assessment and
the WTO},
  pages={41--62},
  year={2001},
  publisher={Cheltenham, United Kingdom: Edward Elgar Publishing},
  editor={Robertson, David and Kellow, Aynsley J}
}

mybibstyle.bbx(改编自上述帖子):

\ProvidesFile{mybibstyle.bbx}
\RequireBibliographyStyle{standard}
\RequireBibliographyStyle{authoryear-comp} 
\DeclareFieldFormat[article,incollection,unpublished]{title}{ `#1'}%
\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{byeditor+others}%
  \newunit\newblock 
 \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
   \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+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}}

我修修补补后没有剩下任何东西\usebibmacro;-)

答案1

通常,驱动程序包含有关参考书目条目中元素顺序的说明。如何打印各种元素的说明以\usebibmacro命令形式编码。要更改的内容,\usebibmacro{<name>您可以使用命令\renewbibmacro{<name>}{<instructions>}。在您的例子中,您必须修改in:publisher+location+datebyeditor+other。对于最后一项,您必须修改editor字段的呈现方式。可以使用修改名称的呈现\DeclareNameFormat{<name>}。您想要实现的样式的更改可以通过以下方式完成:

\renewbibmacro{in:}{\printtext{in}}

\DeclareNameFormat{editor}{%
  \ifblank{#3}{}{#3\space}%
  \ifblank{#5}{}{#5\space}#1%
  \ifthenelse{\value{listcount}<\value{liststop}}
    {\addcomma\space}%
    {\space\ifthenelse{\value{listcount}>1}
      {(\bibstring{editors})}
      {(\bibstring{editor})}}%
}
\renewbibmacro{byeditor+others}{
  \ifnameundef{editor}
    {}
    {\printnames{editor}}
}

\renewbibmacro{publisher+location+date}{
  \iflistundef{publisher}
    {}
    {\printtext{(}%
     \printlist{publisher}%
      \iflistundef{location}
        {}
        {\printlist{location}}%
        \printtext{)}%
    }
}

要更改各个元素末尾的句点,请使用

\renewcommand{\newunitpunct}{\addspace}

\addbibresource{lit.bib}顺便说一下,最好使用\bibliography{lit}

相关内容