Как уменьшить межстрочный интервал в библиографии biblatex, состоящей из одного абзаца, с мелким шрифтом

Как уменьшить межстрочный интервал в библиографии biblatex, состоящей из одного абзаца, с мелким шрифтом

Я пытаюсь создать сжатую библиографию из одного абзаца, используя biblatex, как вэтот ответ. Я также хотел бы сделать шрифт немного меньше основного размера шрифта документа. Я делаю это, устанавливая \bibfont; однако, это создает что-то похожее на двойной интервал, но мне нужен только одинарный интервал. Я думал, что

\renewcommand*{\bibfont}{\fontsize{5pt}{7pt}\selectfont}

позаботится об этом, поскольку \fontsizeпредполагается, что он также устанавливает \baselineskipзначение. Кто-нибудь знает, почему у меня такой большой межстрочный интервал в библиографии, и как мне уменьшить этот интервал до чего-то, что будет выглядеть как обычный одинарный интервал?

\begin{filecontents*}{\jobname.bib}
@article{a1,
  author = {Smith, Jane},
  journal = {Nature},
  volume = {7},
  pages = {201--204},
  year = {1999},
}
@article{a2,
  author = {Smith, Jane},
  journal = {Nature},
  volume = {7},
  pages = {201--204},
  year = {2000},
}
@article{a3,
  author = {Smith, Jane},
  journal = {Nature},
  volume = {7},
  pages = {201--204},
  year = {2001},
}
@article{a4,
  author = {Smith, Jane},
  journal = {Nature},
  volume = {7},
  pages = {201--204},
  year = {2002},
}
@article{a5,
  author = {Smith, Jane},
  journal = {Nature},
  volume = {7},
  pages = {201--204},
  year = {2003},
}
\end{filecontents*}
\documentclass{article}

\usepackage[american]{babel}

\usepackage{csquotes}

\usepackage[backend=biber,
  style=authoryear-comp,
  maxcitenames=2,
  maxnames=1,
  minnames=1,
  firstinits=true]{biblatex}

\addbibresource{\jobname.bib}

\renewcommand*{\bibfont}{\fontsize{5pt}{7pt}\selectfont}

\defbibenvironment{bibliography}
  {}
  {}
  {\addspace}

\begin{document}

\nocite{*}
\printbibliography

\end{document}

Изображение, показывающее большие интервалы между элементами библиографии

решение1

Проблема в том, что если горизонтальный режим не завершен в библиографической среде, то значение \baselineskipвозвращается к тому, что было в другом месте документа. Это обсуждается вэтот ответкУменьшите межстрочный интервал при использовании шрифта меньшего размера в среде.

Вы можете завершить абзац (т. е. завершить горизонтальный режим и принудительно разбить материал на строки), вставив \endgrafв <end code>часть \defbibenvironmentкоманды:

\defbibenvironment{bibliography}
  {}
  {\endgraf}
  {\addspace}

Здесь необходимо использовать \endgrafвместо \par, в противном случае возникнет ошибка (см.Когда лучше использовать \par, чем \endgraf?для некоторого обсуждения различий между \parи \endgraf).

Вот полный текст MWE:

\begin{filecontents*}{\jobname.bib}
@article{a1,
  author = {Smith, Jane},
  journal = {Nature},
  volume = {7},
  pages = {201-204},
  year = {1999},
}
@article{a2,
  author = {Smith, Jane},
  journal = {Nature},
  volume = {7},
  pages = {201-204},
  year = {2000},
}
@article{a3,
  author = {Smith, Jane},
  journal = {Nature},
  volume = {7},
  pages = {201-204},
  year = {2001},
}
@article{a4,
  author = {Smith, Jane},
  journal = {Nature},
  volume = {7},
  pages = {201-204},
  year = {2002},
}
@article{a5,
  author = {Smith, Jane},
  journal = {Nature},
  volume = {7},
  pages = {201-204},
  year = {2003},
}
\end{filecontents*}
\documentclass{article}

\usepackage[american]{babel}

\usepackage{csquotes}

\usepackage[backend=biber,
  style=authoryear-comp,
  maxcitenames=2,
  maxnames=1,
  minnames=1,
  firstinits=true]{biblatex}

\addbibresource{\jobname.bib}

\renewcommand*{\bibfont}{\fontsize{5pt}{7pt}\selectfont}

\defbibenvironment{bibliography}
  {}
  {\endgraf}
  {\addspace}

\begin{document}

\nocite{*}
\printbibliography

\end{document}

А вот итоговый вывод с чем-то вроде одинарного межстрочного интервала:

введите описание изображения здесь

Связанный контент