
有沒有一種方法可以自動使用biblatex + biber
(一旦以某種方式提供了縮寫列表)自動替換 IEEE 標準縮寫?
例如:
《IEEE國際通訊會議會議紀錄》
應該成為
“Conf. Rec. 1995 IEEE Int. Conf. Commun.”
答案1
我不太喜歡 IEEE 風格,但我想我了解你的一般設置,並且會嘗試一下。
我假設您正在使用biblatex
的ieee
風格,但加載IEEEabrv.bib
提供IEEEtran
(儘管我沒有找到“會議記錄 IEEE 國際通信會議”,所以我在這裡使用來自 的條目IEEEexample.bib
)。
我看到有兩種方法可以讓您覆蓋 中提供的標準 IEEE 縮寫IEEEabrv.bib
。第一個是創建第二個縮寫字串檔案並載入它後 IEEEabrv.bib
。第二種是使用biblatex
's\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 才能運行。但我想,一旦你似乎已經在使用這些縮寫,你就會以某種方式處理它。