#
#  Copyright (C) 2010, 2011 DocArch <http://www.docarch.be>.
#
#  This file is part of liblouis.
#
#  liblouis is free software: you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as
#  published by the Free Software Foundation, either version 2.1 of the
#  License, or (at your option) any later version.
#
#  liblouis 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 GNU
#  Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public
#  License along with liblouis. If not, see
#  <http://www.gnu.org/licenses/>.
#
#-------------------------------------------------------------------------------
#
#  Flemish Braille Math Code (a.k.a. Woluwe code)
#     Created and maintained by Bert Frees <bertfrees@gmail.com>
#     See also: « Handleiding Braillesymbolen Wiskunde »
#              (Gilbert Notaert, Marc Suij en Emmanuel Vandekerkhove, G.on Woluwe, 1984)
#
# ----------------------------------------------------------------------------------------------

include litdigits6Dots.uti

numsign 3456
capsletter 46
begcapsword 45
midnum , 2
midnum . 3

repeated \x0020 0
repeated \x00A0 a

class  uppergreek          \x0391\x0392\x0393\x0394\x0395\x0396\x0397\x0398\x0399\x039A\x039B\x039C\x039D\x039E\x039F\x03A0\x03A1\x03A3\x03A4\x03A5\x03A6\x03A7\x03A8\x03A9
class  lowergreek          \x03B1\x03B2\x03B3\x03B4\x03B5\x03B6\x03B7\x03B8\x03B9\x03BA\x03BB\x03BC\x03BD\x03BE\x03BF\x03C0\x03C1\x03C2\x03C3\x03C4\x03C5\x03C6\x03C7\x03C8\x03C9\x03D5
class  operationkeyspace   \x002B\x002D\x002E\x003D\x007E\x00B1\x00D7\x00F7\x2190\x2191\x2192\x2193\x2194\x21D0\x21D2\x21D4\x2209\x220C\x2212\x2217\x2223\x2224\x2226\x2243\x2248\x2260\x2261\x2284\x2285\x2288\x2289\x22C5
class  operationkey        \x002F\x003C\x2215\x2216\x2225\x2227\x2228\x2229\x222A\x2264\x2282\x2283\x2286\x2287\x22A5\x22D5
class  operationnokey      \x003E\x00AF\x0302\x0303\x0304\x2191\x2193\x2208\x220B\x2265
# class relation
class  digitletter         abcdefghij
swapcd dropped             0123456789                           356,2,23,25,256,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

exactdots @0
exactdots @123456
exactdots @1256
exactdots @1456
exactdots @23
exactdots @5
exactdots @56

# Overgang van functie naar letter

  noback context  "sin"["\es"]%uppergreek     ?
  noback context  "cos"["\es"]%uppergreek     ?
  noback context  "log"["\es"]%uppergreek     ?
  noback context  "tan"["\es"]%uppergreek     ?
  noback context  "tg"["\es"]%uppergreek      ?

  noback context  "sin"["\es"]%lowergreek     ?
  noback context  "cos"["\es"]%lowergreek     ?
  noback context  "log"["\es"]%lowergreek     ?
  noback context  "tan"["\es"]%lowergreek     ?
  noback context  "tg"["\es"]%lowergreek      ?
  
  noback context  "sin"["\es"]$l              @6
  noback context  "cos"["\es"]$l              @6
  noback context  "log"["\es"]$l              @6
  noback context  "tan"["\es"]$l              @6
  noback context  "tg"["\es"]$l               @6
  
# Overgang tussen twee lettergedeeltes

  noback context  %uppergreek["\es"]$u        @6
  noback context  %lowergreek["\es"]$u        @6
  noback context  $l["\es"]%uppergreek        ?
  noback context  $l["\es"]%lowergreek        ?
  noback context  $l["\es"]$l                 ?
  
# Overgang tussen coefficient en lettergedeelte waarbij verwarring kan ontstaan 

  noback context  $d["\es"]%digitletter       @6
  noback context  $d[]%digitletter            @6
  
