Directly use CiteProc for citation and bibliographies

Most of the solution that I find for citation and bibliography in Scrivener is to insert something in the document and then down the stream some other application such as pandoc, libreoffice, bibtex … would handle citations and bibliography. But why not support the whole process all in Scrivener, i.e. reading the bibliography database, reading the citation style file, finding an entry, inserting the key (in a specific citation format), and finally resolving and formatting the final bibliographies in compile time . Implementation can be eased using a popular and extensively used library such as CiteProc (though I have no idea if the matching port exists ) which supports CSL.

Further thought: Cross links are preferred although plain text should work for many. At the same time cross links would be limited to output formats that their translations already exist in Scrivener.

Automated citation formatting is in fact quite complicated. It is not just a matter of dropping a code library into an application’s codebase and hitting the Build button in Xcode, even when using a simple word processor—and Scrivener is not a simple word processor.

Scrivener uses multiple internal documents, whereas reference management applications always assume that they will be processing a single document at a time. So even gathering up all the references in a project to feed to the reference manager app would be a complicated endeavour. Essentially, Scrivener would have to compile your project in the background every time you wanted to add or edit a single reference, just so that your reference manager app could be given the data it expects. Then there’s the problem of where to create the bibliography (or bibliographies). In a new document in the project, or at the end of an existing document? If in a new document, where should that document go in the project’s structure? Given that user’s will have different needs for that (one at the end of each chapter, one at the end of the manuscript, one at the end of the manuscript but before the indices, at the end of each chapter AND at the end of the manuscript, etc., etc.), it would be staggeringly complex to do that. And that’s before getting into the problem of supporting multiple, mutually incompatible systems from different software vendors. And what should happen during compile to the embedded field codes that automatic formatting uses to invisibly keep track of things? How should conflicts between the embedded codes of compiled documents be resolved?

Conversely, by using plain text temporary citation codes within Scrivener and then dealing with formatting the bibliography after compile, everything is easy. The Scrivener workflow is (1) write, (2) compile, (3) format. Formatting a bibliography is just another part of formatting your document, after all, so doing it in step three makes better sense anyway. Just paste in the plain citation code and enjoy not having to worry about your bibliography until you are done writing. :slight_smile:

Thanks for the detailed answer jstovell!

Anyway, beyond the details I hope that we would see a more streamlined citation process in Scrivener. Scrivener has features that match very good with academic writing requirements and easy citation management, at least for some plain text forms, is a missing one in the list.