1

I am using biblatex to manage my citations and bibliography.

I'd like to use \volcite to cite a specific volume of a multi-volume work, but with a standard look for the citation itself. E.g. for the numeric style normal citations look like

[1]

but with e.g. \volcite{3}{Smith} I get by default (with German localization).

[1, Bd. 3]

How do I get the \volcite citation to look like the normal one?

Side note: The bibliography entry should not be modified, only the citation.

EDIT: Here is a MWE:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[
    backend = biber,
    style = numeric-comp
]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@MvBook{Kohl,
  author    = {Kohlrausch, F.},
  title     = {Praktische Physik},
  volumes   = {3}
}
@Book{Kohl1,
  author    = {Kohlrausch, F.},
  title     = {Praktische Physik},
  volumes   = {3},
  volume    = {1}
}
@Book{Kohl2,
  author    = {Kohlrausch, F.},
  title     = {Praktische Physik},
  volumes   = {3},
  volume    = {2}
}
@Book{Kohl3,
  author    = {Kohlrausch, F.},
  title     = {Praktische Physik},
  volumes   = {3},
  volume    = {3}
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

\volcite{1}{Kohl}
\volcite{2}{Kohl}
\volcite{3}{Kohl}

\cite{Kohl1}
\cite{Kohl2}
\cite{Kohl3}

\printbibliography

\end{document}

Output

My question is: How can I get the citation style in the second line without having to create explicit entries for each volume in the bib file? I thought this might be possible with \volcite.

5
  • 2
    I don't quite get your question. Can you clarify the output you'd like for: \volcite{3}{Smith}, \volcite{3}[1]{Smith}, \cite{Smith}, and \cite[1]{Smith}. If you don't want the volume printed in the citation, why use \volcite at all? Feb 27, 2017 at 13:10
  • I'm with David on this, I'm not quite sure what you want to achieve. Why do you use \volcite when you don't want the output? (Note that the bibliography entry is no different whether you use \cite or \volcite?) Maybe you want to show us an MWE of what you have so far, what biblatex style you use, etc. So we can all start from on the same page. You may also want to include a mock-up of the expected output in your MWE.
    – moewe
    Feb 27, 2017 at 15:54
  • @DavidPurton, moewe: I added a MWE. Please let me know if the question is still unclear. Feb 28, 2017 at 13:28
  • I must say to me it is still unclear what you want. Either you want to cite the entire three-volume work because it is unimportant which volumne you refer to, then use \cite{Kohl}. Or you want to refer to a specific volume in the bibliography, then use e.g. \cite{Kohl2}. Or you want to refer to the entire three-volume work, but occasionally make clear in the text which volume you refer to, then use \cite[][vol.~2]{Kohl} on those occasions and \cite{Kohl} otherwise. Is this still not what you want? Feb 28, 2017 at 13:51
  • @ManuelWeinkauf I want to cite specific volumes like with \cite{Kohl2}, but want to keep my bib file concise. I feel the entries Kohl1–3 in the MWE are actually redundant information and that there might be a way to deduce specific volume-citations from the "parent" Kohl since all the information is already contained in this single entry. So the question might be more how to avoid the cumbersome creation of these volume-specific entries. Feb 28, 2017 at 13:58

2 Answers 2

2

Currently only entries of a .bib file can really appear in the bibliography. That means that if you don't have a .bib entry for something, it can't appear as a separate entry in the bibliography. You can minimise duplication of data with crossref, your example then boils down to

@mvbook{Kohl,
  author    = {Kohlrausch, F.},
  title     = {Praktische Physik},
  volumes   = {3}
}
@book{Kohl1,
  crossref = {Kohl},
  volume   = {1},
}
@book{Kohl12,
  crossref = {Kohl},
  volume   = {2},
}
@book{Kohl3,
  crossref = {Kohl},
  volume   = {3},
}

This has the additional up-side of being able to specify differing info for the volumes. (Suppose for example, that one of the volumes is from a different year.)

3
  • You say "Currently only entries of a .bib file can appear in the bibliography." Are there any plans to add this functionality to biblatex ? Apart from that, thanks for the hint using crossref, I didn't know about this. Mar 1, 2017 at 7:50
  • @CorneliusSicker I don't think so. This principle seems to be fundamental to how BibTeX and biblatex work. Aside from that it would probably require a major overhaul of the code (currently Biber does the sorting for biblatex by reading the .bib file, if 'entries' can also come from the .tex itself, there would have to be a way to tell Biber about that). Furthermore, there would have to be a usable interface for the 'in-document' entries.
    – moewe
    Mar 1, 2017 at 8:39
  • ... That said, Biber already does a bit to break up the strict .tex/.bib separation with its sourcemapping (only usable in the preamble, so no good for you, I'm afraid), where one can manipulate the (apparent content of the) .bib file from within the preamble of a .tex document. And then there is the notes2bib package that just writes a .bib on the fly from within a .tex document - seemingly breaking down the barriers between .bib and .tex.
    – moewe
    Mar 1, 2017 at 8:39
0

Does any of this maybe come close to what you want:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[
    backend = biber,
    style = numeric-comp
]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@MvBook{Kohl,
  author       = {Kohlrausch, F.},
  title        = {Praktische Physik},
  volumes      = {3},
  related      = {Kohl1,Kohl2,Kohl3},
  relatedtype  = {multivolume}
}
@Book{Kohl1,
  author       = {Kohlrausch, F.},
  title        = {Praktische Physik},
  volumes      = {3},
  volume       = {1}
}
@Book{Kohl2,
  author       = {Kohlrausch, F.},
  title        = {Praktische Physik},
  volumes      = {3},
  volume       = {2}
}
@Book{Kohl3,
  author       = {Kohlrausch, F.},
  title        = {Praktische Physik},
  volumes      = {3},
  volume       = {3}
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

Reference the entire work: \cite{Kohl}
Reference one volume only: \cite{Kohl2}
Reference volume in the entire work: \volcite{2}{Kohl}

\printbibliography

\end{document}

From all I read in the BibLaTeX documentation (i.e. sections 2.3.5 and 3.4) I do not think it is anticipated in any way not to have all subvolumes in the bib file. So what you seem to want is probably not possible (unless of course, you save the multivolume-book simply as book with information about the total number of volumes).

1
  • The second option you give is the output I'd like to achieve, but only using Kohl, not Kohl2. For my example with only three volumes it is no problem to generate the bib entries by hand, but imagine an encyclopedia with 30 volumes. Does one really have to create a separate entry for each cited volume to be able to get the same citation and bibliography entry as in your second example [2]? Feb 28, 2017 at 14:25

You must log in to answer this question.

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