biblatex。文章:crossref 和字符串

biblatex。文章:crossref 和字符串
  1. 如果我想引用articles同一期刊中的几篇文章,但又不想journal={...}为每个条目输入相同的内容。有没有办法像 for@book@mvbookvia那样实现这一点crossref
  2. 对于 ,有两个给定字段volume和。但在德语中,除了关联和之外,还有字符串(=bibstring )和(尚无 bibstring)。除了将它们放在像 这样的字段中之外,还有其他方法可以为特殊文章(不是全部!!)编写它们吗?number@articleBandNummerJahrgangjourvolHeftvolume = {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继承没有特殊规则,因此适用默认规则。这意味着几乎所有字段都会一对一地复制到crossrefing 条目(如果它们尚不存在)。(请参阅附录 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将继承authorvolumejournalyear的(继承自);但是该字段未被继承,因此我们必须重新添加它urldatemyarticleA1myarticleA1journaltitlemyjournaloptions

“父级”@periodical myjournal可由“Archiv für Musikwissenschaft”期刊中的crossref任何人编辑;在这种情况下,这不会为我们节省大量的输入,因为实际上唯一复制的信息是字段(请注意字段在 中,它将被复制到的中)。制作 可能是一个好主意,这样它就不会意外地作为单独的项目出现在参考书目中。@articlemyjournaljournaltitletitle@periodicaljournaltitle@article@periodical dataonly

因此,您可以使用crossref几个@articles 来节省输入,或者创建一个“父级”@periodicalcrossref,或者您可以同时使用两者。

现在您可能明白为什么没有@journal条目类型了。人们几乎从不希望(空的)期刊出现在参考书目中,而且从预期条目类型继承的信息量@journal也不是很大。

广告2)

如果您希望某些@articles 显示“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/journumvolume/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}

最后,我们去掉volumeand之间的点,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 时,它会从期刊中提取信息。

相关内容