1

using biblatex, I'd like to have these two things:

  1. abbreviated style in the postnote of a citation: \cite[42]{xyz} should give "[1, p. 42]" instead of "[1, page 42]".
  2. no abbreviations in the bibliography: "2nd edition" instead of "2nd ed".

By default, my point (1) is correct, but (2) is not. When using biblatex with the option "abbreviate=false", my point (2) is correct, but (1) is not.

Currently, I do this: I use "abbreviate=false" and define my own \pno and \ppno commands which print the short versions of the "page"- and "pages"-string:

\newcommand{\pnos}{\bibsstring{page}}
\newcommand{\ppnos}{\bibsstring{pages}}

and then I manually add those to the postnote in every \cite. But I think, there could be a better way, something like re-defining \pno and \ppno or having "abbreviate=true" for the whole document and then setting it to "false" for the bibliography only.

Unfortunately, I couldn't find a way to achieve this.

I'd be very thankful for your suggestions!


Note 1: The following does not work:

\renewcommand{\pno}{\bibsstring{page}}

It results in "LaTeX Error: \pno undefined."

Note 2: My document is in German, so I actually have "S." instead of "p." but this should not really make a difference.

  • could you provide a full MWE, please? – naphaneal Jul 21 '18 at 15:43
1

You can use

\makeatletter
\AtBeginBibliography{\def\abx@str{abx@lstr}}
\makeatother

to obtain long strings in the bibliography and short strings (the default) in citations.

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

\usepackage[style=authoryear, backend=biber]{biblatex}

\addbibresource{biblatex-examples.bib}

\makeatletter
\AtBeginBibliography{\def\abx@str{abx@lstr}}
\makeatother

\begin{document}
\cite[380]{sigfridsson}
\printbibliography
\end{document}

"Sigfridsson and Ryde 1998, p. 380" in the citation, but "... Journal of Computational Chemistry 19.4, pages 377-395 ..." in the bibliography

  • Thank you that's perfect! I think I get it: at the beginning of the bibliography you set some internal parameter which handles strings to use the long version. Very smart, would have been very difficult for me to figure it out on my own. Thanks :) – Markus Jul 22 '18 at 9:28
  • @Markus Indeed, the option abbreviate does a similar thing, it executes \def\abx@str{abx@lstr} to obtain long strings if set to false and \def\abx@str{abx@sstr} to obtain short strings if set to true. Due to the way the internals of string handling work it is usually possible to just switch between short and long forms by switching between the two settings. BTW: If this answer helped you, please consider accepting it: tex.stackexchange.com/help/someone-answers – moewe Jul 22 '18 at 10:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.