emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Pierre de Buyl <pdebuyl@ulb.ac.be>
To: emacs-orgmode@gnu.org
Subject: Re: [Orgmode] S5 export
Date: Fri, 3 Jun 2011 07:38:35 -0400	[thread overview]
Message-ID: <853CA2B4-BD3A-4CB6-953E-775CEEDBBCDA@ulb.ac.be> (raw)
In-Reply-To: <AAB99C57-C1B0-4C78-90BD-3D9FE1E4958A@ulb.ac.be>

[-- Attachment #1: Type: text/plain, Size: 805 bytes --]

Hello Eric,

This is amazing, actual emacs lisp code from my explanations, thanks  
a lot!

If welcomed, I have a few comments related to how I currently use  
this function (I have a talk coming soon :-) )

     - If all "star" headlines become slides, it quickly leads to  
awkward layouts with empty slides below one star headings.
       I made a modification to the code to choose only one star  
headings as slides. This way, level 2 headings can be used as "in  
slide" headings.
       I used an (if (looking-at "^\\* ") XXX) in the preprocess hook  
for that.
     - An actual "title page" seems more appropriate, so I added one  
with "title author date" as h1,h2 and h3 headings.

The css need to be tweaked a little bit to get nice results.
My modified org-export-as-s5 function is attached.


