== \WiX \announce{\WiX 1.0 has been released! Simply download {[[wix.jar]]}-> wix.jar and type [[java -jar wix.jar]] for instructions. You can get the source code via darcs-> http://www.darcs.net/ by typing [[darcs get http://www.megacz.com/software/wix/com.megacz.wix/]] } === What is it? \WiX (pronounced "wick") is a text markup format. Its syntax is a blend of Donald Knuth's \TeX and various wiki markup. Here's what the {\WiX for this page}->index.wix looks like. * Unlike \TeX, \WiX is intended to be ++presentation-neutral++; \WiX documents can be **rendered** into several output formats: html, plain text, pdf (via \TeX or lout->http://lout.sourceforge.net/), RTF, unix man page, IETF RFC, and others. * Unlike SGML and XML formats (such as HTML and DocBook), \WiX is ++convenient for humans to read and write++ without special editors. * Unlike every known wiki format, \WiX has a ++formal grammar++ rather than an ad-hoc parser. This means that its parsing behavior is fully specified, unambiguous, and predictable. In addition, {\WiX's grammar}->com.megacz.wix/src/wix.g is concise, {context-free boolean}-> http://en.wikipedia.org/wiki/Boolean_grammar, and lexerless->http://en.wikipedia.org/wiki/Lexerless_parsing. The \WiX implementation uses the {Berkeley Scannerless Boolean Parser}-> http://research.cs.berkeley.edu/project/sbp. === Why Should I use \WiX? Because: * Its ++syntax++ is easy to produce and edit with an ordinary text editor and very readable, even by people who don't know \WiX. It also works very well with source control. * It generates beautiful ++HTML versions++ of your documents including: automatic "smart quotes" and ellipses, entity escapification, bulleting,
 emulation, icon-tagging of
    pdf->dummy.pdf and mailto->nowhere@nowhere.com links, easy style
    switching, and automatic cross-browser compatability. **Coming
    soon**: automatic table of contents, section links, footnotes,
    indexing, syntax highlighting, and macro expansion.  Current
    visual design thanks to the skills of {David
    Crawshaw}->http://www.zentus.com.

  * You get zero-effort, nicely formatted ++plain text versions++ of
    your documents.  It's a much more pleasant way to write RFC's and
    man pages, and you get a nicely typeset ++pdf version++ with no
    additional effort!

  * It is easy to ++add your own extensions++ using Java or Haskell
    (thanks to {Brian Alliet's}->{http://www.brianweb.net/}
    LambdaVM->http://www.cs.rit.edu/~bja8464/lambdavm/).  Unlike HTML,
    the "{document object model}->com.megacz.wix/src/Doc.lhs" for \WiX
    is clean, simple and easy to understand.

  * It includes nifty ++bonus features++ like:
     * Automatic formatting of fractions ([[1\/2]] becomes 1/2) and
       ordinals, ([[3{rd}]] becomes 3rd).
     * Colorized diffs against the previous version of a document each
       time you re-render it (example->colorized.example.png).  Diffs
       are done on the **rendered** text so you can see any changes to
       your documents that happen as a result of upgrading to a newer
       version of \WiX.
     * Keystroke symbols like \keystroke:command \keystroke:shift
       \keystroke:option \keystroke:control \keystroke:capslock
       (and, in some fonts, the apple symbol: \keystroke:apple)

  * Inline TeX-syntax mathematics (html rendering courtesy of jsMath->
    {http://www.math.union.edu/~dpvc/jsMath/}) -- you type this:

    \pre
      $$\quad \sqrt{x^2+\sqrt{\alpha}}$$

    and you get this: $$\quad \sqrt{x^2+\sqrt{\alpha}}$$.

=== How do I write \WiX documents?

There's a draft tutorial here->tutorial.html, though it's nowhere
close to ready yet.

=== What inspired \WiX?

Many of the features in \WiX were inspired by other systems, including:

  * Donald Knuth's \TeX (of course)

  * Various wikitexts->http://en.wikipedia.org/wiki/Wikitext

  * Russ Alberry's {**thread** format and [[spin]] program}->
    http://www.eyrie.org/~eagle/software/web/

=== How can I extend \WiX?  How does its grammar work?

There's a {draft grammar guide}-> grammar.guide.html that explains the
finer points of the grammar.  The contents of the grammar guide used
to be a bunch of comments in the grammar file, but they took up more
space than the grammar itself.

=== To-Do items (mostly for Adam)

* subtitles (in light gray)

* Let blockquote text start on the same line as the doublequote

* COMMENTS
* eliminate [[.html]] on local links
* Copy non-\WiX files to output directory?

==== Visual styling

* drop cap?
* right-aligned stuff?
* style sheets
* margin notes
  * figures in the margin (nice w/ alternating-side printing)
* tables
  \pre
    tables
     - csv?
     \table
        a bbb c
        ddd   e
   
        [a] ...
        [b] ...
        [c] ...

==== Multi-Document Stuff

* HTML  tag
* site map?
  * HTML <link> tags
* .signature appendde to all documents in a set

==== ##Plugins##

* TexMath (convert to png/pdf/svg)
* Graphviz
* Gnuplot
* Metapost

==== macros

* #include
* simple macros (#define) (\\define)


==== Output formats

* TeX
* Lout
* Manpage
* PlainText
* RFC-Text (and XML as in \rfc{2629})
* Rich Text Format

==== Misc

* Add \TeX-to-SWF to handle stuff that jsmath doesn't
* reintroduce autolinkification
   * must be done as a post-processing step because we have no
     leftward-maximal matching
   * find links within verbatim blocks, make them clickable
   * javascript cloaking of email addresses
* expand/collapse javascript outlines (for faqs)
* today's date (\\today)
* icons for movies (avi, wmv, quicktime)
* Precompile grammar
* imagization of header text (nice big antialiased fonts?)
* check out trac; it does great stuff.
* \\cite
* \\nobr (non-breaking)
* sans-serif text?
* comprehensive latex symbol list
* images (with alt-text)
* wikipedia-links (automatically links to closest wikipedia page)

==== Document-Wide Stuff

* two-column
* "draft" mode (prints draft in background)
* header/footer (last compiled on, author, etc)
* document structure
  * header: title, subtitle, author, email, date
  * toc
  * abstract
  * sections/chapters (with header/footer)
  * textblocks:
  * attention, caution, danger, error, hint, important, note, tip
  * appendices
  * bibliography
  * index
* @@defined/indexed term@@ (index/glossary)
    * by prior line indentation, like headings in the original structured text
    * : term : definition
    * acronyms!  include auto definition

==== internal relative links

*  (#foo)
*  [#foo]  (link to previous)
*  blah ->#foo
* \\label{} and \\ref{}
* page numbers
* "reference-style" links
   *  this->[1] is fun
   *  [1]->http://...