我目前正在尝试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。
因此我无法解决的差异是:
- 删除标题、编辑和合集标题后的标点符号。
- 从“In:”中删除大写字母以及‘:’。
- 移动“ed. by”并将其更改为“(eds)”。
- 将出版商放在括号中。
实际上,我更喜欢每个参考书目末尾的标点符号,但以防万一:如何删除它?
我知道关键在于 和\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+date
和byeditor+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}