Skip to main content

Markdown and HTML reference

The Foliform editor uses Markdown as its writing syntax and also accepts supported HTML. The live preview turns the source into formatted book content. This page collects the syntax that is most useful when preparing a publication.

Headings and paragraphs​

Use one to six # characters for heading levels. Keep a space between the hashes and heading text:

# Chapter title

## Section heading

### Subsection heading

A regular paragraph starts after a blank line. Leave a blank line between
paragraphs when you want a new paragraph.

A level-one heading (#) is the chapter heading used by the chapter-break setting and by the current-chapter running header. A heading followed by a line of --- is a Markdown setext heading, not a page break:

Section heading
---

Common inline Markdown formatting is available:

Use **bold** for emphasis, *italic* for a title, and `inline code` for a
short literal value.

[Read more](https://example.com)

Use triple backticks for a code block:

```text
A monospaced block of text.
```

Straight apostrophes and quotation marks in prose are automatically converted to typographic curly quotes. Inline code and HTML tags are left unchanged by that conversion.

Lists and tables​

Use hyphens for a bulleted list and numbers for an ordered list:

- First item
- Second item

1. Prepare the manuscript
2. Review the preview
3. Export an edition

GitHub Flavored Markdown tables are supported:

| Edition | Use |
| --- | --- |
| PDF | Fixed-page print layout |
| EPUB | Reflowable ebook |
| HTML | Web edition |

Block quotes and attributions​

Prefix quoted lines with >:

> A book is a conversation between a writer and a reader.
> — A. Writer

When the final line begins with an em dash (—) or two hyphens (--), it is rendered as the quote's attribution rather than as part of the quoted text. The same attribution convention works with a normal blockquote and with the special pullquote and epigraph blocks below.

Pullquotes and epigraphs​

Use a fenced block for a prominent pullquote or an opening epigraph. Put the opening marker, content, and closing marker on separate lines:

::: pullquote
The story changes when we learn to look again.
— A. Writer
:::

For an epigraph, replace pullquote with epigraph:

::: epigraph
There is no greater agony than bearing an untold story inside you.
— Maya Angelou
:::

The body of either block supports Markdown, including multiple paragraphs. Fences cannot be nested. Use an ordinary > blockquote for inline quotations.

Alignment blocks​

Align a particular paragraph or other Markdown content without changing the book-wide style:

::: center
For everyone who kept reading.
:::

::: right
— The author
:::

Available alignment names are left, center, right, and justify. These blocks do not turn a trailing dash line into a quote attribution.

Columns and drop caps​

Set the book-wide text layout in the Style tab of the inspector. Choose Two columns to flow the manuscript in two columns, with chapter and section headings spanning both. Choose One column to return to a single text column.

Enable Enlarge opening letters (drop caps) to enlarge the first letter of the book and the opening paragraph after each level-one heading. Set Drop-cap height to two or three lines and choose a Drop-cap colour. Reset its colour to use the style's accent colour. These are style settings, so they apply to the preview and exported editions and can be saved in a template.

Font and size for a paragraph​

Choose a font in the editor's Paragraph font picker to apply it to the paragraph at the cursor or the paragraphs containing the selection. The picker changes only the font; the paragraph keeps the book's body font size. To set a custom size, add it to the font block in the source:

::: font "Poppins" 20px
This paragraph uses Poppins at 20 pixels instead of the book's body font size.
:::

::: font "Georgia" 14pt
This paragraph uses Georgia at 14 points.
:::

::: font "Georgia"
This older form changes only the font and keeps the book's body font size.
:::

Sizes accept px, pt, em, rem, or %; a unitless size is interpreted as pixels. The picker provides Google Fonts and system fonts. Google fonts are embedded in the project for preview and export, so save the project before applying one. System fonts such as Georgia can be applied before saving.

Page breaks and decorative dividers​

Use a line containing three hyphens to start a new page:

End of the previous page.

---

The next content starts on a new page.

Use four hyphens for a decorative divider:

The end of one scene.

----

The next scene.

For either marker, leave a blank line before and after it (unless it is at the start or end of the document). A --- immediately below heading text is instead interpreted as a setext heading underline. The editor also has Page break and Divider buttons that insert these markers for you.

In HTML source, <!-- page-break --> marks a hard page break.

Images and dimensions​

Add an image with Markdown and descriptive alternative text:

![A reader sitting beside a window](assets/reader.jpg)

Images imported through the Assets tab are copied into the project. Use the path to the project asset in the Markdown reference. You can set alt text, width, and height by selecting an image in the preview; dimensions are in pixels. To author dimensions directly, add them after a pipe in the alt text:

![A landscape photograph|600](assets/coast.jpg)
![A book cover|300x450](assets/cover.jpg)

Width-only sizing preserves the image's aspect ratio. An explicit width and height uses both supplied dimensions. The rendered book style still constrains images to the text area.

Supported HTML​

Raw HTML is useful when Markdown is not expressive enough. The app keeps a sanitized set of common content elements, including headings, paragraphs, links, images, lists, blockquotes, figures and captions, code, and tables. Unsupported elements and attributes are removed during normalization; HTML should be used for document content rather than scripts or embedded widgets.

To make a page break in HTML, use the <!-- page-break --> comment. An <hr> renders as a decorative divider.