# Niet-wiskundige tekst

  noback context ["\et"]$p                    ?
  noback context ["\et"]                      @0
  
# Wortelvormen

  noback context ["\ev"]                      @146
  
# Lege exponenten en indices

  noback context  ["\ei\e^r\en\ex"]           ?
  noback context  ["\ei\e^c\en\ex"]           ?
  noback context  ["\ei\e^l\en\ex"]           ?
  noback context  ["\ei\e_r\en\ex"]           ?
  noback context  ["\ei\e_c\en\ex"]           ?
  noback context  ["\ei\e_l\en\ex"]           ?
  noback context  ["\en"]                     ?
  
# Gezakte cijfers, exponenten, indices & breuken

  noback context  "\ef\es"$d."\ed\es"[$d.]"\ex"            %dropped    # noemer van natuurlijke breuk in gezakte cijfers
  noback context  "\e^r\es"[$d.]"\ex"                      %dropped    # natuurlijke exponenten en indices in gezakte cijfers
  noback context  "\e^c\es"[$d.]"\ex"                      %dropped
  noback context  "\e^l\es"[$d.]"\ex"                      %dropped
  noback context  "\e_r\es"[$d.]"\ex"                      %dropped
  noback context  "\e_c\es"[$d.]"\ex"                      %dropped
  noback context  "\e_l\es"[$d.]"\ex"                      %dropped
  
  noback context  ["\ei"]"\e^r\es"%operationkeyspace"\ex"  ?           # accenten, bewerkings- en relatietekens als index midden of rechts boven
  noback context  ["\ei"]"\e^r\es"%operationkey"\ex"       ?
  noback context  ["\ei"]"\e^r\es"%operationnokey"\ex"     ?
  noback context  ["\ei"]"\e^c\es"%operationkeyspace"\ex"  ?
  noback context  ["\ei"]"\e^c\es"%operationkey"\ex"       ?
  noback context  ["\ei"]"\e^c\es"%operationnokey"\ex"     ?
  
  noback context  "\e^r\es"%operationkeyspace["\ex"]       ?           # verwijder sluiter
  noback context  "\e^r\es"%operationkey["\ex"]            ?
  noback context  "\e^r\es"%operationnokey["\ex"]          ?
  noback context  "\e^c\es"%operationkeyspace["\ex"]       ?
  noback context  "\e^c\es"%operationkey["\ex"]            ?
  noback context  "\e^c\es"%operationnokey["\ex"]          ?
  
  noback context  "\es"[]%operationkeyspace                @5          # sleutel voor bewerkingstekens
  noback context  "\es"[]%operationkey                     @5
  
  noback context  ["\ef"]                                  @5@23       # begin van breuk  
  noback pass2    %upnum.[@1b-145-1b-234]%lownum.          ?           # verwijder breukstreep
  noback pass3    [@1b-124-1b-234]%upnum.%lownum.          @3456       # herstel cijferteken van teller  
  noback pass3    @1b-145                                  @1256       # breukstreep \ed
  noback pass3    @1b-124                                  ?           # \ef
  noback pass3    @1b-234                                  ?           # \es
  
  noback pass3    @1b-24-1b-34-1235                        @34         # \ei\e^r
  noback pass3    @1b-24-1b-34-14                          @456@34     # \ei\e^c
  noback pass3    @1b-24-1b-34-123                         @3456@34    # \ei\e^l
  noback pass3    @1b-24-1b-456-1235                       @16         # \ei\e_r
  noback pass3    @1b-24-1b-456-14                         @456@16     # \ei\e_c
  noback pass3    @1b-24-1b-456-123                        @3456@16    # \ei\e_l  
  noback pass3    @1b-24                                   ?           # \ei
  noback pass3    @1b-34-1235                              @4          # \e^r
  noback pass3    @1b-34-14                                @45         # \e^c
  
  noback pass3    %lownum.[@1b-1346]                       ?           # verwijder sluiter na gezakte cijfers
  noback pass4    @1b-1346                                 @156        # sluiter \ex
  
# ----------------------------------------------------------------------------------------------
