Biblatex를 사용하여 참고문헌 드라이버 사용자 정의

Biblatex를 사용하여 참고문헌 드라이버 사용자 정의

번역자의 이름을 포함하기 위해 특정 항목 유형(bookinbook)에 대한 참고문헌 드라이버를 재정의하고 싶습니다. 여기서 번역자는 상위 도서 내의 다양한 작업에 대해 다를 수 있습니다(상위 항목에서 상속되지 않음). 따라서 내 항목이 다음과 같이 보이도록 하고 싶습니다.

플라톤:메논. 우버. 폰 프리드리히 슐라이어마허. 안에:베르케Bd. II, S. 509--599.

--프로타고라스. 우버. 폰 디트리히 쿠르츠. 안에:베르케Bd. II, S. 83--217.

다음 드라이버를 사용하여 "Übers. von"(ed. by) 부분을 제외한 모든 것을 달성합니다.

\DeclareBibliographyDriver{bookinbook}{%
    \usebibmacro{bibindex}%
    \usebibmacro{begentry}%
    \usebibmacro{author/translator+others}%
    \setunit{\labelnamepunct}\newblock
    \usebibmacro{title}%
    \newunit
    \printlist{language}%
    \newunit\newblock
    \usebibmacro{byauthor}%
    \newunit\newblock
    \usebibmacro{in:}%
    \iffieldundef{crossref}
    {\usebibmacro{crossref:full}}
    {\usebibmacro{crossref:labelbookinbook}}
    \newunit\newblock
    \usebibmacro{chapter+pages}%
    \iffieldundef{crossref}
    {\usebibmacro{crossref:extrainfo}}
    {}
    \setunit{\bibpagerefpunct}\newblock
    \usebibmacro{pageref}%
    \usebibmacro{finentry}}

이 \newbibmacro와 함께:

\newbibmacro{crossref:labelbookinbook}{%
    \entrydata{\strfield{crossref}}
    {\printfield[title]{labeltitle}}
    \setunit*{\addspace}
    \printfield{volume}}

하지만 제목 바로 뒤에 "번역자"를 얻으려면 무엇을 어디에 삽입해야 할지 알 수 없습니다. 그래서 어떤 도움이라도 주시면 감사하겠습니다!

답변1

\usebibmacro{bytranslator+others}뒤에 매크로를 추가하세요 \usebibmacro{byauthor}.

\DeclareBibliographyDriver{bookinbook}{%
    \usebibmacro{bibindex}%
    \usebibmacro{begentry}%
    \usebibmacro{author/translator+others}%
    \setunit{\labelnamepunct}\newblock
    \usebibmacro{title}%
    \newunit
    \printlist{language}%
    \newunit\newblock
    \usebibmacro{byauthor}%
    \newunit\newblock
    \usebibmacro{bytranslator+others}%
    \newunit\newblock
    \usebibmacro{in:}%
    \iffieldundef{crossref}
      {\usebibmacro{crossref:full}}
      {\usebibmacro{crossref:labelbookinbook}}%
    \newunit\newblock
    \usebibmacro{chapter+pages}%
    \iffieldundef{crossref}
      {\usebibmacro{crossref:extrainfo}}
      {}%
    \setunit{\bibpagerefpunct}\newblock
    \usebibmacro{pageref}%
    \usebibmacro{finentry}}

기술적으로 for biblatex, translatorfor @in...항목(및 @bookinbook)은 전체 작업의 번역자(상위 @book)를 참조하므로 여기서 수행하는 작업은 약간 확장됩니다.

관련 정보