Detailed description of syntax

Philosophy

The Texy tool was created to allow inexperienced users to easily edit the content of web pages. Therefore, the syntax is maximally intuitive. The intention is that the text in pure (unformatted) form is clear and its format can be guessed.

Today, Texy also serves well-experienced HTML experts. Allows you to freely combine Texy notation with HTML tags. Thus, experienced users do not have to learn a new meta-language and make full use of their knowledge. Texy only simplifies their work.

The primary logic of the syntax is ** not to use any syntax **. Just write plain text. Inserting advanced information, such as CSS classes or links, does not disrupt the flow of text. And it is written in a way that even non-technical users can easily understand.

Paragraphs of Text

A paragraph is considered to be one or more consecutive lines of text. The paragraphs are separated by a blank line.

First paragraph lorem ipsum dolor sit amet.

Second paragraph, který tvoří jeden řádek.
And second line of paragraph. Texy will join the lines.
<p>First paragraph lorem ipsum dolor sit amet.</p>

<p>Second paragraph, který tvoří jeden řádek. And second line of paragraph. Texy will join the lines.</p>

In the edit box (textarea) is not a division into two lines of paragraph evident. That's why Texy considers them one paragraph.

To wrap a line in a paragraph, insert one space to the left:

April is the cruellest month, breeding
 Lilacs out of the dead land, mixing
 Memory and desire, stirring
 Dull roots with spring rain.
<p>April is the cruellest month, breeding<br>
Lilacs out of the dead land, mixing<br>
Memory and desire, stirring<br>
Dull roots with spring rain.</p>

Headings

Headings can be written in two ways: underlined or surrounded.

Each headline has its own degree. In the case of underlined, the importance of the title is decided by the underline character. From the highest to the lowest, these are: # * = -

Head title
**********

Subtitle
========
<h2>Head title</h2>

<h3>Subtitle</h3>

For surrounded titles, the level determines the number of preceding characters. It can be # nebo =

The following applies: the more characters, the more important the title (minimum two characters, maximum seven).

=== Head title ===

## Subtitle

As you can see in the case of the subtitle, the characters on the right can be omitted.

Subtitle levels are always relative only! So Texy finds the highest caption used and relatively differentiates the other captions.

Horizontal lines

Texy knows these notations:

------------

********
<hr>
<hr>

Code

Used to insert source code. Syntax highlighting can also be activated using an add-on module.

/---code php
  function reImage($matches) {
    $content = $matches[1];
    $align = $matches[5];
    $href = $matches[6];
  }
\---
<pre
class="language-php"><code>function reImage($matches) {
  $content = $matches[1];
  $align = $matches[5];
  $href = $matches[6];
}</code></pre>

Note the words php to indicate the language.

Turning off the Texy

The keyword html or` text` affects whether the content will be understood as HTML (including tags) or plain text.

/---html
  <em>example</em>: **this is not strong**
\---


/---text
  <em>example</em>: **this is not strong**
\---

To turn off Texy inline, it is possible to use a double apostrophe '' and wrap a part of the text that is not to be Texy processed.

Example: ''**this is not strong**''

Division into blocks (div)

Use this ability to create more complex documents.

/---div .[header]

  content of div

\---
<div class="header">
	<p>content of div</p>
</div>

It is also possible to nest blocks:

/---div .[header]

  ## This is a header.

  /---div
    inner div
  \---

  Texy is sexy!

\---
<div class="header">
	<h6>This is a header.</h6>

	<div>
		<p>inner div</p>
	</div>

	<p>Texy is sexy!</p>
</div>

Quotes

Quotes are indented, similarly to emails, by a character >

> This is a blockquote with two paragraphs.
>
> 640 K should be enough for everyone
<blockquote>
	<p>This is a blockquote with two paragraphs.</p>

	<p>640 K should be enough for everyone</p>
</blockquote>

Links are written by enclosing the referencing text in quotation marks, followed by a colon and a URL. Texy tries to intelligently guess the end of the URL. You can also help it by enclosing the URL in square brackets. The http:// section is optional.

