What is TML?

The special text format used in Foswiki topics to simplify topic text.

Foswiki lets you work using a WYSIWYG editor, which for most people is the easiest way to enter and edit text. many people prefer typing and editing in plain text (i.e. text without visible formatting), and Foswiki provides a simple formatting language called TML (Topic Markup Language) for this (you don't need to know HTML, though you can use it if you want). Topics are stored in TML, and differences are displayed using it, so it's worth knowing the basics even if you only use WYSIWYG. It's all laid out below.

%<color>% text must end with %ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with %ENDCOLOR%, e.g. write %RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%.

To display headings, type (from the beginning of a line) three dashes (-), from one to six plus signs (+), a space, and your heading text.

The quantity of plus signs is related to the size of the heading - the more plus signs you use, the smaller the heading.

You can insert a nested table of contents, generated from headings, by placing %TOC% wherever you like on a page (see System.Macros for more %TOC% options).

Use <verbatim> to enclose code excerpts, filenames, and other unformatted text:

<verbatim>
unformatted text!
and more of it!
</verbatim>

Formatting text

Full list of text formatting capabilities:

Formatting Command:

You write:

You get:

Paragraphs:
Blank lines will create new paragraphs.

1st paragraph
2nd paragraph

1st paragraph

2nd paragraph

Headings:
Three or more dashes at the beginning of a line, followed by plus signs and the heading text. One plus creates a top level heading, two pluses a second level heading, etc. The maximum heading depth is 6.

You can create a table of contents with the %TOC% macro. If you want to exclude a heading from the TOC, put !! after the ---+.

Empty headings are allowed, but won't appear in the table of contents.

See the <ho> tag below for how to adjust heading levels dynamically.

---++ Sushi
---+++ Maguro
---+++!! Not in TOC

Sushi

Maguro

Not in TOC

Bold Text:
Words get shown in bold by enclosing them in * asterisks.

*Bold*

Bold

Italic Text:
Words get shown in italic by enclosing them in _ underscores.

_Italic_

Italic

Bold Italic:
Words get shown in bold italic by enclosing them in __ double-underscores.

__Bold italic__

Bold italic

Fixed Font:
Words get shown in fixed font by enclosing them in = equal signs.

Note that while type characters A, a, I and i must be entered exactly as specified, numbers can be any single digit 0-9. It is recommended for future compatibility that only the number 1 be used for numbered type lists.

Anchors:
You can define a reference inside a topic (called an anchor name) and link to that. To define an anchor write #AnchorName at the beginning of a line. The anchor name must be a WikiWord of no more than 32 characters. To link to an anchor name use the [[MyTopic#MyAnchor]] syntax. You can omit the topic name if you want to link within the same topic.

Forced Links:
You can create a forced internal link by enclosing words in double square brackets.
Text within the brackets may contain optional spaces; the topic name is formed by capitalizing the initial letter and by removing the spaces; for example, [[wiki word]] links to topic WikiWord. You can also refer to a different web and use anchors.
To "escape" double square brackets that would otherwise make a link, prefix the leading left square bracket with an exclamation point.

Renamed Links:
You can create a link where you specify the link text and the URL separately using nested square brackets [[reference][text]]. Internal link references (e.g. WikiWord) and URLs (e.g. http://foswiki.org/) are both supported.
The rules described under Forced Links apply for internal link references.
Anchor names can be added as well, to create a link to a specific place in a topic.

Disable Automatic Linking:
You can disable automatic linking of WikiWords by surrounding text with <noautolink> and </noautolink> tags. You can also turn off WikiWord auto-linking with the NOAUTOLINK preference setting.

The noautolink feature only applies to WikiWords. It does not stop linking of URLs, or email addresses.

<noautolink>
RedHat & SuSE
</noautolink>

RedHat & SuSE

Mailto Links:
E-mail addresses are linked automatically. To create e-mail links that have more descriptive link text, specify subject lines or message bodies, or omit the e-mail address, you can write [[mailto:user@domain][descriptive text]].

automatic linking of email addresses is not blocked by <noautolink>, Escape with a ! to prevent auto linking.

Escaping Macros
Prevent a Macro from being expanded by prepending it with an exclamation point.

To expand the macro, but escape any wikiword it expands into, use the <nop> tag.

&#37;TOPIC%
<nop>%TOPIC%

%TOPIC%

EditingShorthand

Controlling how content is rendered:
There are 3 ways to control how your topic content is rendered. This is done with three HTML or
pseudo-HTML tags: <literal>, <verbatim> and <pre> They
control whether or not:

Wiki markup (TML) is rendered

Macros (ex: %TOPIC%) are expanded

HTML is rendered

White space preserved

Auto linking of WikiWords and Email addresses occurs

These are explained in more details in the next sections, but are summarized to the right:

TML

HTML

Macros

WhiteSpace

Auto LinkWikiWord

Auto LinkEmail

<verbatim>

<literal>

<pre>

<noautolink>

Literal content:
Foswiki generates HTML code from TML shorthand.
Experts surround anything that must be output literally in the HTML code, without the application of
shorthand rules, with <literal>..</literal> tags.
Any HTML
within literal tags must be well formed i.e. all tags must be properly closed before
the end of the literal block.
Macros are expanded within literal blocks.

Protected content:Experts protect text from mangling by WYSIWYG editors using
<sticky>..</sticky> tags. Sticky tags don't have any effect on normal
topic display; they are only relevant when content has to be
protected from a WYSIWYG editor (usually because it isn't well-formed HTML, or because it
is HTML that WYSIWYG would normally filter out or modify). Protected
content appears as plain text in the WYSIWYG editor.
Any HTML within sticky tags must be well formed
i.e. all tags must be properly closed before
the end of the sticky block.
Macros are expanded within sticky blocks.

<sticky>
<div>
This div
%RED%is%ENDCOLOR%
required
</div>
</sticky>

This div
is
required

Adjust heading levels:
You can adjust heading levels for headings generated using ---+ markup and also HTML <h> tags using the <ho> tag.The %INCLUDE and %SEARCH macros also have a headingoffset parameter to do this for you in included content.Heading levels are limited to the range 1..6 after any offset is applied.

offset is 0

H2 becomes H3

offset was 1, so offset is now 0

Using HTML

You can use most HTML tags in topics without a problem. This is useful where you want to
add some content that is formatted in a way that is not supported using wiki syntax, for example,
you can write <strike>deleted text</strike> to get deleted text.

There are a few usability and technical considerations to keep in mind:

On collaboration pages, it's better not to use HTML, but to use wiki syntax instead - this keeps the text uncluttered and easy to edit using the plaintext editor.

Many macro definitions are built-in, and others (preference settings) are predefined for your convenience. You can also define your own
preference settings at the entire site, individual web, or individual topic level. For more information, see Macros Plugins can extend the functionality of Foswiki into many other areas, and often implement new macros. There are a huge number of plugins available from the foswiki site. Check on current Plugin status and settings for this site in System.InstalledPlugins.

Common Editing Errors

Foswiki formatting rules are fairly simple to use and quick to type. However, there are some things to watch out for:

Q: Text enclosed in angle brackets like <filename> is not displayed. How can I show it as it is?

A: The '<' and '>' characters have a special meaning in HTML, they define HTML tags. You need to escape them, so write '&lt;' instead of '<', and '&gt;' instead of '>'. Example: Type 'prog &lt;filename&gt;' to get 'prog <filename>'.