
我正在寫博士論文,但是當我嘗試按照學校要求輸出參考文獻格式時,我感到很沮喪,要求如下(我的論文中只需要以下三種類型),
期刊[J]
書[M]
其他需求:
- 多位作者:當作者人數大於 3 時,保留前 3 位,其餘作者使用「et al」。
- 排序:按外觀。
我的問題是上面的參考書目風格是什麼?
如果沒有適合它的現有參考書目樣式,我該如何從頭開始建立這種樣式?
.bib
:
@article{brauner91,
author = {Brauner, N.},
title = {Vapour absorption into falling film},
journal = {ASME J},
year = {1991},
volume = {34},
pages = {76-82},
number = {3}
}
@book{baehr1994,
title={Heat and mass transfer},
author={Baehr, H. D.},
year={1994},
page={221}
publisher={Berlin:Springer-Verlag}
}
@inproceedings{leiner1989,
year = {1989},
pages={68--71},
author = {Leiner, A.},
title = {Optical techniques for heat transfer measurements},
booktitle = { COLLINS W. Proc Int Conf on Energy and Environment},
publisher={New York: Academic Press}
}
答案1
嘗試以下操作
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[style=numeric,backend=biber,giveninits=true,sorting=none,maxnames=3,minnames=3]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareNameAlias{default}{family-given}
\renewcommand*{\revsdnamepunct}{}
\renewrobustcmd*{\bibinitperiod}{}
\renewcommand*{\finalnamedelim}{\multinamedelim}
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat*{journaltitle}{#1\isdot}
\DeclareFieldFormat*{issuetitle}{#1}
\DeclareFieldFormat*{maintitle}{#1}
\DeclareFieldFormat*{booktitle}{#1}
\newbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}%
\ifentrytype{article}{\setunit{}\printtext{[A]}}{}
\ifentrytype{book}{\setunit{}\printtext{[B]}}{}%
\ifentrytype{inproceedings}{\setunit{}\printtext{[C]}}{}
\newunit}%
\printfield{titleaddon}}
\renewbibmacro*{in:}{\ifentrytype{article}{}{\printtext{//}}}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}}%
\setunit{\addcomma\space}%
\printfield{issue}%
\setunit{\addcomma\space}%
\usebibmacro{date}
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\setunit{\addcomma\space}%
\usebibmacro{volume+number+eid}%
\setunit{\addspace}%
\newunit}
\DeclareFieldFormat[article,periodical]{number}{\mkbibparens{#1}}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\DeclareFieldFormat{pages}{#1}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\renewcommand*{\bibpagespunct}{\addcolon\addspace}
\renewcommand{\postnotedelim}{%
\iffieldpages{postnote}
{\addcolon\space}
{\addspace}}
\begin{document}
\cite{sigfridsson,brauner91,baehr1994,leiner1989,aksin}
\printbibliography
\end{document}
其中大部分都是相當標準的,可以在自訂 biblatex 樣式的指南,biblatex:刪除參考書目中姓氏和名字之間的逗號,冒號而不是“p”。在 Biblatex 中作者年份-comp,Biblatex:對於非數字的引用,沒有 \postnotedelim,biblatex:文章卷號周圍的括號
您的風格的奇怪要求是標題後的條目類型的指示,因為我們作為“in”的“//”分隔符,它們是通過
\renewbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}%
\ifentrytype{article}{\setunit{}\printtext{[A]}}{}
\ifentrytype{book}{\setunit{}\printtext{[B]}}{}%
\ifentrytype{inproceedings}{\setunit{}\printtext{[C]}}{}
\newunit}%
\printfield{titleaddon}}
\renewbibmacro*{in:}{\ifentrytype{article}{}{\printtext{//}}}
後者當然遵循一般模式抑制“In:” biblatex。