如何修改缩写书目样式

如何修改缩写书目样式

我想制作一个参考书目,其中作者和文章名称之间用逗号代替句号。我还想用引号(如 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/或者,如果您只需要该文档的此样式,则只需将其放在与源文档相同的文件夹中。

现在需要对文件进行以下更改:

  1. enquote向文件中添加一个新函数。这应该与其他函数一起使用。一种简单的方法是找到该emphasize函数并复制它,然后使其看起来像这样:

FUNCTION {enquote}
 { duplicate$ empty$
     { pop$ "" }
     { "``" swap$ * "''" * }
   if$
 }

对于更灵活的版本enquote,您可以使用csquotes包。请参阅如何修改参考书目样式以将参考书目中的标题括在引号中?了解有关如何执行此操作的详细信息。

  1. 找到该article函数(第 699 行)并做以下修改:更改以下行:

format.title "title" output.check

到:

format.title enquote "title" output.check
  1. 要在作者姓名后添加逗号,需要进行更广泛的更改,因为您需要更改每种出版物类型的格式。但一般方法是相同的。在每种出版物类型中,您都会找到以下几行:

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引号,但您可以使用britishguillemets、 等。它与babel或配合使用polyglossia

注意与传统方式的区别:参考书目样式是biblatex.bib 文件的一个选项,必须在前言中使用命令(带扩展名)声明,并在需要时\addbibresource{mybib.bib}使用 调用参考书目。默认情况下,参考书目引擎是,但您可以使用 bibtex 选项,但代价是失去一些功能。特别是,理解。\printbibliographybiberbackend=bibtexbiberutf8

\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} 

在此处输入图片描述

相关内容