Найти тему

Некоторые особенности работы с Biblatex. Часть IV.

Сегодня займёмся оформлением цитат. Если обвешать дополнительными пакетами Bibtex, то он, в общем-то, не уступит Biblatex. Среди прочих пакетов есть пакет natbib, который может создавать вокруг цитат фигурные и угловые скобки. Но с Biber он не работает, хотя некоторые команды и можно подключить с помощью опции загрузки biblatex (natbib=true). Однако особенной пользы в этой опции нет, а желание оформить цитаты на свой вкус остаётся.
Вначале посмотрим, какие эффекты дают различные типы цитат:

cite \cite{Marochnik,NozhNN}\\
parencite \parencite{Marochnik,NozhNN}\\
autocite \autocite{Marochnik,NozhNN}\\
textcite \textcite{Marochnik,NozhNN}\\
footcite \footcite{Marochnik,NozhNN}\\
supercite \supercite{Marochnik,NozhNN}\\
smartcite \smartcite{Marochnik,NozhNN}\\

Меня интересует оформление цитат cite и parencite. Займёмся настройкой команд \cite и \parencite. Стиль gost-numeric базируется на стиле numeric-comp. Файл numeric-comp.cbx находится в папке biblatex/latex/cbx — откроем его и посмотрим на содержимое. Сначала попробуем отрегулировать вывод команды \parencite:

\DeclareCiteCommand{\parencite}[\mkbibbrackets]
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite:comp}}
  {}
  {\usebibmacro{cite:dump}%
   \usebibmacro{postnote}}

Уберём необязательный аргумент [\mkbibbrackets] и поставим этот макрос после загрузки biblatex:

\DeclareCiteCommand{\parencite}
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite:comp}}
  {}
  {\usebibmacro{cite:dump}%
   \usebibmacro{postnote}}

Компилируем, смотрим:

-2

Можно в тексте добавлять самые разные скобки:

Без скобок:  \parencite{Marochnik,NozhNN}
Фигурные: \{\parencite{Marochnik,NozhNN}\}
Круглые:  (\parencite{Marochnik,NozhNN})
Угловые:   $\langle$\parencite{Marochnik,NozhNN}$\rangle$
Декоративные:  \textlquill\parencite{Marochnik,NozhNN}\textrquill  (эта команда из пакета textcomp)

Вот они все:

-3

Всё это хорошо, но хотелось бы загружать скобки автоматически. Добавим в преамбулу перед загрузкой biblatex какой-нибудь символьный шрифт (подбираем его с тем расчётом, чтобы он не конфликтовал с biblatex и основным математическим шрифтом):

\usepackage{fdsymbol}
\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,url=false,
style=gost-numeric]{biblatex}

Переопределим команду \parencite

\DeclareCiteCommand{\parencite}
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}$\langle$}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite:comp}}
  {}
  {\usebibmacro{cite:dump}%
   \usebibmacro{postnote}$\rangle$}

Переопределим команду \cite

\DeclareCiteCommand{\cite}
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}$\lbrace$}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite:comp}}
  {}
  {\usebibmacro{cite:dump}%
   \usebibmacro{postnote}$\rbrace$}

Ставим в преамбулу после загрузки пакета biblatex. Результат:

-4

Или так:

\DeclareCiteCommand{\parencite}
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}$\lAngle$}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite:comp}}
  {}
  {\usebibmacro{cite:dump}%
   \usebibmacro{postnote}$\rAngle$}

Двойные угловые

\DeclareCiteCommand{\cite}
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}(}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite:comp}}
  {}
  {\usebibmacro{cite:dump}%
   \usebibmacro{postnote})}

и круглые — они получатся и без дополнительных шрифтов — скобки:

-5

Если не хочется подключать дополнительные шрифты, фигурные скобки можно получить и таким образом:

\DeclareCiteCommand{\parencite}
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}\{}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite:comp}}
  {}
  {\usebibmacro{cite:dump}%
   \usebibmacro{postnote}\}}

-6

Ну и хватит пока.