Hello,
I'm here as a simple amateur of all kinds of languages (including some human ones ;-)). Discovered this project while searching for improvements for the wikiDot markup, a really great wiki which engine is beeing delivered as open source. Have looked around, thought and designed a lot already. I'll try to expose the results of this reflexion progressively, here and on talk pages for specific topics.
note : This page is a work in progress. I use it as a repository for ideas, views and explorations -- anything may change at any time. Some of the points may later migrate to wikiCreole talk pages or new pages to better feed the common reflexion. Feel free to comment anyway, either by letting a note (clearly distinguished and signed), or on my talk page (then say what point you comment). Thank you.
personal position#
I'm rather looking for a basically better wiki markup language, than for one compatible with the present markups. So that principles such as
- no conflict
- not new
- (not really expressed but very present:) mostly used
- author-friendliness
- clarity/simplicity/consistency
- speed to learn/memorize/master
test : ##monospace## li**tt**eral ##b**o**th##
glossary#
style tag :
A kind of tag used to enclose a segment of text.
Used to apply the same formatting to the whole segment.
In creole, double characters are used : ##.
It may be good if the same simple character could be used at the start of an alinea to set its global style, optionnally in addition to a layout tag.
segment :
A bit of text inside a logical_line
May be enclosed in delimiter tag to indicate its style.
newline character & newline tag : a mark (LF and/or CR characters) usually inserted by pressing the return/enter key.
A newline is both a plain text character that creates a new visual line (sub-alinea) and, in most cases, a tag that starts a new line-component.
Logically enough, a newline preceeded by an escape (plain-character) tag becomes, or may become, a simple character newline : it loses its tag function but remains a plain character, thus starting a new visual line without marking the end of the alinea.
In many wiki languages, including creole, a newline works as above specified for all kinds of alineas except for regular text paragraphs. In that case, a single newline is ignored ; a logical newline is marked by a double newline ; a visual newline is set by a special break tag.
alinea, sub-alinea & visual line :
An alinea is a piece of text ended by a newline tag. In regular text, an alinea is a paragraph ; it can also be a header, a list item, a table row, when started with the appropriate layout tag.
A sub-alinea is piece of text ended by a newline character.
Alineas & sub-alineas are usually, and automatically, wrapped in several visual lines to fit in the window width.
Note : the latin word "alinea" avoids confusion with "paragraph" :
- for authors, as a paragraph is a kind of alinea
- for techos, as paragraph is an html tag / element
layout tag : A kind of mark/tag placed at the start of an alinea
Used to set its layout.
block : Either a sequence of segments of the same type (e.g. a list made of list items), or a part of page included as a hole instead of beeing written (e.g. TOC, note list, image)
see "page structure"
section = header / content : Major semantic tailoring of a page.
A header is a segment ; may be split into title / subtitle.
A content is a sequence of blocks
see "page structure"
page structure#
please improve & criticize on talk pagepage component tree#
page section section header content header title subtitle content block line (logical) line (visual) segment character
(A header could be a single-section block, thus both a section and a block ? Then, how to mark a subtitle ? There should be a tag. Splitting a header with a visual newline is not coherent, as it's not a tag. If we choose a new tag (e.g. '!'), then a header becomes a block with 2 alineas. Similar to a definition block.)
This is a semantic, informal, structure : it is not actually marked by the tagged format, the reader only deducts it from the sequence of different page elements. Note that a header marks the start of a section (also if the following content is blank or even empty). But there is no delimited section in fact. Idem for alineas in a block. Idem for segments in a line.
However, even if not formally marked, this structure could rather easily be constructed by an dedicated parser.
The page itself is a section, id est a header-body pattern. But it's not a sequence of sub-sections, as its body (content) can start -- and often actually starts -- with an untitled introduction. Idem for the sub-sections.
Thus, each body, including the page's content, is a series of blocks. Some of them can be headers, thus informally creating new sections.
semantic page structure#
key :
? ==> this element can be present or not (0 or 1 time)
+ ==> this element can be repeated (1 or more times)
¤ ==> this element can be present any number of times (0, 1 or more times)
page : header body header : title sub_title? body : block¤ block : header | paragraph_block | bullet_list | number_list | table | imported_block | computed_block paragraph_block : paragraph+ bullet_list : bullet_list_item NL number_list : number_list_item NL table : table_row imported_block : {{//type// //ID// (|//parameter//=//value//)*}} computed_block : ((//type// //ID// (|//parameter//=//value//)*))
note the major difference between semantic & markup page structures (lol)
markup page structure#
page : logical_line¤ logical_line : title | sub_title | paragraph | bullet_list_item | number_list_item | table_row | imported_block | computed_block
alinea components structure#
header : title sub_title? title : =+ text NL sub_title : !+ text NL bullet_list_item : *+ text NL number_list_item : *+ text NL table_row : (|text)+ | paragraph : logical_line_style_mark* text NL
inline text structure#
text : plain_text | styled_text | link | variable styled_text : distinct_text | important_text | litteral_text | monospace_text distinct_text : //plain_text// important_text : **plain_text** litteral_text : ??plain_text?? monospace_text : ??plain_text?? link : [[#?address (| text)?]] variable : <<//name//>> plain_text : (text_character | \tag_character)*
style markers :#
distinct : / important : * litteral : ? monospace : ? code : ?
special tags#
raw character (escape) : '\'glue & scissor (see below) : ''
This mark is used to make a visual line out of two source lines, or the contrary -- may be useful ? Don't confuse with the alinea / visual line distinction discussed above. This tag marks a difference between source and displayed text.
what I prize in creole#
- the word "creole"
- the consensus processus
- the focus on the most important features
- the trend toward intuitiveness (self-explaining tags)
- more & more
what I miss / what I don't like#
topics that will be further explained below/later
- page title (!=page_name) & subtitle
- sub-headers
- "distinct" (example, quotation, remark, advice) & "important" segments parallel to "distinct" (italic) & "important" (bold) segments
- syntax for all kinds of magic-words, variables & functions -- see for instance wikiMedia variables
- syntax for "imported" blocks (page, image, widget...)
- syntax for "computed" blocks (toc, index, page list...)
- nowiki and monospace should be totally distinct !
- syntax for native (x)html, including (java)scripts (I propose most simply to double <> tags to )