Biblatex: 볼륨 전 부분

Biblatex: 볼륨 전 부분

나는 종종 여러 권을 포함하여 여러 섹션(또는 부분)으로 나누어져 있는 고전 철학자의 전집을 인용해야 합니다. 다음은 올바른 형식의 예입니다.

볼프, 크리스티안 폰(1962).철학 프리마시브 온톨로지아. 에드. 장 에콜 지음.Gesammelte Werke. Abteilung 2: Lateinische Schriften, Bd. 3. 힐데스하임: 올름스.

이 출력을 생성하도록 biblatex에 지시하는 방법을 알 수 없습니다. 아래 참조와 같이 "part" 및 "volume" 필드를 사용해 보았습니다.

@Book{Wolff1962,
  Title                    = {Philosophia prima sive Ontologia},
  Author                   = {Wolff, Christian von},
  Editor                   = {Jean Ecole},
  Publisher                = {Olms},
  Address                  = {Hildesheim},
  Year                     = {1962},
  Part                     = {Abt. 2: Lateinische Schriften},
  Maintitle                = {Gesammelte Werke},
  Volume                   = {3},
  Language                 = {german}
}

불행하게도 biblatex는 부품이 부피에 종속되어 매우 다른 출력을 생성한다고 생각하는 것 같습니다. 또한 책 제목 앞에 메인 제목이 인쇄됩니다. 또한 이와 같은 항목(문서 언어는 영어)에 대해 부품 및 볼륨에 대한 현지화된(독일어) 약어를 갖고 싶습니다. 언어 태그가 이를 처리하겠지만 분명히 그렇지는 않습니다. 출력은 다음과 같습니다.

볼프, 크리스티안 폰(1962).Gesammelte Werke. Vol. 3.2: Lateinische Schriften:철학 프리마시브 온톨로지아. 에드. 장 에콜 지음. 힐데스하임: 옴스.

제안해 주셔서 감사합니다.

편집: 라텍스 및 (포함) 턱받이 참조가 포함된 MWE:

