Hi,
Now that 8.0 has shipped let's talk bibliography support. This
follows directly upon the discussion around March[1].
The essence of the thread was that some people agreed that it would be
nice to have support for citation commands build into Org (I'll
summarize in the next post). But let me first restate my own take on
the issue. IMO a nice format would be:
(*) [KEYWORD PROPERTIES]
I think we should allow for a more general approach than one just for
citation and this is a good thing (IMO).
The in-buffer display of (*) could be governed by
org-buffer-format-KEYWORD (similar to
gnus-user-format-function-LETTER) or just identity if no function is
defined. Export could be handled by org-BACKEND-KEYWORD or
org-export-KEYWORD. With officially recognized KEYWORDs something
like citation could be a 'first-class citizen'. PROPERTIES could be a
string like:
optional-keyless-entry :prop1 one :prop2 two ...
Perhaps, treatment of keyword, could even be handled by an
in-buffer Org Babel function in the spirit of e.g. reproducible
research (see below).
This would be different from Org links in that (*) is more like a
functions that allows for (i) pretty and informative display in
buffer/export and (ii) easy user extension.
I think there are many compelling use-cases for such a framework.
1. Citation: Take the keyword citetext which should be an 'official'
KEYWORD. So for instance we could have
[citetext BIBTEX-KEY :prenote note, w/comma :postnote blah].
In buffers, via org-in-buffer-format-citetext, it would be
displayed as
BIBTEX-KEY (note, w/comma, YEAR, blah)
or something similar (depending to what extend bibtex.el would be
leveraged; e.g. BIBTEX-KEY might show the author/editor key and
YEAR would also depend on parsing a bibtex file) (obviouesly,
there's some reference to a bibtex file somewhere). In LaTeX it
would be exported as
\citetext[note,w/comma][blah]{BIBTEX-KEY}
In html it might utilize some tool that understand bibtex (there's
a link to such a tool in the next post). In ASCII it could almost
use what would be displayed in the buffer.
2. MY-FUN: MY-FUN is some function that does something with some
properties, perhaps just a string (simple cases: [sc text] is used
for small caps, or mayhaps [my-treat-dna-string DNA-STRING]). I
might use it in a single file that I want to send to people or I
might just use it in my notes. Currently it's implemented via
org-emphasis-alist or as a link. Changing emphases is a hacks, and
they are hard to export with the now more robust Org syntax and
further permit little control over how they are displayed
in-buffer. Links are more flexible but lacks display control and
becomes somewhat painful with many arguments[2]. Also, MY-FUN
doesn't take a 'description'. With (*) I could simply write
[MY-FUN PROPERTIES].
Perhaps, I could even define org-BACKEND-MY-FUN in a babel block
if it's only relevant to the current file.
There's been some work and some discussion on this already, most
notably Aaron already supplied some patches towards this end[3],
but using a slightly different syntax more like the link syntax;
e.g. textcite above would look like
[[textcite:bibtex-key&&pre%3Dfoo&&post%3Dbar][whatever]]
where whatever is ignored. The state of the discussion is to some
extend summarized in the next post.
It would love to hear whether other people find something like this to
be a good idea? Would anyone find a use such a framework? Would (*)
conflict with anyone's current usage of Org? Is (*) too ambitious and
in terms of getting citation support? Is this is taking a musket to
kill a butterfly? What are the the flaws in the above.
I'm not a good (lisp) programmer, but I think I have a month off this
summer where I could work on something like the above.
Thanks for reading,
Rasmus
Footnotes:
[1] http://mid.gmane.org/20130303070635.GA12112%40panahar
[2] my citation links often look like postnote;prenote without
showing the BIBTEX-KEY or citation format.
[2] here http://mid.gmane.org/87lia0s7wi.fsf%40bzg.ath.cx
and here http://mid.gmane.org/87wqthk7vj.fsf%40gmail.com.
--
When in doubt, do it!