When adding a name to the table of macros and environments, make sure it
is not already present.  If it is, raise an exception, since that should not
happen in a well-defined conversion.
diff --git a/Doc/tools/sgmlconv/latex2esis.py b/Doc/tools/sgmlconv/latex2esis.py
index 38b6e49..3ccd7e7 100755
--- a/Doc/tools/sgmlconv/latex2esis.py
+++ b/Doc/tools/sgmlconv/latex2esis.py
@@ -487,7 +487,10 @@
         if attrs.has_key("outputname"):
             self.__current.outputname = attrs.get("outputname")
     def end_macro(self):
-        self.__table[self.__current.name] = self.__current
+        name = self.__current.name
+        if self.__table.has_key(name):
+            raise ValueError("name %s already in use" % `name`)
+        self.__table[name] = self.__current
         self.__current = None
 
     def start_attribute(self, attrs):