It is also possible to insert emails as a link, Texy transforms them into a form that should confuse spambots.

Look at homepage:[https://texy.info].

Do you know "La Trine":https://www.latrine.cz?

"Write me":me@example.com
<p>Look at <a href="https://texy.info">homepage</a>.</p>

<p>Do you know <a href="https://www.latrine.cz">La Trine</a>?</p>

<p><a href="mailto:me&#64;example.com">Write me</a></p>

References

In order not to “pollute” the text flow by inserting URLs, it is possible to list all addresses in one place and then just link to them. This is called a reference. In addition to the address, it is possible to add the text of the link and the modifier.

 [homepage]: https://texy.info/ Texy .(homepage)
 [nette]: http://nette.org

This is [homepage]

Look at "this site":[nette]

Images

They are written between square brackets with an asterisk:

[* image.gif *]
<img src="https://files.texy.info/git/www/image.gif" alt="">

In text paragraphs, you often need to choose whether the image should be left-aligned or right-aligned. To do this, use the < and > character used before the right parenthesis:

[* image.gif <] Left-aligned image

[* image.gif >] Right-aligned image
<p><img src="https://files.texy.info/git/www/image.gif" alt="" class="left"> Left-aligned image</p>

<p><img src="https://files.texy.info/git/www/image.gif" alt="" class="right"> Right-aligned image</p>

Note: In the example above, Texy used a straight CSS style for alignment. It is possible to configure the system to assign a selected class to images instead.

Note: it is possible to set a default directory for all (relative) image URLs. In the examples given, it was images/, so in Texy code the directory is not listed, while in the generated HTML it is.

Note: if no alternative text is specified by default (as shown below), Texy will use the default. Here's a simple image

Dimensions

For local images, Texy detects the dimensions automatically. If you want to specify them manually, enter them as follows:

[* image.gif 10x20 *]
<img src="https://files.texy.info/git/www/image.gif" alt="" width="10" height="20">

Modifiers

You can learn more about them in another chapter, but it doesn't hurt to show how they're written on images. Let's try a modifier to specify alternate text and class:

[* image.gif .(alt text)[photo] *]
<img src="https://files.texy.info/git/www/image.gif" class="photo" alt="alt text">

Reference

For the same reasons as for links, images can also be written using references. You need to define URLs (or multiple URLs separated by |) and possibly modifiers.

What a beautiful girl [* picture*] !
<p>What a beautiful girl <img src="https://files.texy.info/git/www/picture" alt=""> !</p>

Figure with caption

Enter three asterisks after the image, followed by a caption:

[* image.gif *] *** This is the *caption* below the image
<div class="figure"><img src="https://files.texy.info/git/www/image.gif" alt="">
	<p>This is the <i>caption</i> below the image</p>
</div>

Phrases

Probably the most used syntax in Texy. In almost all cases, a double character is used.

//italics//

*too italics*

**bold**

***heavy bold***

superscript^2 vs. subscript_2
<p><i>italics</i></p>

<p><em>too italics</em></p>

<p><b>bold</b></p>

<p><b><i>heavy bold</i></b></p>

<p>superscript<sup>2</sup> vs. subscript<sub>2</sub></p>

italics

too italics

bold

heavy bold

superscript2 vs. subscript2

A special case of a phrase is the so-called code. It differs from the other phrases in that its content will no longer be formatted and will be displayed literally:

This is `<br />` and entity `&ndash`
<p>This is <code>&lt;br /&gt;</code> and entity <code>&amp;ndash</code></p>

Note: whether the <code> element is used or another (or none) can be changed simply by configuring Texy.

With Modifier

It is possible to insert it into each phrase, always just before the closing character:

**strong and green .{color:green}** like Hulk
<p><b style="color:green">strong and green</b> like Hulk</p>

strong and green like Hulk

Direct HTML

Texy is not a substitute for HTML. It also doesn't look for alternative ways to write HTML. The goal is to simplify content writing. If you find it easier to write a structure directly in HTML, you can do so. HTML tags are fully supported.

This <strong class=info>is strong</strong> text.
<br> This is not.
<p>This <strong class="info">is strong</strong> text.<br>
This is not.</p>

Note: note that Texy adjusts the notation of attributes and tags to be valid (even for XHTML output). It also pays attention to the well-formed notation!

Note: Deciding which tags and which attributes can be used in the text is fully user configurable. This demonstrates one example from the distribution.

Lists

Bulleted lists are written using *, + or -. It must be written at the very beginning of the line and followed by a space.

-   Red
-   Green
-   Blue
<ul>
	<li>Red</li>

	<li>Green</li>

	<li>Blue</li>
</ul>
  • Red
  • Green
  • Blue

Numbered Lists

Texy knows these five ways of writing (the first two are equivalent):

1)  Learn
2)  Learn
3)  Learn

