go-org-orgwiki/org/testdata/blocks.org
Niklas Fasching b61e49eb85 Preserve whitespace (indentation) inside paragraphs
We want original whitespace to be rendered in some cases (e.g. verse
blocks). This requires information about the original whitespace to be
preserved during paragraph parsing. As html ignores (collapses) whitespace by
default we don't have to adapt the html writer and can just selectively enable
rendering of the preseverved whitespace wherever we want it using
css (white-space: pre).

To differentiate meaningful whitespace from document structure based
indentation (i.e. list item base indentation) we need to introduce
document.baseLvl. A paragraph by itself does not have enough information to
differentiate both kinds of whitespace and needs this information as context
[0].

As we're already touching list indentation i went along and improved (fixed?)
descriptive list item indentation rendering in the org writer (it should match
emacs tab behavior - i.e. indent subsequent lines up to the `:: `).

[0] e.g. list items can contain blank lines - a paragraph starting with a blank
line would not know that it is part of a list item / has a base indentation -
the blank line would suggest a baseLvl of 0.
2019-12-22 14:17:14 +01:00

2.4 KiB

echo "a bash source block"

function hello {
    echo Hello World!
}

hello
block caption
a source block without a language
an example block with
multiple lines including


empty lines!

it also has multiple parameters

src, example & export blocks treat their content as raw text
/inline/ *markup* is ignored
      and whitespace is honored and not removed
examples like this
are also supported

note that /inline/ *markup* ignored

Mongodb is webscale. (source: mongodb-is-web-scale)

blocks like the quote block parse their content and can contain

  • lists
  • inline markup
  • tables

    foo
    bar
    baz
  • paragraphs
  • … whitespace is honored and not removed (but is not displayed because that's how html works by default) it can be made visible using css (e.g. white-space: pre).
  • list item 1 blocks can contain unindented lines that would normally end a list item

    this line is not indented - if it was outside of a block the list item would end
    

    this line is not indented - if it was outside of a block the list item would end

    now we're outside the block again and the following unindented line will be outside of the list item

this unindented line is outside of the list item

  • list item 2

    #+BEGIN_EXAMPLE

    #+END_EXAMPLE

    #+END_QUOTE
    
  • verse blocks

    • emacs / ox-hugo rendering

      Great clouds overhead
      Tiny black birds rise and fall
      Snow covers Emacs

         ---AlexSchroeder

    • go-org rendering

      <style>
      .verse-block p { white-space: pre; }
      .verse-block p + p { margin: 0; }
      </style>

      Great clouds overhead Tiny black birds rise and fall Snow covers Emacs

      —AlexSchroeder