Форматировать поле «аннотация» в biblatex

Aug 28 2020

Я использую biblatex для создания аннотированного списка для чтения. Для более длинных аннотаций параметры форматирования, доступные в поле аннотации, ограничены. В настоящее время я использую, \parчтобы получить новый абзац в аннотации в списке чтения. Можно ли заставить нормальные абзацы работать ( <CR><CR>) внутри аннотации? Это сделало бы внешние файлы аннотаций более гибкими.

Ответы

2 moewe Aug 28 2020 at 13:09

Biber разбирает все символы новой строки в обычные пробелы (я думаю, как и BibTeX), поэтому вы не можете получить новый абзац с пустой строкой в .bibфайле. \parкажется самый простой вариант.

Но я бы сказал, что .bibфайл, возможно, просто не лучшее место для написания длинных аннотаций к вашим записям.

Если вы хотите добавить большие аннотации к своим .bibзаписям, может быть удобнее использовать внешний .texфайл для хранения этих аннотаций (где вы можете использовать пустые строки \par). См. Также Как встроить отзыв в biblatex? , §3.13.8 Внешние Тезисы и аннотации и §4.11.3 Внешние Тезисы и аннотации на руководство .biblatex

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, loadfiles, backend=biber]{biblatex}

\renewbibmacro{finentry}{%
  \setunit{%
    \finentrypunct
    \renewcommand*{\finentry}{}%
    \par}%
  \usebibmacro{annotation}%
  \finentry
}

\begin{filecontents}{\jobname.bib}
@book{appleby,
  author     = {Humphrey Appleby},
  title      = {On the Importance of the Civil Service},
  date       = {1980},
}
\end{filecontents}
\begin{filecontents}{bibannotation-appleby.tex}
Lorem ipsum \[x^2+y^2=z^2\] that was mathy.
Also $a+b=c$ and so forth.
Just a few words to make the next
paragraph stand out properly.

We can even have a new paragraph.
\end{filecontents}

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}


\begin{document}
\cite{sigfridsson,appleby}
\printbibliography
\end{document}


Для более тяжелой разметки абзаца вы можете настроить

\setlength{\bibparsep}{0.5\baselineskip plus 2pt}

или просто измените настройки абзаца перед печатью annotation(обычно вы, вероятно, не устанавливаете оба значения \parskipи \parindentна ненулевые значения, но это только для демонстрационных целей)

\renewbibmacro{finentry}{%
  \setunit{%
    \finentrypunct
    \renewcommand*{\finentry}{}%
    \par}%
  \setlength{\parskip}{0.5\baselineskip plus 2pt}%
  \setlength{\parindent}{1em}%
  \usebibmacro{annotation}%
  \finentry
}

(Мне не очень нравится иметь такие настройки форматирования только в bibmacro, но это был самый простой способ сделать их правильно, поскольку они действуют на абзацы.)