Skip to content

Latest commit

 

History

History
1551 lines (1445 loc) · 51.7 KB

all-posts.org

File metadata and controls

1551 lines (1445 loc) · 51.7 KB

Preparation

  1. Be the root directory for this Hugo site (the directory containing config.toml).
  2. Run
    hugo server --port 1111
        
  3. See the site served on “http://localhost:1111/”.

Post 1

Export this first post only by bringing point here and doing M-x org-hugo-export-subtree-to-md.

Post 2

This post has no date.

Export this second post only by bringing point here and doing M-x org-hugo-export-subtree-to-md.

Image

Image links

This is some text before the first heading of this post.

Unclickable image (works!)

/images/org-mode-unicorn-logo.png


To be fixed (Now fixed): The sub-headings in a post get exported as Heading 1 instead of Heading 2.

For example, this sub-section’s heading is exported as:

# Unclickable image

instead of

## Unclickable image

Solution: Above is fixed by setting HUGO_OFFSET_LEVEL to 1.

So the sub-heading title and the post title both get the Heading 1 tag and look the same size.

Clickable link that opens the image (works!)

Click here to see the unicorn

Clickable image that opens the image (works!)

Click below image to jump to the unicorn image. /images/org-mode-unicorn-logo.png

NOTE
file: has to be used in both Link and Description components of the Org link.

Image with ATTR_HTML Issue # 17

/images/org-mode-unicorn-logo.png

Discussion

Link to image outside of standard Hugo static directory

../files-to-be-copied-to-static/static/images/copy-of-unicorn-logo.png

If you link to files outside of the Hugo static directory, ensure that the path contains /static/ if you would like to preserve the directory structure.

Example translations between outside static directory paths to the copied location inside static:

Outside staticCopied-to location inside staticExplanation
~/temp/static/images/foo.png<HUGO_BASE_DIR>/static/images/foo.pngIf the outside path has /static/ in it, the directory structure after that is preserved when copied.
~/temp/static/img/foo.png<HUGO_BASE_DIR>/static/img/foo.png(same as above)
~/temp/static/foo.png<HUGO_BASE_DIR>/static/foo.png(same as above)
~/temp/static/articles/zoo.pdf<HUGO_BASE_DIR>/static/articles/zoo.pdf(same as above)

Source path does not contain /static/

../files-to-be-copied-to-static/foo/copy-2-of-unicorn-logo.png

Outside staticCopied-to location inside staticExplanation
~/temp/bar/baz/foo.png<HUGO_BASE_DIR>/static/ox-hugo/foo.pngHere, as the outside path does not have /static/, the file is copied to the ox-hugo/ dir in Hugo static/ dir.
Note
The ox-hugo sub-directory name is because of the default value of org-hugo-default-static-subdirectory-for-externals.

Image captions

Some text before image.

/images/org-mode-unicorn-logo.png Some more text, after image.

Setting heading anchors

Heading 1 of the post

Something

Heading 1.1 of the post

Something else

Heading 2 of the post

Something 2

Heading 2.1 of the post

Something 2.1

Post heading with crazy characters

Releasing version 1.1

Foo ( Bar ) Baz

(Foo)Bar.Baz&Zoo

Hey! I have a link here (Awesome!)

Este título es en español

Non-English titles

ÂÊÎÔÛ

ÁÉÍÓÚÝ

ÀÈÌÒÙ

ÄËÏÖÜ

ÃÐÑÕÞ

Ç

Title in Front Matter

Awesome title with “quoted text”

Testing a post with double quotes in the title.

Under_scores_in_title

Ensure that the underscores in title string of front matter do not get escaped.. foo_bar must not become foo\_bar.

Description meta-data with “quoted text”

Testing a post with double quotes in the description.

Excluded post

This post must not be exported as it is tagged noexport.

Section

Articles

Article 1

First article.

This will land in content/articles/ as the parent of this subtree sets EXPORT_HUGO_SECTION to articles. Note that the theme needs to define at least the single.html, either in the layouts/_default/ directory, or layouts/articles/, either in the Hugo base dir or the theme dir.

