* txt2tags exporter: patch & questions
@ 2012-11-13 18:40 Matteo Cypriani
2012-11-14 14:19 ` Nicolas Goaziou
0 siblings, 1 reply; 2+ messages in thread
From: Matteo Cypriani @ 2012-11-13 18:40 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1.1: Type: Text/Plain, Size: 3692 bytes --]
Hi there,
I worked on an exporter to the txt2tags format (http://txt2tags.org/) via org-
export-generic, and I have got a few questions (that are also included as
comments in the attached patch).
My first question is about numbered lists: they don't seem to be detected,
i.e. numbers are kept (despite :body-number-list-leave-number is set to nil),
and the prefix is not applied. It seems to be the case also for other formats
handled by the generic exporter, so maybe it is a known issue.
In the same kind of issue, the #+BEGIN_QUOTE blocks does not seem to be
detected, setting :blockquote-start and :blockquote-end doesn't have any
effect and the text inside the block is outputted as normal paragraph text.
#+BEGIN_VERSE blocks are the same except they start with “ORG-VERSE-START” and
end with “ORG-VERSE-END”, but I guess this is more normal since I don't find
any mention of verse blocks in the org-export-generic code.
That said the txt2tags format doen't handle quote blocks, each line of a quote
must be indented by a tab. Would it be possible to add something like :body-
line-quote-format and :body-line-verse-format (as :body-line-fixed-format
exists)?
I also have a problem with tables, as txt2tags doesn't handle horizontal lines
in the tables; would it be possible to add an option like :body-line-export-
hline?
My last question is about paragraph spacing. To get a blank line between two
paragraphs (which is the way to separate paragraphs in txt2tags as well as in
org-mode), I set :body-newline-paragraph to "\n" (by the way that should also
be the case at least in the MediaWiki exporter). It works as expected for
normal paragraphs, but it becomes a mess with item lists.
I set the following variables for more visibility:
:body-line-format "%s!EOL!\n"
:body-newline-paragraph "!NP!\n"
:body-list-format "- %s!EOI!"
:body-list-suffix "!BLS!\n\n!ELS!"
So we have !EOL! before an end of line, !NP! before a new paragraph, !EOI! at
the end of a list item (without a trailing new line), !BLS! to begin the list
suffix and !ELS! to end it. Note that the txt2tags format requires two blank
lines to close a list.
Now we have the following text in our org-mode buffer:
- First item.
- This is
an item
on three lines.
- Bar foo
blah.
Which gets exported as:
- First item.!EOI!!NP!
- This is!EOI!!BLS!
!ELS! an item!EOL!
on three lines.!EOL!
!NP!
- Bar foo!EOI!!BLS!
!ELS! blah.!EOL!
!NP!
So, it sounds like multi-line items are not handled properly by org-generic-
exporter. In my opinion:
- :body-newline-paragraph should not be added inside a list, we can handle the
format of an item list with :body-list-format.
- The second and subsequent lines of an item should be handled as special
elements instead of as normal lines, i.e. :body-line-format should not be
used, but maybe a :body-list-line-format should be added.
- The end of a list should be detected so that :body-list-suffix is added only
there.
I am by no mean a Lisp developper, so that is what I *think* should be done to
get a proper handling of lists, but (1) I may be wrong, and (2) I don't think
I can do that myself. Comments and advices appreciated.
Also, at the end of my patch is a small list of things missing in org-generic-
exporter to get a complete txt2tags support, in case someone's got some spare
time and doesn't know where to start :-)
Thanks for reading so far,
Matteo
P.S.: please keep me CC'ed if you answer this email, as I am not subscribed to
the list.
[-- Attachment #1.2: org-export-generic_txt2tags.diff --]
[-- Type: text/x-patch, Size: 3996 bytes --]
--- org-export-generic.el.orig 2012-11-13 17:59:22.795585712 +0100
+++ org-export-generic.el 2012-11-13 19:33:15.458769199 +0100
@@ -371,6 +371,103 @@
)
;;
+ ;; txt2tags
+ ;;
+ ("txt2tags"
+ :file-suffix ".t2t"
+ :key-binding ?2
+
+ ; Header
+ :title-format "%s\n"
+ :author-export t
+ :date-export t
+ :date-suffix "\n"
+ :toc-export nil
+
+ ; Titles & sections
+ :body-section-prefix ""
+ :body-header-section-numbers nil
+ :body-section-header-prefix ("\n\n\n= " "\n== " "=== "
+ "==== " "===== " "====== ")
+ :body-section-header-format "%s"
+ :body-section-header-suffix (" =\n" " ==\n" " ===\n"
+ " ====\n" " =====\n" " ======\n")
+
+ ; General line format
+ :body-line-format "%s\n"
+ :body-line-wrap 72
+ ; To have a new line after each paragraph:
+ :body-newline-paragraph "\n"
+ :body-text-prefix ""
+ :body-text-suffix ""
+
+ ; Lists
+ ; Note: nested lists are not handled by org-export-generic yet.
+ ; /!\ Multi-line items get a new line after their first line
+ ; (because of :body-newline-paragraph)
+ :body-list-format "- %s"
+ :body-list-suffix "\n\n"
+
+ ; Numbered lists
+ ; /!\ Numbered lists does not seem to be detected in the Org source
+ ; file!
+ :body-number-list-format "+ %s\n"
+ :body-number-list-suffix "\n\n"
+ :body-number-list-leave-number nil
+
+ ; Checkboxes
+ :body-list-checkbox-todo "\\1 "
+ :body-list-checkbox-done "\\1 "
+ :body-list-checkbox-half "\\1 "
+ :body-list-checkbox-todo-end ""
+ :body-list-checkbox-done-end ""
+ :body-list-checkbox-half-end "\n"
+
+ ; Text style formats
+ :bold-format "**%s**"
+ :italic-format "//%s//"
+ :underline-format "__%s__"
+ :strikethrough-format "--%s--"
+ :code-format "``%s``"
+ :verbatim-format "``%s``"
+
+ ; Block formats
+ :body-line-export-preformated t
+ :body-line-fixed-format "``` %s\n"
+ ; /!\ #+BEGIN_QUOTE does not seem to work (neither do #+BEGIN_VERSE)
+; :blockquote-start "!BLOCKQUOTE-START!"
+; :blockquote-end "!BLOCKQUOTE-END!"
+
+ ; Tables
+ :body-table-start ""
+ :body-table-end ""
+ :body-table-row-start "|"
+ :body-table-row-end "|"
+ :body-table-cell-start ""
+ :body-table-cell-end ""
+ :body-table-first-cell-start ""
+ :body-table-interior-cell-start "| "
+ :body-table-interior-cell-end " "
+ :body-table-last-cell-end ""
+ ; /!\ Horizontal lines are not handled by txt2tags, but there is
+ ; apparently no way to avoid them
+ :body-table-hline-start ""
+ :body-table-hline-end ""
+
+ ; Other stuff handled by txt2tags and org-mode but not yet by
+ ; org-export-generic:
+ ; - definition/description lists
+ ; - comments (# lines and #+BEGIN_COMMENT blocks)
+ ; - verbatim/literal blocks (#+BEGIN_EXAMPLE and #+BEGIN_SRC)
+ ; - horizontal rule (currently detected as a list item)
+ ; - links
+ ; - images
+ ; - included files (#+INCLUDE) (what would be nice is an option to
+ ; allow choosing between inclusion of sub-files as #+INCLUDEs or
+ ; directly in the text)
+ ; - macros
+ )
+ ;;
;; internet-draft .xml for xml2rfc exporter
;;
("ietfid"
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: txt2tags exporter: patch & questions
2012-11-13 18:40 txt2tags exporter: patch & questions Matteo Cypriani
@ 2012-11-14 14:19 ` Nicolas Goaziou
0 siblings, 0 replies; 2+ messages in thread
From: Nicolas Goaziou @ 2012-11-14 14:19 UTC (permalink / raw)
To: Matteo Cypriani; +Cc: emacs-orgmode
Hello,
Matteo Cypriani <mcy@lm7.fr> writes:
> I worked on an exporter to the txt2tags format (http://txt2tags.org/) via org-
> export-generic, and I have got a few questions (that are also included as
> comments in the attached patch).
There's a more powerful generic exporter being tested right now:
org-export.el. Assuming you use a very recent Org , it lives in contrib/
directory and should be moved into core soon. You may want to try it in
order to implement the text2tags backend.
There is documentation for backend developers using this framework at:
http://orgmode.org/worg/dev/org-export-reference.html
Thanks for your interest in Org.
Regards,
--
Nicolas Goaziou
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-11-14 14:23 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-13 18:40 txt2tags exporter: patch & questions Matteo Cypriani
2012-11-14 14:19 ` Nicolas Goaziou
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).