我需要引用大量經典哲學家的全集,這些著作通常分為幾個部分(或部分),每個部分包括幾卷。這是一個格式正確的範例:
克里斯蒂安·馮·沃爾夫 (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=other
和language=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
使用。然後這些變更會影響其他驅動程式(這意味著和欄位中的順序)。incollection
inprocedings
volume
part
您可以同時將inbook
與和其他語言一起使用。german
只需要加入一個邏輯:如果是langid
:german
做一些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}