emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Multicite syntax


From: Nicolas Goaziou
Subject: Re: [O] Multicite syntax
Date: Tue, 17 Mar 2015 20:59:33 +0100

Hello,

Richard Lawrence <address@hidden> writes:

> Nicolas Goaziou <address@hidden> writes:

>> You could do the following
>>
>>   (let ((citation (org-element-lineage (org-element-context) '(citation) t))
>>         references)
>>     (save-excursion
>>       (goto-char (org-element-property :contents-begin citation))
>>       (let ((end (org-element-property :contents-end citation)))
>>         (while (< (point) end)
>>           (let ((reference (org-element-lineage
>>                             (org-element-context) '(citation-reference) t))))
>>           (push reference references)
>>           (goto-char (org-element-property :end reference)))))
>>     (nreverse references))
>
> Thanks!

For correctness, (push ...) and (goto-char ...) obviously need to be
located within the (let ...).

> Just to clarify: I see that this is necessary when getting a citation
> object via org-element-context, but is it also necessary in an export
> context, where the whole buffer or region has already been parsed?

No, with a full parse tree, `org-element-contents' on a citation object
returns the list of all citation-reference objects within.

> I ask because in that kind of context, I think it is generally going to
> be more useful to deal with citation objects as a whole.  I am not sure
> we will want to treat citation-references as individual objects which
> are themselves exported; instead, I think we will want to handle
> exporting the citation-references in a citation all at once.

I don't know. In any case, they need to be treated as regular object
(e.g., they are expected to have a filter associated to them).

If some back-end doesn't need to export directly citation references, it
just needs to skip the relative translator.


Regards,

-- 
Nicolas Goaziou



reply via email to

[Prev in Thread] Current Thread [Next in Thread]