The branch, master, has been updated.

- Log -----------------------------------------------------------------

commit f67cf6f4bb3e3d22ac9aebfa22027c3537cbdf61
Author: Georg Baum <[email protected]>
Date:   Sat Dec 15 13:02:40 2012 +0100

    Add support for stmaryrd.sty (bug #8434)
    
    The stmaryrd package adds support for lots of math symbols, using a font
    designed to accompany the computer modern fonts. The changes in detail:
    
    - Fix generate_symbols_list.py to work with stmaryrd.sty. It loooks like it
      was automatically translated from a perl version and never used.
    - Generate the new symbols in lib/symbols using generate_symbols_list.py and
      add some manual adjustments
    - Generate stmary10.ttf by a simple ttf export from stmary10.sfd with 
fontforge
    - Add license info for stmary10.ttf
    - Create a test file with all symbols from stmaryrd.sty. Actually it would 
be
      nice to have this for the other fonts as well.
    - The mechanics: lyx2lyx, tex2lyx, font machinery etc.

diff --git a/development/tools/generate_symbols_list.py 
b/development/tools/generate_symbols_list.py
index a18dd69..de64393 100644
--- a/development/tools/generate_symbols_list.py
+++ b/development/tools/generate_symbols_list.py
@@ -1,7 +1,9 @@
 #!/usr/bin/python
-import sys,string,re,os
+import sys,string,re,os,os.path
 
 def get_code(code, font):
+    if font != "dontknowwhichfontusesthisstrangeencoding":
+        return code
     if code < 10:
        return code+161
     elif code < 32:
@@ -20,10 +22,16 @@ def process(file):
     fh = open(file)
     lines = fh.readlines()
     fh.close()
+    package, ext = os.path.splitext(os.path.basename(file))
+    if ext != ".sty":
+        package = ''
 
     n = len(lines)
     for i in xrange(n):
        line = lines[i]
+        mo =  re.match(r'\s*%.*', line)
+        if mo != None:
+            continue
        next_line = ""
        if i+1 < n:
            next_line = lines[i+1]
@@ -36,19 +44,28 @@ def process(file):
        if mo != None:
            font_names[mo.group(1)] = mo.group(3)
 
-       mo =  
re.match(r'.*\\DeclareMath(Symbol|Delimiter)\s*\{?\\(\w*?)\}?\s*\{?\\(.*?)\}?\s*\{(.*?)\}\s*\{"(.*?)\}.*',
 line)
-       if mo != None:
-           symbol = mo.group(2)
-           type = mo.group(3)
-           font = mo.group(4)
-           code = mo.group(5)
-       else:
-           mo = 
re.match(r'.*\\edef\\(\w*?)\{.*?\{\\hexnumber@\\sym(.*?)\}(.*?)\}', line)
-           if mo != None:
-               symbol = mo.group(1)
-               type = "mathord"
-               font = mo.group(2)
-               code = mo.group(3)
+       mo =  
re.match(r'.*\\DeclareMath(Symbol|Delimiter)\s*\{?\\(\w*?)\}?\s*\{?\\(.*?)\}?\s*\{(.*?)\}\s*\{([\'"]?)(.*?)\}.*',
 line)
+        code = -1
+        try:
+            if mo != None:
+                symbol = mo.group(2)
+                type = mo.group(3)
+                font = mo.group(4)
+                if mo.group(5) == '':
+                    code = int(mo.group(6))
+                elif mo.group(5) == '"':
+                    code = int(mo.group(6), 16)
+                else:
+                    code = int(mo.group(6), 8)
+            else:
+                mo = 
re.match(r'.*\\edef\\(\w*?)\{.*?\{\\hexnumber@\\sym(.*?)\}(.*?)\}', line)
+                if mo != None:
+                    symbol = mo.group(1)
+                    type = "mathord"
+                    font = mo.group(2)
+                    code = int(mo.group(3), 16)
+        except ValueError:
+                code = -1
 
        if mo != None and symbol not in ignore_list:
            mo2 = re.match(r'\s*\\def\\(.*?)\{', next_line)
@@ -59,8 +76,8 @@ def process(file):
            if font_names.has_key(font):
                font = font_names[font]
 
-           code = get_code(string.atoi(code, 16), font)
-           if code == 0:
+           code = get_code(code, font)
+           if code < 0:
                continue
 
            xcode = 0
@@ -74,7 +91,10 @@ def process(file):
                    sys.stderr.write("code is not equal!!!\n")
            else:
                symbols[symbol] = code
-               print "%-18s %-4s %3d %3d %-6s" % (symbol,font,code,xcode,type)
+               if package == '':
+                   print "%-18s %-4s %3d %3d %-6s" % 
(symbol,font,code,xcode,type)
+               else:
+                   print "%-18s %-4s %3d %3d %-9s x  %s" % 
(symbol,font,code,xcode,type,package)
 
 
 path = os.path.split(sys.argv[0])[0]
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 04516e5..9888787 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -14,6 +14,7 @@ dist_pkgdata_DATA += configure.py
 
 dist_noinst_DATA = \
        fonts/stmary10.sfd \
+       fonts/test/stmary10.lyx \
        images/README \
        images/font-smallcaps.png \
        images/math/ams_arrows.png \
@@ -298,6 +299,7 @@ dist_fonts_DATA = \
        fonts/msbm10.ttf \
        fonts/ReadmeBaKoMa4LyX.txt \
        fonts/rsfs10.ttf \
+       fonts/stmary10.ttf \
        fonts/wasy10.ttf
 
 imagesdir = $(pkgdatadir)/images
diff --git a/lib/chkconfig.ltx b/lib/chkconfig.ltx
index f198ae1..22297e5 100644
--- a/lib/chkconfig.ltx
+++ b/lib/chkconfig.ltx
@@ -343,6 +343,7 @@
 \TestPackage{slashed}
 \TestPackage{soul}
 \TestPackage{splitidx}
+\TestPackage{stmaryrd}
 \TestPackage{subfig}
 \TestPackage{Sweave}
 \TestPackage{textcomp}
diff --git a/lib/doc/LaTeXConfig.lyx b/lib/doc/LaTeXConfig.lyx
index adabe17..01de5ab 100644
--- a/lib/doc/LaTeXConfig.lyx
+++ b/lib/doc/LaTeXConfig.lyx
@@ -6581,6 +6581,35 @@ splitindex
 \end_layout
 
 \begin_layout Subsection
+stmaryrd
+\end_layout
+
+\begin_layout Description
+Found: 
+\begin_inset Info
+type  "package"
+arg   "stmaryrd"
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+CTAN: 
+\family typewriter
+fonts/stmaryrd/
+\end_layout
+
+\begin_layout Description
+Notes: The package 
+\family sans
+stmaryrd
+\family default
+ is needed by LyX to be able to output additional characters that come from
+ the St Mary's Road symbol font.
+\end_layout
+
+\begin_layout Subsection
 subfig
 \end_layout
 
diff --git a/lib/fonts/ReadmeBaKoMa4LyX.txt b/lib/fonts/ReadmeBaKoMa4LyX.txt
index 9314f73..d158d7c 100644
--- a/lib/fonts/ReadmeBaKoMa4LyX.txt
+++ b/lib/fonts/ReadmeBaKoMa4LyX.txt
@@ -56,6 +56,14 @@
       created by Eddie Saudrais using METAFONT, is freely available for general
       use.
 
+      In addition to the BaKoMa fonts, this font bundle contains the stmary 
font
+      'stmary10.ttf' from the stmaryrd package. It was converted from the type1
+      version available at
+      http://www.ctan.org/tex-archive/fonts/stmaryrd/ps-type1/hoekwater/.
+      This PostScript Type 1 implementation of the font stmary10, originally
+      created by Jeremy Gibbons and Alan Jeffrey using METAFONT, is in the
+      public domain.
+
 
       Ekkehart Schlicht
       [email protected]
diff --git a/lib/fonts/stmary10.ttf b/lib/fonts/stmary10.ttf
new file mode 100644
index 0000000..692a30e
Binary files /dev/null and b/lib/fonts/stmary10.ttf differ
diff --git a/lib/fonts/test/stmary10.lyx b/lib/fonts/test/stmary10.lyx
new file mode 100644
index 0000000..3eb80e0
--- /dev/null
+++ b/lib/fonts/test/stmary10.lyx
@@ -0,0 +1,547 @@
+#LyX 2.1 created this file. For more info see http://www.lyx.org/
+\lyxformat 453
+\begin_document
+\begin_header
+\textclass article
+\begin_preamble
+
+\end_preamble
+\use_default_options false
+\maintain_unincluded_children false
+\language english
+\language_package none
+\inputencoding auto
+\fontencoding default
+\font_roman default
+\font_sans default
+\font_typewriter default
+\font_math auto
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize 12
+\spacing single
+\use_hyperref false
+\papersize a4paper
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 0
+\use_package esint 1
+\use_package mathdots 0
+\use_package mathtools 0
+\use_package mhchem 0
+\use_package stmaryrd 2
+\use_package undertilde 0
+\cite_engine basic
+\cite_engine_type numerical
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\quotes_language english
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+This file contains each symbol of the font stmary10.ttf that is made accessible
+ by stmaryrd.sty, even the ones that are not used in LyX, because they are
+ already provided by other packages.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula $\shortleftarrow$
+\end_inset
+
+ 
+\begin_inset Formula $\shortrightarrow$
+\end_inset
+
+ 
+\begin_inset Formula $\shortuparrow$
+\end_inset
+
+ 
+\begin_inset Formula $\shortdownarrow$
+\end_inset
+
+ 
+\begin_inset Formula $\Yup$
+\end_inset
+
+ 
+\begin_inset Formula $\Ydown$
+\end_inset
+
+ 
+\begin_inset Formula $\Yleft$
+\end_inset
+
+ 
+\begin_inset Formula $\Yright$
+\end_inset
+
+ 
+\begin_inset Formula $\varcurlyvee$
+\end_inset
+
+ 
+\begin_inset Formula $\varcurlywedge$
+\end_inset
+
+ 
+\begin_inset Formula $\minuso$
+\end_inset
+
+ 
+\begin_inset Formula $\baro$
+\end_inset
+
+ 
+\begin_inset Formula $\sslash$
+\end_inset
+
+ 
+\begin_inset Formula $\bbslash$
+\end_inset
+
+ 
+\begin_inset Formula $\moo$
+\end_inset
+
+ 
+\begin_inset Formula $\varotimes$
+\end_inset
+
+ 
+\begin_inset Formula $\varoast$
+\end_inset
+
+ 
+\begin_inset Formula $\varobar$
+\end_inset
+
+ 
+\begin_inset Formula $\varodot$
+\end_inset
+
+ 
+\begin_inset Formula $\varoslash$
+\end_inset
+
+ 
+\begin_inset Formula $\varobslash$
+\end_inset
+
+ 
+\begin_inset Formula $\varocircle$
+\end_inset
+
+ 
+\begin_inset Formula $\varoplus$
+\end_inset
+
+ 
+\begin_inset Formula $\varominus$
+\end_inset
+
+ 
+\begin_inset Formula $\boxast$
+\end_inset
+
+ 
+\begin_inset Formula $\boxbar$
+\end_inset
+
+ 
+\begin_inset Formula $\boxdot$
+\end_inset
+
+ 
+\begin_inset Formula $\boxslash$
+\end_inset
+
+ 
+\begin_inset Formula $\boxbslash$
+\end_inset
+
+ 
+\begin_inset Formula $\boxcircle$
+\end_inset
+
+ 
+\begin_inset Formula $\boxbox$
+\end_inset
+
+ 
+\begin_inset Formula $\boxempty$
+\end_inset
+
+ 
+\begin_inset Formula $\lightning$
+\end_inset
+
+ 
+\begin_inset Formula $\merge$
+\end_inset
+
+ 
+\begin_inset Formula $\vartimes$
+\end_inset
+
+ 
+\begin_inset Formula $\fatsemi$
+\end_inset
+
+ 
+\begin_inset Formula $\sswarrow$
+\end_inset
+
+ 
+\begin_inset Formula $\ssearrow$
+\end_inset
+
+ 
+\begin_inset Formula $\curlywedgeuparrow$
+\end_inset
+
+ 
+\begin_inset Formula $\curlywedgedownarrow$
+\end_inset
+
+ 
+\begin_inset Formula $\fatslash$
+\end_inset
+
+ 
+\begin_inset Formula $\fatbslash$
+\end_inset
+
+ 
+\begin_inset Formula $\lbag$
+\end_inset
+
+ 
+\begin_inset Formula $\rbag$
+\end_inset
+
+ 
+\begin_inset Formula $\varbigcirc$
+\end_inset
+
+ 
+\begin_inset Formula $\leftrightarroweq$
+\end_inset
+
+ 
+\begin_inset Formula $\curlyveedownarrow$
+\end_inset
+
+ 
+\begin_inset Formula $\curlyveeuparrow$
+\end_inset
+
+ 
+\begin_inset Formula $\nnwarrow$
+\end_inset
+
+ 
+\begin_inset Formula $\nnearrow$
+\end_inset
+
+ 
+\begin_inset Formula $\leftslice$
+\end_inset
+
+ 
+\begin_inset Formula $\rightslice$
+\end_inset
+
+ 
+\begin_inset Formula $\varolessthan$
+\end_inset
+
+ 
+\begin_inset Formula $\varogreaterthan$
+\end_inset
+
+ 
+\begin_inset Formula $\varovee$
+\end_inset
+
+ 
+\begin_inset Formula $\varowedge$
+\end_inset
+
+ 
+\begin_inset Formula $\talloblong$
+\end_inset
+
+ 
+\begin_inset Formula $\interleave$
+\end_inset
+
+ 
+\begin_inset Formula $\obar$
+\end_inset
+
+ 
+\begin_inset Formula $\obslash$
+\end_inset
+
+ 
+\begin_inset Formula $\olessthan$
+\end_inset
+
+ 
+\begin_inset Formula $\ogreaterthan$
+\end_inset
+
+ 
+\begin_inset Formula $\ovee$
+\end_inset
+
+ 
+\begin_inset Formula $\owedge$
+\end_inset
+
+ 
+\begin_inset Formula $\oblong$
+\end_inset
+
+ 
+\begin_inset Formula $\inplus$
+\end_inset
+
+ 
+\begin_inset Formula $\niplus$
+\end_inset
+
+ 
+\begin_inset Formula $\nplus$
+\end_inset
+
+ 
+\begin_inset Formula $\subsetplus$
+\end_inset
+
+ 
+\begin_inset Formula $\supsetplus$
+\end_inset
+
+ 
+\begin_inset Formula $\subsetpluseq$
+\end_inset
+
+ 
+\begin_inset Formula $\supsetpluseq$
+\end_inset
+
+ 
+\begin_inset Formula $\Lbag$
+\end_inset
+
+ 
+\begin_inset Formula $\Rbag$
+\end_inset
+
+ 
+\begin_inset Formula $\llbracket$
+\end_inset
+
+ 
+\begin_inset Formula $\rrbracket$
+\end_inset
+
+ 
+\begin_inset Formula $\llparenthesis$
+\end_inset
+
+ 
+\begin_inset Formula $\rrparenthesis$
+\end_inset
+
+ 
+\begin_inset Formula $\binampersand$
+\end_inset
+
+ 
+\begin_inset Formula $\bindnasrepma$
+\end_inset
+
+ 
+\begin_inset Formula $\trianglelefteqslant$
+\end_inset
+
+ 
+\begin_inset Formula $\trianglerighteqslant$
+\end_inset
+
+ 
+\begin_inset Formula $\ntrianglelefteqslant$
+\end_inset
+
+ 
+\begin_inset Formula $\ntrianglerighteqslant$
+\end_inset
+
+ 
+\begin_inset Formula $\llfloor$
+\end_inset
+
+ 
+\begin_inset Formula $\rrfloor$
+\end_inset
+
+ 
+\begin_inset Formula $\llceil$
+\end_inset
+
+ 
+\begin_inset Formula $\rrceil$
+\end_inset
+
+ 
+\begin_inset Formula $\arrownot$
+\end_inset
+
+ 
+\begin_inset Formula $\Arrownot$
+\end_inset
+
+ 
+\begin_inset Formula $\Mapstochar$
+\end_inset
+
+ 
+\begin_inset Formula $\mapsfromchar$
+\end_inset
+
+ 
+\begin_inset Formula $\Mapsfromchar$
+\end_inset
+
+ 
+\begin_inset Formula $\leftrightarrowtriangle$
+\end_inset
+
+ 
+\begin_inset Formula $\leftarrowtriangle$
+\end_inset
+
+ 
+\begin_inset Formula $\rightarrowtriangle$
+\end_inset
+
+ 
+\begin_inset Formula $\bigtriangledown$
+\end_inset
+
+ 
+\begin_inset Formula $\bigtriangleup$
+\end_inset
+
+ 
+\begin_inset Formula $\bigcurlyvee$
+\end_inset
+
+ 
+\begin_inset Formula $\bigcurlywedge$
+\end_inset
+
+ 
+\begin_inset Formula $\bigsqcap$
+\end_inset
+
+ 
+\begin_inset Formula $\bigbox$
+\end_inset
+
+ 
+\begin_inset Formula $\bigparallel$
+\end_inset
+
+ 
+\begin_inset Formula $\biginterleave$
+\end_inset
+
+ 
+\begin_inset Formula $\bignplus$
+\end_inset
+
+ 
+\begin_inset Formula $\llbracket$
+\end_inset
+
+ 
+\begin_inset Formula $\rrbracket$
+\end_inset
+
+ 
+\begin_inset Formula $\varcopyright$
+\end_inset
+
+ 
+\begin_inset Formula $\longarrownot$
+\end_inset
+
+ 
+\begin_inset Formula $\Longarrownot$
+\end_inset
+
+ 
+\begin_inset Formula $\Mapsto$
+\end_inset
+
+ 
+\begin_inset Formula $\mapsfrom$
+\end_inset
+
+ 
+\begin_inset Formula $\Mapsfrom$
+\end_inset
+
+ 
+\begin_inset Formula $\Longmapsto$
+\end_inset
+
+ 
+\begin_inset Formula $\longmapsfrom$
+\end_inset
+
+ 
+\begin_inset Formula $\Longmapsfrom$
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/lib/lyx2lyx/lyx_2_1.py b/lib/lyx2lyx/lyx_2_1.py
index 26aab3e..0084458 100644
--- a/lib/lyx2lyx/lyx_2_1.py
+++ b/lib/lyx2lyx/lyx_2_1.py
@@ -417,6 +417,83 @@ def revert_use_mathtools(document):
             i = j
 
 
+def convert_use_stmaryrd(document):
+    "insert use_package stmaryrd"
+    i = find_token(document.header, "\\use_package", 0)
+    if i == -1:
+        document.warning("Malformed LyX document: Can't find \\use_package.")
+        return;
+    j = find_token(document.preamble, "\\usepackage{stmaryrd}", 0)
+    if j == -1:
+        document.header.insert(i + 1, "\\use_package stmaryrd 0")
+    else:
+        document.header.insert(i + 1, "\\use_package stmaryrd 2")
+        del document.preamble[j]
+
+
+def revert_use_stmaryrd(document):
+    "remove use_package stmaryrd"
+    regexp = re.compile(r'(\\use_package\s+stmaryrd)')
+    i = find_re(document.header, regexp, 0)
+    value = "1" # default is auto
+    if i != -1:
+        value = get_value(document.header, "\\use_package" , i).split()[1]
+        del document.header[i]
+    if value == "2": # on
+        add_to_preamble(document, ["\\usepackage{stmaryrd}"])
+    elif value == "1": # auto
+        commands = ["shortleftarrow", "shortrightarrow", "shortuparrow", \
+                    "shortdownarrow", "Yup", "Ydown", "Yleft", "Yright", \
+                    "varcurlyvee", "varcurlywedge", "minuso", "baro", \
+                    "sslash", "bbslash", "moo", "varotimes", "varoast", \
+                    "varobar", "varodot", "varoslash", "varobslash", \
+                    "varocircle", "varoplus", "varominus", "boxast", \
+                    "boxbar", "boxdot", "boxslash", "boxbslash", "boxcircle", \
+                    "boxbox", "boxempty", "merge", "vartimes", \
+                    "fatsemi", "sswarrow", "ssearrow", "curlywedgeuparrow", \
+                    "curlywedgedownarrow", "fatslash", "fatbslash", "lbag", \
+                    "rbag", "varbigcirc", "leftrightarroweq", \
+                    "curlyveedownarrow", "curlyveeuparrow", "nnwarrow", \
+                    "nnearrow", "leftslice", "rightslice", "varolessthan", \
+                    "varogreaterthan", "varovee", "varowedge", "talloblong", \
+                    "interleave", "obar", "obslash", "olessthan", \
+                    "ogreaterthan", "ovee", "owedge", "oblong", "inplus", \
+                    "niplus", "nplus", "subsetplus", "supsetplus", \
+                    "subsetpluseq", "supsetpluseq", "Lbag", "Rbag", \
+                    "llbracket", "rrbracket", "llparenthesis", \
+                    "rrparenthesis", "binampersand", "bindnasrepma", \
+                    "trianglelefteqslant", "trianglerighteqslant", \
+                    "ntrianglelefteqslant", "ntrianglerighteqslant", \
+                    "llfloor", "rrfloor", "llceil", "rrceil", "arrownot", \
+                    "Arrownot", "Mapstochar", "mapsfromchar", "Mapsfromchar", \
+                    "leftrightarrowtriangle", "leftarrowtriangle", \
+                    "rightarrowtriangle", \
+                    "bigcurlyvee", "bigcurlywedge", "bigsqcap", "bigbox", \
+                    "bigparallel", "biginterleave", "bignplus", \
+                    "varcopyright", "longarrownot", "Longarrownot", \
+                    "Mapsto", "mapsfrom", "Mapsfrom" "Longmapsto", \
+                    "longmapsfrom", "Longmapsfrom"]
+        # commands provided by stmaryrd.sty but LyX uses other packages:
+        # lightning, bigtriangledown, bigtriangleup
+
+        i = 0
+        while True:
+            i = find_token(document.body, '\\begin_inset Formula', i)
+            if i == -1:
+                return
+            j = find_end_of_inset(document.body, i)
+            if j == -1:
+                document.warning("Malformed LyX document: Can't find end of 
Formula inset at line " + str(i))
+                i += 1
+                continue
+            code = "\n".join(document.body[i:j])
+            for c in commands:
+                if code.find("\\%s" % c) != -1:
+                    add_to_preamble(document, ["\\usepackage{stmaryrd}"])
+                    return
+            i = j
+
+
 def convert_cite_engine_type(document):
     "Determine the \\cite_engine_type from the citation engine."
     i = find_token(document.header, "\\cite_engine", 0)
@@ -2679,10 +2756,12 @@ convert = [
            [449, []],
            [450, []],
            [451, [convert_beamerargs, convert_againframe_args, 
convert_corollary_args, convert_quote_args]],
-           [452, [convert_beamerblocks]]
+           [452, [convert_beamerblocks]],
+           [453, [convert_use_stmaryrd]]
           ]
 
 revert =  [
+           [452, [revert_use_stmaryrd]],
            [451, [revert_beamerblocks]],
            [450, [revert_beamerargs, revert_beamerargs2, revert_beamerargs3, 
revert_beamerflex]],
            [449, [revert_garamondx, revert_garamondx_newtxmath]],
diff --git a/lib/symbols b/lib/symbols
index 89a64d6..717303b 100644
--- a/lib/symbols
+++ b/lib/symbols
@@ -4,6 +4,9 @@
 #
 # The syntax of lib/symbols is very ad hoc.
 # There are several possible formats of a line, which are quite different.
+# New symbols for font packages may be created using
+# development/tools/generate_symbols_list.py (but may require manual fixes
+# as well).
 
 # decorations
 acute               decoration none
@@ -812,6 +815,150 @@ logof              wasy          22    0  mathrel x
 varint             wasy         114    0  mathop  &int;
 varoint            wasy         117    0  mathop  &int;
 
+# Generated from stmaryrd.sty
+
+shortleftarrow     stmry   0   0 mathrel    x  stmaryrd
+shortrightarrow    stmry   1   0 mathrel    x  stmaryrd
+shortuparrow       stmry   2   0 mathrel    x  stmaryrd
+shortdownarrow     stmry   3   0 mathrel    x  stmaryrd
+Yup                stmry   4   0 mathbin    x  stmaryrd
+Ydown              stmry   5   0 mathbin    x  stmaryrd
+Yleft              stmry   6   0 mathbin    x  stmaryrd
+Yright             stmry   7   0 mathbin    x  stmaryrd
+varcurlyvee        stmry   8   0 mathbin    x  stmaryrd
+# qt does not display characters at the \t position (0x09)
+# therefore our .ttf font contains a copy at 254 (0xfe)
+#varcurlywedge      stmry   9   0 mathbin    x  stmaryrd
+varcurlywedge      stmry 254   0 mathbin    x  stmaryrd
+minuso             stmry  10   0 mathbin    x  stmaryrd
+baro               stmry  11   0 mathbin    x  stmaryrd
+sslash             stmry  12   0 mathbin    x  stmaryrd
+bbslash            stmry  13   0 mathbin    x  stmaryrd
+moo                stmry  14   0 mathbin    x  stmaryrd
+varotimes          stmry  15   0 mathbin    x  stmaryrd
+varoast            stmry  16   0 mathbin    x  stmaryrd
+varobar            stmry  17   0 mathbin    x  stmaryrd
+varodot            stmry  18   0 mathbin    x  stmaryrd
+varoslash          stmry  19   0 mathbin    x  stmaryrd
+varobslash         stmry  20   0 mathbin    x  stmaryrd
+varocircle         stmry  21   0 mathbin    x  stmaryrd
+varoplus           stmry  22   0 mathbin    x  stmaryrd
+varominus          stmry  23   0 mathbin    x  stmaryrd
+boxast             stmry  24   0 mathbin    x  stmaryrd
+boxbar             stmry  25   0 mathbin    x  stmaryrd
+boxdot             stmry  26   0 mathbin    x  stmaryrd
+boxslash           stmry  27   0 mathbin    x  stmaryrd
+boxbslash          stmry  28   0 mathbin    x  stmaryrd
+boxcircle          stmry  29   0 mathbin    x  stmaryrd
+boxbox             stmry  30   0 mathbin    x  stmaryrd
+boxempty           stmry  31   0 mathbin    x  stmaryrd
+#lightning          stmry  32   0 mathord   x  stmaryrd # already in wasy
+merge              stmry  33   0 mathbin    x  stmaryrd
+vartimes           stmry  34   0 mathbin    x  stmaryrd
+fatsemi            stmry  35   0 mathbin    x  stmaryrd
+sswarrow           stmry  36   0 mathrel    x  stmaryrd
+ssearrow           stmry  37   0 mathrel    x  stmaryrd
+curlywedgeuparrow  stmry  38   0 mathrel    x  stmaryrd
+curlywedgedownarrow stmry 39   0 mathrel    x  stmaryrd
+fatslash           stmry  40   0 mathbin    x  stmaryrd
+fatbslash          stmry  41   0 mathbin    x  stmaryrd
+lbag               stmry  42   0 mathbin    x  stmaryrd
+rbag               stmry  43   0 mathbin    x  stmaryrd
+varbigcirc         stmry  44   0 mathbin    x  stmaryrd
+leftrightarroweq   stmry  45   0 mathrel    x  stmaryrd
+curlyveedownarrow  stmry  46   0 mathrel    x  stmaryrd
+curlyveeuparrow    stmry  47   0 mathrel    x  stmaryrd
+nnwarrow           stmry  48   0 mathrel    x  stmaryrd
+nnearrow           stmry  49   0 mathrel    x  stmaryrd
+leftslice          stmry  50   0 mathbin    x  stmaryrd
+rightslice         stmry  51   0 mathbin    x  stmaryrd
+varolessthan       stmry  52   0 mathbin    x  stmaryrd
+varogreaterthan    stmry  53   0 mathbin    x  stmaryrd
+varovee            stmry  54   0 mathbin    x  stmaryrd
+varowedge          stmry  55   0 mathbin    x  stmaryrd
+talloblong         stmry  56   0 mathbin    x  stmaryrd
+interleave         stmry  57   0 mathbin    x  stmaryrd
+obar               stmry  58   0 mathbin    x  stmaryrd
+obslash            stmry  59   0 mathbin    x  stmaryrd
+olessthan          stmry  60   0 mathbin    x  stmaryrd
+ogreaterthan       stmry  61   0 mathbin    x  stmaryrd
+ovee               stmry  62   0 mathbin    x  stmaryrd
+owedge             stmry  63   0 mathbin    x  stmaryrd
+oblong             stmry  64   0 mathbin    x  stmaryrd
+inplus             stmry  65   0 mathrel    x  stmaryrd
+niplus             stmry  66   0 mathrel    x  stmaryrd
+nplus              stmry  67   0 mathbin    x  stmaryrd
+subsetplus         stmry  68   0 mathrel    x  stmaryrd
+supsetplus         stmry  69   0 mathrel    x  stmaryrd
+subsetpluseq       stmry  70   0 mathrel    x  stmaryrd
+supsetpluseq       stmry  71   0 mathrel    x  stmaryrd
+Lbag               stmry  72   0 mathopen   x  stmaryrd
+Rbag               stmry  73   0 mathclose  x  stmaryrd
+llbracket          stmry  74   0 mathopen  x  stmaryrd
+rrbracket          stmry  75   0 mathclose x  stmaryrd
+llparenthesis      stmry  76   0 mathopen   x  stmaryrd
+rrparenthesis      stmry  77   0 mathclose  x  stmaryrd
+binampersand       stmry  78   0 mathopen   x  stmaryrd
+bindnasrepma       stmry  79   0 mathclose  x  stmaryrd
+trianglelefteqslant stmry 80   0 mathrel    x  stmaryrd
+trianglerighteqslant stmry 81  0 mathrel    x  stmaryrd
+ntrianglelefteqslant stmry 82  0 mathrel    x  stmaryrd
+ntrianglerighteqslant stmry 83 0 mathrel    x  stmaryrd
+llfloor            stmry  84   0 mathopen   x  stmaryrd
+rrfloor            stmry  85   0 mathclose  x  stmaryrd
+llceil             stmry  86   0 mathopen   x  stmaryrd
+rrceil             stmry  87   0 mathclose  x  stmaryrd
+arrownot           stmry  88   0 mathrel    x  stmaryrd
+Arrownot           stmry  89   0 mathrel    x  stmaryrd
+Mapstochar         stmry  90   0 mathrel    x  stmaryrd
+mapsfromchar       stmry  91   0 mathrel    x  stmaryrd
+Mapsfromchar       stmry  92   0 mathrel    x  stmaryrd
+leftrightarrowtriangle stmry 93 0 mathrel   x  stmaryrd
+leftarrowtriangle  stmry  94   0 mathrel    x  stmaryrd
+rightarrowtriangle stmry  95   0 mathrel    x  stmaryrd
+#bigtriangledown    stmry  96   0 mathop    x  stmaryrd #already in cmsy
+#bigtriangleup      stmry  97   0 mathop    x  stmaryrd #already in cmsy
+bigcurlyvee        stmry  98   0 mathop    x  stmaryrd
+bigcurlywedge      stmry  99   0 mathop    x  stmaryrd
+bigsqcap           stmry 100   0 mathop    x  stmaryrd
+bigbox             stmry 101   0 mathop    x  stmaryrd
+bigparallel        stmry 102   0 mathop    x  stmaryrd
+biginterleave      stmry 103   0 mathop    x  stmaryrd
+#hugetriangledown   stmry 104   0 mathop    x  stmaryrd # only in the font, 
not the .sty
+#hugetriangleup     stmry 105   0 mathop    x  stmaryrd # only in the font, 
not the .sty
+#hugecurlyvee       stmry 106   0 mathop    x  stmaryrd # only in the font, 
not the .sty
+#hugecurlywedge     stmry 107   0 mathop    x  stmaryrd # only in the font, 
not the .sty
+#hugesqcap          stmry 108   0 mathop    x  stmaryrd # only in the font, 
not the .sty
+#hugebox            stmry 109   0 mathop    x  stmaryrd # only in the font, 
not the .sty
+#hugeparallel       stmry 110   0 mathop    x  stmaryrd # only in the font, 
not the .sty
+#hugeinterleave     stmry 111   0 mathop    x  stmaryrd # only in the font, 
not the .sty
+bignplus           stmry 112   0 mathop    x  stmaryrd # caution: named 
hugenplus in the font
+#largellbracket     stmry 113   0 mathopen  x  stmaryrd # only in the font, 
not the .sty
+#Largellbracket     stmry 114   0 mathopen  x  stmaryrd # only in the font, 
not the .sty
+#LARGEllbracket     stmry 115   0 mathopen  x  stmaryrd # only in the font, 
not the .sty
+#hugellbracket      stmry 116   0 mathopen  x  stmaryrd # only in the font, 
not the .sty
+#Largellbrackettop  stmry 117   0 mathopen  x  stmaryrd # only in the font, 
not the .sty
+#Largellbracketbot  stmry 118   0 mathopen  x  stmaryrd # only in the font, 
not the .sty caution: named Hugellbrackettop in the font
+#llbracketex        stmry 119   0 mathopen  x  stmaryrd # only in the font, 
not the .sty caution: named Hugellbracketbot in the font
+#hugenplus          stmry 120   0 mathop    x  stmaryrd # only in the font, 
not the .sty caution: named Hugenplus in the font
+#largerrbracket     stmry 121   0 mathclose x  stmaryrd # only in the font, 
not the .sty
+#Largerrbracket     stmry 122   0 mathclose x  stmaryrd # only in the font, 
not the .sty
+#LARGErrbracket     stmry 123   0 mathclose x  stmaryrd # only in the font, 
not the .sty
+#hugerrbracket      stmry 124   0 mathclose x  stmaryrd # only in the font, 
not the .sty
+#Largerrbrackettop  stmry 125   0 mathclose x  stmaryrd # only in the font, 
not the .sty caution: named Hugerrbrackettop in the font
+#Largerrbracketbot  stmry 126   0 mathclose x  stmaryrd # only in the font, 
not the .sty caution: named Hugerrbracketbot in the font
+#rrbracketex        stmry 127   0 mathclose x  stmaryrd # only in the font, 
not the .sty caution: named Hugerrbracketex in the font
+
+\def\varcopyright{c\kern-14mu\varbigcirc}                   stmaryrd
+\def\longarrownot{\kern5.5mu\arrownot\kern-5.5mu}           stmaryrd
+\def\Longarrownot{\kern5.5mu\Arrownot\kern-5.5mu}           stmaryrd
+\def\Mapsto{\Mapstochar\kern-9mu\Rightarrow}                stmaryrd
+\def\mapsfrom{\leftarrow\kern-9mu\mapsfromchar}             stmaryrd
+\def\Mapsfrom{\Leftarrow\kern-9mu\Mapsfromchar}             stmaryrd
+\def\Longmapsto{\Mapstochar\kern-7mu\Longrightarrow}        stmaryrd
+\def\longmapsfrom{\longleftarrow\kern-7mu\mapsfromchar}     stmaryrd
+\def\Longmapsfrom{\Longleftarrow\kern-7mu\Mapsfromchar}     stmaryrd
+
 # symbols from the mhchem package, all of them are equivalent to a math symbol
 # mhchem is not loaded because these commands can only be used inside
 # a \ce or a \cf inset
diff --git a/lib/unicodesymbols b/lib/unicodesymbols
index 7c22dc5..249447e 100644
--- a/lib/unicodesymbols
+++ b/lib/unicodesymbols
@@ -1868,14 +1868,14 @@
 0x219a ""                         "" "" "\\nleftarrow" "amssymb" # LEFTWARDS 
ARROW WITH STROKE
 0x219b ""                         "" "" "\\nrightarrow" "amssymb" # RIGHTWARDS 
ARROW WITH STROKE
 #0x219c ""                         "" "" "" "" # LEFTWARDS WAVE ARROW
-#0x219d ""                         "" "" "" "" # RIGHTWARDS WAVE ARROW
+0x219d ""                         "" "" "\\leadsto" "amssymb" # RIGHTWARDS 
WAVE ARROW
 0x219e ""                         "" "" "\\twoheadleftarrow" "amssymb" # 
LEFTWARDS TWO HEADED ARROW
 #0x219f ""                         "" "" "" "" # UPWARDS TWO HEADED ARROW
 0x21a0 ""                         "" "" "\\twoheadrightarrow" "amssymb" # 
RIGHTWARDS TWO HEADED ARROW
 #0x21a1 ""                         "" "" "" "" # DOWNWARDS TWO HEADED ARROW
 0x21a2 ""                         "" "" "\\leftarrowtail" "amssymb" # 
LEFTWARDS ARROW WITH TAIL
 0x21a3 ""                         "" "" "\\rightarrowtail" "amssymb" # 
RIGHTWARDS ARROW WITH TAIL
-#0x21a4 ""                         "" "" "" "" # LEFTWARDS ARROW FROM BAR
+0x21a4 ""                         "" "" "\\mapsfromchar" "stmaryrd" # 
LEFTWARDS ARROW FROM BAR
 #0x21a5 ""                         "" "" "" "" # UPWARDS ARROW FROM BAR
 0x21a6 ""                         "" "" "\\mapsto" "" # RIGHTWARDS ARROW FROM 
BAR
 #0x21a7 ""                         "" "" "" "" # DOWNWARDS ARROW FROM BAR
@@ -1886,7 +1886,7 @@
 0x21ac ""                         "" "" "\\looparrowright" "amssymb" # 
RIGHTWARDS ARROW WITH LOOP
 #0x21ad ""                         "" "" "" "" # LEFT RIGHT WAVE ARROW
 0x21ae ""                         "" "" "\\nleftrightarrow" "amssymb" # LEFT 
RIGHT ARROW WITH STROKE
-0x21af ""                         "" "" "\\lightning" "wasysym" # DOWNWARDS 
ZIGZAG ARROW
+0x21af ""                         "" "" "\\lightning" "stmaryrd|wasysym" # 
DOWNWARDS ZIGZAG ARROW
 0x21b0 ""                         "" "" "\\Lsh" "amssymb" # UPWARDS ARROW WITH 
TIP LEFTWARDS
 0x21b1 ""                         "" "" "\\Rsh" "amssymb" # UPWARDS ARROW WITH 
TIP RIGHTWARDS
 #0x21b2 ""                         "" "" "" "" # DOWNWARDS ARROW WITH TIP 
LEFTWARDS
@@ -2549,6 +2549,8 @@
 #
 # miscellaneous mathematical symbols-A
 #
+0x27e6 ""                         "" "" "\\llbracket" "stmaryrd" # 
MATHEMATICAL LEFT WHITE SQUARE BRACKET
+0x27e7 ""                         "" "" "\\rrbracket" "stmaryrd" # 
MATHEMATICAL RIGHT WHITE SQUARE BRACKET
 0x27e8 "\\textlangle"             "textcomp" "" "\\langle" "" # MATHEMATICAL 
LEFT ANGLE BRACKET
 0x27e9 "\\textrangle"             "textcomp" "" "\\rangle" "" # MATHEMATICAL 
RIGHT ANGLE BRACKET
 #
diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index e672525..37fa651 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -454,6 +454,7 @@ vector<string> const & BufferParams::auto_packages()
                packages.push_back("mathdots");
                packages.push_back("mathtools");
                packages.push_back("mhchem");
+               packages.push_back("stmaryrd");
                packages.push_back("undertilde");
        }
        return packages;
diff --git a/src/Font.cpp b/src/Font.cpp
index 7595265..6b072d8 100644
--- a/src/Font.cpp
+++ b/src/Font.cpp
@@ -57,8 +57,8 @@ namespace {
 
 char const * GUIFamilyNames[NUM_FAMILIES + 2 /* default & error */] =
 { N_("Roman"), N_("Sans Serif"), N_("Typewriter"), N_("Symbol"),
-  "cmr", "cmsy", "cmm", "cmex", "msa", "msb", "eufrak", "rsfs", "wasy", 
"esint",
-  N_("Inherit"), N_("Ignore") };
+  "cmr", "cmsy", "cmm", "cmex", "msa", "msb", "eufrak", "rsfs", "stmry",
+  "wasy", "esint", N_("Inherit"), N_("Ignore") };
 
 char const * GUISeriesNames[NUM_SERIES + 2 /* default & error */] =
 { N_("Medium"), N_("Bold"), N_("Inherit"), N_("Ignore") };
diff --git a/src/FontEnums.h b/src/FontEnums.h
index d06c5d6..5dd7839 100644
--- a/src/FontEnums.h
+++ b/src/FontEnums.h
@@ -49,6 +49,8 @@ enum FontFamily {
        ///
        RSFS_FAMILY,
        ///
+       STMARY_FAMILY,
+       ///
        WASY_FAMILY,
        ///
        ESINT_FAMILY,
diff --git a/src/FontInfo.cpp b/src/FontInfo.cpp
index 15054ee..251e509 100644
--- a/src/FontInfo.cpp
+++ b/src/FontInfo.cpp
@@ -32,8 +32,8 @@ namespace lyx {
 //
 char const * LyXFamilyNames[NUM_FAMILIES + 2 /* default & error */] =
 { "roman", "sans", "typewriter", "symbol",
-  "cmr", "cmsy", "cmm", "cmex", "msa", "msb", "eufrak", "rsfs", "wasy",
-  "esint", "default", "error" };
+  "cmr", "cmsy", "cmm", "cmex", "msa", "msb", "eufrak", "rsfs", "stmry",
+  "wasy", "esint", "default", "error" };
 
 char const * LyXSeriesNames[NUM_SERIES + 2 /* default & error */] =
 { "medium", "bold", "default", "error" };
@@ -380,6 +380,7 @@ string getFamilyCSS(FontFamily const & f)
        case MSB_FAMILY:
        case EUFRAK_FAMILY:
        case RSFS_FAMILY:
+       case STMARY_FAMILY:
        case WASY_FAMILY:
        case ESINT_FAMILY:
        case INHERIT_FAMILY:
diff --git a/src/FontInfo.h b/src/FontInfo.h
index b471c29..a083eae 100644
--- a/src/FontInfo.h
+++ b/src/FontInfo.h
@@ -127,6 +127,7 @@ public:
                case CMEX_FAMILY:
                case MSA_FAMILY:
                case MSB_FAMILY:
+               case STMARY_FAMILY:
                case WASY_FAMILY:
                case ESINT_FAMILY:
                        return true;
diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp
index 12db9f6..37c2e78 100644
--- a/src/LaTeXFeatures.cpp
+++ b/src/LaTeXFeatures.cpp
@@ -850,6 +850,11 @@ string const LaTeXFeatures::getPackages() const
            params_.use_package("yhmath") != BufferParams::package_off)
                packages << "\\usepackage{yhmath}\n";
 
+       // stmaryrd must be loaded after amsmath
+       if (mustProvide("stmaryrd") &&
+           params_.use_package("stmaryrd") != BufferParams::package_off)
+               packages << "\\usepackage{stmaryrd}\n";
+
        if (mustProvide("undertilde") &&
                params_.use_package("undertilde") != BufferParams::package_off)
                packages << "\\usepackage{undertilde}\n";
diff --git a/src/frontends/qt4/GuiDocument.cpp 
b/src/frontends/qt4/GuiDocument.cpp
index dbdf691..180a83a 100644
--- a/src/frontends/qt4/GuiDocument.cpp
+++ b/src/frontends/qt4/GuiDocument.cpp
@@ -156,6 +156,10 @@ char const * packages_gui[][4] =
         N_("Use mhchem &package automatically"),
         N_("Use mh&chem package"),
         N_("The LaTeX package mhchem is only used if either the command \\ce 
or \\cf is inserted into formulas")},
+       {"stmaryrd",
+        N_("Use stmaryrd package automatically"),
+        N_("Use stmaryrd package"),
+        N_("The LaTeX package stmaryrd is only used if symbols from the St 
Mary's Road symbol font for theoretical computer science are inserted into 
formulas")},
        {"undertilde",
         N_("Use u&ndertilde package automatically"),
         N_("Use undertilde pac&kage"),
diff --git a/src/frontends/qt4/GuiFontLoader.cpp 
b/src/frontends/qt4/GuiFontLoader.cpp
index 695d21b..5614606 100644
--- a/src/frontends/qt4/GuiFontLoader.cpp
+++ b/src/frontends/qt4/GuiFontLoader.cpp
@@ -36,7 +36,8 @@ using namespace std;
 using namespace lyx::support;
 
 QString const math_fonts[] = {"cmex10", "cmmi10", "cmr10", "cmsy10",
-       "esint10", "eufm10", "msam10", "msbm10", "rsfs10", "wasy10"};
+       "esint10", "eufm10", "msam10", "msbm10", "rsfs10", "stmary10",
+       "wasy10"};
 int const num_math_fonts = sizeof(math_fonts) / sizeof(*math_fonts);
 
 namespace lyx {
@@ -78,6 +79,7 @@ SymbolFont symbol_fonts[] = {
        { MSB_FAMILY,   "msbm10", "-*-msbm10-*-*-*-*-*-*-*-*-*-*-*-*" },
        { EUFRAK_FAMILY,"eufm10", "-*-eufm10-medium-*-*-*-*-*-*-*-*-*-*-*" },
        { RSFS_FAMILY,  "rsfs10", "-*-rsfs10-medium-*-*-*-*-*-*-*-*-*-*-*" },
+       { STMARY_FAMILY,"stmary10","-*-stmary10-medium-*-*-*-*-*-*-*-*-*-*-*" },
        { WASY_FAMILY,  "wasy10", "-*-wasy10-medium-*-*-*-*-*-*-*-*-*-*-*" },
        { ESINT_FAMILY, "esint10","-*-esint10-medium-*-*-*-*-*-*-*-*-*-*-*" }
 };
diff --git a/src/frontends/qt4/GuiFontMetrics.cpp 
b/src/frontends/qt4/GuiFontMetrics.cpp
index 799121b..40c1802 100644
--- a/src/frontends/qt4/GuiFontMetrics.cpp
+++ b/src/frontends/qt4/GuiFontMetrics.cpp
@@ -38,7 +38,7 @@ namespace {
  * This is no real conversion but a simple cast in reality. This is the reason
  * why this works well for symbol fonts used in mathed too, even though
  * these are not real ucs4 characters. These are codepoints in the
- * modern fonts used, nothing unicode related.
+ * computer modern fonts used, nothing unicode related.
  * See comment in QLPainter::text() for more explanation.
  **/   
 inline QChar const ucs4_to_qchar(char_type const ucs4)
diff --git a/src/mathed/MathSupport.cpp b/src/mathed/MathSupport.cpp
index 82de873..95d27b4 100644
--- a/src/mathed/MathSupport.cpp
+++ b/src/mathed/MathSupport.cpp
@@ -574,6 +574,8 @@ fontinfo fontinfos[] = {
                          inh_shape, Color_math},
        {"msb",           MSB_FAMILY, inh_series,
                          inh_shape, Color_math},
+       {"stmry",         STMARY_FAMILY, inh_series,
+                         inh_shape, Color_math},
        {"wasy",          WASY_FAMILY, inh_series,
                          inh_shape, Color_math},
        {"esint",         ESINT_FAMILY, inh_series,
diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp
index 38f3918..fe6de69 100644
--- a/src/tex2lyx/Preamble.cpp
+++ b/src/tex2lyx/Preamble.cpp
@@ -517,6 +517,7 @@ Preamble::Preamble() : one_language(true), 
title_layout_found(false)
        h_use_packages["mhchem"]     = "0";
        h_use_packages["mathdots"]   = "0";
        h_use_packages["mathtools"]  = "0";
+       h_use_packages["stmaryrd"]   = "0";
        h_use_packages["undertilde"] = "0";
 }
 
@@ -702,7 +703,8 @@ void Preamble::handle_package(Parser &p, string const & 
name,
 
        else if (name == "amsmath" || name == "amssymb" ||
                 name == "esint" || name == "mhchem" || name == "mathdots" ||
-                name == "mathtools" || name == "undertilde")
+                name == "mathtools" || name == "stmaryrd" ||
+                name == "undertilde")
                h_use_packages[name] = "2";
 
        else if (name == "babel") {
diff --git a/src/tex2lyx/TODO.txt b/src/tex2lyx/TODO.txt
index 96f0c8f..8085ae8 100644
--- a/src/tex2lyx/TODO.txt
+++ b/src/tex2lyx/TODO.txt
@@ -89,6 +89,7 @@ Format LaTeX feature                        LyX feature
        \command<arg>, \begin{env}<arg>
 452    beamer block arguments               InsetArgument
        \begin{block}<overlay>{title}
+453    automatic stmaryrd loading           \use_package stmaryrd
 
 
 General
diff --git a/src/tex2lyx/test/CJK.lyx.lyx b/src/tex2lyx/test/CJK.lyx.lyx
index a2b9f63..ef1b7fb 100644
--- a/src/tex2lyx/test/CJK.lyx.lyx
+++ b/src/tex2lyx/test/CJK.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.1.0dev
-\lyxformat 452
+\lyxformat 453
 \begin_document
 \begin_header
 \textclass article
@@ -46,6 +46,7 @@
 \use_package mathdots 0
 \use_package mathtools 0
 \use_package mhchem 0
+\use_package stmaryrd 0
 \use_package undertilde 0
 \cite_engine basic
 \cite_engine_type numerical
diff --git a/src/tex2lyx/test/DummyDocument.lyx 
b/src/tex2lyx/test/DummyDocument.lyx
index 871797b..7f95c83 100644
--- a/src/tex2lyx/test/DummyDocument.lyx
+++ b/src/tex2lyx/test/DummyDocument.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.1.0dev
-\lyxformat 450
+\lyxformat 453
 \begin_document
 \begin_header
 \textclass article
@@ -44,6 +44,7 @@
 \use_package mathdots 0
 \use_package mathtools 0
 \use_package mhchem 0
+\use_package stmaryrd 0
 \use_package undertilde 0
 \cite_engine natbib
 \cite_engine_type numerical
@@ -77,7 +78,6 @@
 
 \begin_layout Subsection
 
-
 \begin_inset CommandInset label
 LatexCommand label
 name "sub:External-Subsection"
@@ -88,7 +88,6 @@ External Subsection
 \end_layout
 
 \begin_layout Standard
-
 This is a small dummy child document to show how files can be inserted to 
another document. Here are some accented characters to make sure the encoding 
is passed to included files: éè 
 \end_layout
 
diff --git a/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx 
b/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx
index 0f37fa5..c39ac11 100644
--- a/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx
+++ b/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.1.0dev
-\lyxformat 452
+\lyxformat 453
 \begin_document
 \begin_header
 \textclass article
@@ -46,6 +46,7 @@
 \use_package mathdots 0
 \use_package mathtools 0
 \use_package mhchem 0
+\use_package stmaryrd 0
 \use_package undertilde 0
 \cite_engine basic
 \cite_engine_type numerical
diff --git a/src/tex2lyx/test/box-color-size-space-align.lyx.lyx 
b/src/tex2lyx/test/box-color-size-space-align.lyx.lyx
index 5cddec2..a855321 100644
--- a/src/tex2lyx/test/box-color-size-space-align.lyx.lyx
+++ b/src/tex2lyx/test/box-color-size-space-align.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.1.0dev
-\lyxformat 452
+\lyxformat 453
 \begin_document
 \begin_header
 \textclass article
@@ -70,6 +70,7 @@
 \use_package mathdots 0
 \use_package mathtools 0
 \use_package mhchem 0
+\use_package stmaryrd 0
 \use_package undertilde 0
 \cite_engine basic
 \cite_engine_type numerical
diff --git a/src/tex2lyx/test/test-insets.lyx.lyx 
b/src/tex2lyx/test/test-insets.lyx.lyx
index 2594281..df09a02 100644
--- a/src/tex2lyx/test/test-insets.lyx.lyx
+++ b/src/tex2lyx/test/test-insets.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.1.0dev
-\lyxformat 452
+\lyxformat 453
 \begin_document
 \begin_header
 \textclass article
@@ -50,6 +50,7 @@
 \use_package mathdots 0
 \use_package mathtools 0
 \use_package mhchem 0
+\use_package stmaryrd 0
 \use_package undertilde 0
 \cite_engine natbib
 \cite_engine_type numerical
diff --git a/src/tex2lyx/test/test-modules.lyx.lyx 
b/src/tex2lyx/test/test-modules.lyx.lyx
index 1674124..fcdaa1f 100644
--- a/src/tex2lyx/test/test-modules.lyx.lyx
+++ b/src/tex2lyx/test/test-modules.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.1.0dev
-\lyxformat 452
+\lyxformat 453
 \begin_document
 \begin_header
 \textclass amsart
@@ -42,6 +42,7 @@ theorems-ams
 \use_package mathdots 0
 \use_package mathtools 0
 \use_package mhchem 0
+\use_package stmaryrd 0
 \use_package undertilde 0
 \cite_engine basic
 \cite_engine_type numerical
diff --git a/src/tex2lyx/test/test-structure.lyx.lyx 
b/src/tex2lyx/test/test-structure.lyx.lyx
index a02550f..1c83fc3 100644
--- a/src/tex2lyx/test/test-structure.lyx.lyx
+++ b/src/tex2lyx/test/test-structure.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.1.0dev
-\lyxformat 452
+\lyxformat 453
 \begin_document
 \begin_header
 \textclass article
@@ -75,6 +75,7 @@ logicalmkup
 \use_package mathdots 0
 \use_package mathtools 0
 \use_package mhchem 0
+\use_package stmaryrd 0
 \use_package undertilde 0
 \cite_engine basic
 \cite_engine_type numerical
diff --git a/src/tex2lyx/test/test.lyx.lyx b/src/tex2lyx/test/test.lyx.lyx
index f698bbe..9bf19cb 100644
--- a/src/tex2lyx/test/test.lyx.lyx
+++ b/src/tex2lyx/test/test.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.1.0dev
-\lyxformat 452
+\lyxformat 453
 \begin_document
 \begin_header
 \textclass article
@@ -46,6 +46,7 @@
 \use_package mathdots 0
 \use_package mathtools 0
 \use_package mhchem 0
+\use_package stmaryrd 0
 \use_package undertilde 0
 \cite_engine basic
 \cite_engine_type numerical
diff --git a/src/version.h b/src/version.h
index 9d1ea70..1c3c401 100644
--- a/src/version.h
+++ b/src/version.h
@@ -30,8 +30,8 @@ extern char const * const lyx_version_info;
 
 // Do not remove the comment below, so we get merge conflict in
 // independent branches. Instead add your own.
-#define LYX_FORMAT_LYX 452 // spitz: support beamer block args
-#define LYX_FORMAT_TEX2LYX 452 // spitz: support beamer block args
+#define LYX_FORMAT_LYX 453 // gb: support the stmaryrd package
+#define LYX_FORMAT_TEX2LYX 453 // gb: support the stmaryrd package
 
 #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
 #ifndef _MSC_VER

-----------------------------------------------------------------------

Summary of changes:
 development/tools/generate_symbols_list.py         |   54 ++-
 lib/Makefile.am                                    |    2 +
 lib/chkconfig.ltx                                  |    1 +
 lib/doc/LaTeXConfig.lyx                            |   29 +
 lib/fonts/ReadmeBaKoMa4LyX.txt                     |    8 +
 lib/fonts/stmary10.ttf                             |  Bin 0 -> 18624 bytes
 lib/fonts/test/stmary10.lyx                        |  547 ++++++++++++++++++++
 lib/lyx2lyx/lyx_2_1.py                             |   81 +++-
 lib/symbols                                        |  147 ++++++
 lib/unicodesymbols                                 |    8 +-
 src/BufferParams.cpp                               |    1 +
 src/Font.cpp                                       |    4 +-
 src/FontEnums.h                                    |    2 +
 src/FontInfo.cpp                                   |    5 +-
 src/FontInfo.h                                     |    1 +
 src/LaTeXFeatures.cpp                              |    5 +
 src/frontends/qt4/GuiDocument.cpp                  |    4 +
 src/frontends/qt4/GuiFontLoader.cpp                |    4 +-
 src/frontends/qt4/GuiFontMetrics.cpp               |    2 +-
 src/mathed/MathSupport.cpp                         |    2 +
 src/tex2lyx/Preamble.cpp                           |    4 +-
 src/tex2lyx/TODO.txt                               |    1 +
 src/tex2lyx/test/CJK.lyx.lyx                       |    3 +-
 src/tex2lyx/test/DummyDocument.lyx                 |    5 +-
 src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx         |    3 +-
 .../test/box-color-size-space-align.lyx.lyx        |    3 +-
 src/tex2lyx/test/test-insets.lyx.lyx               |    3 +-
 src/tex2lyx/test/test-modules.lyx.lyx              |    3 +-
 src/tex2lyx/test/test-structure.lyx.lyx            |    3 +-
 src/tex2lyx/test/test.lyx.lyx                      |    3 +-
 src/version.h                                      |    4 +-
 31 files changed, 902 insertions(+), 40 deletions(-)
 create mode 100644 lib/fonts/stmary10.ttf
 create mode 100644 lib/fonts/test/stmary10.lyx


hooks/post-receive
-- 
The LyX Source Repository

Reply via email to