diff options
Diffstat (limited to 'trunk/doc/markdown.doc')
-rw-r--r-- | trunk/doc/markdown.doc | 605 |
1 files changed, 0 insertions, 605 deletions
diff --git a/trunk/doc/markdown.doc b/trunk/doc/markdown.doc deleted file mode 100644 index d571eef..0000000 --- a/trunk/doc/markdown.doc +++ /dev/null @@ -1,605 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2012 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ -/*! \page markdown Markdown support - -[TOC] - -[Markdown] support -was introduced in doxygen version 1.8.0. It is a plain text formatting -syntax written by John Gruber, with the following underlying design goal: - -> The design goal for Markdown's formatting syntax is to -> make it as readable as possible. The idea is that a Markdown-formatted -> document should be publishable as-is, as plain text, without -> looking like it's been marked up with tags or formatting instructions. -> While Markdown's syntax has been influenced by several existing -> text-to-HTML filters, the single biggest source of inspiration -> for Markdown's syntax is the format of plain text email. - -In the \ref markdown_std "next section" the standard Markdown features -are briefly discussed. The reader is referred to the [Markdown site][markdown] -for more details. - -Some enhancements were made, for instance [PHP Markdown Extra][mdextra], and -[GitHub flavored Markdown][github]. The section \ref markdown_extra discusses -the extensions that doxygen supports. - -Finally section \ref markdown_dox discusses some specifics for doxygen's -implementation of the Markdown standard. - -[markdown]: http://daringfireball.net/projects/markdown -[mdextra]: http://michelf.com/projects/php-markdown/extra/ -[github]: http://github.github.com/github-flavored-markdown/ - -\section markdown_std Standard Markdown - -\subsection md_para Paragraphs - -Even before doxygen had Markdown support it supported the same way -of paragraph handling as Markdown: to make a paragraph you just separate -consecutive lines of text by one or more blank lines. - -An example: - - Here is text for one paragraph. - - We continue with more text in another paragraph. - -\subsection md_headers Headers - -Just like Markdown, doxygen supports two types of headers - -Level 1 or 2 headers can be made as the follows - - This is an level 1 header - ========================= - - This is an level 2 header - ------------------------- - -A header is followed by a line containing only ='s or -'s. -Note that the exact amount of ='s or -'s is not important. - -Alternatively, you can use #'s at the start of a line to make a header. -The number of #'s at the start of the line determines the level (up to 6 levels are supported). -You can end a header by any number of #'s. - -Here is an example: - - # This is a level 1 header - - ### This is level 3 header ####### - -\subsection md_blockquotes Block quotes - -Block quotes can be created by starting each line with one or more >'s, -similar to what is used in text-only emails. - - > This is a block quote - > spanning multiple lines - -Lists and code blocks (see below) can appear inside a quote block. -Quote blocks can also be nested. - -Note that doxygen requires that you put a space after the (last) > character -to avoid false positives, i.e. when writing - - 0 if OK\n - >1 if NOK - -the second line will not be seen as a block quote. - -\subsection md_lists Lists - -Simple bullet lists can be made by starting a line with -, +, or *. - - - Item 1 - - More text for this item. - - - Item 2 - + nested list item. - + another nested item. - - Item 3 - -List items can span multiple paragraphs (if each paragraph starts with -the proper indentation) and lists can be nested. -You can also make a numbered list like so - - 1. First item. - 2. Second item. - -\subsection md_codeblock Code Blocks - -Preformatted verbatim blocks can be created by indenting -each line in a block of text by at least 4 extra spaces - - This a normal paragraph - - This is a code block - - We continue with a normal paragraph again. - -Doxygen will remove the mandatory indentation from the code block. -Note that you cannot start a code block in the middle of a paragraph -(i.e. the line preceding the code block must be empty). - -See section \ref mddox_code_blocks for more info how doxygen handles -indentation as this is slightly different than standard Markdown. - -\subsection md_rulers Horizontal Rulers - -A horizontal ruler will be produced for lines containing at least three or more -hyphens, asterisks, or underscores. The line may also include any amount of whitespace. - -Examples: - - - - - - ______ - -Note that using asterisks in comment blocks does not work. See -\ref mddox_stars for details. - -\subsection md_emphasis Emphasis - -To emphasize a text fragment you start and end the fragment with an underscore or star. -Using two stars or underscores will produce strong emphasis. - -Examples: - - *single asterisks* - - _single underscores_ - - **double asterisks** - - __double underscores__ - -See section \ref mddox_emph_spans for more info how doxygen handles -emphasis spans slightly different than standard Markdown. - -\subsection md_codespan code spans - -To indicate a span of code, you should wrap it in backticks (`). Unlike code blocks, -code spans appear inline in a paragraph. An example: - - Use the `printf()` function. - -To show a literal backtick inside a code span use double backticks, i.e. - - To assign the output of command `ls` to `var` use ``var=`ls```. - -See section \ref mddox_code_spans for more info how doxygen handles -code spans slightly different than standard Markdown. - -\subsection md_links Links - -Doxygen supports both styles of make links defined by Markdown: *inline* and *reference*. - -For both styles the link definition starts with the link text delimited by [square -brackets]. - -\subsubsection md_inlinelinks Inline Links - -For an inline link the link text is followed by a URL and an optional link title which -together are enclosed in a set of regular parenthesis. -The link title itself is surrounded by quotes. - -Examples: - - [The link text](http://example.net/) - [The link text](http://example.net/ "Link title") - [The link text](/relative/path/to/index.html "Link title") - [The link text](somefile.html) - -In addition doxygen provides a similar way to link a documented entity: - - [The link text](@ref MyClass) - -\subsubsection md_reflinks Reference Links - -Instead of putting the URL inline, you can also define the link separately -and then refer to it from within the text. - -The link definition looks as follows: - - [link name]: http://www.example.com "Optional title" - -Instead of double quotes also single quotes or parenthesis can -be used for the title part. - -Once defined, the link looks as follows - - [link text][link name] - -If the link text and name are the same, also - - [link name][] - -or even - - [link name] - -can be used to refer to the link. -Note that the link name matching is not case sensitive -as is shown in the following example: - - I get 10 times more traffic from [Google] than from - [Yahoo] or [MSN]. - - [google]: http://google.com/ "Google" - [yahoo]: http://search.yahoo.com/ "Yahoo Search" - [msn]: http://search.msn.com/ "MSN Search" - -Link definitions will not be visible in the output. - -Like for inline links doxygen also supports \@ref inside a link definition: - - [myclass]: @ref MyClass "My class" - -\subsection md_images Images - -Markdown syntax for images is similar to that for links. -The only difference is an additional ! before the link text. - -Examples: - - ![Caption text](/path/to/img.jpg) - ![Caption text](/path/to/img.jpg "Image title") - ![Caption text][img def] - ![img def] - - [img def]: /path/to/img.jpg "Optional Title" - -Also here you can use \@ref to link to an image: - - ![Caption text](@ref image.png) - ![img def] - - [img def]: @ref image.png "Caption text" - -The caption text is optional. - -\subsection md_autolink Automatic Linking - -To create a link to an URL or e-mail address Markdown supports the following -syntax: - - <http://www.example.com> - <address@example.com> - -Note that doxygen will also produce the links without the angle brackets. - -\section markdown_extra Markdown Extensions - -\subsection md_toc Table of Contents - -Doxygen supports a special link marker `[TOC]` which can be placed in a page -to produce a table of contents at the start of the page, listing all sections. - -Note that using `[TOC]` is the same as using a -\ref cmdtableofcontents "\\tableofcontents" command. - -\subsection md_tables Tables - -Of the features defined by "Markdown Extra" is support for -<a href="http://michelf.com/projects/php-markdown/extra/#table">simple tables</a>: - -A table consists of a header line, a separator line, and at least one -row line. Table columns are separated by the pipe (|) character. - -Here is an example: - - First Header | Second Header - ------------- | ------------- - Content Cell | Content Cell - Content Cell | Content Cell - -which will produce the following table: - -First Header | Second Header -------------- | ------------- -Content Cell | Content Cell -Content Cell | Content Cell - -Column alignment can be controlled via one or two colons -at the header separator line: - - | Right | Center | Left | - | ----: | :----: | :---- | - | 10 | 10 | 10 | - | 1000 | 1000 | 1000 | - -which will look as follows: - -| Right | Center | Left | -| ----: | :----: | :---- | -| 10 | 10 | 10 | -| 1000 | 1000 | 1000 | - -\subsection md_fenced Fenced Code Blocks - -Another feature defined by "Markdown Extra" is support for -<a href="http://michelf.com/projects/php-markdown/extra/#fenced-code-blocks"> -fenced code blocks</a>: - -A fenced code block does not require indentation, and is -defined by a pair of "fence lines". Such a line consists of 3 or -more tilde (~) characters on a line. The end of the block should have the -same number of tildes. Here is an example: - - - This is a paragraph introducing: - - ~~~~~~~~~~~~~~~~~~~~~ - a one-line code block - ~~~~~~~~~~~~~~~~~~~~~ - -By default the output is the same as for a normal code block. - -For languages supported by doxygen you can also make the code block -appear with syntax highlighting. To do so you need to -indicate the typical file extension that corresponds to the -programming language after the opening fence. For highlighting according -to the Python language for instance, you would need to write the following: - - ~~~~~~~~~~~~~{.py} - # A class - class Dummy: - pass - ~~~~~~~~~~~~~ - -which will produce: -~~~~~~~~~~~~~{.py} -# A class -class Dummy: - pass -~~~~~~~~~~~~~ - -and for C you would write: - - ~~~~~~~~~~~~~~~{.c} - int func(int a,int b) { return a*b; } - ~~~~~~~~~~~~~~~ - -which will produce: - -~~~~~~~~~~~~~~~{.c} -int func(int a,int b) { return a*b; } -~~~~~~~~~~~~~~~ - -The curly braces and dot are optional by the way. - -\subsection md_header_id Header Id Attributes - -Standard Markdown has no support for labeling headers, which -is a problem if you want to link to a section. - -PHP Markdown Extra allows you to label a header by adding -the following to the header - - Header 1 {#labelid} - ======== - - ## Header 2 ## {#labelid2} - -To link to a section in the same comment block you can use - - [Link text](#labelid) - -to link to a section in general, doxygen allows you to use \@ref - - [Link text](@ref labelid) - -Note this only works for the headers of level 1 to 4. - -\section markdown_dox Doxygen specifics - -Even though doxygen tries to following the Markdown standard as closely as -possible, there are couple of deviation and doxygen specifics additions. - -\subsection md_page_header Including Markdown files as pages - -Doxygen can process files with Markdown formatting. -For this to work the extension for such a file should -be `.md` or `.markdown` (see -\ref cfg_extension_mapping "EXTENSION_MAPPING" if your Markdown files have -a different extension, and use `md` as the name of the parser). -Each file is converted to a page (see the \ref cmdpage "page" command for -details). - -By default the name and title of the page are derived from the file name. -If the file starts with a level 1 header however, it is used as the title -of the page. If you specify a label for the -header (as shown \ref md_header_id "here") doxygen will use that as the -page name. - -If the label is called `index` or `mainpage` doxygen will put the -documentation on the front page (`index.html`). - -Here is an example of a file `README.md` that will appear as the main page -when processed by doxygen: - - My Main Page {#mainpage} - ============ - - Documentation that will appear on the main page - -\subsection md_html_blocks Treatment of HTML blocks - -Markdown is quite strict in the way it processes block-level HTML: - -> block-level HTML elements — e.g. -> `<div>`, `<table>`, `<pre>`, `<p>`, etc. — -> must be separated from surrounding content by blank lines, -> and the start and end tags of the block should not be indented -> with tabs or spaces. - -Doxygen does not have this requirement, and will also process -Markdown formatting inside such HTML blocks. The only exception is -`<pre>` blocks, which are passed untouched (handy for ASCII art). - -Doxygen will not process Markdown formatting inside verbatim or code blocks, -and in other sections that need to be processed without changes -(for instance formulas or inline dot graphs). - -\subsection mddox_code_blocks Code Block Indentation - -With Markdown any block that is indented by 4 spaces (and 8 spaces -inside lists) is treated as a code block. This indentation amount -is absolute, i.e. counting from the start of the line. - -Since doxygen comments can appear at any indentation level -that is required by the programming language, it -uses a relative indentation instead. The amount of -indentation is counted relative to the preceding paragraph. -In case there is no preceding paragraph (i.e. you want to start with a -code block), the minimal amount of indentation of the whole comment block -is used as a reference. - -In most cases this difference does not result in different output. -Only if you play with the indentation of paragraphs the difference -is noticeable: - - text - - text - - text - - code - -In this case Markdown will put the word code in a code block, -whereas Doxygen will treat it as normal text, since although the absolute -indentation is 4, the indentation with respect to the previous paragraph -is only 1. - -Note that list markers are not counted when determining the -relative indent: - - 1. Item1 - - More text for item1 - - 2. Item2 - - Code block for item2 - -For Item1 the indentation is 4 (when treating the list marker as whitespace), -so the next paragraph "More text..." starts at the same indentation level -and is therefore not seen as a code block. - -\subsection mddox_emph_spans Emphasis limits - -Unlike standard Markdown, doxygen will not touch internal underscores or -stars, so the following will appear as-is: - - a_nice_identifier - -Futhermore, a `*` or `_` only starts an emphasis if -- it is followed by an alphanumberical character, and -- it is preceded by a space, newline, or one the following characters `<{([,:;` - -An emphasis ends if -- it is not following by an alphanumerical character, and -- it is not preceded by a space, newline, or one the following characters `({[<=+-\@` - -Lastly, the span of the emphasis is limited to a single paragraph. - - -\subsection mddox_code_spans Code Spans Limits - -Note that unlike standard Markdown, doxygen leaves the following untouched. - - A `cool' word in a `nice' sentence. - -In other words; a single quote cancels the special treatment of a code span -wrapped in a pair of backtick characters. This extra restriction was -added for backward compatibility reasons. - -\subsection mddox_lists Lists Extensions - -With Markdown two lists separated by an empty line are joined together into -a single list which can be rather unexpected and many people consider it to -be a bug. Doxygen, however, will make two separate lists as you would expect. - -Example: - - - Item1 of list 1 - - Item2 of list 1 - - 1. Item1 of list 2 - 2. Item2 of list 2 - -Historically doxygen has an additional way to create numbered -lists by using `-#` markers: - - -# item1 - -# item2 - -\subsection mddox_stars Use of asterisks - -Special care has to be taken when using *'s in a comment block -to start a list or make a ruler. - -Doxygen will strip off any leading *'s from the comment before doing -Markdown processing. So although the following works fine - -@verbatim - /** A list: - * * item1 - * * item2 - */ -@endverbatim - -When you remove the leading *'s doxygen will strip the other stars -as well, making the list disappear! - -Rulers created with *'s will not be visible at all. They only work -in Markdown files. - -\subsection mddox_limits Limits on markup scope - -To avoid that a stray * or _ matches something many paragraphs later, -and shows everything in between with emphasis, doxygen limits the scope -of a * and _ to a single paragraph. - -For a code span, between the starting and ending backtick only two -new lines are allowed. - -Also for links there are limits; the link text, and link title each can -contain only one new line, the URL may not contain any newlines. - -\section markdown_debug Debugging of problems - -When doxygen parses the source code it first extracts the comments blocks, -then passes these through the Markdown preprocessor. The output of the -Markdown preprocessing consists of text with \ref cmd_intro "special commands" -and \ref htmlcmds "HTML commands". -A second pass takes the output of the Markdown preprocessor and -converts it into the various output formats. - -During Markdown preprocessing no errors are produced. Anything that -does not fit the Markdown syntax is simply passed on as-is. In the subsequent -parsing phase this could lead to errors, which may not always be obvious -as they are based on the intermediate format. - -To see the result after Markdown processing you can run doxygen with the -`-d Markdown` option. It will then print each comment block before and -after Markdown processing. - -*/ |