Article 2

Second article.

This will also land in content/articles/ the same way.

Emacs posts

Emacs Post 1

Here is the first post on Emacs.

Emacs Post 2

Here is the second post on Emacs.

Tables

Simple Table

h1h2
ab
cd

Table with narrowest cols

123
abe
cdf

Table with top border

1234
abeg
cdfh

Table with bottom border

1234
abeg
cdfh

Table with top and bottom border

1234
abeg
cdfh

Table with rule after first row

1234
abeg
cdfh

Table with borders and rule after first

1234
abeg
cdfh

Source blocks

Example text with code blocks

Here are few variables that you might like to change in the local.mk:
prefix
Org installation directory
prefix = /dir/where/you/want/to/install/org # Default: /usr/share
    

The .el files will go to $(prefix)/emacs/site-lisp/org by default. If you’d like to change that, you can tweak the lispdir variable.

infodir
Org Info installation directory. I like to keep the Info file for development version of Org in a separate directory.
infodir = $(prefix)/org/info # Default: $(prefix)/info
    
ORG_MAKE_DOC
Types of Org documentation you’d like to build by default.
# Define below you only need info documentation, the default includes html and pdf
ORG_MAKE_DOC = info pdf card # html
    
ORG_ADD_CONTRIB
Packages from the contrib/ directory that you’d like to build along with Org. Below are the ones on my must-have list.
# Define if you want to include some (or all) files from contrib/lisp
# just the filename please (no path prefix, no .el suffix), maybe with globbing
#   org-eldoc - Headline breadcrumb trail in minibuffer
#   ox-extra - Allow ignoring just the heading, but still export the body of those headings
#   org-mime - Convert org buffer to htmlized format for email
ORG_ADD_CONTRIB = org-eldoc ox-extra org-mime
    

Code-fenced source blocks (default behavior)

The source blocks are code-fenced by default.

Code-fenced source blocks

Here the source blocks are explicitly set to be code-fenced by setting the EXPORT_HUGO_CODE_FENCE property to t.

Source blocks with highlight shortcode

Note that to disable the code fence option, the value portion of the property needs to be left empty instead of setting to nil!
:PROPERTIES:
:EXPORT_HUGO_CODE_FENCE:
:END:

Source block with caption

prefix = /dir/where/you/want/to/install/org # Default: /usr/share

Source block with list syntax in a list

