Hi, Carsten,

I've submitted a patch separately. It seems to play nice with the enclosed test file.

If org-special-blocks is supposed to become part of the core (it's moved out of contrib, but we still have to require it), it might make sense to just move the html and latex formatting code into org-html.el and org-latex.el respectively, together with the handling of blockquotes, verses, centering etc.

Yours,
Christian

On 10/4/11 11:33 PM, Carsten Dominik wrote:
Hi Christian,

for now I have reverted the patch.  WOuld you like to work on a better one?

- Carsten

On 4.10.2011, at 21:01, Christian Moe wrote:

Hi,

Carsten, thanks.

Jambunathan's probably right, though, that this fix (while necessary) is 
incomplete. Sorry, I hadn't thought it through.

Now, when the first paragraph of a special block comes right after the #+BEGIN_WHATEVER line, it 
will just come as the first text node of the<div>  block, and will not be wrapped in 
a<p>  element. So among other things, any special CSS styling for<p>s will not be 
applied to it.

It's not a big deal -- if you need a<p>  (and often you really don't) the 
workaround is as simple as leaving an empty line between #+BEGIN_WHATEVER and the 
first paragraph.

But I guess it would be more consistent/expected/helpful behavior for special-blocks 
to start a new paragraph -- this time *after* the opening<div>  tag and not 
around it!

Yours,
Christian


On 10/4/11 4:36 PM, Jambunathan K wrote:

Carsten Dominik<carsten.domi...@gmail.com>   writes:
I see no reason to not uncomment this line.  Shall we just do this?

Shouldn't a paragraph be opened/closed while entering/leaving the div.

,---- See org-xhtml-format-environment
|     (center
|      (case beg-end
|        (BEGIN
|       (org-lparse-end-paragraph)
|       (insert "\n<div style=\"text-align: center\">")
|       (org-lparse-begin-paragraph))
|        (END
|       (org-lparse-end-paragraph)
|       (insert "\n</div>")
|       (org-lparse-begin-paragraph))))
`----

We can always open a paragraph gratis, because empty paragraphs are
pruned at the end of export.




#+style: <style>.abstract:before { content: "Abstract: "; font-weight: bold; 
display: inline}
#+style: .abstract {font-size: 10pt; margin-left: 3em}
#+style: .sidebar {border: 1px solid black; padding: 1em; background: yellow; 
counter-increment: box}
#+style: .sidebar:before {content: "Box " counter(box); font-weight: bold; 
display: block}
#+style: p {font-family: arial}</style

Special blocks test


#+begin_src emacs-lisp
  (require 'org-special-blocks)
#+end_src

#+results:
: org-special-blocks


#+begin_abstract
  This is a special =abstract= block.
#+end_abstract

Some text.

#+begin_sidebar
  This is a sidebar with additional detail. Check that the first
  paragraph is styled the same as the others.

  It extends over several paragraphs.
#+end_sidebar

Some more text.

#+begin_sidebar

  This is another example with lines above/below.

#+end_sidebar

Text again.

#+begin_center
  This is centered text. Like special blocks, it's wrapped in a =div=
  element in HTML.
#+end_center


New code:


#+begin_src emacs-lisp
  (defun org-special-blocks-convert-html-special-cookies ()
  "Converts the special cookies into div blocks."
  ;; Uses the dynamically-bound variable `line'.
  (when (string-match "^ORG-\\(.*\\)-\\(START\\|END\\)$" line)
    (message "%s" (match-string 1))
    (when (equal (match-string 2 line) "START")
      (org-close-par-maybe)
      (insert "\n<div class=\"" (match-string 1 line) "\">")
      (org-open-par))
    (when (equal (match-string 2 line) "END")
      (org-close-par-maybe)
      (insert "\n</div>")
      (org-open-par))
    (throw 'nextline nil)))
#+end_src

Reply via email to