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.
This commit is contained in:
Georg Baum 2012-12-15 13:02:40 +01:00
parent 073561ca63
commit f67cf6f4bb
31 changed files with 902 additions and 40 deletions

View File

@ -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]

View File

@ -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

View File

@ -343,6 +343,7 @@
\TestPackage{slashed}
\TestPackage{soul}
\TestPackage{splitidx}
\TestPackage{stmaryrd}
\TestPackage{subfig}
\TestPackage{Sweave}
\TestPackage{textcomp}

View File

@ -6580,6 +6580,35 @@ splitindex
converter programs.
\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

View File

@ -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
schlicht@lmu.de

BIN
lib/fonts/stmary10.ttf Normal file

Binary file not shown.

547
lib/fonts/test/stmary10.lyx Normal file
View File

@ -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

View File

@ -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]],

View File

@ -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

View File

@ -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
#

View File

@ -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;

View File

@ -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") };

View File

@ -49,6 +49,8 @@ enum FontFamily {
///
RSFS_FAMILY,
///
STMARY_FAMILY,
///
WASY_FAMILY,
///
ESINT_FAMILY,

View File

@ -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:

View File

@ -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;

View File

@ -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";

View File

@ -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"),

View File

@ -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-*-*-*-*-*-*-*-*-*-*-*" }
};

View File

@ -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)

View File

@ -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,

View File

@ -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") {

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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