BibLaTeX. Отображение кода EDN

BibLaTeX. Отображение кода EDN.

Содержание

1 Общая информация

2 Реализация

2.1 Расширение модели данных

  • Создаётся файл описания модели данных edn.dbx:
    1\ProvidesFile{edn.dbx}[2023/10/18 add EDN field to biblatex]
    2
    3\DeclareDatamodelFields[type=field,datatype=verbatim]{edn}
    4\DeclareDatamodelEntryfields{edn}
    5
    6\endinput
    
  • Модель данных подключается следующим образом:
    1\usepackage[style=gost-numeric,datamodel=edn]{biblatex}
    

3 Задание нового поля

  • Задаётся новая запись для поля:
     1\newtoggle{bbx:edn}
     2\newtoggle{cbx:edn}
     3
     4\DeclareBibliographyOption{edn}[true]{%
     5  \global\settoggle{bbx:edn}{#1}%
     6  \global\settoggle{cbx:edn}{#1}}
     7\ExecuteBibliographyOptions{edn}
     8
     9\DeclareFieldFormat{edn}{%
    10  \mkbibacro{EDN}\addcolon\space
    11  \ifhyperref{
    12    \lowercase{\href{https://elibrary.ru/#1}}{\nolinkurl{#1}}
    13  }{\nolinkurl{#1}}
    14}
    

4 Изменение макросов для отображения

  • Подключаем пакет для исправления макросов:
    1\usepackage{xpatch}
    
  • Исправляем стандартный макрос:
     1\xapptobibmacro{doi+eprint+url}{
     2  \ifcitation{
     3    \iftoggle{cbx:edn}
     4    {\printfield{edn}}
     5    {}
     6  }{
     7    \iftoggle{bbx:edn}
     8    {\printfield{edn}}
     9    {}
    10  }%
    11}{}{}
    
  • В стиле biblatex-gost используется другой макрос. Исправляем и его:
     1\xapptobibmacro{doi+eprint+url+note}{
     2  \newunit\newblock
     3  \ifcitation{
     4    \iftoggle{cbx:edn}
     5    {\printfield{edn}}
     6    {}
     7  }{
     8    \iftoggle{bbx:edn}
     9    {\printfield{edn}}
    10    {}
    11  }%
    12}{}{}
    

Links to this note

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие