Some more fixes.

Add controls for some of the esoteric indexing macros.
diff --git a/Doc/tools/sgmlconv/latex2esis.py b/Doc/tools/sgmlconv/latex2esis.py
index 149f847..f39b021 100755
--- a/Doc/tools/sgmlconv/latex2esis.py
+++ b/Doc/tools/sgmlconv/latex2esis.py
@@ -12,6 +12,7 @@
 import sys
 
 from esistools import encode
+from types import ListType, StringType, TupleType
 
 
 DEBUG = 0
@@ -26,7 +27,7 @@
 
 _begin_env_rx = re.compile(r"[\\]begin{([^}]*)}")
 _end_env_rx = re.compile(r"[\\]end{([^}]*)}")
-_begin_macro_rx = re.compile("[\\\\]([a-zA-Z]+[*]?)({|\\s*\n?)")
+_begin_macro_rx = re.compile(r"[\\]([a-zA-Z]+[*]?)({|\s*\n?)")
 _comment_rx = re.compile("%+ ?(.*)\n[ \t]*")
 _text_rx = re.compile(r"[^]%\\{}]+")
 _optional_rx = re.compile(r"\s*[[]([^]]*)[]]")
@@ -159,9 +160,9 @@
                     self.write("Anumbered TOKEN no\n")
                 # rip off the macroname
                 if params:
-                    if optional and len(params) == 1:
-                        line = line[m.end():]
-                    else:
+##                    if optional and len(params) == 1:
+##                        line = line[m.end():]
+##                    else:
                         line = line[m.end(1):]
                 elif empty:
                     line = line[m.end(1):]
@@ -173,7 +174,7 @@
                 # handles attribute parsing so we can 'continue' the outer
                 # loop.
                 #
-                if optional and type(params[0]) is type(()):
+                if optional and type(params[0]) is TupleType:
                     # the attribute name isn't used in this special case
                     pushing(macroname, "a", depth + len(stack))
                     stack.append(macroname)
@@ -188,13 +189,13 @@
                 for attrname in params:
                     if optional:
                         optional = 0
-                        if type(attrname) is type(""):
+                        if type(attrname) is StringType:
                             m = _optional_rx.match(line)
                             if m:
                                 line = line[m.end():]
                                 self.write("A%s TOKEN %s\n"
                                            % (attrname, encode(m.group(1))))
-                    elif type(attrname) is type(()):
+                    elif type(attrname) is TupleType:
                         # This is a sub-element; but don't place the
                         # element we found on the stack (\section-like)
                         pushing(macroname, "b", len(stack) + depth)
@@ -204,7 +205,7 @@
                         m = _start_group_rx.match(line)
                         if m:
                             line = line[m.end():]
-                    elif type(attrname) is type([]):
+                    elif type(attrname) is ListType:
                         # A normal subelement: <macroname><attrname>...</>...
                         attrname = attrname[0]
                         if not opened:
@@ -215,7 +216,6 @@
                         pushing(attrname, "sub-elem", len(stack) + depth + 1)
                         self.line = skip_white(line)[1:]
                         line = self.subconvert("}", len(stack) + depth + 1)[1:]
-                        dbgmsg("subconvert() ==> " + `line[:20]`)
                         popping(attrname, "sub-elem", len(stack) + depth + 1)
                         self.write(")%s\n" % attrname)
                     else:
@@ -232,7 +232,7 @@
                         self.write("A%s %s %s\n"
                                    % (attrname, dtype, encode(value)))
                         line = line[m.end():]
-                if params and type(params[-1]) is type('') \
+                if params and type(params[-1]) is StringType \
                    and (not empty) and not environ:
                     # attempt to strip off next '{'
                     m = _start_group_rx.match(line)
@@ -260,7 +260,7 @@
                 conversion = self.table.get(macroname)
                 if macroname \
                    and macroname not in self.discards \
-                   and type(conversion) is not type(""):
+                   and type(conversion) is not StringType:
                     # otherwise, it was just a bare group
                     self.write(")%s\n" % stack[-1])
                 popping(macroname, "d", len(stack) + depth - 1)
@@ -400,6 +400,11 @@
         "opcodedesc": (["name", "var"], 0, 0, 1, 0),
         "par": ([], 0, 1, 0, 0),
         "paragraph": ([("title",)], 0, 0, 0, 0),
+        "refbimodindex": (["name"], 0, 1, 0, 0),
+        "refexmodindex": (["name"], 0, 1, 0, 0),
+        "refmodindex": (["name"], 0, 1, 0, 0),
+        "refstmodindex": (["name"], 0, 1, 0, 0),
+        "refmodule": (["ref"], 1, 0, 0, 0),
         "renewcommand": (["macro"], 0, 0, 0, 0),
         "rfc": (["num"], 0, 1, 0, 0),
         "section": ([("title",)], 0, 0, 0, 0),