about summary refs log tree commit diff
path: root/docs/doctool/Info
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-05-22 15:06:55 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-05-22 15:06:55 +0000
commit9ba8e6cf38da5196ed7bc878fe452952f3e10638 (patch)
treeea59837e22970274abac0ece2071e79189256901 /docs/doctool/Info
parent90bcda3c10411ee4c1c65a494ec7c08dfdea01b4 (diff)
downloadzcatch-9ba8e6cf38da5196ed7bc878fe452952f3e10638.tar.gz
zcatch-9ba8e6cf38da5196ed7bc878fe452952f3e10638.zip
moved docs
Diffstat (limited to 'docs/doctool/Info')
-rw-r--r--docs/doctool/Info/CSSGuide.txt782
-rw-r--r--docs/doctool/Info/Languages.txt105
-rw-r--r--docs/doctool/Info/NDMarkup.txt80
3 files changed, 967 insertions, 0 deletions
diff --git a/docs/doctool/Info/CSSGuide.txt b/docs/doctool/Info/CSSGuide.txt
new file mode 100644
index 00000000..bf4e1377
--- /dev/null
+++ b/docs/doctool/Info/CSSGuide.txt
@@ -0,0 +1,782 @@
+
+    Title: CSS Guide
+_______________________________________________________________________________
+
+It's important to understand the internal HTML file structure and styles in order to design your own CSS style for Natural Docs.  If
+you're content with the default styles, there's no need to read this document.
+
+The diagrams are designed for clarity.  In the actual HTML, you'd obviously see "<pre class=CCode></pre>" instead of
+"<pre CCode></pre CCode>".  If there's no element in the diagram tag, for example "<CTitle></CTitle>", that means you
+shouldn't rely on what HTML element it is.  Just refer to them as .Style in your CSS file instead of Element.Style.
+
+
+Topic: Page Structure
+
+    The body tag is used to distinguish between the types of pages.  For framed pages, its style will be <FramedMenuPage>,
+    <FramedContentPage>, or <FramedIndexPage> depending on what it is.  Non-framed pages have a body style of
+    <UnframedPage>.
+
+    On unframed pages, the menu will be contained in a <MenuSection> td and the content or index in <ContentSection> or
+    <IndexSection> tds.  Tables are used instead of CSS positioning for better compatibility with older browsers and because they
+    have the ability to stretch when its content is too wide and collapse when the browser window is too small.
+
+    Unframed Page:
+
+    >   <body UnframedPage>
+    >   [browser styles]
+    >
+    >       <table><tr>
+    >
+    >           <td MenuSection>
+    >               Menu
+    >           </td MenuSection>
+    >
+    >           <td ContentSection/IndexSection>
+    >               Content or Index
+    >           </td ContentSection/IndexSection>
+    >
+    >       </tr></table>
+    >
+    >       <Footer>
+    >           Footer
+    >       </Footer>
+    >
+    >   [/browser styles]
+    >   </body UnframedPage>
+
+    Framed Menu Page:
+
+    >   <body FramedMenuPage>
+    >   [browser styles]
+    >
+    >       Menu
+    >
+    >       <Footer>
+    >           Footer
+    >       </Footer>
+    >
+    >   [/browser styles]
+    >   </body FramedMenuPage>
+
+    Framed Content/Index Page:
+
+    >   <body FramedContentPage/FramedIndexPage>
+    >   [browser styles]
+    >
+    >       Content or Index
+    >
+    >   [/browser styles]
+    >   </body FramedContentPage/FramedIndexPage>
+
+
+Styles: Page Styles
+
+    UnframedPage - An unframed page.  Will be applied to a body tag.
+
+    FramedMenuPage - A framed menu page.  Will be applied to a body tag.
+    FramedContentPage - A framed content page.  Will be applied to a body tag.
+    FramedIndexPage - A framed index page.  Will be applied to a body tag.
+
+    MenuSection - The menu section in a non-framed page.  Will be applied to a td tag.
+    ContentSection - The content section in a non-framed page.  Will be applied to a td tag.
+    IndexSection - The index section in a non-framed page.  Will be applied to a td tag.
+
+    Footer - The page footer.  Will be in a framed menu page or on its own in a non-framed page.
+
+
+Styles: Browser Styles
+
+    Natural Docs pages include JavaScript to detect which browser the user is running and apply styles so that you can work
+    around browser quirks right in the CSS file.
+
+    Immediately after the body tag, the browser type and version styles will be applied.  However, neither are guaranteed to be
+    there; the user may have JavaScript turned off or be using a browser that isn't detected.  These styles should only be used to
+    correct minor flaws and should not be heavily relied on.
+
+    >   <body>
+    >
+    >       <browser type>?
+    >           <browser version>?
+    >
+    >               Page Content
+    >
+    >           </browser version>?
+    >       </browser type>?
+    >
+    >   </body>
+
+    For example, if a <CTopic>'s style is giving you problems in Internet Explorer 4, override it with .IE4 .CTopic.  If a <MTitle>'s
+    style gives you a problem in Opera 5 but only in frames, override it with .FramedMenuPage .Opera5 .MTitle.
+
+    Browser Types:
+
+        If the browser is not one of the types below, neither this nor the browser version will be present.  There's the possibility that
+        some obscure browser will appear as one of the others by spoofing, but the most prominent of these, Opera, Konquerer, and
+        Safari, are taken care of.
+
+        IE - Internet Explorer
+        Gecko - The Gecko rendering engine, which includes Mozilla, Netscape 6+, etc.
+        Opera - Opera
+        KHTML - The KHTML rendering engine, which includes Konqueror and Safari.
+        Netscape - The pre-Gecko Netscape rendering engine, which is 4.x and earlier.
+
+    Browser Versions:
+
+        If the browser is not one of the versions below, this style will not be present.  The browser type still may be.  Gecko and
+        KHTML-based browsers are not broken out into sub-versions.
+
+        IE4 - Internet Explorer 4.x.
+        IE5 - Internet Explorer 5.x.
+        IE6 - Internet Explorer 6.x.
+
+        Opera5 - Opera 5.x.
+        Opera6 - Opera 6.x.
+        Opera7 - Opera 7.x.
+
+        Netscape4 - Netscape 4.x.
+
+
+
+Topic: Content Structure
+
+    All the content of a given file is either contained in a <ContentSection> or a <FramedContentPage>.  All other content styles are
+    prefixed with a C.
+
+    Each piece of content is a <CTopic> surrounded by its type; for example, <CFunction> for a function.  Inside
+    that are the <CTitle> and if necessary, <CBody>.  Inside <CBody> are analogues to all the top-level <NDMarkup> tags:
+    <CHeading>, <CParagraph>, etc.  Styles like <CParagraph> exist so that you only style explicit <NDMarkup> paragraphs,
+    not any p that appears.
+
+    In addition to the top-level <NDMarkup> tags, you also have <Prototype>, <CTitle>, and <Summaries>.  <Summaries> are
+    described in their own section.
+
+    (start diagram)
+
+    <Content>
+
+        <CType (CFunction, CVariable, etc.)>
+            <CTopic>
+
+                <CTitle>
+                    Topic title
+                </CTitle>
+
+                <CBody>
+
+                    <ClassHierarchy> (See it's section)
+
+                    <Prototype> (See it's section)
+
+                    <p CParagraph>
+                         Paragraph
+                    </p CParagraph>
+
+                    <CHeading>
+                        Heading
+                    </CHeading>
+
+                    <pre CCode>
+                    Code
+                    </pre CCode>
+
+                    <ul CBulletList>
+                        <li>
+                        Bullet item
+                        </li>
+                    </ul CBulletList>
+
+                    <table CDescriptionList>
+                        <tr>
+                            <td CDLEntry>
+                            Entry
+                            </td CDLEntry>
+                            <td CDLDescription>
+                            Description
+                            </td CDLDescription>
+                        </tr>
+                    </table CDescriptionList>
+
+                    <Summary> (See it's section)
+
+               </CBody>
+
+           </CTopic>
+        </CType (CFunction, CVariable, etc.)>
+
+    </Content>
+
+    (end diagram)
+
+    Take advantange of the CSS inheritance model.  For example, you can style all titles via .CTitle, and you can style
+    specific titles with .CType .CTitle.
+
+
+Styles: Content Styles
+
+    CTopic - An individual topic.
+
+    CTitle - The title of a topic.
+    CBody - The body of a topic.  May not exist.
+    CParagraph - A paragraph.  Is implemented with a p.
+    CHeading - A heading.
+    CBulletList - A bullet list.  Is implemented with a ul.
+    CCode - A section of code.  Is implemented with a pre.
+
+    CDescriptionList - A description list, which is the type of list you're reading right now.  Is implemented with a table.
+    CDLEntry - A description list entry, which is the left side.
+    CDLDescription - A description list description, which is the right side.
+
+    #MainTopic - The ID given to the main topic, which is the first in the file.  It is applied to the topic type tag, such as <CClass>
+                        and <CFunction>.
+
+    CType - A placeholder for all type-specific styles.  The actual styles will be C followed by the alphanumeric-only topic type name.
+                So the CType of a "PL/SQL Function" topic will actually be CPLSQLFunction.
+
+
+Topic: Menu Structure
+
+    Everything is enclosed in a <MenuSection> or a <FramedMenuPage>.  All other menu styles are prefixed with an M.
+
+    The title is an <MTitle> and will always be at the beginning of the menu if it exists.  If a subtitle exists as well, it will appear
+    as an <MSubTitle> inside <MTitle>.  Subtitles aren't allowed without titles.  Every other entry in the menu is contained in a
+     <MEntry>, inside of which there's the type, such as <MFile> and <MGroup>.  Inside of that is the content.  With <MGroups>,
+    there's also a section inside called <MGroupContent> which can contain more entries.  Here's the diagram:
+
+    >   <Menu>
+    >
+    >       <MTitle>
+    >           Menu title
+    >
+    >           <MSubTitle>
+    >               Menu sub title
+    >           </MSubTitle>
+    >
+    >       </MTitle>
+    >
+    >       <MEntry>
+    >           <MFile>
+    >               <a href>File</a href>
+    >           </MFile>
+    >       </MEntry>
+    >
+    >       <MEntry>
+    >           <MText>
+    >               Text
+    >           </MText>
+    >       </MEntry>
+    >
+    >       <MEntry>
+    >           <MLink>
+    >               <a href>Link</a href>
+    >           </MLink>
+    >       </MEntry>
+    >
+    >       <MEntry>
+    >           <MGroup>
+    >               <a href>Group</a href>
+    >               <MGroupContent>
+    >
+    >                   (MEntries)
+    >
+    >               </MGroupContent>
+    >          </MGroup>
+    >       </MEntry>
+    >
+    >   </Menu>
+
+    The <MFile> entry that's currently selected will have the <#MSelected> ID, so you can reference it in CSS via .Menu
+    .MFile#MSelected.
+
+
+Styles: Menu Styles
+
+    MTitle - The title of the menu.
+    MSubTitle - The subtitle of the menu.  Will appear within <MTitle>.
+
+    MEntry - The parent container of <MFile> and <MGroup> entries.
+
+    MFile - A file entry.
+    MGroup - A group entry.
+    MGroupContent - A container for a <MGroup's> content.
+    MText - A plain text entry.
+    MLink - An external link entry.
+
+    #MSelected - The ID of the currently selected <MFile>.
+
+
+Topic: Class Hierarchy Structure
+
+    Everything is contained in a single <ClassHierarchy>.  Each entry is surrounded by its type, such as <CHParent>, and the
+    generic <CHEntry>.  Depending on the context, entries may be surrounded by one or more <CHIndents>.
+
+    (start diagram)
+
+    <ClassHierarchy>
+
+        <CHIndent>?
+
+            <type (CHParent, CHCurrent, etc.)>
+                <CHEntry>
+
+                    Entry
+
+                </CHEntry>
+            </type (CHParent, CHCurrent, etc.)>
+
+        </CHIndent>?
+
+    </ClassHierarchy>
+
+    (end diagram)
+
+
+Styles: Class Hierarchy Styles
+
+    ClassHierarchy - The topmost style containing everything.
+
+    CHEntry - A generic class entry.
+
+    CHParent - The style for a parent class.
+    CHCurrent - The style for the current class, which is the one the hierarchy is generated for.
+    CHChild - The style for a child class.
+    CHChildNote - The style for when a child is added that just shows how many other children were omitted.
+
+    CHIndent - A style used to indent a level.
+
+
+Topic: Summary Structure
+
+    Everything is enclosed in a single <Summary>.  All the other summary styles are prefixed with an S.
+
+    <STitle> holds the actual word "Summary" and <SBorder> and <STable> hold the content.  <SBorder> exists because different
+    browsers apply table padding attributes in different ways.  <STable> exists as a class to separate the main table from any other
+    tables that may be necessary.  Here's a diagram:
+
+    >   <Summary>
+    >
+    >       <STitle>
+    >           Title
+    >       </STitle>
+    >
+    >       <SBorder>
+    >           <table STable>
+    >               ...
+    >           </table STable>
+    >       </SBorder>
+    >
+    >   </Summary>
+
+    On to the table content.  Rows may have the <SMarked> style, which means they should be tinted for easier readablity.
+
+    Since we many attributes left to apply, they're done with a kludgy mess of styles within each cell.  It's hacky and verbose, but it
+    works and is compatible everywhere.  We apply the type, whether it's an entry or a description, and if it's in a group or class as
+    shown below:
+
+    >   <tr SMarked?>
+    >       <td SEntrySize?>
+    >
+    >           <SType (SFunction, SClass, etc.)>
+    >               <SEntry>
+    >                   <SIndent#>?
+    >
+    >                       <a href>Entry</a href>
+    >
+    >                    </SIndent#>?
+    >               </SEntry>
+    >           </SType>
+    >
+    >       </td SEntrySize?>
+    >       <td SDescriptionSize?>
+    >
+    >           <SType (SFunction, SClass, etc.)>
+    >               <SDescription>
+    >                    <SIndent#>?
+    >
+    >                       Description
+    >
+    >                    </SIndent#>?
+    >               </SDescription>
+    >           </SType>
+    >
+    >       </td SDescriptionSize?>
+    >   </tr SMarked?>
+
+    <SIndent#> exist to allow indenting.  They're necessary because implementing it as nested tables, while structurally cleaner,
+    won't allow the desciptions to line up on the right throughout the entire summary.
+
+    Use the power of CSS's inheritance rules to specify styles.  For example, to set the style of a group entry, apply it to
+    .SGroup .SEntry.  However, you could also apply a style to both the group's entry and description by applying the
+    style to .SGroup.  Or, you could apply a style to all the entries by applying it to .SEntry.  And so on.
+
+
+Styles: Summary Styles
+
+    Summary - The topmost style containing the entire summary.
+
+    STitle - Contains the summary title, which is the part that actually says "Summary".
+
+    SBorder - Surrounds <STable>, since some browsers can't do table padding right.  A hack, I know.
+    STable - The actual summary table.  This class separates it from other layout tables that may appear.
+
+    SMarked - A class applied to rows that should have a slightly different color than the rest of the rows to make them easier to
+                    read.
+    SEntrySize - A class applied to one entry cell to specify the column width.
+    SDescriptionSize - A class applied to one description cell to specify the column width.
+
+    SEntry - The entry (left) side of the table.
+    SDescription - The description (right) side of the table.
+
+    SIndent# - Surrounding entries and descriptions that are part of a group and need to be indented.  Actual styles will be
+                     SIndent1, SIndent2, etc.
+
+    SType - A placeholder for all topic-specific styles.  The actual styles will be S followed by the alphanumeric-only topic type name.
+                So the SType of a "PL/SQL Function" topic will actually be SPLSQLFunction.
+
+
+Topic: Prototype Structure
+
+    Everything is enclosed in a <Prototype>.  All other styles are prefixed with a P.
+
+    Parameter Type First Style:
+
+        For prototypes such as
+        > void Function (unsigned int* a, int b = 0)
+        where the types come first.
+
+        (start diagram)
+
+        <table Prototype>
+
+            <td PBeforeParameters>
+                "void Function ("
+            </td PBeforeParameters>
+
+            <td PTypePrefix>
+                "unsigned"
+            </td PTypePrefix>
+
+            <td PType>
+                "int"
+            </td PType>
+
+            <td PParameterPrefix>
+                "*"
+            </td PParameterPrefix>
+
+            <td PParameter>
+                "a", "b"
+            </td PParameter>
+
+            <td PDefaultValuePrefix>
+                "="
+            </td PDefaultValuePrefix>
+
+            <td PDefaultValue>
+                "0"
+            </td PDefaultValue>
+
+            (repeated as necessary)
+
+            <td PAfterParameters>
+                ")"
+            </td PAfterParameters>
+
+        </table Prototype>
+
+        (end diagram)
+
+
+    Parameter Name First Style:
+
+        For prototypes such as
+        > function Function (a, b: int; c: int := 0)
+        where the parameters come first.
+
+        (start diagram)
+
+        <table Prototype>
+
+            <td PBeforeParameters>
+                "function Function ("
+            </td PBeforeParameters>
+
+            <td PParameter>
+                "a,", "b:", "c:"
+            </td PParameter>
+
+            <td PType>
+                "int"
+            </td PType>
+
+            <td PDefaultValuePrefix>
+                ":="
+            </td PDefaultValuePrefix>
+
+            <td PDefaultValue>
+                "0"
+            </td PDefaultValue>
+
+            (repeated as necessary)
+
+            <td PAfterParameters>
+                ")"
+            </td PAfterParameters>
+
+        </table Prototype>
+
+        (end diagram)
+
+
+    Note that any section may not exist.  For example, there will be no <PTypePrefix> cells generated if none of the parameters
+    have it.
+
+
+Styles: Prototype Styles
+
+    Prototype - The style encompassing the entire prototype.
+
+    PBeforeParameters - The part of the prototype that comes before the parameters.
+    PAfterParameters - The part of the prototype that comes after the parameters.
+
+    PType - The parameter type.
+    PTypePrefix - The prefix of a parameter type.
+    PParameter - The parameter name.
+    PParameterPrefix - The prefix of a parameter name.
+    PDefaultValue - The default value expression for a parameter.
+    PDefaultValuePrefix - The prefix of the default value expression.
+
+
+Topic: Link Structure
+
+    All links to symbols have a type style prefixed with L.  The only exceptions are summary entries; summary descriptions use
+    them as well.
+
+    >   <a LType (LFunction, LClass, etc.)>
+    >       Link
+    >   </a LType (LFunction, LClass, etc.)>
+
+    You can use this to make links to different symbols appear in different styles.  For example, making .LClass bold will make all
+    links to classes bold, except when appearing in summary entries.  You can combine this with other styles to be even more
+    specific.  For example, you can apply a style to function links appearing in summary descriptions with .SDescription .LFunction.
+
+Styles: Link Styles
+
+    LType - A placeholder for all topic-specific styles.  The actual styles will be L followed by the alphanumeric-only topic type name.
+                So the LType of a "PL/SQL Function" topic will actually be LPLSQLFunction.
+
+
+
+Topic: Index Structure
+
+    Everything is enclosed in a <IndexSection> or an <FramedIndexPage>.  All other index styles are prefixed with an I.
+
+    (start diagram)
+
+    <Index>
+
+        <IPageTitle>
+            Page Title
+        </IPageTitle>
+
+        <INavigationBar>
+            A - <a href>B</a href> - C ...
+        </INavigationBar>
+
+        <table>
+
+            <IHeading>
+                Heading (A, B, etc.)
+            </IHeading>
+
+            <td ISymbolPrefix>
+                Prefix, if any
+            </td ISymbolPrefix>
+
+            <td IEntry>
+                Entry
+            </td IEntry>
+
+            ...
+
+        </table>
+
+    </Index>
+
+    (end diagram)
+
+    Every index entry, including headings, are rows in a table.  The first column of a non-heading are <ISymbolPrefixes> so that
+    the non-prefix portions align correctly.  The other column are <IEntries>, of which there are multiple formats, described below.
+
+    (start diagram)
+
+    <a href ISymbol>
+        Symbol
+    </a href ISymbol>,
+    <IParent>
+        Class
+    </IParent>
+
+    <ISymbol>
+        Symbol
+    </ISymbol>
+    <ISubIndex>
+        <a href IParent>
+            Class
+        </a href IParent>
+        ...
+    </ISubIndex>
+
+    <ISymbol>
+        Symbol
+    </ISymbol>
+    <ISubIndex>
+        <IParent>
+            Class
+        </IParent>
+        <ISubIndex>
+            <a href IFile>
+                File
+            </a href IFile>
+            ...
+        </ISubIndex>
+        ...
+    </ISubIndex>
+
+    (end diagram)
+
+    Each part of the entry is surrounded by its type, which may or may not be a link.  If an entry has more than one defining class
+    or file,  they're broken out into <ISubIndexes>.
+
+    It's called <IParent> instead of <IClass> because class entries are <ISymbols>.  <IParents> are only used when the symbol
+    has a class.  If the symbol _is_ a class, the symbol is global.
+
+
+Styles: Index Styles
+
+    Index - Surrounds the entire index.
+
+    IPageTitle - The page title.
+    INavigationBar - The navigation bar.
+
+    IHeading - An index heading, such as the letter for the group.
+
+    IEntry - An entry in the index.
+    ISymbolPrefix - The stripped prefix of the entry.
+    ISymbol - The entry symbol.
+    IParent - The entry parent class.  If the entry _is_ a class, this isn't defined because classes are global and don't have parent
+                  classes.  This is why it's called IParent instead of IClass; hopefully it's less confusing.
+    IFile - The file the entry is defined in.
+
+    ISubIndex - The surrounding block if an entry needs to be broken out into a sub-index.
+
+    #IFirstHeading - The ID of the first <IHeading> to appear in the file.
+
+    #IFirstSymbolPrefix - The ID for the first <ISymbolPrefix> to appear under an <IHeading>.
+    #ILastSymbolPrefix - The ID for the last <ISymbolPrefix> to appear under an <IHeading>.
+    #IOnlySymbolPrefix - The ID if there is only one <ISymbolPrefix> for an <IHeading>.
+
+
+Topic: Tool Tip Structure
+
+    Tool tips may appear anywhere in the page, mainly because it's assumed that they will use position: absolute and
+    visibility: hidden.
+
+    The entire tool tip is found in a <CToolTip> style, with a CType style inside it.  CTypes are normally outside their elements, but
+    that would cause it to be partially visible in this case.  We need <CToolTip> to be the outermost style so its visibility and
+    position can be manipulated in JavaScript.
+
+    Inside there's a <CPrototype> and/or the description text.  The description text has no special surrounding tags.
+
+    >   <CToolTip>
+    >
+    >       <CPrototype>
+    >           Prototype
+    >       </CPrototype>
+    >
+    >       Summary text
+    >
+    >   </CToolTip>
+
+Styles: Tool Tip Styles
+
+    CToolTip - Surrounds the entire tool tip.  This *must* have position: absolute and visibility: hidden for the tool tip mechanism
+                    to work.
+
+    See also <CPrototype>.
+
+
+Styles: Miscellaneous Styles
+
+    HB   - Hidden Break.  Will surround a single space to try to break a word transparently.  Should be set to as small as possible.
+
+    blockquote - This HTML element should surround anything that needs to be scrolled if it's too wide, like prototypes and text
+                       diagrams.  It's not a style because this makes it much easier to do the JavaScript necessary to get this working
+                       in IE.
+
+
+Group: History
+
+Topic: Revisions
+
+    How the page structure has changed throughout the various releases.
+
+    1.33:
+
+        - Added <PDefaultValuePrefix>.
+
+    1.32:
+
+        - <blockquotes> now surround elements that should scroll if they're too wide for the page.
+
+    1.3:
+
+        - Removed CPrototype.  See the replacement <Prototype Structure> and <Prototype Styles>.
+        - Removed SInGroup, SInClass, and SInSection in favor of more general <SIndent#>.
+        - <CTypes>, <STypes>, and <LTypes> are now completely determined by <Topics.txt> configuration files.
+        - <CTypes>, <STypes>, and <LTypes> no longer have separate list types.  A CFunctionList is now just a CFunction.
+        - Indexes are now done with tables.
+        - ISection was removed.
+        - <IEntries> are only used for the entry cell, not for each entry in an <ISubIndex>.
+        - Added <ISymbolPrefix>, related IDs, and <#IFirstHeading>.
+
+    1.21:
+
+        - Added <TOPIC_PROPERTY> and TOPIC_PROPERTY_LIST styles, so they get corresponding <CTypes>, <STypes>, and
+          <LTypes>.
+
+    1.2:
+
+        - Added <Class Hierarchy Styles> since 1.2 added class hierarchies.
+
+    1.16:
+
+        - Changed the first topic from having a CMain type to having a normal type with a <#MainTopic> ID.
+
+    1.1:
+
+        - Added <Tool Tip Styles>.
+        - Renamed HiddenBreak to <HB>.
+        - Added <TOPIC_CONSTANT>, TOPIC_CONSTANT_LIST, <TOPIC_TYPE>, and TOPIC_TYPE_LIST types, so they get
+          corresponding <CTypes>, <STypes>, and <LTypes>.
+
+    1.0:
+
+        - The <CType> tags now appear arround the <CTopic> tags instead of vice versa.
+        - Added a <CBody> tag to surround non-<CTitle> elements.
+        - <SMarked> now appears in tr's instead of td's, where it belonged in the first place.
+
+    0.95:
+
+        - Added <Browser Styles>.
+        - Redid <Page Structure>, replacing generic styles like Menu with page type styles like <UnframedPage>/<MenuSection>
+          and <FramedMenuPage>.
+
+    0.91:
+
+        - Added <LURL> and <LEMail> link styles, since 0.91 added URL and e-mail links.
+        - Added <ISection> style, which is better than <IHeading> floating on its own.
+
+    0.9:
+
+        - Added <Index Styles>, since 0.9 added indexes.
+
diff --git a/docs/doctool/Info/Languages.txt b/docs/doctool/Info/Languages.txt
new file mode 100644
index 00000000..98885955
--- /dev/null
+++ b/docs/doctool/Info/Languages.txt
@@ -0,0 +1,105 @@
+
+    Title: Language Notes
+_______________________________________________________________________________
+
+    This is more for my personal reference than anything else.
+
+
+    ___________________________________________________________________________
+
+    Topic: Prototype Parameter Styles
+    ___________________________________________________________________________
+
+    Parameters via Commas, Typed via Spaces:
+
+        > FunctionName ( type indentifier, type identifier = value, modifier type identifier )
+        > FunctionName ( indentifier, identifier = value )
+
+        The general idea is that parameters are separated by commas.  Identifiers cannot contain spaces.  Types and modifiers,
+        if available, are separated from the identifiers with spaces.  There may be an equals sign to set the default value.
+
+        So parsing means splitting by commas, stripping everything past an equals sign for the default value, stripping everything
+        after the last space for the identifier, and the rest is the type.  If there are no internal spaces after the default value is
+        stripped, it's all identifier.
+
+        Note that internal parenthesis, brackets, braces, and angle brackets should be parsed out.  They may be present in default
+        values or types and any commas and equal signs in them should not be included.
+
+        Applies to C++, Java, C#, JavaScript, Python, PHP, Ruby.
+
+        Applies to Perl as well, even though it doesn't have any real parameter declaration structure.  Just adding it with comments
+        is fine.
+
+    Parameters via Semicolons and Commas, Typed via Colons:
+
+        > FunctionName ( identifier: type; identifier, identifier: type; identifier: type := value )
+
+        Parameters via semicolons, types via colons.  However, there can be more than one parameter per type via commas.
+        Default values via colon-equals.
+
+        Applies to Pascal, Ada.
+
+
+    SQL:
+
+        > FunctionName ( identifier type, identifier modifier type, identifier type := value )
+
+        Parameters separated by commas.  Identifiers come before the types and are separated by a space.  Default values are
+        specified with colon-equals.
+
+        > FunctionName @identifier type, @dentifier modifier type, @identifier type = value
+
+        Microsoft's SQL uses equals instead of colon-equals, doesn't need parenthesis, and starts its parameter names with an @
+        symbol.
+
+
+    Visual Basic:
+
+        > FunctionName ( modifiers identifier as type, identifier = value )
+
+        Parameters separated by commas.  Default values via equals.  However, any number of modifiers may appear before the
+        identifier.  Those modifiers are ByVal, ByRef, Optional, and ParamArray.
+
+
+    Tcl:
+
+        > FunctionName { identifier identifier { whatever } } { code }
+
+        Identifiers are specified in the first set of braces and have no commas.  However, they can be broken out into sub-braces.
+
+
+    ___________________________________________________________________________
+
+    Topic: Syntax References
+    ___________________________________________________________________________
+
+    C++ - http://www.csci.csusb.edu/dick/c++std/syntax.html
+
+    C# - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/CSharpSpecStart.asp.  Open in IE.
+
+    Java - http://cui.unige.ch/db-research/Enseignement/analyseinfo/
+    Ada - http://cui.unige.ch/db-research/Enseignement/analyseinfo/
+
+    SQL - http://cui.unige.ch/db-research/Enseignement/analyseinfo/,
+             http://www.cs.umb.edu/cs634/ora9idocs/appdev.920/a96624/13_elems.htm, or
+             http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_tsqlcon_6lyk.asp?frame=true (open in IE).
+
+    JavaScript - http://academ.hvcc.edu/~kantopet/javascript/index.php
+
+    Python - http://www.python.org/doc/2.3.4/ref/ref.html
+
+    PHP - http://www.php.net/manual/en/langref.php
+
+    Visual Basic - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbls7/html/vbspecstart.asp.  Open in IE.
+
+    Pascal - http://pages.cpsc.ucalgary.ca/~becker/231/SyntaxDiagrams/pascal-syntax_files/frame.htm.  Open in IE.
+
+    Ruby - http://www.rubycentral.com/book/
+
+    ActionScript - <http://skaiste.elekta.lt/Books/O'Reilly/Bookshelfs/books/webdesign/action/index.htm>
+
+    R - Somewhere on http://www.r-project.org.
+
+    ColdFusion - http://livedocs.macromedia.com/coldfusion/6/Developing_ColdFusion_MX_Applications_with_CFML/contents.htm
+
+    Eiffel - http://www.gobosoft.com/eiffel/syntax/
diff --git a/docs/doctool/Info/NDMarkup.txt b/docs/doctool/Info/NDMarkup.txt
new file mode 100644
index 00000000..b4966223
--- /dev/null
+++ b/docs/doctool/Info/NDMarkup.txt
@@ -0,0 +1,80 @@
+
+    Title: NDMarkup
+_______________________________________________________________________________
+
+A markup format used by the parser, both internally and in <NaturalDocs::Parser::ParsedTopic> objects.  Text formatted in
+NDMarkup will only have the tags documented below.
+
+
+About: Top-Level Tags
+
+   All content will be surrounded by one of the top-level tags.  These tags will not appear within each other.
+
+   <p></p>         - Surrounds a paragraph.  Paragraph breaks will replace double line breaks, and single line breaks will
+                            be removed completely.
+
+   <code></code>   - Surrounds code or text diagrams that should appear literally in the output.
+
+   <h></h>         - Surrounds a heading.
+
+   <ul></ul>       - Surrounds a bulleted (unordered) list.
+   <dl></dl>       - Surrounds a description list, which is what you are reading.
+
+
+About: List Item Tags
+
+   These tags will only appear within their respective lists.
+
+   <li></li>       - Surrounds a bulleted list item.
+   <de></de>   - Surrounds a description list entry, which is the left side.  It will always be followed by a description list
+                         description.
+   <ds></ds>   - Surrounds a description list symbol.  This is the same as a description list entry, except that the content
+                         is also a referenceable symbol.  This occurs when inside a list topic.  This tag will always
+                         be followed by a description list description.
+   <dd></dd>   - Surrounds a description list description, which is the right side.  It will always be preceded by a description
+                         list entry or symbol.
+
+About: Text Tags
+
+   These tags will only appear in paragraphs, headings, or description list descriptions.
+
+   <b></b>         - Bold
+   <i></i>           - Italics
+   <u></u>         - Underline
+
+   <link></link>   - Surrounds a potential link to a symbol; potential because the target is not guaranteed to exist.  This
+                             tag merely designates an attempted link.  No other tags will appear between them.
+
+   <url></url>          - Surrounds an external link.  No other tags will appear between them.
+   <email></email>  - Surrounds an email address.  No other tags will appear between them.
+
+About: Amp Chars
+
+   These are the only amp chars supported, and will appear everywhere.  Every other character will appear as is.
+
+   &amp;    - The ampersand &.
+   &quot;    - The double quote ".
+   &lt;        - The less than sign <.
+   &gt;       - The greater than sign >.
+
+About: Tabs
+
+    NDMarkup will not contain tab characters, only spaces.  Any tab characters appearing in the source files will be
+    expanded/replaced as necessary.
+
+
+About: General Tag Properties
+
+   Since the tags are generated, they will always have the following properties, which will make pattern matching much
+   easier.
+
+   - Tags and amp chars will always be in all lowercase.
+   - There will be no properties or extraneous whitespace within tags.  They will only appear exactly as documented here.
+   - All code is valid, meaning tags will always be closed, <li>s will only appear within <ul>s, etc.
+
+   So, for example, you can match symbol links with /<link>([^<]+)<\/link>/ and $1 will be the symbol.  No surprises or
+   gotchas.  No need for sophisticated parsing routines.
+
+   Remember that for symbol definitions, the text should appear as is, but internally (such as for the anchor) they need to
+   be passed through <NaturalDocs::SymbolTable->Defines()> so that the output file is just as tolerant as
+   <NaturalDocs::SymbolTable>.