书目中的年份(带括号)

书目中的年份(带括号)

我想在参考书目中使用括号内的年份。我该如何自定义样式?

我想我必须改变FUNCTION {format.date},但该怎么做呢?

问候

\documentclass[pdftex,a4paper,12pt,german]{book}
\usepackage[german,ngerman]{babel} 
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[authoryear]{natbib}
\begin{document}
\bibliographystyle{myplainnat}
\cite{Alonso.2004}
\bibliography{Literatur}
\end{document}
@book{Alonso.2004,
 author = {Alonso, Gustavo and Casati, Fabio and Kuno, Harumi and Machiraju, Vijay},
 year = {2004},
 title = {Web services: Concepts, architectures and applications},
 url = {http://www.loc.gov/catdir/enhancements/fy0817/2004298168-d.html},
 address = {Berlin},
 publisher = {Springer},
 isbn = {3540440089},
 series = {Data-centric systems and applications}
}

现在我的参考书目如下:

G. Alonso、F. Casati、H. Kuno 和 V. Machiraju。2004 年,Web 服务:概念、架构和应用程序。以数据为中心的系统和应用程序。Springer,柏林,2004 年。

但我希望它看起来像这样:

G. Alonso、F. Casati、H. Kuno 和 V. Machiraju。(2004 年),Web 服务:概念、架构和应用程序。以数据为中心的系统和应用程序。Springer,柏林,2004 年。

括号内为第一年

答案1

您没有提供参考书目样式,但它应该像这样工作:将两行添加format.date

FUNCTION {format.date}
{ year duplicate$ empty$
    { "empty year in " cite$ * warning$
       pop$ "" }
    'skip$
  if$
  month empty$
    'skip$
    { month
      " " * swap$ *
    }
  if$
  duplicate$ empty$ 'skip$ %% added
  { "(" swap$ * ")" *}     %% added
  if$
  extra.label *
}

要在年份前面使用句号而不是逗号,请new.block在年份输出之前发出命令,就像我在这里对article类型所做的那样

FUNCTION {article}
{ output.bibitem
  format.authors "author" output.check
  author format.key output
  new.block
  format.title "title" output.check
  new.block
  crossref missing$
    { journal emphasize "journal" output.check
      eid empty$
        { format.vol.num.pages output }
        { format.vol.num.eid output }
      if$
      new.block                        %% added
      format.date "year" output.check
    }
    { format.article.crossref output.nonnull
      eid empty$
        { format.pages output }
        { format.eid output }
      if$
    }
  if$
  format.issn output
  format.doi output
  format.url output
  new.block
  note output
  fin.entry
}

答案2

使用另一个自定义的 formate.date 函数修复地址年份问题

  FUNCTION {format.dateWithSpace}
    { year duplicate$ empty$
        { "empty year in " cite$ * warning$
           pop$ "" }
        'skip$
      if$
      month empty$
        'skip$
        { month
          " " * swap$ *
        }
      if$                                   
      duplicate$ empty$ 'skip$              %% added
      { " " swap$ * "" *}                   %% added
      if$
      extra.label *
    }

相关内容