使用 Biblatexautocite
命令时,我有时会遇到需要将引文格式化为参考集的情况。可以使用mcite
,但这样我就失去了 autocite 提供的高级标记,例如在 、 和 之间切换plain
。inline
如果superscript
我使用autocite
或autocites
,每个参考文献都会在参考书目中获得自己的引文。有没有提供类似我在这个例子中所说的解决方案的解决方案\mautocite
?
\usepackage[backend=biber,mcite,subentry,autocite=plain]{biblatex}
...
\begin{document}
Some text here\autocite{key1}. More text here\mautocite{set1,*key2,*key3,*key4}.
Cite a subentry\autocite{key3}.
\end{document
在文本中,它看起来是
此处有一些文本 [1]。此处有更多文本 [2]。
引用子条目 [2b].
这将在参考书目中给出两个条目,其中第二个参考 [2] 将是一个集合。有没有办法让 biblatex 做到这一点?
答案1
类似 mcite 的命令在 biblatex 模块中定义blx-mcite.def
。在那里你会发现一个引用命令修饰符\mcitelike
,用法如下。
\newrobustcmd*{<new mcite command>}{\mcitelike<existing citation command>}
mcite-like\autocite
有点奇怪,因为\autocite
它旨在与样式无关,但 mcite-like 命令仅与数字引用样式相关。也就是说,你可以使用\autocite
以下方式定义 mcite 变体:
\newrobustcmd*{\mautocite}{\mcitelike\autocite}
这是一个例子。
\documentclass{article}
\usepackage[backend=biber,style=numeric,mcite,subentry,autocite=superscript]{biblatex}
% just for demo
\ExecuteBibliographyOptions{firstinits,sorting=none}
% define mcite-like variant of \autocite
\newrobustcmd*{\mautocite}{\mcitelike\autocite}
\addbibresource{biblatex-examples.bib}
\begin{document}
\mtextcite{companion,bertram,knuth,*knuth:ct:a,*knuth:ct:b} showed that...
Filler text \autocite{knuth:ct:a}.
Filler text \mautocite{model,*weinberg,*glashow}.
Filler text \autocite{weinberg}.
\printbibliography
\end{document}
请注意,这\mtextcite{companion,bertram,knuth,*knuth:ct:a,*knuth:ct:b}
相当于:
\defbibentryset{knuth}{knuth:ct:a,knuth:ct:b}
\textcite{companion,bertram,knuth}
类似地\mautocite{model,*weinberg,*glashow}
变成:
\defbibentryset{model}{weinberg,glashow}
\autocite{model}
更多详细信息请参阅 biblatex 手册中的“mcite 类引用命令”和“动态条目集”部分。版本 1.1 和 2.7 之间引入/修复了各种标签编号和条目集错误,因此您应该升级到最新的 biblatex 和 biber 版本以使所有相关功能正常运行。
答案2
对于这种类型,biblatex 提供了设置条目:
@SET{a-set,
entryset={key2,key3,key4},
}
在您的示例中,这将如下所示:
\usepackage[backend=biber,mcite,subentry,autocite=plain}
...
\begin{document}
Some text here\autocite{key1}. More text here\autocite{a-set}.
Cite a subentry\autocite{key3}.
\end{document}