
Я использую biblatex-ext
with introcite=label
для получения стиля цитирования, как показано в следующем вопросе:
Это дает мне метки с пробелом между автором и годом как в метке, так и в библиографии. Однако мне требуется иметь пробел между автором и годом в метке и запятую между автором и годом в библиографической записи. Поэтому мне нужно что-то вроде этого:
Tietze et al. 2012 Tietze, Ulrich; Schenk, Christoph, 2012.
Halbleiterschaltungstechnik. ...
Обратите внимание, что я использовал следующее решение, чтобы убрать скобки вокруг года:biblatex: Как убрать скобки вокруг года в стиле authoryear?
В поисках решения я нашел
\renewcommand*{\nameyeardelim}{\addcomma\space}
но это работает только для метки, делающей указанную выше запись
Tietze et al., 2012 Tietze, Ulrich; Schenk, Christoph 2012.
Halbleiterschaltungstechnik. ...
Это противоположно тому, что мне нужно. Мне нужен пробел между автором и годом в названии и запятая в библиографической записи.
решение1
Как упоминалосьДэвид Пёртонвкомментарии, nameyeardelim
— это разделитель, зависящий от контекста. Это означает, что вы можете дать ему разные определения для библиографии и цитат. Метка introcite
имеет контекст bbx@introcite
, который отличается от контекста bib
для остальной части библиографии, поэтому мы можем использовать nameyeardelim
здесь разные значения.
Значение по умолчанию nameyeardelim
для всех контекстов — \addspace
, поэтому нам нужно только изменить разделитель для bib
контекста на запятую с последующим пробелом.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber, introcite=label, dashed=false]{biblatex}
\addbibresource{biblatex-examples.bib}
\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}
\DeclareDelimFormat[bib]{nameyeardelim}{\addcomma\space}
\DeclareFieldFormat{biblabeldate}{#1}
\begin{document}
\cite{sigfridsson,worman,geer,knuth:ct:a}
\printbibliography
\end{document}