[Python-checkins] CVS: python/dist/src/Doc/tools/sgmlconv latex2esis.py,1.20,1.21

Fred L. Drake python-dev@python.org
Wed, 22 Nov 2000 09:56:46 -0800


Update of /cvsroot/python/python/dist/src/Doc/tools/sgmlconv
In directory slayer.i.sourceforge.net:/tmp/cvs-serv12942/tools/sgmlconv

Modified Files:
	latex2esis.py 
Log Message:

Convert the LaTeX "tie" (~) to a simple space.

Add support for some combining characters.

Remove unnecessary imports and dependencies on PyXML and esistools.


Index: latex2esis.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/tools/sgmlconv/latex2esis.py,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -r1.20 -r1.21
*** latex2esis.py	1999/08/26 17:54:16	1.20
--- latex2esis.py	2000/11/22 17:56:43	1.21
***************
*** 17,21 ****
  __version__ = '$Revision$'
  
- import copy
  import errno
  import getopt
--- 17,20 ----
***************
*** 23,31 ****
  import re
  import string
- import StringIO
  import sys
  import UserList
  
- from esistools import encode
  from types import ListType, StringType, TupleType
  
--- 22,29 ----
  import re
  import string
  import sys
  import UserList
+ import xml.sax.saxutils
  
  from types import ListType, StringType, TupleType
  
***************
*** 51,54 ****
--- 49,56 ----
          LaTeXFormatError.__init__(self, msg)
  
+ def encode(s):
+     s = xml.sax.saxutils.escape(s)
+     return s.replace("\n", "\\n\n-")
+ 
  
  _begin_env_rx = re.compile(r"[\\]begin{([^}]*)}")
***************
*** 56,60 ****
  _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*[[]([^]]*)[]]")
  # _parameter_rx is this complicated to allow {...} inside a parameter;
--- 58,62 ----
  _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*[[]([^]]*)[]]")
  # _parameter_rx is this complicated to allow {...} inside a parameter;
***************
*** 113,116 ****
--- 115,121 ----
          self.preamble = 1
  
+     def write_ordinal(self, ordinal):
+         self.write("-\\%%%d;\n" % ordinal)
+ 
      def err_write(self, msg):
          if DEBUG:
***************
*** 166,169 ****
--- 171,180 ----
                  # start of macro
                  macroname = m.group(1)
+                 if macroname == "c":
+                     # Ugh!  This is a combining character...
+                     endpos = m.end()
+                     self.combining_char("c", line[endpos])
+                     line = line[endpos + 1:]
+                     continue
                  entry = self.get_entry(macroname)
                  if entry.verbatim:
***************
*** 291,294 ****
--- 302,310 ----
                  line = line[1:]
                  continue
+             if line[0] == "~":
+                 # don't worry about the "tie" aspect of this command
+                 line = line[1:]
+                 self.write("- \n")
+                 continue
              if line[0] == "{":
                  stack.append("")
***************
*** 303,306 ****
--- 319,330 ----
                  line = line[2:]
                  continue
+             if line[:2] == r"\_":
+                 line = "_" + line[2:]
+                 continue
+             if line[:2] in (r"\'", r'\"'):
+                 # combining characters...
+                 self.combining_char(line[1], line[2])
+                 line = line[3:]
+                 continue
              m = _text_rx.match(line)
              if m:
***************
*** 332,335 ****
--- 356,371 ----
                                     + string.join(stack, ", "))
          # otherwise we just ran out of input here...
+ 
+     # This is a really limited table of combinations, but it will have
+     # to do for now.
+     _combinations = {
+         ("c", "c"): 0x00E7,
+         ("'", "e"): 0x00E9,
+         ('"', "o"): 0x00F6,
+         }
+ 
+     def combining_char(self, prefix, char):
+         ordinal = self._combinations[(prefix, char)]
+         self.write("-\\%%%d;\n" % ordinal)
  
      def start_macro(self, name):