1
  1. If I want to cite a few articles from the same journal, and I don't want to type the same journal={...} for each entry. Is there a way to achieve this like for @book and @mvbook via crossref?
  2. There are two given fields volume and number for @article. But in german there are besides the correlating Band and Nummer also the strings Jahrgang (=bibstring jourvol) and Heft (no bibstring yet). Are there other ways to write them for special articles (not all!!) - besides putting them in the fields like volume = {Jahrgang 69}?

Update, Questions 1 was solved by Ulrike Fischer, as you can see in the following MWE. (I still wonder why there doesn't exist an entrytype @journal.)

@Question 2: The problem is: In german some journals write Heft, some write Nummer. In english there maybe only exists number for both. But I need to distinguish between them and use both cases in my work!

Of course I can put H. or Heft in the field number, as shown in the MWE, myarticle. But I always think hardcoding isn't the best solution.

\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}
9
  • 1
    jourvol is not a field, the \do{jourvol} you find in biblatex2.sty is to create a bibstring jourvol. According to the biblatex documentation, p. 204 §4.9.2.10 Publication Details, jourvol contains "The term ‘volume’, referring to a journal."
    – moewe
    Apr 30, 2014 at 16:51
  • 1
    Your entry is confusing: it is an @book and yet you want a journal field? I'd expect @article with journal, volume, (perhaps) number, etc.
    – jon
    Apr 30, 2014 at 16:51
  • Jon is quite right. Either you have a @book in a series (and a number within that series), or a specific volume of a multi-volume book. Or you have an @article with a journal and a simple volume (and number). Plus, the macro you redefine is only called in the @article driver, not the @book one, so your MWE will print the jourvol anyway.
    – moewe
    Apr 30, 2014 at 16:53
  • Sorry for the confusing MWE, I tried to clarify my question/problem.
    – musicman
    Apr 30, 2014 at 17:34
  • 1
    Can you give an example of the output you want to see? It sounds like you want the strings written out, and I must admit I don't fully understand how Band, Nummer, Jahrgang, and Heft are all related; I thought Band/Jahrgang and Nummer/Heft were different pairs of words for about the same thing...
    – jon
    Apr 30, 2014 at 18:47

2 Answers 2

4

Ad 1)

You can use the crossref mechanism as one would expect. @article-to-@article inheritance has no special rules, so the default rules apply. That means almost all fields are copied one-to-one to the crossrefing entry, if they do not exist there already. (Please refer to appendix B Default Inheritance Setup, pp. 242-244 and §2.4.1 Cross-referencing, pp. 35-37 of the biblatex documentation fore more details).

So here

@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 is going to inherit the author, volume, journal, year, urldate of myarticleA1 (myarticleA1 inherited the journaltitle from myjournal); the options field is not inherited though, so we had to re-add it.

The "parent" @periodical myjournal can be crossrefed by every @article in the "Archiv für Musikwissenschaft" journal; in this case this does not save us a lot of typing, as effectively the only piece of information copied from myjournal is the journaltitle field (notice how the field is title in a @periodical, it will be copied to the journaltitle of an @article). It might be a good idea to make the @periodical dataonly, so it does not accidentally appear in the bibliography as a separate item.

So you can either crossref several @articles to save typing, or create a "parent" @periodical to crossref to, or you can use both.

You might see now why there is no @journal entry type. One hardly ever wants a (bare) journal to appear in the bibliography and the amount of information inherited from a prospective @journal entry type is not that big.

Ad 2)

If you want some @articles to display "Band" and "Nummer" (volume and number, respecticely) and some to display "Jahrgang" and "Heft", we will first have to tell biblatex which entries get which treatment.

We will do this via a simple option, you can add to the options list: The option is called jourvol

\newtoggle{bib@jourvol} % fallback is false
\DeclareEntryOption{jourvol}[true]{\settoggle{bib@jourvol}{#1}}

The "Jahrgang" bibstring already exists (jourvol), but we will need to declare one for "Heft", let's call it journum.

\NewBibliographyString{journum}
\DefineBibliographyStrings{german}{journum = {Heft}}

If you want to be able to define short and long forms of the bibstring, we cannot use \DefineBibliographyStrings, but have to use \DeclareBibliographyStrings, the latter command can only be used in an .lbx file, so we have to define a new one for that (the two lines above become superfluous with the .lbx file).

Your .lbx file will look like this, basically everything is inherited from ngerman, but we add the new bibstring journum and populate it.

\ProvidesFile{ngerman-jour.lbx}[2014/05/01 ngerman with journum]
\InheritBibliographyExtras{ngerman}
\NewBibliographyString{journum}
\DeclareBibliographyStrings{%
  inherit   = {ngerman},
  journum   = {{Heft}{H\adddot}},
}

The lbx file must be put somewhere LaTeX can find it - in the MWE below it will be created with filecontents, if you plan to use it more often, you really should save it in an appropriate directory. It can then be loaded via \DeclareLanguageMapping{ngerman}{ngerman-jour}.

Now we can use the option to decide whether to use jourvol/journum or 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}

Finally, we get rid of the dot between volume and number and add a comma and a space

\renewbibmacro*{volume+number+eid}{%
  \printfield{volume}%
  \setunit{\addcomma\space}%
  \printfield{number}%
  \setunit{\addcomma\space}%
  \printfield{eid}}

You can now choose whether you want "Jahrgang"/"Heft" or "Band"/"Nummer" via the jourvol option: Add options = {jourvol=true} (or the simpler but equivalent options = {jourvol}) to get "Jahrgang"/"Heft" and add ptions = {jourvol=false} (or just don't mention jourvol in options, the default is jourvol=false) to get "Band"/"Nummer".

MWE

\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}

enter image description here

0
2

Why don't you simply try it out? crossref works fine for me:

@article{journal,
    journal = {a journal},
    number ={3}}

@article{authora,
 author={authora},
 crossref={journal},
 pages={5-10}}

When I cite authora it pulls the informations from journal.

2
  • I don't know and didn't test if you need the same entrytype. But as you wanted to add journal informations it seemed sensible to use a type which knows the journal field. Apr 30, 2014 at 17:48
  • 1
    @musicman One could of course use the @periodical entry type as the "parent", but there seems to be no problem in crossrefing several @articles.
    – moewe
    Apr 30, 2014 at 20:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .