
Я хотел бы связать год и страницы -элемента, incollection
чтобы в библиографии они отображались как единое целое. В другом случае (журнал + номер страницы в -элементе article
) я написал новый bibmacro
и заменил соответствующую команду в конце драйвера библиографии для article
. Однако, используя стиль, предоставленный biblatex-ext
, я не уверен, как реализовать эту стратегию. ВДругой вопросчто привело меня к использованиюbiblatex-ext
, я получил этот код:
\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=ext-authoryear-ibid, citexref=true]{biblatex}
\usepackage{libertinus}
\begin{filecontents}{\jobname.bib}
@collection{EickerWolf2017,
title = {Ungleichheit in Deutschland – ein »gehyptes Problem«?},
editor = {Eicker-Wolf, Kai and Truger, Achim},
location = {Marburg},
year = {2017},
}
@incollection{Schreiner2017,
author = {Schreiner, Patrick},
title = {Löhne und Verteilung},
crossref = {EickerWolf2017},
pages = {47--78},
}
@incollection{Bosch2017,
author = {Bosch, Gerhard and Kalina, Thorsten},
title = {Die deutsche Mittelschicht aus der Arbeitsmarktperspektive},
crossref = {EickerWolf2017},
pages = {111--142},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{Bosch2017,Schreiner2017}
\printbibliography
\end{document}
Для краткого цитирования родительской записи после указания имен редакторов я хотел бы указать год и страницы в скобках, разделив их двоеточием и пробелом [2017, с. 17–46 → (2017: 17–46)]. Я бы использовал что-то вроде этого:
\newbibmacro*{year+pages}{%
\space\printtext[parens]{\printfield{year}: \printfield{pages}}%
\newunit}
После просмотра кода biblatex-ext
и получения нескольких указаний от moewe, я просто не понимаю, где я должен его разместить, поскольку задействованы перекрестные ссылки и различные переключатели. Может ли кто-нибудь дать мне подсказку?
решение1
Вы можете изменить код таким biblatex-ext
образом, чтобы ссылки на страницы xrefcite
печатались непосредственно в примечании команды цитирования и чтобы функция использовала \textcite
.
Сначала нам нужно удалить bibmacro, который печатает страницы из соответствующих bibdrivers. Затем мы изменим bibmacro crosscite
так, чтобы он передавал pages
поле в команду цитирования.
\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=ext-authoryear-ibid, citexref=true]{biblatex}
\usepackage{libertinus}
\DeclareDelimFormat{postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\usepackage{xpatch}
\newcommand*{\removechapterpages}[1]{%
\xpatchbibdriver{#1}
{\newunit\newblock
\usebibmacro{chapter+pages}}
{}
{}{}}
\removechapterpages{inbook}
\removechapterpages{incollection}
\removechapterpages{inproceedings}
\renewbibmacro*{crosscite}[1]{%
\iftoggle{bbx:citexref}
{\iffieldundef{crossref}
{\iffieldundef{xref}
{\usebibmacro{#1}%
\newunit\newblock
\usebibmacro{chapter+pages}}
{\usebibmacro{xrefcitewithpages}{xref}}}
{\usebibmacro{xrefcitewithpages}{crossref}}}
{\usebibmacro{#1}%
\newunit\newblock
\usebibmacro{chapter+pages}}}
\makeatletter
\newbibmacro{xrefcitewithpages}[1]{%
\printtext{%
\iffieldundef{pages}
{\bbx@xrefcite{\thefield{#1}}}
{\expandafter\bbx@xrefcite\expandafter[\abx@field@pages]{\thefield{#1}}}}%
}
\renewcommand*{\bbx@xrefcite}{%
\AtNextCite{%
\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\boolfalse{backtracker}}%
\textcite}
\makeatother
\begin{filecontents}{\jobname.bib}
@collection{EickerWolf2017,
title = {Ungleichheit in Deutschland – ein »gehyptes Problem«?},
editor = {Eicker-Wolf, Kai and Truger, Achim},
location = {Marburg},
year = {2017},
}
@incollection{Schreiner2017,
author = {Schreiner, Patrick},
title = {Löhne und Verteilung},
crossref = {EickerWolf2017},
pages = {47--78},
}
@incollection{Bosch2017,
author = {Bosch, Gerhard and Kalina, Thorsten},
title = {Die deutsche Mittelschicht aus der Arbeitsmarktperspektive},
crossref = {EickerWolf2017},
pages = {111--142},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{Bosch2017,Schreiner2017}
\printbibliography
\end{document}