Среди базовых стилей Biblatex есть один очень красивый — reading.
Попробуем поработать с ним.
База данных:
@BOOK{NozhNN,
author = {Наерман, Моисей Соломонович and Наерман, Яков Моисеевич},
title = {Руководство для подготовки шлифовщиков},
address = {М.},
publisher = {Высш.~шк.},
year = {1989.},
pagetotal = {279~с},
language = {russian},
langid = {russian},
keywords = {rus},
}
@Collection{Marochnik,
editor = {В. Г. Сорокина},
editortype = {geneditor},
title = {Марочник сталей и сплавов},
location = {М.},
publisher = {Машиностроение},
year = {1989},
pagetotal = {640},
language = {russian},
langid = {russian},
keywords = {rus},
}
@Online{INozhForma,
title = {Особенности заточки ножей},
media = {eresource},
url = {http://knifehacker.ru/osobennosti-zatochki-nozha/},
language = {russian},
langid = {russian},
keywords = {int},
annotation = {Рассмотрены основные формы поперечных сечений клинков},
}
@Online{MWF,
author = {Миловидов, Владимир Фёдорович},
title = {О заточке клинков},
media = {eresource},
url = {https://www.youtube.com/watch?v=6ANOFS2N2xw},
language = {russian},
langid = {russian},
keywords = {int},
}
@BOOK{UzelLNS,
author = {Скрягин, Лев Николаевич},
title = {Морские узлы},
address = {М.},
publisher = {Транспорт},
year = {1994.},
edition = {3},
pagetotal = {128~с.;~ил.},
language = {russian},
langid = {russian},
annotation = {Одна из лучших русскоязычных книг на тему вязания узлов},
abstract = {Изображения качественные и понятные},
addendum = {Первое издание было в 1982 г},
keywords = {rus},
}
Преамбула:
\usepackage[autostyle]{csquotes}
\usepackage[defernumbers=true,backend=biber,bibencoding=utf8, language=auto,autolang=other,sorting=ntvy,babel=other,
maxbibnames=99,maxcitenames=2,movenames=false,dropdates=true, style=reading]{biblatex}
\addbibresource{/home/dnt/bib/primer0fc.bib}
Документ:
\clearpage
\nocite{*}
\renewcommand*{\bibfont}{\small} % уменьшим размер шрифта
\renewcommand\bibname{Библиография}
\printbibliography
Посмотрим на результат компиляции:
и на цитаты:
Начнём исправлять недочёты…
1. Изменим базу данных:
@Online{MWF,
author = {Миловидов, В.,Ф.},
title = {О заточке клинков},
media = {eresource},
url = {https://www.youtube.com/watch?v=6ANOFS2N2xw},
language = {russian},
langid = {russian},
keywords = {int},
shorttitle = {Заточка ножей},
}
@Collection{Marochnik,
editor = {Сорокин, В.,Г.},
title = {Марочник сталей и сплавов},
location = {М.},
publisher = {Машиностроение},
year = {1989},
pagetotal = {640},
language = {russian},
langid = {russian},
keywords = {rus},
shorttitle = {Маркировка сталей},
}
@Online{sait95,
title = {Особенности заточки ножей},
media = {eresource},
url = {http://knifehacker.ru/osobennosti-zatochki-nozha/},
abstract = {Статья содержит информацию об основных формах поперечных сечений клинков},
language = {russian},
langid = {russian},
keywords = {int},
shorttitle = {Профили клинков},
}
@BOOK{UzelLNS,
author = {Скрягин, Л.,Н.},
title = {Морские узлы},
address = {М.},
publisher = {Транспорт},
year = {1994.},
edition = {3},
pagetotal = {128~с.;~ил.},
language = {russian},
langid = {russian},
annotation = {Одна из лучших русскоязычных книг на тему вязания узлов},
abstract = {Изображения качественные и понятные},
addendum = {Первое издание было в 1982 г},
keywords = {rus},
shorttitle = {Вязание узлов},
}
@BOOK{NozhNN,
author = {Наерман, М.,С. and Наерман, Я.,М.},
title = {Руководство для подготовки шлифовщиков},
address = {М.},
publisher = {Высш. шк.},
year = {1989},
pagetotal = {279},
language = {russian},
langid = {russian},
keywords = {rus},
shorttitle = {Абразивы},
}
2. Настроим опции biblatex (с ними будем разбираться по ходу пьесы):
\usepackage[defernumbers=true,giveninits=true,terseinits=true,firstinits=true,backend=biber,bibencoding=utf8,language=auto,autolang=other,sorting=ntvy,babel=other,maxbibnames=99,movenames=false,entrykey=false, dropdates=true,style=reading,citestyle=numeric]{biblatex}
Опция citestyle=numeric служит для того, чтобы изменить оформление цитат. Ставим её ПОСЛЕ загрузки стиля:
3. Уменьшим расстояние между записями; ставим после загрузки пакета biblatex
\makeatletter %расстояние между записями; я уменьшил с 2 до 1
\patchcmd{\bbx@item@full}
{\itemsep2\bibitemsep}
{\itemsep1\bibitemsep}
{}
{}
\makeatothe
Компилируем и смотрим:
4. Изменим записи над линией. Слева стоят автор и название. Всё это дублирует содержимое записи. Лучше добавим номер.
Справа выводится идентификационный ключ…
— Кому он нужен?
— Никому.
— Зачем он нужен?
— Низачем.
Ставим в преамбулу после предыдущего макроса:
\renewbibmacro*{entryhead:full}{%поля, отображённые над чертой
\printfield{labelnumber}\adddot%
\hfill
\printfield{labeltitle}} %будет напечатано поле shorttitle
Здесь нужна опция entrykey=false, чтобы идентификатор не печатался.
В дальнейших записях везде между знаком # и цифрой пробела нет! Мне приходится его делать, так как на этом сайте иначе нельзя!
5. Название книги прямым шрифтом:
\DeclareFieldFormat{title}{\normalfont{# 1}} % название прямым шрифтом
Шрифт стал прямым.
6. Переопределим поля аннотации и абстракт-текста. Уберём названия этих полей:
\DeclareFieldFormat{annotation}{# 1}
\DeclareFieldFormat{abstract}{ # 1}
Названия убрались.
Или сделаем свои названия:
\DeclareFieldFormat{annotation}{Описание\addcolon\space # 1}
\DeclareFieldFormat{abstract}{Резюме\addcolon\space # 1}
Названия изменились.
7. URL с новой строчки:
\newbibmacro*{bbx:parunit}{% поля doi, eprint, url с новой строки
\ifbibliography
{\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\clearlist{pageref}%
\setunit{\adddot\par\nobreak}}
{}}
\renewbibmacro*{doi+eprint+url}{%
\usebibmacro{bbx:parunit}% Added
\iftoggle{bbx:doi}
{\printfield{doi}}
{}%
\iftoggle{bbx:eprint}
{\usebibmacro{eprint}}
{}%
\iftoggle{bbx:url}
{\usebibmacro{url+urldate}}
{}}
\renewbibmacro*{eprint}{%
\usebibmacro{bbx:parunit}% Added
\iffieldundef{eprinttype}
{\printfield{eprint}}
{\printfield[eprint:\strfield{eprinttype}]{eprint}}}
\renewbibmacro*{url+urldate}{%
\usebibmacro{bbx:parunit}% Added
\printfield{url}%
\iffieldundef{urlyear}
{}
{\setunit*{\addspace}%
\printtext[urldate]{\printurldate}}}
Электронный адрес теперь начинается с новой строчки.
8. Ну и наконец-то наводим порядок с инициалами. За это отвечают опции
giveninits=true — фамилия инициалы
\DeclareNameAlias{default}{last-first} % фамилия инициалы
\DeclareNameAlias{sortname}{last-first}
\DeclareNameAlias{author}{last-first}
\DeclareNameAlias{editor}{last-first}
\DeclareNameAlias{translator}{last-first}
terseinits=true,firstinits=true — убрать запятую после фамилии
\renewbibmacro*{name:family-given}[4]{%удалить запятую между фам. и им.
\ifuseprefix
{\usebibmacro{name:delim}{# 3# 1}%
\usebibmacro{name:hook}{# 3# 1}%
\ifcapital
{\mkbibnameprefix{\MakeCapital{# 3}}\isdot}
{\mkbibnameprefix{# 3}\isdot}%
\ifpunctmark{’}{}{\bibnamedelimc}}%
\mkbibnamelast{# 1}\isdot
\ifblank{# 4}{}{\bibnamedelimd\mkbibnameaffix{# 4}\isdot}%
\ifblank{# 2}{}{\bibnamedelimd\mkbibnamefirst{# 2}\isdot}}
%remove \addcomma
{\usebibmacro{name:delim}{# 1}%
\usebibmacro{name:hook}{# 1}%
\mkbibnamelast{# 1}\isdot
\ifblank{# 4}{}{\bibnamedelimd\mkbibnameaffix{# 4}\isdot}%
\ifblank{# 2 # 3}{}{\space} %пробел между именем и отчеством
\ifblank{# 2}{}{\bibnamedelimd\mkbibnamefirst{# 2}\isdot}%
\ifblank{# 3}{}{\bibnamedelimd\mkbibnameprefix{# 3}\adddot}}}
Вот картинка, как выглядит на самом деле:
Замена предлога «и» на запятую между авторами:
\renewcommand*{\multinamedelim}{\adddot}
\renewcommand*{\finalnamedelim}{\addcomma\space}
Основные настройки завершены.
Если библиография состоит из нескольких частей,
\clearpage
\nocite{*}
\renewcommand*{\bibfont}{\small}
\renewcommand\bibname{}
\phantomsection
\chapter*{Библиография}
\addcontentsline{toc}{chapter}{Библиография}
\phantomsection
\section*{Литература}
\addcontentsline{toc}{section}{Литература}
\newrefcontext[labelprefix=1.]
\printbibliography[heading=nobibintoc,keyword={rus},resetnumbers=true,title={}]
\phantomsection
\section*{Электронные ресурсы}
\addcontentsline{toc}{section}{Электронные ресурсы}
\newrefcontext[labelprefix=2.]
\printbibliography[heading=nobibintoc,keyword={int},resetnumbers=true,title={}]
то находящиеся над линией записи можно сделать таким образом:
\renewbibmacro*{entryhead:full}{
\printfield{labelprefix}\! %команда \! нужна для уменьшения промежутка
\printfield{labelnumber}\adddot%
\hfill
\printfield{labeltitle}}
Поле media напечатать так и не удалось. Добавил его оформление и содержимое в поле title:
@Online{sait95,
title = {Особенности заточки ножей [Электронный ресурс]},
media = {eresource},
url = {http://knifehacker.ru/osobennosti-zatochki-nozha/},
abstract = {Статья содержит информацию об основных формах поперечных сечений клинков},
language = {russian},
langid = {russian},
keywords = {int},
shorttitle = {Профили клинков},
}
Вот результат:
На этом сегодня завершим деятельность.