a)  Long
b)  Wide
c)  Shortsighted

A)  DOS
B)  Windows
C)  Linux

I)  Yesterday
II)  Today
III)  Tomorrow
<ol>
	<li>Learn</li>

	<li>Learn</li>

	<li>Learn</li>
</ol>

<ol style="list-style-type:lower-alpha">
	<li>Long</li>

	<li>Wide</li>

	<li>Shortsighted</li>
</ol>

<ol style="list-style-type:upper-alpha">
	<li>DOS</li>

	<li>Windows</li>

	<li>Linux</li>

	<li>Yesterday</li>
</ol>

<ol style="list-style-type:upper-roman">
	<li>Today</li>

	<li>Tomorrow</li>
</ol>
  1. Learn
  2. Learn
  3. Learn
  1. Long
  2. Wide
  3. Shortsighted
  1. DOS
  2. Windows
  3. Linux
  4. Yesterday
  1. Today
  2. Tomorrow

Nested Lists

a)  Bird
  I)  Bird
    -   Red
    -   Green
    -   Blue
  II)  McHale
  III)  Parish
b)  McHale
c)  Parish
      1)  Bird
      2)  McHale
      3)  Parish
<ol style="list-style-type:lower-alpha">
	<li>Bird
		<ol style="list-style-type:upper-roman">
			<li>Bird
				<ul>
					<li>Red</li>

					<li>Green</li>

					<li>Blue</li>
				</ul>
			</li>

			<li>McHale</li>

			<li>Parish</li>
		</ol>
	</li>

	<li>McHale</li>

	<li>Parish
		<ol>
			<li>Bird</li>

			<li>McHale</li>

			<li>Parish</li>
		</ol>
	</li>
</ol>

Definition List

Wild Bill concert:
     - date: 9 December 2004
     - place: Vodová Hall, Brno
     - price: 260 CZK
<dl>
	<dt>Wild Bill concert</dt>

	<dd>date: 9 December 2004</dd>

	<dd>place: Vodová Hall, Brno</dd>

	<dd>price: 260 CZK</dd>
</dl>
Wild Bill concert
date: 9 December 2004
place: Vodová Hall, Brno
price: 260 CZK

With modifiers

The modifier that affects the entire list is listed in the line before it. Others (classic) at the end of the line:

.{color:red}
triangl:   .{color:blue}
    - triangle      .{color:green}
    - untuned percussion musical instrument
    - tringulation tower
triangl
triangle
untuned percussion musical instrument
tringulation tower

Modifiers

