6

I am using package biblatex for references in Devanagari script. My TeX engine is XeLaTeX.

This is my minimal example.

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Script=Devanagari,Mapping=devanagarinumerals]{Sanskrit 2003}
\usepackage[style=apa,backend=biber,bibencoding=utf8]{biblatex}
\addbibresource{references.bib}

\begin{document}
हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. \underline{\cite{अर्जुनवाडकर}} हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे. हा एक परिच्छेद आहे.
\printbibliography
\end{document}

references.bib has this entry.

@book{अर्जुनवाडकर,
  title={मराठी व्याकरण : वाद आणि प्रवाद},
  author={अर्जुनवाडकर, कृष्ण},
  year={१९८७},
  publisher={पुणे : सुलेखा प्रकाशन}
}

My output looks like this -

1

The problem here is in my preamble I've specified the style as apa. This style uses initials of the author names. In Latin script if I write 'Krishna', apa style will take 'K.' as the author name. As I am writing in Devanagari, my input is 'कृष्ण'. Devanagari is a syllabic script and hence it's conventions differ from the Latin ones. A character represents the vowel sound in it. We tend to write 'कृ' (क + ृ) as the initial and not 'क' (which is there in my screenshot). biber is eating up the diacritics. How to redefine the commands of biber for Devanagari initials?

  • 1
    Does this happen with any other style like authoryear? – PLK Sep 5 '19 at 11:09
  • authoryear style takes the full name (unlike APA as it takes the initial). So no, this issue won't come anywhere else APA (and styles which take initials. I don't know all of them.) – Niranjan Sep 5 '19 at 11:11
  • What if you set giveninits=true option and use authoryear? – PLK Sep 5 '19 at 11:14
  • Yes! Then it is again eating up the diacritics. – Niranjan Sep 5 '19 at 11:21
  • 2
    Alright then I will check - it likely is nothing to do with the APA style. – PLK Sep 5 '19 at 14:58
7

I fear that this is pushing even the ancient and hacked btparse library to its limits. It can deal with most Unicode for initials generation but not combining diacritics. However, biber has its own extended name format for just this situation, simply change your .bib to:

@BOOK{अर्जुनवाडकर,
  AUTHOR    = {family=अर्जुनवाडकर, given=कृष्ण},
  TITLE     = {मराठी व्याकरण : वाद आणि प्रवाद},
  YEAR      = {१९८७},
  PUBLISHER = {पुणे : सुलेखा प्रकाशन}
}

biber itself does understand extended grapheme clusters and so will correctly generate initials in such cases. It will auto-detect the extended name format and not use btparse to parse the name. This gives:

enter image description here

You can also explicitly give the initials you want in this extended format but it's not necessary in your case.

UPDATE: Biber 2.14+, supports this in the usual name format too so your example will work without using the extended name format. Biber, from version 2.14, no longer uses an external library to generate initials and so is able to deal with all Unicode initials situations correctly by default.

I also wanted to mention two other things:

  1. biber can sort sanskrit correctly as it has support for transliteration specifically for sanskrit, see \DeclareSortTranslit in the biblatex manual
  2. Your YEAR field generates a biber warning because it's not detected as an integer. I am looking into this in general (https://github.com/plk/biber/issues/284)

UPDATE: biber 2.14+ allows arbitrary Unicode numerics in the YEAR and MONTH fields and they will even sort correctly with no warnings. Unicode numerics for *DATE and all integer fields are supported too and so compatibility for scripts is complete.

  • 1
    This is exciting. I didn't know that Biber would generate initials differently when the extended name format was used. – moewe Sep 5 '19 at 15:55
  • 3
    Oh yes, biber uses real EGCs to do this. btparse does its hacked best (which is fine for most cases) but it will never be able to do this for every scenario - it would need a complete rewrite. – PLK Sep 5 '19 at 16:01
  • Would it be possible to have the normal name format benefit from this as well? I'm thinking only get the full name parts from btparse and generate the initials as in the extended name format. – moewe Sep 6 '19 at 4:52
  • Thank you so much! This worked for me. – Niranjan Sep 6 '19 at 9:51
  • @moewe - yes I have managed to do this and form 2.14, initials generation will be done by biber directly and so examples like this will not need the extended name format to work correctly. – PLK Sep 7 '19 at 18:16

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.