I've inherited a large, highly customized project for building a handbook for an academic conference. Among the many, many macros is the following:


where "fullauthornames" is a name format that does just what you'd expect. This code is then called as \citefullauthornames{bibtex-identifier}, where bibtex-identifier maps to an entry from one of the bibtex files loaded earlier in the project, presumably pulling out the "Author" field and parsing the names.

My question is, is it possible to get biblatex to parse a name string directly, so that I could write something like the following?

\citefullauthornames{Newton, John and Curie, Marie and Einsten, Albert and Feynman, Richard}

I've spent some time in the biblatex documentation but am a bit overwhelmed.

(As to why I'd want to do this, there are occasions where I just want a string of names parsed, printed correctly, and added to the index, and don't need any of the other information present in a bibtex file).

  • 2
    Welcome to TeX SE! I doubt very much that this is possible. Of course, you could write code to do it, but I don't think that biblatex provides that code because biblatex doesn't parse the author strings at all. It doesn't read your .bib file. It writes the .bcf file and reads the .bbl file. The .bbl file is produced by parsing the .bcf and .bib files but that parsing is done by an external programme - biber or bibtex. biblatex doesn't even read the .bib file but puts e.g. <bcf:datasource type="file" datatype="bibtex">x.bib</bcf:datasource> in the .bcf for biber. – cfr May 5 '15 at 2:27
  • 1
    Personally, if I wanted to do something like this, I'd consider a .csv and something like datatool or csvsimple (though I'm not sure if that'd be the best approach). There's also the nameauth package. However, I've never used it because it seemed like serious overkill for my own needs, so I can't say anything useful about it beside the fact that it exists. – jon May 5 '15 at 3:22
  • You might want to have a look at List of People analog to Bibliography. From what I've seen so far, this is not directly possible. The names are parsed by the back-end (Biber/BibTeX), so you would have to find a way to let the back-end parse the names from within your .tex file. Your easiest way out is probably just a dummy entry for the authors much in the same vein to the link above. – moewe May 5 '15 at 4:48
  • 2
    You could write the names to some tempory bib-file, call biber to process them as always and then use them. – Ulrike Fischer May 5 '15 at 7:28
  • Thanks for the responses. It sounds like this isn't possible, so I will just write out dummy entries in a bibtex file and load from that. Thanks for the help understanding how this works. – Matt May 6 '15 at 12:30

Essentially, this is not possible because biblatex does not parse the author strings at all. Instead, biber or bibtex does the parsing.

biblatex does not read your .bib file. It writes the .bcf file and reads the .bbl file. An external programme - biber or bibtex - parses the .bcf and .bib files and produces the .bbl file. biblatex doesn't even read the .bib file. What it does with the information provided about bibliographical resources in your document is to put things like the following into the .bcf:

<bcf:datasource type="file" datatype="bibtex">x.bib</bcf:datasource>

biber or bibtex uses this information, along with the other information in the .bcf, to create the .bbl file.

So to use the parsing facilities, you have to use the programme which provides them i.e. biber or bibtex, and that means providing the relevant information in a format that programme can digest. Unfortunately, your .tex file is likely to cause either of these programmes severe indigestion.

So the best option is almost certainly 'dummy' .bib entries, as you suggest. Either you can create these separately or you can have them automatically written out when you compile your main .tex file, as Ulrike Fischer suggests.

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.