diff options
author | Karl Berry <karl@freefriends.org> | 2009-02-26 00:51:49 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-02-26 00:51:49 +0000 |
commit | b3fd7332ea18e6172db25318716832397b625ddd (patch) | |
tree | 27ded3c17ec00519723a3a8b29e84680e60bedd4 /Master/texmf-dist/tex/latex | |
parent | 951ab8ce2fe8420509db19af0937bdddb314b1de (diff) |
new latex package nicetext (24feb09)
git-svn-id: svn://tug.org/texlive/trunk@12236 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/nicetext/niceverb.sty | 210 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/nicetext/wiki.sty | 376 |
2 files changed, 586 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/nicetext/niceverb.sty b/Master/texmf-dist/tex/latex/nicetext/niceverb.sty new file mode 100644 index 00000000000..c82ae3deaa0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nicetext/niceverb.sty @@ -0,0 +1,210 @@ +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesPackage{niceverb}[2009/02/21 + minimize \string\verb\space code (UL)] + +%% Copyright (C) 2009 Uwe Lueck, +%% http://www.contact-ednotes.sty.de.vu +%% -- author-maintained in the sense of LPPL below -- +%% +%% This file can be redistributed and/or modified under +%% the terms of the LaTeX Project Public License; either +%% version 1.3a of the License, or any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% We did our best to help you, but there is NO WARRANTY. +%% +%% Please report bugs, problems, and suggestions via +%% +%% http://www.contact-ednotes.sty.de.vu +%% +%% === Switching category codes === +\providecommand{\CatCode}{\catcode`} +% \providecommand*{\MakeActive}[1]{\CatCode#1\active} +\providecommand*{\MakeAlign} [1]{\CatCode#14\relax} +\providecommand*{\MakeLetter}[1]{\CatCode#111\relax} +\providecommand*{\MakeOther} [1]{\CatCode#112\relax} +\providecommand*{\MakeSub} [1]{\CatCode#18\relax} + +\newcommand*{\MakeActiveLet}[2]{%% cf. \@sverb & \do@noligs + \CatCode#1\active + \begingroup + \lccode`\~`#1\relax \lowercase{\endgroup \let~#2}} + +\MakeLetter\_ + +\newcommand*{\make_iii_other}{\MakeOther\\\MakeOther\{\MakeOther\}} + +%% === Parsimonious version of &\verb === +\newcommand*{\begin_min_verb}{% + \relax \ifmmode \hbox \else \leavevmode\null \fi + %% standard, for $$...$$ + \bgroup \tt %%%\let\do\MakeOther \dospecials + \MakeLetter\_\MakeLetter\@} +\newcommand*{\SimpleVerb}[1]{% + %% mainly avoid \verb's noligs list which overrides definitions + %% of some active characters, while cmtt doesn't have any + %% ligatures anyway. + \ifx\protect\@typeset@protect + \begin_min_verb \make_iii_other \MakeActiveLet#1\egroup + \else \string\SimpleVerb \string#1\fi} + +%% === Single quotes make code === +\newcommand*{\lq_verb}{% + \ifx\protect\@typeset@protect + \expandafter \lq_double_test + \else \lq \fi} +% \ifcat\noexpand'\noexpand~% +% \expandafter\expandafter\expandafter +% \protect_corresp_quotes +% \else +% \RqVerb +% \fi +% \fi} +\newcommand*{\lq_double_test}{% + %% test settles next catcode, better switch to ``other'' + %% in advance: + \begingroup \let\do\MakeOther \dospecials + \futurelet\let_token \lq_double_decide} +\newcommand*{\lq_double_decide}{% + \ifx\let_token\lq_verb + \endgroup + \lq\lq \expandafter \@gobble + %% corresponding right quotes will become ``other'' due to + %% having no space at the left. TODO to be changed with + %% wiki.sty + \else + \endgroup +% \expandafter \rq_verb + \expandafter \SimpleVerb \expandafter \'% + \fi} +% \newcommand*{\rq_verb}{\SimpleVerb\'} +% \AtBeginDocument{\MakeActiveLet\`\RqVerb} +\AtBeginDocument{\MakeActiveLet\`\lq_verb} + %% Strings referred to will be code + %% TODO to be changed with wiki.sty + +%% === Single mark for reference to commands === +\newcommand*{\CmdSyntaxVerb}{% + \ifx\protect\@typeset@protect + \expandafter \cmd_syntax_verb + \else %% thinking of .aux only + \string\CmdSyntaxVerb \expandafter \string + \fi} +\newcommand*{\cmd_syntax_verb}[1]{% + \begin_min_verb \string#1\futurelet\let_token \after_cs} + +\AtBeginDocument{\MakeActiveLet\&\CmdSyntaxVerb} + %% not needed with \Auto... OTHERWISE useful in args! + %% TODO \MakeAmpCmdSyntax + %% TODO \let\endcell& (wie \endline, \endgraf) \MakeEndCell +\newcommand*{\after_cs}{% + \ifcat\noexpand\let_token a\egroup \space + \else \expandafter \decide_verb \fi} +\newcommand*{\test_more_verb}{\futurelet\let_token \decide_verb} +\newcommand*{\decide_verb}{% +% \show\let_token + \jumpteg_on_with\bgroup\braces_verb + \jumpteg_on_with[\brackets_verb + \jumpteg_on_with*\star_verb + \egroup} + %% CAUTION/TODO wrong before (... if cmd without arg + %% use \ then or choose usual verb... + %% or \MakeLetter\( etc. ... or \xspace +\newcommand*{\jumpteg_on_with}[2]{% + \ifx\let_token#1\do_jumpteg_with#2\fi} + %% TODO cf. xfor, xspace (break@loop); + %% \DoOrBranch#1...#1 or so +\def\do_jumpteg_with#1#2\egroup{\fi#1} +\def\braces_verb#1{\string{#1\string}\test_more_verb} +\def\brackets_verb[#1]{[#1]\test_more_verb} +\def\star_verb*{*\test_more_verb} + + +\makeatletter + +%% === Escape makes meta-code === +\DeclareRobustCommand*{\BuildCsSyntax}{% + \futurelet\let_token \build_cs_syntax_sp} +\newcommand*{\build_cs_syntax_sp}{% + \ifx\let_token\@sptoken \else %% TODO ^^M!? + \expandafter \start_build_cs_syntax + \fi} +\newcommand*{\start_build_cs_syntax}[1]{% + \edef\string_built{\string#1}%% #1 may be active + \MakeLetter\_\MakeLetter\@%% CAUTION, cf. ... + \test_more_cs} +\newcommand*{\test_more_cs}{% + \futurelet\let_token \decide_more_cs} +\newcommand*{\decide_more_cs}{% + \ifcat\noexpand\let_token a\expandafter \add_to_cs + \else + \MakeSub\_\MakeOther\@% + \expandafter \in@ \expandafter + {\csname \string_built \expandafter \endcsname + \expandafter}\expandafter{\niceverbNoVerbList}% + \ifin@ + \csname \string_built + \expandafter\expandafter\expandafter \endcsname + \else + \begin_min_verb \@backslashchar\string_built + \expandafter\expandafter\expandafter \test_more_verb + \fi + \fi} + %% TODO such \if nestings with ifthen!? + %% cf.: +% \let\let_token,\typeout{\meaning\let_token} + %% TEST TODO fuer xspace!? (\ifin@) +\newcommand*{\add_to_cs}[1]{% + \edef\string_built{\string_built#1}\test_more_cs} +\newcommand*{\AutoCmdSyntaxVerb}{\MakeActiveLet\\\BuildCsSyntax} + %% TODO or \niceverbswitch... + +\newcommand*{\EndAutoCmdSyntaxVerb}{\CatCode\\\z@} +\newcommand*{\NormalCommand}{} \let\NormalCommand\@nameuse +%% Were tests: +% \futurelet\LetToken\relax \relax +% \show\LetToken \typeout{\ifcat\noexpand\LetToken aa\else x\fi} + +\newcommand*{\niceverbNoVerbList}{% + \begin\end\item\verb\EndAutoCmdSyntaxVerb\NormalCommand + \section\subsection}%% TODO!? + +%% === Meta-variables === +\def\niceverb_meta#1>{% + \mbox{\normalfont\itshape $\langle$#1\/$\rangle$}} + %% TODO offer without angles as well +\AtBeginDocument{\MakeActiveLet\<\niceverb_meta} + %% difference to ltxguide.cls: also outside verbatim + +%% === Hash mark must be code === +\newcommand*{\param_verb}[1]{{\tt\##1}} +\AtBeginDocument{\MakeActiveLet\#\param_verb} + +%% === Single right quote for &\sf === +%% TODO fails in parentheses due to preserving apostrophes +\newcommand*{\niceverb_rq_sf}{% + \ifx\protect\@typeset@protect + \expandafter \niceverb_rq_sf_test + \else \rq \fi} + %% introduced another macro just to avoid more sequences + %% of \expandafter ... +\newcommand*{\niceverb_rq_sf_test}{% + \ifhmode \ifdim\lastskip>\z@ + \expandafter\expandafter\expandafter \niceverb_rq_sf_exec + %% TODO but after `('!? make \( active, also for \after_cs!? + \else \rq \fi + \else \ifvmode + \expandafter\expandafter\expandafter \niceverb_rq_sf_exec + \else \rq \fi + \fi} +{\CatCode\'\active \gdef\niceverb_rq_sf_exec#1'{\textsf{#1}}} +%% TODO to be changed with wiki.sty: +\AtBeginDocument{\MakeActiveLet\'\niceverb_rq_sf} + +%% TODO \niceverbswitch{<mode>}{<on/off>} (bzw. Doku ohne {}) + +%% === Leave package mode === +\makeatother +\MakeSub\_ + +\endinput diff --git a/Master/texmf-dist/tex/latex/nicetext/wiki.sty b/Master/texmf-dist/tex/latex/nicetext/wiki.sty new file mode 100644 index 00000000000..6fe7b4e4b46 --- /dev/null +++ b/Master/texmf-dist/tex/latex/nicetext/wiki.sty @@ -0,0 +1,376 @@ +\ProvidesPackage{wiki}[2008/07/02 v0.2 LaTeX through Wiki markup] +%% <- vorige Aenderungen gg. 2008/06/25 verworfen +%% +%% == Legal == +%% (C) 2008 Uwe Lueck http://contact-ednotes.sty.de.vu +%% License: http://www.latex-project.org/lppl/ +%% -- AUTHOR-MAINTAINED, NO WARRANTY! +%% +%% == Features == +%% +%% The `wiki' package enables LaTeX users to use some of the +%% markup used in editing Wikipedia pages, cf. +%% +%% http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet +%% +%% or German: +%% +%% http://de.wikipedia.org/wiki/Hilfe:Bearbeitungshilfe +%% http://de.wikipedia.org/wiki/Hilfe:Textgestaltung +%% +%% Advantages of such a kind of markup are: +%% +%% 1. easier and faster to type than LaTeX code; +%% +%% 2. intuitive, understandable at a glance; +%% +%% 3. in reading the source code of the document, +%% the markup doesn't much distract from the ''text'' +%% to be printed. +%% +%% There is a binary `easylatex' available on CTAN which is more +%% powerful than the `wiki' package; the idea here is that a ''macro +%% package'' doing something similar is easier to use and to customize. +%% +%% +%% === What the Package Supports === +%% +%% 1. ''Italics'' are marked up by surrounding pairs of apostrophes, +%% '''boldface''' needs one apostrophe more on each side. +%% Boldface and italics may be nested or overlap. +%% (This endangers quoting, but I have dealt with it.) +%% +%% 2. Surrounding ``equals'' symbols (`=') mark up section headings +%% etc.: `== Section ==', `=== Subsection ===', down to +%% `===== Subparagraph ====='. +%% +%% 3. If a line starts with `*', it becomes an item in an +%% `itemize' environment. Likewise, `#' creates an `enumerate' +%% environment, and `;' makes an item in a `discription' +%% environment (differs from Wiki! -- since I don't understand +%% what the Wiki version is good for). `:' makes a `quote' -- +%% while on Wikipedia instead is used for comments on talk +%% pages. But it is also used for indented math displays, +%% so it may be combined with $...$ here. +%% An indented line is typeset ''verbatim''. Each of these +%% environments is ended by a code line without leading blank +%% spaces. +%% +%% +%% === Limitations === +%% +%% 1. The markup ``language'' provided here replaces a few most +%% common LaTeX commands only in their most simple versions. +%% (Yet I think that already this makes the code more readable; +%% the more special cases are very rare.) E.g., it's not +%% possible to suppress the italic correction as with +%% `\textit{...\nocorr}'. However, in ``normal'' cases it +%% should be possible to use the more powerful LaTeX markup +%% mixed with ``Wiki'' markup. +%% +%% 2. The parsing algorithms employed here differ in outcome to +%% those of Wikipedia in difficult cases. +%% +%% 3. Tables, nesting lists, links, Wiki templates and tags +%% are not supported -- and I don't expect that I can afford +%% improving this soon! +%% +%% 4. I still have encountered problems that I didn't understand ... +%% +%% == Package Options and User Commands == +%% +%% \usepackage[<options>]{wiki}, of course. There are <options> +%% `noEnvironments', `noFonts', `noHeadings' giving up +%% functionality for lists etc., for italics and boldface, +%% for section headings etc., respectively. +%% +%% There are commands \wikimarkup, \wikiEnvironments, +%% \wikiFonts, \wikiHeadings to turn respective functionality on +%% (unless disabled by package option). \nowikimarkup, +%% \nowikiEnvironments, \nowikiFonts, \nowikiHeadings turn them +%% off. +%% +%% '''Vital:''' The package does ''not'' execute \wikimarkup +%% because this would have strange effects, e.g., packages +%% loaded later may break. The user must put activating +%% commands into the `document' environment, maybe just preceding +%% the first heading. +%% +%% Dangers to be avoided by \nowiki... are: +%% * \wikiHeadings (which also is executed by \wikimarkup) +%% disables TeX assignments using `='. +%% * \wikiEnvironments (executed by \wikimarkup) executes macros +%% at every end of a code line (containing no comment marke), +%% and it tries to typeset a following line verbatim if it is +%% indented. +%% +%% +%% == Implementation and Further Remarks == + +%% === Commands for Category Codes === +% \RequirePackage{fdcodes} + %% <- TODO -- or do away ... -> +\providecommand*\AssignCatCode[2]{\catcode`#1=#2\relax} +\providecommand*\MakeActive[1]{\catcode`#1=\active} +% \providecommand*\MakeLetter[1]{\catcode`#1=11\relax} + %% <- Declaring characters usable in command strings + %% Todo: print arrow indicators like ``->'' as real arrows +\providecommand*\MakeOther [1]{\catcode`#1=12\relax} + +\AssignCatCode{\_}{11} +% \MakeLetter\_ %% own macros somewhat LaTeX3-style +%% Todo \newcommand <-> \def !? + +%% === Package Options === +\DeclareOption{noFonts} {\let\wikiFonts \empty + \let\nowikiFonts \relax} +\DeclareOption{noHeadings} {\let\wikiHeadings \empty + \let\nowikiHeadings \relax} +\DeclareOption{noEnvironments}{\let\wikiEnvironments \empty + \let\nowikiEnvironments\relax} +\DeclareOption{noVerbatim}{% + \def\W_active_return{ \futurelet\@let@token\W_on_firsttoken}} + %% \[no]wikiVerbatim must wait, too complex 2008/07/01 +\ProcessOptions + +%% === Auxiliaries for both Fonts and Headings === + + \@tempswafalse + \ifx\wikiFonts \empty \else \@tempswatrue \fi + \ifx\wikiHeadings\empty \else \@tempswatrue \fi + \if@tempswa +\def\W_start_samecnt{\futurelet\@let@token\W_process_samecnt} +\def\W_init_samecnt#1#2#3{% + \let\W_samesymb =#1%% repeated symbol + \def\W_repllist {#2}% replacing strings + \def\W_incase_all{#3}% final replacement + \def\W_next##1{\W_start_samecnt}} +\def\W_process_samecnt{% + \expandafter \W_splitlist \W_repllist \@nil + \W_next} +\def\W_splitlist#1#2\@nil{% + \def\W_repllist{#2}% + \ifx\@let@token\W_samesymb + \ifx\W_repllist\empty \def\W_next##1{\W_incase_all}\fi + \else + \def\W_next{#1}% + \fi} + \fi + +%% === Italics and Boldface === + +%% ==== Code ==== + \ifx\wikiFonts\empty \else +\def\W_toggle#1#2#3{\def#1{\W_toggle#1{#3}{#2}}#2} +%% Cf. LaTeX's `\DeclareTextFontCommand': +\def\W_bf_toggle{% + \W_toggle\W_bf_toggle{\bfseries\W_maybe@ic}{\mdseries\W_maybe@ic}} +\def\W_maybe@ic{\futurelet\@let@token\W_maybe_maybe@ic} +\def\W_maybe_maybe@ic{% + \ifx\@let@token\W_rq_robust \else \expandafter \maybe@ic \fi} +\def\W_it_toggle{% + \W_toggle\W_it_toggle{\itshape\maybe@ic}{\upshape\maybe@ic}} +%% <- Doesn't support \nocorr. + +\def\W_rq_robust{%% will become meaning of single right quote. + \ifx\protect\@typeset@protect + \ifmmode \rq \else + \W_init_samecnt{\W_rq_robust}% + {\rq\W_it_toggle}% + {\W_bf_toggle}% + \expandafter\expandafter\expandafter \W_start_samecnt + \fi + \else \rq \fi} +%% Remark: +%% LaTeX's \rq expands to ``other'' apostrophe: +\CheckCommand*\rq{'} %% Must be before `\catcode`\' +%% \wikiFonts -- restoring `...' and ``...'' -- + \nowikiFonts: +%% requiring single left quote \active as well: +\CheckCommand*{\lq}{`} +\MakeActive\`\MakeActive\' +\def\wikiFonts{% + \MakeActive\`\MakeActive\'% + \def`##1'{\lq ##1\rq}% + \let'\W_rq_robust} +\def\nowikiFonts{\MakeOther`\MakeOther\'} +\MakeOther\` \MakeOther\' + \fi + +%% ==== Remarks ==== +%% Wiki: a''b'''cd typesets `b' in italic with an apostrophe, +%% a''b'''c'''d typsets all after `a' in italic with bold `b'. +%% One might use make a difference depending on \lastskip. +%% Wikimedia seems to read more ahead, maybe entire paragraphs. +%% %% <- Todo: try here!? (Test!) +%% +%% Todo: Variants using \textit and \textbf (option, switching +%% command) +%% +%% german.sty's "` and "' are not affected. +%% +%% Merit: ``...'' resembles ''...''; indeed Wikipedia Guidelines +%% demand to think which of both is appropriate in a +%% certain situation. + +%% A test about \ifx with active characters: +%\catcode`\`=\active \let`\rq \let'\rq +%\ifx`'\typeout{OHHH}\else \typeout{OCH}\fi %% OHHH +%% <- how typeset code commented out!? (^!? diff. comment char.!?) +%% indent %! TODO or no space after %!! TODO!! +%% xEDIT: dann Alt C/D fuer Kommentar/Dok./auskomm. (!?) !! + +%% === Section Headings === + + \ifx\wikiHeadings\empty \else +\providecommand*{\normalequals}{=} +\MakeActive\= +\def\wikiHeadings{\MakeActive\=\let=\W_eq_robust} +\def\nowikiHeadings{\MakeOther\=} +\def\W_eq_robust{% + \ifx\protect\@typeset@protect + %% in case without math mode in heading + \ifmmode \normalequals \else + \W_init_samecnt{\W_eq_robust}% + {\normalequals\W_sec\W_subsec\W_subsubsec + \W_para\W_subpara}% + {\W_bf_toggle}% + \expandafter\expandafter\expandafter \W_start_samecnt + \fi + \else \normalequals \fi} + +\def\W_sec #1=={\section{#1}} +\def\W_subsec #1==={\subsection{#1}} +\def\W_subsubsec #1===={\subsubsection{#1}} +\def\W_para #1====={\paragraph{#1}} +\def\W_subpara #1======{\subparagraph{#1}} + +\MakeOther\= + \fi + +%% Todo: think of reimplementation by the start-line +%% mechanism which is going to be used for lists. + +%% === Environments === +%% + \ifx\wikiEnvironments\empty \else + +%% ==== Prepare Dealing with Indents ==== + +\MakeActive{\^^M}% +\def\wikiEnvironments{\MakeActive{\^^M}\let^^M\W_active_return}% +\def\nowikiEnvironments{\AssignCatCode{\^^M}{5}}% +\nowikiEnvironments%% TeX <return> restored + +\MakeActive{\ }% +\@ifundefined{W_active_return}{% +\expandafter\def\expandafter\W_active_return\expandafter{% +\space\catcode`\ \active\let \W_indent% +%% <- \W_indent will start verbatim +\futurelet\@let@token\W_on_firsttoken}% +}{}%% end of \@ifundefined which is true without noVerbatim +%% Much doubling for saving time (!??): +\expandafter\def\expandafter\W_list_activereturn\expandafter{% +\space\catcode`\ \active\let \W_restore_space% +%% <- \W_indent will start verbatim +\futurelet\@let@token\W_maybe_newitem}% +% \def\W_restore_space{\catcode`\ 10\relax}% + %% <- was vital for a math display in a list -> +\def\W_restore_space{\catcode`\ 10\ignorespaces}% +\W_restore_space%% TeX blank space restored + +%% ==== Start and End List-Like Environments ==== + +%% \W_on_firsttoken may be edited (preamble or .cfg): +\def\W_on_firsttoken{% + % \show\@let@token + \W_restore_space + \let\W_next\relax %% must be before \W_skip... works + \ifx\@let@token\W_active_return \expandafter \W_par \fi + %% <- found by guessing/with \show\@let@token + \let\W_item\item + \W_on_startenv{*}{itemize}% + \W_on_startenv{\W_hash}{enumerate}% + \W_on_startenv{;}{description}% + \let\W_item\relax %% must precede `quote' + \W_on_startenv{:}{quote}%% instead of quotation 2008/07/01 + \W_next} +\let\W_hash=# +\def\W_par#1\W_next{\par} +\def\W_skiprest_item#1\W_next#2{\W_item} + +\MakeActive{\^^M}% +\def\W_on_startenv#1#2{% + \ifx#1\@let@token% + \begin{#2}% + \let\W_itemsymbol#1% + \let^^M\W_list_activereturn% + \expandafter \W_skiprest_item% + \fi}% +\nowikiEnvironments% + +\def\W_maybe_newitem{% + \W_restore_space + \ifx\@let@token\W_itemsymbol + \expandafter \W_gobbling_item + \else + \ifx\@let@token\W_restore_space + \else + \ifx\@let@token\W_list_activereturn + \par + \else + \edef\W_next{\noexpand\end{\@currenvir}}% + \W_next + \fi + \fi + \fi} +\def\W_gobbling_item#1{\item} + +%% ==== Verbatim Environment ==== + +\def\W_indent{\begin{W_verbatim}} +\def\W_verbatim{% + \let\obeylines\W_obeylines + \@verbatim \frenchspacing\@vobeyspaces} +\let\endW_verbatim\endverbatim + +\MakeActive{\^^M} +\def\W_obeylines{% + \catcode`\^^M\active% + \def^^M{\par\futurelet\@let@token\W_check_verbcont}}% +\nowikiEnvironments% + +\def\W_check_verbcont{% + \ifx\@let@token\@xobeysp + \expandafter \@gobble %% gobble one space + \else + \def\W_next{\end{W_verbatim}}% + \expandafter \W_next + \fi} + +%% TODO: enable user to switch between environment ``encodings'' +%% or to disable some of them (edit \W_on_firsttoken) + + \fi %% from \ifx\wikiEnvironments \else + + +%% === Turning Wiki Markup On and Off === + +\def\wikimarkup{\wikiFonts\wikiHeadings\wikiEnvironments} +\def\nowikimarkup{% + \MakeOther\`\MakeOther\'\MakeOther\=\AssignCatCode{\^^M}{5}} + +% \wikimarkup %% strange effects here, to be put into document + +\AssignCatCode\_{8} +\endinput + +%% todo: tables, links, templates, (pseudo-)html-tags ... +%% TODO: credits: easylatex etc. +%% TODO: useful for: ... intuitive markup, ``poor man's WYSIWYG'', +%% ASCII-WYSIWYG. +%% Todo: improve Wiki markup: ``tab'' indents instead of `:' +%% as in testing for end of list: after finding one +%% leading space, test for another. + + + |