Biber+biblatex автоматические стандартные сокращения

Biber+biblatex автоматические стандартные сокращения

Есть ли способ автоматически заменить стандартные сокращения IEEE автоматически, используя biblatex + biber(когда каким-то образом предоставлен список сокращений)?

Например:

"Отчет о конференции IEEE Международная конференция по коммуникациям"

должно стать

"Конф. Рек. 1995 IEEE Int. Conf. Commun."

решение1

Мне не очень нравится стиль IEEE, но, думаю, я понял вашу общую установку и попробую.

Я предполагаю, что вы используете biblatexстиль ieee, но загрузка IEEEabrv.bibпредоставлена IEEEtran​​(хотя я не нашел там «Запись конференции IEEE International Conference on Communication», поэтому я использую здесь запись из 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}

Обратите внимание, что matchis обозначает стандартную сокращенную форму, определенную в IEEEabrv.bib, а не имя строки.

Obs.: У меня были некоторые проблемы с IEEEabrv.bibкодировкой . Поэтому, чтобы это сработало, мне нужно было сохранить его в UTF-8 для запуска. Но я полагаю, что, раз вы, похоже, уже используете эти сокращения, вы как-то с этим справились.

Связанный контент