我想制作一个参考书目,其中作者和文章名称之间用逗号代替句号。我还想用引号(如 x)写文章名称。有没有办法编写这种类型的参考书目
例子:
G. Agarwal & S. Sindh,"A comparison between public key authority and certification authority for distribution of public key". International Journal of Computer Science and Information Technologies.1(5):332--336,2010.
我的书目代码:
\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@article{link:cac,
title = {A comparison between public key authority and certification authority for distribution of public key},
author = {Agarwal, Gaurav and Singh, Saurabh},
journal = {International Journal of Computer Science and Information Technologies},
volume = {1},
number = {5},
pages = {332--336},
year = {2010}
}
\end{filecontents}
\documentclass{article}
\usepackage[numbers]{natbib}
\bibliographystyle{abbrvnat}
\begin{document}
\noindent
\citet{link:cac}, \cite{link:cac}
\bibliography{mybib}
\end{document}
答案1
与大多数传统的 BiBTeX 格式问题一样,这需要破解.bst
文件本身,但这并不难。另一种方法是使用biblatex
。
首先找到原始文件。您可以使用命令行abbrvnat.bst
找到系统的确切路径。在当前的 TeXLive 系统中,它位于:kpsewhich abbrvnat.bst
/usr/local/texlive/2017/texmf-dist/bibtex/bst/natbib/abbrvnat.bst
复制此文件,并将其命名为abbrvnat-quotes.bst
。将其放在您的本地texmf
文件夹中:...texmf/bibtex/bst/
或者,如果您只需要该文档的此样式,则只需将其放在与源文档相同的文件夹中。
现在需要对文件进行以下更改:
enquote
向文件中添加一个新函数。这应该与其他函数一起使用。一种简单的方法是找到该emphasize
函数并复制它,然后使其看起来像这样:
FUNCTION {enquote}
{ duplicate$ empty$
{ pop$ "" }
{ "``" swap$ * "''" * }
if$
}
对于更灵活的版本enquote
,您可以使用csquotes
包。请参阅如何修改参考书目样式以将参考书目中的标题括在引号中?了解有关如何执行此操作的详细信息。
- 找到该
article
函数(第 699 行)并做以下修改:更改以下行:
format.title "title" output.check
到:
format.title enquote "title" output.check
- 要在作者姓名后添加逗号,需要进行更广泛的更改,因为您需要更改每种出版物类型的格式。但一般方法是相同的。在每种出版物类型中,您都会找到以下几行:
author format.key output
new.block
您需要将所有这些行对更改为:
author format.key output
对于更复杂的项目,可能不存在简单的行author format.key output
。在这种情况下,您需要查找new.block
作者输出代码(无论它是什么)和标题代码之间的行。book
例如,对于类型,您将找到:
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.btitle "title" output.check
在这种情况下,您需要删除该new.block
线。
保存文件并\bibliographystyle{abbrvnat-quotes}
在源文档中使用。
\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@article{link:cac,
title = {A comparison between public key authority and certification authority for distribution of public key},
author = {Agarwal, Gaurav and Singh, Saurabh},
journal = {International Journal of Computer Science and Information Technologies},
volume = {1},
number = {5},
pages = {332--336},
year = {2010}
}
\end{filecontents}
\documentclass{article}
\usepackage[numbers]{natbib}
\bibliographystyle{abbrvnat-quotes}
\begin{document}
\noindent
\citet{link:cac}, \cite{link:cac}
\bibliography{mybib}
\end{document}
答案2
方法如下biblatex
。加载时csquotes
,您可以选择引号样式。默认为american
引号,但您可以使用british
、guillemets
、 等。它与babel
或配合使用polyglossia
。
注意与传统方式的区别:参考书目样式是biblatex
.bib 文件的一个选项,必须在前言中使用命令(带扩展名)声明,并在需要时\addbibresource{mybib.bib}
使用 调用参考书目。默认情况下,参考书目引擎是,但您可以使用 bibtex 选项,但代价是失去一些功能。特别是,理解。\printbibliography
biber
backend=bibtex
biber
utf8
\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@article{link:cac,
title = {A comparison between public key authority and certification authority for distribution of public key},
author = {Agarwal, Gaurav and Singh, Saurabh},
journal = {International Journal of Computer Science and Information Technologies},
volume = {1},
number = {5},
pages = {332--336},
year = {2010}
}
\end{filecontents}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\usepackage[style=british]{csquotes}%
\addbibresource{mybib.bib}
\DeclareDelimFormat[bib]{nametitledelim}{\addcomma\space}
\DeclareDelimFormat[biblist]{nametitledelim}{\addcomma\space}
\begin{document}
\noindent
\cite{link:cac}, \textcite{link:cac}
\printbibliography
\end{document}