- 如果我想引用
articles
同一期刊中的几篇文章,但又不想journal={...}
为每个条目输入相同的内容。有没有办法像 for@book
和@mvbook
via那样实现这一点crossref
? - 对于 ,有两个给定字段
volume
和。但在德语中,除了关联和之外,还有字符串(=bibstring )和(尚无 bibstring)。除了将它们放在像 这样的字段中之外,还有其他方法可以为特殊文章(不是全部!!)编写它们吗?number
@article
Band
Nummer
Jahrgang
jourvol
Heft
volume = {Jahrgang 69}
更新,问题 1 已由 Ulrike Fischer 解决,如下面的 MWE 所示。(我仍然想知道为什么不存在 entrytype @journal
。)
@问题 2:问题是:在德语中,有些期刊写Heft
,有些写Nummer
。在英语中,可能只有number
两种情况。但我需要区分它们,并在工作中同时使用这两种情况!
当然我可以将H.
或Heft
放在字段中number
,如 MWE 所示,我的文章。但我一直认为硬编码不是最好的解决方案。
\begin{filecontents}{mybib.bib}
@article{myjournal,
journaltitle = {Archiv für Musikwissenschaft},
publisher = {Franz Steiner Verlag},
year = {2009},
}
@article{myarticle,
crossref = {myjournal},
title = {Dummy title},
author = {Dummy author},
number = {H. 1},
volume = {66. Jahrg.},
pages = {50-100},
url = {http://www.jstor.org/stable/dummyurl},
urldate = {2014-05-01}
}
@article{myarticleB,
journaltitle = {Archiv für Wissenschaft},
publisher = {Anderer Verlag},
year = {1919},
title = {Dummy titleTwo},
author = {Dummy authorTwo},
number = {Nr. 6},
volume = {36},
pages = {150-200},
url = {http://www.jstor.org/stable/dummyurl2},
urldate = {2014-05-01}
}
\end{filecontents}
\documentclass[a4 paper,12pt, german]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[babel,german=quotes]{csquotes}
\usepackage[style=verbose-ibid,dashed=false]{biblatex}
\addbibresource{mybib.bib}
\begin{document}
\nocite{myarticle}\nocite{myarticleB}
\printbibliography
\end{document}
答案1
广告 1)
您可以crossref
按照预期使用该机制。
@article
-to-@article
继承没有特殊规则,因此适用默认规则。这意味着几乎所有字段都会一对一地复制到crossref
ing 条目(如果它们尚不存在)。(请参阅附录 B默认继承设置,第 242-244 页和第 2.4.1 节交叉引用,第 35-37 页biblatex
文档了解更多详细信息)。
所以在这里
@periodical{myjournal,
title = {Archiv für Musikwissenschaft},
publisher = {Franz Steiner Verlag},
options = {dataonly},
}
@article{myarticleA1,
crossref = {myjournal},
title = {Dummy title},
author = {Dummy author},
number = {1},
volume = {66},
year = {2009},
pages = {50-100},
url = {http://www.jstor.org/stable/dummyurl},
urldate = {2014-05-01},
options = {jourvol=true},
}
@article{myarticleA2,
crossref = {myarticleA1},
title = {Dummy title A1},
number = {1},
pages = {120-130},
url = {http://www.jstor.org/stable/dummyurl2},
options = {jourvol=true},
}
myarticleA2
将继承author
,volume
,journal
,year
的(继承自);但是该字段未被继承,因此我们必须重新添加它urldate
。myarticleA1
myarticleA1
journaltitle
myjournal
options
“父级”@periodical
myjournal
可由“Archiv für Musikwissenschaft”期刊中的crossref
任何人编辑;在这种情况下,这不会为我们节省大量的输入,因为实际上唯一复制的信息是字段(请注意字段在 中,它将被复制到的中)。制作 可能是一个好主意,这样它就不会意外地作为单独的项目出现在参考书目中。@article
myjournal
journaltitle
title
@periodical
journaltitle
@article
@periodical
dataonly
因此,您可以使用crossref
几个@article
s 来节省输入,或者创建一个“父级”@periodical
来crossref
,或者您可以同时使用两者。
现在您可能明白为什么没有@journal
条目类型了。人们几乎从不希望(空的)期刊出现在参考书目中,而且从预期条目类型继承的信息量@journal
也不是很大。
广告2)
如果您希望某些@article
s 显示“Band”和“Nummer”(分别是音量和数量),而某些 s 显示“Jahrgang”和“Heft”,我们首先必须告诉biblatex
哪些条目得到哪种处理。
我们将通过一个简单的选项来实现这一点,您可以将其添加到options
列表中:该选项称为jourvol
\newtoggle{bib@jourvol} % fallback is false
\DeclareEntryOption{jourvol}[true]{\settoggle{bib@jourvol}{#1}}
“Jahrgang” 字符串已经存在 ( jourvol
),但我们需要为“Heft” 声明一个,我们将其命名为journum
。
\NewBibliographyString{journum}
\DefineBibliographyStrings{german}{journum = {Heft}}
如果希望能够定义 bibstring 的短形式和长形式,我们不能使用\DefineBibliographyStrings
,而必须使用\DeclareBibliographyStrings
,后一个命令只能在.lbx
文件中使用,因此我们必须为此定义一个新的命令(上面的两行对于文件来说变得多余.lbx
)。
您的.lbx
文件将看起来像这样,基本上所有内容都是从继承而来的ngerman
,但我们添加了新的 bibstringjournum
并填充它。
\ProvidesFile{ngerman-jour.lbx}[2014/05/01 ngerman with journum]
\InheritBibliographyExtras{ngerman}
\NewBibliographyString{journum}
\DeclareBibliographyStrings{%
inherit = {ngerman},
journum = {{Heft}{H\adddot}},
}
该lbx
文件必须放在 LaTeX 可以找到的地方 - 在下面的 MWE 中,它将使用 创建filecontents
,如果您打算更频繁地使用它,您确实应该将它保存在适当的目录中。然后可以通过 加载它\DeclareLanguageMapping{ngerman}{ngerman-jour}
。
现在我们可以使用选项来决定是否使用jourvol
/journum
或volume
/number
\DeclareFieldFormat[article,periodical]{volume}{\iftoggle{bib@jourvol}{\bibstring{jourvol}}{\bibstring{volume}}~#1}
\DeclareFieldFormat[article,periodical]{number}{\iftoggle{bib@jourvol}{\bibstring{journum}}{\bibstring{number}}~#1}
最后,我们去掉volume
and之间的点,number
并添加一个逗号和一个空格
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit{\addcomma\space}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
您现在可以通过以下选项选择您想要“Jahrgang”/“Heft”还是“Band”/“Nummer” jourvol
:添加options = {jourvol=true}
(或更简单但等效的options = {jourvol}
)以获得“Jahrgang”/“Heft”并添加ptions = {jourvol=false}
(或者只是在选项中不提及jourvol
,默认为jourvol=false
)以获得“Band”/“Nummer”。
平均能量损失
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@periodical{myjournal,
title = {Archiv für Musikwissenschaft},
publisher = {Franz Steiner Verlag},
options = {dataonly},
}
@article{myarticleA1,
crossref = {myjournal},
title = {Dummy title},
author = {Dummy author},
number = {1},
volume = {66},
year = {2009},
pages = {50-100},
url = {http://www.jstor.org/stable/dummyurl},
urldate = {2014-05-01},
options = {jourvol=true},
}
@article{myarticleA2,
crossref = {myarticleA1},
title = {Dummy title A1},
number = {1},
pages = {120-130},
url = {http://www.jstor.org/stable/dummyurl2},
options = {jourvol=true},
}
@article{myarticleB,
journaltitle = {Archiv für Wissenschaft},
publisher = {Anderer Verlag},
year = {1919},
title = {Dummy titleTwo},
author = {Dummy authorTwo},
number = {6},
volume = {36},
pages = {150-200},
url = {http://www.jstor.org/stable/dummyurl2},
urldate = {2014-05-01}
}
\end{filecontents*}
\documentclass[a4 paper,12pt, ngerman]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[babel,german=quotes]{csquotes}
\usepackage[style=verbose-ibid,dashed=false]{biblatex}
\newtoggle{bib@jourvol} % fallback is false
\DeclareEntryOption{jourvol}[true]{\settoggle{bib@jourvol}{#1}}
\begin{filecontents*}{ngerman-jour.lbx}
\ProvidesFile{ngerman-jour.lbx}[2014/05/01 ngerman with journum]
\InheritBibliographyExtras{ngerman}
\NewBibliographyString{journum}
\DeclareBibliographyStrings{%
inherit = {ngerman},
journum = {{Heft}{H\adddot}},
}
\end{filecontents*}
\DeclareLanguageMapping{ngerman}{ngerman-jour}
\DeclareFieldFormat[article,periodical]{volume}{\iftoggle{bib@jourvol}{\bibstring{jourvol}}{\bibstring{volume}}~#1}
\DeclareFieldFormat[article,periodical]{number}{\iftoggle{bib@jourvol}{\bibstring{journum}}{\bibstring{number}}~#1}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit{\addcomma\space}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
答案2
为什么你不尝试一下呢? crossref 对我来说很好用:
@article{journal,
journal = {a journal},
number ={3}}
@article{authora,
author={authora},
crossref={journal},
pages={5-10}}
当我引用 authora 时,它会从期刊中提取信息。