# liblouis Table for Post-Translation Editing
#
#  Based on the Linux screenreader BRLTTY, copyright (C) 1999-2006 by
#  The BRLTTY Team
#
#  Copyright (C) 2004-2008 ViewPlus Technologies, Inc. www.viewplus.com
#  Copyright (C) 2004-2006 JJB Software, Inc. www.jjb-software.com
#
#  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/>.

include marburg_single_cell_defs.cti

math \x0001 56
math \x0002 45
math \x0003 56
math \x0004 45
repeated \s 0
always \ee\s`4 6-256
always \ee\s`1 6
always \ee\s`3 6-25
always \ee\s`2 6-23
always `7\s\eb 12356
always \ee\s`7 23456
always "\s 0
always \s,\s 6-0
# context "\eb"[]$l"\ee" @56
# context "\eb"[]","$l"\ee" @56

noback pass2 @1b-12 ?
noback pass2 @1b-15 ?
noback pass2 @1b-12-4-4 @4
