# liblouis: UK Maths  Table for mathematics
#
#  Based on the Linux screenreader BRLTTY, copyright (C) 1999-2006 by
#  The BRLTTY Team
#
#  Copyright (C) 2004, 2005, 2006
#  ViewPlus Technologies, Inc. www.viewplus.com
#  and
#  JJB Software, Inc. www.jjb-software.com
#  All rights reserved
#
#  This file is free software; you can redistribute it and/or modify it
#   under the terms of the Lesser or Library GNU General Public License 
#  as published by the
#  Free Software Foundation; either version 3, or (at your option) any
#  later version.
# 
#  This file is distributed in the hope that it will be useful, but
#  WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
#  Library GNU General Public License for more details.
#
#  You should have received a copy of the Library GNU General Public 
#  License along with this program; see the file COPYING.  If not, write 
#  to
#  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
#  Boston, MA 02110-1301, USA.
#
#  Maintained by John J. Boyer john.boyer@jjb-software.com
# Updated 6-18-08 by Mike Sivill <mike.sivill@viewplus.com>

include ukmaths_single_cell_defs.cti
include ukmaths_unicode_defs.cti
# grouping definitions are character-definition rules
grouping mrow \x0001\x0002 1e,2e
grouping mfrac \x0003\x0004 3e,4e
grouping brackets \x0005\x0006 126,345

# Braille indicators
numsign 3456
capsign 6
begcaps 6-6
endcaps 6-3
singleletterital 4
singleletterbold 4

# litdigit opcodes must be in this table, not the single-cell table.
litdigit 0 245
litdigit 1 1
litdigit 2 12
litdigit 3 14
litdigit 4 145
litdigit 5 15
litdigit 6 124
litdigit 7 1245
litdigit 8 125
litdigit 9 24

# No letsign but endnum for letters a-j.
endnum a 56-1
endnum b 56-12
endnum c 56-14
endnum d 56-145
endnum e 56-15
endnum f 56-124
endnum g 56-1245
endnum h 56-125
endnum i 56-24
endnum j 56-245

# Ordinary translation entries
always = a-56-2356
always + a-56-235
always > a-135-a
always < a-246-a
always % 25-1234
always $ 256
always & 4-12346
always ~ 45-156
always ! 6-236
prepunc " 236
postpunc " 356
postpunc ' 3
always '' 36
always ''' 36-3
midnum , 3
postpunc , 6-2
always , 3
always # 35-2345 print number sign before number
always ( 126
always ) 345
pass2 [{mrow]@126/@345}mrow ?
pass2 @126[{mrow]/}mrow@345 ?
decpoint . 2
always ... 3-3-3
hyphen - 36
postpunc . 6-256
postpunc ; 6-23
postpunc : 6-25
postpunc ? 6-236
endnum % 4-356
midnum * 4-16
repeated \s 0
repeated \x00a0 a

# swap opcodes for replacement and testing.
swapcd dropped 0123456789 356,2,23,25,456,26,235,2356,236,35
swapdd upnum 245,1,12,14,145,15,124,1245,125,24 0,0,0,0,0,0,0,0,0,0
swapdd lownum 356,2,23,25,256,26,235,2356,236,35 0,0,0,0,0,0,0,0,0,0

# now we start doing the real work

# Correction rules
correct {mrow$ld1-20[}mrow] ?
correct "\eb"[{mrow]/}mrow"\ee" ?
context "\eb"[]$l"\ee" @56
context "\eb"[]","$l"\ee" @56
context []"@456-34"$d1-10}mfrac #1=1
# context []"@456-34"$d1-10}mfrac #1=1
context []"@346"$d1-10"@12456" #1=1
context []"@16"$d1-10"@12456" #1=1
# context []"@146"$d1-10 #1=1
context #1=1$d1-10 #1=0%dropped 

# exactdots opcodes for dot patterns in ukmaths.sem
exactdots @126
exactdots @345
exactdots @123456
exactdots @346
exactdots @16
exactdots @23456
exactdots @34
exactdots @456-34
exactdots @12456
exactdots @146

# Function names and abbreviations
word cos 1246-14
word grad 1246-1245
word cosh 1246-125-14
word sinh 1246-125-234
word tanh 1246-125-2345
word cosech 1246-125-126
word coth 1246-125-1256
word sech 1246-125-36
word log 1246-123
word sin 1246-234
word tan 1246-2345
word cosec 1246-126
word curl 1246-146
word div 1246-1456
word cot 1246-1256
word arccosh 1246-236-14
word arcsinh 1246-236-234
word arctanh 1246-236-2345
word arccosech 1246-236-126
word arccoth 1246-236-1256
word arcsech 1246-236-36
word sec 1246-36
word arccos 1246-4-14
word antilog 1246-4-123
word arcsin 1246-4-234
word arctan 1246-4-2345
word arccosec 1246-4-126
word arccot 1246-4-1256
word arcsec 1246-4-25
word colog 1246-45-123

# pass2 processing
pass2 [@3456]%lownum1-10 ?
pass2 [@456-34-3456]%lownum1-10 ?

# pass3 processing
pass3 @346%lownum1-10[@12456] ?
pass3 @16[%lownum1-10]@12456 *
pass3 {mfrac[@3456%upnum1-10%lownum1-10]}mfrac *
