== \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 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://...