在我的参考书目中,我需要两个类别:主要来源和次要来源。第一类需要细分为手稿和已出版作品。
因此,我想我可以使用以下代码:
\printbibheading
\printbibliography[keyword={Manuscripts}, heading=subbibliography, title={Manuscripts}]
\printbibliography[keyword={Primary Source}, heading=subbibliography, title={Primary Sources}]
\printbibliography[keyword={Secondary Source}, heading=subbibliography, title={Secondary Sources}]
然而,这给了我三个类别,但我希望只有两个,并且第一个被细分。换句话说,我需要这样的东西:
\printbibliography[keyword={Manuscripts},
heading=subbibliography,
title={Primary Sources},
subtitle={Manuscripts}] %% subtitle={...}
答案1
好吧,您可以执行以下操作将两个分段命令合并为一个\defbibheading
:
\documentclass[12pt]{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\defbibheading{multilevel}{%
\section*{Primary Sources}
\subsection*{Manuscripts}}
\begin{document}
\nocite{knuth:ct}
\printbibliography[heading=multilevel]
\end{document}
一个更完整的例子是:
\documentclass[12pt]{article}
\usepackage[backend=biber,style=authortitle]{biblatex}
\addbibresource{biblatex-examples.bib}
\defbibheading{multilevel}{%
\section*{Primary Sources}
\subsection*{Manuscripts}}
\defbibheading{published}{%
\subsection*{Published Works}}
\defbibheading{secondary}{%
\section*{Secondary Sources}}
\DeclareBibliographyCategory{mss}
\DeclareBibliographyCategory{pri}
\DeclareBibliographyCategory{sec}
\addtocategory{mss}{knurth:ct}
\addtocategory{pri}{knuth:ct:a}
\addtocategory{sec}{knuth:ct:b}
\begin{document}
\nocite{knuth:ct,knuth:ct:a,knuth:ct:b}
\printbibliography[heading=multilevel, notcategory={pri}, notcategory={sec}]
% \printbibliography[heading=multilevel, category={mss}]
\printbibliography[heading=published, category={pri}]
\printbibliography[heading=secondary, category={sec}]
\end{document}
但是由于某种原因,如果您使用三个参考书目类别,它就无法正常工作,尽管如果您使用 ... 它会起作用。notcategory
但是,只要您的文件条目具有适当的字段,它就可以使用三个不同的keyword
(例如keyword={mss}
,,, )正常工作。(不幸的是,随附的只有两个类别:主要和次要。)keyword={pri}
keyword={sec}
.bib
keywords
biblatex-examples.bib
biblatex
keywords
答案2
四年后,我终于找到了解决方案,因为我也遇到过类似的问题,但找到了更好的解决方案。Biblatex 3.5 可以稍微改进一下解决方案。摘自手册:
\defbibheading{姓名}[标题][代码}
此命令定义参考书目标题。姓名是在选择标题时传递给 \printbibliography 或 \printbibheading 和 \printbiblist 的标题选项的标识符。代码应为生成完整标题的 LaTeX 代码,包括页眉和目录中的条目(如果需要)。如果使用 title 选项调用 \printbibliography 或 \printbiblist,则标题将作为 #1 传递给标题定义。如果没有,则由可选的标题参数作为 #1 传递。标题参数通常是 \bibname、\refname 或 \biblistname(参见 § 4.9.2.1)。
好吧,这不是很清楚,但它的意思是你可以编写一个宏来生成书目标题。在上述情况下,可以执行以下操作:
\defbibheading{firstlevel}[]{%
\section*{#1}
\addcontentsline{toc}{section}{#1}}
\defbibheading{secondlevel}[]{%
\subsection*{#1}
\addcontentsline{toc}{subsection}{#1}}
(...)
\section*{Primary Sources}
\addcontentsline{toc}{section}{Primary Sources}
\printbibliography[keyword=published, heading=secondlevel, title={Published Works}]
\printbibliography[keyword=manuscripts, heading=secondlevel, title={Manuscripts}]
\printbibliography[keyword=secondary, heading=firstlevel, title = {Secondary Sources}]
您仍然需要显式调用来创建第二部分;也许 LateX 大师可以改进代码定义以避免这种情况。但我认为这个解决方案更简洁。
答案3
我知道,我可以用这样的东西:
\printbibheading
\section*{Primary Sources}
\subsection*{Manuscripts}
\printbibliography[keyword={Manuscripts}, heading=none]
\subsection*{Published Works}
\printbibliography[keyword={Primary Source}, heading=none]
\section*{Secondary Sources}
\printbibliography[keyword={Secondary Source}, heading=none]
然而,也许还有其他更优雅的解决方案。