[-- Attachment #2: org-export-as-s5.el --]
[-- Type: application/octet-stream, Size: 2393 bytes --]

(defun org-export-as-s5
  (arg &optional hidden ext-plist to-buffer body-only pub-dir)
  "Wrap `org-export-as-html' in setting for S5 export."
  (interactive "P")
  (flet ((join (lst) (mapconcat #'identity lst "\n"))
	 (sheet (href media id)
		(org-fill-template
		 (concat "<link rel=\"stylesheet\" href=\"%href\""
			 " type=\"text/css\" media=\"%media\" id=\"%id\" />")
		 `(("href" . ,href)
		   ("media" . ,media)
		   ("id" . ,id)))))
    (let ((org-export-html-style-extra
	   (join `("<!-- configuration parameters -->"
		   "<meta name=\"defaultView\" content=\"slideshow\" />"
		   "<meta name=\"controlVis\" content=\"hidden\" />"
		   "<!-- style sheet links -->"
		   ,(sheet "ui/default/slides.css" "projection" "slideProj")
		   ,(sheet "ui/default/outline.css" "screen" "outlineStyle")
		   ,(sheet "ui/default/print.css" "print" "slidePrint")
		   ,(sheet "ui/default/opera.css" "projection" "operaFix")
		   "<!-- S5 JS -->"
		   ,(concat "<script src=\"ui/default/slides.js\" "
			    "type=\"text/javascript\"></script>"))))
	  (org-export-html-toplevel-hlevel 1)
	  (org-export-headline-levels 2)
	  (org-export-preprocess-hook
	   (list
	    (lambda ()
	      (let ((class "slide"))
		(org-map-entries
		 (lambda ()
		   (save-excursion ;; from `org-export-remember-html-container-classes'
		     (org-back-to-heading t)
		     (if (looking-at "^\\* ")
			 (put-text-property (point-at-bol) (point-at-eol)
					    'html-container-class class))))))
	      )))

	  (org-export-html-final-hook
	   (list
	    (lambda ()
	      (save-excursion
		(replace-regexp
		 (regexp-quote "<div id=\"content\">")
		 (mapconcat #'identity
			    `("<div class=\"layout\">"
			      "<div id=\"controls\"><!-- no edit --></div>"
			      "<div id=\"currentSlide\"><!-- no edit --></div>"
			      "<div id=\"header\"></div>"
			      "<div id=\"footer\">"
			      ,(format "<h1>%s - %s</h1>" author title)
			      "</div>"
			      "</div>"
			      ""
			      "<div class=\"presentation\">"
			      "<div class=\"slide\">"
			      ,(format "<h1> %s </h1>
<h3> %s </h3>

<h3> %s </h3>" title author date)
			      "</div>") "\n"))))
	    (lambda ()
	      (save-excursion
		(replace-regexp
		 (regexp-quote "<div id=\"table-of-contents\">")
		 "<div id=\"table-of-contents\" class=\"slide\">"))))))
      (org-export-as-html arg hidden ext-plist to-buffer body-only pub-dir))))
  

[-- Attachment #3: Type: text/plain, Size: 3650 bytes --]


I also posted an example online. It it exported from the file s5- 
test.org with the function defined in the attached file. The css is  
very slightly modified.
The "scientific content" of the talk is incomplete, this is normal :-/

http://homepages.ulb.ac.be/~pdebuyl/lectures/s5-test.html
http://homepages.ulb.ac.be/~pdebuyl/lectures/s5-test.org

For those reading, I'll mention that using the html export, as done  
here, allows to include syntax-highlighted code and LaTeX equations  
very easily.

Regards,

Pierre

Le 1 juin 11 à 18:41, Eric Schulte a écrit :

> Hi Pierre,
>
> I've taken your very thorough S5 instructions and converted them  
> into a
> single `org-export-as-s5' function.  The attached archive file  
> holds an
> s5.org Org-mode file which defines this function, as well as the ui
> directory required for S5, and an html file which results from calling
> the `org-export-as-s5' function in the s5.org file.
>
> For now the results are also posted up at
> http://cs.unm.edu/~eschulte/notes/s5/s5.org
> http://cs.unm.edu/~eschulte/notes/s5/s5.html
>
> Thanks for the clear explanation which lead to such an easy  
> translation
> into elisp.  Please let me know if you think this should be  
> augmented in
> any way, or if the defined function throws any errors on your system.
>
> Best -- Eric
>
> <s5.tar.bz2>
> Pierre de Buyl <pdebuyl@ulb.ac.be> writes:
>
>> Hello,
>>
>> After a lot a reading of org-exp.el and org-html.el I finally figured
>> out the
>> existence of the "HTML_CONTAINER_CLASS" property.
>>
>> I could then figure a minimal way to make a s5 presentation.
>> Minimal in the sens of minimum difference with the html exporter.
>>
>> After setting a few STYLE and OPTIONS lines in an org file,
>> three steps are needed:
>> 1. Set the HTML_CONTAINER_CLASS to "slide" on level 1 headings
>> 2. Set org-export-html-toplevel-hlevel to "1", so that slide titles
>> behave properly
>> 3. Replace in the html output
>> <div id="content">
>> by
>> <div class="layout">
>> <div id="controls"><!-- DO NOT EDIT --></div>
>> <div id="currentSlide"><!-- DO NOT EDIT --></div>
>> <div id="header"></div>
>> <div id="footer">
>> <h1>Interactive Python plotting</h1>
>> </div>
>> </div>
>>
>> <div class="presentation">
>>
>> You need the "ui" directory from the S5 archive to make it work
>> indeed, http://meyerweb.com/eric/tools/s5/ .
>> I attach an example org file and the resulting html (which was  
>> tweaked
>> according to step 3).
>>
>> Pierre
>>
>>
>>
>>
>>
>> Le 3 févr. 11 à 12:23, Bastien a écrit :
>>
>>> Hi Pierre,
>>>
>>> Pierre de Buyl <pdebuyl@chem.utoronto.ca> writes:
>>>
>>>> S5 allows one to present a slideshow in a web browser, even full
>>>> screen for
>>>> some browsers.
>>>> I know that the topic has come here already, but I actually hacked
>>>> the
>>>> excellent org-html.el export file to produde a S5 slideshow with  
>>>> org.
>>>
>>> This looks useful.
>>>
>>> By reading your code, I see org-export-as-s5 is a variation over
>>> org-export-as-html.
>>>
>>> I would welcome an approach where we factor out some elements of
>>> org-export-as-html, so that exporting to s5 would just require the
>>> user to customize those elements.
>>>
>>> Does that seem reasonable to you?  Would you volunteer to make
>>> org-export-as-html a bit more general?  Even a precise comparison
>>> of org-export-as-s5 against org-export-as-html would be helpful at
>>> this point.
>>>
>>> Thanks!
>>>
>>> -- 
>>>  Bastien
>>
>
> -- 
> Eric Schulte
> http://cs.unm.edu/~eschulte/



  parent reply	other threads:[~2011-06-03 11:38 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-04 14:31 S5 export Pierre de Buyl
2011-02-03 17:23 ` Bastien
2011-02-03 18:48   ` Achim Gratz
2011-02-11 11:22     ` Bastien
2011-06-01 12:41   ` [Orgmode] " Pierre de Buyl
2011-06-01 18:21     ` Pierre de Buyl
2011-06-01 21:31     ` Eric Schulte
2011-06-01 22:41     ` Eric Schulte
     [not found]       ` <AAB99C57-C1B0-4C78-90BD-3D9FE1E4958A@ulb.ac.be>
2011-06-03 11:38         ` Pierre de Buyl [this message]
2011-06-03 12:48           ` Eric Schulte
2011-06-03 13:45             ` Pierre de Buyl
2011-06-03 15:02               ` Eric Schulte
2011-06-03 13:15           ` Christian Moe
2011-06-03 15:05             ` Eric Schulte
  -- strict thread matches above, loose matches on Subject: below --
2011-06-05  8:29 Rustom Mody
2011-06-05 15:18 ` Eric Schulte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=853CA2B4-BD3A-4CB6-953E-775CEEDBBCDA@ulb.ac.be \
    --to=pdebuyl@ulb.ac.be \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).