Biber+biblatex 自动标准缩写

Biber+biblatex 自动标准缩写

有没有办法自动使用biblatex + biber(一旦以某种方式提供缩写列表)来自动替换 IEEE 标准缩写?

例如:

“IEEE 国际通信会议记录”

应该成为

“会议记录 1995 IEEE 国际会议通讯”

答案1

我不太喜欢 IEEE 风格,但我想我了解你的总体设置,并会尝试一下。

我假设您使用的是biblatexieee样式,但加载IEEEabrv.bib由 提供IEEEtran(尽管我没有在那里找到“会议记录 IEEE 国际通信会议”,所以我在这里使用来自 的条目IEEEexample.bib)。

我发现有两种方法可以覆盖 中提供的标准 IEEE 缩写IEEEabrv.bib。第一种方法是创建第二个缩写字符串文件并加载它 IEEEabrv.bib。第二种方法是使用 来biblatex更改\DeclareSourcemap条目的数据。

第一个会是这样的:

\documentclass{article}
\usepackage[style = ieee]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@article{IEEEexample:article_typical,
  author        = "S. Zhang and C. Zhu and J. K. O. Sin and P. K. T. Mok",
  title         = "A Novel Ultrathin Elevated Channel Low-temperature 
                   Poly-{Si} {TFT}",
  journal       = IEEE_J_EDL,
  volume        = "20",
  month         = nov,
  year          = "1999",
  pages         = "569-571"
}
\end{filecontents*}

\addbibresource{IEEEabrv.bib}
\addbibresource{myIEEEabrv.bib}
\addbibresource{\jobname.bib}

\begin{document}

\nocite{*}
\printbibliography

\end{document}

其中,myIEEEabrv.bib包含您想要的缩写字符串的重新定义。在本例中,内容如下:

@STRING{IEEE_J_EDL        = "{IEEE} Elec. Dev. Lett."}

(中定义的字符串IEEEabrv.bib{IEEE} Electron Device Lett.)。注意必须在之后加载IEEEabrv.bib

如果我误解了你的问题,而你真正想要的是提供一些你自己的期刊标题缩写,这种方法也为你提供了一种明智的方法。你可以创建一个文件abbrev.bib,定义你想要的字符串,然后用它添加\addbibresource。然后在你的参考文献.bib文件中使用字符串姓名(即没有括号,如上例所示)在journaltitle/journal字段中。然后您可以:

@string{IEEEIntConfCom = "Conf. Rec. 1995 {IEEE} Int. Conf. Commun."}

然后你可以在 bibfile 中使用:

journaltitle = IEEEIntConfCom,

通常这种方法还需要有第二个文件,其中定义了完整的字符串,比如说full.bib。在其中你将拥有:

@string{IEEEIntConfCom = "Conference Record {IEEE} International Conference on Communication"}

有了它,您要做的就是在主文件中替换缩写期刊名称以将其更改为完整期刊\addbibresource{abbrev.bib}名称。\addbibresource{full.bib}.tex

如上所述,第二种方法是使用\DeclareSourcemap

\documentclass{article}
\usepackage[style = ieee]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@article{IEEEexample:article_typical,
  author        = "S. Zhang and C. Zhu and J. K. O. Sin and P. K. T. Mok",
  title         = "A Novel Ultrathin Elevated Channel Low-temperature 
                   Poly-{Si} {TFT}",
  journal       = IEEE_J_EDL,
  volume        = "20",
  month         = nov,
  year          = "1999",
  pages         = "569-571"
}
\end{filecontents*}

\addbibresource{IEEEabrv.bib}
\addbibresource{\jobname.bib}

\DeclareSourcemap{
    \maps[datatype=bibtex]{
        \map{
            \step[fieldsource=journal,
                      match={{IEEE} Electron Device Lett.},
                      replace={{IEEE} Elec. Dev. Lett.}]
        }
    }
}

\begin{document}

\nocite{*}
\printbibliography

\end{document}

请注意,match是定义的标准缩写形式IEEEabrv.bib,而不是字符串的名称。

注意:我对 的编码有些困惑IEEEabrv.bib。因此,为了使它正常工作,我需要将其保存为 UTF-8 才能运行。但我想,一旦你似乎已经在使用这些缩写,你就会以某种方式处理这个问题。

相关内容