Biber+biblatex 自動標準縮寫

Biber+biblatex 自動標準縮寫

有沒有一種方法可以自動使用biblatex + biber(一旦以某種方式提供了縮寫列表)自動替換 IEEE 標準縮寫?

例如:

《IEEE國際通訊會議會議紀錄》

應該成為

“Conf. Rec. 1995 IEEE Int. Conf. Commun.”

答案1

我不太喜歡 IEEE 風格,但我想我了解你的一般設置,並且會嘗試一下。

我假設您正在使用biblatexieee風格,但加載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 才能運行。但我想,一旦你似乎已經在使用這些縮寫,你就會以某種方式處理它。

相關內容