Biblatex:音量之前的部分

Biblatex:音量之前的部分

我需要引用大量經典哲學家的全集,這些著作通常分為幾個部分(或部分),每個部分包括幾卷。這是一個格式正確的範例:

克里斯蒂安·馮·沃爾夫 (1962)。原初哲學本體論。埃德。讓·埃科爾。綜合工廠。 Abteilung 2:Lateinische Schriften,Bd。 3.希爾德斯海姆:奧姆斯。

我無法弄清楚如何指示 biblatex 產生此輸出。我嘗試使用“部分”和“體積”字段,如下面的參考文獻所示:

@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)。綜合工廠。卷。 3.2:拉丁文:原初哲學本體論。埃德。讓·埃科爾。希爾德斯海姆:奧爾姆斯。

建議表示讚賞。

編輯:MWE with Latex 和(內含)圍兜參考:

\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}

最終編輯:修改後的 MWE 合併並稍微修改了 Carols 的解決方案:

\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。若要在參考書目的條目中使用其他語言,需要在條目中新增 和 langid,並在 bibltex 選項中新增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,而不是\newbibmacro因為巨集已經定義)並且巨集也與and一起maintitle+booktitle使用。然後這些變更會影響其他驅動程式(這意味著和欄位中的順序)。incollectioninprocedingsvolumepart

您可以同時將inbook與和其他語言一起使用。german只需要加入一個邏輯:如果是langidgerman做一些macro,否則:再做一個macro。下面是一個有兩個入口的 MWE inbook。一個在german另一個中english

\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}

在此輸入影像描述

相關內容