biblatex-ext에서 두 개의 개별 biblatex 필드를 결합합니다.

biblatex-ext에서 두 개의 개별 biblatex 필드를 결합합니다.

incollection-항목의 연도와 페이지를 연결하여 참고문헌에서 하나의 단위로 표시하고 싶습니다 . 다른 경우(항목의 저널 + 페이지 번호)에서는 새 항목을 article작성하고 . 하지만 에서 제공하는 스타일을 사용하면 이 전략을 어떻게 구현해야 할지 모르겠습니다. ~ 안에bibmacroarticlebiblatex-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, p.17–46 → (2017: 17–46)] 나는 다음과 같은 내용을 사용할 것입니다.

\newbibmacro*{year+pages}{%
  \space\printtext[parens]{\printfield{year}: \printfield{pages}}%
  \newunit}

moewe 의 코드를 살펴보고 biblatex-extmoewe로부터 몇 가지 지침을 받은 후에도 상호 참조 및 다양한 토글이 관련되어 있기 때문에 코드를 어디에 배치해야 할지 알 수 없습니다. 누군가 나에게 힌트를 줄 수 있습니까?

답변1

인용 명령의 포스트노트에 의 biblatex-ext페이지 참조가 직접 인쇄되도록 코드를 수정하고 기능을 사용할 수 있습니다 .xrefcite\textcite

먼저 관련 bibdriver에서 페이지를 인쇄하는 bibmacro를 제거해야 합니다. 그런 다음 인용 명령에 필드를 crosscite전달하도록 bibmacro를 수정합니다 .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}

보쉬, 게르하르트와 토르스텐 칼리나(2017). "Die deutsche Mittelschicht aus der Arbeitsmarktperspektive". In: Eicker-Wolf und Truger (2017: 111–142).

관련 정보