Export

Vertical layout, hung punctuation and ruby exist only on screen. :export writes them into a file you can open, print or hand to a typesetter.

:export html               chapter.md → chapter.html
:export typst              chapter.md → chapter.typ
:export html out/ch1.html  a name of your own
:export! html              write over a file that is already there
:export csv                the table under the cursor, comma separated
:export tsv                the table under the cursor, tab separated

With no path, the export takes the file's name and changes the extension. An existing file is not overwritten unless you add !, and a file open in the editor is never written over. A new buffer needs a path.

HTML

:export html writes one self-contained page. Vertical text becomes writing-mode: vertical-rl, hung punctuation becomes hanging-punctuation, and ruby becomes <ruby>.

The page prints as it is. It carries print styles for the paper size and margins, starts each chapter on a new page, and keeps a heading from being left alone at the foot of a page. For vertical text the type size is worked out from the column: the paper's height divided by how many characters go in a column. Set both before you print:

[editor]
zong_length = 30   # characters per column; 0 follows the window

[export]
page = "A5"        # A4, A5, A6, B5, B6, letter, 16k, 32k, d32k, or "130x184" in mm

zong_length left at 0 means however tall your window happens to be. See Vertical layout.

There are no page numbers or running heads. Browsers do not support the CSS that would place them, so use the print dialog's header and footer.

Typst

:export typst writes Typst source, always horizontal, because Typst has no vertical layout. The file says so at the top. Ruby becomes #ruby(base, reading), with a definition at the top of the file that you can change.

What carries over

Both formats carry:

  • headings and paragraphs;
  • **bold**, *italic* and the other inline marks, as real formatting, not as asterisks;
  • lists, nested, numbered or not;
  • block quotes;
  • footnotes, numbered in the order they appear: a list at the end of the HTML page, #footnote[…] at the mark in Typst;
  • pipe tables, with their column alignment;
  • rules (---, * * *);
  • ruby.

Anything else comes out as text. Annotations to yourself, written %%like this%% or as HTML comments, are left out.

Language and line breaks

The page's language comes from the text. A file with more Latin words than Chinese characters is set as English: lang="en", a Latin serif, and paragraphs spaced apart instead of indented. Kana make it Japanese. Otherwise it is set as Chinese, with a first-line indent.

A line break inside a paragraph is kept between lines of Chinese, where it is usually meant. Between two lines of Latin text it becomes a space, as CommonMark reads it, so a hard-wrapped English paragraph comes out as one paragraph.

Tables as CSV or TSV

:export csv and :export tsv write only the table under the cursor, not the whole document, and leave the buffer as it is. See Tables.

From the command line

ye --export does the same without opening the editor, and writes over a file that is already there, as a compiler would:

ye --export html ch1.md            ch1.md → ch1.html, beside it
ye --export typst ch1.md           ch1.md → ch1.typ
ye --export pdf book.typ           book.typ → book.pdf
ye --export pdf ch1.md             Markdown → Typst → PDF
ye --export tsv parts.csv          a table file in the other format
ye --export html --out out/a.html ch1.md

The path written is printed, one a line, so a script can pick it up; several files may be named at once. pdf needs the Typst compiler on the PATH (brew install typst): a .typ file is compiled as it is, with #include and images resolved from its own folder; a Markdown file goes through the Typst export above first. Your config's paper, layout and ruby settings apply, as they do in the editor.

Seeing it before you export

:view-preview shows the typeset result in a browser while you write: a live Typst preview, or an HTML export of a Markdown file. See The page.