Nette Documentation Preview

syntax
Syntax
******

.[perex]
Texy was created to allow inexperienced users to easily edit website content. Therefore, its syntax is intuitive and clear.


Cheat Sheet
===========

| [Text Formatting |#Text formatting] | Syntax
|-----------------------------------------------
| [Bold text |#Text formatting] | .[text-code] ''**bold text**''
| [Italics |#Text formatting] | ''*italics*'' or ''//italics//''
| [Inline code |#Text formatting] | ''`code`''
| [#Links] | ''"text":URL'' or ''[text](URL)''
| [#Images] | ''[* image.jpg *]''
| [#Disabling Formatting] | ''special characters''
|-----------------------------------------------
| Elements
|-----------------------------------------------
| [#Underlined Headings] | H1 <br> ===
| [#Surrounded Headings] | ''### H1'' <br> ## H2
| [#Bulleted Lists] | ''- first'' <br> ''- second''
| [#Numbered Lists] | ''1) first'' <br> ''2) second''
| [#Definition Lists] | term: <br> &nbsp; ''- first''
| [#Blockquotes] | ''> blockquote''
| [#Horizontal Rules] | ''---''
| [#Tables] | ''\| cell \| cell \|''
| [Code Blocks |#Preformatted text] | ''/--'' <br> ... <br> ''\--''
|-----------------------------------------------
| Modifiers .[#toc-modifiers]
|--------------------------------------------------------
| title | ''.(title)''
| CSS class | ''.[btn btn-primary]''
| ID | ''.[#id]''
| CSS style or HTML attribute | ''.{color: blue}'' or ''.{target: _blank}''
| horizontal alignment | ''.< .> .<> .=''
| vertical alignment | ''.^ .- ._''


Paragraphs of text
==================

Texy considers a paragraph to be one or more consecutive lines of text. As soon as you leave **one blank line** between them, Texy automatically understands that it should start a new paragraph.

This means that Texy will join lines that belong together. You don't have to worry about a sentence breaking in the middle when you shrink the editor window.

```texy
This is the first paragraph. It can easily have multiple lines,
and Texy will join them into one continuous block of text.

Only here, after a blank line, does a completely new, second paragraph begin.
```

However, line merging can be disabled in the configuration, after which each line is considered a separate paragraph:

/--php
$texy->mergeLines = false;
\--


Line Breaks
-----------

But what if you just need to break a line without creating a whole new paragraph? This is typically useful for poems, song lyrics, or when writing an address. **Start the new line with a single space**.

```texy
Karel Novák,
 U Tiché pošty 5
 150 00 Praha 5
```


Styling Paragraphs
------------------

Sometimes you need to distinguish an entire paragraph—for example, to make it a lead paragraph of an article, center it, or assign it a specific style for a border. This is where [#modifiers] come in, which you can place either on a separate line **before** the paragraph or at the end of its last line.

```texy
.[perex]
This is the lead paragraph of the article, which, thanks to the modifier,
will get the CSS class "perex" and can thus look different from the rest of the text.

This paragraph, in turn, has a unique ID assigned. .[#section-intro]

And this paragraph will be centered. .<>
```


Text formatting
===============

| syntax | output | Syntax ID
|-----------------------------------------------------------------------------
| .[text-code] ''**bold text**'' | **bold text** | `phrase/strong`
| ''*italics* or //italics//'' | *italics* | `phrase/em-alt`, `phrase/em`
| ''***bold italics***'' | ***bold italics*** | `phrase/strong+em`
| ''`inline code`'' | `inline code` | `phrase/code`
| ''x^2 … O_2'' | x^2 … O_2 | `phrase/sup-alt`, `phrase/sub-alt`
| ''x^^2^^ … O__2__'' | x^2 … O_2 | `phrase/sup`🔸, `phrase/sup`🔸
| ''++inserted text++'' | <ins>inserted text</ins> | `phrase/ins`🔸
| ''--deleted text--'' | <del>deleted text</del> | `phrase/del`🔸
| ''>>quoted text<<'' | >>quoted text<< | `phrase/quote`
| ''"blue text .{color: blue}"'' | "blue text .{color: blue}" | `phrase/span`
| ''~blue text .{color: blue}~'' | ~blue text .{color: blue}~ | `phrase/span-alt`
| ''"et al."((and others))'' | "et al."((and others)) | `phrase/acronym`
| ''NBA((National Basketball Association))'' | NBA((National Basketball Association)) | `phrase/acronym-alt`

Syntaxes marked with 🔸 are not enabled by default and you must turn them on. For example:

/--php
$texy->allowed['phrase/ins'] = true;
\--

For simple numerical indices, you can use the shorthand syntax `x^2` and `O_2`, but for more complex cases, the double-character variant is more robust, or you can use the HTML tags `<sup>` and `<sub>`.

There **must not be spaces** inside the syntax characters:

```texy
Wrong: ** this will not be bold **
Correct: **this will be bold**
```


Styling Text
------------

This is one of Texy's most powerful features. You can "attach" [#modifiers] to any formatted text to add a CSS class, ID, or direct style. The modifier is always inserted **just before the closing tag**:

```texy
This text is **strong and green .{color:green}** like the Hulk.

Warning: --This feature is deprecated .[deprecated]--
```

If you want to apply a modifier to text without making it bold or italic, use quotation marks `"` or tildes `~` as the enclosing characters. Texy will then create a universal HTML `<span>` tag with your styles:

```texy
Regular text, but "this piece is red .{color: red}", and the rest is not.
```


Formatting and Links in One
---------------------------

You can turn formatted text into a link - simply add a colon and the URL:

```texy
Visit our **new gallery**:https://example.com/gallery
```

This works for bold text, italics, and inline code.


Writing Special Characters
--------------------------

What if you want to write `**text**` literally, including the asterisks, without it becoming bold text? You have three options:

- a backslash is the quickest way to escape a single special character `\**text\**`
- double apostrophes [disable Texy|#Disabling Formatting] for the entire phrase `''**text**''`
- you can use standard HTML entities `&ast;&ast;text&ast;&ast;`


Links
=====

Links are the soul of the internet. In Texy, their creation is designed to be as natural and clear as possible directly within the text.

The basic syntax for a link is simple and highly readable. Enclose the linked text in `"` (or other characters for [#text formatting]) and immediately append a colon and the target URL:

```texy
Visit the official website of the "Nette Framework":https://nette.org.

If you have a question, "email us":info@example.com.
```

The advantage is that Texy is intelligent and automatically recognizes where the URL ends. So you don't have to worry about it accidentally including a period or comma at the end of a sentence in the link. However, if the URL contains non-standard characters, you can enclose it in square brackets to precisely define the start and end of the address:

```texy
"Read our article":[https://example.com/news?id=1&category=articles]
```

Syntax ID `phrase/span`, `phrase/span-alt` | [PhraseModule |configuration#phrasemodule] and [LinkModule |configuration#linkmodule]


Alternative Link Syntax
-----------------------

Are you used to the format used by Markdown or Wikipedia? Texy understands them too. You can choose the style that suits you best.

```texy
[Link text](https://address.com)         // Style known from Markdown
[Link text | https://address.com]        // Style known from MediaWiki
text:[target URL or reference]         // Single-word link
```

Syntax ID `phrase/markdown`, `phrase/wikilink`, `phrase/quicklink` | [PhraseModule |configuration#phrasemodule]


Organizing Links with References
--------------------------------

When writing longer texts, it can be inconvenient to insert long URLs directly into paragraphs—it can harm readability and clarity. For these cases, Texy has **reference links**.

In the text, you use only a short, easily memorable reference name. And at the end of the document, you define all these references clearly.

```texy
We recommend studying the "official documentation":[doc] and going through the "syntax examples":[syntax].
The entire project is built on [Nette].

​[doc]: https://texy.nette.org/en/ "Texy Documentation!"
​[syntax]: https://texy.nette.org/en/syntax
​[Nette]: https://nette.org
```

Syntax ID `link/reference`, `link/definition` | [LinkModule |configuration#linkmodule]


Automatic Links
---------------

Whenever you write a URL (starting with `http://`, `https://`, `www.`) or an email address in the text, Texy will automatically recognize it and convert it into a clickable link. You don't have to do anything at all.

```texy
You can find our website at www.example.com.
For support, write to support@example.com.
```

Syntax ID `link/url`, `link/email` | [LinkModule |configuration#linkmodule]


Styling Links
-------------

With [#modifiers], you can easily add other properties to links:

```texy
"External link .[external](Opens in a new window){target:_blank}":https://google.com
```

The special class `nofollow` adds the `rel="nofollow"` attribute to the link, signaling to search engines not to follow this link. This is useful, for example, for links in comments.

```texy
"A link I don't trust .[nofollow]":https://example.com
```


Automatic Email Masking
-----------------------

Texy automatically obfuscates (masks) email addresses from spambots:

```html
<a href="mailto:info&#64;example.com">info&#64;<!-- -->example.com</a>
```

You can disable this behavior:

/--php
$texy->obfuscateEmail = false;
\--


Direct HTML
===========

Texy is designed so that you don't have to write HTML at all. But what if you encounter a situation where inserting a direct HTML tag is simpler, or you need to create something that Texy's syntax doesn't cover? No problem. Texy gives you complete freedom to combine both worlds.

You can seamlessly switch between Texy syntax and pure HTML whenever it suits you.

```texy
This is **bold text** in Texy and this is <strong>bold text</strong> using HTML.

<div class="info-box">
	<h3>You can also insert entire complex blocks</h3>
</div>
```

You might think that inserting direct HTML can be risky. What if you make a mistake or someone inserts malicious code? Texy thinks about this and acts as an intelligent filter and helper:

- **Corrects errors:** Texy ensures that the resulting code is always valid and won't break your page.
- **Monitors security:** By default, Texy has a list of allowed tags and their attributes. If an unknown tag or a potentially dangerous attribute (e.g., `onclick`) appears in the code, Texy will safely remove it. This protects your website from XSS attacks.
- **Ensures a consistent output:** No matter what HTML code you insert, Texy will make sure the result is always well-formed.

You can customize this protective shield. Using the `$texy->allowedTags` configuration, you can precisely define which HTML tags and attributes are allowed on your website and which are not.

This gives you full control over what HTML, for example, editors can use, ensuring the consistency and security of the entire site. For more information, see the "configuration":configuration#allowedtags section.

Syntax ID `html/tag`, `html/comment` | [HtmlModule |configuration#htmlmodule]


Headings
========

Texy offers you two elegant and intuitive ways to create headings: **underlined** and **surrounded**.


Underlined Headings
-------------------

This style is reminiscent of a typewriter. Simply place an underline (at least 3 characters) below the heading. The importance of the title is determined by the underlining character. From highest to lowest, these are: `#` `*` `=` `-`

```texy
This is the most important heading of the entire document
​################################################

And this is a second-level heading
​******************************
```

Syntax ID `heading/underlined` | [HeadingModule |configuration#headingmodule]


Surrounded Headings
-------------------

This method is very quick to write. You "wrap" the heading text between `#` or `=` characters. Here, the level of the heading is determined by the **number** of characters used (2 to 7). The more characters, the more important the heading.

```texy
=== Most important heading (H1)

== Less important (H2)

# Even less important (H3)
```

You can use borders on both sides (for better visual clarity) or just at the beginning. Texy can handle both variants.

Syntax ID `heading/surrounded` | [HeadingModule |configuration#headingmodule]


Styling Headings
----------------

You can add [#modifiers] to any heading. This allows you to assign it a specific CSS class for styling or a unique ID that you can then link to.

```texy
Heading with red color .[red-heading]
​==========================================

### Heading with a unique ID for linking .[#contact]
```


Automatic Anchors for Easy Navigation
-------------------------------------

Don't want to come up with an ID for every heading manually? Texy can do it for you! In the configuration, you can enable automatic ID generation for all headings. This is incredibly useful for directly linking to specific sections.

```php
// Enable automatic ID generation
$texy->headingModule->generateID = true;

// Optionally set a prefix for generated IDs (e.g., "toc-")
$texy->headingModule->idPrefix = 'toc-';
```

With this setting, the heading `## My Chapter` will automatically get an ID like `id="toc-my-chapter"` without you having to write anything extra.


Lists
=====


Bulleted Lists
--------------

For a quick list of items where the order doesn't matter, a bulleted list is perfect. Just start each line with a hyphen `-`, an asterisk `*`, or a plus sign `+`, followed by a space. All three characters work the same, so you can choose the one you prefer.

```texy
What needs to be bought:

- Milk
- Bread
* Eggs
+ Butter
```

ID syntaxe `list` | [ListModule |configuration#listmodule]


Numbered Lists
--------------

Texy supports various numbering styles:

| `1.` | Arabic numerals (with a period)
| `1)` | Arabic numerals (with a parenthesis)
| `a)` | Lowercase letters of the alphabet
| `A)` | Uppercase letters of the alphabet
| `I)` | Roman numerals

The beauty of this is that you don't have to worry about correct numbering at all. Even if you number all the lines with a one, Texy will automatically renumber them for you. This is a huge advantage when you later need to add, delete, or move an item.


Nested and Combined Lists
-------------------------

The power of lists truly shines when you combine and nest them. This allows you to create clear, multi-level structures. You create nesting simply by indenting the line by at least **two spaces** (or one tab).

```texy
1) First chapter
	a) Subchapter 1.1
		- First point
		- Second point
	b) Subchapter 1.2
2) Second chapter
	- Main idea
	- Another note
```


Definition Lists
----------------

For cases where you need to create a glossary of terms or clearly explain several terms, a definition list is ideal.

On the first line, write the term you want to define and end it with a colon. On the following lines, write its definition, indenting each line and starting it with a hyphen `-`.

```texy
HTML:
  - Markup language for creating web pages.
  - Abbreviation for HyperText Markup Language.

CSS:
  - Language for describing the presentation (styling) of pages.
  - Abbreviation for Cascading Style Sheets.
```

Syntax ID `list/definition` | [ListModule |configuration#listmodule]


Styling Lists
-------------

Just like with other elements in Texy, you can easily add [#modifiers] to lists to change their appearance.

**Entire list:** Write the modifier on the line **before** the start of the list.

```texy
.[colored-list]
- First item
- Second item
```

**Individual item:** Add the modifier to the **end** of the line of the given item or definition term.

```texy
- Regular item
- This item is important! .{font-weight: bold}
- Another regular item
```


Images
======

The basic syntax is very simple. Just enclose the path to the image (whether a local file or a URL) in square brackets with an asterisk:

```texy
[* image.jpg *]
[* https://domain.com/logo.png *]
```

Often you will want the text to wrap around the image. For this, there are simple alignment tags that are inserted before the closing bracket:

```texy
[* image.jpg <] This text will flow smoothly around the image from the right side.

[* image.jpg >] In this case, the text will instead flow around the image from the left side.

[* large-image.jpg <>]
This text will continue below the centered image.
```

A properly inserted image should also have "alternative text," which is displayed if the image fails to load. Using a [modifier|#modifiers], you can add this text and other elements for styling.

```texy
[* landscape-photo.jpg .(A beautiful mountain landscape at sunset)[main-photo] *]
```


Image Dimensions
----------------

Texy can automatically detect the dimensions of local images (if the `$texy->imageModule->fileRoot` path is set) and add them to the HTML, which speeds up page loading. However, if you want to set the dimensions manually, you have several options:

| `[* img.jpg 150x100 *]` | Exact width 150px and height 100px
| `[* img.jpg 150 *]` | Width will be 150px, height will be automatically calculated while maintaining the aspect ratio
| `[* img.jpg ?x100 *]` | Height will be 100px, width will be automatically calculated


Clickable Images
----------------

Do you want a large image to be displayed when a small thumbnail is clicked? Or for an image to link to another page? Just add a colon and the target URL after the image syntax.

```texy
[* thumbnail.jpg *]:large.jpg
[* nette-logo.png *]:https://nette.org
```

For galleries, there is also a handy shortcut `::`. This automatically creates a link to the same file located at `$texy->imageModule->linkedRoot`.


Visible Caption Below the Image
-------------------------------

If you want to add a visible caption under an image (e.g., the author's name or a description of the scene), write three asterisks `***` and the caption text after it. Texy will automatically create a semantically correct HTML structure `<figure>` and `<figcaption>` from this.

```texy
[* photo.jpg <> *] *** This is a caption. It can also contain **other formatting**.
```


Organizing Images with References
---------------------------------

If you use one image multiple times in the text or want to have all image definitions neatly in one place, you can use references. In the text, you use only a placeholder name, and at the end of the file, you define what this name means.

```texy
In our logo [* company-logo *] you can see the symbol of our vision.

​[* company-logo *]: /images/logo.svg 200x50 .(Our company logo)
```

This approach significantly clarifies the main text and simplifies image management.

Syntax ID `image/definition` | [ImageModule |configuration#imagemodule]


Preformatted text
=================

In Texy, you can easily insert blocks of code or any preformatted text where you want to ensure it is displayed exactly as you write it—including all spaces and line breaks. This is ideal for examples of source code, logs, or ASCII art.

To insert such a block, use the `/--` and `\--` delimiters:

```texy
/--
function hello() {
	echo 'Hello World';
}
\--
```

To make your code even more readable, you can tell Texy which programming language it is written in and create a handler that, for example, syntax highlights it, see the "example":custom-handlers#syntax-highlighting. Just add the keyword `code` and the language name after the initial `/--` tag:

```texy
/--code javascript
console.log('JavaScript');
\--

/--code html
<div>This is HTML code</div>
\--
```


Content Blocks (divs)
=====================

Texy allows you to create generic `<div>` blocks, thanks to which you can easily group content into logical units and then style them.

You create a block using the `/--div` and `\--` tags. In addition, you can easily add [#modifiers]:

```texy
/--div .[important]
## Important Notice

This text will be enclosed in a `<div class="important">` block.
This allows you to style it with CSS to make it stand out.
\--
```

The power of `<div>` blocks also lies in the ability to nest them. This allows you to create even more complex structures directly in Texy without having to write HTML manually.

```texy
/--div .[outer]
	This is the outer block.

	/--div .[inner]
		And this is a nested, inner block.
	\--

	Here we are back in the outer block.
\--
```
Thanks to this simple syntax, you can keep your content clear and semantically well-structured.


Disabling Formatting
====================

Sometimes it can be useful to "turn off" Texy for a moment and insert a piece of text where Texy should not process its tags.

If you need to insert a more complex HTML structure without Texy parsing the tags, use the `/--html` block:

```texy
/--html
<em>This text will be processed as HTML, so it will be in italics.</em>

**But Texy ignores these asterisks, so they won't be bold.**
\--
```

If you want to display text exactly as it is written, ignoring all tags (both Texy and HTML), use the `/--text` block. Everything inside this block will be displayed as plain text.

```texy
/--text
<em>This text will be displayed with the tags, but it will not be in italics.</em>

**This won't be bold either.**
\--
```

But what if you don't want to disable Texy for an entire block of text, but just for a short phrase in the middle of a sentence? For these cases, there is an elegant and quick solution: wrap the text in **double apostrophes** `''`:

```texy
If you want to show how to write bold text, you would write: The syntax is ''**bold text**''.
```

The result will not be bold text; instead, the string `**bold text**` will be printed literally.


Tables
======

To create a table, start each row with a `|` character and also separate the individual cells with this character. Texy will take care of the alignment and correct HTML on its own.

```texy
| Jan | Novák     | Praha
| Eva | Svobodová | Brno
```

The result will be a clear and correctly formatted table.

Syntax ID `table` | [TableModule |configuration#tablemodule]


Table Header
------------

Every proper table should have a header that describes what is in each column. You create the header by separating it from the rest of the table with a line containing hyphens `-`.

```texy
| Name    | Age | City
|----------|-----|-------
| Jan      | 25  | Prague
| Eva      | 30  | Brno
```

Alternatively, you can define headers for individual rows (for example, if you have labels in the first column). You achieve this by adding an asterisk `*` immediately after the initial `|`.

```texy
|* Name   | Jan   | Eva
|* Age     | 25    | 30
|* City   | Praha | Brno
```


Merging Cells
-------------

Sometimes it is necessary to merge several cells together, either in columns or in rows.

**Merging columns:** For horizontal cell merging, simply omit the separator and use a double vertical bar `||` instead. The cell to the right will be merged with the cell to its left.

```texy
| First Name           || Age
|----------------------------
| Jan  | Novák     | 25
```

**Merging rows:** For vertical cell merging, use the caret symbol `^` in the cell you want to attach to the one above it. This tells Texy: "Merge this cell with the one above it."

```texy
| Month   | Sales |
|---------|----------
| January   | 150 pcs  |
| February    |        ^|
| March  | 210 pcs  |
```

In this example, the cell with sales for January and February will be merged.

This way, several cells can be merged across rows and columns:

```texy
| First Name | Last Name | Age
|----------------------------
| Bill                  || 50
|                       ^| 52
| Jim        | Beam      | 70
```


Styling Tables
--------------

As with other elements in Texy, you can also add [#modifiers] to tables and their parts to change their appearance (e.g., CSS classes, styles, or IDs).

**Entire table:** Place the modifier for the entire table on a separate line just before it.

```texy
.[data-table table-striped]
| Header 1 | Header 2
|------------|------------
| data       | data
```

**Individual rows:** If you want to style a specific row, add the modifier to its end.

```texy
| Name | Status
|-------|--------------
| Petr  | Approved
| Jana  | Rejected    | .{background: #ffdddd}
```

**Individual columns:** To style an entire column, insert the modifier at the beginning of the first cell of that column.

```texy
| Name          | .>  Price  | In Stock
|----------------|-----------|---------
| Product A      | 1 200 Kč  | Yes
| Product B      | 850 Kč    | No
```

**Specific cell:** Write the modifier for a single cell directly in it, usually at the end of its content.

```texy
| Task                 | Status
|----------------------|-------------------------------------
| Prepare documents   | Done
| Check data    | In progress .{color: orange; font-weight: bold}
```


Blockquotes
===========

If you need to emphasize someone else's idea in your text, cite a source, or just visually separate a block of text, simply start the line with the `>` character.

```texy
> This is a blockquote. It serves to highlight an important idea or an excerpt from another source.
```

A blockquote doesn't have to be just one paragraph. If you want to continue with another paragraph within the same blockquote, simply insert a blank line that also starts with the `>` character.

```texy
> This is the first paragraph of the blockquote. Lorem ipsum dolor sit amet.
>
> And this is the second paragraph, which still belongs to the same blockquote.
> This way you can structure even longer texts.
```

Texy even supports nested blockquotes, which is useful if you are quoting someone who is quoting someone else. For each additional level of nesting, add another `>` character.

```texy
> This is the outer, main blockquote.
>
> > And this is a nested, second-level blockquote.
>
> Here the text returns to the main blockquote.
```

Inside blockquotes, you can of course use other formatting, such as **bold text** or *italics*.


Horizontal Rules
================

Sometimes it is necessary to visually divide the text. A horizontal rule is great for this. On a separate line, write three or more hyphens `---` or asterisks `***`.

```texy
The first part of the text on a certain topic.

***

The second part of the text, which begins after the visual separation.
```

To create a horizontal rule, it **must be preceded by a blank line**. If you were to write it immediately after the text, Texy would think you wanted to create an underlined heading.

Syntax ID `horizline` | [HorizLineModule |configuration#horizlinemodule]


Typography
==========

The power of Texy lies not only in formatting, but also in automatic typographic corrections. Texy takes care of the details that make text professional and easy to read, all according to Czech typographic rules. This allows you to focus solely on the content.

**Quotes:** You don't have to worry about how to type correct typographic quotes on the keyboard. Texy will do it for you.

It automatically converts classic ''"typewriter quotes"'' into the correct English “quotes” and nested ‘quotes’. The type of quotes depends on the locale setting:

```php
$texy->typographyModule->locale = 'cs'; // Czech
$texy->typographyModule->locale = 'en'; // English
```

**Dashes and hyphens:** It intelligently recognizes when to use a short hyphen (in hyphenated words) and when to use a longer en dash—for example, in ranges (10–15) or between words.

```texy
10-15           → 10–15            (en dash for ranges)
czech-slovak → czech-slovak  (hyphen remains)
word -- word  → word – word    (en dash between words)
word --- word → word — word    (em dash)
```

**Non-breaking spaces**: One of the biggest advantages is the automatic insertion of non-breaking spaces where needed. This prevents single-letter words (like `a` or `I`) from being left alone at the end of a line, which is a common typographic error.

```texy
// You write:
I visited a castle in Prague.

// Texy ensures that "a" never remains at the end of a line:
I visited a&nbsp;castle in Prague.
```

It also takes care of correct spacing in phone numbers or dates to prevent them from breaking.

```texy
+420 776 552 046 → +420&nbsp;776&nbsp;552&nbsp;046  (all spaces non-breaking)
```

**Automatic symbols:** Texy also makes it easier for you to write frequently used symbols.

| You write | Texy generates | Description
|-----
| `...` | … | Ellipsis
| `(c)` | © | Copyright
| `(r)` | ® | Registered trademark
| `(tm)` | ™ | Trademark
| `10 x 5` | 10 × 5 | Multiplication sign
| `+-` | ± | Plus-minus
| `<-` `->` `<->` | ← → ↔ | Arrows

Thanks to these automatic adjustments, your text will always look professional without you having to know complex keyboard shortcuts or HTML entities.


Hyphenation of Long Words
-------------------------

You know it—a long word appears in the text, such as "antidisestablishmentarianism," and on a narrow mobile phone screen, it breaks the entire page layout. Fortunately, Texy offers an elegant solution: it can insert invisible "soft hyphens" (`&shy;`) into the word. These hyphens tell the browser where (between syllables) it can safely break the word if it doesn't fit at the end of the line. If the word fits on the line, the hyphens remain hidden and nothing happens.

```html
antidisestablish&shy;mentarianism
```

Thanks to this, your text will always adapt beautifully to any screen width without unwanted horizontal scrolling.

Because this feature is not suitable for all types of websites, it is disabled by default. You can activate it in the configuration:

```php
$texy->allowed['longwords'] = true;

// Set the minimum word length from which to hyphenate (e.g., 20 characters)
$texy->longWordsModule->wordLimit = 20;
```

Syntax ID `longwords` | [LongWordsModule |configuration#long-wordsmodule]


Emoticons
=========

Texy can automatically convert classic text smileys into graphical emoticons. Simply type the smiley as you are used to, and Texy will take care of the rest.

| You write | Texy generates
|-----
| `:-)` | 🙂
| `:-(` | ☹
| `;-)` | 😉
| `:-D` | 😀
| `:-*` | 😘

Depending on the configuration, Texy can convert these shortcuts either to modern Unicode emoji (as in the table above) or to small images (`<img>`).

To prevent unwanted conversions, for example in technical texts, this feature is disabled by default. If you want to use it, you just need to enable it:

```php
$texy->allowed['emoticon'] = true;
```

More information about available emoticons and configuration options can be found in the [EmoticonModule configuration |configuration#emoticonmodul].

Syntax ID `emoticon` | [EmoticonModule |configuration#emoticonmodule]

Syntax

Texy was created to allow inexperienced users to easily edit website content. Therefore, its syntax is intuitive and clear.

Cheat Sheet

Text Formatting Syntax
Bold text **bold text**
Italics *italics* or //italics//
Inline code `code`
Links "text":URL or [text](URL)
Images [* image.jpg *]
Disabling Formatting ''special characters''
Elements  
Underlined Headings H1
===
Surrounded Headings ### H1
## H2
Bulleted Lists - first
- second
Numbered Lists 1) first
2) second
Definition Lists term:
  - first
Blockquotes > blockquote
Horizontal Rules ---
Tables | cell | cell |
Code Blocks /--

\--
Modifiers  
title .(title)
CSS class .[btn btn-primary]
ID .[#id]
CSS style or HTML attribute .{color: blue} or .{target: _blank}
horizontal alignment .< .> .<> .=
vertical alignment .^ .- ._

Paragraphs of text

Texy considers a paragraph to be one or more consecutive lines of text. As soon as you leave one blank line between them, Texy automatically understands that it should start a new paragraph.

This means that Texy will join lines that belong together. You don't have to worry about a sentence breaking in the middle when you shrink the editor window.

This is the first paragraph. It can easily have multiple lines,
and Texy will join them into one continuous block of text.

Only here, after a blank line, does a completely new, second paragraph begin.

However, line merging can be disabled in the configuration, after which each line is considered a separate paragraph:

$texy->mergeLines = false;

Line Breaks

But what if you just need to break a line without creating a whole new paragraph? This is typically useful for poems, song lyrics, or when writing an address. Start the new line with a single space.

Karel Novák,
 U Tiché pošty 5
 150 00 Praha 5

Styling Paragraphs

Sometimes you need to distinguish an entire paragraph—for example, to make it a lead paragraph of an article, center it, or assign it a specific style for a border. This is where modifiers come in, which you can place either on a separate line before the paragraph or at the end of its last line.

.[perex]
This is the lead paragraph of the article, which, thanks to the modifier,
will get the CSS class "perex" and can thus look different from the rest of the text.

This paragraph, in turn, has a unique ID assigned. .[#section-intro]

And this paragraph will be centered. .<>

Text formatting

syntax output Syntax ID
**bold text** bold text phrase/strong
*italics* or //italics// italics phrase/em-alt, phrase/em
***bold italics*** bold italics phrase/strong+em
`inline code` inline code phrase/code
x^2 … O_2 x2 … O2 phrase/sup-alt, phrase/sub-alt
x^^2^^ … O__2__ x2 … O2 phrase/sup🔸, phrase/sup🔸
++inserted text++ inserted text phrase/ins🔸
--deleted text-- deleted text phrase/del🔸
>>quoted text<< quoted text phrase/quote
"blue text .{color: blue}" blue text phrase/span
~blue text .{color: blue}~ blue text phrase/span-alt
"et al."((and others)) et al. phrase/acronym
NBA((National Basketball Association)) NBA phrase/acronym-alt

Syntaxes marked with 🔸 are not enabled by default and you must turn them on. For example:

$texy->allowed['phrase/ins'] = true;

For simple numerical indices, you can use the shorthand syntax x^2 and O_2, but for more complex cases, the double-character variant is more robust, or you can use the HTML tags <sup> and <sub>.

There must not be spaces inside the syntax characters:

Wrong: ** this will not be bold **
Correct: **this will be bold**

Styling Text

This is one of Texy's most powerful features. You can „attach“ modifiers to any formatted text to add a CSS class, ID, or direct style. The modifier is always inserted just before the closing tag:

This text is **strong and green .{color:green}** like the Hulk.

Warning: --This feature is deprecated .[deprecated]--

If you want to apply a modifier to text without making it bold or italic, use quotation marks " or tildes ~ as the enclosing characters. Texy will then create a universal HTML <span> tag with your styles:

Regular text, but "this piece is red .{color: red}", and the rest is not.

You can turn formatted text into a link – simply add a colon and the URL:

Visit our **new gallery**:https://example.com/gallery

This works for bold text, italics, and inline code.

Writing Special Characters

What if you want to write **text** literally, including the asterisks, without it becoming bold text? You have three options:

  • a backslash is the quickest way to escape a single special character \**text\**
  • double apostrophes disable Texy for the entire phrase ''**text**''
  • you can use standard HTML entities &ast;&ast;text&ast;&ast;

Links are the soul of the internet. In Texy, their creation is designed to be as natural and clear as possible directly within the text.

The basic syntax for a link is simple and highly readable. Enclose the linked text in " (or other characters for text formatting) and immediately append a colon and the target URL:

Visit the official website of the "Nette Framework":https://nette.org.

If you have a question, "email us":info@example.com.

The advantage is that Texy is intelligent and automatically recognizes where the URL ends. So you don't have to worry about it accidentally including a period or comma at the end of a sentence in the link. However, if the URL contains non-standard characters, you can enclose it in square brackets to precisely define the start and end of the address:

"Read our article":[https://example.com/news?id=1&category=articles]

Syntax ID phrase/span, phrase/span-alt | PhraseModule and LinkModule

Are you used to the format used by Markdown or Wikipedia? Texy understands them too. You can choose the style that suits you best.

[Link text](https://address.com)         // Style known from Markdown
[Link text | https://address.com]        // Style known from MediaWiki
text:[target URL or reference]         // Single-word link

Syntax ID phrase/markdown, phrase/wikilink, phrase/quicklink | PhraseModule

When writing longer texts, it can be inconvenient to insert long URLs directly into paragraphs—it can harm readability and clarity. For these cases, Texy has reference links.

In the text, you use only a short, easily memorable reference name. And at the end of the document, you define all these references clearly.

We recommend studying the "official documentation":[doc] and going through the "syntax examples":[syntax].
The entire project is built on [Nette].

​[doc]: https://texy.nette.org/en/ "Texy Documentation!"
​[syntax]: https://texy.nette.org/en/syntax
​[Nette]: https://nette.org

Syntax ID link/reference, link/definition | LinkModule

Whenever you write a URL (starting with http://, https://, www.) or an email address in the text, Texy will automatically recognize it and convert it into a clickable link. You don't have to do anything at all.

You can find our website at www.example.com.
For support, write to support@example.com.

Syntax ID link/url, link/email | LinkModule

With modifiers, you can easily add other properties to links:

"External link .[external](Opens in a new window){target:_blank}":https://google.com

The special class nofollow adds the rel="nofollow" attribute to the link, signaling to search engines not to follow this link. This is useful, for example, for links in comments.

"A link I don't trust .[nofollow]":https://example.com

Automatic Email Masking

Texy automatically obfuscates (masks) email addresses from spambots:

<a href="mailto:info&#64;example.com">info&#64;<!-- -->example.com</a>

You can disable this behavior:

$texy->obfuscateEmail = false;

Direct HTML

Texy is designed so that you don't have to write HTML at all. But what if you encounter a situation where inserting a direct HTML tag is simpler, or you need to create something that Texy's syntax doesn't cover? No problem. Texy gives you complete freedom to combine both worlds.

You can seamlessly switch between Texy syntax and pure HTML whenever it suits you.

This is **bold text** in Texy and this is <strong>bold text</strong> using HTML.

<div class="info-box">
	<h3>You can also insert entire complex blocks</h3>
</div>

You might think that inserting direct HTML can be risky. What if you make a mistake or someone inserts malicious code? Texy thinks about this and acts as an intelligent filter and helper:

  • Corrects errors: Texy ensures that the resulting code is always valid and won't break your page.
  • Monitors security: By default, Texy has a list of allowed tags and their attributes. If an unknown tag or a potentially dangerous attribute (e.g., onclick) appears in the code, Texy will safely remove it. This protects your website from XSS attacks.
  • Ensures a consistent output: No matter what HTML code you insert, Texy will make sure the result is always well-formed.

You can customize this protective shield. Using the $texy->allowedTags configuration, you can precisely define which HTML tags and attributes are allowed on your website and which are not.

This gives you full control over what HTML, for example, editors can use, ensuring the consistency and security of the entire site. For more information, see the configuration section.

Syntax ID html/tag, html/comment | HtmlModule

Headings

Texy offers you two elegant and intuitive ways to create headings: underlined and surrounded.

Underlined Headings

This style is reminiscent of a typewriter. Simply place an underline (at least 3 characters) below the heading. The importance of the title is determined by the underlining character. From highest to lowest, these are: # * = -

This is the most important heading of the entire document
​################################################

And this is a second-level heading
​******************************

Syntax ID heading/underlined | HeadingModule

Surrounded Headings

This method is very quick to write. You „wrap“ the heading text between # or = characters. Here, the level of the heading is determined by the number of characters used (2 to 7). The more characters, the more important the heading.

=== Most important heading (H1)

== Less important (H2)

# Even less important (H3)

You can use borders on both sides (for better visual clarity) or just at the beginning. Texy can handle both variants.

Syntax ID heading/surrounded | HeadingModule

Styling Headings

You can add modifiers to any heading. This allows you to assign it a specific CSS class for styling or a unique ID that you can then link to.

Heading with red color .[red-heading]
​==========================================

### Heading with a unique ID for linking .[#contact]

Automatic Anchors for Easy Navigation

Don't want to come up with an ID for every heading manually? Texy can do it for you! In the configuration, you can enable automatic ID generation for all headings. This is incredibly useful for directly linking to specific sections.

// Enable automatic ID generation
$texy->headingModule->generateID = true;

// Optionally set a prefix for generated IDs (e.g., "toc-")
$texy->headingModule->idPrefix = 'toc-';

With this setting, the heading ## My Chapter will automatically get an ID like id="toc-my-chapter" without you having to write anything extra.

Lists

Bulleted Lists

For a quick list of items where the order doesn't matter, a bulleted list is perfect. Just start each line with a hyphen -, an asterisk *, or a plus sign +, followed by a space. All three characters work the same, so you can choose the one you prefer.

What needs to be bought:

- Milk
- Bread
* Eggs
+ Butter

ID syntaxe list | ListModule

Numbered Lists

Texy supports various numbering styles:

1. Arabic numerals (with a period)
1) Arabic numerals (with a parenthesis)
a) Lowercase letters of the alphabet
A) Uppercase letters of the alphabet
I) Roman numerals

The beauty of this is that you don't have to worry about correct numbering at all. Even if you number all the lines with a one, Texy will automatically renumber them for you. This is a huge advantage when you later need to add, delete, or move an item.

Nested and Combined Lists

The power of lists truly shines when you combine and nest them. This allows you to create clear, multi-level structures. You create nesting simply by indenting the line by at least two spaces (or one tab).

1) First chapter
	a) Subchapter 1.1
		- First point
		- Second point
	b) Subchapter 1.2
2) Second chapter
	- Main idea
	- Another note

Definition Lists

For cases where you need to create a glossary of terms or clearly explain several terms, a definition list is ideal.

On the first line, write the term you want to define and end it with a colon. On the following lines, write its definition, indenting each line and starting it with a hyphen -.

HTML:
  - Markup language for creating web pages.
  - Abbreviation for HyperText Markup Language.

CSS:
  - Language for describing the presentation (styling) of pages.
  - Abbreviation for Cascading Style Sheets.

Syntax ID list/definition | ListModule

Styling Lists

Just like with other elements in Texy, you can easily add modifiers to lists to change their appearance.

Entire list: Write the modifier on the line before the start of the list.

.[colored-list]
- First item
- Second item

Individual item: Add the modifier to the end of the line of the given item or definition term.

- Regular item
- This item is important! .{font-weight: bold}
- Another regular item

Images

The basic syntax is very simple. Just enclose the path to the image (whether a local file or a URL) in square brackets with an asterisk:

[* image.jpg *]
[* https://domain.com/logo.png *]

Often you will want the text to wrap around the image. For this, there are simple alignment tags that are inserted before the closing bracket:

[* image.jpg <] This text will flow smoothly around the image from the right side.

[* image.jpg >] In this case, the text will instead flow around the image from the left side.

[* large-image.jpg <>]
This text will continue below the centered image.

A properly inserted image should also have „alternative text,“ which is displayed if the image fails to load. Using a modifier, you can add this text and other elements for styling.

[* landscape-photo.jpg .(A beautiful mountain landscape at sunset)[main-photo] *]

Image Dimensions

Texy can automatically detect the dimensions of local images (if the $texy->imageModule->fileRoot path is set) and add them to the HTML, which speeds up page loading. However, if you want to set the dimensions manually, you have several options:

[* img.jpg 150x100 *] Exact width 150px and height 100px
[* img.jpg 150 *] Width will be 150px, height will be automatically calculated while maintaining the aspect ratio
[* img.jpg ?x100 *] Height will be 100px, width will be automatically calculated

Clickable Images

Do you want a large image to be displayed when a small thumbnail is clicked? Or for an image to link to another page? Just add a colon and the target URL after the image syntax.

[* thumbnail.jpg *]:large.jpg
[* nette-logo.png *]:https://nette.org

For galleries, there is also a handy shortcut ::. This automatically creates a link to the same file located at $texy->imageModule->linkedRoot.

Visible Caption Below the Image

If you want to add a visible caption under an image (e.g., the author's name or a description of the scene), write three asterisks *** and the caption text after it. Texy will automatically create a semantically correct HTML structure <figure> and <figcaption> from this.

[* photo.jpg <> *] *** This is a caption. It can also contain **other formatting**.

Organizing Images with References

If you use one image multiple times in the text or want to have all image definitions neatly in one place, you can use references. In the text, you use only a placeholder name, and at the end of the file, you define what this name means.

In our logo [* company-logo *] you can see the symbol of our vision.

​[* company-logo *]: /images/logo.svg 200x50 .(Our company logo)

This approach significantly clarifies the main text and simplifies image management.

Syntax ID image/definition | ImageModule

Preformatted text

In Texy, you can easily insert blocks of code or any preformatted text where you want to ensure it is displayed exactly as you write it—including all spaces and line breaks. This is ideal for examples of source code, logs, or ASCII art.

To insert such a block, use the /-- and \-- delimiters:

/--
function hello() {
	echo 'Hello World';
}
\--

To make your code even more readable, you can tell Texy which programming language it is written in and create a handler that, for example, syntax highlights it, see the example. Just add the keyword code and the language name after the initial /-- tag:

/--code javascript
console.log('JavaScript');
\--

/--code html
<div>This is HTML code</div>
\--

Content Blocks (divs)

Texy allows you to create generic <div> blocks, thanks to which you can easily group content into logical units and then style them.

You create a block using the /--div and \-- tags. In addition, you can easily add modifiers:

/--div .[important]
## Important Notice

This text will be enclosed in a `<div class="important">` block.
This allows you to style it with CSS to make it stand out.
\--

The power of <div> blocks also lies in the ability to nest them. This allows you to create even more complex structures directly in Texy without having to write HTML manually.

/--div .[outer]
	This is the outer block.

	/--div .[inner]
		And this is a nested, inner block.
	\--

	Here we are back in the outer block.
\--

Thanks to this simple syntax, you can keep your content clear and semantically well-structured.

Disabling Formatting

Sometimes it can be useful to „turn off“ Texy for a moment and insert a piece of text where Texy should not process its tags.

If you need to insert a more complex HTML structure without Texy parsing the tags, use the /--html block:

/--html
<em>This text will be processed as HTML, so it will be in italics.</em>

**But Texy ignores these asterisks, so they won't be bold.**
\--

If you want to display text exactly as it is written, ignoring all tags (both Texy and HTML), use the /--text block. Everything inside this block will be displayed as plain text.

/--text
<em>This text will be displayed with the tags, but it will not be in italics.</em>

**This won't be bold either.**
\--

But what if you don't want to disable Texy for an entire block of text, but just for a short phrase in the middle of a sentence? For these cases, there is an elegant and quick solution: wrap the text in double apostrophes '':

If you want to show how to write bold text, you would write: The syntax is ''**bold text**''.

The result will not be bold text; instead, the string **bold text** will be printed literally.

Tables

To create a table, start each row with a | character and also separate the individual cells with this character. Texy will take care of the alignment and correct HTML on its own.

| Jan | Novák     | Praha
| Eva | Svobodová | Brno

The result will be a clear and correctly formatted table.

Syntax ID table | TableModule

Table Header

Every proper table should have a header that describes what is in each column. You create the header by separating it from the rest of the table with a line containing hyphens -.

| Name    | Age | City
|----------|-----|-------
| Jan      | 25  | Prague
| Eva      | 30  | Brno

Alternatively, you can define headers for individual rows (for example, if you have labels in the first column). You achieve this by adding an asterisk * immediately after the initial |.

|* Name   | Jan   | Eva
|* Age     | 25    | 30
|* City   | Praha | Brno

Merging Cells

Sometimes it is necessary to merge several cells together, either in columns or in rows.

Merging columns: For horizontal cell merging, simply omit the separator and use a double vertical bar || instead. The cell to the right will be merged with the cell to its left.

| First Name           || Age
|----------------------------
| Jan  | Novák     | 25

Merging rows: For vertical cell merging, use the caret symbol ^ in the cell you want to attach to the one above it. This tells Texy: „Merge this cell with the one above it.“

| Month   | Sales |
|---------|----------
| January   | 150 pcs  |
| February    |        ^|
| March  | 210 pcs  |

In this example, the cell with sales for January and February will be merged.

This way, several cells can be merged across rows and columns:

| First Name | Last Name | Age
|----------------------------
| Bill                  || 50
|                       ^| 52
| Jim        | Beam      | 70

Styling Tables

As with other elements in Texy, you can also add modifiers to tables and their parts to change their appearance (e.g., CSS classes, styles, or IDs).

Entire table: Place the modifier for the entire table on a separate line just before it.

.[data-table table-striped]
| Header 1 | Header 2
|------------|------------
| data       | data

Individual rows: If you want to style a specific row, add the modifier to its end.

| Name | Status
|-------|--------------
| Petr  | Approved
| Jana  | Rejected    | .{background: #ffdddd}

Individual columns: To style an entire column, insert the modifier at the beginning of the first cell of that column.

| Name          | .>  Price  | In Stock
|----------------|-----------|---------
| Product A      | 1 200 Kč  | Yes
| Product B      | 850 Kč    | No

Specific cell: Write the modifier for a single cell directly in it, usually at the end of its content.

| Task                 | Status
|----------------------|-------------------------------------
| Prepare documents   | Done
| Check data    | In progress .{color: orange; font-weight: bold}

Blockquotes

If you need to emphasize someone else's idea in your text, cite a source, or just visually separate a block of text, simply start the line with the > character.

> This is a blockquote. It serves to highlight an important idea or an excerpt from another source.

A blockquote doesn't have to be just one paragraph. If you want to continue with another paragraph within the same blockquote, simply insert a blank line that also starts with the > character.

> This is the first paragraph of the blockquote. Lorem ipsum dolor sit amet.
>
> And this is the second paragraph, which still belongs to the same blockquote.
> This way you can structure even longer texts.

Texy even supports nested blockquotes, which is useful if you are quoting someone who is quoting someone else. For each additional level of nesting, add another > character.

> This is the outer, main blockquote.
>
> > And this is a nested, second-level blockquote.
>
> Here the text returns to the main blockquote.

Inside blockquotes, you can of course use other formatting, such as bold text or italics.

Horizontal Rules

Sometimes it is necessary to visually divide the text. A horizontal rule is great for this. On a separate line, write three or more hyphens --- or asterisks ***.

The first part of the text on a certain topic.

***

The second part of the text, which begins after the visual separation.

To create a horizontal rule, it must be preceded by a blank line. If you were to write it immediately after the text, Texy would think you wanted to create an underlined heading.

Syntax ID horizline | HorizLineModule

Typography

The power of Texy lies not only in formatting, but also in automatic typographic corrections. Texy takes care of the details that make text professional and easy to read, all according to Czech typographic rules. This allows you to focus solely on the content.

Quotes: You don't have to worry about how to type correct typographic quotes on the keyboard. Texy will do it for you.

It automatically converts classic "typewriter quotes" into the correct English “quotes” and nested ‘quotes’. The type of quotes depends on the locale setting:

$texy->typographyModule->locale = 'cs'; // Czech
$texy->typographyModule->locale = 'en'; // English

Dashes and hyphens: It intelligently recognizes when to use a short hyphen (in hyphenated words) and when to use a longer en dash—for example, in ranges (10–15) or between words.

10-15           → 10–15            (en dash for ranges)
czech-slovak → czech-slovak  (hyphen remains)
word -- word  → word – word    (en dash between words)
word --- word → word — word    (em dash)

Non-breaking spaces: One of the biggest advantages is the automatic insertion of non-breaking spaces where needed. This prevents single-letter words (like a or I) from being left alone at the end of a line, which is a common typographic error.

// You write:
I visited a castle in Prague.

// Texy ensures that "a" never remains at the end of a line:
I visited a&nbsp;castle in Prague.

It also takes care of correct spacing in phone numbers or dates to prevent them from breaking.

+420 776 552 046 → +420&nbsp;776&nbsp;552&nbsp;046  (all spaces non-breaking)

Automatic symbols: Texy also makes it easier for you to write frequently used symbols.

You write Texy generates Description
... Ellipsis
(c) © Copyright
(r) ® Registered trademark
(tm) Trademark
10 x 5 10 × 5 Multiplication sign
+- ± Plus-minus
<- -> <-> ← → ↔ Arrows

Thanks to these automatic adjustments, your text will always look professional without you having to know complex keyboard shortcuts or HTML entities.

Hyphenation of Long Words

You know it—a long word appears in the text, such as „antidisestablishmentarianism,“ and on a narrow mobile phone screen, it breaks the entire page layout. Fortunately, Texy offers an elegant solution: it can insert invisible „soft hyphens“ (&shy;) into the word. These hyphens tell the browser where (between syllables) it can safely break the word if it doesn't fit at the end of the line. If the word fits on the line, the hyphens remain hidden and nothing happens.

antidisestablish&shy;mentarianism

Thanks to this, your text will always adapt beautifully to any screen width without unwanted horizontal scrolling.

Because this feature is not suitable for all types of websites, it is disabled by default. You can activate it in the configuration:

$texy->allowed['longwords'] = true;

// Set the minimum word length from which to hyphenate (e.g., 20 characters)
$texy->longWordsModule->wordLimit = 20;

Syntax ID longwords | LongWordsModule

Emoticons

Texy can automatically convert classic text smileys into graphical emoticons. Simply type the smiley as you are used to, and Texy will take care of the rest.

You write Texy generates
:-) 🙂
:-(
;-) 😉
:-D 😀
:-* 😘

Depending on the configuration, Texy can convert these shortcuts either to modern Unicode emoji (as in the table above) or to small images (<img>).

To prevent unwanted conversions, for example in technical texts, this feature is disabled by default. If you want to use it, you just need to enable it:

$texy->allowed['emoticon'] = true;

More information about available emoticons and configuration options can be found in the EmoticonModule configuration.

Syntax ID emoticon | EmoticonModule