biblatex中如何修改参考文献中日期的著录格式
biblatex中如何修改參考文獻中日期的著錄格式
日期是參考文獻中重要著錄項,因此通常具有一定格式要求。根據(jù)國標GB/T 7714-2015要求,不同日期具有不同的格式,比如:
引用日期通常由方括號[]包圍,例如:[2018-06-01];
更新或修改日期常由方括號()包圍,例如:(2018-06-01);
公告日期,通常用符號包圍,精確到日,例如:2018-06-01;
而一般日期通常寫到年,例如:2018。
但某些情況下需要修改一般日期的格式,比如公文的日期通常需要寫到日,因此一般日期的格式需要從2018修改為2018-06-01。
對于 biblatex 來說,格式定制是基本功能和屬性,因此可以通過很多種方法進行修改,下面我們介紹4種不同的方式:
方法一:全局的修改日期格式
利用biblatex選項可以很方便的將日期設(shè)定為某種格式。
一般情況下,我們通常將日期格式設(shè)置為year,即僅寫到年,如果設(shè)置為iso則可以輸出全部信息。
比如:
\documentclass{article}
\usepackage{ctex}
\usepackage[backend=biber,style=gb7714-2015,date=iso]{biblatex}%uniquename=false,uniquelist=false\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{國資委2008,AUTHOR = {國資委},DATE = {2008-09-30},TITLE = {中國制造業(yè)企業(yè)全要素生產(chǎn)率研究},
}
@BOOK{張伯偉2002--,AUTHOR = {張伯偉},LOCATION = {南京},PUBLISHER = {江蘇古籍出版社},DATE = {2002-09-01},PAGES = {288},TITLE = {全唐五代詩格會考},
}
\end{filecontents}\addbibresource{\jobname.bib}\begin{document}
\nocite{*}
\printbibliography
\end{document}?
結(jié)果如下圖所示
可以看到這種全局設(shè)置方式,將會使得所有的文獻的一般日期都輸出到日。但有時我們需要的不是全局的修改,而是局部的修改,所以我們來看下面的方法:
方法二:修改日期輸出宏使根據(jù)條目類型輸出不同的格式
biblatex 的域內(nèi)容輸出通常由對應域的輸出宏實現(xiàn),一般的域修改格式通過定義域格式實現(xiàn)而不需要修改輸出宏,而日期域由于其特殊性不能通過域格式修改,因而需要直接修改輸出宏。比如:
?
\documentclass{article}
\usepackage{ctex}
\usepackage[backend=biber,style=gb7714-2015]{biblatex}%uniquename=false,uniquelist=false
\makeatletter
\renewbibmacro*{date}{%\ifentrytype{misc}%{\blx@isodate{}{}}%{\printdate}%
}
\makeatother\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{國資委2008,AUTHOR = {國資委},DATE = {2008-09-30},TITLE = {中國制造業(yè)企業(yè)全要素生產(chǎn)率研究},
}
@BOOK{張伯偉2002--,AUTHOR = {張伯偉},LOCATION = {南京},PUBLISHER = {江蘇古籍出版社},DATE = {2002-09-01},PAGES = {288},TITLE = {全唐五代詩格會考},
}
\end{filecontents}\addbibresource{\jobname.bib}\begin{document}
\nocite{*}
\printbibliography
\end{document}?
結(jié)果如下圖所示:
可以看到通過重定義date輸出宏,設(shè)置misc條目類型一般日期輸出為iso格式,而其它類型則正常的輸出。
這種情況是根據(jù)條目類型局部化,但有時可能只是某一篇文獻需要修改格式,所以下面介紹兩種針對單個條目的設(shè)置方法:
方法三:修改日期輸出宏使根據(jù)具體條目輸出不同的格式
日期域輸出宏可以重定義根據(jù)條目類型分別設(shè)定,也可以根據(jù)具體條目設(shè)定,比如:
\documentclass{article}
\usepackage{ctex}
\usepackage[backend=biber,style=gb7714-2015]{biblatex}%uniquename=false,uniquelist=false
\makeatletter
\renewbibmacro*{date}{%
\ifkeyword{國資委2008}%{\blx@isodate{}{}}%{\printdate}%
}
\makeatother\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{國資委2008,AUTHOR = {國資委},DATE = {2008-09-30},TITLE = {中國制造業(yè)企業(yè)全要素生產(chǎn)率研究},
}
@misc{國資委2011,AUTHOR = {國資委},DATE = {2011-09-30},TITLE = {中國制造業(yè)企業(yè)全要素生產(chǎn)率研究},
}
@BOOK{張伯偉2002--,AUTHOR = {張伯偉},LOCATION = {南京},PUBLISHER = {江蘇古籍出版社},DATE = {2002-09-01},PAGES = {288},TITLE = {全唐五代詩格會考},
}
\end{filecontents}\addbibresource{\jobname.bib}\begin{document}
\nocite{*}
\printbibliography
\end{document}
?
結(jié)果如下圖所示:
可以看到日期域輸出宏設(shè)定對于關(guān)鍵詞包含`國資委2008`的條目輸出iso格式的日期,其它條目輸出正常的日期。
方法四:修改參考文獻信息當前具體條目輸出不同的格式
除了修改biblatex的域輸出宏之外,還有另一種解決方案,那就是通過修改bib文件條目的信息來實現(xiàn)。
在biblatex中,
正常情況下日期信息保存在date域中,該域通常會被解析,若不被解析則會被忽略。
但如果將日期信息保存到y(tǒng)ear域中,該域如果不被解析也不會被忽略。
因此通過這一特點,也可以將某種格式的日期直接保存在year域,讓biblatex輸出。
比如:
?
\documentclass{article}
\usepackage{ctex}
\usepackage[backend=biber,style=gb7714-2015]{biblatex}%uniquename=false,uniquelist=false\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{國資委2008,AUTHOR = {國資委},year = {2008-9-30},TITLE = {中國制造業(yè)企業(yè)全要素生產(chǎn)率研究},
}
@misc{國資委2009,AUTHOR = {國資委},year = {{2009-09-30}},TITLE = {中國制造業(yè)企業(yè)全要素生產(chǎn)率研究},
}
@misc{國資委2010,AUTHOR = {國資委},year = {2010-09-30},TITLE = {中國制造業(yè)企業(yè)全要素生產(chǎn)率研究},
}
@BOOK{張伯偉2002--,AUTHOR = {張伯偉},LOCATION = {南京},PUBLISHER = {江蘇古籍出版社},DATE = {2002-09-01},PAGES = {288},TITLE = {全唐五代詩格會考},
}
\end{filecontents}\addbibresource{\jobname.bib}\begin{document}
\nocite{*}
\printbibliography
\end{document}?
結(jié)果如圖所示:
可以看到,2010年份文獻中,日期被解析,那么僅輸出到年,如果讓日期不被解析,日期就可以原樣輸出,關(guān)鍵是在不被解析。biblatex中以yyyy-mm-dd格式描述的日期會被解析,若日期的格式為其它形式,那么不會被解析,或者日期用{}保護起來,也不會被解析。前述例子中:
`year = {2008-9-30}`就是不能解析的格式
`year = {{2009-09-30}}`則是保護起來的情況。
方法五:修改不同類型條目的日期的格式(比如加粗)
可以對特定類型的文獻日期進行加粗,斜體等操作。下面的示例中會議論文的日期加粗了,而專著類型的日期采用了斜體。需要注意的是:設(shè)置的域格式是date,而不是year。
\documentclass{article}
\usepackage{ctex}\usepackage[backend=biber,style=gb7714-2015]{biblatex}\DeclareFieldFormat[inproceedings]{date}{\mkbibbold{#1}}
\DeclareFieldFormat[book]{date}{\mkbibitalic{#1}}
\DeclareFieldFormat[misc]{date}{\mkbibbold{#1}}\begin{filecontents}{\jobname.bib}
@InProceedings{裴麗生1981-2-10,author = {裴麗生},title = {在中國科協(xié)學術(shù)期刊編輯工作經(jīng)驗交流會上的講話},booktitle = {中國科協(xié)學術(shù)期刊編輯工作經(jīng)驗交流會資料選},year = {1981},editor = {中國科學技術(shù)協(xié)會},publisher = {中國科學技術(shù)協(xié)會學會工作部},pages = {2--10},address = {北京},
}@Inproceedings{Nemec1997-209-214,Title = {Force control of redundant robots},Author = {B Nemec},Booktitle = {Processings of Symposium on Robot Control},Pages = {209-214},Country = {Nantes France},Year = {1997}
}@BOOK{張伯偉2002--,AUTHOR = {張伯偉},LOCATION = {南京},PUBLISHER = {江蘇古籍出版社},DATE = {2002-09-01},PAGES = {288},TITLE = {全唐五代詩格會考},
}
@misc{國資委2008,AUTHOR = {國資委},year = {2008-9-30},TITLE = {中國制造業(yè)企業(yè)全要素生產(chǎn)率研究},
}
@misc{國資委2009,AUTHOR = {國資委},year = {{2009-09-30}},TITLE = {中國制造業(yè)企業(yè)全要素生產(chǎn)率研究},
}
@misc{國資委2010,AUTHOR = {國資委},year = {2010-09-30},TITLE = {中國制造業(yè)企業(yè)全要素生產(chǎn)率研究},
}
\end{filecontents}
\addbibresource{\jobname.bib}\begin{document}
\nocite{*}
\printbibliography
\end{document}
結(jié)果為:
?
ps:
上面,我們例舉了biblatex對一般日期輸出格式的定制修改方法,可以看到有多種的實現(xiàn)方式,這也是biblatex的功能特點和優(yōu)點所在。善用biblatex可以讓latex文檔的參考文獻格式達到任意的格式需求。
總結(jié)
以上是生活随笔為你收集整理的biblatex中如何修改参考文献中日期的著录格式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【贪心】Stall Reservatio
- 下一篇: 城市文化笔记整理(二)