--- /dev/null
+A. Motivations\r
+A.1 Independence from layout tool\r
+A.2 Ability to produce HTML\r
+A.3 Editable text, email, etc\r
+A.4 Combine compilation and WYSIWYG\r
+A.5 Better automation of cross refs than Frame\r
+A.6 Better typography than TeX\r
+A.7 Ability to use my own PS fonts\r
+A.8 Easy layout of code, which TeX handles badly\r
+\r
+B. Project Plans\r
+B.1 Small initial implementation; iterative extension\r
+B.2 Experiment with JUnit\r
+B.3 Try documentation lite\r
+B.4 Look at conformance issues\r
+\r
+C. Requirements\r
+C.1 Input format\r
+C.1.1 Plain text, platform independent (no Unix/Windows line end problems)\r
+C.1.2 Minimal syntax\r
+C.1.3 Text layout respected for all but EOL, unless //\r
+C.1.4 All keywords introduced by backslash\r
+C.1.5 Kinds of tag\r
+ \section paragraph tag\r
+ \alpha special char\r
+ \date special\r
+ \bold formatting tag \r
+ kind of tag is resolved by tables loaded from file\r
+C.1.6 Special Tokens\r
+ --, ---, .., ... dashes and ellipses\r
+ \\ hard line break\r
+ non-breaking hyphen, breaking hyphen, etc?\r
+ en, em space?\r
+ italic correction?\r
+ | separator \r
+ {,} used for grouping\r
+C.1.6a Printing Characters Used in Special Tokens\r
+ \#,\_,\{,\} will print as #,_,{,}\r
+ \ is written \backslash\r
+C.1.7 Groupings (obsolete)\r
+ \{x} may replace \x when want to avoid extra space\r
+ eg. \{alpha}_1 to give an alpha with a subscript 1\r
+ but paragraph tags behave in opposite way: consume whitespace that follows, so use \{para} to include whitespace.\r
+C.1.7 Groupings\r
+ abandoned this in favour of simpler scheme with | for separator and {} for logical grouping;\r
+ para tag consumes only first space token, so "\parastyle | hello" to put space before "hello"\r
+C.1.8 Cross References\r
+ \tag{t} marks paragraph with tag t\r
+ \name{s} makes s the citation string for this para\r
+ \cite{t} citation of paragraph with tag t\r
+ for autonumbered paras, number is citation string by default\r
+C.1.9 Para breaks\r
+ determined by blank line; mid-line paragraph tag is an error\r
+C.1.10 Spacing\r
+ as given explicitly, except; line breaks and their leading spaces, replaced by single space; first whitespace group (including line break) following paragraph tag.\r
+C.1.11 Italicization\r
+ between underscores\r
+ have this indicate a character style instead? allow override at start of file.\r
+C.1.12 Sub and superscripts (obsolete)\r
+ text_i, text_{abc}\r
+ text^i, text^{abc}\r
+C.1.12 Sub and superscripts\r
+ abandoned _^ scheme because it's more trouble parsing\r
+ may reinstate later\r
+ \sub{...} puts text between curlies in superscript\r
+C.1.12a Formatting Tags\r
+ generalize to \bold, \roman, etc\r
+ formatting runs from that point onwards, unless explicit grouping: \bold{abc}def puts abc, but not def in bold.\r
+C.1.13 Comments\r
+# in first column makes line a comment\r
+C.1.14 Quotes\r
+ "hello"\r
+ it's\r
+ '69\r
+C.2 Style File\r
+C.2.1 Next\r
+ specifies default paragraph style order\r
+C.2.2 Character Styles\r
+ assume none for now\r
+C.2.3 Syntax\r
+ In all property files, use property list syntax:\r
+ <style:section><next:indent>...\r
+C.2.4 Autonumbering\r
+C.2.4.1 Star after style name suppresses numbering\r
+ \section*\r
+C.2.4.2 Associate with each style\r
+ series\r
+ level\r
+ separator (comes before extension string for this style's numbering)\r
+ trailer (between number and para)\r
+ leader (before number)\r
+C.2.4.2 Associate a series and a level with each style, eg, <series:A><level:2>\r
+C.2.4.3 Numbering formats:\r
+ 0 gives 0,1,2\r
+ 1 1,2,3\r
+ a a,b,c\r
+ A A,B,C\r
+ i i,ii,iii,iv,\r
+ I I,II,III,IV\r
+C.2.4.4 Examples\r
+ example:\r
+ <style:section><series:section><level:0><numbering:1><trailer:.\tab>\r
+ <style:subsection><series:section><level:1><numbering:1><separator:.><trailer:\tab>\r
+ <style:subsubsection><series:section><level:3><numbering:a><trailer:\tab>\r
+ gives\r
+ 1. First section\r
+ 1.1 First subsection\r
+ 1.1a First subsubsection\r
+ example:\r
+ <style:point><leader:\cdot><trailer:\tab>\r
+ gives points preceded by a center dot and a tab\r
+C.2.4.5 Citation\r
+ Numbering string, excluding leader and trailer, becomes default citation string for its para.\r
+\r
+C.3 Stylesheets\r
+At top of file, \stylesheet{filename} sets name of style file\r
+\r
+C.4 Other Features\r
+C.4.1 Wishlist\r
+ Reserved word transformations (eg, bolding)\r
+ Inference rules\r
+C.5 Character File\r
+C.5.1 Must be backend independent\r
+C.5.2 Example\r
+ <name:alpha><font:MathB><index:155>\r
+ \r
+\r
+D. Design Issues\r
+D.1 General Thoughts\r
+D.1.1 Parsing. Break into tokens consisting of whitespace groups, character (non-whitespace) groups, commands, etc.\r
+D.1.2 Use simple hand-written recursive descent parser\r
+D.1.3 Need to read in style file first so that paragraph style names are recognized.\r
+D.1.4 Build a table and select action by token type\r
+D.1.5 Incorporate trailing space and EOL into single token\r
+D.1.6 Issue: stream or tree based? Probably stream, but have parser recognize close of italics, formattings, etc\r
+D.1.7 For now, don't attempt generic backend. Better to handcraft a backend or two, then generalize.\r
+D.1.8 For references, write out index file and generate warnings for unresolved refs. This allows a single pass.\r
+\r
+D.2 Design\r
+\r
+----------------------------------------------------------------------------------------\r
+Issues\r
+\r
+Grammar must handle\r
+\section* generates token parastyle section, numbering suppressed\r
+\sub{...} generates tokens begin-sub and end-sub?\r
+quotes?\r
+\r
+\r
+\r
+must have preamble followed by blank line to generate first para\r
+need something to mark end of preamble\r
+how to have action install other actions? will be a comodification.\r
+\r