![使用 BibTeX 引用一系列文章](https://linux22.com/image/264397/%E4%BD%BF%E7%94%A8%20BibTeX%20%E5%BC%95%E7%94%A8%E4%B8%80%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0.png)
我使用 BibTeX 和 BibDesk 来管理我的参考书目。我想要做的是引用一系列文章,但参考书目中只有一个引用。这似乎已成为引用这一系列文章的其他作者的相当标准的做法。这一系列文章都出现在同一期刊上,但分布在不同的卷中。我目前看到的引用方法是
G. Lusztig,角色束 IV、数学高级56(1985),第3期,193-237;57(1985),第 3 期,226-265;57(1985),第 3 期,266-315;59(1986),第1期,1-63;61(1986),第2期,103-155。
这可以用 BibTeX 实现吗? 稍微不太可取但可以接受的方法是使用相同的参考关键字在参考书目中单独列出所有论文。 例如
[Lus85] G. Lusztig,角色束 I、数学高级56(1985),第3期,193-237。
[Lus85] G. Lusztig,角色束 II、数学高级57(1985),第3期,226-265。
[Lus85] G. Lusztig,角色束 III、数学高级57(1985),第3期,266-315。
[Lus85] G. Lusztig,角色束 IV、数学高级59(1986),第1期,1-63。
[Lus85] G. Lusztig,角色束 V、数学高级61(1986),第2期,103-155。
这两个选项都可以实现吗?
答案1
这不是一个完整的解决方案,但它部分地满足了您的要求。
看看风格apsrev4-1。它允许引用多个参考文献,只需在不想索引的参考文献上添加星号即可,例如。 \cite{ref1,*ref2,*ref3} 将生成一个条目,其中各个参考文献之间用分号分隔。
答案2
我研究了 Alex Monras 建议的 apsrev4-1 样式,但最终它似乎很笨重,并不是我想要的。对我来说,BibTeX 似乎不太适合处理像 biblatex 这样的集合。有了这个启示,我决定改用 biblatex,以下是在 biblatex 中实现上述内容。正如建议的那样步调一致的回答关于如何修改 biblatex 样式,我通过在字母样式之上更改“biblatex.cfg”来完成此操作。完整的解决方案如下
\ExecuteBibliographyOptions{firstinits=true,isbn=false}
% Use Commas instead of Fullstops
\renewcommand*{\newunitpunct}{\addcomma\space}
% Turn off use of 'In: '
\renewbibmacro{in:}{}
% Suppress pagetotals and pages.
\AtEveryBibitem{%
\clearfield{pagetotal}%
}
% Dashed Author Names In Repeats
\InitializeBibliographyStyle{\global\undef\bbx@lasthash}
\renewcommand*\bibnamedash{\hbox to3em{\hrulefill}}
\providecommand*{\mkibid}[1]{#1}
\DeclareBibliographyDriver{set}{%
\entryset
{}
{\ifnumequal{\thefield{entrysetcount}}{1}
{\savefield{fullhash}{\bbx@lasthash}%
\savefield{journaltitle}{\bbx@lastjournal}}
{}}%
\newunit\newblock
\usebibmacro{setpageref}%
\finentry}
\renewbibmacro*{author}{%
\ifboolexpr{ test \ifuseauthor and not test {\ifnameundef{author}} }
{\iffieldequals{fullhash}{\bbx@lasthash}
{\iffieldundef{entrysetcount}
{\bibnamedash\addcomma\space}
{\ifnumequal{\thefield{entrysetcount}}{1}
{\bibnamedash\addcomma\space}
{\entrysetpunct}}}
{\printnames{author}}%
\savefield{fullhash}{\bbx@lasthash}%
\iffieldundef{authortype}
{}
{\setunit{\addcomma\space}%
\usebibmacro{authorstrg}%
}}
{\global\undef\bbx@lasthash}%
}
\renewbibmacro*{journal}{%
\iffieldundef{journaltitle}
{}
{\iffieldequals{journaltitle}{\bbx@lastjournal}
{\bibstring[\mkibid]{ibidem}}
{\global\undef\bbx@lastjournal
\printtext[journaltitle]{%
\printfield[titlecase]{journaltitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{journalsubtitle}}}}
}
% Change the formats of certain fields
\DeclareFieldFormat{pages}{#1}
\DeclareFieldFormat[article]{volume}{\textbf{#1}}
\DeclareFieldFormat[article,periodical]{number}{no.\ #1}
\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished] {title}{\mkbibemph{#1}\isdot}
\DeclareFieldFormat{journaltitle}{#1}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\usebibmacro{issue+date}%
\setunit{\addspace}%
\usebibmacro{volume+number+eid}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
\renewbibmacro*{volume+number+eid}{%
\setunit*{\addcomma\space}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\renewbibmacro*{issue+date}{%
\printfield{volume}%
\setunit{\space}%
\printtext[parens]{%
\iffieldundef{issue}
{\usebibmacro{date}}
{\printfield{issue}%
\setunit*{\addspace}%
\usebibmacro{date}}}%
\newunit}
解决方案的主要更改包含在“重复虚线作者姓名”注释下。其他更改只是确保项目的格式符合我的喜好。该解决方案基于奥黛丽的回答。特别是当作者与集合中的前一项相同时,则省略作者姓名。如果期刊相同,则使用“ibid”约定。