[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