Hi,

Line breaks are not preserved by default in verse blocks in ODT export.

To reproduce, export to ODT:

#+begin_verse
Is all that we see or seem
But a dream within a dream?
#+end_verse

The expected result is with a line break, as in the verse block.
The result I get is all on one line:

  Is all that we see or seem But a dream within a dream?

I do get the expected result with =#+OPTIONS: \n:t=, i.e.
:preserve-breaks, but this is a workaround. The other backends preserve
linebreaks in verse blocks without =\n:t=, so it's not expected behavior
that it should be needed.

Emacs  : GNU Emacs 30.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.43, 
cairo version 1.18.2)
Package: Org mode version 9.8-pre (release_9.7.39-670-g54aaaa @ 
/home/cm/Code/org-mode/lisp/)

Git bisect suggests it's due to this commit (I'm surprised it took me
three years to notice; too little poetry in my life?):

  commit 3502ce2dbb29b70cdbb978d144322d48cb00f26d
  Date:   Sat Oct 8 21:08:47 2022 +0800

      ox-odt: Fix newlines replaced by spaces in Han script

      * lisp/ox-odt.el (org-odt-plain-text): Use `fill-region' to unfill the
      paragraphs with newlines accounting for scripts without spaces between
      words.

Possible fix: Adding a check to the if statement in the commit so the
condition is t either if :preserve-breaks or if we are in a verse block.
But maybe it should be handled somewhere else in the exporter logic
(which I don't understand well).

Regards,
Christian



Reply via email to