有没有办法自动使用biblatex + biber
(一旦以某种方式提供缩写列表)来自动替换 IEEE 标准缩写?
例如:
“IEEE 国际通信会议记录”
应该成为
“会议记录 1995 IEEE 国际会议通讯”
答案1
我不太喜欢 IEEE 风格,但我想我了解你的总体设置,并会尝试一下。
我假设您使用的是biblatex
的ieee
样式,但加载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 才能运行。但我想,一旦你似乎已经在使用这些缩写,你就会以某种方式处理这个问题。