I'm trying to learn biblatex and have small problem. according of czech style for academic writings, some fields in bibliographic record, like volume, edition or issue, should be in language of source document, others, like pages, should be in language current document is written in. so:
KRSKOVÁ, L.; HILSKÁ, I.; KOPECKÁ, P. aj. Molekulární diagnostika maligních lymfomů řady B : detekce klonality a stručný přehled problematiky s vlastními výsledky. Časopis lékařů českých. 2004, roč. 143, č. 3, s. 191-194. ISSN 0008- 7335.
vs.
BROWMAN, Howard I.; STERGIOU Konstantinos I. Factors and indices are one thing, deciding who is scholarly, why they are scholarly, and the relative value of their scholarship is something else entirely. Ethics in science and environmental politics. June 2008, vol 8, no. 1, s. 1-3. ISSN 1863-5415.
I have no problem to get localized strings with \bibsstring
, but how I can take string from main language? I tried something like
\DeclareFieldFormat*{pages}{#1}
\newbibmacro{pagecount}{%
\iffieldundef{pages}{}
{\selectlanguage{czech}\bibsstring{pages}\addnbspace\printfield{pages}}}
..
\DeclareBibliographyDriver{article}{%
..
\usebibmacro{pagecount}
and it works, but I think there must be some more elegant way than hardcode language into style.
Does exist some command to switch to main language, or can I use some variable? I have found \blx@languagename
, but it holds only language of current record.
Edit
My solution bellow has little problem. It add spaces to output.
SMITH, Alan; NEWMAN, Paul; PINKY, John aj. Some title. 3rd ed.
New York : MIT Press, 1991. 332 s.
there should be of course just one space before aj. and s.
biblatex redefines babel macro \bbl@set@language, so probably some problem lies there.
If we have following sample
\documentclass[a4paper,10pt]{article}
\usepackage[english,czech]{babel}
%\usepackage[backend=biber,style=apa,sorting=nyt,babel=other]{biblatex}
\makeatletter
\newcommand\mainlanguage{\expandafter\bbl@set@language\expandafter{\bbl@main@language}}%
\newcommand\ml{[\bbl@main@language{}--\languagename]}
\makeatother
\begin{document}
\ttfamily
(\mainlanguage) \ml
(\selectlanguage{czech}) \ml
(\selectlanguage{english}) \ml
\end{document}
result is:
() [czech--czech]() [czech--czech]() [czech--english]
if we uncomment \usepackage[...]{biblatex}:
( ) [czech--czech]( ) [czech--czech]( ) [czech--english]
On base of another question I made macro for discard command output:
\newlength{\trashlength}
\def\ignoreoutput#1{\globaldefs=1 \settowidth{\trashlength}{#1}}
it discards spaces, but references are now without italics and dashes.
Question So, is there some other way how to discard spaces? Or is it better to find the source of spaces in biblatex.sty? (I tried to do that, but with no success)
style=authoryear
instead ofstyle=apa
, I don't get additional spaces. Check the documentation of biblatex-apa -- you should use the command\DeclareLanguageMapping
. Maybe this will also solve your spacing problem.