Сегодня продолжим работать с библиографией. Как видно, в библиографии книги и электронные ресурсы расположены вперемешку. Создадим две библиографии. Опции загрузки biblatex таковы:
\usepackage[backend=biber,bibencoding=utf8,language=auto,autolang=other,sorting=ntvy,babel=other,maxbibnames=99,maxcitenames=2,
movenames=false,dropdates=true,url=false,style=gost-numeric]{biblatex}
Я забыл ранее сказать про опцию movenames=false. Её функция — не менять местами заголовок и список авторов, если авторов больше четырех. Ставим затем в преамбулу после загрузки пакета biblatex вот что:
\DeclareBibliographyCategory{Biblio}
\addtocategory{Biblio}{Uzel2,NozhNN,UzelLNS,Marochnik,NozhIH,}
А в документе в месте печати библиографии
\clearpage
\nocite{*}
\renewcommand*{\addcolondelim}{\addcolon\space}
\renewcommand\bibname{Литература}
\printbibliography[category=Biblio]
\renewcommand\bibname{Электронные ресурсы}
\printbibliography[notcategory=Biblio]
\clearpage
В квадратных скобочках помещаем принцип сортировки. Сортировать записи можно много по каким показателям — категориям, типу записи и т. д. Сейчас будем сортировать по категориям.
Вообще-то я предпочитаю сортировку по ключевым словам. Уберём из преамбулы
\DeclareBibliographyCategory{Biblio}
\addtocategory{Biblio}{Uzel2,NozhNN,UzelLNS,Marochnik,NozhIH,}
А в месте вывода библиографии поставим это:
\printbibliography[heading=bibintoc,keyword={rus},title={КНИГИ}]
\printbibliography[heading=bibintoc,keyword={int},title={САЙТЫ}]
Параметр heading=bibintoc добавит библиографию в содержание и в боковую панель.
Номера в библиографиях выводятся не так, как надо. Можно, конечно, выбрать стиль, не печатающий номера, но лучше создать отдельную нумерацию в каждую библиографию. Добавим в опции загрузки пакета biblatex
\usepackage[defernumbers=true,backend=biber,bibencoding=utf8, language=auto,autolang=other,sorting=ntvy,babel=other,maxbibnames=99, maxcitenames=2,movenames=false,url=false,style=gost-numeric]{biblatex}
Функция параметра defernumbers=true: перезагрузка нумерации; нумерация проставляется после двух компиляций, зато позволяет выцеплять библиографию по ключевым словам и нумеровать не из большего списка. A в месте вывода библиографии поставим это:
\printbibliography[heading=bibintoc,keyword={rus},resetnumbers=true,title={КНИГИ}]
\printbibliography[heading=bibintoc,keyword={int},resetnumbers=true,title={САЙТЫ}]
Вообще-то несколько библиографий мне не нравятся; лучше разделить библиографию на два подраздела. Есть много способов сделать это.
1. В документе — там, где печатается библиография — поставим такое:
\nocite{*}
\renewcommand*{\addcolondelim}{\addcolon\space}
\phantomsection
\chapter*{БИБЛИОГРАФИЯ}
\addcontentsline{toc}{chapter}{БИБЛИОГРАФИЯ}
\printbibliography[heading=subbibintoc,keyword={rus},resetnumbers=true,title={КНИГИ}]
\printbibliography[heading=subbibintoc,keyword={int},resetnumbers=true,title={САЙТЫ}]
\clearpage
Всё хорошо,
но если в главах есть минисодержание, то разделы библиографии будут отображаться в minitoc предыдущей главы, имеющий минисодержание:
Чтобы этого не было, сделаем так:
\phantomsection
\chapter*{БИБЛИОГРАФИЯ}
\addcontentsline{toc}{chapter}{БИБЛИОГРАФИЯ}
\noindent
\makebox[1.0\textwidth]{
{\begin{minipage}{\dimexpr\textwidth-3\mboxsep-1\mboxrule\relax}
\centering
\setlength\columnsep{10mm}
\begin{multicols}{2}
\startcontents[chapters]
\end{multicols}\\
\phantom{123}\\
\vspace{-10pt}
\end{minipage}}
}
\phantom{\lipsum[101]}
\vspace{-18mm}
\printbibliography[heading=subbibintoc,keyword={rus},resetnumbers=true,title={КНИГИ}]
\printbibliography[heading=subbibintoc,keyword={int},resetnumbers=true,title={САЙТЫ}]
То есть как бы добавим minitoc в библиографию, но выводить на печать не будем.
2. В преамбуле:
\usepackage[defernumbers=true,backend=biber,bibencoding=utf8, language=auto,autolang=other,sorting=ntvy,babel=other,maxbibnames=99, maxcitenames=2,movenames=false,dropdates=true,url=false, style=gost-numeric]{biblatex}
В документе:
\nocite{*}
\renewcommand*{\addcolondelim}{\addcolon\space}
\renewcommand\bibname{}
\phantomsection
\chapter*{Библиография}
\addcontentsline{toc}{chapter}{Библиография}
\phantomsection
\section*{Литература}
\addcontentsline{toc}{section}{Литература}
\printbibliography[heading=nobibintoc,keyword={rus},resetnumbers=true,title={}]
\phantomsection
\section*{Электронные ресурсы}
\addcontentsline{toc}{section}{Электронные ресурсы}
\printbibliography[heading=nobibintoc,keyword={int},resetnumbers=true,title={}]
Компилируем и смотрим:
А в содержании появился косяк
Откуда он взялся? Дело в том, что класс memoir добавляет в содержание библиографию по умолчанию. Чтобы этого не было, ставим в преамбулу команду
\nobibintoc
хоть перед загрузкой biblatex, хоть после.
Всем способ хорош — даже разделы библиографии открываются на заголовке, а не на первой строке — но если глава имеет какое-то навороченное декоративное офориление, то этот способ даст сбой. Чтобы всё было как надо, сделаем библиографию таким образом:
3. Ещё один способ:
\nocite{*}
\renewcommand*{\addcolondelim}{\addcolon\space}
\renewcommand\bibname{Библиография}
\printbibheading
\addcontentsline{toc}{chapter}{Библиография}
\newrefcontext[labelprefix=1.]
\printbibliography[heading=subbibintoc,keyword={rus},resetnumbers=true,title={Литература}]
\newrefcontext[labelprefix=2.]
\printbibliography[heading=subbibintoc,keyword={int},resetnumbers=true,title={Электронные ресурсы}]
Как видим, команда
\newrefcontext[labelprefix=1.]
печатает префикс перед номером (а то одинаковые номера в разных библиографиях при цитировании будут выглядеть странно).
А что делать, если нужно вставить какой-либо знак после номера? Сколько я не пытался, сделать автоматическую расстановку пока не удалось. Ну что же, не получилось по хорошему, сделаем по плохому. Прогоним компиляцию, запомним, на каком месте какая запись находится, а после добавим в базу данных поле shorthand, куда и выставим нужные нам значения:
@BOOK{INozhForma,
title = {Особенности заточки ножей},
media = {eresource},
url = {http://knifehacker.ru/osobennosti-zatochki-nozha/},
language = {russian},
langid = {russian},
keywords = {int},
shorthand = {2$’$}
}
@BOOK{MWF,
author = {Миловидов, Владимир Фёдорович},
title = {О заточке клинков},
media = {eresource},
url = {https://www.youtube.com/watch?v=6ANOFS2N2xw},
language = {russian},
langid = {russian},
keywords = {int},
shorthand = {1$’$}
}
Это поле будет выводиться вместо номера. Компилируем и смотрим:
В прошлый раз я говорил о вставке русских аннотаций к иностранным книгам. При использовании первого способа (когда редактируем .bbl-файл), если использовать префиксы перед цифрами, то запись вообще не будет выводиться. В этом случае либо пользуйтесь полем shorthand, либо вообще отключите перезагрузку нумерации. При использовании второго способа никаких нареканий нет.
На сегодня достаточно.