\documentclass{article}
\usepackage[german,english]{babel}
\usepackage[backend=biber,natbib=true, indexing=cite, citestyle=authoryear-ibid, bibstyle=authoryear-ibid, sorting=nyt, indexing=cite]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{Wolff1962,
  Title                    = {Philosophia prima sive Ontologia},
  Author                   = {Wolff, Christian von},
  Editor                   = {Jean Ecole},
  Publisher                = {Olms},
  Year                     = {1962},

  Address                  = {Hildesheim},
  Language                 = {German},
  Volume                   = {3},

  Maintitle                = {Gesammelte Werke},
  Owner                    = {stefano},
  Part                     = {2: Lateinische Schriften}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
A citation of a multi-part work: \cite{Wolff1962}
\printbibliography
\end{document}

최종 편집: Carols의 솔루션을 통합하고 약간 수정하여 MWE를 수정했습니다.

\documentclass{article}
\usepackage[german,english]{babel}
\usepackage[backend=biber,natbib=true, indexing=cite, citestyle=authoryear-ibid, bibstyle=authoryear-ibid, sorting=nyt, indexing=cite,autolang=other,language=autobib]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BookInGesamm{Wolff1962,
  Title                    = {Philosophia prima sive Ontologia},
  Author                   = {Wolff, Christian von},
  Editor                   = {Jean Ecole},
  Publisher                = {Olms},
  Year                     = {1962},    
  Address                  = {Hildesheim},
  langid                   = {german},
  Volume                   = {3},

  Maintitle                = {Gesammelte Werke},
  Part                     = {2: Lateinische Schriften}
}

@Inbook{Pogliano2011,
  Title                    = {At the Periphery of the Rising Empire: The Case of Italy (1945-1968)},
  Author                   = {Claudio Pogliano},
  Editor                   = {Stefano Franchi and Francesco Bianchini},
  Pages                    = {119-147},
  Publisher                = {Rodopi},
  Year                     = {2011},   
  Address                  = {Amsterdam},    
  Booktitle                = {The Search for a Theory of Cognition: Early Mechanisms and New Ideas}
} 
\end{filecontents}
\addbibresource{\jobname.bib}
\DeclareFieldFormat[BookInGesamm]{title}{{\mkbibemph{#1}}}

 \DeclareBibliographyDriver{bookingesamm}{%
   \usebibmacro{bibindex}%
   \usebibmacro{begentry}%
   \usebibmacro{author/translator+others}%
   \setunit{\labelnamepunct}\newblock
   \usebibmacro{title}%
   \newunit
   \usebibmacro{byeditor+others}%
   \newunit\newblock
   \usebibmacro{byauthor}%
   \newunit\newblock
   \usebibmacro{bybookauthor}%
   \newunit\newblock
   \usebibmacro{maintitle+booktitle}%
   \newunit\newblock
   %\printlist{language}%
   \newunit\newblock
   \printfield{edition}%
   \newunit
   \iffieldundef{maintitle}
     {\printfield{volume}%
      \printfield{part}}
     {}%
   \newunit
   \printfield{volumes}%
   \newunit\newblock
   \usebibmacro{series+number}%
   \newunit\newblock
   \printfield{note}%
   \newunit\newblock
   \usebibmacro{publisher+location+date}%
   \newunit\newblock
   \usebibmacro{chapter+pages}%
   \newunit\newblock
   \iftoggle{bbx:isbn}
     {\printfield{isbn}}
     {}%
   \newunit\newblock
   \usebibmacro{doi+eprint+url}%
   \newunit\newblock
   \usebibmacro{addendum+pubstate}%
   \setunit{\bibpagerefpunct}\newblock
   \usebibmacro{pageref}%
   \newunit\newblock
   \iftoggle{bbx:related}
     {\usebibmacro{related:init}%
      \usebibmacro{related}}
     {}%
   \usebibmacro{finentry}}


 \newbibmacro*{maintitle+booktitle}{%
   \iffieldundef{maintitle}
     {}
     {\usebibmacro{maintitle}%
      \newunit\newblock
      \iffieldundef{volume}
        {}
        {\printfield[default]{part}%
         \setunit{\addcomma\space}
        \printfield{volume}}}%
   \usebibmacro{booktitle}%
   \newunit}

 \begin{document}
     A citation of a multi-part work: \cite{Wolff1962} and a citation of a real inbook ref: \cite{Pogliano2011}
    \printbibliography
  \end{document}

답변1

를 사용하는 것이 더 낫다고 생각합니다 inbook. 참고문헌의 항목에 다른 언어를 사용하려면 항목에 및 bibltex 옵션을 추가 해야 langid합니다 .autolang=otherlanguage=autobib

inbook필요한 주문을 얻기 위해 수정했습니다 . 하지만 book더 좋다고 생각되면 드라이버를 수정할 수 있습니다 .

\documentclass{article}
\begin{filecontents}{wolff.bib}
@inBook{Wolff1962,
  Title                    = {Philosophia prima sive Ontologia},
  Author                   = {Wolff, Christian von},
  Editor                   = {Jean Ecole},
  Publisher                = {Olms},
  Address                  = {Hildesheim},
  Year                     = {1962},
  Part                     = {Abt. 2: Lateinische Schriften},
  Maintitle                = {Gesammelte Werke},
  Volume                   = {3},
  langid                   = {german}
}
\end{filecontents}
 \usepackage[german,english]{babel}
 \usepackage[backend=biber,natbib=true, indexing=cite, citestyle=authoryear-ibid, bibstyle=authoryear-ibid, sorting=nyt, indexing=cite,autolang=other,language=autobib]{biblatex}
 \addbibresource{wolff.bib}

\DeclareFieldFormat[inbook]{title}{{\mkbibemph{#1}}}

\DeclareBibliographyDriver{inbook}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{bybookauthor}%
  \newunit\newblock
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  %\printlist{language}%
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}


\newbibmacro*{maintitle+booktitle}{%
  \iffieldundef{maintitle}
    {}
    {\usebibmacro{maintitle}%
     \newunit\newblock
     \iffieldundef{volume}
       {}
       {\printfield[default]{part}%
        \setunit{\addcomma\space}
       \printfield{volume}}}%
  \usebibmacro{booktitle}%
  \newunit}

\begin{document}
\cite{Wolff1962}

\printbibliography

\end{document}

여기에 이미지 설명을 입력하세요

편집하다

위의 답변에서 매크로가 재정의되었기 때문에 최종 편집에서 문제가 발생할 가능성이 있습니다 maintitle+booktitle(대답에는 매크로가 이미 정의되어 있기 때문에 사용하는 \renewbibmacro것이 아니라 실수가 더 좋습니다). 매크로도 and 와 함께 사용됩니다 . 그런 다음 변경 사항은 다른 드라이버에 영향을 미칩니다( 및 필드의 순서를 의미함).\newbibmacromaintitle+booktitleincollectioninprocedingsvolumepart

동시에 및 다른 언어 inbook와 함께 사용할 수 있습니다 . is : 일부 작업을 수행하고 else: 다른 작업을 수행 german하는 논리를 추가하면 됩니다 . 두 개의 항목이 있는 MWE 아래 . 다른 하나 는 .langidgermanmacromacroinbookgermanenglish

\documentclass{article}
\begin{filecontents}{wolff.bib}
@inBook{Wolff1962,
  Title                    = {Philosophia prima sive Ontologia},
  Author                   = {Wolff, Christian von},
  Editor                   = {Jean Ecole},
  Publisher                = {Olms},
  Address                  = {Hildesheim},
  Year                     = {1962},
  Part                     = {Abt. 2: Lateinische Schriften},
  Maintitle                = {Gesammelte Werke},
  Volume                   = {3},
  langid                   = {german}
}

@inBook{other1999,
  Title                    = {The title in english},
  Author                   = {Last, Name},
  Editor                   = {Editor Name},
  Publisher                = {Springer},
  Address                  = {New York},
  Year                     = {1999},
  Part                     = {1},
  Maintitle                = {The Maintitle},
  Volume                   = {3},
}

\end{filecontents}
 \usepackage[german,english]{babel}
 \usepackage[backend=biber,natbib=true, indexing=cite, citestyle=authoryear-ibid, bibstyle=authoryear-ibid, sorting=nyt, indexing=cite,autolang=other,language=autobib]{biblatex}
 \addbibresource{wolff.bib}

\DeclareFieldFormat[inbook]{title}{%
\iffieldequalstr{langid}{german}{\mkbibemph{#1}}{\mkbibquote{#1}}}

\newbibmacro*{inbookgerman}{%
   \usebibmacro{byeditor+others}%
   \newunit\newblock
   \usebibmacro{byauthor}%
   \newunit\newblock
   \usebibmacro{bybookauthor}%
   \newunit\newblock
   \usebibmacro{maintitle+booktitle/german}%
   \newunit\newblock
   \printlist{language}%
}

\newbibmacro*{inbookother}{%
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{bybookauthor}%
  \newunit\newblock
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
}

\newbibmacro*{maintitle+booktitle/german}{%
  \iffieldundef{maintitle}
    {}
    {\usebibmacro{maintitle}%
     \newunit\newblock
     \iffieldundef{volume}
       {}
       {\printfield[default]{part}%
        \setunit{\addcomma\space}
       \printfield{volume}}}%
  \usebibmacro{booktitle}%
  \newunit}


\DeclareBibliographyDriver{inbook}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \iffieldequalstr{langid}{german}{\usebibmacro{inbookgerman}}{\usebibmacro{inbookother}}
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}


\begin{document}
\cite{Wolff1962}
\cite{other1999}

\printbibliography

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보