How to customize Ulysses

HTML Styles

Export styles let you customize the look of your exported Ulysses documents. Ulysses comes with a number of built-in styles for each export format, but as a Mac user, you can also create your own. You can style HTML documents just using regular CSS files.

Table of contents (use the links to jump directly to the respective article section):

Using CSS in Ulysses

CSS (Cascading Style Sheet) files allow you to style web pages using simple declarations. There is a myriad of web resources on CSS. For a general introduction, the CSS tutorial from W3Schools explains the basics and all important properties. It also includes a reference. For some interesting tricks and hacks, have a look at the Snippets section of CSS-Tricks.

For editing CSS, you can use just about any text editor, such as TextMate, Sublime, Chocolat or BBEdit/TextWrangler.

In general, we recommend starting with one of Ulysses’ built-in styles. Open “Ulysses” › “Preferences” and switch to the Styles tab. Right-click on a style and select “Duplicate” to create a copy. Right-click the copy again and select “Edit” to view and modify it in your favorite text editor. You can then use the new style in Quick Export or during Export Preview.

Below, you can find some CSS code snippets for things you might or might not want to tweak when exporting to HTML.

How do I…

…indent all paragraphs except the first?

Replace the settings for paragraph (i.e., all “p” selectors) with the following code snippet:

p {
  margin: 0;
}

p + p {
  text-indent: 1.5em;
}

See also: text-indent margin

…change the way lists look?

Just add a list-style-type property, as follows:

ul {
  list-style-type: square;
}

ol {
  list-style-type: upper-roman;
}

The first line changes the style of unordered (i.e., itemized) lists from circles (the default) to squares. The second line changes the style of ordered lists from decimal numbering to upper-case Roman numbering.

See also: list-style-type

…change the font size and spacing between the headings?

Open the CSS files and look out for the properties font size and margin-top/margin-bottom in the h1-h6 selectors. For instance, the following sets the font-size to 1.5 em and the margin at the top and bottom to 0.5 em for level 2 headings:

h2 {
  font-size: 1.5em;
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

See also: font-size, margin-top, margin-bottom

…justify the text of paragraphs?

Add the following line to your p selector:

p {
  text-align: justify;
}

See also: text-align

Tag Reference for HTML Export

The following table gives a mapping from Ulysses markup definitions to HTML tags.
Ellipses (“…”) are replaced with the text inside the tags.

Structure

Markup Definition HTML Output CSS Selector
Heading 1 <h1>…</h1> h1
Heading 2 <h2>…</h2> h2
Heading 3 <h3>…</h3> h3
Heading 4 <h4>…</h4> h4
Heading 5 <h5>…</h5> h5
Heading 6 <h6>…</h6> h6

Paragraph

Markup Definition HTML Output CSS Selectors
Comment (Deleted)  
Divider <hr /> hr
Code Block <pre><code>…</code></pre> pre, code
Raw Source (Unchanged)  

Grouping

Markup Definition HTML Output CSS Selectors
Ordered List <ol><li>…</li></ol> ol, li
Unordered List <ul><li>…</li></ul> ul, li
Block Quote <blockquote>…</blockquote> blockquote

Text

Markup Definition HTML Output CSS Selector
Strong <strong>…</strong> strong
Emphasis <em>…</em> em
Marked (Unchanged)  
Delete (Deleted)  
Inline Comment (Deleted)  
Inline Code <code>…</code> code
Inline Raw Source (Unchanged)  

Attributed Text

Markup Definition HTML Output CSS Selector
Link <a href="URL" title="Title">…</a> a
Annotation (Deleted)  

Text Objects

Markup Definition HTML Output CSS Selectors
Image <img src="URL" title="Title" alt="Desc."/> img
Video <video src="URL" title="Title"/> video
Footnote Link: <sup><a class="footnote">Index</a>a/sup>
Reference: <ol id="footnotes"><li>…</li></ol>
sup, a.footnote
ol#footnotes

Syntax Highlight

If a programming language is set for a code block, the <code> element will have two additional CSS classes:

  • code-highlighted: Specifies that a code block has a syntax highlight in general.
  • code-LANGUAGE: Specifies that a code block is highlighted for a specific language (e.g. “code-swift”).

Inside the <code> element, Ulysses will place highlighted text inside <span> elements. All highlighted elements will have two CSS classes:

  • syntax-all: A class that is applied to all highlighted elements. It allows for styling highlighted elements in general (e.g., to make all highlighted elements bold).
  • syntax-TYPE: A class that is specific to the type of highlight.

Here is an overview of the CSS classes used to highlight code syntax. You can also download an example document that contains all available syntax classes.

Syntax Class Meaning
syntax-all This class is applied to highlighted elements in general.
syntax-bold This class is applied to bold formatting (Markdown only).
syntax-changed This class is applied to content marked as modified (e.g., Diff syntax).
syntax-comment This class is applied to comments in the code.
syntax-constant This class is applied to constants.
syntax-deleted This class is applied to content marked as deleted (e.g., Diff syntax).
syntax-entity This class is applied to entities and symbols (e.g., type names, function names, attributes).
syntax-error This class is applied to invalid syntax.
syntax-escape This class is applied to escaped characters in strings.
syntax-heading This class is applied to headings (Markdown only).
syntax-inserted This class is applied to content marked as inserted (e.g., Diff syntax).
syntax-italic This class is applied to italic formatting (Markdown only).
syntax-keyword This class is applied to language-specific keywords.
syntax-link This class is applied to hyperlinks (Markdown only).
syntax-list This class is applied to lists (Markdown only).
syntax-parameter This class is applied to function parameters (only some languages).
syntax-string This class is applied to text strings.
syntax-tag This class is applied to tags (only HTML, XML).
syntax-variable This class is applied to variables.

This article was last updated on February 26, 2019.