Hi Matt,
Thanks for your willingness to help with the project.
2015ko urriak 30an, Matt Price-ek idatzi zuen:
>
> So, from the "some projects" thread I have the sense there is a group of
> users with some interest in improving citation support. What is the best
> way to kickstart that process? it seems to me that, at a minimum, the
> following is needed:
>
> 1. Finalization of the citation syntax.
>
> IIUC, This involves refining and merging the work in the wip-cite git
> branch.
There was a very voluminous discussion on this last time. Lots of
people proposed various additions. I’d be inclined to go with whatever
syntax is implemented currently, and let any needed extensions sort
themselves out through real-world testing.
>
> 2. Choice of a citation creation tool
>
> IIUC, the two main candidates are pandoc-citeproc and citeproc-js/node.
> Pandoc-citeproc works well but requires users to install the whole pandoc
> infrastructure, and needs to be wrapped in a thin tool for use with org.
> Citeproc-node has fewer dependencies (I guess), but needs to be updated to
> support additional output formats (e.g. latex, odt, and org) and is a
> little more elaborate to run from the command line (runs as a service, can
> only be communicated with over http).
IIUC, citeproc-node just wraps citeproc-js, which has a “normal” API.
So it should be possible to write a CLI wrapper for citeproc-js. (But I
have not studied citeproc-js at all, so I could be wrong).
My plan is to create preliminary citation support based on Richard’s
haskell tool, with the intention of moving to a JS-based tool when
possible. So implementing a work-alike of Richard’s tool in JS would be
a good development.
>
> 3. Handling of citation links in the various export engines
> Functions must be written to handle citations in, at minimum, latex, html,
> and org
>
> 4. Interface with backends
> Org should be able to talk to bibtex and zotero databases, at least (and
> maybe more).
The code I wrote should have enough hooks to enable this. But I haven’t
looked at zotero at all. If zotero support is important to you, you
could investigate the “lookup types” in the citation code I wrote, see
if they are adequate, and try to use them to implement zotero lookup.
From the docstring:
"Types of citation lookup backends.
Alist from type to list of:
- Function called at the beginning of export, with the rest of
the keyword line after #+BIBDB: type, and the info plist.
Should cache whatever it needs in the info plist.
- Function to lookup a citation. Called with the key and the
info plist. Will be memoized by
`org-export-cite--lookup' (TODO). Should return an alist of
keys and values about the citation (author, year, title, etc.)
- A boolean; non-nil = this lookup type is remote. All local
lookups will be tried before any remote one is.
TODO: not yet implemented"
>
> A lot of this work has already been done. Richard has written org-citeproc
> as a wrapper for pandoc-citeproc https://github.com/wyleyr/org-citeproc .
> Aaron has written some functions for org-citeproc in the wip-cite-awe
> branch. Nicolas has developed the syntax in wip-cite. I even have a fork of
> citeproc-node that could be used to develop the missing features we need.
> And of course John has org-ref (
> http://kitchingroup.cheme.cmu.edu/blog/2014/05/13/Using-org-ref-for-citations-and-references/)
The org-ref features provide a good aspirational horizon for us, I think.
I.e. org’s core should aim to support almost all of them eventually. But
the support for citation syntax is not so far along that creating such
support is an immediate prospect.
> while Erik H has zotxt-emacs for Zotero integration (
> https://github.com/egh/zotxt-emacs).
>
> What would be the best next move? It seems to me there are enough moving
> parts that the process will be quite a bit easier if we co-ordinate.
Based on the interests you’ve expressed, I think working on the JS
citation processor and/or zotero integration would be good contributions
you can make. But you can work on other things as well. I think the
best way to coordinate will be to keep the list apprised of your
progress. If you have push access, you can push WIP code as branches in
the org-mode repository. (Otherwise, you can use github or some other
git host, or ask for push access.)
Thanks again,
--
Aaron Ecay