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

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

Содержание

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

2 Реализация

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

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

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

  • Задаётся новая запись для поля:
    \newtoggle{bbx:edn}
    \newtoggle{cbx:edn}
    
    \DeclareBibliographyOption{edn}[true]{%
      \global\settoggle{bbx:edn}{#1}%
      \global\settoggle{cbx:edn}{#1}}
    \ExecuteBibliographyOptions{edn}
    
    \DeclareFieldFormat{edn}{%
      \mkbibacro{EDN}\addcolon\space
      \ifhyperref{
        \lowercase{\href{https://elibrary.ru/#1}}{\nolinkurl{#1}}
      }{\nolinkurl{#1}}
    }
    

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

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

Links to this note

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

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

Похожие