As of today (<2017-08-02 Wed>), an upstream bug in Blackfriday (Issue #239) causes fenced code blocks in lists to not render correctly if they contain Markdown syntax lists.

Below is an example of such a case:

  • List item 1
    - List item 1.1 in code block
    - List item 1.2 in code block
        
  • List item 2
    + List item 2.1 in code block
    + List item 2.2 in code block
        
  • List item 3

Source block without list syntax in a list

This case is not affected by Blackfriday Issue #239 as the fenced code block does not have Markdown syntax lists.
  • List item 1
    *abc*
    /def/
    =def=
        
  • List item 2

Source block with list syntax but not in a list

- list 1

Org Babel Results

str = 'a\tbc'
print(str[1:])
	bc

The whitespace before “bc” in the results block above should be preserved.

Org Source Block

Test case for the case where user has set org-hugo-langs-no-descr-in-code-fences to a list containing the element org.

As this variable is dependent on user’s config, this post is not set to be exported by default.

The issue with Hugo will be seen if:

  • pygmentsCodeFences = true is set in the Hugo site config.toml,
  • a source block’s language is set to one that’s not supported by Pygments (like org, and thus the below example with source code language set to org), and
  • org-hugo-langs-no-descr-in-code-fences is set to a value not containing that lanaguage descriptor (org in this case).
# Org comment
Export this post after setting
=org-hugo-langs-no-descr-in-code-fences= to =(org)= and temporarily
removing the =noexport= tag.

Formatting

General

Below table shows the translation of Org markup to Markdown markup in the exported .md files.
OrgMarkdownIn Hugo rendered HTML
*bold***bold**bold
/italics/_italics_italics
==monospace==`monospace`monospace
~key-binding~<kbd>key-binding</kbd>key-binding
- if org-hugo-use-code-for-kbd is non-nil [default]
- Requires CSS to render the <kbd> tag as something special.
~key-binding~`key-binding`
- if org-hugo-use-code-for-kbd is nil
+strike-through+~~strike-through~~strike-through
_underline_<span class = "underline">underline</span>underline
- Requires CSS to render this underline class as an underline.

Keyboard tag

Use Org Code markup for kbd tag (default behavior)

This is the default behavior. So ~C-h f~ will show up as <kbd>C-h f</kbd>.

Example:

  • Few of Emacs help keybindings: C-h f, C-h v

Use Org Code markup for kbd tag

Here the Org code markup is explicitly specified to be used for <kbd> tag generation by setting EXPORT_HUGO_USE_CODE_FOR_KBD property to t. So ~C-h f~ will show up as <kbd>C-h f</kbd>.

Example:

  • Few of Emacs help keybindings: C-h f, C-h v

Don’t Use Org Code markup for kbd tag

Note that to disable the “use code for kbd” option, the value portion of the property needs to be left empty instead of setting to nil!
:PROPERTIES:
:EXPORT_HUGO_USE_CODE_FOR_KBD:
:END:

Here ~C-h f~ will show up as `C-h f` in Markdown and then <code>C-h f</code> in the final Hugo generated HTML.

Example:

  • Few of Emacs help keybindings: C-h f, C-h v

Multi-line bold

This works fine as the bold sentence does not include a newline.

*This is a sentence that should render completely in bold. It is broken across multiple lines (in Org source) because of auto-filling. But that should not break the bold rendering. But it does by default.*

If you do not see the above paragraph completely in bold, have below in your emacs config to fix it:

(with-eval-after-load 'org
  ;; Allow multiple line Org emphasis markup.
  ;; http://emacs.stackexchange.com/a/13828/115
  (setcar (nthcdr 4 org-emphasis-regexp-components) 20) ;Up to 20 lines, default is just 1
  ;; Below is needed to apply the modified `org-emphasis-regexp-components'
  ;; settings from above.
  (org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components))

Example block

Simple

This is an example

Menu in front matter

Menu Meta Data in TOML Front Matter

Overriding few menu properties

For this post, we should see just the menu weight and identifier properties get overridden.

You need to set unique menu identifiers, else you get a Hugo error like this:

ERROR 2017/07/18 12:32:14 Two or more menu items have the same name/identifier in Menu "main": "menu-meta-data-in-yaml-front-matter".
Rename or set an unique identifier.

Overriding menu properties completely

For this post, we see that no menu properties are inherited from the parent; only the menu properties set in his subtree are effective.

Auto assign weights

Post with menu 1

Post with menu 2

Post with menu 3

Post with menu 4

Post with menu 5

Menu Meta Data in YAML Front Matter

White space in menu entry

Testing the addition of menu meta data to the YAML front matter. Here the front matter format is set to YAML using the HUGO_FRONT_MATTER_FORMAT key in property drawer.

Here there is white space in menu entry keyword.

White space in menu name

Testing the addition of menu meta data to the YAML front matter. Here the front matter format is set to YAML using the HUGO_FRONT_MATTER_FORMAT key in property drawer.

Here there is white space in menu name property.

Custom front matter

Custom front matter in one line

Custom front matter in multiple lines

:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :baz zoo :EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :alpha 1 :EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :beta “two words” :EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :gamma 10From *(org) Property syntax*:

It is also possible to add to the values of inherited properties. The following results in the ‘genres’ property having the value “Classic Baroque” under the ‘Goldberg Variations’ subtree.

* CD collection
** Classic
:PROPERTIES:
:GENRES: Classic
:END:
*** Goldberg Variations
:PROPERTIES:
:Title:     Goldberg Variations
:Composer:  J.S. Bach
:Artist:    Glen Gould
:Publisher: Deutsche Grammophon
:NDisks:    1
:GENRES+:   Baroque
:END:

Post body

Summary Splitter

Here is the summary.

Here is text after the summary splitter.

Dealing with underscores

This underscore should appear escaped in Markdown: _

This underscore is in a verbatim block, so it should not be escaped: _

This underscore also shouldn’t be escaped as it’s in an emoji code: 🙌

And these ones should be eventually removed and underline the text (Requires CSS to do so.) – Org syntax.

Nested bold and italics

  • This is italics, and *this is bold too*, and back to plain italics.
  • This is bold, and /this is italics too/, and back to plain bold.

Single and Double quotes

The strings in these two columns should look the exact same.
Rendered ActualRendered Expection
1‘This’‘This’
2“This”“This”
3“It’s”“It’s”
4‘It’s’‘It’s’
5http://localhost:1111/http://localhost:1111/
6http://localhost:1111/”.http://localhost:1111/”.

Note: There is a rendering issue is Row 5 above. That seems to be a corner case, because notice that Row 6 looks fine just because there was a trailing period. Will live with this issue for now.

ndash `and` mdash

The strings in these two columns should look the exact same.
CharacterRendered ActualRendered Expection
1Hyphena - ba - b
2Ndasha – ba – b
3Mdasha — ba — b
4Ellipsisa … ba … b

Title sanitization

This post has italics, monospace and bold in the title. This is to test that those markup characters do not end up in the title front matter of the post because HTML does not allow markup in the <title> section.

So the title of this post should read as “ndash and mdash”.

Footnotes Test

Footnotes 1

This is some text[fn:1].

Note to self: You *cannot* name an Org heading ‘Footnotes’; that’s reserved by Org to store all the footnotes.

Footnotes 2

This is some text[fn:2].

Footnotes in a row

This is some text[fn:1][fn:2].

Multiple references of same footnote

This is some text[fn:1]. This is some text[fn:1]. This is some text[fn:1].

Multi-line footnote

This is some text[fn:3].

Tags

Basic tags

Testing tags set using Org tags in headings.

Prefer hyphens and allow spaces

Hyphens and spaces in tags

Hyphens and spaces in categories

The Org tags do not allow spaces. So the trick we use is replace double underscores with spaces.

So an Org tag @abc__def becomes Hugo category abc def.

Hyphens in Org tags

Prefer

Prefer Hyphen in Tags

Prefer Hyphen Categories

Don’t Prefer

Don’t Prefer Hyphen in Tags

Don’t Prefer Hyphen Categories

Spaces in Org Tags

Want Spaces

Spaces in tags

The Org tags do not allow spaces. So the trick we use is replace double underscores with spaces.

So an Org tag abc__def becomes Hugo tag abc def.

Spaces in categories

The Org tags do not allow spaces. So the trick we use is replace double underscores with spaces.

So an Org tag @abc__def becomes Hugo category abc def.

Don’t Want Spaces

No Spaces in tags

No Spaces in categories

Tags as Categories

Category A

Cat A post 1

This post is in category catA and tagged meow.

Cat A and cat B

This gets both categories catA and catB.

Links

Within the same post

Link to a heading CUSTOM_ID

Obviously, all the =CUSTOM_ID=’s set by the user in this file have to be unique.

Heading 1

Heading 2

Equations

Inline equations

  • Inline equations are wrapped between \( and \).
    • $ wrapping also works, but it is not preferred as it comes with restrictions like “there should be no whitespace between the equation and the $ delimiters”.

      So $ a=b $ will not work (it will look like: $ a=b $), but $a=b$ will work (it will look like: $a=b$).

      On the other hand, both \(a=b\) (it will look like: \(a=b\)) and \( a=b \) (it will look like: \( a=b \)) will work.

  • One-per-line equations are wrapped between \[ and \] or $$ delimiters.

For example, below in Org:

LaTeX formatted equation: \( E = -J \sum_{i=1}^N s_i s_{i+1} \)

will look like this in Hugo rendered HTML:

LaTeX formatted equation: \( E = -J ∑i=1^N s_i si+1 \)

(Don’t see this in Markdown, see what it looks after Hugo has processed it.)

Here’s another example, taken from (org) LaTeX fragments.

Below in Org:

If $a^2=b$ and \( b=2 \), then the solution must be either
$$ a=+\sqrt{2} $$ or \[ a=-\sqrt{2} \]

renders to:

If $a^2=b$ and \( b=2 \), then the solution must be either $$ a=+\sqrt{2} $$ or \[ a=-\sqrt{2} \]

(Note that the last two equations show up on their own lines.)

Lists

List following a list

You need to force end of list when you have something like an unordered list immediately following an ordered list.

The easiest and cleanest way to do that is adding a comment between those lists.Reference

That would be the implementing in the Org exporter backend. But in Org, two consecutive blank lines after a list ends the list.

In the below example, the foo* items would be in a different <ul> element than the bar* items.

Unordered list following an unordered list

  • foo1
  • foo2
  • bar1
  • bar2

Unordered list following an ordered list

  1. foo3
  2. foo4
  • bar3
  • bar4

Ordered list following an unordered list

  • foo5
  • foo6
  1. bar5
  2. bar6

Description list following an ordered list

  • foo1
  • foo2
bar1
description
bar2
description

Nested lists

  • foo1
  • foo2
    • bar1
    • bar2
      • baz1
      • baz2
        • zoo1
        • zoo2
          1. numbered1
          2. numbered2

Force ordered list numbering

  1. This will be 1.
  2. This will be 2.
  1. [@10] This will be 10!
  2. This will be 11.
  1. [@17] This will be 17!
  2. This will be 18.
  3. [@123] This will be 123!
  4. This will be 124.
  1. This will be 1 again.
  2. This will be 2.

Another example:

  1. This will be 1.
  2. [@3] This will be 3!
  3. [@7] This will be 7!
  4. [@100] This will be 100!

See (org) Plain lists to read more about plain lists in Org.

Checklist

This is a check-list:

Checklist 1 [60%]

Checklist showing progress in percentage.

  • [ ] Task 1
  • [X] Task 2
  • [X] Task 3
  • [ ] Task 4
  • [X] Task 5

Checklist 2 [2/5]

Checklist showing progress in ratio.

  • [ ] Task 1
  • [ ] Task 2
  • [X] Task 3
  • [ ] Task 4
  • [X] Task 5

Quotes

Consecutive quotes

Some text.

Quote 1. This is a long quote that auto-fills into multiple lines in Org, but it will be a single paragraph in the exported format.

Quote 2. This is a short quote.

Quote 3. This is a multi-paragraph quote.

This is the second paragraph.

Some other text.

Verse

One verse

To preserve the line breaks, indentation and blank lines in a region, but otherwise use normal formatting, you can use the verse construct, which can also be used to format poetry – Reference.

Consecutive verses

Verse for indentation

Some text before indented text.

Org removes indentation from the first line of the text block even in a Verse block. To get around that, the trick is to use the > character before the required indentation spaces only on the first non-blank line in a Verse block. Only that first > character is removed when translating to Markdown.

More examples

  • More indentation than in the above example:
  • Leading blank line followed by indented text:
  • Indented text followed by a trailing blank line:
  • Using tab characters for indentation; each tab character still constitutes for one &nbsp; in HTML.

Corner cases

Only the first > character immediately following spaces and empty lines will be removed:

If someone really wants to have > as the first non-blank character in the final output, they can use >> instead.. only for that first instance. The below Verse block is same as above except that the first > is retained in the final output.

Org TODO keywords

Post with a TODO heading

Heading 1

Some text.

Heading 2

Some text.

Post with a DONE heading

Heading 1

Some text.

Heading 2

Some text.

Blackfriday Options

Fractions

Fraction Table

/1/2/3/4/5/6/7/8/9/10/11/12/13
1/11/31/51/61/71/81/91/101/111/121/13
2/12/22/32/42/52/62/72/82/92/102/112/122/13
3/13/23/33/53/63/73/83/93/103/113/123/13
4/14/24/34/44/54/64/74/84/94/104/114/124/13
5/15/25/35/45/55/65/75/85/95/105/115/125/13
6/16/26/36/46/56/66/76/86/96/106/116/126/13
7/17/27/37/47/57/67/77/87/97/107/117/127/13
8/18/28/38/48/58/68/78/88/98/108/118/128/13
9/19/29/39/49/59/69/79/89/99/109/119/129/13
10/110/210/310/410/510/610/710/810/910/1010/1110/1210/13
11/111/211/311/411/511/611/711/811/911/1011/1111/1211/13
12/112/212/312/412/512/612/712/812/912/1012/1112/1212/13
13/113/213/313/413/513/613/713/813/913/1013/1113/1213/13

Blackfriday fractions false

A Blackfriday option can be disabled by setting the option value to nothing, nil or false.

These will not be rendered as fractions:

But these will always be rendered as fractions, even when the Blackfriday fractions option is set to false like in this post.

  • 1/2, 1/4, 3/4

Blackfriday fractions true

A Blackfriday option can be enabled by setting the option value to t or true.

All of these will be rendered as fractions:

Below are special as they will always be rendered as fractions, even when the Blackfriday fractions option is set to false (though this post has that option set to true – which is also the default value).

  • 1/2, 1/4, 3/4

Extensions

Hard line break wrong case (TOML)

The Blackfriday hardLineBreak extension is enabled here even where user used the wrong case in the extension name:
:EXPORT_HUGO_BLACKFRIDAY: :extensions hardlinebreak

instead of:

:EXPORT_HUGO_BLACKFRIDAY: :extensions hardLineBreak

The Blackfriday extension names are case-sensitive. So even though, the wrong case is used in the Org property drawer, ox-hugo ensures that the Markdown front matter is written in the correct case!

a b c

Above, a, b and c must appear on separate lines.

Hard line break (TOML)

a b c

Above, a, b and c must appear on separate lines.

Hard line break (YAML)

a b c

Above, a, b and c must appear on separate lines.

Enabling/Disabling extensions

:EXPORT_HUGO_BLACKFRIDAY+: :angledquotes t :hrefTargetBlank true :EXPORT_HUGO_BLACKFRIDAY+: :extensions tabsizeeight hardlinebreak :EXPORT_HUGO_BLACKFRIDAY+: :extensionsmask fencedcode strikethrough

Enabling/Disabling extensions example

Extensions enabled
tabSizeEight, hardLineBreak
Extensions disabled
fencedCode, strikethrough
Angled quotes enabled

“this”

Hard line break enabled

a b c

Plain ID Anchors disabled

Check the ID for all the headings in this post’s HTML. The ID’s will look something like:

<h2 id="plain-id-anchors-disabled:c94b2acd735ed6a466ef85be48bdea8c">Plain ID Anchors disabled</h2>

where :c94b2acd735ed6a466ef85be48bdea8c is the document ID.

Fractions disabled

2/5

Smart dashes disabled

a–b c–d

Fenced code disabled

Below, the code block language name will show up before the code.

(message "Hello")
Strikethrough disabled

not-canceled

Enabling/Disabling extensions (TOML)

Enabling/Disabling extensions (YAML)

Post Weight (Not the menu item weight)

Auto post-weight calculation

Post with auto weight calc 1 (EXPORT_HUGO_WEIGHT as subtree property)

Post with auto weight calc 2 (EXPORT_HUGO_WEIGHT as subtree property)

Post with auto weight calc 3 (EXPORT_HUGO_WEIGHT as subtree property)

Post with auto weight calc 4 (EXPORT_HUGO_WEIGHT as subtree property)

Post with auto weight calc 5 (EXPORT_HUGO_WEIGHT as subtree property)

Manually specified post weights

Post with weight 123

Post with weight 4567

Parsing date from CLOSED property

When an Org TODO item is switched to the DONE state, a CLOSED property is auto-inserted (default behavior).

If such a property is non-nil, the value (time-stamp) of that is used to set the date field in the exported front-matter.

Reference
(org) Special properties or C-h i g (org) Special properties

Date Formats

Just date

Date + Time

Date + Time (UTC)

Date + Time (behind UTC)

Date + Time (after UTC)

Preserve filling option

Filling is preserved

abc def ghi

Filling is not preserved

abc def ghi

Pre-Draft State

If a post has the TODO keyword, the draft front matter variable should be set to true.

Idea to to mark a post or blog idea as TODO that you yet have to start writing.

Draft state

If a post has the DRAFT keyword too, the draft front matter variable should be set to true.

Idea is to mark a post as DRAFT that you have already started writing, or are in the process at the moment, but it is not yet ready to be published

Lorem Ipsum

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque et quam metus. Etiam in iaculis mi, sit amet pretium magna. Donec ut dui mi. Maecenas pharetra sapien nunc, ut mollis enim aliquam quis. Nam at ultricies metus. Nulla tempor augue in vestibulum tristique. Phasellus volutpat pharetra metus quis suscipit. Morbi maximus sem dolor, id accumsan ipsum commodo non.

Fusce quam ligula, gravida ac dui venenatis, bibendum commodo lorem. Duis id elit turpis. Integer sed diam nibh. Donec tempus lacinia odio, a laoreet velit dictum id. Suspendisse efficitur euismod purus et porttitor. Aliquam sit amet tellus mauris. Mauris semper dignissim nibh, faucibus vestibulum purus varius quis. Suspendisse potenti. Cras at ligula sit amet nunc vehicula condimentum quis nec est. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec iaculis, neque sit amet maximus rhoncus, nisl tortor convallis ante, ut mollis purus augue ut justo. Praesent felis urna, volutpat sit amet posuere dictum, luctus quis nibh. Proin et tristique ipsum, in aliquam ante.

Aenean eget ex mauris. Cras ut tempor quam. Curabitur eget nulla laoreet, bibendum neque porta, tempus nulla. Ut tellus nisi, semper eu ligula pretium, aliquam accumsan dolor. Nunc fermentum cursus arcu eu suscipit. Nam dolor tellus, efficitur sed condimentum at, fringilla eget nisi. Nulla luctus metus felis. Suspendisse potenti. Cras lacinia orci nec dui sodales commodo. Donec tellus arcu, congue porta ultrices non, pretium et sapien. Proin mattis risus dignissim feugiat tristique. Donec nibh lorem, facilisis id posuere ut, varius ac urna. Etiam ultrices dignissim mauris, quis venenatis ex semper ut.

Curabitur id fermentum erat, rhoncus scelerisque est. Sed pulvinar, nulla sed sollicitudin scelerisque, ipsum erat sollicitudin dolor, ut commodo arcu justo vel libero. Curabitur turpis dolor, fermentum ut elit a, vehicula commodo nunc. Sed sit amet blandit nulla, quis sodales massa. Donec lobortis, urna vel volutpat ullamcorper, mauris est efficitur nulla, et suscipit velit dui at metus. Aliquam id sem sed metus tristique scelerisque nec vitae odio. Phasellus a pellentesque libero, vel convallis metus. Sed nec fringilla magna, non varius ex. Sed interdum eleifend ligula, quis porta enim ultrices a. Donec hendrerit diam ac elementum tincidunt.

Pellentesque eget nisl rhoncus, malesuada justo nec, suscipit quam. Nam sodales mauris eu bibendum suscipit. Vivamus sodales dui lorem, scelerisque pellentesque diam fermentum sed. Etiam fermentum nisl id nisl blandit, sit amet semper erat ultricies. Nulla tincidunt nulla metus, eu imperdiet lorem malesuada sagittis. Maecenas accumsan risus sed ante eleifend, vitae pretium leo porta. Suspendisse vitae eros vitae dui ornare condimentum id sit amet mauris. Etiam tincidunt consequat risus, eu posuere mi. Donec ut nunc eu massa porttitor suscipit nec nec neque. Suspendisse vitae tincidunt justo, sed molestie velit. Nullam pellentesque convallis ante, vel posuere libero blandit in.

Footnotes

[fn:3] This is a long footnote. It is so long that it gets auto-filled over multiple lines. But even then it should be handled fine.

[fn:2] Second footnote

[fn:1] First footnote