Texy's most powerful weapon. The following types of modifiers can be used:

  • (caption) adds a title to the object (or alternative text to images)
  • [class1 class2 #id] specifying the class and / or ID of the element
  • {class: blue} direct style notation
  • {target: _blank} or direct entry of HTML attributes
  • horizontal alignment:
    • left <
    • right >
    • centered <>
    • to block =
  • vertical alignment: (only for tables)
    • up ^
    • center –
    • down _

Modifiers are written continuously (without spaces) and must be preceded by a dot. So for example .(description)[left] sets the title attribute to description and the class to left.

Modifiers are always written rightmost.

Example of applying a modifier to a paragraph of text:

Centered with a modifier  .<>

Colored by a modifier .{color:blue; lang: cs}
<p style="text-align:center">Centered with a modifier</p>

<p lang="cs" style="color:blue">Colored by a modifier</p>

Typography

This includes all modifications and replacements of the text that modify its appearance in accordance with typographic rules and the like:

- "English" 'typographic' quotation marks
- dash vs. hyphen: 10-15 vs. česko-slovenský
- dash: one -- two
- typographic cross for dimensions 10 x 20
- arrows <- and -> and <-> ;
- three dots...
- preservation of HTML entities &amp;
- replacing (TM) or (R) with the relevant entities (C)
  • “English” ‘typographic’ quotation marks
  • dash vs. hyphen: 10–15 vs. česko-slovenský
  • dash: one – two
  • typographic cross for dimensions 10 × 20
  • arrows ← and → and ↔ ;
  • three dots…
  • preservation of HTML entities &
  • replacing ™ or ® with the relevant entities (C)

Spaces handling:

- inserting unbreakable spaces for one-letter prepositions (a car)
- unbreakable spaces for telephone numbers +420 776 552 046
inserting unbreakable spaces for one-letter prepositions (a&nbsp;car)

unbreakable spaces for telephone numbers +420&nbsp;776&nbsp;552&nbsp;046

Note: Replacements are usually governed by other rules that determine when symbol replace and when not. For example, the arrow -> cannot be at the end of a line, etc. So don't be surprised if in some cases Texy doesn't make the substitution.

Abbreviations, Acronyms

Double parenthetical notation is used:

one word: NATO((North Atlantic Treaty Organisation))

multiword: "et al."((and more))
<p>one word: <abbr title="North Atlantic Treaty Organisation" class="about">NATO</abbr></p>

<p>multiword: <abbr title="and more" class="about">et al.</abbr></p>

Clickable Web Addresses

Automatic conversion of web addresses and emails into a clickable form

more information at www.texy.info and also ...

more information at www.texy.info and also …

Long Words Hyphenation

Very interesting and important function of Texy. Long words can disrupt the appearance of the page, so it's a good idea to tell your browser where to wrap them. Texy searches for these places taking into account national customs, so he divides the word according to syllables:

nejneobhospodařovávatelnějšími
nejneobhospoda&shy;řovávatelnější&shy;mi</p

Note: the word length limit is optional

Tables

Example of a simple table, columns are separated by a character |

| first col | second col | third col
| Adam      | Eva        | Franta

And the result is:

first col second col third col
Adam Eva Franta

The table header can be defined with this notation:

|-----------------------------
| First Name | Last Name | Age
|----------------------------
| Jesus      | Christ    | 33
| Cecilie    | Svobodova | 74
First Name Last Name Age
Jesus Christ 33
Cecilie Svobodova 74

If the header does not form a row (rows), we can define it at the cell level. Just insert an asterisk immediately after the | character

|* First Name | Jesus    | Cecilie
|* Last Name  | Christ   | Svobodova
|* Age        | 33       | 74
First Name Jesus Cecilie
Last Name Christ Svobodova
Age 33 74

Merging Columns

Notice the double ||:

|-----------------------------
| Name                  || Age
|----------------------------
| Jesus      | Christ    | 33
Name Age
Jesus Christ 33

Merging Rows

Notice the ^ character symbolizing the upward direction:

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

Modifiers

The following rules apply:

  • a modifier affecting the whole table is inserted immediately before the table
  • the modifier affecting the line is inserted at the end of the line
  • the modifier affecting the column is inserted at the beginning of the cell (left in the cell)
  • and finally the modifier affecting the cell is inserted at the end of the cell (right in the cell)

Take a look at an example.

.(people)
| .{color: green} first col | second col      .>| third col | .{font-style:italic}
| Adam                      | Eva .{color: blue}| Franta    |

There is:

  • .(people) table modifier
  • .{color: green} column modifier
  • .{font-style:italic} line modifier
  • .{color: blue} a také .> cell modifier

So the resulting table looks like this:

first col second col third col
Adam Eva Franta