[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[O] Re: unnumbered subsections in latex export
From: |
Jambunathan K |
Subject: |
[O] Re: unnumbered subsections in latex export |
Date: |
Fri, 01 Apr 2011 13:09:21 +0530 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (windows-nt) |
> I'll show two examples to illustrate my point: lists and tables. Taken
> from a docstring,
>
> 1. first item
> + sub-item one
> + [X] sub-item two
> more text in first item
> 2. address@hidden last item
>
> will be parsed as:
>
> (ordered (nil \"first item\"
> (unordered (nil "sub-item one")
> (nil "[CBON] sub-item two"))
> "more text in first item"")
> (3 "last item"))
>
> This allows to easily (see org-list-to-latex, org-list-to-html,
> org-list-to-texinfo, and so on) transform an Org list in many different
> formats. Alas, it cannot be used in org-html.el and org-docbook.el, as
> those, again, parse buffer line-wise.
>
> The same could be said about tables:
>
> | Row 1 | 1 | 2 |
> |-------+---+---|
> | Row 2 | 3 | 4 |
>
> can be parsed as:
>
> (("Row 1" "1" "2")
> 'hline
> ("Row 2" "3" "4"))
>
> and from that, such functions as orgtbl-to-html, or orgtbl-to-latex were
> easy to create.
>
> So, basically, what I suggest here is:
>
> 1. list all possible environments and objects offered by the Org format
> (table, lists, inlinetasks, center, verbatim, paragraph, headlines,
> time-stamps, LaTeX snippets, footnotes, links, source);
> 2. define an explicit export format for each of them;
> 3. determine options that should be know by org-exp, by the backend;
> 4. create a parser, in org-exp, that will output Org buffer in the
> chosen format;
> 5. create (many are readily available) functions for each backend to
> interpret them.
>
>
> Now about that explicit format. Taking this buffer,
>
> #+title: Example buffer
>
> Some text before first headline.
>
> * First section
>
> First paragraph $\alpha = 1$.
>
> Second paragraph.
>
> - item 1
> - item 2
> #+begin_center
> Text
> #+end_center
>
> | Row 1 | 1 | 2 |
> | Row 2 | 3 | 4 |
>
> * Second section
>
> Text with footnote[fn:1].
> *************** Inline task
> Some text and
> a [[http://www.gnu.org/software/emacs/][link]]
> :DRAWER:
> - I like
> - lists.
> :END:
> *************** END
>
> * Footnotes
> [fn:1] Footnote definition.
>
> It could be parsed as the following:
>
> '((:title "Example buffer")
> (paragraph "Some text before first headline.")
> (headline "First section"
> (paragraph "First paragraph "
> (latex "$\alpha = 1")
> ".")
> (paragraph "Second paragraph")
> (list unordered (nil "item 1")
> (nil "item 2")
> (center (paragraph "Text")))
> (table ("Row 1" "1" "2")
> hline
> ("Row 2" "3" "4")))
> (headline "Second section"
> (paragraph "Text with footnote"
> (footnote "Footnote definition")
> ".")
> (inlinetask "Inline task"
> (paragraph "Some text and\na "
> (link "link" "http://www.gnu.org/"))
> (drawer (list unordered (nil "I like")
> (nil "lists."))))))
>
> Note that such a parsing will need a decent forward-paragraph function.
> It's also a very simplified example: headlines would need more than the
> title string (todo keyword, priority, tags) before starting the body.
>
> I have no code to offer at the moment, and, as we all know, Devil is in
> the details. But if the output from org-exp.el is clear, exporters will
> be more coherent. It is even provide tools to help exporters doing their
> task (a function to extract footnotes from the output, for example).
>
> Again, it may be a big task to undertake, but I think it will be
> necessary at some point.
Such an exporter (or similar in spirit to what you say) exists already.
For the sake of record, I am copying Bastien's notes on his
./EXPERIMENTAL/org-export.el (with some non-relevant content stripped)
Jambunathan K.
Attachment:
From: Bastien <address@hidden>
Subject: Re: OpenDocumentText/OpenOffice exporter
To: Lennart Borgman <address@hidden>
Cc: Jambunathan K <address@hidden>, Carsten Dominik <address@hidden>
Date: Sun, 13 Feb 2011 11:00:34 +0100 (6 weeks, 4 days, 21 hours ago)
Message-ID: <address@hidden>
Hi Lennart,
Lennart Borgman <address@hidden> writes:
> Perhaps we have done something very similar then, I do not know.
My bad. I should have advertize EXPERIMENTAL/org-export.el sooner.
> So maybe your approach of parsing the org buffer to a list makes
> things more easy to handle. On what level is the list? (From your
> description I guess it is a "parse tree" or whatever it is called. Not
> a list of tokens.)
It's a parse tree.
See attached example of a test.org file and the result of the function
(org-export-parse) : this list will go through the exporter, which takes
care of every subtree recursively.
Of course, having such a parse tree does not solve everything, and the
content of :content remains to be handled... but at least it makes
things quite clear.
[2. text/x-org; test.org]
#+TITLE: Test parse file
#+AUTHOR: Bastien
* A first heading
Some text here.
* WAITING A heading with metadata :Write:
The parse tree contains information about the current subtree.
** A subtree
Hello.
[3. text/plain; test_parsed.txt]
((:level 1 :heading
#("A first heading" 0 15
(fontified t font-lock-fontified t face org-level-1))
:properties
(("FILE" . "/home/guerry/test.org")
("BLOCKED" . "")
("CATEGORY" . "test"))
:content
#("\nSome text here.\n\n" 0 1
(fontified t font-lock-fontified t org-category "test")
1 17
(fontified t font-lock-fontified t org-category "test")
17 18
(fontified t font-lock-fontified t org-category "test"))
:subtree nil)
(:level 1 :heading
#("A heading with metadata" 0 23
(fontified t font-lock-fontified t org-todo-head "NEXT" face
org-level-1 org-category "test"))
:properties
(("TODO" . "WAITING")
("FILE" . "/home/guerry/test.org")
("TAGS" . ":Write:")
("ALLTAGS" . ":Write:")
("BLOCKED" . "")
("CATEGORY" . "test"))
:content
#("\nThe parse tree contains information about the current
subtree.\n\n" 0 1
(org-todo-head "NEXT" fontified t org-category "test")
1 64
(org-todo-head "NEXT" fontified t org-category "test")
64 65
(org-todo-head "NEXT" fontified t org-category "test"))
:subtree
((:level 2 :heading
#("A subtree" 0 9
(org-todo-head "NEXT" fontified t face org-level-2
org-category "test"))
:properties
(("FILE" . "/home/guerry/test.org")
("ALLTAGS" .
#(":Write:" 1 6
(inherited t)))
("BLOCKED" . "")
("CATEGORY" . "test"))
:content
#("\nHello.\n" 0 1
(org-todo-head "NEXT" fontified t org-category "test")
1 7
(org-todo-head "NEXT" fontified t org-category "test")
7 8
(fontified t font-lock-fontified t org-category "test"))
:subtree nil))))
- [O] Re: unnumbered subsections in latex export,
Jambunathan K <=
- [O] Re: unnumbered subsections in latex export, Achim Gratz, 2011/04/01
- [O] Re: unnumbered subsections in latex export, Sébastien Vauban, 2011/04/04
- Re: [O] Re: unnumbered subsections in latex export, Nick Dokos, 2011/04/04
- Re: [O] Re: unnumbered subsections in latex export, Aankhen, 2011/04/04
- [O] Re: unnumbered subsections in latex export, Sébastien Vauban, 2011/04/05
- Re: [O] Re: unnumbered subsections in latex export, Aankhen, 2011/04/05
- Re: [O] Re: unnumbered subsections in latex export, Eric S Fraga, 2011/04/05
- [O] New features for the exporters?, Sébastien Vauban, 2011/04/05
- Re: [O] Re: unnumbered subsections in latex export, Aankhen, 2011/04/05
[O] Re: unnumbered subsections in latex export, Matt Lundin, 2011/04/06