Plain Text Enhanced
If you have already tried Ulysses, you might have noticed that text looks completely different than in a word processing program like Word or Pages. This is because we believe that authors should not be bothered with layout tasks. At the very least, layout tasks should never interfere with the writing process itself. Call it what you like—distraction-free, zen-like, purely semantic, mini minimal, neo-retro—the fact is that content creation is best kept separate from presentation, or else the latter will get in the way.
Ulysses uses so-called minimal markup to define, not format or style, text passages. From headings to lists to images and footnotes, you simply assign meaning to text passages by entering characters. Each character set, such as _underscores for emphasis_, is called a markup definition. Any collection of definitions is then called a markup language. There are many markup languages in the wild, and you may have encountered one or the other on message boards or blogging platforms: Textile, Setext, or the increasingly popular Markdown by John Gruber. By default, Ulysses uses its native markup language, dubbed Markdown XL.
Do You Speak Markdown XL?
If not, don’t worry—it is easy to learn. Markdown XL consists of 27 definitions, and it will only take a little time to get the hang of it. Soon, you will be able to type away without reaching for the mouse.
Until then, you can access all available definitions via the Markup navigation menu on Mac or the Ulysses' shortcut buttons atop the standard keyboard on iPad and iPhone.
On Mac, you can also use Ulysses’ smart markup bar. When you mark a word, it will appear at the bottom of the editor. The markup bar displays the most common definitions for the specific selection, applicable with a single click.
Furthermore, the complete list of available definitions is accessible via ⌘9
on your Mac. In the markup panel, navigate with the arrow keys and press Return to apply a definition. You can also start typing to filter the definitions displayed in the panel.
Markup Definitions
The definitions work in three different ways: They either mark up an entire paragraph, e.g., Heading, Comment Block, or mark up a word or a phrase, e.g., Strong, Marked, or add a so-called text object, e.g., Link or Footnote.
Let’s quickly run through all available definitions and their respective uses.
The Writing Phase
To mark up a title, start a line with one hash (#
) and use two hashes (##
) for a heading. For a subheading, type three or more hashes – the number of hashes corresponds to the subheading’s hierarchical level.
If you want to emphasize a word or phrase or mark it up as strong, you can do so with single underscores or double asterisks, respectively, or use the shortcuts ⌘B
and ⌘I
.
Dashed and numbered lists can be created by simply typing dashes or numbers at the beginning of a line. And they will automatically continue if Smart Lists are enabled.
If you want to create quotes, e.g., to provide a motto or to highlight famous quotes from even more famous people, simply start a line with a >
character:
> That’s one small step for a man, one giant leap for mankind.
> (Neil Armstrong)
And with the divider tag ----
you can divide text sections.
The Editing Phase
The next part of the markup is helpful for editing purposes: It lets you mark text, as you would with a classic highlighter, or indicate text for deletion because it’s somewhat redundant. To highlight text, enclose it with two colons like this ::mark::
. For deletions, use double pipes like this: ||delete||
. You can also add comments inline by enclosing the text with ++two plus signs++
, or let comments span entire paragraphs:
%% Just.
%% Like.
%% This.
While these definitions serve important purposes on screen, their true power will only become apparent during export. For example, when creating a PDF with the “Swiss Knife” style applied, comments and deletions will be absent from the output file since this style is meant to deliver a finalized PDF. However, when using the “Rough Cut” style, comments will be included since that style is meant for printed drafts.
Text Objects
Headings, emphasis and comments may be all that’s needed for general prose, but some texts require images or footnotes, and online publications may require the insertion of links.
In Ulysses, there are also so-called text objects that look like colored bubbles. They differ slightly from standard text markup, as you can double-click a text object and add additional content (a photo or a URL). Their creation, however, is just as simple:
- To add a link, type square brackets around a word or phrase (or use the
⌘K
shortcut). This will open a popover which lets you add a link to a webpage or a heading. If you type curly brackets around a phrase instead, you will create an annotation, which is basically a note added to that phrase. - You can also add images by typing only a few characters. Enter
(img)
, and you’ll be asked to provide either an image file or a URL. Of course, you can also just drag an image into your text, but where’s the fun in that? - To create a footnote in Ulysses, type
(fn)
in the editor. This will bring up a text field where you can enter your footnote.
The Geek’s Corner
Finally, there’s a markup to either add `sample code` or raw source code. The former is indispensable for writing technical documentation, and the latter is really advanced stuff with which you can add code that will be executed during export.
You can also insert whole paragraphs of both code variants. Here is a truly advanced Swift code example—released under GPL:
```swift
let myString = "You are beautiful."
print("Hello World. " + myString)
```
Note: If you indicate a programming language, the syntax of your code will be highlighted in the editor and relevant export formats.
For more information on Markdown XL, please check this detailed guide. A cheat sheet is also available here.