diff --git a/CMakeLists.txt b/CMakeLists.txt
index 90ec0ab..4dbb510 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,16 +1,130 @@
+PROJECT (LAviewLatexStruct C)
+
CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
-PROJECT (LAview C)
-
-SET (LAVIEW_VERSION_MAJOR 0)
-SET (LAVIEW_VERSION_MINOR 0)
-SET (LAVIEW_VERSION_PATCH 1)
-SET (LAVIEW_VERSION
- ${LAVIEW_VERSION_MAJOR}.${LAVIEW_VERSION_MINOR}.${LAVIEW_VERSION_PATCH})
+SET (MAJOR 0)
+SET (MINOR 0)
+SET (PATCH 0)
+SET (VERSION ${MAJOR}.${MINOR}.${PATCH})
LIST (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
+INCLUDE (MacroOptionalAddSubdirectory)
+INCLUDE (CPackDetectArch)
-INCLUDE (FindVala)
-INCLUDE (UseVala)
+SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") # supress Gcc warnings
+
+# configure a header file for Gettext
+SET (GETTEXT_PACKAGE "laview-latex-struct")
+ADD_DEFINITIONS (-DGETTEXT_PACKAGE="${GETTEXT_PACKAGE}")
+IF (WIN32)
+ SET (LOCALEDIR "")
+ELSE ()
+ SET (LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/locale")
+ENDIF ()
+SET (CUSTOM_LOCALEDIR "" CACHE STRING "Directory to install l10n files into")
+IF (NOT CUSTOM_LOCALEDIR STREQUAL "")
+ SET (LOCALEDIR "${CUSTOM_LOCALEDIR}")
+ MESSAGE(STATUS "Using LOCALEDIR=${LOCALEDIR}")
+ENDIF ()
+ADD_DEFINITIONS (-DLOCALEDIR="${LOCALEDIR}")
+SET (LOCALE_INSTALL_DIR "share/locale")
+MACRO_OPTIONAL_ADD_SUBDIRECTORY (po)
+
+# Avoid of "dll not found" messages
+SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/run")
+
+# configure a header file for Gettext
+CONFIGURE_FILE (
+ "${PROJECT_SOURCE_DIR}/src/gettext-config.h.in"
+ "${PROJECT_BINARY_DIR}/src/gettext-config.h"
+ )
+
+IF ( CMAKE_BUILD_TYPE STREQUAL "Debug" )
+ SET (VALA_DEBUG "-g")
+ENDIF ()
+
+# configure pkg-config file
+IF (WIN32)
+ SET (prefix "")
+ELSE ()
+ SET (prefix ${CMAKE_INSTALL_PREFIX})
+ENDIF ()
+SET (exec_prefix "\${prefix}")
+SET (libdir "\${exec_prefix}/lib")
+SET (prefincludedir "\${prefix}/include")
+SET (link_lib1 "\${libdir}")
+SET (link_lib2 "laview-latex-struct")
+CONFIGURE_FILE (
+ "${PROJECT_SOURCE_DIR}/laview-latex-struct.pc.in"
+ "${PROJECT_BINARY_DIR}/laview-latex-struct-${MAJOR}.pc"
+ )
+
+SET (CMAKE_C_FLAGS_DEBUG "-ggdb3 -O0 -ftest-coverage -Wcoverage-mismatch ${CMAKE_C_FLAGS_DEBUG}")
+SET (CMAKE_C_FLAGS_RELEASE "-O2 ${CMAKE_C_FLAGS_RELEASE}")
ADD_SUBDIRECTORY (src)
+ADD_SUBDIRECTORY (test)
+
+## CPack configuration ##
+SET (CPACK_PACKAGE_CONTACT "backbone@backbone.ws")
+SET (CPACK_PACKAGE_VENDOR "backbone@backbone.ws")
+SET (CPACK_NSIS_MODIFY_PATH ON)
+SET (CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
+INCLUDE (InstallRequiredSystemLibraries)
+SET (CPACK_RESOURCE_FILE_LICENSE
+ "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
+SET (CPACK_PACKAGE_DESCRIPTION_FILE
+ "${CMAKE_CURRENT_SOURCE_DIR}/README")
+INSTALL (FILES "${PROJECT_BINARY_DIR}/laview-latex-struct-${MAJOR}.pc"
+ DESTINATION lib/pkgconfig)
+INSTALL (FILES "${PROJECT_BINARY_DIR}/src/laview-latex-struct-${MAJOR}.vapi"
+ DESTINATION share/vala/vapi)
+#SET (CPACK_NSIS_PACKAGE_NAME "${PROJECT_NAME}")
+#SET (CPACK_NSIS_DISPLAY_NAME "${PROJECT_NAME}")
+SET (CPACK_PACKAGE_VERSION_MAJOR "${MAJOR}")
+SET (CPACK_PACKAGE_VERSION_MINOR "${MINOR}")
+SET (CPACK_PACKAGE_VERSION_PATCH "${PATCH}")
+SET (CPACK_PACKAGE_VERSION "${VERSION}")
+
+IF (UNIX)
+ SET (CPACK_GENERATOR "DEB;RPM;STGZ;TBZ2;TGZ;TZ;ZIP")
+ SET (CPACK_SOURCE_GENERATOR "DEB;RPM;STGZ;TBZ2;TGZ;TZ;ZIP")
+ SET (CPACK_PACKAGE_NAME "laview-latex-struct")
+ SET (CPACK_PACKAGE_DESCRIPTION_SUMMARY "LaTeX representation in the memory")
+ SET (CPACK_PACKAGE_DESCRIPTION "LaTeX representation in the memory "
+ "Scanner + Generator + Operations on document objects.")
+
+ # Debian specific options
+ SET (CPACK_DEBIAN_PACKAGE_DEPENDS "valac (>= 0.24), libglib2.0-bin (>= 2.33)")
+ SET (CPACK_DEBIAN_PACKAGE_SECTION "Libraries")
+ # SET (CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${ARCHITECTURE}")
+ # SET (CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
+ SET (CPACK_DEBIAN_PACKAGE_RECOMMENDS "")
+ SET (CPACK_DEBIAN_PACKAGE_SUGGESTS "")
+
+ # RPM specific options
+ # SET (CPACK_RPM_PACKAGE_ARCHITECTURE "${ARCHITECTURE}")
+ SET (CPACK_RPM_PACKAGE_LICENSE "LGPLv3+")
+ SET (CPACK_RPM_PACKAGE_GROUP "Applications/Text")
+ SET (CPACK_RPM_PACKAGE_REQUIRES "vala >= 0.24, glib >= 2.33")
+ SET (CPACK_RPM_PACKAGE_PROVIDES "laview-latex-struct")
+
+ # http://public.kitware.com/Bug/view.php?id=12997
+ SET(CPACK_PACKAGE_FILE_NAME
+ "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${ARCHITECTURE}")
+
+ELSEIF (WIN32)
+ SET (CPACK_GENERATOR "NSIS")
+ SET (CPACK_SOURCE_GENERATOR "NSIS")
+ SET (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CMAKE_PROJECT_NAME}-${MAJOR}")
+ #SET (CPACK_NSIS_MENU_LINKS "${EWS_WEBSITE}" "Homepage for ${EWS_APP_NAME}")
+ #SET (CPACK_NSIS_INSTALLED_ICON_NAME bin\\\\${EXE_TARGET_NAME}.exe)
+ #SET (CPACK_NSIS_URL_INFO_ABOUT "${EWS_WEBSITE}")
+ #SET (CPACK_NSIS_HELP_LINK "${EWS_WEBSITE}")
+ SET (CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_PROJECT_NAME}-${MAJOR}")
+ SET (CPACK_UNINSTALL_NAME "LVLatStr-${MAJOR}") # <=10 symbols: https://redmine.backbone.ws/issues/83
+ENDIF ()
+
+INCLUDE (CPack)
+
+INCLUDE (CTest)
diff --git a/README b/README
index 186e653..7db41d9 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
LaTeX representation in the memory + Parser (GScanner) + Generator.
Git repo: https://git.backbone.ws/laview/latex-struct
-Issue tracker: https://chili.backbone.ws/projects/latex-struct
+Issue tracker: https://chili.backbone.ws/projects/latex-struct/issues
diff --git a/cmake/CPackDetectArch.cmake b/cmake/CPackDetectArch.cmake
new file mode 100644
index 0000000..e878179
--- /dev/null
+++ b/cmake/CPackDetectArch.cmake
@@ -0,0 +1,20 @@
+# Kernel of Operation System
+EXECUTE_PROCESS (COMMAND uname -s COMMAND tr -d '\n' OUTPUT_VARIABLE OSKERNEL)
+MESSAGE ("OSKERNEL = ${OSKERNEL}")
+STRING (TOLOWER "${OSKERNEL}" OSKERNEL)
+
+# CPU Architecture
+SET (CUSTOM_ARCHITECTURE "" CACHE STRING "Specify custom target architecutre")
+SET (ARCHITECTURE "${CUSTOM_ARCHITECTURE}")
+IF (ARCHITECTURE STREQUAL "")
+ # SET (ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}")
+ # SET (ARCHITECTURE "${CMAKE_HOST_SYSTEM_PROCESSOR}")
+ EXECUTE_PROCESS(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE)
+
+ # Replacements
+ STRING (REGEX REPLACE "^x86_64$" "amd64" ARCHITECTURE "${ARCHITECTURE}")
+ STRING (REGEX REPLACE "^i.86$" "i386" ARCHITECTURE "${ARCHITECTURE}")
+ STRING (REGEX REPLACE "^armv7l$" "armel" ARCHITECTURE "${ARCHITECTURE}")
+
+ENDIF ()
+MESSAGE ("ARCHITECTURE = ${ARCHITECTURE}")
diff --git a/cmake/MacroOptionalAddSubdirectory.cmake b/cmake/MacroOptionalAddSubdirectory.cmake
new file mode 100644
index 0000000..545048b
--- /dev/null
+++ b/cmake/MacroOptionalAddSubdirectory.cmake
@@ -0,0 +1,31 @@
+# - MACRO_OPTIONAL_ADD_SUBDIRECTORY() combines ADD_SUBDIRECTORY() with an OPTION()
+# MACRO_OPTIONAL_ADD_SUBDIRECTORY(
)
+# If you use MACRO_OPTIONAL_ADD_SUBDIRECTORY() instead of ADD_SUBDIRECTORY(),
+# this will have two effects
+# 1 - CMake will not complain if the directory doesn't exist
+# This makes sense if you want to distribute just one of the subdirs
+# in a source package, e.g. just one of the subdirs in kdeextragear.
+# 2 - If the directory exists, it will offer an option to skip the
+# subdirectory.
+# This is useful if you want to compile only a subset of all
+# directories.
+
+# Copyright (c) 2007, Alexander Neundorf,
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+
+MACRO (MACRO_OPTIONAL_ADD_SUBDIRECTORY _dir )
+ GET_FILENAME_COMPONENT(_fullPath ${_dir} ABSOLUTE)
+ IF(EXISTS ${_fullPath})
+ IF(${ARGC} EQUAL 2)
+ OPTION(BUILD_${_dir} "Build directory ${_dir}" ${ARGV1})
+ ELSE(${ARGC} EQUAL 2)
+ OPTION(BUILD_${_dir} "Build directory ${_dir}" TRUE)
+ ENDIF(${ARGC} EQUAL 2)
+ IF(BUILD_${_dir})
+ ADD_SUBDIRECTORY(${_dir})
+ ENDIF(BUILD_${_dir})
+ ENDIF(EXISTS ${_fullPath})
+ENDMACRO (MACRO_OPTIONAL_ADD_SUBDIRECTORY)
diff --git a/laview-latex-struct.pc.in b/laview-latex-struct.pc.in
new file mode 100644
index 0000000..40fa22e
--- /dev/null
+++ b/laview-latex-struct.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@prefincludedir@
+
+Name: LaTeX-Struct
+Description: LaTeX representation in the memory + Scanner + Generator + Operations on document objects.
+Version: @VERSION@
+Libs: -L@link_lib1@ -l@link_lib2@
+Libs.private:
+Cflags:
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100644
index 0000000..a588e22
--- /dev/null
+++ b/po/CMakeLists.txt
@@ -0,0 +1,9 @@
+find_package(Gettext REQUIRED)
+if (NOT GETTEXT_MSGMERGE_EXECUTABLE)
+MESSAGE(FATAL_ERROR "Please install msgmerge binary")
+endif (NOT GETTEXT_MSGMERGE_EXECUTABLE)
+if (NOT GETTEXT_MSGFMT_EXECUTABLE)
+MESSAGE(FATAL_ERROR "Please install msgmerge binary")
+endif (NOT GETTEXT_MSGFMT_EXECUTABLE)
+add_subdirectory(ru)
+#add_subdirectory(de)
diff --git a/po/laview-latex-struct-0.pot b/po/laview-latex-struct-0.pot
new file mode 100644
index 0000000..6504219
--- /dev/null
+++ b/po/laview-latex-struct-0.pot
@@ -0,0 +1,61 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: laview-latex-struct-0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-07-18 18:10+0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:58
+#, c-format
+msgid "Begin tag sequence '%s' without end tag pair."
+msgstr ""
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:127
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:582
+#, c-format
+msgid ": Unexpected end tag sequence '%s' without begin tag pair."
+msgstr ""
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:148
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:148
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:179
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:188
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:205
+msgid "Error parsing subdoc."
+msgstr ""
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/LongtableParser.vala:44
+#, c-format
+msgid "Incorrect longtable parameters doesn't match '%s' regexp."
+msgstr ""
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:413
+#, c-format
+msgid "Unexpected end external tag sequence '%s' without begin tag pair."
+msgstr ""
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:449
+#, c-format
+msgid "Begin tag sequence '%s':%d:%d without end tag pair."
+msgstr ""
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:612
+msgid "\\cline parameters doesn't match {number-number} regexp."
+msgstr ""
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TabularParser.vala:43
+#, c-format
+msgid "Incorrect tabular parameters doesn't match '%s' regexp."
+msgstr ""
diff --git a/po/ru/CMakeLists.txt b/po/ru/CMakeLists.txt
new file mode 100644
index 0000000..5b39538
--- /dev/null
+++ b/po/ru/CMakeLists.txt
@@ -0,0 +1,2 @@
+file(GLOB _po_files *.po)
+GETTEXT_PROCESS_PO_FILES(ru ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} PO_FILES ${_po_files} )
diff --git a/po/ru/laview-latex-struct-0.po b/po/ru/laview-latex-struct-0.po
new file mode 100644
index 0000000..0b48ef4
--- /dev/null
+++ b/po/ru/laview-latex-struct-0.po
@@ -0,0 +1,67 @@
+# Russian translations for laview-latex-struct package.
+# Copyright (C) 2014 THE laview-latex-struct'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the laview-latex-struct package.
+# , 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: laview-latex-struct-0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-07-18 18:10+0400\n"
+"PO-Revision-Date: 2014-05-28 10:50+0400\n"
+"Last-Translator: \n"
+"Language-Team: Russian\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:58
+#, c-format
+msgid "Begin tag sequence '%s' without end tag pair."
+msgstr "Стартовая последовательность тегов '%s' без соответствующей стоп-пары."
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:127
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:582
+#, c-format
+msgid ": Unexpected end tag sequence '%s' without begin tag pair."
+msgstr ""
+": Неожиданная завершающая последовательность тегов '%s' без соответствующей "
+"старт-пары."
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:148
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:148
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:179
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:188
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:205
+msgid "Error parsing subdoc."
+msgstr "Ошибка разбора поддокумента."
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/LongtableParser.vala:44
+#, c-format
+msgid "Incorrect longtable parameters doesn't match '%s' regexp."
+msgstr "Неверные параметры longtable не удовлетворяют рег. выражению '%s'."
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:413
+#, c-format
+msgid "Unexpected end external tag sequence '%s' without begin tag pair."
+msgstr ""
+": Неожиданная завершающая последовательность внешних тегов '%s' без "
+"соответствующей старт-пары."
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:449
+#, c-format
+msgid "Begin tag sequence '%s':%d:%d without end tag pair."
+msgstr ""
+"Стартовая последовательность тегов '%s':%d:%d без соответствующей стоп-пары."
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:612
+msgid "\\cline parameters doesn't match {number-number} regexp."
+msgstr "Параметры \\cline не соответствует рег. выражению {число-число}."
+
+#: /home/kolan/projects/LAview/LaTeX-Struct/src/TabularParser.vala:43
+#, c-format
+msgid "Incorrect tabular parameters doesn't match '%s' regexp."
+msgstr "Неверные параметры tabular не удовлетворяют рег. выражению '%s'."
diff --git a/src/AddSpace.vala b/src/AddSpace.vala
index e69de29..2fd6523 100644
--- a/src/AddSpace.vala
+++ b/src/AddSpace.vala
@@ -0,0 +1,45 @@
+namespace LAview {
+
+ namespace Table {
+
+ /**
+ * Vertical Space in any {@link ATable}
+ */
+ public class AddSpace : ADoc {
+
+ /**
+ * Value of the vertical space.
+ *
+ * Possible values: [0-9]+{bp,cc,cm,dd,em,ex,in,mm,pc,pt,sp} <
>
+ * or [0-9]+.[0-9][0-9]{\textwidth,columnwidth,paperwidth,linewidth,textheight,paperheight}
+ */
+ public string height = "";
+
+ /**
+ * Constructs a new //AddSpace// based on value.
+ *
+ * @param height [0-9]+{bp,cc,cm,dd,em,ex,in,mm,pc,pt,sp} <
>
+ * or [0-9]+.[0-9][0-9]{\textwidth,columnwidth,paperwidth,linewidth,textheight,paperheight}
+ */
+ public AddSpace.with_params (string height) {
+ this.height = height;
+ }
+
+ private AddSpace () {}
+
+ /**
+ * Gets a copy of the //AddSpace//.
+ */
+ public override IDoc copy () {
+ return new AddSpace.with_params (height);
+ }
+
+ /**
+ * Generates LaTeX string for the //AddSpace//.
+ */
+ public override string generate () {
+ return height;
+ }
+ }
+ }
+}
diff --git a/src/AddSpaces.vala b/src/AddSpaces.vala
index e69de29..a471dab 100644
--- a/src/AddSpaces.vala
+++ b/src/AddSpaces.vala
@@ -0,0 +1,61 @@
+namespace LAview {
+
+ namespace Table {
+
+ /**
+ * List of {@link AddSpace}-s.
+ */
+ public class AddSpaces : ADocList {
+
+ /**
+ * Style of the {@link AddSpace}/{@link Subtable}.
+ */
+ public enum Style {
+
+ /**
+ * Default style.
+ */
+ DEFAULT = 0,
+
+ /**
+ * Formal style.
+ */
+ FORMAL
+ }
+
+ /**
+ * Style of the {@link AddSpace}/{@link Subtable}.
+ */
+ public Style style = Style.DEFAULT;
+
+ /**
+ * Constructs a new empty //AddSpaces//.
+ */
+ public AddSpaces () {}
+
+ protected override ADocList create_default_instance () { return new AddSpaces (); }
+
+ /**
+ * Gets a copy of the //AddSpaces//.
+ */
+ public override IDoc copy () {
+ var clone = base.copy () as AddSpaces;
+ clone.style = style;
+ return clone;
+ }
+
+ /**
+ * Generates LaTeX string for the //AddSpaces//.
+ */
+ public override string generate () {
+ var result = new StringBuilder ();
+
+ foreach (IDoc dociface in this)
+ result.append_printf (style == Style.FORMAL ? "\n\\addlinespace[%s]"
+ : "\n\\noalign{\\vskip%s}", dociface.generate ());
+
+ return result.str;
+ }
+ }
+ }
+}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 37e1e21..391ef48 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,18 +1,36 @@
+INCLUDE (FindVala)
+INCLUDE (UseVala)
+
FIND_PACKAGE (PkgConfig REQUIRED)
-PKG_CHECK_MODULES (GLIB REQUIRED glib-2.0)
-INCLUDE_DIRECTORIES (${GLIB_INCLUDE_DIRS})
-LINK_DIRECTORIES (${GLIB_LIBRARY_DIRS})
+PKG_CHECK_MODULES (GEE REQUIRED gee-0.8)
+INCLUDE_DIRECTORIES (${GEE_INCLUDE_DIRS})
FILE (GLOB_RECURSE LAviewSources RELATIVE ${CMAKE_SOURCE_DIR}/src *.vala)
+
VALA_PRECOMPILE (VALA_C ${LAviewSources}
- PACKAGES
- OPTIONS --thread
+ PACKAGES gee-0.8 posix
+ OPTIONS --thread ${VALA_DEBUG}
CUSTOM_VAPIS
- GENERATE_VAPI laview
- GENERATE_HEADER laview
+ GENERATE_VAPI laview-latex-struct-${MAJOR}
+ GENERATE_HEADER laview-latex-struct-${MAJOR}
)
-ADD_LIBRARY (laview SHARED ${VALA_C})
-TARGET_LINK_LIBRARIES (laview ${GLIB2_LIBRARIES})
-SET_TARGET_PROPERTIES (laview PROPERTIES VERSION ${LAVIEW_VERSION})
-SET_TARGET_PROPERTIES (laview PROPERTIES SOVERSION ${LAVIEW_VERSION_MAJOR})
+INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}")
+ADD_LIBRARY (laview-latex-struct SHARED ${VALA_C} ${PROJECT_SOURCE_DIR}/src/vala_unsupported.c)
+TARGET_LINK_LIBRARIES (laview-latex-struct ${GEE_LIBRARIES})
+SET_TARGET_PROPERTIES (laview-latex-struct PROPERTIES VERSION ${VERSION})
+SET_TARGET_PROPERTIES (laview-latex-struct PROPERTIES SOVERSION ${MAJOR})
+IF (WIN32)
+ SET_TARGET_PROPERTIES (laview-latex-struct PROPERTIES PREFIX "" IMPORT_PREFIX "" SUFFIX "-${MAJOR}.dll")
+ENDIF (WIN32)
+
+IF (UNIX)
+ INSTALL (TARGETS laview-latex-struct DESTINATION lib)
+ELSEIF (WIN32)
+ INSTALL (TARGETS laview-latex-struct
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib)
+ENDIF (UNIX)
+
+INSTALL (FILES ${CMAKE_BINARY_DIR}/src/laview-latex-struct-${MAJOR}.h DESTINATION include)
diff --git a/src/Cell.vala b/src/Cell.vala
index e69de29..94ba9ad 100644
--- a/src/Cell.vala
+++ b/src/Cell.vala
@@ -0,0 +1,168 @@
+namespace LAview {
+
+ namespace Table {
+
+ /**
+ * Cell of any table.
+ */
+ public class Cell : ADoc {
+
+ /**
+ * Number of occupied cells.
+ */
+ public uint ncells = 1;
+
+ /**
+ * Cell's alignment.
+ *
+ * Possible values: "c", "r", "l", ">{\centering}p{0.07\paperwidth}", etc.
+ */
+ public string align = "";
+
+ /**
+ * Number of left lines.
+ */
+ public uint nllines;
+
+ /**
+ * Number of right lines.
+ */
+ public uint nrlines;
+
+ /**
+ * Number of top lines.
+ */
+ public uint noverlines;
+
+ /**
+ * Number of bottom lines.
+ */
+ public uint nunderlines;
+
+ /**
+ * Contents of the cell.
+ */
+ public Glob contents = new Glob ();
+
+ /**
+ * Any text before the cell.
+ */
+ public string before = "";
+
+ /**
+ * Any text after the cell.
+ */
+ public string after = "";
+
+ /**
+ * Type of a cell indicates how much columns/rows does it occupy.
+ */
+ public enum Multitype {
+
+ /**
+ * Standard cell.
+ */
+ SIMPLE = 0,
+
+ /**
+ * Cell occupies several columns.
+ */
+ MULTICOL,
+
+ /**
+ * Cell occupies several rows.
+ */
+ MULTIROW,
+
+ /**
+ * Cell occupies several columns and rows.
+ */
+ MULTICOLROW
+ }
+
+ Multitype _multitype;
+
+ /**
+ * Type of a cell indicates how much columns/rows does it occupy.
+ */
+ public Multitype multitype {
+ set {
+ if (value != Multitype.MULTICOL && value != Multitype.MULTICOLROW)
+ nllines = nrlines = 0;
+ _multitype = value;
+ }
+ get {
+ return _multitype;
+ }
+ }
+
+ /**
+ * Constructs a new //Cell// based on it's properties.
+ */
+ public Cell.with_params (Multitype multitype, uint ncells, uint nllines, string align,
+ uint nrlines, uint noverlines, uint nunderlines,
+ Glob contents, string before, string after) {
+ this.ncells = ncells;
+ this.nllines = nllines;
+ this.align = align;
+ this.nrlines = nrlines;
+ this.noverlines = noverlines;
+ this.nunderlines = nunderlines;
+ this.contents = contents.copy () as Glob;
+ this.before = before;
+ this.after = after;
+ this.multitype = multitype;
+ }
+
+ private Cell () {}
+
+ /**
+ * Gets a copy of the //Cell//.
+ */
+ public override IDoc copy () {
+ return new Cell.with_params (multitype, ncells, nllines, align, nrlines,
+ noverlines, nunderlines, contents, before, after);
+ }
+
+ /**
+ * Generates LaTeX string for the //Cell//.
+ */
+ public override string generate () {
+ var result = new StringBuilder (before),
+ params = new StringBuilder (),
+ contents = this.contents.generate ();
+
+ if (align != "") {
+ for (uint i = 0; i < nllines; ++i) params.append_c ('|');
+ params.append (align);
+ for (uint i = 0; i < nrlines; ++i) params.append_c ('|');
+ }
+
+ switch (multitype) {
+ case Multitype.SIMPLE:
+ result.append (contents);
+ break;
+ case Multitype.MULTICOL:
+ result.append_printf ("\\multicolumn{%u}{%s}{%s}",
+ ncells, params.str, contents);
+ break;
+ case Multitype.MULTIROW:
+ result.append_printf ("\\multirow{%u}{%s}{%s}",
+ ncells, params.str, contents);
+ break;
+ case Multitype.MULTICOLROW:
+ result.append_printf ("\\multicolumn{1}{%s}{\\multirow{%u}{*}{%s}}",
+ params.str, ncells, contents);
+ break;
+ default:
+ assert (multitype == Multitype.SIMPLE);
+ break;
+ }
+
+ result.append (after);
+
+ return result.str;
+ }
+ }
+ }
+}
diff --git a/src/ColParam.vala b/src/ColParam.vala
index e69de29..9eae593 100644
--- a/src/ColParam.vala
+++ b/src/ColParam.vala
@@ -0,0 +1,65 @@
+namespace LAview {
+
+ namespace Table {
+
+ /**
+ * Parameter of the table's column.
+ */
+ public class ColParam : ADoc {
+
+ /**
+ * Column's alignment.
+ *
+ * Possible values: "c", "r", "l", ">{\centering}p{0.07\paperwidth}", etc.
+ */
+ public string align = "c";
+
+ /**
+ * Number of left lines.
+ */
+ public uint nllines = 1;
+
+ /**
+ * Number of right lines.
+ */
+ public uint nrlines;
+
+ /**
+ * Constructs a new //ColParam// by it's properties.
+ */
+ public ColParam.with_params (uint nllines = 1,
+ string align = "c",
+ uint nrlines = 0) {
+ this.nllines = nllines;
+ this.align = align;
+ this.nrlines = nrlines;
+ }
+
+ private ColParam () {}
+
+ /**
+ * Gets a copy of the //ColParam//.
+ */
+ public override IDoc copy () {
+ return new ColParam.with_params (nllines, align, nrlines);
+ }
+
+ /**
+ * Generates LaTeX string for the //ColParam//.
+ */
+ public override string generate () {
+ var result = new StringBuilder ();
+
+ for (uint i = 0; i < nllines; ++i)
+ result.append_c ('|');
+
+ result.append (align);
+
+ for (uint i = 0; i < nrlines; ++i)
+ result.append_c ('|');
+
+ return result.str;
+ }
+ }
+ }
+}
diff --git a/src/ColParams.vala b/src/ColParams.vala
index e69de29..453230b 100644
--- a/src/ColParams.vala
+++ b/src/ColParams.vala
@@ -0,0 +1,18 @@
+namespace LAview {
+
+ namespace Table {
+
+ /**
+ * List of Column Parameters.
+ */
+ public class ColParams : ADocList {
+
+ protected override ADocList create_default_instance () { return new ColParams (); }
+
+ /**
+ * Constructs a new empty //ColParams//.
+ */
+ public ColParams () {}
+ }
+ }
+}
diff --git a/src/Doc.vala b/src/Doc.vala
deleted file mode 100644
index e69de29..0000000
diff --git a/src/DocIfaces.vala b/src/DocIfaces.vala
new file mode 100644
index 0000000..cdb2b87
--- /dev/null
+++ b/src/DocIfaces.vala
@@ -0,0 +1,75 @@
+namespace LAview {
+
+ /**
+ * Interface of any LaTeX Document.
+ */
+ public interface IDoc : Object {
+
+ /**
+ * Gets a copy of the //IDoc//.
+ */
+ public abstract IDoc copy ();
+
+ /**
+ * Generates LaTeX string for the //IDoc//.
+ */
+ public abstract string generate ();
+ }
+
+ /**
+ * Any non-iterable LaTeX Document.
+ */
+ public abstract class ADoc : Object, IDoc {
+
+ protected ADoc () {}
+
+ /**
+ * Gets a copy of the //ADoc//.
+ */
+ public virtual IDoc copy () {
+ return Object.new (this.get_type ()) as IDoc;
+ }
+
+ /**
+ * Generates LaTeX string for the //ADoc//.
+ */
+ public virtual string generate () { return ""; }
+ }
+
+ /**
+ * Any iterable LaTeX Document.
+ */
+ public abstract class ADocList : Gee.ArrayList, IDoc {
+
+ protected ADocList () {}
+
+ /**
+ * Object.new (this.get_type ()) doesn't work for me for ArrayList.
+ */
+ protected abstract ADocList create_default_instance ();
+
+ /**
+ * Gets a copy of the //ADocList//.
+ */
+ public virtual IDoc copy () {
+ var clone = create_default_instance ();
+
+ foreach (IDoc dociface in this)
+ clone.add (dociface.copy () as IDoc);
+
+ return clone;
+ }
+
+ /**
+ * Generates LaTeX string for the //ADocList//.
+ */
+ public virtual string generate () {
+ var result = new StringBuilder ();
+
+ foreach (IDoc dociface in this)
+ result.append (dociface.generate ());
+
+ return result.str;
+ }
+ }
+}
diff --git a/src/Glob.vala b/src/Glob.vala
index e69de29..aa427b3 100644
--- a/src/Glob.vala
+++ b/src/Glob.vala
@@ -0,0 +1,15 @@
+namespace LAview {
+
+ /**
+ * List of any LaTeX documents except Glob documents.
+ */
+ public class Glob : ADocList {
+
+ protected override ADocList create_default_instance () { return new Glob (); }
+
+ /**
+ * Constructs a new empty //Glob//.
+ */
+ public Glob () {}
+ }
+}
diff --git a/src/GlobParser.vala b/src/GlobParser.vala
new file mode 100644
index 0000000..00ecf88
--- /dev/null
+++ b/src/GlobParser.vala
@@ -0,0 +1,191 @@
+namespace LAview {
+
+ namespace Parsers {
+
+ class GlobParser : Parser {
+
+ public GlobParser (Array links) {
+ base (links);
+ }
+
+ enum TagKind {
+ NONE = 0,
+ START,
+ STOP
+ }
+
+ TokenType scan_tex_symbol (Glob document) throws ParseError {
+
+ uint tag;
+ var matched_tag_length = fifo_is_tag (tokens, out tag);
+ TagKind tag_kind = TagKind.NONE;
+
+ if (matched_tag_length != 0) {
+ tag_kind = TagKind.START;
+ } else {
+ matched_tag_length = fifo_is_tag (stop_tokens, out tag);
+
+ if (matched_tag_length != 0) {
+ tag_kind = TagKind.STOP;
+ } else if (in_child_params) {
+ count_branches ();
+
+ if (!in_child_params) {
+ tag_kind = TagKind.STOP;
+ tag = child_tag;
+ matched_tag_length = 1;
+ }
+ }
+ }
+
+ var token = TokenType.NONE;
+
+ uint matched_tag_abspos_left;
+ uint matched_tag_abspos_right;
+ uint matched_tag_line;
+ long matched_tag_pos;
+
+ switch (tag_kind) {
+ case TagKind.NONE:
+ fifo_pop ();
+
+ if (fifo_peek_head().token == TokenType.EOF) {
+ /* without end pair */
+ if (child_tag != 0 || child_level != 0) {
+ assert (child_tag != 0 && child_level != 0);
+ string message = string.joinv (null, links.index (child_tag).begin);
+ /// Translators: please leave the '%s' construction without any changes.
+ prefix_error (subdoc_start, _("Begin tag sequence '%s' without end tag pair."), message);
+ token = TokenType.ERROR;
+ throw new ParseError.ORPHAN_BEGIN (err_str);
+
+ } else {
+ var subcontents = contents.offset (subdoc_start.abspos);
+ var subparser = links.index (0).create (links);
+ var subdoc = subparser.parse (subcontents, subdoc_start.line, subdoc_start.pos);
+ document.add (subdoc);
+ token = TokenType.EOF;
+ }
+ }
+ break;
+
+ case TagKind.START:
+ matched_tag_abspos_left = fifo_peek_head ().abspos;
+ matched_tag_abspos_right = fifo_peek_nth (matched_tag_length - 1).abspos
+ + fifo_peek_nth (matched_tag_length - 1).length;
+ matched_tag_line = fifo_peek_head ().line;
+ matched_tag_pos = fifo_peek_head ().pos;
+
+ for (var i = 0; i < matched_tag_length; ++i)
+ fifo_pop ();
+
+ if (child_tag != 0 || child_level != 0) {
+ assert (child_tag != 0 && child_level != 0);
+ if (links.index (tag).end.length != 0)
+ ++child_level;
+ } else {
+ assert (child_tag == 0 && child_level == 0);
+ var subcontents = contents[subdoc_start.abspos:matched_tag_abspos_left];
+ var subparser = links.index (0).create (links);
+ var subdoc = subparser.parse (subcontents, subdoc_start.line, subdoc_start.pos);
+ document.add (subdoc);
+
+ if (links.index (tag).end.length != 0) {
+ child_tag = tag;
+ child_level = 1;
+ } else if (fifo_peek_head ().token == TokenType.LEFT_CURLY
+ || fifo_peek_head ().token == TokenType.LEFT_BRACE) {
+ in_child_params = true;
+ child_tag = tag;
+ child_level = 1;
+ }
+ subdoc_start.abspos = matched_tag_abspos_right;
+ subdoc_start.line = matched_tag_line;
+ subdoc_start.pos = matched_tag_pos;
+ }
+ break;
+
+ case TagKind.STOP:
+ matched_tag_abspos_left = fifo_peek_head ().abspos;
+ matched_tag_abspos_right = fifo_peek_nth (matched_tag_length - 1).abspos
+ + fifo_peek_nth (matched_tag_length - 1).length;
+ matched_tag_line = fifo_peek_head ().line;
+ matched_tag_pos = fifo_peek_head ().pos;
+
+ if (links.index (tag).end.length == 0)
+ ++matched_tag_abspos_left;
+
+ for (var i = 0; i < matched_tag_length; ++i)
+ fifo_pop ();
+
+ /* without begin pair */
+ if (child_tag == 0 || child_level == 0) {
+ assert (child_tag == 0 && child_level == 0);
+ var message = string.joinv (null, links.index (tag).end);
+ /// Translators: please leave the '%s' construction without any changes.
+ prefix_error (last_symb_pos,
+ _(": Unexpected end tag sequence '%s' without begin tag pair."),
+ message);
+ token = TokenType.ERROR;
+ throw new ParseError.ORPHAN_END (err_str);
+ } else {
+ assert (child_level != 0);
+ --child_level;
+
+ if (tag == child_tag) {
+ if (child_level == 0) {
+ child_tag = 0;
+ var subcontents = contents[subdoc_start.abspos:matched_tag_abspos_left];
+ var subparser = links.index (tag).create (links);
+ /* parse subdoc */
+ var subdoc = subparser.parse (subcontents, subdoc_start.line,
+ subdoc_start.pos);
+
+ if (subdoc != null) {
+ document.add (subdoc);
+ } else {
+ prefix_error (subdoc_start,
+ _("Error parsing subdoc."));
+ token = TokenType.ERROR;
+ }
+
+ subdoc_start.abspos = matched_tag_abspos_right;
+ subdoc_start.line = matched_tag_line;
+ subdoc_start.pos = matched_tag_pos;
+ }
+ }
+ }
+ break;
+ }
+
+ return token;
+ }
+
+
+ public override IDoc parse (string contents, size_t line, long position) throws ParseError {
+
+ this.contents = contents;
+ this.line = line;
+ this.position = position;
+
+ scanner.input_text (contents, contents.length);
+
+ TokenType expected_token = 0;
+ var doc = new Glob ();
+
+ do {
+ expected_token = scan_tex_symbol (doc);
+
+ } while (expected_token == TokenType.NONE
+ && fifo_peek_head().token != TokenType.EOF
+ && fifo_peek_head().token != TokenType.ERROR);
+
+ if (expected_token == TokenType.ERROR)
+ scanner.unexp_token (expected_token, null, "symbol", null, null, true);
+
+ return doc;
+ }
+ }
+ }
+}
+
diff --git a/src/GlobScanner.vala b/src/GlobScanner.vala
deleted file mode 100644
index e69de29..0000000
diff --git a/src/Graphics.vala b/src/Graphics.vala
index e69de29..76c2a69 100644
--- a/src/Graphics.vala
+++ b/src/Graphics.vala
@@ -0,0 +1,93 @@
+namespace LAview {
+
+ /**
+ * Graphics in the LaTeX document.
+ *
+ * Specified by '\includegraphics' tag in the LaTeX code.
+ */
+ public class Graphics : ADoc {
+
+ /**
+ * All unknown parameters.
+ */
+ public string rest_params = "";
+
+ /**
+ * Path to the image on the disk.
+ */
+ public string path = "";
+
+ /**
+ * Width of the image.
+ *
+ * For ex: 3.22, 128
+ */
+ public double width;
+
+ /**
+ * Width units of the image.
+ *
+ * For ex: bp, cc, cm, dd, em, ex, in, mm, pc, pt, sp <
>
+ * or \textwidth, \columnwidth, \pagewidth,
+ * \linewidth, \textwidth, \paperwidth
+ */
+ public string width_unit = "";
+
+ /**
+ * Height of the image.
+ *
+ * For ex: 3.22, 128
+ */
+ public double height;
+
+ /**
+ * Height units of the image.
+ *
+ * For ex: bp, cc, cm, dd, em, ex, in, mm, pc, pt, sp <
>
+ * or \textwidth, \columnwidth, \pagewidth,
+ * \linewidth, \textwidth, \paperwidth
+ */
+ public string height_unit = "";
+
+ /**
+ * Constructs a new //Graphics// by it's properties.
+ *
+ * @param path path to the image on the disk.
+ */
+ public Graphics.with_params (string path = "") {
+ this.path = path;
+ }
+
+ private Graphics () {}
+
+ /**
+ * Gets a copy of the //Graphics//.
+ */
+ public override IDoc copy () {
+ var clone = new Graphics.with_params (path);
+ clone.width = width;
+ clone.height = height;
+ clone.width_unit = width_unit;
+ clone.height_unit = height_unit;
+ clone.rest_params = rest_params;
+ return clone;
+ }
+
+ /**
+ * Generates LaTeX string for the //Graphics//.
+ */
+ public override string generate () {
+ var str = new StringBuilder ("\\includegraphics[");
+ if (width != 0)
+ str.append_printf ("width=%f%s,", width, width_unit);
+ if (height != 0)
+ str.append_printf ("height=%f%s,", height, height_unit);
+ if (rest_params != "")
+ str.append_printf ("%s,", rest_params);
+ if (str.str[str.len - 1] == ',')
+ str.len -= 1;
+ str.append_printf ("]{%s}", path);
+ return str.str;
+ }
+ }
+}
diff --git a/src/GraphicsParser.vala b/src/GraphicsParser.vala
new file mode 100644
index 0000000..ed9b994
--- /dev/null
+++ b/src/GraphicsParser.vala
@@ -0,0 +1,153 @@
+namespace LAview {
+
+ namespace Parsers {
+
+ class GraphicsParser : Parser {
+
+ public GraphicsParser (Array links) {
+ base (links);
+ }
+
+ void remove_duplicate_params (List parlist) {
+ for (unowned List elem1 = parlist.first (); elem1 != null; elem1 = elem1.next)
+ for (unowned List elem2 = elem1.next; elem2 != null; elem2 = elem2.next) {
+ var eq_pos1 = elem1.data.index_of_char ('='),
+ eq_pos2 = elem2.data.index_of_char ('=');
+ size_t min_len = 0;
+
+ if (-1 != eq_pos1)
+ min_len = eq_pos1;
+
+ if (-1 != eq_pos2)
+ min_len = size_t.min (min_len, eq_pos2);
+
+ if (0 != min_len && 0 == Posix.strncmp (elem1.data, elem2.data, min_len)) {
+ elem2.delete_link (elem2);
+ if (elem2 == null) break;
+ }
+ }
+ }
+
+ string param_get_nvalue (string param) {
+ int i;
+ for (i = 0; param[i] != '\0' && param[i] != '='; ++i);
+ if (param[i] == '\0') return "";
+ while (param[++i].isspace ());
+ if (!param[i].isdigit ()) return "";
+ return param.offset (i);
+ }
+
+ string param_get_units (string param) {
+ int i;
+ for (i = 0; param[i] != '\0' && param[i] != '='; ++i);
+ if (param[i] == '\0') return "";
+ while (param[++i].isspace ());
+ if (!param[i].isdigit ()) return "";
+ while (param[++i].isdigit ());
+ if (param[i] == '.')
+ while (param[++i].isdigit ());
+ while (param[i].isspace ()) ++i;
+ if (param[i] == '\0') return "";
+ return param.offset (i);
+ }
+
+ List split_params (string param_str) {
+ var parlist = new List ();
+ var vstr = param_str.split (",");
+ foreach (var str in vstr) {
+ str = str.strip ();
+
+ if (str != "")
+ parlist.prepend (str);
+ }
+
+ parlist.reverse ();
+
+ remove_duplicate_params (parlist);
+
+ return parlist;
+ }
+
+ string concat_rest_params (List parlist) {
+ var str = new StringBuilder ();
+
+ for (unowned List elem = parlist.first (); elem != null; elem = elem.next) {
+ str.append (elem.data);
+ if (elem.next != null)
+ str.append_c (',');
+ }
+
+ return str.str;
+ }
+
+ static int find_param_delegate (string a, string b) {
+ return Posix.strncmp (a, b, int.min (a.length, b.length));
+ }
+
+ void fill_known_params (Graphics graphics, string param_str) {
+ var parlist = split_params (param_str);
+
+ unowned List elem;
+
+ if (null != (elem = parlist.find_custom ("width", find_param_delegate))) {
+ string tmps1 = param_get_nvalue (elem.data);
+ string tmps2 = param_get_units (elem.data);
+
+ if (tmps1 != "" && tmps2 != "") {
+ graphics.width = double.parse (tmps1);
+ graphics.width_unit = tmps2;
+ }
+
+ parlist.delete_link (elem);
+ }
+
+ if (null != (elem = parlist.find_custom ("height", find_param_delegate))) {
+ string tmps1 = param_get_nvalue (elem.data);
+ string tmps2 = param_get_units (elem.data);
+
+ if (tmps1 != "" && tmps2 != "") {
+ graphics.height = double.parse (tmps1);
+ graphics.height_unit = tmps2;
+ }
+
+ parlist.delete_link (elem);
+ }
+
+ graphics.rest_params = concat_rest_params (parlist);
+ }
+
+ public override IDoc parse (string contents, size_t line, long position) throws ParseError {
+ /* set TeX graphics contents */
+ this.contents = contents;
+ this.line = line;
+ this.position = position;
+
+ var graphics = new Graphics.with_params ();
+
+ try {
+ var regex = new Regex ("\\[[^[\\]{}]+\\]");
+ MatchInfo match_info;
+ regex.match (contents, 0, out match_info);
+
+ if (match_info.matches ()) {
+ var word = match_info.fetch (0);
+ fill_known_params (graphics, word[1:word.length - 1]);
+ }
+ } catch (RegexError e) {}
+
+ try {
+ var regex = new Regex ("\\{[^[\\]{}]+\\}");
+ MatchInfo match_info;
+ regex.match (contents, 0, out match_info);
+
+ if (match_info.matches ()) {
+ var word = match_info.fetch (0);
+ graphics.path = word[1:word.length - 1].compress ();
+ }
+ } catch (RegexError e) {}
+
+ return graphics;
+ }
+ }
+ }
+}
diff --git a/src/GraphicsScanner.vala b/src/GraphicsScanner.vala
deleted file mode 100644
index e69de29..0000000
diff --git a/src/Longtable.vala b/src/Longtable.vala
index e69de29..ea89314 100644
--- a/src/Longtable.vala
+++ b/src/Longtable.vala
@@ -0,0 +1,64 @@
+namespace LAview {
+
+ namespace Table {
+
+ /**
+ * Longtable in the LaTeX document.
+ *
+ * Specified by '\begin{longtable}' tag in the LaTeX code.
+ */
+ public class Longtable : ATable {
+
+ /**
+ * Constructs a new //Longtable// with default parameters.
+ */
+ public Longtable () {}
+
+ /**
+ * Gets a copy of the //Longtable//.
+ */
+ public override IDoc copy () {
+ return base.copy ();
+ }
+
+ /**
+ * Generates LaTeX string for the //Longtable//.
+ */
+ public override string generate () {
+ var s = new StringBuilder ();
+
+ if (params.size == 0) return "";
+
+ s.append ("\\begin{longtable}");
+
+ if (align != '\0')
+ s.append_printf ("[%c]", align);
+
+ s.append_c ('{');
+ s.append (params.generate ());
+ s.append_c ('}');
+
+ first_header.style = style;
+ header.style = style;
+ footer.style = style;
+ last_footer.style = style;
+ table.style = style;
+
+ string tmps;
+ tmps = first_header.generate ();
+ if (tmps != "") s.append (tmps + "\\endfirsthead");
+ tmps = header.generate ();
+ if (tmps != "") s.append (tmps + "\\endhead");
+ tmps = footer.generate ();
+ if (tmps != "") s.append (tmps + "\\endfoot");
+ tmps = last_footer.generate ();
+ if (tmps != "") s.append (tmps + "\\endlastfoot");
+ s.append (table.generate ());
+
+ s.append ("\\end{longtable}");
+
+ return s.str;
+ }
+ }
+ }
+}
diff --git a/src/LongtableParser.vala b/src/LongtableParser.vala
new file mode 100644
index 0000000..63880ad
--- /dev/null
+++ b/src/LongtableParser.vala
@@ -0,0 +1,119 @@
+namespace LAview {
+
+ namespace Parsers {
+
+ using Table;
+
+ class LongtableParser : TableParser {
+
+ public LongtableParser (Array links) {
+ base (links);
+ }
+
+ public override IDoc parse (string contents, size_t line, long position) throws ParseError {
+
+ /* create empty longtable */
+ var longtable = new Longtable ();
+
+ /* set TeX longtable contents */
+ this.contents = contents;
+ this.line = line;
+ this.position = position;
+
+ /* get parameters string */
+ var param_regex = "^(\\[(c|l|r)])?\\{[^{}]*([^{}]*\\{[^{}]*\\}[^{}]*)*\\}";
+
+ string params = "";
+
+ try {
+ var regex = new Regex (param_regex);
+
+ MatchInfo match_info;
+ regex.match (contents, 0, out match_info);
+
+ uint start_pos = 0, stop_pos = 0;
+
+ if (match_info.matches ()) {
+ match_info.fetch_pos (0, out start_pos, out stop_pos);
+ /* set TeX document contents */
+ this.contents = contents.offset (stop_pos);
+ params = match_info.fetch (0);
+ } else {
+ /// Translators: please leave the '%s' construction without any changes.
+ prefix_error (subdoc_start,
+ _("Incorrect longtable parameters doesn't match '%s' regexp."),
+ param_regex);
+ throw new ParseError.SUBDOC (err_str);
+ }
+ } catch (RegexError e) {}
+
+ /* longtable align: [c], [l], [r] */
+ if (params[0] == '[') {
+ longtable.align = params[1];
+ params = params.offset (3);
+ }
+
+ /* remove bound '{' '}' from params */
+ params = params.substring (1, params.length - 2).reverse ();
+ var col_params = new ColParams ();
+
+ /* match reversed params so '|' will be snapped to the right column */
+ try {
+ var regex = new Regex ("("
+ + "\\|*}[^{}]+{(p\\|*|m\\|*|b\\|*)(}[^{}]+{>(\\|+$|\\||)|\\|)?"
+ + "|"
+ + "\\|*(r|c|l)(}[^{}]+{@(p\\|*|m\\|*|b\\|*) (r|c|l))?(\\|+$|\\||)"
+ + ")");
+ MatchInfo match_info;
+ regex.match_full (params, -1, 0, 0, out match_info);
+ while (match_info.matches ()) {
+ var col_param = new ColParam.with_params (0, "", 0);
+ var word = match_info.fetch (0).reverse ().compress ();
+ int nllines, nrlines;
+ for (nllines = 0; '|' == word[nllines]; ++nllines);
+ for (nrlines = word.length - 1; nrlines != 0 && '|' == word[nrlines]; --nrlines);
+ var wlen = word.length;
+ word = word[0:nrlines + 1];
+ col_param.align = word.offset (nllines);
+ col_param.nllines = nllines;
+ col_param.nrlines = wlen - 1 - nrlines;
+ col_params.insert (0, col_param);
+ match_info.next ();
+ }
+ } catch (RegexError e) {}
+
+ longtable.params = col_params;
+
+ /* === Parsing subtables === */
+
+ /* feed in the text */
+ scanner.input_text (this.contents, this.contents.length);
+
+ row_abs_pos = 0;
+ row = new Row ();
+ subtable = new Subtable ();
+ in_caption = false;
+ cell_abs_pos = 0;
+
+ TokenType expected_token = TokenType.NONE;
+
+ /* scanning loop, we scan the input until it's end is reached,
+ * the self encountered a lexing err, or our sub routine came
+ * across invalid syntax
+ */
+ do {
+ expected_token = scan_tex_symbol (longtable);
+
+ } while (expected_token == TokenType.NONE
+ && fifo_peek_head ().token != TokenType.EOF
+ && fifo_peek_head ().token != TokenType.ERROR);
+
+ /* give an err message upon syntax errors */
+ if (expected_token == TokenType.ERROR)
+ scanner.unexp_token (expected_token, null, "symbol", null, null, true);
+
+ return longtable;
+ }
+ }
+ }
+}
diff --git a/src/LongtableScanner.vala b/src/LongtableScanner.vala
deleted file mode 100644
index e69de29..0000000
diff --git a/src/Object.vala b/src/Object.vala
deleted file mode 100644
index e69de29..0000000
diff --git a/src/ObjectList.vala b/src/ObjectList.vala
deleted file mode 100644
index e69de29..0000000
diff --git a/src/Parser.vala b/src/Parser.vala
new file mode 100644
index 0000000..bd797e2
--- /dev/null
+++ b/src/Parser.vala
@@ -0,0 +1,358 @@
+namespace LAview {
+
+ /**
+ * LaTeX Parsers.
+ */
+ namespace Parsers {
+
+ /**
+ * LaTeX Parser Error Type.
+ */
+ public errordomain ParseError {
+
+ /**
+ * Undefined Error.
+ */
+ UNDEFINED,
+
+ /**
+ * Cann't find end of subdoc.
+ */
+ ORPHAN_BEGIN,
+
+ /**
+ * End tag without begin tag.
+ */
+ ORPHAN_END,
+
+ /**
+ * Error in subdoc parsing.
+ */
+ SUBDOC,
+ }
+
+ abstract class Parser : Object {
+
+ protected string err_str = "";
+
+ /* links to group of scanners */
+ protected unowned Array links = null;
+
+ /* escaped TeX document */
+ protected unowned string contents = null;
+
+ /* standard GLib Scanner */
+ protected Scanner scanner = new Scanner (null);
+
+ /* tokens_sequence->class table */
+ protected Node tokens = new Node ();
+ protected Node stop_tokens = new Node ();
+
+ /* local tokens_sequence->class table */
+ protected Node local_tokens_to_class_start = new Node ();
+ protected Node local_tokens_to_class_stop = new Node ();
+
+ /* contents location in global document */
+ protected size_t line = 0;
+ protected long position = 0;
+
+ /* fifo-queue of tokens */
+ protected Queue symb_fifo = new Queue ();
+
+ protected struct SymbPos {
+ public TokenType token;
+ public uint line;
+ public long pos;
+ public uint abspos;
+ public uint length;
+ }
+
+ /* Last symbol position pushed to fifo */
+ protected SymbPos last_symb_pos;
+
+ /* Last symbol position pushed to fifo */
+ protected SymbPos subdoc_start;
+
+ /* child class and level */
+ protected uint child_tag = 0;
+ protected uint child_level = 0;
+ protected bool in_child_params = false;
+ protected uint child_param_branch_level = 0;
+
+ /* back-slash counter for one-line comments */
+ protected uint back_slash_counter = 0;
+
+ public Parser (Array links) {
+
+ /* initializing scanner links */
+ this.links = links;
+
+ /* adjust lexing behaviour to suit our needs */
+ scanner.config.cset_skip_characters = "";
+ scanner.config.cset_identifier_first = CharacterSet.a_2_z + CharacterSet.DIGITS + "\\";
+ scanner.config.cset_identifier_nth = CharacterSet.a_2_z + CharacterSet.A_2_Z + CharacterSet.DIGITS;
+ scanner.config.cpair_comment_single = "%\n";
+ scanner.config.scan_float = false;
+ scanner.config.symbol_2_token = true;
+ scanner.config.scan_string_sq = false; // See bug #448
+ scanner.config.scan_string_dq = false; // See bug #448
+
+ /* set custom error message handler */
+ scanner.msg_handler = null;
+
+ /* load symbols into the self using GLib Quarks */
+ load_symbols (links);
+
+ /* generate tokens table (tree) */
+ build_tree (ref tokens, links, false);
+
+ /* generate stop_tokens table (tree) */
+ build_tree (ref stop_tokens, links, true);
+
+ /* give the error handler an idea on how the input is named */
+ scanner.input_name = "TeX text";
+ }
+
+ public abstract IDoc parse (string contents, size_t line, long position) throws ParseError;
+
+ void vprefix_error (SymbPos symb_pos, string format, va_list args) {
+ err_str = "\n" + err_str;
+
+ var line = symb_pos.line;
+ long position = symb_pos.pos;
+
+
+ if (line == 0)
+ position += this.position;
+
+ size_t nlines; long i;
+ for (i = 0, nlines = 0; contents[i] != '\0' && nlines < line; ++i)
+ if ('\n' == contents[i] || '\r' == contents[i])
+ ++nlines;
+
+ var unparsed_str = contents[i:contents.length].split ("\n"); // FIXME: MacOS newline '\r' characters...
+ var str = unparsed_str[0][0:position];
+ var compressed = str.compress ();
+ position = compressed.length + 1;
+ var arrow_str = string.nfill (position - 1, ' ') + "^";
+ compressed = unparsed_str[0].compress ();
+
+ str = format.vprintf (args);
+ err_str = "%s:%lu:%lu: %s\n%s\n%s\n%s".printf (get_type().name(),
+ this.line + line + 1,
+ position,
+ str,
+ compressed,
+ arrow_str,
+ err_str);
+ }
+
+ protected void prefix_error (SymbPos symb_pos, string format, ...) {
+ var list = va_list ();
+ vprefix_error (symb_pos, format, list);
+ }
+
+ protected void load_symbols (Array links) {
+ for (var i = 1; i < links.length; ++i) {
+ for (var j = 0; j < links.index (i).begin.length; ++j)
+ if (links.index (i).begin[j].length > 1)
+ scanner.scope_add_symbol (0, links.index (i).begin[j], (void*)(Quark.from_string (links.index (i).begin[j]) + TokenType.LAST));
+
+ for (var j = 0; j < links.index (i).end.length; ++j)
+ if (links.index (i).end[j].length > 1)
+ scanner.scope_add_symbol (0, links.index (i).end[j], (void*)(Quark.from_string (links.index (i).end[j]) + TokenType.LAST));
+ }
+ }
+
+ protected void build_tree (ref Node tokens, Array links, bool stop_tree) {
+
+ /* generate tokens table (tree) */
+ tokens = new Node ();
+
+ for (var i = 1; i < links.length; ++i) {
+
+ /* if current class has no begin tags */
+ if (!stop_tree && links.index (i).begin.length == 0
+ || stop_tree && links.index (i).end.length == 0)
+ continue;
+
+ unowned Node parent_node = tokens;
+
+ unowned string[] symb_seq = stop_tree ? links.index (i).end: links.index (i).begin;
+
+ Quark symb_quark;
+ unowned Node child_node;
+
+ /* insert begin tags of all links into tree */
+ for (var j = 0; j < symb_seq.length; ++j) {
+ assert (symb_seq[j] != null && symb_seq.length != 0);
+
+ if (symb_seq[j].length > 1)
+ symb_quark = Quark.from_string(symb_seq[j]) + TokenType.LAST;
+ else
+ symb_quark = symb_seq[j][0];
+
+ child_node = parent_node.find_child (TraverseFlags.NON_LEAVES, symb_quark);
+
+ /* append node with symb_quark token */
+ if (child_node == null)
+ child_node = parent_node.append_data (symb_quark);
+
+ parent_node = child_node;
+ }
+
+ /* check for identical tokens lists and be shure that we create leaf for class id */
+ assert (parent_node.first_child () == null);
+
+ /* append leaf with class id */
+ parent_node.append_data (i);
+ }
+ }
+
+ protected void count_branches () {
+ if (in_child_params) {
+ switch (fifo_peek_head ().token) {
+ case TokenType.LEFT_CURLY:
+ case TokenType.LEFT_BRACE:
+ ++child_param_branch_level;
+ break;
+
+ case TokenType.RIGHT_CURLY:
+ case TokenType.RIGHT_BRACE:
+ --child_param_branch_level;
+ break;
+
+ default:
+ break;
+ }
+
+ if (child_param_branch_level == 0
+ && TokenType.LEFT_CURLY != fifo_peek_nth(1).token
+ && TokenType.LEFT_BRACE != fifo_peek_nth(1).token)
+ in_child_params = false;
+ }
+ }
+
+ protected uint fifo_is_tag (Node tokens, out uint tag) {
+ uint match_length;
+
+ tag = 0;
+
+ /* search for tokens subsequence in tokens tree */
+ for (match_length = 0; ; ++match_length) {
+ if (tokens == null
+ || TokenType.ERROR == fifo_peek_nth (match_length).token
+ || TokenType.EOF == fifo_peek_nth (match_length).token) {
+ match_length = 0;
+ break;
+ }
+
+ tokens = tokens.find_child (TraverseFlags.NON_LEAVES,
+ fifo_peek_nth (match_length).token);
+
+ if (tokens != null && tokens.first_child().is_leaf()) {
+ tag = tokens.first_child().data;
+ ++match_length;
+ break;
+ }
+ }
+
+ return match_length;
+ }
+
+ protected void fifo_pop () {
+ var ret = fifo_peek_head ();
+
+ if (ret.token != TokenType.ERROR && ret.token != TokenType.EOF)
+ symb_fifo.pop_head ();
+ }
+
+ protected SymbPos fifo_peek_head () {
+ if (symb_fifo.length == 0)
+ fifo_push ();
+ return symb_fifo.peek_head();
+ }
+
+ protected SymbPos fifo_peek_nth (uint n) {
+ unowned SymbPos ret;
+
+ while (n >= symb_fifo.length && fifo_push ());
+
+ if (n < symb_fifo.length)
+ ret = symb_fifo.peek_nth (n);
+ else
+ ret = symb_fifo.peek_tail ();
+
+ return ret;
+ }
+
+ bool fifo_push () {
+ var p = contents.offset (last_symb_pos.abspos);
+
+ scanner.get_next_token ();
+
+ if ('\\' == scanner.token) {
+ ++back_slash_counter;
+
+ if (back_slash_counter % 4 == 0)
+ scanner.config.cpair_comment_single = "%\n";
+ else if (back_slash_counter % 2 == 0)
+ scanner.config.cpair_comment_single = null;
+
+ } else {
+ back_slash_counter = 0;
+ }
+
+ scanner.peek_next_token ();
+
+ if (scanner.token == TokenType.ERROR
+ || scanner.token == TokenType.EOF) {
+ if (symb_fifo.length == 0) {
+ var sp = SymbPos ();
+ sp.token = scanner.token;
+ symb_fifo.push_tail (sp);
+ }
+
+ return false;
+ }
+
+ var sp = SymbPos ();
+
+ sp.token = scanner.token;
+ last_symb_pos.token = scanner.token;
+ sp.line = scanner.cur_line () - 1;
+ sp.pos = scanner.cur_position ();
+ sp.length = 1;
+
+ if (scanner.token > 255 && ((Quark)(scanner.token - TokenType.LAST)).to_string() != null) {
+ sp.length = ((Quark)(scanner.token - TokenType.LAST)).to_string().length;
+ sp.pos -= sp.length;
+ } else if (sp.pos != 0) {
+ --sp.pos;
+ }
+
+ last_symb_pos.length = sp.length;
+
+ /* current scanner's abspos evaluation */
+ while (last_symb_pos.line < sp.line
+ || last_symb_pos.line == sp.line && last_symb_pos.pos < sp.pos) {
+ if ('\n' == p[0] || '\r' == p[0]) {
+ ++last_symb_pos.line;
+ last_symb_pos.pos = 0;
+ } else {
+ ++last_symb_pos.pos;
+ }
+
+ ++last_symb_pos.abspos;
+ p = p.offset (1);
+ }
+
+ sp.abspos = last_symb_pos.abspos;
+
+ symb_fifo.push_tail (sp);
+
+ return true;
+ }
+ }
+ }
+}
diff --git a/src/ParserFactory.vala b/src/ParserFactory.vala
new file mode 100644
index 0000000..5e1d333
--- /dev/null
+++ b/src/ParserFactory.vala
@@ -0,0 +1,55 @@
+namespace LAview {
+
+ namespace Parsers {
+
+ delegate Parser ParserDelegate (Array links);
+
+ class Link {
+
+ public string[] begin;
+ public string[] end;
+ public unowned ParserDelegate create;
+
+ public Link (string[] begin, string[] end, ParserDelegate? create = null) {
+ this.begin = begin; this.end = end; this.create = create;
+ }
+ }
+
+ class ParserFactory {
+
+ public Array group = new Array ();
+
+ public virtual TextParser make_text_parser (Array links) {
+ return new TextParser (links);
+ }
+
+ public virtual LongtableParser make_longtable_parser (Array links) {
+ return new LongtableParser (links);
+ }
+
+ public virtual GraphicsParser make_graphics_parser (Array links) {
+ return new GraphicsParser (links);
+ }
+
+ public virtual TabularParser make_tabular_parser (Array links) {
+ return new TabularParser (links);
+ }
+
+ public ParserFactory () {
+ group.append_val (new Link ({}, {},
+ links => { return make_text_parser (links); }));
+ group.append_val (new Link ({"\\", "\\begin", "{", "longtable", "}"},
+ {"\\", "\\end", "{", "longtable", "}"},
+ links => { return make_longtable_parser (links); }));
+ group.append_val (new Link ({"\\", "\\includegraphics"}, {},
+ links => { return make_graphics_parser (links); }));
+ group.append_val (new Link ({"\\", "\\begin", "{", "tabular", "}"},
+ {"\\", "\\end", "{", "tabular", "}"},
+ links => { return make_tabular_parser (links); }));
+ group.append_val (new Link ({"\\", "\\begin", "{", "tabular", "*", "}"},
+ {"\\", "\\end", "{", "tabular", "*", "}"},
+ links => { return make_tabular_parser (links); }));
+ }
+ }
+ }
+}
diff --git a/src/Row.vala b/src/Row.vala
index e69de29..c6d5d59 100644
--- a/src/Row.vala
+++ b/src/Row.vala
@@ -0,0 +1,439 @@
+namespace LAview {
+
+ namespace Table {
+
+ /**
+ * Row in the {@link Subtable}.
+ */
+ public class Row : ADocList {
+
+ /**
+ * Expands {@link AddSpaces.Style}.
+ */
+ public enum Style {
+
+ /**
+ * Default style.
+ */
+ DEFAULT = 0,
+
+ /**
+ * Formal style for the first //Row// in the {@link Subtable}.
+ */
+ FORMAL_FIRST,
+
+ /**
+ * Formal style for the middle //Row// in the {@link Subtable}.
+ */
+ FORMAL_REST,
+
+ /**
+ * Formal style for the last //Row// in the {@link Subtable}.
+ */
+ FORMAL_LAST,
+
+ /**
+ * Formal style for a single //Row// in the {@link Subtable}.
+ */
+ FORMAL_SINGLE
+ }
+
+ /**
+ * Style of any operation on {@link ATable}/{@link Subtable} or //Row//
+ * for lines preserving/creation.
+ */
+ public enum OpLineStyle {
+
+ /**
+ * Do not anything with lines, "store as is".
+ */
+ DEFAULT = 0,
+
+ /**
+ * Preserve vertical border.
+ */
+ HBORDER = 1,
+
+ /**
+ * Preserve horizontal border.
+ */
+ VBORDER = 2,
+
+ /**
+ * Preserve both vertical and horizontal borders.
+ */
+ BORDER = 3,
+
+ /**
+ * Remove horizontal double lines.
+ */
+ HDBLLINES = 4,
+
+ /**
+ * Remove vertical double lines.
+ */
+ VDBLLINES = 8,
+
+ /**
+ * Remove both horizontal and vertical double lines.
+ */
+ DBLLINES = 12,
+
+ /**
+ * Preserve any borders and remove any double lines.
+ */
+ BORDER_DBLLINES = 15,
+ }
+
+ /**
+ * Any text before the //Row//.
+ */
+ public string before = "";
+
+ /**
+ * Style of any operation on {@link ATable}/{@link Subtable} or //Row//
+ * for lines preserving/creation.
+ */
+ public Style style;
+
+ /**
+ * Top vertical spaces.
+ */
+ public AddSpaces top = new AddSpaces ();
+
+ /**
+ * Bottom vertical spaces.
+ */
+ public AddSpace bottom = new AddSpace.with_params ("");
+
+ /**
+ * Vertical spaces inside the {@link Subtable}
+ */
+ public AddSpaces between = new AddSpaces ();
+
+ /**
+ * Type of horizontal lines for the //Row//.
+ */
+ public enum LinesType {
+
+ /**
+ * //Row// has no horizontal lines.
+ */
+ NONE = 0,
+
+ /**
+ * //Row// has continuous horizontal line on the top.
+ */
+ HLINE,
+
+ /**
+ * //Row// has noncontinuous horizontal line on the top.
+ */
+ CLINES
+ }
+
+ /**
+ * Constructs a new empty //Row//.
+ */
+ public Row () {}
+
+ protected override ADocList create_default_instance () { return new Row (); }
+
+ /**
+ * Gets a copy of the //Row//.
+ */
+ public override IDoc copy () {
+ var clone = base.copy () as Row;
+ clone.before = before;
+ clone.style = style;
+ clone.top = top;
+ clone.bottom = bottom.copy () as AddSpace;
+ clone.between = between.copy () as AddSpaces;
+ return clone;
+ }
+
+ enum Where { SEARCH_BEGIN = 0, SEARCH_END = 1 }
+
+ string row_to_lines (bool overline) {
+ var s = new StringBuilder ();
+ var lcount_row = copy () as Row;
+ LinesType lines_type = LinesType.HLINE;
+
+ while (lines_type != LinesType.NONE) {
+ lines_type = LinesType.NONE;
+
+ foreach (var cell in lcount_row as Gee.ArrayList) {
+ if (overline && cell.noverlines != 0
+ || !overline && cell.nunderlines != 0) {
+ if (lines_type == LinesType.NONE) {
+ if (lcount_row.index_of (cell) == 0)
+ lines_type = LinesType.HLINE;
+ else
+ lines_type = LinesType.CLINES;
+ }
+ } else {
+ if (lines_type == LinesType.HLINE)
+ lines_type = LinesType.CLINES;
+ }
+ }
+
+ if (lines_type != LinesType.NONE)
+ s.append_c ('\n');
+
+ if (lines_type == LinesType.HLINE) {
+ string line_style = "";
+
+ switch (lcount_row.style) {
+ case Style.FORMAL_FIRST:
+ line_style = overline ? "\\toprule" : "\\midrule";
+ break;
+ case Style.FORMAL_LAST:
+ line_style = overline ? "\\midrule" : "\\bottomrule";
+ break;
+ case Style.FORMAL_SINGLE:
+ line_style = overline ? "\\toprule" : "\\bottomrule";
+ break;
+ case Style.FORMAL_REST:
+ line_style = "\\midrule";
+ break;
+ default:
+ line_style = "\\hline";
+ break;
+ }
+
+ s.append (line_style);
+ } else if (lines_type == LinesType.CLINES) {
+ var clines_added = false;
+
+ uint cline_begin = 0, cline_end = 0;
+ var where = Where.SEARCH_BEGIN;
+ for (var idx = 0, max_idx = lcount_row.size; idx < max_idx; ++idx) {
+ var cell = lcount_row[idx] as Cell;
+
+ switch (where) {
+ case Where.SEARCH_BEGIN:
+ if (overline && cell.noverlines != 0
+ || !overline && cell.nunderlines != 0) {
+
+ if (idx + 1 < max_idx
+ && (overline && (lcount_row[idx + 1] as Cell).noverlines != 0
+ || !overline && (lcount_row[idx + 1] as Cell).nunderlines != 0)) {
+ cline_end = cline_begin + cell.ncells;
+ where = Where.SEARCH_END;
+ } else {
+ if (clines_added)
+ s.append_c (' ');
+ s.append_printf (lcount_row.style != Style.DEFAULT ?
+ "\\cmidrule{%d-%d}" : "\\cline{%d-%d}",
+ cline_begin + 1,
+ cline_begin + cell.ncells);
+ cline_begin += cell.ncells;
+ clines_added = true;
+ }
+ } else {
+ cline_begin += cell.ncells;
+ }
+ break;
+ case Where.SEARCH_END:
+ if (idx + 1 >= max_idx
+ || overline && (lcount_row[idx + 1] as Cell).noverlines == 0
+ || !overline && (lcount_row[idx + 1] as Cell).nunderlines == 0) {
+ if (clines_added)
+ s.append_c (' ');
+ s.append_printf (lcount_row.style != Style.DEFAULT ?
+ "\\cmidrule{%d-%d}" : "\\cline{%d-%d}",
+ cline_begin + 1,
+ cline_end + cell.ncells);
+ cline_begin = cline_end + cell.ncells;
+ clines_added = true;
+ where = Where.SEARCH_BEGIN;
+ } else {
+ cline_end += cell.ncells;
+ }
+ break;
+ default:
+ assert (where == Where.SEARCH_BEGIN);
+ break;
+ }
+ }
+ }
+
+ foreach (var cell in lcount_row as Gee.ArrayList) {
+ if (overline && cell.noverlines != 0
+ || !overline && cell.nunderlines != 0) {
+ if (overline)
+ --cell.noverlines;
+ else
+ --cell.nunderlines;
+ }
+ }
+ }
+
+ return s.str;
+ }
+
+ void process_opline_insert (Cell cell,
+ int index,
+ OpLineStyle line_style) {
+ if (size == 0) return;
+
+ if ((line_style & OpLineStyle.VBORDER) != 0) {
+ if (index < 0 || index >= size) {
+ var last_cell = get (size - 1) as Cell;
+ if (last_cell.multitype == Cell.Multitype.MULTICOL
+ || last_cell.multitype == Cell.Multitype.MULTICOLROW)
+ cell.nrlines = last_cell.nrlines;
+ } else if (index == 0) {
+ if ((get (index) as Cell).multitype == Cell.Multitype.MULTICOL
+ || (get (index) as Cell).multitype == Cell.Multitype.MULTICOLROW)
+ cell.nllines = (get (index) as Cell).nllines;
+ }
+ }
+
+ if ((line_style & OpLineStyle.VDBLLINES) != 0) {
+ var prev_index = index - 1;
+
+ if (index >= 0 && index < size) { // next == [index]
+ var idx_cell = get (index) as Cell;
+ if (idx_cell.multitype == Cell.Multitype.MULTICOL
+ || idx_cell.multitype == Cell.Multitype.MULTICOLROW ) {
+ idx_cell.nllines = cell.nrlines != 0 || idx_cell.nllines != 0 ? 1 : 0;
+ cell.nrlines = 0;
+ }
+ } else {
+ prev_index = size - 1;
+ }
+
+ if (prev_index >= 0 && prev_index < size
+ && (cell.multitype == Cell.Multitype.MULTICOL
+ || cell.multitype == Cell.Multitype.MULTICOLROW)) {
+ var idx_cell = get (prev_index) as Cell;
+ cell.nllines = idx_cell.nrlines != 0 || cell.nllines != 0 ? 1 : 0;
+ idx_cell.nrlines = 0;
+ }
+ }
+ }
+
+ /**
+ * Removes a {@link Cell} from the //Row//.
+ *
+ * @param cell {@link Cell} to remove.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public new bool remove (Cell cell, Row.OpLineStyle line_style = Row.OpLineStyle.BORDER_DBLLINES) {
+ var index = index_of (cell);
+ if (index < 0 || index >= size) return false;
+ remove_at (index);
+ return true;
+ }
+
+ /**
+ * Removes a {@link Cell} from the //Row// at specified position.
+ *
+ * @param index position of the {@link Cell} to remove.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public new Cell remove_at (int index, Row.OpLineStyle line_style = Row.OpLineStyle.BORDER_DBLLINES) {
+ var cell = get (index) as Cell;
+ if ((line_style & OpLineStyle.VBORDER) != 0
+ && (cell.multitype == Cell.Multitype.MULTICOL
+ || cell.multitype == Cell.Multitype.MULTICOLROW)) {
+ if (size > 1) {
+ if (index == 0)
+ (get (1) as Cell).nllines = cell.nllines;
+ else if (index == size - 1)
+ (get (size - 2) as Cell).nrlines = cell.nrlines;
+ }
+
+ if ((line_style & OpLineStyle.VDBLLINES) != 0) {
+ if (index > 0 && index + 1 < size) {
+ var prev = get (index - 1) as Cell,
+ next = get (index + 1) as Cell;
+ if (next.multitype == Cell.Multitype.MULTICOL
+ || next.multitype == Cell.Multitype.MULTICOLROW) {
+ next.nllines = prev.nrlines != 0 || next.nllines != 0 ? 1 : 0;
+ prev.nrlines = 0;
+ }
+ }
+ }
+ }
+
+ return base.remove_at (index) as Cell;
+ }
+
+ /**
+ * Inserts a {@link Cell} to the //Row// to specified position.
+ *
+ * @param index position to insert the {@link Cell}.
+ * @param cell {@link Cell} to insert.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public new void insert (int index, Cell cell, OpLineStyle line_style = OpLineStyle.BORDER_DBLLINES) {
+ process_opline_insert (cell, index, line_style);
+ base.insert (index, cell);
+ }
+
+ /**
+ * Adds a {@link Cell} to the //Row//.
+ *
+ * @param cell {@link Cell} to add.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public new bool add (Cell cell, OpLineStyle line_style = OpLineStyle.BORDER_DBLLINES) {
+ process_opline_insert (cell, -1, line_style);
+ return base.add (cell);
+ }
+
+ /**
+ * Generates LaTeX string for the //Row//.
+ */
+ public override string generate () {
+ var s = new StringBuilder ();
+
+ /* {c,h}lines */
+ string tmps = row_to_lines (true);
+ s.append (tmps);
+
+ /* "top" additional space */
+ if (top.size != 0) {
+ top.style = style == Style.DEFAULT ? AddSpaces.Style.DEFAULT
+ : AddSpaces.Style.FORMAL;
+ s.append (top.generate ());
+ }
+
+ /* spaces before self */
+ if (before != "")
+ s.append (before);
+
+ /* rows contents */
+ foreach (var cell in this) {
+ if (this.index_of (cell) != 0) s.append_c ('&');
+ s.append (cell.generate ());
+ }
+
+ s.append ("\\tabularnewline");
+
+ /* "bottom" additional space */
+ if ((tmps = bottom.generate ()) != "") {
+ if (style == Style.DEFAULT)
+ s.append_printf ("[%s]", tmps);
+ else
+ s.append_printf ("\\addlinespace[%s]", tmps);
+ }
+
+ /* "between" additional space */
+ if (between.size != 0) {
+ between.style = style == Style.DEFAULT ? AddSpaces.Style.DEFAULT
+ : AddSpaces.Style.FORMAL;
+ s.append (between.generate ());
+ }
+
+ /* {c,h}lines */
+ tmps = row_to_lines (false);
+ s.append (tmps);
+
+ return s.str;
+ }
+ }
+ }
+}
diff --git a/src/Scanner.vala b/src/Scanner.vala
deleted file mode 100644
index e69de29..0000000
diff --git a/src/Subtable.vala b/src/Subtable.vala
index e69de29..3ef62e8 100644
--- a/src/Subtable.vala
+++ b/src/Subtable.vala
@@ -0,0 +1,353 @@
+namespace LAview {
+
+ namespace Table {
+
+ /**
+ * Subtable in the {@link ATable}.
+ */
+ public class Subtable : ADocList {
+
+ /**
+ * Caption of the table.
+ */
+ public string caption = "";
+
+ /**
+ * Any text before the //Subtable//.
+ */
+ public string before = "";
+
+ /**
+ * Any text after the //Subtable//.
+ */
+ public string after = "";
+
+ /**
+ * Style of the table (Default/Formal).
+ */
+ public AddSpaces.Style style;
+
+ protected override ADocList create_default_instance () { return new Subtable (); }
+
+ /**
+ * Constructs a new empty //Subtable//.
+ */
+ public Subtable () {}
+
+ /**
+ * Gets a copy of the //Subtable//.
+ */
+ public override IDoc copy () {
+ var clone = base.copy () as Subtable;
+ clone.caption = caption;
+ clone.before = before;
+ clone.after = after;
+ clone.style = style;
+ return clone;
+ }
+
+ void process_border_lines (Row dest_row, Row src_row, bool is_first) {
+ var si = 0, di = 0, max_si = src_row.size, max_di = dest_row.size;
+ uint dncells = 0, sncells = 0;
+
+ while (si < max_si && di < max_di) {
+ var scell = src_row.get (si) as Cell;
+ var dcell = dest_row.get (di) as Cell;
+
+ dncells = dncells != 0 ? dncells
+ : uint.max (1, dcell.multitype == Cell.Multitype.MULTICOL ?
+ dcell.ncells : 1);
+ sncells = sncells != 0 ? sncells
+ : uint.max (1, scell.multitype == Cell.Multitype.MULTICOL ?
+ scell.ncells : 1);
+
+ if (is_first)
+ dcell.noverlines = scell.noverlines;
+ else
+ dcell.nunderlines = scell.nunderlines;
+
+ if (--dncells == 0) ++di;
+ if (--sncells == 0) ++si;
+ }
+ }
+
+ void process_double_lines (Row top_row, Row bottom_row) {
+ var ti = 0, bi = 0, max_ti = top_row.size, max_bi = bottom_row.size;
+ uint tncells = 0, bncells = 0;
+
+ while (ti < max_ti && bi < max_bi) {
+ var tcell = top_row.get (ti) as Cell;
+ var bcell = bottom_row.get (bi) as Cell;
+
+ tncells = tncells != 0 ? tncells
+ : uint.max (1, tcell.multitype == Cell.Multitype.MULTICOL ?
+ 1 : 0) != 0 ? tcell.ncells : 1;
+ bncells = bncells != 0 ? bncells
+ : uint.max (1, bcell.multitype == Cell.Multitype.MULTICOL ?
+ bcell.ncells : 1);
+
+ bcell.noverlines = tcell.nunderlines + bcell.noverlines != 0 ? 1 : 0;
+ tcell.nunderlines = 0;
+
+ if (--tncells == 0) ++ti;
+ if (--bncells == 0) ++bi;
+ }
+ }
+
+ void process_opline_insert (Row row, Row? row2, Row.OpLineStyle line_style) {
+ if (size == 0) return;
+
+ if ((line_style & Row.OpLineStyle.HBORDER) != 0) {
+ if (row2 == null)
+ process_border_lines (row, get (size - 1) as Row, false);
+ else if (index_of (row2) == 0)
+ process_border_lines (row, row2, true);
+ }
+
+ if ((line_style & Row.OpLineStyle.HDBLLINES) != 0) {
+ Row prev = null;
+
+ if (row2 != null) { // next == iter
+ prev = get (index_of (row2) - 1) as Row;
+ process_double_lines (row, row2);
+ } else {
+ prev = get (size - 1) as Row;
+ }
+
+ if (prev != null)
+ process_double_lines (prev, row);
+ }
+ }
+
+ /**
+ * Removes {@link Cell}-s in the column by specified index.
+ *
+ * @param index index of column to remove.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public void remove_col (uint index, Row.OpLineStyle line_style = Row.OpLineStyle.BORDER_DBLLINES) {
+ foreach (Row row in this as Gee.ArrayList) {
+ uint mindx = 0;
+
+ foreach (var cell in row as Gee.ArrayList) {
+ uint ncells = 1;
+
+ if (cell.multitype == Cell.Multitype.MULTICOL)
+ ncells = cell.ncells;
+
+ if (mindx + ncells > index) {
+ if (ncells == 1)
+ row.remove (cell, line_style);
+ else
+ cell.ncells--;
+ break;
+ }
+
+ mindx += ncells;
+ }
+ }
+ }
+
+ /**
+ * Clones column of {@link Cell}-s by specified indexes.
+ *
+ * @param src_index source position of the column.
+ * @param dest_index destination to clone the column.
+ * @param multicol preserve multicolumn property or not.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public void clone_col (uint src_index, uint dest_index,
+ bool multicol, Row.OpLineStyle line_style = Row.OpLineStyle.BORDER_DBLLINES) {
+ foreach (var row in this as Gee.ArrayList) {
+ uint mindx = 0;
+ var sidx = -1;
+ var didx = -1;
+
+ foreach (var cell in row as Gee.ArrayList) {
+ uint ncells = 1;
+
+ if (cell.multitype == Cell.Multitype.MULTICOL)
+ ncells = cell.ncells;
+
+ if (sidx == -1 && mindx + ncells > src_index)
+ sidx = row.index_of (cell);
+
+ if (didx == -1 && mindx + ncells > dest_index)
+ didx = row.index_of (cell);
+
+ if (sidx != -1 && didx != -1) {
+ var cell2 = row.get (sidx).copy () as Cell;
+ if (!multicol && cell2.multitype == Cell.Multitype.MULTICOL)
+ cell2.ncells = 1;
+ row.insert (didx, cell2, line_style);
+
+ sidx = -1;
+ break;
+ }
+
+ mindx += ncells;
+ }
+
+ if (sidx != -1 && mindx <= dest_index) {
+ var empty_global_doc = new Glob ();
+ Cell cell;
+
+ while (mindx < dest_index) {
+ var row_size = row.size;
+ cell = row.get (row_size - 1).copy () as Cell;
+ cell.contents = empty_global_doc;
+ cell.ncells = 1;
+ row.add (cell, line_style);
+ mindx++;
+ }
+
+ cell = row.get (sidx).copy () as Cell;
+ if (!multicol && cell.multitype == Cell.Multitype.MULTICOL)
+ cell.ncells = 1;
+ row.add (cell, line_style);
+ }
+ }
+ }
+
+ /**
+ * Removes {@link Row} from from //Subtable//.
+ *
+ * @param row {@link Row} to remove.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public new bool remove (Row row, Row.OpLineStyle line_style = Row.OpLineStyle.BORDER_DBLLINES) {
+ var index = index_of (row);
+ if (index < 0 || index >= size) return false;
+ remove_at (index);
+ return true;
+ }
+
+ /**
+ * Removes a {@link Row} from the //Subtable// at specified position.
+ *
+ * @param index position of the {@link Row} to remove.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public new Row remove_at (int index, Row.OpLineStyle line_style = Row.OpLineStyle.BORDER_DBLLINES) {
+ if (size > 1 && 0 != line_style & Row.OpLineStyle.HBORDER) {
+ if (index == 0)
+ process_border_lines (get (1) as Row, get (index) as Row, true);
+ else if (index == size - 1)
+ process_border_lines (get (size - 2) as Row, get (index) as Row, false);
+ }
+
+ if ((line_style & Row.OpLineStyle.HDBLLINES) != 0)
+ if (index > 0 && index + 1 < size)
+ process_double_lines (get (index + 1) as Row,
+ get (index - 1) as Row);
+
+ return base.remove_at (index) as Row;
+ }
+
+ /**
+ * Inserts a {@link Row} to the //Subtable// to specified position.
+ *
+ * @param index position to insert the {@link Row}.
+ * @param row {@link Row} to insert.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public new void insert (int index, Row row, Row.OpLineStyle line_style = Row.OpLineStyle.BORDER_DBLLINES) {
+ process_opline_insert (row, get (index) as Row, line_style);
+ base.insert (index, row);
+ }
+
+ /**
+ * Adds a {@link Row} to the //Subtable//.
+ *
+ * @param row {@link Row} to add.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public new bool add (Row row, Row.OpLineStyle line_style = Row.OpLineStyle.BORDER_DBLLINES) {
+ process_opline_insert (row, null, line_style);
+ return base.add (row);
+ }
+
+ enum RowPos { DEFAULT = 0, FIRST, LAST }
+
+ Row rm_extra_lines (Row row) {
+ var ret = row.copy () as Row;
+
+ var row_pos = RowPos.DEFAULT;
+
+ if (index_of (row) == 0)
+ row_pos = RowPos.FIRST;
+ else if (index_of (row) == size - 1)
+ row_pos = RowPos.LAST;
+ else
+ row_pos = RowPos.DEFAULT;
+
+ uint min_olines = 0, min_ulines = 0;
+
+ foreach (var cell in row as Gee.ArrayList) {
+ min_olines = uint.min (min_olines, cell.noverlines);
+ min_ulines = uint.min (min_ulines, cell.nunderlines);
+ }
+
+ foreach (var cell in row as Gee.ArrayList) {
+ switch (row_pos) {
+ case RowPos.FIRST:
+ cell.noverlines = uint.min (min_olines + 1, cell.noverlines);
+ cell.nunderlines = uint.min (min_ulines, cell.nunderlines);
+ break;
+ case RowPos.LAST:
+ cell.noverlines = uint.min (1, cell.noverlines);
+ cell.nunderlines = uint.min (min_ulines + 1, cell.nunderlines);
+ break;
+ default:
+ cell.noverlines = uint.min (1, cell.noverlines);
+ cell.nunderlines = uint.min (min_ulines, cell.nunderlines);
+ break;
+ }
+ }
+
+ return ret;
+ }
+
+ /**
+ * Generates LaTeX string for the //Subtable//.
+ */
+ public override string generate () {
+ var s = new StringBuilder ();
+
+ s.append (before);
+
+ if (caption != "") {
+ s.append (caption);
+ if (size != 0)
+ s.append ("\\tabularnewline");
+ }
+
+ foreach (var row in this as Gee.ArrayList) {
+ var row_style = Row.Style.DEFAULT;
+
+ if (style != AddSpaces.Style.DEFAULT) {
+ var len = size;
+
+ if (len > 1 && index_of (row) == 0)
+ row_style = Row.Style.FORMAL_FIRST;
+ else if (len > 1 && index_of (row) == size - 1)
+ row_style = Row.Style.FORMAL_LAST;
+ else if (len == 1)
+ row_style = Row.Style.FORMAL_SINGLE;
+ else
+ row_style = Row.Style.FORMAL_REST;
+ }
+
+ row.style = row_style;
+ var tmprow = rm_extra_lines (row);
+ var tmps = tmprow.generate ();
+ s.append (tmps);
+ }
+
+ s.append (after);
+
+ return s.str;
+ }
+ }
+ }
+}
diff --git a/src/Table.vala b/src/Table.vala
new file mode 100644
index 0000000..c565863
--- /dev/null
+++ b/src/Table.vala
@@ -0,0 +1,181 @@
+namespace LAview {
+
+ /**
+ * Tables and its components in the document.
+ */
+ namespace Table {
+
+ /**
+ * Any Table in the LaTeX document.
+ */
+ public abstract class ATable : ADoc {
+
+ /**
+ * Align of the table.
+ *
+ * Possible values: 't', 'b'.
+ */
+ public char align;
+
+ /**
+ * Style of the {@link AddSpace}/{@link Subtable}.
+ */
+ public AddSpaces.Style style;
+
+ /**
+ * Parameters of columns.
+ */
+ public ColParams params = new ColParams ();
+
+ /**
+ * Main sutable.
+ */
+ public Subtable table = new Subtable ();
+
+ /**
+ * First Header.
+ */
+ public Subtable first_header = new Subtable ();
+
+ /**
+ * Header.
+ */
+ public Subtable header = new Subtable ();
+
+ /**
+ * Footer.
+ */
+ public Subtable footer = new Subtable ();
+
+ /**
+ * Last Footer.
+ */
+ public Subtable last_footer = new Subtable ();
+
+ protected ATable () {}
+
+ /**
+ * Gets a copy of the //Table//.
+ */
+ public override IDoc copy () {
+ var clone = Object.new (this.get_type ()) as ATable;
+
+ clone.align = align;
+ clone.style = style;
+ clone.params = params.copy () as ColParams;
+ clone.table = table.copy () as Subtable;
+ clone.first_header = first_header.copy () as Subtable;
+ clone.header = header.copy () as Subtable;
+ clone.footer = footer.copy () as Subtable;
+ clone.last_footer = last_footer.copy () as Subtable;
+
+ return clone;
+ }
+
+ /**
+ * Generates LaTeX string for the //Table//.
+ */
+ public override string generate () {
+ assert (false);
+ return "";
+ }
+
+ /**
+ * Removes {@link Cell}-s in the column by specified index.
+ *
+ * @param index index of column to remove.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public void remove_col (int index, Row.OpLineStyle line_style
+ = Row.OpLineStyle.BORDER_DBLLINES) {
+ if (index >= params.size) return;
+
+ var param = params.get (index) as ColParam;
+
+ if ((line_style & Row.OpLineStyle.VBORDER) != 0 && param.align != "") {
+ if (params.size > 1) {
+ if (index == 0)
+ (params.get (1) as ColParam).nllines = param.nllines;
+ else if (index == params.size - 1)
+ (params.get (params.size - 2) as ColParam).nrlines = param.nrlines;
+ }
+ }
+
+ if ((line_style & Row.OpLineStyle.VDBLLINES) != 0) {
+ if (index > 0 && index < params.size - 1) {
+ var prev = params.get (index - 1) as ColParam,
+ next = params.get (index + 1) as ColParam;
+ next.nllines = prev.nrlines != 0 || next.nllines != 0 ? 1 : 0;
+ prev.nrlines = 0;
+ }
+ }
+
+ params.remove_at (index);
+
+ first_header.remove_col (index, line_style);
+ header.remove_col (index, line_style);
+ footer.remove_col (index, line_style);
+ last_footer.remove_col (index, line_style);
+ table.remove_col (index, line_style);
+ }
+
+ /**
+ * Clones column of {@link Cell}-s by specified indexes.
+ *
+ * @param src_index source position of the column.
+ * @param dest_index destination to clone the column.
+ * @param multicol preserve multicolumn property or not.
+ * @param line_style {@link Row.OpLineStyle} of the operation.
+ */
+ public void clone_col (int src_index, int dest_index, bool multicol,
+ Row.OpLineStyle line_style
+ = Row.OpLineStyle.BORDER_DBLLINES) {
+ if (src_index >= params.size || dest_index > params.size) return;
+
+ var param = params.get (src_index).copy () as ColParam;
+
+ if ((Row.OpLineStyle.VBORDER & line_style) != 0) {
+ if (dest_index >= params.size) {
+ var last_param = params.get (params.size - 1) as ColParam;
+ if (last_param.align != "")
+ param.nrlines = last_param.nrlines;
+ } else {
+ var first_param = params.get (0) as ColParam;
+ if (dest_index == 0 && first_param.align != "")
+ param.nllines = first_param.nllines;
+ }
+ }
+
+ if ((Row.OpLineStyle.VDBLLINES & line_style) != 0) {
+ int prev_index;
+ bool prev_edit = false;
+
+ if (dest_index < params.size) {
+ prev_index = dest_index > 0 ? dest_index - 1 : 0;
+ if (prev_index > 0) prev_edit = true;
+ var dest_param = params.get (dest_index) as ColParam;
+ dest_param.nllines = param.nrlines != 0 || dest_param.nllines != 0 ? 1 : 0;
+ param.nrlines = 0;
+ } else {
+ prev_edit = true;
+ prev_index = params.size - 1;
+ }
+
+ if (prev_edit) {
+ var prev_param = params.get (prev_index) as ColParam;
+ param.nllines = prev_param.nrlines != 0 || param.nllines != 0 ? 1 : 0;
+ prev_param.nrlines = 0;
+ }
+ }
+
+ params.insert (dest_index, param);
+
+ first_header.clone_col (src_index, dest_index, multicol, line_style);
+ header.clone_col (src_index, dest_index, multicol, line_style);
+ footer.clone_col (src_index, dest_index, multicol, line_style);
+ last_footer.clone_col (src_index, dest_index, multicol, line_style);
+ table.clone_col (src_index, dest_index, multicol, line_style);
+ }
+ }
+ }
+}
diff --git a/src/TableParser.vala b/src/TableParser.vala
new file mode 100644
index 0000000..17a82ec
--- /dev/null
+++ b/src/TableParser.vala
@@ -0,0 +1,674 @@
+namespace LAview {
+
+ namespace Parsers {
+
+ using Table;
+
+ abstract class TableParser : Parser {
+
+ protected uint row_abs_pos;
+ protected Row row = new Row ();
+ protected Subtable subtable;
+
+ protected Array group = new Array ();
+
+ protected Row.LinesType lines_type;
+ protected List clines;
+ protected int nhlines;
+ protected uint cell_abs_pos;
+
+ protected bool in_caption = false;
+
+ public TableParser (Array links) {
+ base (links);
+
+ group.append_val (new Link ({}, {}));
+
+ group.append_val (new Link ({"\\", "\\caption"}, {}));
+ group.append_val (new Link ({"\\", "\\endfirsthead"}, {}));
+ group.append_val (new Link ({"\\", "\\endhead"}, {}));
+ group.append_val (new Link ({"\\", "\\endfoot"}, {}));
+ group.append_val (new Link ({"\\", "\\endlastfoot"}, {}));
+
+ group.append_val (new Link ({"\\", "\\hline"}, {}));
+ group.append_val (new Link ({"\\", "\\cline"}, {}));
+ group.append_val (new Link ({"\\", "\\tabularnewline"}, {}));
+ group.append_val (new Link ({"\\", "\\", "\\", "\\"}, {}));
+ group.append_val (new Link ({"&"}, {}));
+ group.append_val (new Link ({"\\", "\\toprule"}, {}));
+ group.append_val (new Link ({"\\", "\\midrule"}, {}));
+ group.append_val (new Link ({"\\", "\\cmidrule"}, {}));
+ group.append_val (new Link ({"\\", "\\bottomrule"}, {}));
+ group.append_val (new Link ({"\\", "\\noalign"}, {}));
+ group.append_val (new Link ({"\\", "\\addlinespace"}, {}));
+
+ /* load local symbols */
+ load_symbols (group);
+
+ /* generate local tokens table (tree) */
+ build_tree (ref local_tokens_to_class_start, group, false);
+
+ /* generate local stop_tokens table (tree) */
+ build_tree (ref local_tokens_to_class_stop, group, true);
+ }
+
+ public override IDoc parse (string contents, size_t line, long position) throws ParseError {
+ assert (false);
+
+ return new Text ("");
+ }
+
+ protected bool process_tabularnewline (uint tag, uint tag_left_abspos,
+ string subcontents,
+ uint matched_tag_abspos_right) throws ParseError {
+ // TODO: Similar ro TabularParser::process_tabularnewline (), make a template method?
+ if (in_caption) {
+ subtable.caption = contents[row_abs_pos:tag_left_abspos].compress ();
+ in_caption = false;
+ } else {
+ TokenType token = add_cell (subcontents);
+
+ if (token == TokenType.ERROR)
+ return false;
+
+ if (fifo_peek_head().token == TokenType.LEFT_BRACE) {
+ local_count_branches (tag);
+ } else {
+ subtable.add (row, Row.OpLineStyle.DEFAULT);
+ row = new Row ();
+ }
+ }
+
+ lines_type = Row.LinesType.NONE;
+ clines = new List ();
+ nhlines = 0;
+
+ row_abs_pos = matched_tag_abspos_right;
+
+ return true;
+ }
+
+ protected TokenType add_cell (string subcontents) throws ParseError {
+ /* remove leading linebreak and \newpage tag in first cell of row */
+ if (row.size == 0) {
+ try {
+ var regex = new Regex ("^([ \t\r]|\\\\\\\\newpage)*\\n"
+ + "([ \t\r\n]*\\\\\\\\newpage[ \t\r\n]*)*");
+ MatchInfo match_info;
+ regex.match (subcontents, 0, out match_info);
+ if (match_info.matches ()) {
+ var word = match_info.fetch (0);
+ uint stop_pos = 0;
+ match_info.fetch_pos (0, null, out stop_pos);
+ subcontents = subcontents.offset (stop_pos);
+ row.before = word.compress ();
+ }
+ } catch (RegexError e) { }
+ }
+
+ var mtype = Cell.Multitype.SIMPLE;
+ var before = "", align = "";
+ var ncells = 0;
+ var cell_contents = "";
+ var after = "";
+
+ /* check cell for multi{column|row} */
+ if (Regex.match_simple ("^[ \t\r\n]*\\\\\\\\multicolumn\\{1\\}\\{[^{}]+\\}"
+ + "\\{[ \t\r\n]*\\\\\\\\multirow\\{[0-9]+\\}"
+ + "\\{\\*\\}\\{", subcontents)) {
+ // Multitype.MULTICOLROW
+ mtype = Cell.Multitype.MULTICOLROW;
+ before = subcontents[0:subcontents.index_of_char('\\')];
+ var pstart = subcontents.offset (subcontents.index_of_char ('{') + 1);
+ pstart = pstart.offset (pstart.index_of_char ('{'));
+ var len = pstart.index_of_char ('}');
+ var pend = pstart.offset (len);
+ align = pstart[1:len].compress ();
+ pstart = pend.offset (pend.index_of_char ('{') + 1);
+ pstart = pstart.offset (pstart.index_of_char ('{'));
+ ncells = int.parse (pstart.offset (1));
+ pstart = pstart.offset (1);
+ pstart = pstart.offset (pstart.index_of_char ('{') + 1);
+ pstart = pstart.offset (pstart.index_of_char ('{'));
+ var lev = 1;
+ len = 1;
+ pend = pstart.offset (1);
+ for (var max_len = pstart.length; len < max_len && lev != 0; ++len) {
+ switch (pstart[len]) {
+ case '{': ++lev;
+ break;
+ case '}': --lev;
+ break;
+ default:
+ break;
+ }
+ pend = pend.offset (1);
+ }
+ if (lev != 0) {
+ prefix_error (subdoc_start, _("Error parsing subdoc."));
+ throw new ParseError.SUBDOC (err_str);
+ }
+ cell_contents = pstart.substring (1, len - 2);
+ after = pend.offset (1);
+ } else if (Regex.match_simple ("^[ \t\r\n]*\\\\\\\\multi(column|row)\\{[0-9]+\\}\\{",
+ subcontents)) {
+ // Multitype.MULTICOL
+ if (Regex.match_simple ("^[ \t\r\n]*\\\\\\\\multicolumn", subcontents))
+ mtype = Cell.Multitype.MULTICOL;
+ else if (Regex.match_simple ("^[ \t\r\n]*\\\\\\\\multirow", subcontents))
+ mtype = Cell.Multitype.MULTIROW;
+
+ before = subcontents[0:subcontents.index_of_char ('\\')];
+ var pstart = subcontents.offset (subcontents.index_of_char ('{'));
+ ncells = int.parse (pstart.offset (1));
+ pstart = pstart.offset (1);
+ pstart = pstart.offset (pstart.index_of_char ('{'));
+ var lev = 1;
+ var len = 1;
+ for (var max_len = pstart.length; len < max_len && lev != 0; ++len) {
+ switch (pstart[len]) {
+ case '{': ++lev;
+ break;
+ case '}': --lev;
+ break;
+ default:
+ break;
+ }
+ }
+ if (lev != 0) {
+ prefix_error (subdoc_start, _("Error parsing subdoc."));
+ throw new ParseError.SUBDOC (err_str);
+ }
+
+ align = pstart.substring (1, len - 2).compress ();
+ pstart = pstart.offset (len);
+ pstart = pstart.offset (pstart.index_of_char ('{'));
+
+ if (pstart == "") {
+ prefix_error (subdoc_start, _("Error parsing subdoc."));
+ throw new ParseError.SUBDOC (err_str);
+ }
+
+ lev = 1;
+ len = 1;
+ for (var max_len = pstart.length; len < max_len && lev != 0; ++len) {
+ switch (pstart[len]) {
+ case '{': ++lev;
+ break;
+ case '}': --lev;
+ break;
+ default:
+ break;
+ }
+ }
+ if (lev != 0) {
+ prefix_error (subdoc_start, _("Error parsing subdoc."));
+ throw new ParseError.SUBDOC (err_str);
+ }
+
+ cell_contents = pstart.substring (1, len - 2);
+ after = pstart.offset (len);
+ } else {
+ // Multitype.SIMPLE
+ ncells = 1;
+ mtype = Cell.Multitype.SIMPLE;
+ cell_contents = subcontents;
+ }
+
+ var nllines = 0, nrlines = 0;
+
+ if (align != "") {
+ var alen = align.length;
+ nllines = nrlines = 0;
+
+ for (nllines = 0; nllines < alen && '|' == align[nllines]; ++nllines);
+ for (nrlines = alen - 1; nrlines > nllines && '|' == align[nrlines]; --nrlines);
+
+ align = align[nllines:nrlines + 1];
+ nrlines = alen - nrlines - 1;
+ }
+
+ var subparserGlobal = new GlobParser (links);
+ var subdoc = subparserGlobal.parse (cell_contents, subdoc_start.line, subdoc_start.pos);
+
+ unowned List clines_p = clines.first ();
+ foreach (var cell in row as Gee.ArrayList) {
+ if (clines_p == null) break;
+
+ for (var i = 0, max_i = cell.ncells; i < max_i; ++i) {
+ if (clines_p == null) break;
+ clines_p = clines_p.next;
+ }
+ }
+
+ var overline = nhlines + ((lines_type == Row.LinesType.CLINES && clines_p != null) ?
+ clines_p.data : 0) ;
+ var underline = 0;
+
+ var cell = new Cell.with_params (mtype, ncells, nllines, align, nrlines, overline,
+ underline, subdoc as Glob, before, after);
+ row.add (cell, Row.OpLineStyle.DEFAULT);
+
+ return TokenType.NONE;
+ }
+
+ protected void lines_to_last_row () {
+ bool clear_lines = false;
+
+ switch (lines_type) {
+ case Row.LinesType.HLINE:
+ if (subtable.size != 0) {
+ foreach (var cell in subtable.get (subtable.size - 1) as Gee.ArrayList) {
+ cell.nunderlines += nhlines;
+ clear_lines = true;
+ }
+ }
+ break;
+ case Row.LinesType.CLINES:
+ var tmp_row = row.size != 0 ? row : subtable.get (subtable.size - 1) as Row;
+ unowned List clines_p = clines.first ();
+ foreach (var cell in tmp_row as Gee.ArrayList) {
+ if (clines_p == null) break;
+
+ if (clines_p != null && clines_p.data != 0)
+ ++cell.nunderlines;
+
+ for (var i = 0; clines_p != null && i < cell.ncells; ++i)
+ clines_p = clines_p.next;
+
+ clear_lines = true;
+ }
+ break;
+ }
+
+ lines_type = Row.LinesType.NONE;
+ if (clear_lines) {
+ nhlines = 0;
+ clines = new List ();
+ }
+ }
+
+ protected void local_count_branches (uint tag) {
+ if (group.index (tag).end.length != 0) {
+ child_tag = tag + links.length;
+ child_level = 1;
+ } else if (fifo_peek_head().token == TokenType.LEFT_CURLY
+ || fifo_peek_head().token == TokenType.LEFT_BRACE) {
+ in_child_params = true;
+ child_tag = tag + links.length;
+ child_level = 1;
+ }
+ }
+
+ protected void process_spaces (Row.Style style, string subcontents) {
+ if (style == Row.Style.DEFAULT
+ && !Regex.match_simple ("\\\\vskip", subcontents))
+ return;
+
+ var tmp = subcontents.compress ()[0:-1];
+ var add_space = new AddSpace.with_params (tmp.offset (style != Row.Style.DEFAULT ? 1 : 7));
+
+ Row last_row;
+ if (subtable.size != 0)
+ last_row = subtable.get(subtable.size-1) as Row;
+ else
+ last_row = new Row ();
+
+ if (subtable.size != 0 && last_row.bottom.height == "" && subcontents != "") {
+ last_row.bottom = add_space;
+ } else if (row.top.size == 0 || subtable.size == 0) {
+ row.top.add (add_space);
+ } else if (row.top.size == 1 && subtable.size != 0) {
+ last_row.between.add (row.top.get (0) as AddSpace);
+ row.top.remove_at (0);
+ row.top.add (add_space);
+ }
+ }
+
+ protected void spaces_to_last_row () {
+ var top = row.top;
+ if (top.size == 1 && subtable.size != 0) {
+ (subtable.get (subtable.size - 1) as Row).between.add (top.get (0) as AddSpace);
+ top.remove_at (0);
+ }
+ }
+
+ enum TagKind {
+ NONE = 0, START_LOCAL, STOP_LOCAL, START_GLOBAL, STOP_GLOBAL
+ }
+
+ enum TableTagType {
+ TEXT = 0, CAPTION, ENDFIRSTHEAD, ENDHEAD, ENDFOOT, ENDLASTFOOT,
+ HLINE, CLINE, TABULARNEWLINE, DBLBACKSLASHES, AMPERSAND,
+ TOPRULE, MIDRULE, CMIDRULE, BOTTOMRULE, NOALIGN, ADDLINESPACE
+ }
+
+ void end_subtable (Table.ATable table,
+ TableTagType subtable_type, uint tag_left_abspos) {
+ if (in_caption) {
+ subtable.caption = contents[row_abs_pos:tag_left_abspos].compress ();
+ in_caption = false;
+ } else {
+ subtable.after = contents[row_abs_pos:tag_left_abspos];
+ }
+
+ lines_to_last_row ();
+
+ switch (subtable_type) {
+ case TableTagType.ENDFIRSTHEAD:
+ table.first_header = subtable;
+ break;
+
+ case TableTagType.ENDHEAD:
+ table.header = subtable;
+ break;
+
+ case TableTagType.ENDFOOT:
+ table.footer = subtable;
+ break;
+
+ case TableTagType.ENDLASTFOOT:
+ table.last_footer = subtable;
+ break;
+
+ case TableTagType.TEXT:
+ table.table = subtable;
+ break;
+
+ default:
+ break;
+ }
+
+ subtable = new Subtable ();
+ }
+
+ protected TokenType scan_tex_symbol (Table.ATable table) throws ParseError {
+ var tag = 0U;
+ var matched_tag_length = fifo_is_tag (local_tokens_to_class_start, out tag);
+ var message = "";
+ TagKind tag_kind = TagKind.NONE;
+
+ if (matched_tag_length != 0 && child_level == 0) {
+ tag_kind = TagKind.START_LOCAL;
+ } else {
+ matched_tag_length = fifo_is_tag (local_tokens_to_class_stop, out tag);
+ if (matched_tag_length != 0) {
+ tag_kind = TagKind.STOP_LOCAL;
+ } else {
+ matched_tag_length = fifo_is_tag (tokens, out tag);
+
+ if (matched_tag_length != 0) {
+ tag_kind = TagKind.START_GLOBAL;
+
+ if (links.index (tag).end.length != 0)
+ ++child_level;
+ for (var i = 0; i < matched_tag_length; ++i) fifo_pop ();
+ } else {
+ matched_tag_length = fifo_is_tag (stop_tokens, out tag);
+ if (matched_tag_length != 0) {
+ if (child_level == 0) {
+ message = string.joinv (null, links.index (tag).end);
+ /// Translators: please leave the '%s' construction without any changes.
+ prefix_error (last_symb_pos,
+ _("Unexpected end external tag sequence '%s' without begin tag pair."),
+ message);
+ throw new ParseError.ORPHAN_END (err_str);
+ } else {
+ tag_kind = TagKind.STOP_GLOBAL;
+ --child_level;
+ for (var i = 0; i < matched_tag_length; ++i) fifo_pop ();
+ }
+ } else if (in_child_params) {
+ count_branches ();
+ if (!in_child_params) {
+ tag_kind = TagKind.STOP_LOCAL;
+ tag = child_tag - links.length;
+ matched_tag_length = 1;
+ }
+ }
+ }
+ }
+ }
+
+ var subcontents = "";
+
+ switch (tag_kind) {
+ case TagKind.NONE:
+ fifo_pop ();
+
+ /* without end pair */
+ if (fifo_peek_head ().token == TokenType.EOF
+ && (child_tag != 0 || child_level != 0)) {
+ assert (child_tag != 0 && child_level != 0);
+ if (child_tag < links.length)
+ message = string.joinv (null, links.index (child_tag).begin);
+ else
+ message = string.joinv (null, group.index (child_tag - links.length).begin);
+ /// Translators: please leave the '%s':%d:%d construction without any changes.
+ prefix_error (subdoc_start,
+ _("Begin tag sequence '%s':%d:%d without end tag pair."),
+ message, subdoc_start.line + 1, subdoc_start.pos + 1);
+ throw new ParseError.ORPHAN_BEGIN (err_str);
+ }
+ break;
+
+ case TagKind.START_LOCAL:
+ var tag_left_abspos = fifo_peek_head ().abspos;
+ var matched_tag_abspos_right = fifo_peek_nth (matched_tag_length - 1).abspos
+ + fifo_peek_nth (matched_tag_length - 1).length;
+ var matched_tag_line = fifo_peek_head ().line;
+ var matched_tag_pos = fifo_peek_head ().pos;
+ for (var i = 0; i < matched_tag_length; ++i) fifo_pop ();
+
+ if (child_tag != 0) { // inside local tags
+ assert (child_level != 0);
+ ++child_level;
+ } else if (child_level == 0) { // outside local tags
+ assert (child_tag == 0);
+ subcontents = contents[subdoc_start.abspos:tag_left_abspos];
+
+ var update_subdoc_start = true;
+
+ switch (tag) {
+ case TableTagType.CAPTION:
+ in_caption = true;
+ local_count_branches (tag);
+ break;
+
+ case TableTagType.ENDFIRSTHEAD:
+ end_subtable (table, TableTagType.ENDFIRSTHEAD, tag_left_abspos);
+ break;
+
+ case TableTagType.ENDHEAD:
+ end_subtable (table, TableTagType.ENDHEAD, tag_left_abspos);
+ break;
+
+ case TableTagType.ENDFOOT:
+ end_subtable (table, TableTagType.ENDFOOT, tag_left_abspos);
+ break;
+
+ case TableTagType.ENDLASTFOOT:
+ end_subtable (table, TableTagType.ENDLASTFOOT, tag_left_abspos);
+ break;
+
+ case TableTagType.TOPRULE:
+ case TableTagType.MIDRULE:
+ case TableTagType.BOTTOMRULE:
+ case TableTagType.HLINE:
+ if (tag == TableTagType.TOPRULE
+ || tag == TableTagType.MIDRULE
+ || tag == TableTagType.BOTTOMRULE)
+ table.style = AddSpaces.Style.FORMAL;
+
+ switch (lines_type) {
+ case Row.LinesType.CLINES:
+ clines = new List ();
+ break;
+ case Row.LinesType.HLINE:
+ lines_to_last_row ();
+ break;
+ default:
+ break;
+ }
+ lines_type = Row.LinesType.HLINE;
+ ++nhlines;
+
+ row_abs_pos = matched_tag_abspos_right;
+ break;
+
+ case TableTagType.DBLBACKSLASHES:
+ case TableTagType.TABULARNEWLINE:
+ if (tag == TableTagType.DBLBACKSLASHES) {
+ var row_length = row.size;
+
+ var col_param = "";
+ if (row_length < table.params.size)
+ col_param = (table.params.get (row_length) as ColParam).align;
+ if (col_param != ""
+ && (col_param.index_of_char ('p') != -1
+ || col_param.index_of_char ('b') != -1
+ || col_param.index_of_char ('m') != -1)) {
+ update_subdoc_start = false;
+ break;
+ }
+ }
+
+ if (!process_tabularnewline (tag, tag_left_abspos, subcontents,
+ matched_tag_abspos_right)) {
+ throw new ParseError.SUBDOC (err_str);
+ }
+ break;
+
+ case TableTagType.AMPERSAND:
+ if (add_cell (subcontents) == TokenType.ERROR)
+ throw new ParseError.SUBDOC (err_str);
+ break;
+
+ default:
+ /* do nothing */
+ local_count_branches (tag);
+ break;
+ }
+
+ if (update_subdoc_start) {
+ subdoc_start.abspos = matched_tag_abspos_right;
+ subdoc_start.line = matched_tag_line;
+ subdoc_start.pos = matched_tag_pos;
+ }
+ } else { // (!child_tag && child_level) - inside global tags
+ assert (tag_kind != 0 && child_level != 0);
+ if ((tag < links.length && links.index (tag).end.length != 0)
+ || (tag >= links.length && group.index (tag).end.length != 0)) // do not count NULL-end-tag objects
+ ++child_level;
+ }
+ break;
+
+ case TagKind.STOP_LOCAL:
+ var tag_left_abspos = fifo_peek_head ().abspos;
+ var matched_tag_abspos_right = fifo_peek_nth (matched_tag_length - 1).abspos
+ + fifo_peek_nth (matched_tag_length - 1).length;
+ var matched_tag_line = fifo_peek_head ().line;
+ var matched_tag_pos = fifo_peek_head ().pos;
+ if (group.index (tag).end.length == 0)
+ ++tag_left_abspos; // '}' ']' is a part of NULL-end-object contents
+ for (var i = 0; i < matched_tag_length; ++i) fifo_pop ();
+
+ /* without begin pair */
+ if (child_tag == 0 || child_level == 0) {
+ assert (child_tag == 0 && child_level == 0);
+ message = string.joinv (null, group.index (tag).end);
+ /// Translators: please leave the '%s' construction without any changes.
+ prefix_error (last_symb_pos,
+ _(": Unexpected end tag sequence '%s' without begin tag pair."),
+ message);
+ throw new ParseError.ORPHAN_END (err_str);
+ } else if (tag + links.length == child_tag) {
+ assert (child_level != 0);
+ --child_level;
+
+ if (child_level == 0) {
+ child_tag = 0;
+ subcontents = contents[subdoc_start.abspos:tag_left_abspos];
+
+ switch (tag) {
+ case TableTagType.CMIDRULE:
+ case TableTagType.CLINE:
+ if (tag == TableTagType.CMIDRULE) table.style = AddSpaces.Style.FORMAL;
+
+ /* check is \cline's subcontents match {number-number} */
+ if (Regex.match_simple ("^\\{[0-9]+-[0-9]+\\}$", subcontents)) {
+ if (Row.LinesType.CLINES != lines_type)
+ lines_to_last_row ();
+ lines_type = Row.LinesType.CLINES;
+ var cline_begin = int.parse (subcontents.offset (1)) - 1;
+ var cline_end = int.parse (subcontents.offset (
+ subcontents.index_of_char ('-') + 1)) - 1;
+ while (clines.length () < cline_begin)
+ clines.append (0);
+ while (clines.length () <= cline_end)
+ clines.append (1);
+ } else {
+ prefix_error (subdoc_start,
+ _("\\cline parameters doesn't match {number-number} regexp."));
+ throw new ParseError.SUBDOC (err_str);
+ }
+ break;
+
+ case TableTagType.DBLBACKSLASHES:
+ case TableTagType.TABULARNEWLINE:
+ if (subcontents != "") {
+ var tmp = subcontents.compress ();
+ row.bottom = new AddSpace.with_params (tmp[1:-1]);
+ }
+
+ subtable.add (row, Row.OpLineStyle.DEFAULT);
+ row = new Row ();
+ break;
+
+ case TableTagType.NOALIGN:
+ process_spaces (Row.Style.DEFAULT, subcontents);
+ break;
+
+ case TableTagType.ADDLINESPACE:
+ process_spaces (Row.Style.FORMAL_REST, subcontents);
+ break;
+
+ default:
+ /* do nothing */
+ break;
+ }
+
+ subdoc_start.abspos = matched_tag_abspos_right;
+ subdoc_start.line = matched_tag_line;
+ subdoc_start.pos = matched_tag_pos;
+ }
+ } else { // (child_tag && child_level && tag+scanner->priv->nlinks != scanner->priv->child_tag) - global end
+ assert (child_level == 0);
+
+ --child_level;
+ }
+
+ break;
+
+ default:
+ break;
+ }
+
+ /* end of tabular */
+ if (fifo_peek_head ().token == TokenType.EOF) {
+ subtable.after = contents.offset (subdoc_start.abspos).compress ();
+
+ lines_to_last_row ();
+
+ spaces_to_last_row ();
+
+ table.table = subtable;
+ subtable = new Subtable ();
+ }
+
+ return TokenType.NONE;
+ }
+
+ }
+ }
+}
diff --git a/src/Tabular.vala b/src/Tabular.vala
index e69de29..10cb847 100644
--- a/src/Tabular.vala
+++ b/src/Tabular.vala
@@ -0,0 +1,63 @@
+namespace LAview {
+
+ namespace Table {
+
+ /**
+ * Tabular in the LaTeX document.
+ *
+ * Specified by '\begin{tabular}' tag in the LaTeX code.
+ */
+ public class Tabular : ATable {
+
+ /**
+ * Constructs a new //Tabular// with default parameters.
+ */
+ public Tabular () {}
+
+ /**
+ * Width of the table.
+ *
+ * Possible values: [0-9]+(\.[0-9]+)?{bp,cc,cm,dd,em,ex,in,mm,pc,pt,sp,
+ * \textwidth,\columnwidth,\pagewidth,\linewidth,
+ * \textheight,\columnheight,\pageheight,\lineheight}.
+ */
+ public string width = "";
+
+ /**
+ * Gets a copy of the //Tabular//.
+ */
+ public override IDoc copy () {
+ var clone = base.copy () as Tabular;
+ clone.width = width;
+ return clone;
+ }
+
+ /**
+ * Generates LaTeX string for the //Tabular//.
+ */
+ public override string generate () {
+ var s = new StringBuilder ();
+
+ if (params.size != 0) {
+ s.append_printf ("\\begin{tabular%s}", width != "" ? "*" : "");
+ if (width != "")
+ s.append_printf ("{%s}", width);
+ else if (align != '\0')
+ s.append_printf ("[%c]", align);
+
+ s.append_c ('{');
+ s.append (params.generate ());
+ s.append_c ('}');
+
+ table.style = style;
+
+ s.append (table.generate ());
+
+ s.append_printf ("\\end{tabular%s}", width != "" ? "*" : "");
+ }
+
+ return s.str;
+ }
+ }
+ }
+}
diff --git a/src/TabularParser.vala b/src/TabularParser.vala
new file mode 100644
index 0000000..d11061e
--- /dev/null
+++ b/src/TabularParser.vala
@@ -0,0 +1,137 @@
+namespace LAview {
+
+ namespace Parsers {
+
+ using Table;
+
+ class TabularParser : TableParser {
+
+ public TabularParser (Array links) {
+ base (links);
+ }
+
+ public override IDoc parse (string contents, size_t line, long position) throws ParseError {
+
+ /* create empty tabular */
+ var tabular = new Tabular ();
+
+ /* set TeX tabular contents */
+ this.contents = contents;
+ this.line = line;
+ this.position = position;
+
+ /* get parameters string */
+ var PARAM_REGEX_FIGBRANCHES = "\\{[^{}]*([^{}]*\\{[^{}]*\\}[^{}]*)*\\}";
+ var param_regex = "^(\\[(t|b)])?" + PARAM_REGEX_FIGBRANCHES + "("
+ + PARAM_REGEX_FIGBRANCHES + ")?";
+
+ string params = "";
+ uint start_pos = 0, stop_pos = 0;
+
+ try {
+ var regex = new Regex (param_regex);
+
+ MatchInfo match_info;
+ regex.match (contents, 0, out match_info);
+
+ if (match_info.matches ()) {
+ match_info.fetch_pos (0, out start_pos, out stop_pos);
+ params = match_info.fetch (0);
+ } else {
+ /// Translators: please leave the '%s' construction without any changes.
+ prefix_error (subdoc_start,
+ _("Incorrect tabular parameters doesn't match '%s' regexp."),
+ param_regex);
+ throw new ParseError.SUBDOC (err_str);
+ }
+ } catch (RegexError e) {}
+
+ /* tabular align: [t], [b] */
+ if (params[0] == '[') {
+ tabular.align = params[1];
+ params = params.offset (3);
+
+ }
+
+ /* width */
+ try {
+ if (Regex.match_simple (PARAM_REGEX_FIGBRANCHES + PARAM_REGEX_FIGBRANCHES, params)) {
+ var regex = new Regex (PARAM_REGEX_FIGBRANCHES);
+ MatchInfo match_info;
+ regex.match (params, 0, out match_info);
+ match_info.fetch_pos (0, out start_pos, out stop_pos);
+ var tmps = match_info.fetch (0);
+ tmps = tmps[1:tmps.length - 1];
+ tmps = tmps.compress ();
+ tabular.width = tmps;
+ params = params.offset (stop_pos);
+ }
+ } catch (RegexError e) {}
+
+ /* remove bound '{' '}' from params */
+ params = params[1:params.length - 1];
+ var col_params = new ColParams ();
+
+ /* match reversed params so '|' will be snapped to the right column */
+ try {
+ var regex = new Regex ("("
+ + "\\|*}[^{}]+{(p\\|*|m\\|*|b\\|*)(}[^{}]+{>(\\|+$|\\||)|\\|)?"
+ + "|"
+ + "\\|*(r|c|l)(}[^{}]+{@(p\\|*|m\\|*|b\\|*) (r|c|l))?(\\|+$|\\||)"
+ + ")");
+ params = params.reverse ();
+ MatchInfo match_info;
+ regex.match_full (params, -1, 0, 0, out match_info);
+ while (match_info.matches ()) {
+ var col_param = new ColParam.with_params (0, "", 0);
+ var word = match_info.fetch (0).reverse ().compress ();
+ int nllines, nrlines;
+ for (nllines = 0; '|' == word[nllines]; ++nllines);
+ for (nrlines = word.length - 1; nrlines != 0 && '|' == word[nrlines]; --nrlines);
+ var wlen = word.length;
+ word = word[0:nrlines + 1];
+ col_param.align = word.offset (nllines);
+ col_param.nllines = nllines;
+ col_param.nrlines = wlen - 1 - nrlines;
+ col_params.insert (0, col_param);
+ match_info.next ();
+ }
+ } catch (RegexError e) {}
+
+ /* === Parsing subtables === */
+ tabular.params = col_params;
+
+ /* set TeX document contents */
+ this.contents = contents.offset (stop_pos);
+
+ /* feed in the text */
+ scanner.input_text (this.contents, this.contents.length);
+
+ row_abs_pos = 0;
+ row = new Row ();
+ subtable = new Subtable ();
+ clines = new List ();
+ cell_abs_pos = 0;
+
+ TokenType expected_token = TokenType.NONE;
+
+ /* scanning loop, we scan the input until it's end is reached,
+ * the self encountered a lexing err, or our sub routine came
+ * across invalid syntax
+ */
+ do {
+ expected_token = scan_tex_symbol (tabular);
+
+ } while (expected_token == TokenType.NONE
+ && fifo_peek_head ().token != TokenType.EOF
+ && fifo_peek_head ().token != TokenType.ERROR);
+
+ /* give an err message upon syntax errors */
+ if (expected_token == TokenType.ERROR)
+ scanner.unexp_token (expected_token, null, "symbol", null, null, true);
+
+ return tabular;
+ }
+ }
+ }
+}
diff --git a/src/TabularScanner.vala b/src/TabularScanner.vala
deleted file mode 100644
index e69de29..0000000
diff --git a/src/Text.vala b/src/Text.vala
index e69de29..6bb1995 100644
--- a/src/Text.vala
+++ b/src/Text.vala
@@ -0,0 +1,36 @@
+namespace LAview {
+
+ /**
+ * Text in the LaTeX document.
+ */
+ public class Text : ADoc {
+
+ /**
+ * Plain text in UTF-8 string.
+ */
+ public string text = "";
+
+ /**
+ * Constructs a new //Text//.
+ *
+ * @param text UTF-8 string.
+ */
+ public Text (string text) {
+ this.text = text;
+ }
+
+ /**
+ * Gets a copy of the //Text//.
+ */
+ public override IDoc copy () {
+ return new Text (text);
+ }
+
+ /**
+ * Generates LaTeX string for the //Text//.
+ */
+ public override string generate () {
+ return text;
+ }
+ }
+}
diff --git a/src/TextParser.vala b/src/TextParser.vala
new file mode 100644
index 0000000..3d5e224
--- /dev/null
+++ b/src/TextParser.vala
@@ -0,0 +1,21 @@
+namespace LAview {
+
+ namespace Parsers {
+
+ class TextParser : Parser {
+
+ public TextParser (Array links) {
+ base (links);
+ }
+
+ public override IDoc parse (string contents, size_t line, long position) throws ParseError {
+
+ this.contents = contents;
+ this.line = line;
+ this.position = position;
+
+ return new Text (contents.compress ());
+ }
+ }
+ }
+}
diff --git a/src/TextScanner.vala b/src/TextScanner.vala
deleted file mode 100644
index e69de29..0000000
diff --git a/src/gettext-config.h.in b/src/gettext-config.h.in
new file mode 100644
index 0000000..e88d6ba
--- /dev/null
+++ b/src/gettext-config.h.in
@@ -0,0 +1,11 @@
+#ifndef LAVIEW_LATEX_STRUCT_H
+#define LAVIEW_LATEX_STRUCT_H
+
+#define GETTEXT_PACKAGE "laview-latex-struct-@LAVIEW_LATEX_STRUCT_VERSION_MAJOR@"
+#include
+
+#ifdef WIN32
+#define _(String) dgettext (GETTEXT_PACKAGE, String)
+#endif
+
+#endif // LAVIEW_LATEX_STRUCT_H
diff --git a/src/main.vala b/src/main.vala
index 82ff429..1f13b86 100644
--- a/src/main.vala
+++ b/src/main.vala
@@ -1,15 +1,99 @@
+/**
+ * LaTeX view.
+ *
+ * Public system of data view in the LaTeX format.
+ */
namespace LAview {
- public errordomain ParseError {
- UNEXPECTED_SYMBOL,
- }
- public void parse(string text) throws ParseError {
- print("TeX successfully parsed!\n");
- if (0 != 0)
- throw new ParseError.UNEXPECTED_SYMBOL("Parsing error!");
- }
+ string dos2unix (string dos_string) {
+ var unistring = new StringBuilder ();
- public string plain_to_tex(string text) {
- return "Parsed text here...";
+ for (var i = 0; dos_string[i] != '\0'; ) {
+ if ('\r' == dos_string[i]) {
+ switch (dos_string[i + 1]) {
+ case '\r':
+ if ('\n' == dos_string[i + 2])
+ i += 3;
+ break;
+
+ case '\n':
+ i += 2;
+ break;
+
+ default:
+ ++i;
+ break;
+ }
+
+ unistring.append_c ('\n');
+ } else {
+ unistring.append_c (dos_string[i++]);
+ }
+ }
+
+ return unistring.str;
+ }
+
+ /**
+ * Parses LaTeX plain text from UTF-8 string.
+ *
+ * @throws ParseError any error when parsing.
+ */
+ public Glob parse(string text) throws Parsers.ParseError {
+
+ /* escaping TeX document */
+ var escaped_text = text.escape (" \n\r\t");
+
+ /* line breaks: dos -> unix */
+ var u_escaped_text = dos2unix (escaped_text);
+
+ /* TeX scanner initialization */
+ var group = new Parsers.ParserFactory ();
+ var parser = new Parsers.GlobParser (group.group);
+
+ /* parse TeX */
+ var doc = parser.parse (u_escaped_text, 0, 0);
+
+ return doc as Glob;
+ }
+
+ /**
+ * Converts plain text string to LaTeX string.
+ */
+ public string plain_to_tex(string text) {
+ var str = new StringBuilder ();
+
+ for (var i = 0; text[i] != '\0'; ++i) {
+ switch (text[i]) {
+ case '$':
+ case '&':
+ case '%':
+ case '#':
+ case '_':
+ case '{':
+ case '}':
+ str.append_c ('\\');
+ str.append_c (text[i]);
+ break;
+
+ case '\\':
+ str.append ("\\textbackslash ");
+ break;
+
+ case '~':
+ str.append ("\\~{}");
+ break;
+
+ case '^':
+ str.append ("\\^{}");
+ break;
+
+ default:
+ str.append_c (text[i]);
+ break;
+ }
+ }
+
+ return str.str;
}
}
diff --git a/src/vala_unsupported.c b/src/vala_unsupported.c
new file mode 100644
index 0000000..5f69d31
--- /dev/null
+++ b/src/vala_unsupported.c
@@ -0,0 +1,34 @@
+#if defined(_WIN32)
+#include
+#endif
+
+#include "gettext-config.h"
+
+#if defined(_WIN32)
+BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
+#elif defined (__GNUC__)
+void __attribute__ ((constructor)) laview_latex_struct_load (void)
+#endif
+{
+#if defined(_WIN32)
+ gchar dllPath[FILENAME_MAX],
+ *dllDir,
+ *localePath;
+
+ GetModuleFileName (hInstance, dllPath, FILENAME_MAX);
+ dllDir = g_path_get_dirname (dllPath);
+ localePath = g_build_filename (dllDir, "../share/locale", NULL);
+ g_free (dllDir);
+ bindtextdomain (GETTEXT_PACKAGE, localePath);
+ g_free (localePath);
+#endif
+
+#if (!GLIB_CHECK_VERSION (2, 36, 0))
+ g_type_init ();
+
+ (void) dwReason;
+ (void) lpReserved;
+ return TRUE;
+#endif
+}
+
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644
index 0000000..6fac8b4
--- /dev/null
+++ b/test/CMakeLists.txt
@@ -0,0 +1,390 @@
+INCLUDE (FindVala)
+INCLUDE (UseVala)
+
+FIND_PACKAGE (PkgConfig REQUIRED)
+
+PKG_CHECK_MODULES (GEE REQUIRED gee-0.8)
+INCLUDE_DIRECTORIES (${GEE_INCLUDE_DIRS})
+
+INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}")
+INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}/src")
+
+# add the executable
+FILE (GLOB_RECURSE ParseTestSources RELATIVE ${CMAKE_SOURCE_DIR}/test ParseTest.vala)
+VALA_PRECOMPILE (ParseTest_C ${ParseTestSources}
+ PACKAGES gee-0.8 posix
+ OPTIONS --thread ${VALA_DEBUG}
+ CUSTOM_VAPIS ${PROJECT_BINARY_DIR}/src/laview-latex-struct-${MAJOR}.vapi
+ GENERATE_VAPI
+ GENERATE_HEADER
+ )
+ADD_EXECUTABLE (ParseTest ${ParseTest_C})
+TARGET_LINK_LIBRARIES (ParseTest laview-latex-struct ${GEE_LIBRARIES})
+
+# add ltable_test executable
+FILE (GLOB_RECURSE LTableTestSources RELATIVE ${CMAKE_SOURCE_DIR}/test LTableTest.vala)
+VALA_PRECOMPILE (LTableTest_C ${LTableTestSources}
+ PACKAGES gee-0.8 posix
+ OPTIONS --thread ${VALA_DEBUG}
+ CUSTOM_VAPIS ${PROJECT_BINARY_DIR}/src/laview-latex-struct-${MAJOR}.vapi
+ GENERATE_VAPI
+ GENERATE_HEADER
+ )
+ADD_EXECUTABLE (LTableTest ${LTableTest_C})
+TARGET_LINK_LIBRARIES (LTableTest laview-latex-struct ${GEE_LIBRARIES})
+
+# parsing test macro
+MACRO (do_parse_test testname table_path etalon_path regexp)
+ IF ("${etalon_path}" STREQUAL "")
+ SET (extra_args "")
+ ELSE ()
+ SET (extra_args --etalon ${etalon_path})
+ ENDIF ()
+ ADD_TEST (ParseTest-${testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ParseTest --table ${table_path} ${extra_args})
+ SET_TESTS_PROPERTIES (ParseTest-${testname}
+ PROPERTIES PASS_REGULAR_EXPRESSION ${regexp}
+ FAIL_REGULAR_EXPRESSION "CRITICAL;WARNING")
+ENDMACRO (do_parse_test)
+
+# test throttle.tex
+do_parse_test (throttleList ${PROJECT_SOURCE_DIR}/test/tex/throttle.tex ""
+"list all objects
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableTabular
+LAviewText
+end of objects
+
+")
+
+# test throttle.tex
+do_parse_test (includegraphicsWalk ${PROJECT_SOURCE_DIR}/test/tex/includegraphics.tex ""
+"Walk through all objects
+LAviewText
+LAviewGraphics
+ width=0.000000. height=3.000000pt. path=174.
+ gen..=.includegraphics.height=3.000000pt.angle=25.scale=3.{174}
+resized gen.. = .includegraphics.width=0.500000pt.height=6.000000dd.angle=25.scale=3.{174}
+LAviewText
+LAviewGraphics
+ width=12.000000cm. height=25.000000cm. path=151.
+ gen..=.includegraphics.width=12.000000cm.height=25.000000cm.{151}
+resized gen.. = .includegraphics.width=0.500000pt.height=50.000000dd.{151}
+LAviewText
+end of objects
+
+")
+
+# test throttle.tex
+do_parse_test (throttleCmp ${PROJECT_SOURCE_DIR}/test/tex/throttle.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test throttle.tex
+do_parse_test (throttleErr1 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err1.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:33:15: : Unexpected end tag sequence '..end{longtable}' without begin tag pair.
+.end{longtable}
+ .")
+
+# test throttle.tex
+do_parse_test (throttleErr2 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err2.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:33:1: Begin tag sequence '..begin{longtable}' without end tag pair.
+.begin{longtable}
+.
+")
+
+# test throttle.tex
+do_parse_test (throttleErr3 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err3.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:34:1: Error parsing subdoc.
+.begin{longtable}
+.
+LAviewParsersLongtableParser:55:46: Stop external tag sequence '..end{longtable}' without begin tag pair.
+.multicolumn{2}{|l|}{ЗМГ} & & .end{longtable} & & & & .tabularnewline
+ .
+")
+
+# test throttle.tex
+do_parse_test (throttleErr4 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err4.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:33:13: : Unexpected end tag sequence '..end{tabular}' without begin tag pair.
+.end{tabular}
+ .")
+
+# test throttle.tex
+do_parse_test (throttleErr5 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err5.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:33:1: Begin tag sequence '..begin{tabular}' without end tag pair.
+.begin{tabular}
+.
+")
+
+# test throttle.tex
+do_parse_test (throttleErr6 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err6.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:34:1: Error parsing subdoc.
+.begin{tabular}
+.
+LAviewParsersTabularParser:55:46: Stop external tag sequence '..end{tabular}' without begin tag pair.
+.multicolumn{2}{|l|}{ЗМГ} & & .end{tabular} & & & & .tabularnewline
+ .
+")
+
+# test formular.tex
+do_parse_test (formularList ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ""
+"list all objects
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+end of objects
+
+")
+
+# test formular.tex
+do_parse_test (formularWalk ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ""
+"Walk through all objects
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+end of objects
+
+")
+
+# test formular.tex
+do_parse_test (formularCmp ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test formular.tex
+do_parse_test (formularErr1 ${PROJECT_SOURCE_DIR}/test/tex/formular_err1.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:192:15: : Unexpected end tag sequence '..end{longtable}' without begin tag pair.
+.end{longtable}
+ .")
+
+# test formular.tex
+do_parse_test (formularErr2 ${PROJECT_SOURCE_DIR}/test/tex/formular_err2.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:44:1: Begin tag sequence '..begin{longtable}' without end tag pair.
+.begin{longtable}
+.
+")
+
+# test for caption in all_subtables.tex
+do_parse_test (captionTest ${PROJECT_SOURCE_DIR}/test/tex/all_subtables.tex ""
+".begin{document}
+.begin{longtable}{.c.c.}
+.caption{Caption of the table}
+")
+
+# test all_subtables.tex
+do_parse_test (all_subtablesCmp ${PROJECT_SOURCE_DIR}/test/tex/all_subtables.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test all_subtables.tex
+do_parse_test (linesCmp ${PROJECT_SOURCE_DIR}/test/tex/lines.tex ${PROJECT_SOURCE_DIR}/test/tex/lines.etalon.tex
+"Original and generated text are EQUAL .-.")
+
+# test ltable_embedded.tex
+do_parse_test (ltable_embedded ${PROJECT_SOURCE_DIR}/test/tex/ltable_embedded.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test ltable_double_embedded.tex
+do_parse_test (ltable_double_embedded ${PROJECT_SOURCE_DIR}/test/tex/ltable_double_embedded.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test throttle_VK2500.tex
+do_parse_test (throttle_VK2500Cmp ${PROJECT_SOURCE_DIR}/test/tex/throttle_VK2500.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test throttle_VK2500.tex
+do_parse_test (throttle_VK2500PSCmp ${PROJECT_SOURCE_DIR}/test/tex/throttle_VK2500PS.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test throttle_VK2500_dos_newlines_.tex
+do_parse_test (throttle_VK2500PS_dos_newlines_ListWalk ${PROJECT_SOURCE_DIR}/test/tex/throttle_VK2500PS_dos_newlines.tex ""
+"list all objects
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+end of objects
+
+Walk through all objects
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+end of objects
+")
+
+# test graph_in_ltable.tex
+do_parse_test (graph_in_ltable ${PROJECT_SOURCE_DIR}/test/tex/graph_in_ltable.tex ""
+"
+list all objects
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableLongtable
+ LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+ LAviewGraphics
+ LAviewTableLongtable
+LAviewText
+end of objects
+
+Walk through all objects
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+end of objects
+")
+
+# test ltable_square_arg.tex
+do_parse_test (ltable_square_arg ${PROJECT_SOURCE_DIR}/test/tex/ltable_square_arg.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test table_in_table.tex
+do_parse_test (table_in_table ${PROJECT_SOURCE_DIR}/test/tex/table_in_table.tex ""
+"
+list all objects
+")
+
+# test unary_quotes.tex
+do_parse_test (unary_quotes ${PROJECT_SOURCE_DIR}/test/tex/unary_quotes.tex ""
+"
+list all objects
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+end of objects
+
+Walk through all objects
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+end of objects
+")
+
+# test back_slashes_in_a_table.tex
+do_parse_test (back_slashes_in_a_table ${PROJECT_SOURCE_DIR}/test/tex/back_slashes_in_a_table.tex ${PROJECT_SOURCE_DIR}/test/tex/back_slashes_in_a_table.etalon.tex
+"Original and generated text are EQUAL .-.")
+
+# ltable_test macro
+macro (ltable_test testname tex_path1 tex_path2 operation regexp)
+ add_test (ltable_test-${testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/LTableTest ${tex_path1} ${tex_path2} ${operation})
+set_tests_properties (ltable_test-${testname}
+ PROPERTIES PASS_REGULAR_EXPRESSION ${regexp}
+ FAIL_REGULAR_EXPRESSION "CRITICAL;WARNING")
+endmacro (ltable_test)
+
+# ltable_test rm0row
+ltable_test (rm0row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm0row.tex rm0row
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test rm1row
+ltable_test (rm1row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm1row.tex rm1row
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test rm1000row
+ltable_test (rm1000row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm1000row.tex rm1000row
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test rm_last_row
+ltable_test (rm_last_row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm_last_row.tex rm_last_row
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_0_0
+ltable_test (clone_0_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_0.tex clone_0_0
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_0_1
+ltable_test (clone_0_1 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_1.tex clone_0_1
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_1_0
+ltable_test (clone_1_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_1_0.tex clone_1_0
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_0_last
+ltable_test (clone_0_last ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_last.tex clone_0_last
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_last_0
+ltable_test (clone_last_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_last_0.tex clone_last_0
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_0_lastp1
+ltable_test (clone_0_lastp1 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_lastp1.tex clone_0_lastp1
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_lastp1_0
+ltable_test (clone_lastp1_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_lastp1_0.tex clone_lastp1_0
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_0_1000
+ltable_test (clone_0_1000 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_1000.tex clone_0_1000
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_1000_0
+ltable_test (clone_1000_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_1000_0.tex clone_1000_0
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test append_row0
+ltable_test (append_row0 ${PROJECT_SOURCE_DIR}/test/tex/table_rows.tex ${PROJECT_SOURCE_DIR}/test/tex/table_rows.etalon.tex append_row0
+"Etalon and generated text are EQUAL .-.")
+
+# enable testing
+ENABLE_TESTING ()
diff --git a/test/LTableTest.vala b/test/LTableTest.vala
new file mode 100644
index 0000000..2e25d86
--- /dev/null
+++ b/test/LTableTest.vala
@@ -0,0 +1,122 @@
+using LAview;
+
+public class Main : Object {
+ public static int main (string[] args) {
+
+ Intl.setlocale (LocaleCategory.ALL, "");
+
+ assert (args.length == 4 || args.length == 5);
+
+ /* load file contents */
+ string contents;
+ try {
+ FileUtils.get_contents (args[1], out contents);
+ } catch (FileError e) {
+ stderr.printf ("error: %s\n", e.message);
+ return -1;
+ }
+ assert (contents != null && contents != "");
+
+ /* load etalon */
+ string generated_etalon;
+ try {
+ FileUtils.get_contents (args[2], out generated_etalon);
+ } catch (FileError e) {
+ stderr.printf ("error: %s\n", e.message);
+ return -1;
+ }
+ assert (generated_etalon != null && generated_etalon != "");
+
+ /* parse TeX */
+ Glob doc;
+ try {
+ doc = LAview.parse (contents);
+ stdout.printf ("TeX document successfully parsed\n");
+
+ } catch (Parsers.ParseError e) {
+ stderr.printf ("error: %s\n", e.message);
+ return -1;
+ }
+
+ /* Perform several col/row operations */
+ stdout.printf ("Walk through all objects\n");
+
+ foreach (var subdoc in doc) {
+ stdout.printf ("%s\n", subdoc.get_type ().name ());
+
+ if (subdoc.get_type ().name () == "LAviewTableLongtable") {
+ var ltable = subdoc as Table.Longtable;
+
+ if (args[3] == "rm0row") {
+ ltable.remove_col (0);
+ } else if (args[3] == "rm1row") {
+ ltable.remove_col (1);
+ } else if (args[3] == "rm1000row") {
+ ltable.remove_col (1000);
+ } else if (args[3] == "rm_last_row") {
+ ltable.remove_col (ltable.params.size - 1);
+ } else if (args[3] == "clone_0_0") {
+ ltable.clone_col (0, 0, true);
+ } else if (args[3] == "clone_0_1") {
+ ltable.clone_col (0, 0, false);
+ } else if (args[3] == "clone_1_0") {
+ ltable.clone_col (1, 0, true);
+ } else if (args[3] == "clone_0_last") {
+ ltable.clone_col (0, ltable.params.size - 1, false);
+ } else if (args[3] == "clone_last_0") {
+ ltable.clone_col (ltable.params.size - 1, 0, true);
+ } else if (args[3] == "clone_0_lastp1") {
+ ltable.clone_col (0, ltable.params.size, false);
+ } else if (args[3] == "clone_lastp1_0") {
+ ltable.clone_col (ltable.params.size, 0, true);
+ } else if (args[3] == "clone_0_1000") {
+ ltable.clone_col (0, 1000, false);
+ } else if (args[3] == "clone_1000_0") {
+ ltable.clone_col (1000, 0, true);
+ } else if (args[3] == "append_row0") {
+ var table = ltable.table;
+ table.add (table.get (0).copy () as Table.Row);
+ } else {
+ stdout.printf ("Incorrect operation '%s' specified.\n", args[3]);
+ return -1;
+ }
+ } else if (subdoc.get_type ().name () == "LAviewTableTabular") {
+ if (args[3] == "append_row0") {
+ var tabular = subdoc as Table.Tabular;
+ var table = tabular.table;
+ table.add (table.get (0).copy () as Table.Row);
+ }
+ }
+ }
+
+ /* generate plain-TeX document */
+ var generated = doc.generate ();
+
+ if (args[2] != null) {
+ try {
+ FileUtils.get_contents (args[2], out contents);
+ } catch (FileError e) {
+ stderr.printf ("error: %s\n", e.message);
+ return -1;
+ }
+ }
+
+ if (contents == generated)
+ stdout.printf ("Etalon and generated text are EQUAL ;-)\n");
+ else
+ stdout.printf ("Etalon and generated text are NOT EQUAL ;-(\n");
+
+ stdout.printf ("--- Generated plain-TeX (generated) ---\n%s", generated);
+
+ if (args[4] != null ) {
+ try {
+ FileUtils.set_contents (args[4], generated);
+ } catch (FileError e) {
+ stderr.printf ("error: %s\n", e.message);
+ return -1;
+ }
+ }
+
+ return 0;
+ }
+}
diff --git a/test/ParseTest.vala b/test/ParseTest.vala
new file mode 100644
index 0000000..b4283a0
--- /dev/null
+++ b/test/ParseTest.vala
@@ -0,0 +1,141 @@
+using LAview;
+
+public class Main : Object {
+
+ static string fname_table = "";
+ static string fname_etalon = "";
+ static string fname_write = "";
+
+ const OptionEntry [] options = {
+ { "table", 't', 0, OptionArg.FILENAME, ref fname_table, "File with a table", null },
+ { "etalon", 'e', 0, OptionArg.FILENAME, ref fname_etalon, "File with etalon table", null },
+ { "write", 'w', 0, OptionArg.FILENAME, ref fname_write, "File to write", null },
+ { null }
+ };
+
+ public static int main (string[] args) {
+
+ Intl.setlocale (LocaleCategory.ALL, "");
+
+ /* commandline arguments processing */
+ try {
+ var opt_context = new OptionContext ("- tests LaTeX parser");
+ opt_context.set_help_enabled (true);
+ opt_context.add_main_entries (options, null);
+ opt_context.parse (ref args);
+ } catch (OptionError e) {
+ stderr.printf ("error: %s\n", e.message);
+ stderr.printf ("Run '%s --help' to see a full list of available command line options.\n", args[0]);
+ return -1;
+ }
+
+ /* read table */
+ if (fname_table == null) {
+ stderr.printf ("Specify file with a table or read help (%s --help)", args[0]);
+ return -1;
+ }
+
+ /* load file contents */
+ string contents;
+ try {
+ FileUtils.get_contents (fname_table, out contents);
+ } catch (FileError e) {
+ stderr.printf ("error: %s\n", e.message);
+ return -1;
+ }
+
+ /* parse TeX */
+ Glob doc;
+ try {
+ doc = LAview.parse (contents);
+ stdout.printf ("TeX document successfully parsed\n");
+
+ } catch (Parsers.ParseError e) {
+ stderr.printf ("Error parsing TeX document: %s\n", e.message);
+ return -1;
+ }
+
+ /* list all objects */
+ stdout.printf ("list all objects\n");
+ foreach (var subdoc in doc) {
+ stdout.printf ("%s\n", subdoc.get_type ().name ());
+
+ if (subdoc.get_type ().name () == "LAviewTableTabular"
+ || subdoc.get_type ().name () == "LAviewTableLongtable") {
+
+ unowned Table.Subtable subtable = null;
+
+ if (subdoc.get_type ().name () == "LAviewTableTabular")
+ subtable = (subdoc as Table.Tabular).table;
+ else
+ subtable = (subdoc as Table.Longtable).table;
+
+ foreach (var row in subtable) {
+ foreach (var cell in (row as Table.Row)) {
+ var glob = (cell as Table.Cell).contents;
+
+ foreach (var glob_subdoc in glob) {
+ if (glob_subdoc.get_type ().name () != "LAviewText") {
+ stdout.printf (" %s\n", glob_subdoc.get_type ().name ());
+ }
+ }
+ }
+ }
+ }
+ }
+ stdout.printf ("end of objects\n\n");
+
+ /* walk through all objects */
+ stdout.printf ("Walk through all objects\n");
+ foreach (var subdoc in doc) {
+ stdout.printf ("%s\n", subdoc.get_type ().name ());
+
+ if (subdoc.get_type ().name () == "LAviewGraphics") {
+ var graphics = subdoc as Graphics;
+ stdout.printf (" width=%f%s, height=%f%s, path=%s,\n gen()=%s\n",
+ graphics.width, graphics.width_unit, graphics.height, graphics.height_unit,
+ graphics.path, graphics.generate ());
+
+ graphics = graphics.copy () as Graphics;
+ graphics.width = 1;
+ graphics.width /= 2;
+ graphics.width_unit = "pt";
+ graphics.height *= 2;
+ graphics.height_unit = "dd";
+ stdout.printf ("resized gen() = %s\n", graphics.generate ());
+ }
+ }
+ stdout.printf ("end of objects\n\n");
+
+ /* generate plain-TeX document */
+ var generated = doc.generate ();
+
+ /* load etalon file */
+ if (fname_etalon != null) {
+ try {
+ FileUtils.get_contents (fname_etalon, out contents);
+ } catch (FileError e) {
+ stderr.printf ("error: %s\n", e.message);
+ return -1;
+ }
+ }
+
+ if (contents == generated)
+ stdout.printf ("Original and generated text are EQUAL ;-)\n");
+ else
+ stdout.printf ("Original and generated text are NOT EQUAL ;-(\n");
+
+ stdout.printf ("--- Generated plain-TeX (generated) ---\n%s", generated);
+
+ /* write to file */
+ if (fname_write != null )
+ try {
+ FileUtils.set_contents (fname_write, generated);
+ } catch (FileError e) {
+ stderr.printf ("error: %s\n", e.message);
+ return -1;
+ }
+
+ return 0;
+ }
+}
diff --git a/test/tex/151.bmp b/test/tex/151.bmp
new file mode 100644
index 0000000..985844e
Binary files /dev/null and b/test/tex/151.bmp differ
diff --git a/test/tex/174.jpg b/test/tex/174.jpg
new file mode 100644
index 0000000..f913414
Binary files /dev/null and b/test/tex/174.jpg differ
diff --git a/test/tex/CMakeLists.txt b/test/tex/CMakeLists.txt
new file mode 100644
index 0000000..3d847d4
--- /dev/null
+++ b/test/tex/CMakeLists.txt
@@ -0,0 +1,386 @@
+FIND_PACKAGE (PkgConfig REQUIRED)
+PKG_CHECK_MODULES (GLIB2 REQUIRED glib-2.0)
+PKG_CHECK_MODULES (GOBJECT2 REQUIRED gobject-2.0)
+
+INCLUDE_DIRECTORIES (${GLIB2_INCLUDE_DIRS} ${GOBJECT2_INCLUDE_DIRS})
+LINK_DIRECTORIES (${GLIB2_LIBRARY_DIRS} ${GOBJECT2_LIBRARY_DIRS})
+
+IF (CMAKE_COMPILER_IS_GNUCC)
+ ADD_DEFINITIONS (${GLIB2_CFLAGS_OTHER} ${GOBJECT2_CFLAGS_OTHER})
+ENDIF ()
+
+# add the executable
+ADD_EXECUTABLE (txr_parse_test txr_parse_test.c)
+TARGET_LINK_LIBRARIES (txr_parse_test txr-texparser ${GLIB2_LIBRARIES} ${GOBJECT2_LIBRARIES})
+
+# add ltable_test executable
+ADD_EXECUTABLE (ltable_test ltable_test.c)
+TARGET_LINK_LIBRARIES (ltable_test txr-texparser ${GLIB2_LIBRARIES} ${GOBJECT2_LIBRARIES})
+
+# add the install targets and files
+# INSTALL (TARGETS txr_parse_test ltable_test DESTINATION bin)
+
+# parsing test macro
+MACRO (do_parse_test testname table_path etalon_path regexp)
+ IF ("${etalon_path}" STREQUAL "")
+ SET (extra_args "")
+ ELSE ()
+ SET (extra_args --etalon ${etalon_path})
+ ENDIF ()
+ ADD_TEST (txr_parse_test-${testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/txr_parse_test --table ${table_path} ${extra_args})
+ SET_TESTS_PROPERTIES (txr_parse_test-${testname}
+ PROPERTIES PASS_REGULAR_EXPRESSION ${regexp}
+ FAIL_REGULAR_EXPRESSION "CRITICAL;WARNING")
+ENDMACRO (do_parse_test)
+
+# test throttle.tex
+do_parse_test (throttleList ${PROJECT_SOURCE_DIR}/test/throttle.tex ""
+"list all objects
+TXRText
+TXRLongtable
+TXRText
+TXRTabular
+TXRText
+TXRGraphics
+TXRText
+end of objects
+
+")
+
+# test throttle.tex
+do_parse_test (throttleWalk ${PROJECT_SOURCE_DIR}/test/throttle.tex ""
+"Walk through all objects
+TXRText
+TXRLongtable
+TXRText
+TXRTabular
+TXRText
+TXRGraphics
+ width=0.000000.null., height=0.000000.null., path=174,
+ gen..=.includegraphics., angle=25, scale=3,angle=70 , , .{174}
+resized gen.. = .includegraphics.angle=25,scale=3.{174}
+TXRText
+end of objects
+
+")
+
+# test throttle.tex
+do_parse_test (throttleCmp ${PROJECT_SOURCE_DIR}/test/throttle.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test throttle.tex
+do_parse_test (throttleErr1 ${PROJECT_SOURCE_DIR}/test/throttle_err1.tex ""
+"Error parsing TeX document: TXRGlobScanner:33:15: : Unexpected stop tag sequence '..end{longtable}' without start tag pair.
+.end{longtable}
+ .")
+
+# test throttle.tex
+do_parse_test (throttleErr2 ${PROJECT_SOURCE_DIR}/test/throttle_err2.tex ""
+"Error parsing TeX document: TXRGlobScanner:33:1: Start tag sequence '..begin{longtable}' without stop tag pair.
+.begin{longtable}
+.
+")
+
+# test throttle.tex
+do_parse_test (throttleErr3 ${PROJECT_SOURCE_DIR}/test/throttle_err3.tex ""
+"Error parsing TeX document: TXRGlobScanner:34:1: Error parsing subdoc.
+.begin{longtable}
+.
+TXRLongtableScanner:55:46: Stop external tag sequence '..end{longtable}' without start tag pair.
+.multicolumn{2}{|l|}{ЗМГ} & & .end{longtable} & & & & .tabularnewline
+ .
+")
+
+# test throttle.tex
+do_parse_test (throttleErr4 ${PROJECT_SOURCE_DIR}/test/throttle_err4.tex ""
+"Error parsing TeX document: TXRGlobScanner:33:13: : Unexpected stop tag sequence '..end{tabular}' without start tag pair.
+.end{tabular}
+ .")
+
+# test throttle.tex
+do_parse_test (throttleErr5 ${PROJECT_SOURCE_DIR}/test/throttle_err5.tex ""
+"Error parsing TeX document: TXRGlobScanner:33:1: Start tag sequence '..begin{tabular}' without stop tag pair.
+.begin{tabular}
+.
+")
+
+# test throttle.tex
+do_parse_test (throttleErr6 ${PROJECT_SOURCE_DIR}/test/throttle_err6.tex ""
+"Error parsing TeX document: TXRGlobScanner:34:1: Error parsing subdoc.
+.begin{tabular}
+.
+TXRTabularScanner:55:46: Stop external tag sequence '..end{tabular}' without start tag pair.
+.multicolumn{2}{|l|}{ЗМГ} & & .end{tabular} & & & & .tabularnewline
+ .
+")
+
+# test formular.tex
+do_parse_test (formularList ${PROJECT_SOURCE_DIR}/test/formular.tex ""
+"list all objects
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRGraphics
+TXRText
+end of objects
+
+")
+
+# test formular.tex
+do_parse_test (formularWalk ${PROJECT_SOURCE_DIR}/test/formular.tex ""
+"Walk through all objects
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRGraphics
+ width=12.000000cm, height=25.000000cm, path=151,
+ gen..=.includegraphics.width=12cm,height=25cm.{151}
+resized gen.. = .includegraphics.width=6.000000pt,height=50.000000dd.{151}
+TXRText
+end of objects
+
+")
+
+# test formular.tex
+do_parse_test (formularCmp ${PROJECT_SOURCE_DIR}/test/formular.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test formular.tex
+do_parse_test (formularErr1 ${PROJECT_SOURCE_DIR}/test/formular_err1.tex ""
+"Error parsing TeX document: TXRGlobScanner:192:15: : Unexpected stop tag sequence '..end{longtable}' without start tag pair.
+.end{longtable}
+ .")
+
+# test formular.tex
+do_parse_test (formularErr2 ${PROJECT_SOURCE_DIR}/test/formular_err2.tex ""
+"Error parsing TeX document: TXRGlobScanner:44:1: Start tag sequence '..begin{longtable}' without stop tag pair.
+.begin{longtable}
+.
+")
+
+# test for caption in all_subtables.tex
+do_parse_test (captionTest ${PROJECT_SOURCE_DIR}/test/all_subtables.tex ""
+".begin{document}
+.begin{longtable}{.c.c.}
+.caption{Caption of the table}
+")
+
+# test all_subtables.tex
+do_parse_test (all_subtablesCmp ${PROJECT_SOURCE_DIR}/test/all_subtables.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test all_subtables.tex
+do_parse_test (linesCmp ${PROJECT_SOURCE_DIR}/test/lines.tex ${PROJECT_SOURCE_DIR}/test/lines.etalon.tex
+"Original and generated text are EQUAL .-.")
+
+# test ltable_embedded.tex
+do_parse_test (ltable_embedded ${PROJECT_SOURCE_DIR}/test/ltable_embedded.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test ltable_double_embedded.tex
+do_parse_test (ltable_double_embedded ${PROJECT_SOURCE_DIR}/test/ltable_double_embedded.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test throttle_VK2500.tex
+do_parse_test (throttle_VK2500Cmp ${PROJECT_SOURCE_DIR}/test/throttle_VK2500.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test throttle_VK2500.tex
+do_parse_test (throttle_VK2500PSCmp ${PROJECT_SOURCE_DIR}/test/throttle_VK2500PS.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test throttle_VK2500_dos_newlines_.tex
+do_parse_test (throttle_VK2500PS_dos_newlines_ListWalk ${PROJECT_SOURCE_DIR}/test/throttle_VK2500PS_dos_newlines.tex ""
+"list all objects
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+end of objects
+
+Walk through all objects
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+end of objects
+")
+
+# test graph_in_ltable.tex
+do_parse_test (graph_in_ltable ${PROJECT_SOURCE_DIR}/test/graph_in_ltable.tex ""
+"
+list all objects
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRLongtable
+ TXRLongtable
+TXRText
+TXRLongtable
+ TXRGraphics
+ TXRLongtable
+TXRText
+end of objects
+
+Walk through all objects
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRLongtable
+TXRText
+TXRLongtable
+TXRText
+end of objects
+")
+
+# test ltable_square_arg.tex
+do_parse_test (ltable_square_arg ${PROJECT_SOURCE_DIR}/test/ltable_square_arg.tex ""
+"Original and generated text are EQUAL .-.")
+
+# test table_in_table.tex
+do_parse_test (table_in_table ${PROJECT_SOURCE_DIR}/test/table_in_table.tex ""
+"
+list all objects
+")
+
+# test unary_quotes.tex
+do_parse_test (unary_quotes ${PROJECT_SOURCE_DIR}/test/unary_quotes.tex ""
+"
+list all objects
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+end of objects
+
+Walk through all objects
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+TXRTabular
+TXRText
+end of objects
+")
+
+# test back_slashes_in_a_table.tex
+do_parse_test (back_slashes_in_a_table ${PROJECT_SOURCE_DIR}/test/back_slashes_in_a_table.tex ${PROJECT_SOURCE_DIR}/test/back_slashes_in_a_table.etalon.tex
+"Original and generated text are EQUAL .-.")
+
+
+# ltable_test macro
+macro (ltable_test testname tex_path1 tex_path2 operation regexp)
+ add_test (ltable_test-${testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ltable_test ${tex_path1} ${tex_path2} ${operation})
+set_tests_properties (ltable_test-${testname}
+ PROPERTIES PASS_REGULAR_EXPRESSION ${regexp}
+ FAIL_REGULAR_EXPRESSION "CRITICAL;WARNING")
+endmacro (ltable_test)
+
+# ltable_test rm0row
+ltable_test (rm0row ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_rm0row.tex rm0row
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test rm1row
+ltable_test (rm1row ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_rm1row.tex rm1row
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test rm1000row
+ltable_test (rm1000row ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_rm1000row.tex rm1000row
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test rm_last_row
+ltable_test (rm_last_row ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_rm_last_row.tex rm_last_row
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_0_0
+ltable_test (clone_0_0 ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_clone_0_0.tex clone_0_0
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_0_1
+ltable_test (clone_0_1 ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_clone_0_1.tex clone_0_1
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_1_0
+ltable_test (clone_1_0 ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_clone_1_0.tex clone_1_0
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_0_last
+ltable_test (clone_0_last ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_clone_0_last.tex clone_0_last
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_last_0
+ltable_test (clone_last_0 ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_clone_last_0.tex clone_last_0
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_0_lastp1
+ltable_test (clone_0_lastp1 ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_clone_0_lastp1.tex clone_0_lastp1
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_lastp1_0
+ltable_test (clone_lastp1_0 ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_clone_lastp1_0.tex clone_lastp1_0
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_0_1000
+ltable_test (clone_0_1000 ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_clone_0_1000.tex clone_0_1000
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test clone_1000_0
+ltable_test (clone_1000_0 ${PROJECT_SOURCE_DIR}/test/formular.tex ${PROJECT_SOURCE_DIR}/test/ltable_clone_1000_0.tex clone_1000_0
+"Etalon and generated text are EQUAL .-.")
+
+# ltable_test append_row0
+ltable_test (append_row0 ${PROJECT_SOURCE_DIR}/test/table_rows.tex ${PROJECT_SOURCE_DIR}/test/table_rows.etalon.tex append_row0
+"Etalon and generated text are EQUAL .-.")
+
+# enable testing
+ENABLE_TESTING ()
diff --git a/test/tex/all_subtables.lyx b/test/tex/all_subtables.lyx
new file mode 100644
index 0000000..41bebbf
--- /dev/null
+++ b/test/tex/all_subtables.lyx
@@ -0,0 +1,1124 @@
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
+\begin_document
+\begin_header
+\textclass article
+\use_default_options true
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman default
+\font_sans default
+\font_typewriter default
+\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 default
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_amsmath 1
+\use_esint 1
+\use_mhchem 1
+\use_mathdots 1
+\cite_engine basic
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\use_refstyle 1
+\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
+\begin_inset Tabular
+
+
+
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+firsthead
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+firsthead
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+head
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+head
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Caption
+
+\begin_layout Plain Layout
+Caption of the table
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+foot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+foot
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+lastfoot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+lastfoot
+\end_layout
+
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/test/tex/all_subtables.tex b/test/tex/all_subtables.tex
new file mode 100644
index 0000000..8584508
--- /dev/null
+++ b/test/tex/all_subtables.tex
@@ -0,0 +1,129 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english]{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin9]{inputenc}
+\usepackage{longtable}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{longtable}{|c|c|}
+\caption{Caption of the table}
+\tabularnewline
+\hline
+firsthead & firsthead\tabularnewline
+\endfirsthead
+\hline
+head & head\tabularnewline
+\endhead
+foot & foot\tabularnewline
+\hline
+\endfoot
+\hline
+lastfoot & lastfoot\tabularnewline
+\hline
+\endlastfoot
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\hline
+ & \tabularnewline
+\end{longtable}
+\end{document}
diff --git a/test/tex/back_slashes_in_a_table.etalon.tex b/test/tex/back_slashes_in_a_table.etalon.tex
new file mode 100644
index 0000000..708caae
--- /dev/null
+++ b/test/tex/back_slashes_in_a_table.etalon.tex
@@ -0,0 +1,48 @@
+\documentclass[russian]{report}
+\usepackage{array}
+
+\begin{document}
+
+% use of \tabularnewline
+\begin{tabular}{|>{\centering}p{0.08\paperwidth}|>{\centering}b{0.08\paperwidth}|>{\centering}m{0.08\paperwidth}|}
+\hline
+A1 \\ aa A1 & B1 \\ aa B1 & C1 \\ aa C1 \tabularnewline
+\hline
+A1 & B1 & C1 \tabularnewline
+\hline
+A2 & B2 & C2 \tabularnewline
+\hline
+\end{tabular}
+
+% old style row endings
+\begin{tabular}{|c|c|c|}
+A \tabularnewline & B \tabularnewline & C \tabularnewline
+A & B & C \tabularnewline C
+\end{tabular}
+\begin{tabular}{|c|c|c|}
+A & B & C \tabularnewline
+A & B & C \tabularnewline
+\end{tabular}
+
+% use of \tabularnewline
+\begin{longtable}{|>{\centering}p{0.08\paperwidth}|>{\centering}b{0.08\paperwidth}|>{\centering}m{0.08\paperwidth}|}
+\hline
+A1 \\ aa A1 & B1 \\ aa B1 & C1 \\ aa C1 \tabularnewline
+\hline
+A1 & B1 & C1 \tabularnewline
+\hline
+A2 & B2 & C2 \tabularnewline
+\hline
+\end{longtable}
+
+% old style row endings
+\begin{longtable}{|c|c|c|}
+A \tabularnewline & B \tabularnewline & C \tabularnewline
+A & B & C \tabularnewline C
+\end{longtable}
+\begin{longtable}{|c|c|c|}
+A & B & C \tabularnewline
+A & B & C \tabularnewline
+\end{longtable}
+
+\end{document}
diff --git a/test/tex/back_slashes_in_a_table.tex b/test/tex/back_slashes_in_a_table.tex
new file mode 100644
index 0000000..3be5d3a
--- /dev/null
+++ b/test/tex/back_slashes_in_a_table.tex
@@ -0,0 +1,50 @@
+\documentclass[russian]{report}
+\usepackage{array}
+
+\begin{document}
+
+% use of \tabularnewline
+\begin{tabular}{|>{\centering}p{0.08\paperwidth}|>{\centering}b{0.08\paperwidth}|>{\centering}m{0.08\paperwidth}|}
+\hline
+A1 \\ aa A1 & B1 \\ aa B1 & C1 \\ aa C1 \tabularnewline
+\hline
+A1 & B1 & C1 \tabularnewline
+\hline
+A2 & B2 & C2 \tabularnewline
+\hline
+\end{tabular}
+
+% old style row endings
+\begin{tabular}{|c|c|c|}
+A \\ & B \\ & C \\
+A & B & C \\
+A & B & C
+\end{tabular}
+\begin{tabular}{|c|c|c|}
+A & B & C \\
+A & B & C \\
+\end{tabular}
+
+% use of \tabularnewline
+\begin{longtable}{|>{\centering}p{0.08\paperwidth}|>{\centering}b{0.08\paperwidth}|>{\centering}m{0.08\paperwidth}|}
+\hline
+A1 \\ aa A1 & B1 \\ aa B1 & C1 \\ aa C1 \tabularnewline
+\hline
+A1 & B1 & C1 \tabularnewline
+\hline
+A2 & B2 & C2 \tabularnewline
+\hline
+\end{longtable}
+
+% old style row endings
+\begin{longtable}{|c|c|c|}
+A \\ & B \\ & C \\
+A & B & C \\
+A & B & C
+\end{longtable}
+\begin{longtable}{|c|c|c|}
+A & B & C \\
+A & B & C \\
+\end{longtable}
+
+\end{document}
diff --git a/test/tex/formular.lyx b/test/tex/formular.lyx
new file mode 100644
index 0000000..e6f0602
--- /dev/null
+++ b/test/tex/formular.lyx
@@ -0,0 +1,4377 @@
+#LyX file created by tex2lyx 2.0.3
+\lyxformat 413
+\begin_document
+\begin_header
+\textclass article
+\begin_preamble
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+\end_preamble
+\use_default_options false
+\language russian
+\language_package default
+\inputencoding utf8x
+\fontencoding T1
+\font_roman default
+\font_sans default
+\font_typewriter default
+\font_default_family default
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+\graphics default
+\paperfontsize default
+\spacing single
+\use_hyperref 0
+\papersize default
+\use_geometry true
+\use_amsmath 1
+\use_esint 1
+\use_mhchem 0
+\use_mathdots 0
+\cite_engine basic
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\use_refstyle 0
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\quotes_language french
+\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
+\align right
+
+ф. 07-726А
+\end_layout
+
+\begin_layout Standard
+\align center
+
+
+\series bold
+Формулярные данные по 06В.00.0100ВТУ
+\series default
+
+\end_layout
+
+\begin_layout Standard
+\align center
+
+двигателя ТВ7-117В №
+\begin_inset CommandInset line
+LatexCommand rule
+offset "-1pt"
+width "3.5cm"
+height "0.4pt"
+
+\end_inset
+
+ Температура наружного воздуха
+\begin_inset Formula $t_{\text{н}}$
+\end_inset
+
+,
+\begin_inset CommandInset line
+LatexCommand rule
+offset "-1pt"
+width "1cm"
+height "0.4pt"
+
+\end_inset
+
+,
+\begin_inset Formula $\,^{\circ}\mbox{C}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+от__________
+\begin_inset Quotes ard
+\end_inset
+
+
+\begin_inset CommandInset line
+LatexCommand rule
+offset "-1pt"
+width "1.1cm"
+height "0.4pt"
+
+\end_inset
+
+
+\begin_inset Quotes ald
+\end_inset
+
+
+\begin_inset CommandInset line
+LatexCommand rule
+offset "-1pt"
+width "2.5cm"
+height "0.4pt"
+
+\end_inset
+
+ 20
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+г.
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+Давление наружного воздуха,
+\begin_inset Formula $P_{\text{Н}}$
+\end_inset
+
+
+\begin_inset CommandInset line
+LatexCommand rule
+offset "-1pt"
+width "1cm"
+height "0.4pt"
+
+\end_inset
+
+ мм. рт. ст.
+\end_layout
+
+\begin_layout Standard
+
+Drossel55.Table1
+\end_layout
+
+\begin_layout Standard
+
+
+\begin_inset Tabular
+
+
+
+
+
+
+
+
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.11
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Newline linebreak
+\end_inset
+
+ Режим работы двигателя
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.1
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\series bold
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\series default
+
+\begin_inset Newline linebreak
+\end_inset
+
+ Мощность на выводном валу
+\series bold
+N л.с.
+\series default
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Частота вращения ротора
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.1
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+Температура газа перед свободнойтурбиной не более
+\series bold
+t
+\begin_inset Formula $_{4}$
+\end_inset
+
+
+\series default
+,
+\begin_inset Formula $\,^{\circ}\mbox{C}$
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.09
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+Удельный расход топлива не более
+\series bold
+C
+\begin_inset Formula $_{R\text{ пр}}$
+\end_inset
+
+
+\series default
+г/л.с.ч.
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+турбо-компрессора не более
+\series bold
+n
+\begin_inset Formula $_{\text{тк пр}}$
+\end_inset
+
+
+\series default
+, %
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+свободной турбины
+\series bold
+n
+\begin_inset Formula $_{\lyxmathsym{ст}}$
+\end_inset
+
+
+\series default
+, %
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.11
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+*2,5-минутной мощности
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+101,0
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+805
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.11
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+30-минутной мощности
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+3000
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+795
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.11
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+ВЗЛ
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+2800
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+97,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+775
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+205
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.11
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+МП
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+2100
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+94,0
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+705
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.11
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+МКр
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+1900
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+93,0
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+680
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+221
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.11
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+* ЗМГ
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+80
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\align left
+
+* - измеренные параметры
+\begin_inset space \hspace*{}
+\length 1in
+\end_inset
+
+
+\series bold
+
+\shape smallcaps
+Настроечные параметры
+\shape default
+
+\series default
+
+\end_layout
+
+\begin_layout Standard
+\align left
+
+Drossel55.Table2
+\lang english
+
+\lang english
+
+\begin_inset Tabular
+
+
+
+
+
+
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\series bold
+Параметр
+\series default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.1
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\series bold
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+Обозначение
+\series default
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.1
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\series bold
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+Режим
+\series default
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.1
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\series bold
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+Значение, полученное при испытании
+\series default
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\series bold
+Наименование и единица измерения
+\series default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ 1
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+2
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+3
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+4
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "45col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+
+\begin_layout Plain Layout
+
+Настроечная величина частоты вращения
+\end_layout
+
+\begin_layout Plain Layout
+
+ротора турбокомпрессора, %
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Formula $n_{\text{тк\_мг}}0$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+МГ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "45col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+
+\begin_layout Plain Layout
+
+Настроечная величина частоты вращения
+\end_layout
+
+\begin_layout Plain Layout
+
+ротора турбокомпрессора, %
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Formula $n_{\text{тк\_взл}}0$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Quotes ard
+\end_inset
+
+Взлёт
+\begin_inset Quotes ald
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Box Frameless
+position "c"
+hor_pos "c"
+has_inner_box 1
+inner_pos "c"
+use_parbox 0
+use_makebox 0
+width "45col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+
+\begin_layout Plain Layout
+
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора, %
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Formula $n_{\text{тк\_мин}}0$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+МГ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "45col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+
+\begin_layout Plain Layout
+
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора при
+\begin_inset Quotes ard
+\end_inset
+
+Разрешении РПМ
+\begin_inset Quotes ald
+\end_inset
+
+,%
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Formula $\Delta n_{\text{тк\_взл}}0$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Quotes ard
+\end_inset
+
+Взлёт
+\begin_inset Quotes ald
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "45col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+
+\begin_layout Plain Layout
+
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора по команде
+\begin_inset Quotes ard
+\end_inset
+
+Тренировочный режим
+\begin_inset Quotes ald
+\end_inset
+
+, %
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Formula $\Delta n_{\text{тк\_тр}}0$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Quotes ard
+\end_inset
+
+Взлёт
+\begin_inset Quotes ald
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "45col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+
+\begin_layout Plain Layout
+
+Расходный коэффициент 1-го контура форсунок
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Formula $\Psi_{(\mu F)}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "45col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+
+\begin_layout Plain Layout
+
+Программный расход топлива в РС, кг/ч
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Formula $G_{\text{т прог РС МГ}}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.15
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+Параметры измерителя крутящего момента
+\lang english
+
+\lang english
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Начальное смещение, град
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Formula $\phi_{\text{икм}}0$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.1
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+-
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Коэффициент характеристики
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\begin_inset Formula $K$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+Расход масла, л/ч
+\begin_inset CommandInset line
+LatexCommand rule
+offset "-1pt"
+width "2cm"
+height "0.4pt"
+
+\end_inset
+
+ (не более 0,2)
+\end_layout
+
+\begin_layout Standard
+\align left
+
+
+\series bold
+Зависимость между положением дозирующей иглы и расходом топлива
+\begin_inset Formula $G_{\text{т}}=f(\alpha_{\text{дк}})$
+\end_inset
+
+
+\series default
+
+\end_layout
+
+\begin_layout Standard
+\align left
+
+Drossel55.Table3
+\end_layout
+
+\begin_layout Standard
+\align left
+
+
+\begin_inset Tabular
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Параметр
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Значение, полученное при испытании
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Наименование и единица измерения
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Обозначение
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+1
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+2
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+3
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+4
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+6
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+7
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+8
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+9
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+10
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Положение дозирующей иглы, град
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Formula $(\alpha_{\text{дк}})$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Расход топлива, кг/ч
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Formula $G_{\text{Т}}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Исполнитель
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Инженер по испытаниям
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "10col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+
+\begin_layout Plain Layout
+
+Начальник БТК ИК
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "15col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+
+\begin_layout Plain Layout
+
+Начальник участка ИД
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "15col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+
+\begin_layout Plain Layout
+
+Представитель заказчика
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+
+\begin_inset Graphics
+ filename 151.eps
+ width 12cm
+ height 25cm
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/test/tex/formular.tex b/test/tex/formular.tex
new file mode 100644
index 0000000..c71d52a
--- /dev/null
+++ b/test/tex/formular.tex
@@ -0,0 +1,359 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/formular_err1.tex b/test/tex/formular_err1.tex
new file mode 100644
index 0000000..07b85d8
--- /dev/null
+++ b/test/tex/formular_err1.tex
@@ -0,0 +1,220 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+\end{longtable}
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\hline
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\hline
+Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\hline
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\hline
+Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\hline
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+\end{document}
diff --git a/test/tex/formular_err2.tex b/test/tex/formular_err2.tex
new file mode 100644
index 0000000..7687596
--- /dev/null
+++ b/test/tex/formular_err2.tex
@@ -0,0 +1,220 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+\begin{longtable}
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\hline
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\hline
+Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\hline
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\hline
+Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\hline
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+\end{document}
diff --git a/test/tex/get_tags.sh b/test/tex/get_tags.sh
new file mode 100755
index 0000000..534c3bb
--- /dev/null
+++ b/test/tex/get_tags.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+cat $@ | iconv -f koi8-r -t utf-8 | sed 's/\\/\n\\/g' | grep '^\\[a-z]' | sed 's/\\\([a-z]*\).*$/\1/g' | sort | uniq | sed 's/\(.*\)/#define\t\1 "\1\"/g'
diff --git a/test/tex/graph_in_ltable.tex b/test/tex/graph_in_ltable.tex
new file mode 100644
index 0000000..5442085
--- /dev/null
+++ b/test/tex/graph_in_ltable.tex
@@ -0,0 +1,225 @@
+%% LyX 2.0.4 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[russian]{report}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage[landscape,a4paper]{geometry}
+\geometry{verbose,tmargin=3cm,bmargin=3cm,lmargin=0cm,rmargin=0cm,headheight=50pt,headsep=5mm,footskip=40pt}
+\usepackage{fancyhdr}
+\pagestyle{fancy}
+\setcounter{secnumdepth}{-1}
+\setcounter{tocdepth}{3}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\renewcommand{\headrulewidth}{0pt}
+
+
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+\usepackage{babel}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+
+\chead{%
+\begin{tabular}{c}
+\textbf{Стенд № {[}Value.First.Stend{]}}{\large{} }\tabularnewline
+Изделие {[}Value.Last.EngineData{]} ~~ Дата: {[}Value.Last.Time2{]}\tabularnewline
+\tabularnewline
+\end{tabular}}
+
+\begin{tabular}[b]{c}
+\textbf{Стенд № {[}Value.First.Stend{]}}{\large{} }\tabularnewline
+Изделие {[}Value.Last.EngineData{]} ~~ Дата: {[}Value.Last.Time2{]}\tabularnewline
+\tabularnewline
+\end{tabular}
+
+\cfoot{%
+\begin{tabular*}{0.01\textwidth}{|c|c|}
+\hline
+Оператор гр. АИС & Инженер по испытаниям \tabularnewline
+\hline
+ & \tabularnewline
+ & \tabularnewline
+\hline
+\end{tabular*}}
+
+
+\begin{longtable}{lc}
+\begin{longtable}[l]{|c|}
+\hline
+{[}direction.down{]}{[}Value.0.nst{]}\tabularnewline
+\hline
+\end{longtable}\tabularnewline
+\end{longtable}
+
+
+
+\begin{longtable}{lc}
+\includegraphics[bb=0bp 0bp 1203bp 100cm,clip,width=5cm,height=10cm,bb = 0 0 200 100, draft, type=eps]{test.bmp}& %
+\begin{longtable}[l]{|c|}
+\hline
+{[}direction.down{]}{[}Value.0.nst{]}\tabularnewline
+\hline
+\end{longtable}\tabularnewline
+\end{longtable}
+\end{document}
diff --git a/test/tex/includegraphics.tex b/test/tex/includegraphics.tex
new file mode 100644
index 0000000..bbe07b9
--- /dev/null
+++ b/test/tex/includegraphics.tex
@@ -0,0 +1,4 @@
+\begin{document}
+\includegraphics[, angle=25, scale=3,angle=70 , , , height=3pt, height=5]{174}
+\includegraphics[width=12cm,height=25cm]{151}
+\end{document}
diff --git a/test/tex/lines.etalon.tex b/test/tex/lines.etalon.tex
new file mode 100644
index 0000000..9693ccc
--- /dev/null
+++ b/test/tex/lines.etalon.tex
@@ -0,0 +1,262 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english]{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin9]{inputenc}
+\usepackage{longtable}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{longtable}{|||l|c|r|||c|c|c||||}
+\caption{caption of the table}
+\endfirsthead
+\hline
+\hline
+\hline
+\cline{1-3} \cline{5-6}
+\noalign{\vskip0.16\textheight}
+\noalign{\vskip1bp}
+\noalign{\vskip3cm}
+head & head & head & head & head & head\tabularnewline[1bp]
+\noalign{\vskip2cc}
+\hline
+\hline
+\cline{1-2} \cline{4-6}
+\noalign{\vskip3cm}
+firsthead & firsthead & firsthead & firsthead & firsthead & firsthead\tabularnewline[2cc]
+\noalign{\vskip4dd}
+\hline
+\noalign{\vskip5em}
+foot & foot & foot & foot & foot & foot\tabularnewline[3cm]
+\noalign{\vskip6ex}
+\noalign{\vskip7in}
+\noalign{\vskip5em}
+\hline
+\hline
+\noalign{\vskip9pc}
+lastfoot & lastfoot & lastfoot & lastfoot & lastfoot & lastfoot\tabularnewline[4dd]
+\noalign{\vskip8mm}
+\noalign{\vskip9pc}
+cell & cell & cell & cell & cell & cell\tabularnewline[5em]
+\noalign{\vskip10pt}
+\hline
+\hline
+\hline
+\noalign{\vskip11sp}
+cell & cell & cell & cell & cell & cell\tabularnewline[6ex]
+\cline{1-5}
+\noalign{\vskip0.12\textwidth}
+cell & cell & cell & cell & cell & cell\tabularnewline[7in]
+\cline{1-3} \cline{5-5}
+\noalign{\vskip0.13\columnwidth}
+cell & cell & cell & cell & cell & cell\tabularnewline[8mm]
+\noalign{\vskip0.14\paperwidth}
+\hline
+\hline
+\noalign{\vskip0.15\linewidth}
+cell & cell & cell & cell & cell & cell\tabularnewline[9pc]
+\noalign{\vskip10pt}
+\noalign{\vskip0.16\textheight}
+\noalign{\vskip0.16\textheight}
+\noalign{\vskip2cc}
+\hline
+\hline
+\hline
+\cline{1-3} \cline{5-5}
+\end{longtable}
+\begin{longtable}{|c|c|c|c|c|c|}
+\caption{caption of the table}
+\endfirsthead
+\hline
+\hline
+\noalign{\vskip0.17\paperheight}
+head & head & head & head & head & head\tabularnewline[10pt]
+\noalign{\vskip1bp}
+\hline
+\hline
+\hline
+\hline
+\cline{1-3} \cline{5-5}
+\noalign{\vskip2cc}
+firsthead & firsthead & firsthead & firsthead & firsthead & firsthead\tabularnewline[11sp]
+\hline
+\noalign{\vskip3cm}
+foot & foot & foot & foot & foot & foot\tabularnewline[0.12\textwidth]
+\hline
+\hline
+\cline{1-1} \cline{4-4} \cline{6-6}
+\noalign{\vskip4dd}
+lastfoot & lastfoot & lastfoot & lastfoot & lastfoot & lastfoot\tabularnewline[0.13\columnwidth]
+cell & cell & cell & cell & cell & cell\tabularnewline[0.14\paperwidth]
+\hline
+\hline
+\hline
+\noalign{\vskip5em}
+cell & cell & cell & cell & cell & cell\tabularnewline[0.15\linewidth]
+\noalign{\vskip6ex}
+\cline{1-5}
+\noalign{\vskip7in}
+cell & cell & cell & cell & cell & cell\tabularnewline[0.16\textheight]
+\cline{1-3} \cline{5-5}
+cell & cell & cell & cell & cell & cell\tabularnewline[0.17\paperheight]
+\hline
+\hline
+\hline
+\cline{3-4} \cline{6-6}
+\noalign{\vskip8mm}
+cell & cell & cell & cell & cell & cell\tabularnewline[9pc]
+\hline
+\hline
+\hline
+\hline
+\hline
+\end{longtable}
+\begin{longtable}{|||l|c|r|||c|c|c||||}
+\caption{caption of the table}
+\endfirsthead
+\toprule
+\toprule
+\toprule
+\cmidrule{1-3} \cmidrule{5-6}
+\addlinespace[2cc]
+\addlinespace[1bp]
+\addlinespace[3cm]
+head & head & head & head & head & head\tabularnewline\addlinespace[1bp]
+\addlinespace[2cc]
+\midrule
+\midrule
+\cmidrule{1-2} \cmidrule{4-6}
+\addlinespace[3cm]
+firsthead & firsthead & firsthead & firsthead & firsthead & firsthead\tabularnewline\addlinespace[2cc]
+\addlinespace[4dd]
+\midrule
+\addlinespace[5em]
+foot & foot & foot & foot & foot & foot\tabularnewline\addlinespace[3cm]
+\addlinespace[6ex]
+\midrule
+\midrule
+\addlinespace[7in]
+lastfoot & lastfoot & lastfoot & lastfoot & lastfoot & lastfoot\tabularnewline\addlinespace[4dd]
+\addlinespace[8mm]
+\addlinespace[9pc]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[5em]
+\addlinespace[10pt]
+\addlinespace[0.14\paperwidth]
+\addlinespace[0.15\linewidth]
+\midrule
+\midrule
+\midrule
+\addlinespace[11sp]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[6ex]
+\cmidrule{1-5}
+\addlinespace[0.12\textwidth]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[7in]
+\cmidrule{1-3} \cmidrule{5-5}
+\addlinespace[0.13\columnwidth]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[8mm]
+\addlinespace[0.14\paperwidth]
+\midrule
+\midrule
+\addlinespace[0.15\linewidth]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[9pc]
+\addlinespace[0.16\textheight]
+\addlinespace[0.14\paperwidth]
+\addlinespace[0.15\linewidth]
+\bottomrule
+\bottomrule
+\bottomrule
+\cmidrule{1-3} \cmidrule{5-5}
+\end{longtable}
+\begin{longtable}{|c|c|c|c|c|c|}
+\caption{caption of the table}
+\endfirsthead
+\toprule
+\toprule
+\addlinespace[0.17\paperheight]
+head & head & head & head & head & head\tabularnewline\addlinespace[10pt]
+\addlinespace[1bp]
+\midrule
+\midrule
+\midrule
+\midrule
+\cmidrule{1-3} \cmidrule{5-5}
+\addlinespace[2cc]
+firsthead & firsthead & firsthead & firsthead & firsthead & firsthead\tabularnewline\addlinespace[11sp]
+\midrule
+\addlinespace[3cm]
+foot & foot & foot & foot & foot & foot\tabularnewline\addlinespace[0.12\textwidth]
+\midrule
+\midrule
+\cmidrule{1-1} \cmidrule{4-4} \cmidrule{6-6}
+\addlinespace[4dd]
+lastfoot & lastfoot & lastfoot & lastfoot & lastfoot & lastfoot\tabularnewline\addlinespace[0.13\columnwidth]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[0.14\paperwidth]
+\midrule
+\midrule
+\midrule
+\addlinespace[5em]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[0.15\linewidth]
+\addlinespace[6ex]
+\cmidrule{1-5}
+\addlinespace[7in]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[0.16\textheight]
+\cmidrule{1-3} \cmidrule{5-5}
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[0.17\paperheight]
+\midrule
+\midrule
+\midrule
+\cmidrule{3-4} \cmidrule{6-6}
+\addlinespace[8mm]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[9pc]
+\bottomrule
+\bottomrule
+\bottomrule
+\bottomrule
+\bottomrule
+\end{longtable}
+% one line/col table
+\begin{longtable}{|||l|||||}
+\caption{caption of the table}
+\endfirsthead
+\hline
+\hline
+\hline
+\cline{1-3} \cline{5-6}
+\noalign{\vskip0.16\textheight}
+\noalign{\vskip1bp}
+\noalign{\vskip3cm}
+head & head & head & head & head & head\tabularnewline[1bp]
+\noalign{\vskip2cc}
+\noalign{\vskip3cm}
+\noalign{\vskip10pt}
+\noalign{\vskip0.16\textheight}
+\noalign{\vskip0.16\textheight}
+\noalign{\vskip2cc}
+\hline
+\hline
+\cline{1-2} \cline{4-6}
+\end{longtable}
+\begin{longtable}{|||l|||||}
+\toprule
+\toprule
+\toprule
+\cmidrule{1-3} \cmidrule{5-6}
+\addlinespace[2cc]
+\addlinespace[1bp]
+\addlinespace[3cm]
+head & head & head & head & head & head\tabularnewline\addlinespace[1bp]
+\addlinespace[2cc]
+\addlinespace[3cm]
+\bottomrule
+\bottomrule
+\cmidrule{1-2} \cmidrule{4-6}
+\end{longtable}
+\end{document}
diff --git a/test/tex/lines.lyx b/test/tex/lines.lyx
new file mode 100644
index 0000000..a83c704
--- /dev/null
+++ b/test/tex/lines.lyx
@@ -0,0 +1,648 @@
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
+\begin_document
+\begin_header
+\textclass article
+\use_default_options true
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman default
+\font_sans default
+\font_typewriter default
+\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 default
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_amsmath 1
+\use_esint 1
+\use_mhchem 1
+\use_mathdots 1
+\cite_engine basic
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\use_refstyle 1
+\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
+\begin_inset Tabular
+
+
+
+
+
+
+
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+head
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+head
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+head
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+head
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+head
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+head
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+firsthead
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+firsthead
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+firsthead
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+firsthead
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+firsthead
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+firsthead
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+foot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+foot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+foot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+foot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+foot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+foot
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+lastfoot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+lastfoot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+lastfoot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+lastfoot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+lastfoot
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+lastfoot
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Caption
+
+\begin_layout Plain Layout
+caption of the table
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+cell
+\end_layout
+
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/test/tex/lines.tex b/test/tex/lines.tex
new file mode 100644
index 0000000..7e2b185
--- /dev/null
+++ b/test/tex/lines.tex
@@ -0,0 +1,289 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english]{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin9]{inputenc}
+\usepackage{longtable}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{longtable}{|||l|c|r|||c|c|c||||}
+\caption{caption of the table}
+\endfirsthead
+\noalign{\vskip0.16\textheight}
+\hline
+\cline{1-1} \cline{4-4} \cline{6-6}
+\hline
+\hline
+\cline{1-3} \cline{5-6}
+\noalign{\vskip1bp}
+\noalign{\vskip3cm}
+head & head & head & head & head & head\\[1bp]
+\cline{1-2} \cline{5-6}
+\noalign{\vskip2cc}
+\hline
+\hline
+\cline{1-2} \cline{4-6}
+\noalign{\vskip3cm}
+firsthead & firsthead & firsthead & firsthead & firsthead & firsthead\tabularnewline[2cc]
+\noalign{\vskip4dd}
+\hline
+\noalign{\vskip5em}
+foot & foot & foot & foot & foot & foot\\[3cm]
+\noalign{\vskip6ex}
+\noalign{\vskip7in}
+\hline
+\hline
+\noalign{\vskip5em}
+\noalign{\vskip9pc}
+lastfoot & lastfoot & lastfoot & lastfoot & lastfoot & lastfoot\\[4dd]
+\noalign{\vskip8mm}
+\noalign{\vskip9pc}
+cell & cell & cell & cell & cell & cell\tabularnewline[5em]
+\cline{1-1} \cline{4-4} \cline{6-6}
+\noalign{\vskip10pt}
+\hline
+\hline
+\hline
+\noalign{\vskip11sp}
+cell & cell & cell & cell & cell & cell\tabularnewline[6ex]
+\cline{1-5}
+\noalign{\vskip0.12\textwidth}
+cell & cell & cell & cell & cell & cell\tabularnewline[7in]
+\cline{1-3} \cline{5-5}
+\noalign{\vskip0.13\columnwidth}
+cell & cell & cell & cell & cell & cell\\[8mm]
+\hline
+\cline{3-4} \cline{6-6}
+\hline
+\noalign{\vskip0.14\paperwidth}
+\noalign{\vskip0.15\linewidth}
+cell & cell & cell & cell & cell & cell\tabularnewline[9pc]
+\hline
+\hline
+\hline
+\cline{1-3} \cline{5-5}
+\cline{1-3} \cline{5-5}
+\noalign{\vskip10pt}
+\noalign{\vskip0.16\textheight}
+\noalign{\vskip0.16\textheight}
+\noalign{\vskip2cc}
+\end{longtable}
+\begin{longtable}{|c|c|c|c|c|c|}
+\caption{caption of the table}
+\endfirsthead
+\cline{1-3} \cline{5-5}
+\hline
+\hline
+\noalign{\vskip0.17\paperheight}
+head & head & head & head & head & head\tabularnewline[10pt]
+\hline
+\hline
+\hline
+\hline
+\cline{1-3} \cline{5-5}
+\noalign{\vskip1bp}
+\noalign{\vskip2cc}
+firsthead & firsthead & firsthead & firsthead & firsthead & firsthead\tabularnewline[11sp]
+\hline
+\noalign{\vskip3cm}
+foot & foot & foot & foot & foot & foot\tabularnewline[0.12\textwidth]
+\hline
+\hline
+\cline{1-1} \cline{4-4} \cline{6-6}
+\cline{1-1} \cline{4-4} \cline{6-6}
+\noalign{\vskip4dd}
+lastfoot & lastfoot & lastfoot & lastfoot & lastfoot & lastfoot\tabularnewline[0.13\columnwidth]
+cell & cell & cell & cell & cell & cell\tabularnewline[0.14\paperwidth]
+\cline{1-1} \cline{4-4} \cline{6-6}
+\hline
+\hline
+\hline
+\noalign{\vskip5em}
+cell & cell & cell & cell & cell & cell\\[0.15\linewidth]
+\cline{1-5}
+\noalign{\vskip6ex}
+\noalign{\vskip7in}
+cell & cell & cell & cell & cell & cell\tabularnewline[0.16\textheight]
+\cline{1-3} \cline{5-5}
+cell & cell & cell & cell & cell & cell\tabularnewline[0.17\paperheight]
+\hline
+\hline
+\hline
+\cline{3-4} \cline{6-6}
+\cline{3-4} \cline{6-6}
+\noalign{\vskip8mm}
+cell & cell & cell & cell & cell & cell\tabularnewline[9pc]
+\hline
+\hline
+\cline{1-3} \cline{5-5}
+\hline
+\cline{1-3} \cline{5-5}
+\hline
+\hline
+\end{longtable}
+\begin{longtable}{|||l|c|r|||c|c|c||||}
+\caption{caption of the table}
+\endfirsthead
+\toprule
+\addlinespace[2cc]
+\cmidrule{1-1} \cmidrule{4-4} \cmidrule{6-6}
+\toprule
+\toprule
+\cmidrule{1-3} \cmidrule{5-6}
+\addlinespace[1bp]
+\addlinespace[3cm]
+head & head & head & head & head & head\tabularnewline\addlinespace[1bp]
+\cmidrule{1-2} \cmidrule{5-6}
+\addlinespace[2cc]
+\midrule
+\midrule
+\cmidrule{1-2} \cmidrule{4-6}
+\addlinespace[3cm]
+firsthead & firsthead & firsthead & firsthead & firsthead & firsthead\\\addlinespace[2cc]
+\addlinespace[4dd]
+\midrule
+\addlinespace[5em]
+foot & foot & foot & foot & foot & foot\tabularnewline\addlinespace[3cm]
+\addlinespace[6ex]
+\midrule
+\midrule
+\addlinespace[7in]
+lastfoot & lastfoot & lastfoot & lastfoot & lastfoot & lastfoot\tabularnewline\addlinespace[4dd]
+\addlinespace[8mm]
+\addlinespace[9pc]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[5em]
+\cmidrule{1-1} \cmidrule{4-4} \cmidrule{6-6}
+\addlinespace[10pt]
+\midrule
+\addlinespace[0.14\paperwidth]
+\addlinespace[0.15\linewidth]
+\midrule
+\midrule
+\addlinespace[11sp]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[6ex]
+\cmidrule{1-5}
+\addlinespace[0.12\textwidth]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[7in]
+\cmidrule{1-3} \cmidrule{5-5}
+\addlinespace[0.13\columnwidth]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[8mm]
+\midrule
+\cmidrule{3-4} \cmidrule{6-6}
+\midrule
+\addlinespace[0.14\paperwidth]
+\addlinespace[0.15\linewidth]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[9pc]
+\bottomrule
+\bottomrule
+\bottomrule
+\cmidrule{1-3} \cmidrule{5-5}
+\cmidrule{1-3} \cmidrule{5-5}
+\addlinespace[0.16\textheight]
+\addlinespace[0.14\paperwidth]
+\addlinespace[0.15\linewidth]
+\end{longtable}
+\begin{longtable}{|c|c|c|c|c|c|}
+\caption{caption of the table}
+\endfirsthead
+\cmidrule{1-3} \cmidrule{5-5}
+\toprule
+\toprule
+\addlinespace[0.17\paperheight]
+head & head & head & head & head & head\\\addlinespace[10pt]
+\midrule
+\midrule
+\midrule
+\midrule
+\cmidrule{1-3} \cmidrule{5-5}
+\addlinespace[1bp]
+\addlinespace[2cc]
+firsthead & firsthead & firsthead & firsthead & firsthead & firsthead\tabularnewline\addlinespace[11sp]
+\midrule
+\addlinespace[3cm]
+foot & foot & foot & foot & foot & foot\tabularnewline\addlinespace[0.12\textwidth]
+\midrule
+\midrule
+\cmidrule{1-1} \cmidrule{4-4} \cmidrule{6-6}
+\cmidrule{1-1} \cmidrule{4-4} \cmidrule{6-6}
+\addlinespace[4dd]
+lastfoot & lastfoot & lastfoot & lastfoot & lastfoot & lastfoot\tabularnewline\addlinespace[0.13\columnwidth]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[0.14\paperwidth]
+\cmidrule{1-1} \cmidrule{4-4} \cmidrule{6-6}
+\midrule
+\midrule
+\midrule
+\addlinespace[5em]
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[0.15\linewidth]
+\cmidrule{1-5}
+\addlinespace[6ex]
+\addlinespace[7in]
+cell & cell & cell & cell & cell & cell\\\addlinespace[0.16\textheight]
+\cmidrule{1-3} \cmidrule{5-5}
+cell & cell & cell & cell & cell & cell\tabularnewline\addlinespace[0.17\paperheight]
+\midrule
+\midrule
+\midrule
+\cmidrule{3-4} \cmidrule{6-6}
+\cmidrule{3-4} \cmidrule{6-6}
+\addlinespace[8mm]
+cell & cell & cell & cell & cell & cell\tabularnewline
+\bottomrule
+\bottomrule
+\cmidrule{1-3} \cmidrule{5-5}
+\bottomrule
+\cmidrule{1-3} \cmidrule{5-5}
+\bottomrule
+\bottomrule
+\addlinespace[9pc]
+\end{longtable}
+% one line/col table
+\begin{longtable}{|||l|||||}
+\caption{caption of the table}
+\endfirsthead
+\noalign{\vskip0.16\textheight}
+\hline
+\cline{1-1} \cline{4-4} \cline{6-6}
+\hline
+\hline
+\cline{1-3} \cline{5-6}
+\noalign{\vskip1bp}
+\noalign{\vskip3cm}
+head & head & head & head & head & head\\[1bp]
+\cline{1-2} \cline{5-6}
+\noalign{\vskip2cc}
+\hline
+\hline
+\cline{1-2} \cline{4-6}
+\noalign{\vskip3cm}
+\noalign{\vskip10pt}
+\noalign{\vskip0.16\textheight}
+\noalign{\vskip0.16\textheight}
+\noalign{\vskip2cc}
+\end{longtable}
+\begin{longtable}{|||l|||||}
+\toprule
+\addlinespace[2cc]
+\cmidrule{1-1} \cmidrule{4-4} \cmidrule{6-6}
+\toprule
+\toprule
+\cmidrule{1-3} \cmidrule{5-6}
+\addlinespace[1bp]
+\addlinespace[3cm]
+head & head & head & head & head & head\tabularnewline\addlinespace[1bp]
+\cmidrule{1-2} \cmidrule{5-6}
+\addlinespace[2cc]
+\bottomrule
+\bottomrule
+\cmidrule{1-2} \cmidrule{4-6}
+\addlinespace[3cm]
+\end{longtable}
+\end{document}
diff --git a/test/tex/ltable_clone_0_0.tex b/test/tex/ltable_clone_0_0.tex
new file mode 100644
index 0000000..d45c7c6
--- /dev/null
+++ b/test/tex/ltable_clone_0_0.tex
@@ -0,0 +1,389 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} &\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} &\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} &\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} &\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage && Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} &\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} &\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} &\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}}{\centering{}\textbf{Параметр} } &\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}}{ \textbf{Наименование и единица измерения} } &\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{2}{|c}{ 1 } &\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} &\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} &\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} &\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } &\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c}{Параметр} &\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения &Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град &Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч &Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель &Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_clone_0_1.tex b/test/tex/ltable_clone_0_1.tex
new file mode 100644
index 0000000..cfae5c1
--- /dev/null
+++ b/test/tex/ltable_clone_0_1.tex
@@ -0,0 +1,389 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} &\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} &\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} &\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} &\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage && Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} &\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} &\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} &\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{1}{|>{\centering}m{0.2\paperwidth}}{\centering{}\textbf{Параметр} } &\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.2\paperwidth}}{ \textbf{Наименование и единица измерения} } &\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{1}{|c}{ 1 } &\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.2\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.08\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{1}{|c}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} &\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{1}{|c}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} &\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{1}{|>{\centering}p{0.08\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{1}{|c}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} &\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.1\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } &\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{1}{|c}{Параметр} &\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения &Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град &Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч &Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель &Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_clone_0_1000.tex b/test/tex/ltable_clone_0_1000.tex
new file mode 100644
index 0000000..c71d52a
--- /dev/null
+++ b/test/tex/ltable_clone_0_1000.tex
@@ -0,0 +1,359 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_clone_0_last.tex b/test/tex/ltable_clone_0_last.tex
new file mode 100644
index 0000000..d071dfe
--- /dev/null
+++ b/test/tex/ltable_clone_0_last.tex
@@ -0,0 +1,389 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} &\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 &\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & -\tabularnewline
+\hline
+ & Факт & & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 &\multirow{2}{0.11\paperwidth}{30-минутной мощности} & -\tabularnewline
+\hline
+ & Факт & & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 &\multirow{2}{0.11\paperwidth}{ВЗЛ} & 205\tabularnewline
+\hline
+\newpage & Факт & & & & && \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 &\multirow{2}{0.11\paperwidth}{МП} & -\tabularnewline
+\hline
+ & Факт & & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 &\multirow{2}{0.11\paperwidth}{МКр} & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - &\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & -\tabularnewline
+\hline
+ & Факт & & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} &\multicolumn{1}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & &\multicolumn{1}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 &\multicolumn{1}{|c|}{ 1 } & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ &\multicolumn{1}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> &\multicolumn{1}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ &\multicolumn{1}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> &\multicolumn{1}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> &\multicolumn{1}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - &\multicolumn{1}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - &\multicolumn{1}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} &\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c}{Параметр} &\multicolumn{1}{|c}{Параметр} & \multicolumn{10}{|c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 &Наименование и единица измерения & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & &Положение дозирующей иглы, град & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & &Расход топлива, кг/ч & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} &Исполнитель & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_clone_0_lastp1.tex b/test/tex/ltable_clone_0_lastp1.tex
new file mode 100644
index 0000000..bac9502
--- /dev/null
+++ b/test/tex/ltable_clone_0_lastp1.tex
@@ -0,0 +1,389 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\raggedright}m{0.11\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}&\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} \tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -&\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} \tabularnewline
+\hline
+ & Факт & & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -&\multirow{2}{0.11\paperwidth}{30-минутной мощности} \tabularnewline
+\hline
+ & Факт & & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205&\multirow{2}{0.11\paperwidth}{ВЗЛ} \tabularnewline
+\hline
+\newpage & Факт & & & & & &\tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -&\multirow{2}{0.11\paperwidth}{МП} \tabularnewline
+\hline
+ & Факт & & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221&\multirow{2}{0.11\paperwidth}{МКр} \tabularnewline
+\hline \newpage
+ & Факт & & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -&\multirow{2}{0.11\paperwidth}{{*} ЗМГ} \tabularnewline
+\hline
+ & Факт & & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|>{\centering}m{0.15\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} &\multicolumn{1}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & &\multicolumn{1}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 &\multicolumn{1}{|c|}{ 1 } \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & &\multicolumn{1}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & &\multicolumn{1}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & &\multicolumn{1}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & &\multicolumn{1}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & &\multicolumn{1}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & &\multicolumn{1}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & &\multicolumn{1}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & &\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.15\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c}{Значение, полученное при испытании}&\multicolumn{1}{|c|}{Параметр} \tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10&Наименование и единица измерения \tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & &Положение дозирующей иглы, град \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & &Расход топлива, кг/ч \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}&Исполнитель \tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}& \tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_clone_1000_0.tex b/test/tex/ltable_clone_1000_0.tex
new file mode 100644
index 0000000..c71d52a
--- /dev/null
+++ b/test/tex/ltable_clone_1000_0.tex
@@ -0,0 +1,359 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_clone_1_0.tex b/test/tex/ltable_clone_1_0.tex
new file mode 100644
index 0000000..86fb056
--- /dev/null
+++ b/test/tex/ltable_clone_1_0.tex
@@ -0,0 +1,387 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\centering}m{0.04\paperwidth}|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+ &\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+ ТУ &\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ Факт & & Факт & & & & & \tabularnewline
+\hline
+ ТУ &\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ Факт & & Факт & & & & & \tabularnewline
+\hline
+ ТУ &\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage Факт && Факт & & & & & \tabularnewline
+\hline
+ ТУ &\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ Факт & & Факт & & & & & \tabularnewline
+\hline
+ ТУ &\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ Факт & & Факт & & & & & \tabularnewline
+\hline
+ ТУ &\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ Факт & & Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}}{\centering{}\textbf{Параметр} } &\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}}{ \textbf{Наименование и единица измерения} } &\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{2}{|c}{ 1 } &\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} &\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} &\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} &\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} &\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+ Начальное смещение, град &\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ Коэффициент характеристики & & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c}{Параметр} &\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+ Обозначение &Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage $(\alpha_{\text{дк}})$ &Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+ $G_{\text{Т}}$ &Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Инженер по испытаниям &Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_clone_last_0.tex b/test/tex/ltable_clone_last_0.tex
new file mode 100644
index 0000000..c208749
--- /dev/null
+++ b/test/tex/ltable_clone_last_0.tex
@@ -0,0 +1,364 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\centering}m{0.09\paperwidth}|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+ \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}&\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+ -&\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+ -&\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+ 205&\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage && Факт & & & & & \tabularnewline
+\hline
+ -&\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+ 221&\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & & Факт & & & & & \tabularnewline
+\hline
+ -&\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & & Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\raggedright}m{0.19\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+ \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} &\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+ &\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline\newpage
+ 4 &\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+ &\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+ &\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+ &\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+ &\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage &\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+ &\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+ &\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+ &\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+ \multicolumn{10}{|c}{Значение, полученное при испытании}&\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+ 10&Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage &Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+ &Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}&Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ \multicolumn{3}{c|}{}& & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_clone_lastp1_0.tex b/test/tex/ltable_clone_lastp1_0.tex
new file mode 100644
index 0000000..c71d52a
--- /dev/null
+++ b/test/tex/ltable_clone_lastp1_0.tex
@@ -0,0 +1,359 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_double_embedded.tex b/test/tex/ltable_double_embedded.tex
new file mode 100644
index 0000000..5d8b023
--- /dev/null
+++ b/test/tex/ltable_double_embedded.tex
@@ -0,0 +1,11 @@
+\begin{longtable}{c}
+\begin{longtable}{c}aaa\begin{longtable}{c}bbb\end{longtable}\end{longtable}\tabularnewline
+
+% success
+\begin{longtable}{c}
+aaa\begin{longtable}{c}bbb\end{longtable}\end{longtable}\tabularnewline
+
+% fail
+\multirow{2}{0.11\paperwidth}{\begin{longtable}{c}aaa\begin{longtable}{c}bbb\end{longtable}\end{longtable}\tabularnewline
+\end{longtable}
+Немного русского текста в конце документа
diff --git a/test/tex/ltable_embedded.tex b/test/tex/ltable_embedded.tex
new file mode 100644
index 0000000..78c605c
--- /dev/null
+++ b/test/tex/ltable_embedded.tex
@@ -0,0 +1,3 @@
+\begin{longtable}{c}
+\begin{longtable}{c}\end{longtable}\end{longtable}
+Немного русского текста в конце документа
diff --git a/test/tex/ltable_rm0row.tex b/test/tex/ltable_rm0row.tex
new file mode 100644
index 0000000..bc6881f
--- /dev/null
+++ b/test/tex/ltable_rm0row.tex
@@ -0,0 +1,357 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+ & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+ ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ Факт & & & & & \tabularnewline
+\hline
+ ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ Факт & & & & & \tabularnewline
+\hline
+ ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage Факт & & & & & \tabularnewline
+\hline
+ ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ Факт & & & & & \tabularnewline
+\hline
+ ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ Факт & & & & & \tabularnewline
+\hline
+ ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{1}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{1}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{1}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{1}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{1}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{1}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+ Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{1}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+ Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+ $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_rm1000row.tex b/test/tex/ltable_rm1000row.tex
new file mode 100644
index 0000000..c71d52a
--- /dev/null
+++ b/test/tex/ltable_rm1000row.tex
@@ -0,0 +1,359 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_rm1row.tex b/test/tex/ltable_rm1row.tex
new file mode 100644
index 0000000..1c77930
--- /dev/null
+++ b/test/tex/ltable_rm1row.tex
@@ -0,0 +1,359 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\multicolumn{1}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Значение,
+полученное при испытании}} \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{1}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{1}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{1}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{1}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{1}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{1}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & \centering{}$K$ & & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{1}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_rm_last_row.tex b/test/tex/ltable_rm_last_row.tex
new file mode 100644
index 0000000..f6f0a86
--- /dev/null
+++ b/test/tex/ltable_rm_last_row.tex
@@ -0,0 +1,357 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english,russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{amstext}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
+ \text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+
+\usepackage{babel}
+
+
+
+
+
+\usepackage{babel}
+
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{flushright}
+ф. 07-726А
+\par\end{flushright}
+
+\begin{center}
+\textbf{Формулярные данные по 06В.00.0100ВТУ}
+\par\end{center}
+
+\begin{center}
+двигателя ТВ7-117В №\rule[-1pt]{3.5cm}{0.4pt} Температура наружного
+воздуха $t_{\text{н}}$, \rule[-1pt]{1cm}{0.4pt}, $\,^{\circ}\mbox{C}$
+\par\end{center}
+
+от\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}
+20~~~~г.~~~~~~Давление наружного воздуха, $P_{\text{Н}}$\rule[-1pt]{1cm}{0.4pt}
+мм. рт. ст.
+
+Drossel55.Table1
+
+\begin{longtable}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} \tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 \tabularnewline
+\hline
+ & Факт & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 \tabularnewline
+\hline
+ & Факт & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 \tabularnewline
+\hline
+\newpage & Факт & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 \tabularnewline
+\hline
+ & Факт & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 \tabularnewline
+\hline \newpage
+ & Факт & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - \tabularnewline
+\hline
+ & Факт & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|}
+\hline
+\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\centering{}\textbf{Параметр} } & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Обозначение}} & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}Режим}} \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ \textbf{Наименование и единица измерения} } & & \tabularnewline
+\endhead
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & \tabularnewline
+\hline
+\end{longtable}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{9}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{2}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{2}{c|}{}\tabularnewline
+\bottomrule
+\end{longtable}
+\par\end{flushleft}
+
+\begin{tabular}{|>{\raggedright}m{0.11\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
+\hline
+ \newpage
+\multirow{2}{0.11\paperwidth}{\centering{}\linebreak{}
+ Режим работы двигателя} & & \multirow{2}{0.1\paperwidth}{\textbf{\centering{}}\linebreak{}
+ Мощность на выводном валу \textbf{N л.с.} } & \multicolumn{2}{c|}{Частота вращения ротора} & \multirow{2}{0.1\paperwidth}{\centering{}Температура газа
+перед свободнойтурбиной не более \textbf{t$_{4}$},$\,^{\circ}\mbox{C}$} & \multirow{2}{0.09\paperwidth}{\centering{}Удельный расход
+топлива не более \textbf{C$_{R\text{ пр}}$}г/л.с.ч.}\tabularnewline
+\hline
+ & & & турбо-компрессора не более \textbf{n$_{\text{тк пр}}$}, \% & свободной турбины \textbf{n$_{\lyxmathsym{ст}}$}, \% & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*}2,5-минутной мощности} & ТУ & & 101,0 & 98$\pm$0,5 & 805 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{30-минутной мощности} & ТУ & 3000 & 98,5 & 98$\pm$0,5 & 795 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{ВЗЛ} & ТУ & 2800 & 97,5 & 98$\pm$0,5 & 775 & 205\tabularnewline
+\hline
+\newpage & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МП} & ТУ & 2100 & 94,0 & 98$\pm$0,5 & 705 & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{МКр} & ТУ & 1900 & 93,0 & 98$\pm$0,5 & 680 & 221\tabularnewline
+\hline \newpage
+ & Факт & & & & & \tabularnewline
+\hline
+\multirow{2}{0.11\paperwidth}{{*} ЗМГ} & ТУ & - & - & 80$\pm$0,5 & - & -\tabularnewline
+\hline
+ & Факт & & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{flushleft}
+{*} - измеренные параметры\hspace*{1in}\textbf{\textsc{Настроечные
+параметры}}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table2\foreignlanguage{english}{}%
+\begin{tabular}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\raggedright}m{0.19\paperwidth}|}
+\hline
+\hline\newpage
+\multicolumn{2}{|c|}{ 1 } & 2 & 3 & 4 \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мг}}0$ & МГ & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина частоты вращения
+
+ротора турбокомпрессора, \%%
+\end{minipage}} & \centering{}$n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[c]{0.45\columnwidth}%
+Настроечная величина минимальной частоты вращения ротора турбокомпрессора,
+\%%
+\end{minipage}} & \centering{}$n_{\text{тк\_мин}}0$ & МГ & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+при <<Разрешении РПМ>>,\%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_взл}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Настроечная величина перестройки частоты вращения ротора турбокомпрессора
+по команде <<Тренировочный режим>>, \%%
+\end{minipage}} & \centering{}$\Delta n_{\text{тк\_тр}}0$ & <<Взлёт>> & \tabularnewline
+\hline
+\multicolumn{2}{|c|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Расходный коэффициент 1-го контура форсунок%
+\end{minipage}} & \centering{}$\Psi_{(\mu F)}$ & - & \tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{ %
+\begin{minipage}[t]{0.45\columnwidth}%
+Программный расход топлива в РС, кг/ч%
+\end{minipage}} & \centering{}$G_{\text{т прог РС МГ}}$ & - & \tabularnewline
+\hline
+\multirow{2}{0.15\paperwidth}{Параметры измерителя крутящего
+момента\foreignlanguage{english}{ } } & Начальное смещение, град & \centering{}$\phi_{\text{икм}}0$ & \multirow{2}{0.1\paperwidth}{\centering{}-} & \tabularnewline
+\hline
+ & Коэффициент характеристики & \centering{}$K$ & & \tabularnewline
+\hline
+\end{tabular}
+\par\end{flushleft}
+
+Расход масла, л/ч \rule[-1pt]{2cm}{0.4pt} (не более 0,2)
+
+\begin{flushleft}
+\textbf{Зависимость между положением дозирующей иглы и расходом топлива
+$G_{\text{т}}=f(\alpha_{\text{дк}})$}
+\par\end{flushleft}
+
+\begin{flushleft}
+Drossel55.Table3
+\par\end{flushleft}
+
+\begin{flushleft}
+\begin{tabular}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
+\toprule
+\multicolumn{2}{|c|}{Параметр} & \multicolumn{10}{c|}{Значение, полученное при испытании}\tabularnewline
+\midrule
+Наименование и единица измерения & Обозначение & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
+\midrule
+ \newpage Положение дозирующей иглы, град & $(\alpha_{\text{дк}})$ & & & & & & & & & & \tabularnewline
+\midrule
+Расход топлива, кг/ч & $G_{\text{Т}}$ & & & & & & & & & & \tabularnewline
+\midrule
+\newpage Исполнитель & Инженер по испытаниям & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.1\columnwidth}%
+Начальник БТК ИК%
+\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Начальник участка ИД%
+\end{minipage}} & \multicolumn{3}{c|}{%
+\begin{minipage}[t]{0.15\columnwidth}%
+Представитель заказчика%
+\end{minipage}}\tabularnewline
+\midrule
+ & & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
+\bottomrule
+\end{tabular}
+\par\end{flushleft}
+
+
+\end{document}
diff --git a/test/tex/ltable_square_arg.lyx b/test/tex/ltable_square_arg.lyx
new file mode 100644
index 0000000..a65220c
--- /dev/null
+++ b/test/tex/ltable_square_arg.lyx
@@ -0,0 +1,126 @@
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
+\begin_document
+\begin_header
+\textclass article
+\use_default_options true
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman default
+\font_sans default
+\font_typewriter default
+\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 default
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_amsmath 1
+\use_esint 1
+\use_mhchem 1
+\use_mathdots 1
+\cite_engine basic
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\use_refstyle 1
+\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
+\begin_inset Tabular
+
+
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+Center
+\end_layout
+
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\begin_inset Tabular
+
+
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+Left
+\end_layout
+
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\begin_inset Tabular
+
+
+
+
+
+\begin_inset Text
+
+\begin_layout Plain Layout
+Right
+\end_layout
+
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/test/tex/ltable_square_arg.tex b/test/tex/ltable_square_arg.tex
new file mode 100644
index 0000000..55653f4
--- /dev/null
+++ b/test/tex/ltable_square_arg.tex
@@ -0,0 +1,27 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[english]{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin9]{inputenc}
+\usepackage{longtable}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+\begin{longtable}[c]{c}
+Center\tabularnewline
+\end{longtable}%
+\begin{longtable}[l]{c}
+Left\tabularnewline
+\end{longtable}%
+\begin{longtable}[r]{c}
+Right\tabularnewline
+\end{longtable}
+\end{document}
diff --git a/test/tex/ltable_test.c b/test/tex/ltable_test.c
new file mode 100644
index 0000000..2105a30
--- /dev/null
+++ b/test/tex/ltable_test.c
@@ -0,0 +1,177 @@
+///@cond INTERNAL
+#include
+
+#include
+#include
+
+#include
+
+#include "txr-texparser.h"
+
+int main (int argc, char *argv[])
+{
+ GError *parse_error = NULL;
+ GError *error = NULL;
+ gchar *contents = NULL,
+ *generated = NULL,
+ *generated_etalon = NULL;
+ TXRGlob *doc = NULL;
+ TXRGlobIter it;
+
+ setlocale (LC_ALL, "");
+
+#if (!GLIB_CHECK_VERSION (2, 36, 0))
+ g_type_init ();
+#endif
+
+ /* warning stub */
+ g_assert (4 == argc || 5 == argc);
+
+ /* load file contents
+ */
+ if (!g_file_get_contents (argv[1], &contents, NULL, &error))
+ {
+ g_printf ("Unable to read file: %s\n", error->message);
+ goto err;
+ }
+ g_assert ((contents == NULL && error != NULL)
+ || (contents != NULL && error == NULL));
+
+ if (!g_file_get_contents (argv[2], &generated_etalon, NULL, &error))
+ {
+ g_printf ("Unable to read file: %s\n", error->message);
+ goto err;
+ }
+ g_assert ((generated_etalon == NULL && error != NULL)
+ || (generated_etalon != NULL && error == NULL));
+
+ /* parse TeX */
+ doc = txr_parse (contents, &parse_error);
+
+ if (parse_error)
+ {
+ g_print ("Error parsing TeX document: %s\n", parse_error->message);
+ goto err;
+ }
+
+ else
+ {
+ puts ("TeX document successfully parsed\n");
+ }
+
+ /* Perform several col/row operations */
+ g_printf ("Walk through all objects\n");
+ for (it = txr_glob_first (doc); it; it = txr_glob_iter_next (it))
+ {
+ g_printf ("%s\n", G_OBJECT_TYPE_NAME (*it));
+
+ if (!g_strcmp0 ("TXRLongtable", G_OBJECT_TYPE_NAME (*it)))
+ {
+ TXRLongtable *ltable = TXR_LONGTABLE (*it);
+ guint last_row = txr_col_params_length (txr_longtable_get_col_params (ltable)) - 1;
+
+ if (!g_strcmp0 ("rm0row", argv[3]))
+ txr_longtable_remove_col (ltable, 0, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("rm1row", argv[3]))
+ txr_longtable_remove_col (ltable, 1, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("rm1000row", argv[3]))
+ txr_longtable_remove_col (ltable, 1000, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("rm_last_row", argv[3]))
+ txr_longtable_remove_col (ltable, last_row, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("clone_0_0", argv[3]))
+ txr_longtable_clone_col (ltable, 0, 0, TRUE, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("clone_0_1", argv[3]))
+ txr_longtable_clone_col (ltable, 0, 1, FALSE, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("clone_1_0", argv[3]))
+ txr_longtable_clone_col (ltable, 1, 0, TRUE, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("clone_0_last", argv[3]))
+ txr_longtable_clone_col (ltable, 0, last_row, FALSE, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("clone_last_0", argv[3]))
+ txr_longtable_clone_col (ltable, last_row, 0, TRUE, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("clone_0_lastp1", argv[3]))
+ txr_longtable_clone_col (ltable, 0, last_row + 1, FALSE, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("clone_lastp1_0", argv[3]))
+ txr_longtable_clone_col (ltable, last_row + 1, 0, TRUE, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("clone_0_1000", argv[3]))
+ txr_longtable_clone_col (ltable, 0, 1000, FALSE, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("clone_1000_0", argv[3]))
+ txr_longtable_clone_col (ltable, 1000, 0, TRUE, TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ else if (!g_strcmp0 ("append_row0", argv[3]))
+ {
+ TXRSubtable *table = txr_longtable_get_table (ltable);
+
+ if (table)
+ {
+ TXRSubtableIter table_it;
+ TXRRow *row;
+
+ table_it = txr_subtable_first (table);
+ if (table_it && NULL != (row = TXR_ROW (*table_it)))
+ txr_subtable_append (table, txr_row_clone (row),
+ TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ }
+ }
+ else
+ {
+ g_print ("Incorrect operation '%s' specified.\n", argv[3]);
+ goto err;
+ }
+ }
+ else if (!g_strcmp0 ("TXRTabular", G_OBJECT_TYPE_NAME (*it)))
+ {
+ TXRTabular *tabular = TXR_TABULAR (*it);
+
+ if (!g_strcmp0 ("append_row0", argv[3]))
+ {
+ TXRSubtable *table = txr_tabular_get_table (tabular);
+
+ if (table)
+ {
+ TXRSubtableIter table_it;
+ TXRRow *row;
+
+ table_it = txr_subtable_first (table);
+ if (table_it && NULL != (row = TXR_ROW (*table_it)))
+ txr_subtable_append (table, txr_row_clone (row),
+ TXR_TABLE_OP_LINE_STYLE_BORDER | TXR_TABLE_OP_LINE_STYLE_DBLLINES);
+ }
+ }
+ }
+ }
+ g_printf ("end of objects\n\n");
+
+
+ /* generate plain-TeX document */
+ generated = txr_glob_gen (doc);
+
+ if (!g_strcmp0 (generated_etalon, generated))
+ g_printf ("Etalon and generated text are EQUAL ;-)\n");
+ else
+ g_printf ("Etalon and generated text are NOT EQUAL ;-(\n");
+
+ g_printf ("--- Generated plain-TeX (generated) ---\n%s", generated);
+
+ if (argv[4])
+ g_file_set_contents (argv[4], generated, -1, NULL);
+
+err:
+//end:
+ g_free (contents);
+ g_free (generated);
+ g_free (generated_etalon);
+
+ if (parse_error)
+ {
+ g_error_free (parse_error);
+ }
+
+ if (error)
+ {
+ g_error_free (error);
+ }
+
+ txr_glob_unref (doc);
+
+ return 0;
+}
+///@endcond
diff --git a/test/tex/old_tex_parser.geany b/test/tex/old_tex_parser.geany
new file mode 100644
index 0000000..1e8e15d
--- /dev/null
+++ b/test/tex/old_tex_parser.geany
@@ -0,0 +1,47 @@
+
+[indentation]
+indent_width=8
+indent_type=1
+indent_hard_tab_width=8
+detect_indent=false
+indent_mode=2
+
+[project]
+name=tex_parser
+base_path=/home/kolan/dev/c/tex_parser/
+description=
+
+[long line marker]
+long_line_behaviour=1
+long_line_column=72
+
+[files]
+current_page=3
+FILE_NAME_0=259;C;0;16;1;1;1;/home/kolan/dev/c/tex_parser/tex_parser_test.c;0
+FILE_NAME_1=3895;C;0;16;1;1;1;/home/kolan/dev/c/tex_parser/tex_parser.c;0
+FILE_NAME_2=3453;C;0;16;1;1;1;/home/kolan/dev/c/tex_parser/tex_parser.h;0
+FILE_NAME_3=579;C;0;16;1;1;1;/home/kolan/dev/c/tex_parser/tex_parser_tags.h;0
+
+[build-menu]
+NF_00_LB=_Сделать
+NF_00_CM=make
+NF_00_WD=%p
+NF_01_LB=Сделать заданную _цель
+NF_01_CM=make
+NF_01_WD=%p
+NF_02_LB=Сделать _объект
+NF_02_CM=make %e.o
+NF_02_WD=%p
+CFT_00_LB=_Скомпилировать
+CFT_00_CM=gcc -Wall -c "%f"
+CFT_00_WD=%p
+CFT_01_LB=_Сборка
+CFT_01_CM=gcc -Wall -o "%e" "%f" -lhash
+CFT_01_WD=%p
+CFT_02_LB=
+CFT_02_CM=
+CFT_02_WD=%p
+filetypes=C;
+EX_00_LB=_Выполнить
+EX_00_CM=./tex_parser_test ex1.tex
+EX_00_WD=%p
diff --git a/test/tex/table_in_table.tex b/test/tex/table_in_table.tex
new file mode 100644
index 0000000..7959128
--- /dev/null
+++ b/test/tex/table_in_table.tex
@@ -0,0 +1,161 @@
+%% LyX 2.0.5 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin9]{inputenc}
+\usepackage{longtable}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+\makeatother
+
+\begin{document}
+\begin{longtable}{|c|c|c|c|c|}
+\caption{}
+\tabularnewline
+\caption{}
+\tabularnewline
+\endfirsthead
+\caption{}
+\tabularnewline
+\endhead
+\caption{}
+\tabularnewline
+\endfoot
+\caption{}
+\tabularnewline
+\endlastfoot
+\hline
+ & & & & \tabularnewline
+\hline
+\hline
+ & & %
+\begin{tabular}{|c|c|c|c|}
+\hline
+ & & & \tabularnewline
+\hline
+\hline
+ & & & \tabularnewline
+\hline
+ & & & \tabularnewline
+\hline
+ & & & \tabularnewline
+\hline
+ & & & \tabularnewline
+\hline
+\end{tabular} & & \tabularnewline
+\hline
+ & & & & \tabularnewline
+\hline
+ & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{tabular}{|c|c|c|c|c|}
+\hline
+ & & & & \tabularnewline
+\hline
+\hline
+ & & & & \tabularnewline
+\hline
+ & & %
+\begin{tabular}{|c|c|c|c|}
+\hline
+ & & & \tabularnewline
+\hline
+\hline
+ & & & \tabularnewline
+\hline
+ & & & \tabularnewline
+\hline
+ & & & \tabularnewline
+\hline
+\end{tabular} & & \tabularnewline
+\hline
+ & & & & \tabularnewline
+\hline
+ & & & & \tabularnewline
+\hline
+ & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{tabular}{|c|c|c|c|c|}
+\hline
+ & & & & \tabularnewline
+\hline
+\hline
+ & & & & \tabularnewline
+\hline
+ & & %
+\begin{longtable}{|c|c|c|c|}
+\hline
+ & & & \tabularnewline
+\hline
+\hline
+ & & & \tabularnewline
+\hline
+ & & & \tabularnewline
+\hline
+ & & & \tabularnewline
+\hline
+\end{longtable} & & \tabularnewline
+\hline
+ & & & & \tabularnewline
+\hline
+ & & & & \tabularnewline
+\hline
+ & & & & \tabularnewline
+\hline
+\end{tabular}
+
+\begin{longtable}{|c|c|c|c|c|}
+\caption{}
+\tabularnewline
+\caption{}
+\tabularnewline
+\endfirsthead
+\caption{}
+\tabularnewline
+\endhead
+\caption{}
+\tabularnewline
+\endfoot
+\caption{}
+\tabularnewline
+\endlastfoot
+\hline
+ & & & & \tabularnewline
+\hline
+\hline
+ & & %
+\begin{tabular}{|c|c|c|c|}
+\hline
+ & & & \tabularnewline
+\hline
+\hline
+ & & & \tabularnewline
+\hline
+ & & & \tabularnewline
+\hline
+ & & & \tabularnewline
+\hline
+ & & & \tabularnewline
+\hline
+\end{tabular} & & \tabularnewline
+\hline
+ & & & & \tabularnewline
+\hline
+ & & & & \tabularnewline
+\hline
+\end{longtable}
+
+\begin{tabular}{|c|c|c|c|c|}
+\begin{tabular}{|c|c|c|c|}intext\tabularnewline\end{tabular}\tabularnewline
+outtext
+\end{tabular}
+\end{document}
diff --git a/test/tex/table_rows.etalon.tex b/test/tex/table_rows.etalon.tex
new file mode 100644
index 0000000..dd4fd18
--- /dev/null
+++ b/test/tex/table_rows.etalon.tex
@@ -0,0 +1,55 @@
+%% LyX 2.0.5 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin9]{inputenc}
+\usepackage{longtable}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+\makeatother
+
+\begin{document}
+\begin{longtable}{ccccc}
+ ldskjf & sdlf & sdfl ja & dspfaj & sdlfj \tabularnewline
+ ldskjf & sdlf & sdfl ja & dspfaj & sdlfj \tabularnewline
+\end{longtable}
+
+fdsa
+
+sdf
+
+s
+
+\begin{tabular}{ccccc}
+ ldskfj & sdfjap & dslkfj & sdlaf;j & afksjd \tabularnewline
+ ldskfj & sdfjap & dslkfj & sdlaf;j & afksjd \tabularnewline
+\end{tabular}
+
+\begin{longtable}{ccccc}
+\hline
+ ldskjf & sdlf & sdfl ja & dspfaj & sdlfj \tabularnewline
+\hline
+ ldskjf & sdlf & sdfl ja & dspfaj & sdlfj \tabularnewline
+\hline
+\end{longtable}
+
+fdsa
+
+sdf
+
+s
+
+\begin{tabular}{ccccc}
+\hline
+ ldskfj & sdfjap & dslkfj & sdlaf;j & afksjd \tabularnewline
+\hline
+ ldskfj & sdfjap & dslkfj & sdlaf;j & afksjd \tabularnewline
+\hline
+\end{tabular}
+
+\end{document}
diff --git a/test/tex/table_rows.tex b/test/tex/table_rows.tex
new file mode 100644
index 0000000..d29770b
--- /dev/null
+++ b/test/tex/table_rows.tex
@@ -0,0 +1,49 @@
+%% LyX 2.0.5 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin9]{inputenc}
+\usepackage{longtable}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+\makeatother
+
+\begin{document}
+\begin{longtable}{ccccc}
+ ldskjf & sdlf & sdfl ja & dspfaj & sdlfj \tabularnewline
+\end{longtable}
+
+fdsa
+
+sdf
+
+s
+
+\begin{tabular}{ccccc}
+ ldskfj & sdfjap & dslkfj & sdlaf;j & afksjd \tabularnewline
+\end{tabular}
+
+\begin{longtable}{ccccc}
+\hline
+ ldskjf & sdlf & sdfl ja & dspfaj & sdlfj \tabularnewline
+\hline
+\end{longtable}
+
+fdsa
+
+sdf
+
+s
+
+\begin{tabular}{ccccc}
+\hline
+ ldskfj & sdfjap & dslkfj & sdlaf;j & afksjd \tabularnewline
+\hline
+\end{tabular}
+
+\end{document}
diff --git a/test/tex/throttle.lyx b/test/tex/throttle.lyx
new file mode 100644
index 0000000..b7ef81c
--- /dev/null
+++ b/test/tex/throttle.lyx
@@ -0,0 +1,4609 @@
+#LyX file created by tex2lyx 2.0.3
+\lyxformat 413
+\begin_document
+\begin_header
+\textclass article
+\begin_preamble
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+\end_preamble
+\use_default_options false
+\language russian
+\language_package default
+\inputencoding utf8x
+\fontencoding T1
+\font_roman default
+\font_sans default
+\font_typewriter default
+\font_default_family default
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+\graphics default
+\paperfontsize default
+\spacing single
+\use_hyperref 0
+\papersize default
+\use_geometry true
+\use_amsmath 1
+\use_esint 1
+\use_mhchem 0
+\use_mathdots 0
+\cite_engine basic
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\use_refstyle 0
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\quotes_language french
+\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
+
+DrosselTable1
+\end_layout
+
+\begin_layout Standard
+
+
+\begin_inset Tabular
+
+
+
+
+
+
+
+
+
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Сводный протокол результатов испытания двигателя ТВ7-117В №
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Стенд №18
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+ ИУД СИК
+\begin_inset space ~
+
+\end_inset
+
+ Дата:
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+ г. Время:
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+ Рн =
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+ мм рт ст
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+ tвх =
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset Formula $\,^{\circ}\mbox{C}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Характеристика
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+
+\begin_inset space ~
+
+\end_inset
+
+ Акт сдачи, контрольные точки
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+Составил
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Инженер по испытаниям
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Начальник БТК
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Начальник участка УИД СИК
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Представитель заказчика
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\shape italic
+Подпись
+\shape default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\shape italic
+Подпись
+\shape default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\shape italic
+Подпись
+\shape default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+
+\shape italic
+Подпись
+\shape default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\shape italic
+Подпись
+\shape default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\shape italic
+фамилия
+\shape default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\shape italic
+фамилия
+\shape default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\shape italic
+фамилия
+\shape default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\shape italic
+фамилия
+\shape default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\shape italic
+фамилия
+\shape default
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Усреднённые значения по режимам
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Параметр
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Nепр
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Ce
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Gт пр
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+nтк пр
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+t*z ст пр
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Пк
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+Режим
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ЗМГ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+0,4 мП
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Ne1650
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Мкр
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+МП
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Ne2500
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Взл
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+30-мин.м.
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Замеренные параметры
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Параметр
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Ne
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Ce
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Gт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+nтк
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+t*z ст
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Пк
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ЗМГ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+2,5 мин.м.
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Оценка режимов по ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Параметр
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+Neпр
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+не более nтк пр,%
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperheight
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+nст,%
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperheight
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+не более t*z ст пр,
+\begin_inset Formula $\,^{\circ}\mbox{C}$
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperheight
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+не более Ce г/л.с.ч.
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperheight
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+Gт пр, кг/час
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Режим
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+1900
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+93,0
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98,0
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+680
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+221
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Мкр
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Откл.
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+2100
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+94,0
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98,0
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+705
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+МП
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Откл.
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+2800
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+97,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98,0
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+775
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+205
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Взл
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Откл.
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+3000
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98,0
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+795
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+30-мин.м.
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Откл.
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Замеренные параметры
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Параметр
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+Ne
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperwidth
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+не более nтк,%
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperheight
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+nст,%
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperheight
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+не более t*z ст,
+\begin_inset Formula $\,^{\circ}\mbox{C}$
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperheight
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+не более Ce г/л.с.ч.
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+multirow
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+2
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+0.07
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+paperheight
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+{}
+\end_layout
+
+\end_inset
+
+Gт, кг/час
+\begin_inset ERT
+status collapsed
+
+\begin_layout Standard
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Режим
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+80,0
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ЗМГ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Откл.
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+ТУ
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+101,0
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+98,0
+\begin_inset Formula $\pm$
+\end_inset
+
+0,5
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+805
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+-
+\end_layout
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+2,5 мин.м.
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Факт
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Откл.
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+A0
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+A1
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+A2
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+СКО
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\begin_layout Standard
+
+Примечание
+\end_layout
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+
+
+\begin_inset Graphics
+ filename 174.eps
+ scale 300
+ rotateAngle 25
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/test/tex/throttle.tex b/test/tex/throttle.tex
new file mode 100644
index 0000000..06b60b7
--- /dev/null
+++ b/test/tex/throttle.tex
@@ -0,0 +1,232 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{multirow}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+DrosselTable1
+
+\begin{longtable}{|||>{\centering}p{0.11\linewidth}|||||||||>{\raggedright}p{0.05\linewidth}|>{\centering}p{0.07\paperwidth}|p{0.07\paperwidth}|||||>{\centering}m{0.07\paperheight}|>{\centering}m{0.07\paperheight}|>{\centering}p{0.07\paperheight}|>{\centering}p{0.07\paperheight}|||}
+\hline
+\multicolumn{8}{|c|}{Сводный протокол результатов испытания двигателя ТВ7-117В №}\tabularnewline
+\multicolumn{8}{|c|}{Стенд №18 ~~ ИУД СИК ~ Дата: ~~~~~~~~ г. Время: ~~~~~~~~~
+Рн = ~~~ мм рт ст~~ tвх = ~~~ $\,^{\circ}\mbox{C}$}\tabularnewline
+\multicolumn{8}{|c|}{Характеристика ~~~~~~~ Акт сдачи, контрольные точки}\tabularnewline
+\hline
+\endhead
+\multicolumn{2}{|>{\centering}m{0.11\linewidth}|}{\centering{}Составил} & \multicolumn{2}{c|}{Инженер по испытаниям} & Начальник БТК & Начальник участка УИД СИК & \multicolumn{2}{c|}{Представитель заказчика}\tabularnewline
+\hline
+\newpage\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\centering{}\textit{Подпись}} & \multicolumn{2}{c|}{\textit{Подпись}} & \centering{}\textit{Подпись} & \centering{}\textit{Подпись} & \multicolumn{2}{c|}{\textit{Подпись}}\tabularnewline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\textit{фамилия}} & \multicolumn{2}{c|}{\textit{фамилия}} & \multicolumn{1}{c|}{\textit{фамилия}} & \textit{фамилия} & \multicolumn{2}{c|}{\textit{фамилия}}\tabularnewline
+\hline
+\endfoot
+\multicolumn{8}{|l|}{Усреднённые значения по режимам}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Nепр & Ce & Gт пр & nтк пр & t{*}z ст пр & Пк\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.07\paperwidth}|}{\centering{Режим}} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{0,4 мП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne1650} & & & & & & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|l|}{Мкр} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{МП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne2500} & & \multicolumn{1}{c}{\multirow{2}{*}{Много текста}} & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Взл} & & & \multicolumn{1}{||c||}{\multirow{4}{*}{Много текста}} & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{30-мин.м.} & & & & & & \tabularnewline
+\hline \newpage
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Ne & Ce & Gт & nтк & t{*}z ст & Пк\tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{2,5 мин.м.} & & & & & & \tabularnewline
+\hline
+ \newpage \multicolumn{8}{|c|}{Оценка режимов по ТУ}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Neпр} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк пр,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст пр,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт пр, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & 1900 & 93,0 & 98,0$\pm$0,5 & 680 & 221 & -\tabularnewline
+\hline
+\cline{1-1} \cline{3-3} \cline{5-6}
+Мкр & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2100 & 94,0 & 98,0$\pm$0,5 & 705 & - & -\tabularnewline
+\hline
+МП & Факт & \ \ \ \ & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2800 & 97,5 & 98,0$\pm$0,5 & 775 & 205 & -\tabularnewline
+\hline
+Взл & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 3000 & 98,5 & 98,0$\pm$0,5 & 795 & - & -\tabularnewline
+\hline
+30-мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\newpage \multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Ne} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline \newpage
+ & ТУ & - & & 80,0$\pm$0,5 & - & - & -\tabularnewline
+\hline
+ЗМГ & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & - & 101,0 & 98,0$\pm$0,5 & 805 & - & -\tabularnewline
+\hline
+2,5 мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A0} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A1} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A2} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{СКО} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{Примечание} & \multicolumn{5}{c|}{}\tabularnewline
+\hline
+\end{longtable}
+
+\begin{tabular}{|||>{\centering}p{0.11\linewidth}|||||||||>{\raggedright}p{0.05\linewidth}|p{0.07\paperwidth}|>{\centering}p{0.07\paperwidth}|||||>{\centering}m{0.07\paperheight}|>{\centering}m{0.07\paperheight}|>{\centering}p{0.07\paperheight}|>{\centering}p{0.07\paperheight}|||}
+\hline
+\multicolumn{8}{|l|}{Усреднённые значения по режимам}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Nепр & Ce & Gт пр & nтк пр & t{*}z ст пр & Пк\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.07\paperwidth}|}{\centering{Режим}} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{0,4 мП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne1650} & \ \ \ \ \ \ \ & & & & & \tabularnewline
+\hline\newpage
+\multicolumn{2}{|l|}{Мкр} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{МП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne2500} & & \multicolumn{1}{c}{\multirow{2}{*}{Много текста}} & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Взл} & & & \multicolumn{1}{||c||}{\multirow{4}{*}{Много текста}} & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{30-мин.м.} & & & & & & \tabularnewline
+\hline \newpage
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Ne & Ce & Gт & nтк & t{*}z ст & Пк\tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{2,5 мин.м.} & & & & & & \tabularnewline
+\hline
+ \newpage \multicolumn{8}{|c|}{Оценка режимов по ТУ}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Neпр} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк пр,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст пр,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт пр, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & 1900 & 93,0 & 98,0$\pm$0,5 & 680 & 221 & -\tabularnewline
+\hline
+\cline{1-1} \cline{3-3} \cline{5-6}
+Мкр & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2100 & 94,0 & 98,0$\pm$0,5 & 705 & - & -\tabularnewline
+\hline
+МП & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2800 & 97,5 & 98,0$\pm$0,5 & 775 & 205 & -\tabularnewline
+\hline
+Взл & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 3000 & 98,5 & 98,0$\pm$0,5 & 795 & - & -\tabularnewline
+\hline
+30-мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\newpage \multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Ne} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline \newpage
+ & ТУ & - & & 80,0$\pm$0,5 & - & - & -\tabularnewline
+\hline
+ЗМГ & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & - & 101,0 & 98,0$\pm$0,5 & 805 & - & -\tabularnewline
+\hline
+2,5 мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A0} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A1} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A2} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{СКО} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{Примечание} & \multicolumn{5}{c|}{}\tabularnewline
+\hline
+\end{tabular}
+
+\end{document}
diff --git a/test/tex/throttle_VK2500.tex b/test/tex/throttle_VK2500.tex
new file mode 100644
index 0000000..62a748d
--- /dev/null
+++ b/test/tex/throttle_VK2500.tex
@@ -0,0 +1,135 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage[a4paper]{geometry}
+\geometry{verbose,tmargin=1cm,bmargin=2cm,lmargin=2cm,rmargin=1cm}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{multirow}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+Номера замеров: {[}Zamer.List{]}
+
+{[}Zamer.Stend.Last{]}
+
+\begin{flushright}
+Форма 07-622
+\par\end{flushright}
+
+\begin{longtable}{|>{\centering}p{0.11\linewidth}||>{\raggedright}p{0.05\linewidth}|c|c|c|c|c|c|}
+\hline
+\multicolumn{8}{|c|}{\textbf{\large Сводный протокол результатов испытания двигателя }}\tabularnewline
+\multicolumn{8}{|c|}{\textbf{\large ВК-2500-02 № {[}Zamer.EngineData.Last{]}}}\tabularnewline
+\multicolumn{8}{|c|}{Стенд № {[}Zamer.Stend.Last{]} ~~ ИУД СИК ~ Дата: {[}Zamer.Time2.Last{]} }\tabularnewline
+\multicolumn{8}{|c|}{Рн = {[}Zamer.Ph.Last{]} мм рт ст~~ tвх = {[}Zamer.tvh\_zv.Last{]}
+$\,^{\circ}\mbox{C}$}\tabularnewline
+\multicolumn{8}{|c|}{Характеристика ~~~~~~~ Акт сдачи, контрольные точки}\tabularnewline
+\endhead
+\hline
+\multicolumn{2}{|c|}{} & Nе & nтк & tг & Gт & Gв & Пк\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.07\paperwidth}|}{Режим МГ} & \multicolumn{6}{c|}{}\tabularnewline
+\hline
+\multicolumn{2}{|l|}{Факт.} & {[}AvZam.Ne.modeMG{]} & {[}AvZam.ntk.modeMG{]} & {[}AvZam.tg.modeMG{]} & {[}AvZam.Gt.modeMG{]} & {[}AvZam.Gv.modeMG{]} & {[}AvZam.Pik.modeMG{]}\tabularnewline
+\hline
+\multicolumn{2}{|l|}{ТУ} & {[}TU.Ne.modeMG{]} & {[}TU.ntk.modeMG{]} & {[}TU.tg.modeMG{]} & {[}TU.Gt.modeMG{]} & {[}TU.Gv.modeMG{]} & {[}TU.Pik.modeMG{]}\tabularnewline
+\hline
+\multicolumn{2}{|l|}{Откл.} & {[}Diff.Ne.modeMG{]} & {[}Diff.ntk.modeMG{]} & {[}Diff.tg.modeMG{]} & {[}Diff.Gt.modeMG{]} & {[}Diff.Gv.modeMG{]} & {[}Diff.Pik.modeMG{]}\tabularnewline
+\hline
+\end{longtable}%
+\begin{longtable}{|c|c|c|c|c|c|c|c|}
+\hline
+Режим & Ne пр & nтк пр & tг пр & Gт пр & Ce & Gв пр & Пк\tabularnewline
+\hline
+ЧР & {[}AvZam.Ne\_pr.modeChR{]} & {[}AvZam.ntk\_pr.modeChR{]} & {[}AvZam.tg\_pr.modeChR{]} & {[}AvZam.Gt\_pr.modeChR{]} & {[}AvZam.Ce.modeChR{]} & {[}AvZam.Gv\_pr.modeChR{]} & {[}AvZam.Pik.modeChR{]}\tabularnewline
+\hline
+Взлет & {[}AvZam.Ne\_pr.modeVZL{]} & {[}AvZam.ntk\_pr.modeVZL{]} & {[}AvZam.tg\_pr.modeVZL{]} & {[}AvZam.Gt\_pr.modeVZL{]} & {[}AvZam.Ce.modeVZL{]} & {[}AvZam.Gv\_pr.modeVzl{]} & {[}AvZam.Pik.modeVzl{]}\tabularnewline
+\hline
+Номинал & {[}AvZam.Ne\_pr.modeMP{]} & {[}AvZam.ntk\_pr.modeMP{]} & {[}AvZam.tg\_pr.modeMP{]} & {[}AvZam.Gt\_pr.modeMP{]} & {[}AvZam.Ce.modeMP{]} & {[}AvZam.Gv\_pr.modeMP{]} & {[}AvZam.Pik.modeMP{]}\tabularnewline
+\hline
+1крейс. & {[}AvZam.Ne\_pr.mode1KR{]} & {[}AvZam.ntk\_pr.mode1KR{]} & {[}AvZam.tg\_pr.mode1KR{]} & {[}AvZam.Gt\_pr.mode1KR{]} & {[}AvZam.Ce.mode1KR{]} & {[}AvZam.Gv\_pr.mode1KR{]} & {[}AvZam.Pik.mode1KR{]}\tabularnewline
+\hline
+2крейс. & {[}AvZam.Ne\_pr.mode2KR{]} & {[}AvZam.ntk\_pr.mode2KR{]} & {[}AvZam.tg\_pr.mode2KR{]} & {[}AvZam.Gt\_pr.mode2KR{]} & {[}AvZam.Ce.mode2KR{]} & {[}AvZam.Gv\_pr.mode2KR{]} & {[}AvZam.Pik.mode2KR{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{А0} & {[}Coef.ntk\_pr.0{]} & {[}Coef.tg\_pr.0{]} & {[}Coef.Gt\_pr.0{]} & {[}Coef.Ce.0{]} & {[}Coef.Gv\_pr.0{]} & {[}Coef.Pik.0{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{А1} & {[}Coef.ntk\_pr.1{]} & {[}Coef.tg\_pr.1{]} & {[}Coef.Gt\_pr.1{]} & {[}Coef.Ce.1{]} & {[}Coef.Gv\_pr.1{]} & {[}Coef.Pik.1{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{А2} & {[}Coef.ntk\_pr.2{]} & {[}Coef.tg\_pr.2{]} & {[}Coef.Gt\_pr.2{]} & {[}Coef.Ce.2{]} & {[}Coef.Gv\_pr.2{]} & {[}Coef.Pik.2{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{СКО} & {[}Coef.ntk\_pr.SKO{]} & {[}Coef.tg\_pr.SKO{]} & {[}Coef.Gt\_pr.SKO{]} & {[}Coef.Ce.SKO{]} & {[}Coef.Gv\_pr.SKO{]} & {[}Coef.Pik.SKO{]}\tabularnewline
+\hline
+\end{longtable}%
+\begin{longtable}{|c|c|c|c|c|c|c|}
+\hline
+ & Режим & ЧР & Взлет & Номинал & 1 крейс. & 2 крейс\tabularnewline
+\hline
+Парам. & Ne пр & {[}TU.Ne\_pr.modeChR{]} & {[}TU.Ne\_pr.modeVZL{]} & {[}TU.Ne\_pr.modeMP{]} & {[}TU.Ne\_pr.mode1KR{]} & {[}TU.Ne\_pr.mode2KR{]}\tabularnewline
+\hline
+Gт пр & Факт. & {[}Aprox.Gt\_pr.modeChR{]} & {[}Aprox.Gt\_pr.modeVZL{]} & {[}Aprox.Gt\_pr.modeMP{]} & {[}Aprox.Gt\_pr.mode1KR{]} & {[}Aprox.Gt\_pr.mode2KR{]}\tabularnewline
+\hline
+\multirow{3}{*}{Ce} & Факт. & {[}Aprox.Ce.modeChR{]} & {[}Aprox.Ce.modeVzl{]} & {[}Aprox.Ce.modeMP{]} & {[}Aprox.Ce.mode1KR{]} & {[}Aprox.Ce.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & {[}TU.Ce.modeChR{]} & - & - & - & -\tabularnewline
+\cline{2-7}
+ & Откл. & {[}Diff.Ce.modeChR{]} & - & - & - & -\tabularnewline
+\hline
+\multirow{3}{*}{nтк пр} & Факт. & {[}Aprox.ntk\_pr.modeChR{]} & {[}Aprox.ntk\_pr.modeVzl{]} & {[}Aprox.ntk\_pr.modeMP{]} & {[}Aprox.ntk\_pr.mode1KR{]} & {[}Aprox.ntk\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & {[}TU.ntk\_pr.modeChR{]} & {[}TU.ntk\_pr.modeVzl{]} & {[}TU.ntk\_pr.modeMP{]} & {[}TU.ntk\_pr.mode1KR{]} & {[}TU.ntk\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & Откл. & {[}Diff.ntk\_pr\_modeChR{]} & {[}Diff.ntk\_pr\_modeVzl{]} & {[}Diff.ntk\_pr\_modeMP{]} & {[}Diff.ntk\_pr\_mode1KR{]} & {[}Diff.ntk\_pr\_mode2KR{]}\tabularnewline
+\hline
+\multirow{3}{*}{tг пр} & Факт. & {[}Aprox.tg\_pr.modeChR{]} & {[}Aprox.tg\_pr.modeVzl{]} & {[}Aprox.tg\_pr.modeMP{]} & {[}Aprox.tg\_pr.mode1KR{]} & {[}Aprox.tg\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & {[}TU.tg\_pr.modeChR{]} & {[}TU.tg\_pr.modeVzl{]} & {[}TU.tg\_pr.modeMP{]} & {[}TU.tg\_pr.mode1KR{]} & {[}TU.tg\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & Откл. & {[}Diff.tg\_pr.modeChR{]} & {[}Diff.tg\_pr.modeVzl{]} & {[}Diff.tg\_pr.modeMP{]} & {[}Diff.tg\_pr.mode1KR{]} & {[}Diff.tg\_pr.mode2KR{]}\tabularnewline
+\hline
+\multirow{3}{*}{Gв пр} & Факт. & {[}Aprox.Gv\_pr.modeChR{]} & {[}Aprox.Gv\_pr.modeVzl{]} & {[}Aprox.Gv\_pr.modeMP{]} & {[}Aprox.Gv\_pr.mode1KR{]} & {[}Aprox.Gv\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & {[}TU.Gv\_pr.modeChR{]} & - & - & - & -\tabularnewline
+\cline{2-7}
+ & Откл. & {[}Diff.Gv\_pr.modeChR{]} & - & - & - & -\tabularnewline
+\hline
+\multirow{3}{*}{Пк} & Факт. & {[}Aprox.Pik.modeChR{]} & {[}Aprox.Pik.modeVzl{]} & {[}Aprox.Pik.modeMP{]} & {[}Aprox.Pik.mode1KR{]} & {[}Aprox.Pik.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & {[}TU.Pik.modeChR{]} & - & - & - & -\tabularnewline
+\cline{2-7}
+ & Откл. & {[}Diff.Pik.modeChR{]} & - & - & - & -\tabularnewline
+\hline
+\end{longtable}%
+\begin{longtable}{|c|c|c|c|}
+\hline
+Инженер по испытаниям & Начальник БТК & Начальник УИД СИК & Представитель заказчика\tabularnewline
+\hline
+ & & & \tabularnewline
+ & & & {[}Test1{]}\tabularnewline
+\hline
+\endfoot
+\end{longtable}{[}Test2{]}
+\end{document}
diff --git a/test/tex/throttle_VK2500PS.tex b/test/tex/throttle_VK2500PS.tex
new file mode 100644
index 0000000..6f238c2
--- /dev/null
+++ b/test/tex/throttle_VK2500PS.tex
@@ -0,0 +1,144 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage[a4paper]{geometry}
+\geometry{verbose,tmargin=1cm,bmargin=2cm,lmargin=2cm,rmargin=1cm}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{multirow}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+Номера замеров: {[}Zamer.List{]}
+
+\begin{flushright}
+Форма 07-622
+\par\end{flushright}
+
+\begin{longtable}{|c|>{\raggedright}p{0.05\linewidth}|c|c|c|c|c|c|}
+\hline
+\multicolumn{8}{|c}{\textbf{\large Сводный протокол результатов испытания двигателя }}\tabularnewline
+\multicolumn{8}{|c}{\textbf{\large {[}Zamer.EngineData.Last{]}}}\tabularnewline
+\multicolumn{8}{|c}{Стенд № {[}Zamer.Stend.Last{]} ~~ ИУД СИК ~ Дата: {[}Zamer.Time2.Last{]} }\tabularnewline
+\multicolumn{8}{|c}{Рн = {[}Zamer.Ph.Last{]} мм рт.ст.~~ tвх = {[}Zamer.tvh\_zv.Last{]}
+$\,^{\circ}\mbox{C}$}\tabularnewline
+\multicolumn{8}{|c}{Характеристика ~~~~~~~ Акт сдачи, контрольные точки}\tabularnewline
+\endhead
+\hline
+\multicolumn{2}{|c|}{} & Nе & nтк & tг & Gт & Gв пр & Пк\tabularnewline
+\hline
+\multirow{3}{*}{МГ} & Факт. & {[}AvZam.Ne.modeMG{]} & {[}AvZam.ntk.modeMG{]} & {[}AvZam.tg.modeMG{]} & {[}AvZam.Gt.modeMG{]} & {[}AvZam.Gv\_pr.modeMG{]} & {[}AvZam.Pik.modeMG{]}\tabularnewline
+\cline{2-8}
+ & ТУ & - & {[}TUAver.ntk.modeMG{]} & {[}TUAver.tg.modeMG{]} & {[}TUAver.Gt.modeMG{]} & - & -\tabularnewline
+\cline{2-8}
+ & Откл. & - & {[}DiffAver.ntk.modeMG{]} & {[}DiffAver.tg.modeMG{]} & {[}DiffAver.Gt.modeMG{]} & - & -\tabularnewline
+\hline
+\multirow{3}{*}{2,5-мин. м.} & Факт. & {[}AvZam.Ne.mode\_2\_5\_min{]} & {[}AvZam.ntk.mode\_2\_5\_min{]} & {[}AvZam.tg.mode\_2\_5\_min{]} & {[}AvZam.Gt.mode\_2\_5\_min{]} & {[}AvZam.Gv\_pr.mode\_2\_5\_min{]} & {[}AvZam.Pik.mode\_2\_5\_min{]}\tabularnewline
+\cline{2-8}
+ & ТУ & {[}TUAver.Ne.mode\_2\_5\_min{]} & {[}TUAver.ntk.mode\_2\_5\_min{]} & {[}TUAver.tg.mode\_2\_5\_min{]} & - & - & -\tabularnewline
+\cline{2-8}
+ & Откл. & {[}DiffAver.Ne.mode\_2\_5\_min{]} & {[}DiffAver.ntk.mode\_2\_5\_min{]} & {[}DiffAver.tg.mode\_2\_5\_min{]} & - & - & -\tabularnewline
+\hline
+\end{longtable}%
+\begin{longtable}{|c|c|c|c|c|c|c|c|}
+\hline
+Режим & Ne пр & nтк пр & tг пр & Gт пр & Ce & Gв пр & Пк\tabularnewline
+\hline
+30 мин. м. & {[}AvZam.Ne\_pr.mode\_30\_min{]} & {[}AvZam.ntk\_pr.mode\_30\_min{]} & {[}AvZam.tg\_pr.mode\_30\_min{]} & {[}AvZam.Gt\_pr.mode\_30\_min{]} & {[}AvZam.Ce.mode\_30\_min{]} & {[}AvZam.Gv\_pr.mode\_30\_min{]} & {[}AvZam.Pik.mode\_30\_min{]}\tabularnewline
+\hline
+Взлет & {[}AvZam.Ne\_pr.modeVZL{]} & {[}AvZam.ntk\_pr.modeVZL{]} & {[}AvZam.tg\_pr.modeVZL{]} & {[}AvZam.Gt\_pr.modeVZL{]} & {[}AvZam.Ce.modeVZL{]} & {[}AvZam.Gv\_pr.modeVzl{]} & {[}AvZam.Pik.modeVzl{]}\tabularnewline
+\hline
+МП & {[}AvZam.Ne\_pr.modeMP{]} & {[}AvZam.ntk\_pr.modeMP{]} & {[}AvZam.tg\_pr.modeMP{]} & {[}AvZam.Gt\_pr.modeMP{]} & {[}AvZam.Ce.modeMP{]} & {[}AvZam.Gv\_pr.modeMP{]} & {[}AvZam.Pik.modeMP{]}\tabularnewline
+\hline
+1крейс. & {[}AvZam.Ne\_pr.mode1KR{]} & {[}AvZam.ntk\_pr.mode1KR{]} & {[}AvZam.tg\_pr.mode1KR{]} & {[}AvZam.Gt\_pr.mode1KR{]} & {[}AvZam.Ce.mode1KR{]} & {[}AvZam.Gv\_pr.mode1KR{]} & {[}AvZam.Pik.mode1KR{]}\tabularnewline
+\hline
+2крейс. & {[}AvZam.Ne\_pr.mode2KR{]} & {[}AvZam.ntk\_pr.mode2KR{]} & {[}AvZam.tg\_pr.mode2KR{]} & {[}AvZam.Gt\_pr.mode2KR{]} & {[}AvZam.Ce.mode2KR{]} & {[}AvZam.Gv\_pr.mode2KR{]} & {[}AvZam.Pik.mode2KR{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{А0} & {[}Coef.ntk\_pr.0{]} & {[}Coef.tg\_pr.0{]} & {[}Coef.Gt\_pr.0{]} & {[}Coef.Ce.0{]} & {[}Coef.Gv\_pr.0{]} & {[}Coef.Pik.0{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{А1} & {[}Coef.ntk\_pr.1{]} & {[}Coef.tg\_pr.1{]} & {[}Coef.Gt\_pr.1{]} & {[}Coef.Ce.1{]} & {[}Coef.Gv\_pr.1{]} & {[}Coef.Pik.1{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{А2} & {[}Coef.ntk\_pr.2{]} & {[}Coef.tg\_pr.2{]} & {[}Coef.Gt\_pr.2{]} & {[}Coef.Ce.2{]} & {[}Coef.Gv\_pr.2{]} & {[}Coef.Pik.2{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{СКО} & {[}SKO.ntk\_pr{]} & {[}SKO.tg\_pr{]} & {[}SKO.Gt\_pr{]} & {[}SKO.Ce{]} & {[}SKO.Gv\_pr{]} & {[}SKO.Pik{]}\tabularnewline
+\hline
+\end{longtable}%
+\begin{longtable}{|c|c|c|c|c|c|c|}
+\hline
+ & Режим & 30-мин. м. & Взлет & МП & 1крейс. & 2крейс.\tabularnewline
+\hline
+Парам. & Ne пр & {[}TU.Ne\_pr.mode\_30\_min{]} & {[}TU.Ne\_pr.modeVZL{]} & {[}TU.Ne\_pr.modeMP{]} & {[}TU.Ne\_pr.mode1KR{]} & {[}TU.Ne\_pr.mode2KR{]}\tabularnewline
+\hline
+Gт пр & Факт. & {[}Aprox.Gt\_pr.mode\_30\_min{]} & {[}Aprox.Gt\_pr.modeVZL{]} & {[}Aprox.Gt\_pr.modeMP{]} & {[}Aprox.Gt\_pr.mode1KR{]} & {[}Aprox.Gt\_pr.mode2KR{]}\tabularnewline
+\hline
+\multirow{3}{*}{Ce} & Факт. & {[}Aprox.Ce.mode\_30\_min{]} & {[}Aprox.Ce.modeVzl{]} & {[}Aprox.Ce.modeMP{]} & {[}Aprox.Ce.mode1KR{]} & {[}Aprox.Ce.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & - & {[}TU.Ce.modeVzl{]} & - & - & -\tabularnewline
+\cline{2-7}
+ & Откл. & - & {[}Diff.Ce.modeVzl{]} & - & - & -\tabularnewline
+\hline
+\multirow{3}{*}{nтк пр} & Факт. & {[}Aprox.ntk\_pr.mode\_30\_min{]} & {[}Aprox.ntk\_pr.modeVzl{]} & {[}Aprox.ntk\_pr.modeMP{]} & {[}Aprox.ntk\_pr.mode1KR{]} & {[}Aprox.ntk\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & {[}TU.ntk\_pr.mode\_30\_min{]} & {[}TU.ntk\_pr.modeVzl{]} & {[}TU.ntk\_pr.modeMP{]} & {[}TU.ntk\_pr.mode1KR{]} & {[}TU.ntk\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & Откл. & {[}Diff.ntk\_pr.mode\_30\_min{]} & {[}Diff.ntk\_pr.modeVzl{]} & {[}Diff.ntk\_pr.modeMP{]} & {[}Diff.ntk\_pr.mode1KR{]} & {[}Diff.ntk\_pr.mode2KR{]}\tabularnewline
+\hline
+\multirow{3}{*}{tг пр} & Факт. & {[}Aprox.tg\_pr.mode\_30\_min{]} & {[}Aprox.tg\_pr.modeVzl{]} & {[}Aprox.tg\_pr.modeMP{]} & {[}Aprox.tg\_pr.mode1KR{]} & {[}Aprox.tg\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & {[}TU.tg\_pr.mode\_30\_min{]} & {[}TU.tg\_pr.modeVzl{]} & {[}TU.tg\_pr.modeMP{]} & {[}TU.tg\_pr.mode1KR{]} & {[}TU.tg\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & Откл. & {[}Diff.tg\_pr.mode\_30\_min{]} & {[}Diff.tg\_pr.modeVzl{]} & {[}Diff.tg\_pr.modeMP{]} & {[}Diff.tg\_pr.mode1KR{]} & {[}Diff.tg\_pr.mode2KR{]}\tabularnewline
+\hline
+\multirow{3}{*}{Gв пр} & Факт. & {[}Aprox.Gv\_pr.mode\_30\_min{]} & {[}Aprox.Gv\_pr.modeVzl{]} & {[}Aprox.Gv\_pr.modeMP{]} & {[}Aprox.Gv\_pr.mode1KR{]} & {[}Aprox.Gv\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & - & - & - & - & -\tabularnewline
+\cline{2-7}
+ & Откл. & - & - & - & - & -\tabularnewline
+\hline
+\multirow{3}{*}{Пк} & Факт. & {[}Aprox.Pik.mode\_30\_min{]} & {[}Aprox.Pik.modeVzl{]} & {[}Aprox.Pik.modeMP{]} & {[}Aprox.Pik.mode1KR{]} & {[}Aprox.Pik.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & - & - & - & - & -\tabularnewline
+\cline{2-7}
+ & Откл. & - & - & - & - & -\tabularnewline
+\hline
+\end{longtable}%
+\begin{longtable}{l}
+Gв пр = {[}Aprox.Gv\_pr.2400{]} при Ne пр = 2400 ТУ {[}TU.Gv\_pr.2400{]}
+Откл. = {[}Diff.Gv\_pr.2400{]}\tabularnewline
+Пк = {[}Aprox.Pik.2400{]} при Ne пр = 2400 ТУ {[}TU.Pik.2400{]} Откл.
+= {[}Diff.Pik.2400{]}\tabularnewline
+\end{longtable}
+
+\begin{longtable}{|c|c|c|c|}
+\hline
+Инженер по испытаниям & Начальник БТК & Начальник УИД СИК & Представитель заказчика\tabularnewline
+\hline
+ & & & \tabularnewline
+ & & & \tabularnewline
+\hline
+\endfoot
+\end{longtable}
+\end{document}
diff --git a/test/tex/throttle_VK2500PS_dos_newlines.tex b/test/tex/throttle_VK2500PS_dos_newlines.tex
new file mode 100644
index 0000000..8560085
--- /dev/null
+++ b/test/tex/throttle_VK2500PS_dos_newlines.tex
@@ -0,0 +1,144 @@
+
+%% Do not edit unless you really know what you are doing.
+\documentclass[russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage[a4paper]{geometry}
+\geometry{verbose,tmargin=1cm,bmargin=2cm,lmargin=2cm,rmargin=1cm}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{multirow}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+
+
+\usepackage{babel}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+Номера замеров: {[}Zamer.List{]}
+
+\begin{flushright}
+Форма 07-622
+\par\end{flushright}
+
+\begin{longtable}{|c|>{\raggedright}p{0.05\linewidth}|c|c|c|c|c|c|}
+\hline
+\multicolumn{8}{|c}{\textbf{\large Сводный протокол результатов испытания двигателя }}\tabularnewline
+\multicolumn{8}{|c}{\textbf{\large {[}Zamer.EngineData.Last{]}}}\tabularnewline
+\multicolumn{8}{|c}{Стенд № {[}Zamer.Stend.Last{]} ~~ ИУД СИК ~ Дата: {[}Zamer.Time2.Last{]} }\tabularnewline
+\multicolumn{8}{|c}{Рн = {[}Zamer.Ph.Last{]} мм рт.ст.~~ tвх = {[}Zamer.tvh\_zv.Last{]}
+$\,^{\circ}\mbox{C}$}\tabularnewline
+\multicolumn{8}{|c}{Характеристика ~~~~~~~ Акт сдачи, контрольные точки}\tabularnewline
+\endhead
+\hline
+\multicolumn{2}{|c|}{} & Nе & nтк & tг & Gт & Gв пр & Пк\tabularnewline
+\hline
+\multirow{3}{*}{МГ} & Факт. & {[}AvZam.Ne.modeMG{]} & {[}AvZam.ntk.modeMG{]} & {[}AvZam.tg.modeMG{]} & {[}AvZam.Gt.modeMG{]} & {[}AvZam.Gv\_pr.modeMG{]} & {[}AvZam.Pik.modeMG{]}\tabularnewline
+\cline{2-8}
+ & ТУ & - & {[}TUAver.ntk.modeMG{]} & {[}TUAver.tg.modeMG{]} & {[}TUAver.Gt.modeMG{]} & - & -\tabularnewline
+\cline{2-8}
+ & Откл. & - & {[}DiffAver.ntk.modeMG{]} & {[}DiffAver.tg.modeMG{]} & {[}DiffAver.Gt.modeMG{]} & - & -\tabularnewline
+\hline
+\multirow{3}{*}{2,5-мин. м.} & Факт. & {[}AvZam.Ne.mode\_2\_5\_min{]} & {[}AvZam.ntk.mode\_2\_5\_min{]} & {[}AvZam.tg.mode\_2\_5\_min{]} & {[}AvZam.Gt.mode\_2\_5\_min{]} & {[}AvZam.Gv\_pr.mode\_2\_5\_min{]} & {[}AvZam.Pik.mode\_2\_5\_min{]}\tabularnewline
+\cline{2-8}
+ & ТУ & {[}TUAver.Ne.mode\_2\_5\_min{]} & {[}TUAver.ntk.mode\_2\_5\_min{]} & {[}TUAver.tg.mode\_2\_5\_min{]} & - & - & -\tabularnewline
+\cline{2-8}
+ & Откл. & {[}DiffAver.Ne.mode\_2\_5\_min{]} & {[}DiffAver.ntk.mode\_2\_5\_min{]} & {[}DiffAver.tg.mode\_2\_5\_min{]} & - & - & -\tabularnewline
+\hline
+\end{longtable}%
+\begin{longtable}{|c|c|c|c|c|c|c|c|}
+\hline
+Режим & Ne пр & nтк пр & tг пр & Gт пр & Ce & Gв пр & Пк\tabularnewline
+\hline
+30 мин. м. & {[}AvZam.Ne\_pr.mode\_30\_min{]} & {[}AvZam.ntk\_pr.mode\_30\_min{]} & {[}AvZam.tg\_pr.mode\_30\_min{]} & {[}AvZam.Gt\_pr.mode\_30\_min{]} & {[}AvZam.Ce.mode\_30\_min{]} & {[}AvZam.Gv\_pr.mode\_30\_min{]} & {[}AvZam.Pik.mode\_30\_min{]}\tabularnewline
+\hline
+Взлет & {[}AvZam.Ne\_pr.modeVZL{]} & {[}AvZam.ntk\_pr.modeVZL{]} & {[}AvZam.tg\_pr.modeVZL{]} & {[}AvZam.Gt\_pr.modeVZL{]} & {[}AvZam.Ce.modeVZL{]} & {[}AvZam.Gv\_pr.modeVzl{]} & {[}AvZam.Pik.modeVzl{]}\tabularnewline
+\hline
+МП & {[}AvZam.Ne\_pr.modeMP{]} & {[}AvZam.ntk\_pr.modeMP{]} & {[}AvZam.tg\_pr.modeMP{]} & {[}AvZam.Gt\_pr.modeMP{]} & {[}AvZam.Ce.modeMP{]} & {[}AvZam.Gv\_pr.modeMP{]} & {[}AvZam.Pik.modeMP{]}\tabularnewline
+\hline
+1крейс. & {[}AvZam.Ne\_pr.mode1KR{]} & {[}AvZam.ntk\_pr.mode1KR{]} & {[}AvZam.tg\_pr.mode1KR{]} & {[}AvZam.Gt\_pr.mode1KR{]} & {[}AvZam.Ce.mode1KR{]} & {[}AvZam.Gv\_pr.mode1KR{]} & {[}AvZam.Pik.mode1KR{]}\tabularnewline
+\hline
+2крейс. & {[}AvZam.Ne\_pr.mode2KR{]} & {[}AvZam.ntk\_pr.mode2KR{]} & {[}AvZam.tg\_pr.mode2KR{]} & {[}AvZam.Gt\_pr.mode2KR{]} & {[}AvZam.Ce.mode2KR{]} & {[}AvZam.Gv\_pr.mode2KR{]} & {[}AvZam.Pik.mode2KR{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{А0} & {[}Coef.ntk\_pr.0{]} & {[}Coef.tg\_pr.0{]} & {[}Coef.Gt\_pr.0{]} & {[}Coef.Ce.0{]} & {[}Coef.Gv\_pr.0{]} & {[}Coef.Pik.0{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{А1} & {[}Coef.ntk\_pr.1{]} & {[}Coef.tg\_pr.1{]} & {[}Coef.Gt\_pr.1{]} & {[}Coef.Ce.1{]} & {[}Coef.Gv\_pr.1{]} & {[}Coef.Pik.1{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{А2} & {[}Coef.ntk\_pr.2{]} & {[}Coef.tg\_pr.2{]} & {[}Coef.Gt\_pr.2{]} & {[}Coef.Ce.2{]} & {[}Coef.Gv\_pr.2{]} & {[}Coef.Pik.2{]}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{СКО} & {[}SKO.ntk\_pr{]} & {[}SKO.tg\_pr{]} & {[}SKO.Gt\_pr{]} & {[}SKO.Ce{]} & {[}SKO.Gv\_pr{]} & {[}SKO.Pik{]}\tabularnewline
+\hline
+\end{longtable}%
+\begin{longtable}{|c|c|c|c|c|c|c|}
+\hline
+ & Режим & 30-мин. м. & Взлет & МП & 1крейс. & 2крейс.\tabularnewline
+\hline
+Парам. & Ne пр & {[}TU.Ne\_pr.mode\_30\_min{]} & {[}TU.Ne\_pr.modeVZL{]} & {[}TU.Ne\_pr.modeMP{]} & {[}TU.Ne\_pr.mode1KR{]} & {[}TU.Ne\_pr.mode2KR{]}\tabularnewline
+\hline
+Gт пр & Факт. & {[}Aprox.Gt\_pr.mode\_30\_min{]} & {[}Aprox.Gt\_pr.modeVZL{]} & {[}Aprox.Gt\_pr.modeMP{]} & {[}Aprox.Gt\_pr.mode1KR{]} & {[}Aprox.Gt\_pr.mode2KR{]}\tabularnewline
+\hline
+\multirow{3}{*}{Ce} & Факт. & {[}Aprox.Ce.mode\_30\_min{]} & {[}Aprox.Ce.modeVzl{]} & {[}Aprox.Ce.modeMP{]} & {[}Aprox.Ce.mode1KR{]} & {[}Aprox.Ce.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & - & {[}TU.Ce.modeVzl{]} & - & - & -\tabularnewline
+\cline{2-7}
+ & Откл. & - & {[}Diff.Ce.modeVzl{]} & - & - & -\tabularnewline
+\hline
+\multirow{3}{*}{nтк пр} & Факт. & {[}Aprox.ntk\_pr.mode\_30\_min{]} & {[}Aprox.ntk\_pr.modeVzl{]} & {[}Aprox.ntk\_pr.modeMP{]} & {[}Aprox.ntk\_pr.mode1KR{]} & {[}Aprox.ntk\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & {[}TU.ntk\_pr.mode\_30\_min{]} & {[}TU.ntk\_pr.modeVzl{]} & {[}TU.ntk\_pr.modeMP{]} & {[}TU.ntk\_pr.mode1KR{]} & {[}TU.ntk\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & Откл. & {[}Diff.ntk\_pr.mode\_30\_min{]} & {[}Diff.ntk\_pr.modeVzl{]} & {[}Diff.ntk\_pr.modeMP{]} & {[}Diff.ntk\_pr.mode1KR{]} & {[}Diff.ntk\_pr.mode2KR{]}\tabularnewline
+\hline
+\multirow{3}{*}{tг пр} & Факт. & {[}Aprox.tg\_pr.mode\_30\_min{]} & {[}Aprox.tg\_pr.modeVzl{]} & {[}Aprox.tg\_pr.modeMP{]} & {[}Aprox.tg\_pr.mode1KR{]} & {[}Aprox.tg\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & {[}TU.tg\_pr.mode\_30\_min{]} & {[}TU.tg\_pr.modeVzl{]} & {[}TU.tg\_pr.modeMP{]} & {[}TU.tg\_pr.mode1KR{]} & {[}TU.tg\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & Откл. & {[}Diff.tg\_pr.mode\_30\_min{]} & {[}Diff.tg\_pr.modeVzl{]} & {[}Diff.tg\_pr.modeMP{]} & {[}Diff.tg\_pr.mode1KR{]} & {[}Diff.tg\_pr.mode2KR{]}\tabularnewline
+\hline
+\multirow{3}{*}{Gв пр} & Факт. & {[}Aprox.Gv\_pr.mode\_30\_min{]} & {[}Aprox.Gv\_pr.modeVzl{]} & {[}Aprox.Gv\_pr.modeMP{]} & {[}Aprox.Gv\_pr.mode1KR{]} & {[}Aprox.Gv\_pr.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & - & - & - & - & -\tabularnewline
+\cline{2-7}
+ & Откл. & - & - & - & - & -\tabularnewline
+\hline
+\multirow{3}{*}{Пк} & Факт. & {[}Aprox.Pik.mode\_30\_min{]} & {[}Aprox.Pik.modeVzl{]} & {[}Aprox.Pik.modeMP{]} & {[}Aprox.Pik.mode1KR{]} & {[}Aprox.Pik.mode2KR{]}\tabularnewline
+\cline{2-7}
+ & ТУ & - & - & - & - & -\tabularnewline
+\cline{2-7}
+ & Откл. & - & - & - & - & -\tabularnewline
+\hline
+\end{longtable}%
+\begin{longtable}{l}
+Gв пр = {[}Aprox.Gv\_pr.2400{]} при Ne пр = 2400 ТУ {[}TU.Gv\_pr.2400{]}
+Откл. = {[}Diff.Gv\_pr.2400{]}\tabularnewline
+Пк = {[}Aprox.Pik.2400{]} при Ne пр = 2400 ТУ {[}TU.Pik.2400{]} Откл.
+= {[}Diff.Pik.2400{]}\tabularnewline
+\end{longtable}
+
+\begin{longtable}{|c|c|c|c|}
+\hline
+Инженер по испытаниям & Начальник БТК & Начальник УИД СИК & Представитель заказчика\tabularnewline
+\hline
+ & & & \tabularnewline
+ & & & \tabularnewline
+\hline
+\endfoot
+\end{longtable}
+\end{document}
diff --git a/test/tex/throttle_err1.tex b/test/tex/throttle_err1.tex
new file mode 100644
index 0000000..25d6485
--- /dev/null
+++ b/test/tex/throttle_err1.tex
@@ -0,0 +1,139 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{multirow}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+DrosselTable1
+\end{longtable}
+\begin{longtable}{|>{\centering}p{0.11\linewidth}|>{\raggedright}p{0.05\linewidth}|>{\centering}p{0.07\paperwidth}|>{\centering}p{0.07\paperwidth}|>{\centering}m{0.07\paperheight}|>{\centering}m{0.07\paperheight}|>{\centering}p{0.07\paperheight}|>{\centering}p{0.07\paperheight}|}
+\hline
+\multicolumn{8}{|c|}{Сводный протокол результатов испытания двигателя ТВ7-117В №}\tabularnewline
+\multicolumn{8}{|c|}{Стенд №18 ~~ ИУД СИК ~ Дата: ~~~~~~~~ г. Время: ~~~~~~~~~
+Рн = ~~~ мм рт ст~~ tвх = ~~~ $\,^{\circ}\mbox{C}$}\tabularnewline
+\multicolumn{8}{|c|}{Характеристика ~~~~~~~ Акт сдачи, контрольные точки}\tabularnewline
+\hline
+\endhead
+\multicolumn{2}{|>{\centering}m{0.11\linewidth}|}{\centering{}Составил} & \multicolumn{2}{c|}{Инженер по испытаниям} & Начальник БТК & Начальник участка УИД СИК & \multicolumn{2}{c|}{Представитель заказчика}\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\centering{}\textit{Подпись}} & \multicolumn{2}{c|}{\textit{Подпись}} & \centering{}\textit{Подпись} & \centering{}\textit{Подпись} & \multicolumn{2}{c|}{\textit{Подпись}}\tabularnewline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\textit{фамилия}} & \multicolumn{2}{c|}{\textit{фамилия}} & \multicolumn{1}{c|}{\textit{фамилия}} & \textit{фамилия} & \multicolumn{2}{c|}{\textit{фамилия}}\tabularnewline
+\hline
+\endfoot
+\multicolumn{8}{|l|}{Усреднённые значения по режимам}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Nепр & Ce & Gт пр & nтк пр & t{*}z ст пр & Пк\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.07\paperwidth}|}{\centering{Режим}} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{0,4 мП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne1650} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Мкр} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{МП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne2500} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Взл} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{30-мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Ne & Ce & Gт & nтк & t{*}z ст & Пк\tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{2,5 мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Оценка режимов по ТУ}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Neпр} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк пр,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст пр,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт пр, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & 1900 & 93,0 & 98,0$\pm$0,5 & 680 & 221 & -\tabularnewline
+\hline
+Мкр & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2100 & 94,0 & 98,0$\pm$0,5 & 705 & - & -\tabularnewline
+\hline
+МП & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2800 & 97,5 & 98,0$\pm$0,5 & 775 & 205 & -\tabularnewline
+\hline
+Взл & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 3000 & 98,5 & 98,0$\pm$0,5 & 795 & - & -\tabularnewline
+\hline
+30-мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Ne} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & - & & 80,0$\pm$0,5 & - & - & -\tabularnewline
+\hline
+ЗМГ & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & - & 101,0 & 98,0$\pm$0,5 & 805 & - & -\tabularnewline
+\hline
+2,5 мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A0} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A1} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A2} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{СКО} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{Примечание} & \multicolumn{5}{c|}{}\tabularnewline
+\hline
+\end{longtable}
+
+\includegraphics[angle=25,scale=3]{174}
+\end{document}
diff --git a/test/tex/throttle_err2.tex b/test/tex/throttle_err2.tex
new file mode 100644
index 0000000..c19b4da
--- /dev/null
+++ b/test/tex/throttle_err2.tex
@@ -0,0 +1,139 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{multirow}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+DrosselTable1
+\begin{longtable}
+\begin{longtable}{|>{\centering}p{0.11\linewidth}|>{\raggedright}p{0.05\linewidth}|>{\centering}p{0.07\paperwidth}|>{\centering}p{0.07\paperwidth}|>{\centering}m{0.07\paperheight}|>{\centering}m{0.07\paperheight}|>{\centering}p{0.07\paperheight}|>{\centering}p{0.07\paperheight}|}
+\hline
+\multicolumn{8}{|c|}{Сводный протокол результатов испытания двигателя ТВ7-117В №}\tabularnewline
+\multicolumn{8}{|c|}{Стенд №18 ~~ ИУД СИК ~ Дата: ~~~~~~~~ г. Время: ~~~~~~~~~
+Рн = ~~~ мм рт ст~~ tвх = ~~~ $\,^{\circ}\mbox{C}$}\tabularnewline
+\multicolumn{8}{|c|}{Характеристика ~~~~~~~ Акт сдачи, контрольные точки}\tabularnewline
+\hline
+\endhead
+\multicolumn{2}{|>{\centering}m{0.11\linewidth}|}{\centering{}Составил} & \multicolumn{2}{c|}{Инженер по испытаниям} & Начальник БТК & Начальник участка УИД СИК & \multicolumn{2}{c|}{Представитель заказчика}\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\centering{}\textit{Подпись}} & \multicolumn{2}{c|}{\textit{Подпись}} & \centering{}\textit{Подпись} & \centering{}\textit{Подпись} & \multicolumn{2}{c|}{\textit{Подпись}}\tabularnewline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\textit{фамилия}} & \multicolumn{2}{c|}{\textit{фамилия}} & \multicolumn{1}{c|}{\textit{фамилия}} & \textit{фамилия} & \multicolumn{2}{c|}{\textit{фамилия}}\tabularnewline
+\hline
+\endfoot
+\multicolumn{8}{|l|}{Усреднённые значения по режимам}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Nепр & Ce & Gт пр & nтк пр & t{*}z ст пр & Пк\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.07\paperwidth}|}{\centering{Режим}} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{0,4 мП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne1650} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Мкр} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{МП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne2500} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Взл} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{30-мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Ne & Ce & Gт & nтк & t{*}z ст & Пк\tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{2,5 мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Оценка режимов по ТУ}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Neпр} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк пр,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст пр,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт пр, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & 1900 & 93,0 & 98,0$\pm$0,5 & 680 & 221 & -\tabularnewline
+\hline
+Мкр & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2100 & 94,0 & 98,0$\pm$0,5 & 705 & - & -\tabularnewline
+\hline
+МП & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2800 & 97,5 & 98,0$\pm$0,5 & 775 & 205 & -\tabularnewline
+\hline
+Взл & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 3000 & 98,5 & 98,0$\pm$0,5 & 795 & - & -\tabularnewline
+\hline
+30-мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Ne} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & - & & 80,0$\pm$0,5 & - & - & -\tabularnewline
+\hline
+ЗМГ & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & - & 101,0 & 98,0$\pm$0,5 & 805 & - & -\tabularnewline
+\hline
+2,5 мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A0} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A1} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A2} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{СКО} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{Примечание} & \multicolumn{5}{c|}{}\tabularnewline
+\hline
+\end{longtable}
+
+\includegraphics[angle=25,scale=3]{174}
+\end{document}
diff --git a/test/tex/throttle_err3.tex b/test/tex/throttle_err3.tex
new file mode 100644
index 0000000..95642af
--- /dev/null
+++ b/test/tex/throttle_err3.tex
@@ -0,0 +1,140 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{multirow}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+DrosselTable1
+
+\begin{longtable}
+\begin{longtable}{|>{\centering}p{0.11\linewidth}|>{\raggedright}p{0.05\linewidth}|>{\centering}p{0.07\paperwidth}|>{\centering}p{0.07\paperwidth}|>{\centering}m{0.07\paperheight}|>{\centering}m{0.07\paperheight}|>{\centering}p{0.07\paperheight}|>{\centering}p{0.07\paperheight}|}
+\hline
+\multicolumn{8}{|c|}{Сводный протокол результатов испытания двигателя ТВ7-117В №}\tabularnewline
+\multicolumn{8}{|c|}{Стенд №18 ~~ ИУД СИК ~ Дата: ~~~~~~~~ г. Время: ~~~~~~~~~
+Рн = ~~~ мм рт ст~~ tвх = ~~~ $\,^{\circ}\mbox{C}$}\tabularnewline
+\multicolumn{8}{|c|}{Характеристика ~~~~~~~ Акт сдачи, контрольные точки}\tabularnewline
+\hline
+\endhead
+\multicolumn{2}{|>{\centering}m{0.11\linewidth}|}{\centering{}Составил} & \multicolumn{2}{c|}{Инженер по испытаниям} & Начальник БТК & Начальник участка УИД СИК & \multicolumn{2}{c|}{Представитель заказчика}\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\centering{}\textit{Подпись}} & \multicolumn{2}{c|}{\textit{Подпись}} & \centering{}\textit{Подпись} & \centering{}\textit{Подпись} & \multicolumn{2}{c|}{\textit{Подпись}}\tabularnewline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\textit{фамилия}} & \multicolumn{2}{c|}{\textit{фамилия}} & \multicolumn{1}{c|}{\textit{фамилия}} & \textit{фамилия} & \multicolumn{2}{c|}{\textit{фамилия}}\tabularnewline
+\hline
+\endfoot
+\multicolumn{8}{|l|}{Усреднённые значения по режимам}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Nепр & Ce & Gт пр & nтк пр & t{*}z ст пр & Пк\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.07\paperwidth}|}{\centering{Режим}} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & \end{longtable} & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{0,4 мП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne1650} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Мкр} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{МП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne2500} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Взл} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{30-мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Ne & Ce & Gт & nтк & t{*}z ст & Пк\tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{2,5 мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Оценка режимов по ТУ}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Neпр} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк пр,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст пр,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт пр, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & 1900 & 93,0 & 98,0$\pm$0,5 & 680 & 221 & -\tabularnewline
+\hline
+Мкр & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2100 & 94,0 & 98,0$\pm$0,5 & 705 & - & -\tabularnewline
+\hline
+МП & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2800 & 97,5 & 98,0$\pm$0,5 & 775 & 205 & -\tabularnewline
+\hline
+Взл & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 3000 & 98,5 & 98,0$\pm$0,5 & 795 & - & -\tabularnewline
+\hline
+30-мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Ne} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & - & & 80,0$\pm$0,5 & - & - & -\tabularnewline
+\hline
+ЗМГ & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & - & 101,0 & 98,0$\pm$0,5 & 805 & - & -\tabularnewline
+\hline
+2,5 мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A0} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A1} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A2} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{СКО} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{Примечание} & \multicolumn{5}{c|}{}\tabularnewline
+\hline
+\end{longtable}
+
+\includegraphics[angle=25,scale=3]{174}
+\end{document}
diff --git a/test/tex/throttle_err4.tex b/test/tex/throttle_err4.tex
new file mode 100644
index 0000000..200a78b
--- /dev/null
+++ b/test/tex/throttle_err4.tex
@@ -0,0 +1,139 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{multirow}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+DrosselTable1
+\end{tabular}
+\begin{tabular}{|>{\centering}p{0.11\linewidth}|>{\raggedright}p{0.05\linewidth}|>{\centering}p{0.07\paperwidth}|>{\centering}p{0.07\paperwidth}|>{\centering}m{0.07\paperheight}|>{\centering}m{0.07\paperheight}|>{\centering}p{0.07\paperheight}|>{\centering}p{0.07\paperheight}|}
+\hline
+\multicolumn{8}{|c|}{Сводный протокол результатов испытания двигателя ТВ7-117В №}\tabularnewline
+\multicolumn{8}{|c|}{Стенд №18 ~~ ИУД СИК ~ Дата: ~~~~~~~~ г. Время: ~~~~~~~~~
+Рн = ~~~ мм рт ст~~ tвх = ~~~ $\,^{\circ}\mbox{C}$}\tabularnewline
+\multicolumn{8}{|c|}{Характеристика ~~~~~~~ Акт сдачи, контрольные точки}\tabularnewline
+\hline
+\endhead
+\multicolumn{2}{|>{\centering}m{0.11\linewidth}|}{\centering{}Составил} & \multicolumn{2}{c|}{Инженер по испытаниям} & Начальник БТК & Начальник участка УИД СИК & \multicolumn{2}{c|}{Представитель заказчика}\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\centering{}\textit{Подпись}} & \multicolumn{2}{c|}{\textit{Подпись}} & \centering{}\textit{Подпись} & \centering{}\textit{Подпись} & \multicolumn{2}{c|}{\textit{Подпись}}\tabularnewline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\textit{фамилия}} & \multicolumn{2}{c|}{\textit{фамилия}} & \multicolumn{1}{c|}{\textit{фамилия}} & \textit{фамилия} & \multicolumn{2}{c|}{\textit{фамилия}}\tabularnewline
+\hline
+\endfoot
+\multicolumn{8}{|l|}{Усреднённые значения по режимам}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Nепр & Ce & Gт пр & nтк пр & t{*}z ст пр & Пк\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.07\paperwidth}|}{\centering{Режим}} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{0,4 мП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne1650} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Мкр} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{МП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne2500} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Взл} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{30-мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Ne & Ce & Gт & nтк & t{*}z ст & Пк\tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{2,5 мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Оценка режимов по ТУ}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Neпр} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк пр,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст пр,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт пр, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & 1900 & 93,0 & 98,0$\pm$0,5 & 680 & 221 & -\tabularnewline
+\hline
+Мкр & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2100 & 94,0 & 98,0$\pm$0,5 & 705 & - & -\tabularnewline
+\hline
+МП & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2800 & 97,5 & 98,0$\pm$0,5 & 775 & 205 & -\tabularnewline
+\hline
+Взл & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 3000 & 98,5 & 98,0$\pm$0,5 & 795 & - & -\tabularnewline
+\hline
+30-мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Ne} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & - & & 80,0$\pm$0,5 & - & - & -\tabularnewline
+\hline
+ЗМГ & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & - & 101,0 & 98,0$\pm$0,5 & 805 & - & -\tabularnewline
+\hline
+2,5 мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A0} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A1} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A2} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{СКО} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{Примечание} & \multicolumn{5}{c|}{}\tabularnewline
+\hline
+\end{tabular}
+
+\includegraphics[angle=25,scale=3]{174}
+\end{document}
diff --git a/test/tex/throttle_err5.tex b/test/tex/throttle_err5.tex
new file mode 100644
index 0000000..e05afbb
--- /dev/null
+++ b/test/tex/throttle_err5.tex
@@ -0,0 +1,139 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{multirow}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+DrosselTable1
+\begin{tabular}
+\begin{tabular}{|>{\centering}p{0.11\linewidth}|>{\raggedright}p{0.05\linewidth}|>{\centering}p{0.07\paperwidth}|>{\centering}p{0.07\paperwidth}|>{\centering}m{0.07\paperheight}|>{\centering}m{0.07\paperheight}|>{\centering}p{0.07\paperheight}|>{\centering}p{0.07\paperheight}|}
+\hline
+\multicolumn{8}{|c|}{Сводный протокол результатов испытания двигателя ТВ7-117В №}\tabularnewline
+\multicolumn{8}{|c|}{Стенд №18 ~~ ИУД СИК ~ Дата: ~~~~~~~~ г. Время: ~~~~~~~~~
+Рн = ~~~ мм рт ст~~ tвх = ~~~ $\,^{\circ}\mbox{C}$}\tabularnewline
+\multicolumn{8}{|c|}{Характеристика ~~~~~~~ Акт сдачи, контрольные точки}\tabularnewline
+\hline
+\endhead
+\multicolumn{2}{|>{\centering}m{0.11\linewidth}|}{\centering{}Составил} & \multicolumn{2}{c|}{Инженер по испытаниям} & Начальник БТК & Начальник участка УИД СИК & \multicolumn{2}{c|}{Представитель заказчика}\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\centering{}\textit{Подпись}} & \multicolumn{2}{c|}{\textit{Подпись}} & \centering{}\textit{Подпись} & \centering{}\textit{Подпись} & \multicolumn{2}{c|}{\textit{Подпись}}\tabularnewline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\textit{фамилия}} & \multicolumn{2}{c|}{\textit{фамилия}} & \multicolumn{1}{c|}{\textit{фамилия}} & \textit{фамилия} & \multicolumn{2}{c|}{\textit{фамилия}}\tabularnewline
+\hline
+\endfoot
+\multicolumn{8}{|l|}{Усреднённые значения по режимам}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Nепр & Ce & Gт пр & nтк пр & t{*}z ст пр & Пк\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.07\paperwidth}|}{\centering{Режим}} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{0,4 мП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne1650} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Мкр} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{МП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne2500} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Взл} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{30-мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Ne & Ce & Gт & nтк & t{*}z ст & Пк\tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{2,5 мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Оценка режимов по ТУ}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Neпр} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк пр,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст пр,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт пр, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & 1900 & 93,0 & 98,0$\pm$0,5 & 680 & 221 & -\tabularnewline
+\hline
+Мкр & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2100 & 94,0 & 98,0$\pm$0,5 & 705 & - & -\tabularnewline
+\hline
+МП & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2800 & 97,5 & 98,0$\pm$0,5 & 775 & 205 & -\tabularnewline
+\hline
+Взл & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 3000 & 98,5 & 98,0$\pm$0,5 & 795 & - & -\tabularnewline
+\hline
+30-мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Ne} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & - & & 80,0$\pm$0,5 & - & - & -\tabularnewline
+\hline
+ЗМГ & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & - & 101,0 & 98,0$\pm$0,5 & 805 & - & -\tabularnewline
+\hline
+2,5 мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A0} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A1} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A2} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{СКО} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{Примечание} & \multicolumn{5}{c|}{}\tabularnewline
+\hline
+\end{tabular}
+
+\includegraphics[angle=25,scale=3]{174}
+\end{document}
diff --git a/test/tex/throttle_err6.tex b/test/tex/throttle_err6.tex
new file mode 100644
index 0000000..08e7efa
--- /dev/null
+++ b/test/tex/throttle_err6.tex
@@ -0,0 +1,140 @@
+%% LyX 2.0.3 created this file. For more info, see http://www.lyx.org/.
+%% Do not edit unless you really know what you are doing.
+\documentclass[russian]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage{geometry}
+\geometry{verbose}
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{textcomp}
+\usepackage{multirow}
+\usepackage{graphicx}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
+\DeclareRobustCommand{\cyrtext}{%
+ \fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
+\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
+\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
+
+%% Because html converters don't know tabularnewline
+\providecommand{\tabularnewline}{\\}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
+\usepackage{multirow}
+
+\makeatother
+
+\usepackage{babel}
+\begin{document}
+DrosselTable1
+
+\begin{tabular}
+\begin{tabular}{|>{\centering}p{0.11\linewidth}|>{\raggedright}p{0.05\linewidth}|>{\centering}p{0.07\paperwidth}|>{\centering}p{0.07\paperwidth}|>{\centering}m{0.07\paperheight}|>{\centering}m{0.07\paperheight}|>{\centering}p{0.07\paperheight}|>{\centering}p{0.07\paperheight}|}
+\hline
+\multicolumn{8}{|c|}{Сводный протокол результатов испытания двигателя ТВ7-117В №}\tabularnewline
+\multicolumn{8}{|c|}{Стенд №18 ~~ ИУД СИК ~ Дата: ~~~~~~~~ г. Время: ~~~~~~~~~
+Рн = ~~~ мм рт ст~~ tвх = ~~~ $\,^{\circ}\mbox{C}$}\tabularnewline
+\multicolumn{8}{|c|}{Характеристика ~~~~~~~ Акт сдачи, контрольные точки}\tabularnewline
+\hline
+\endhead
+\multicolumn{2}{|>{\centering}m{0.11\linewidth}|}{\centering{}Составил} & \multicolumn{2}{c|}{Инженер по испытаниям} & Начальник БТК & Начальник участка УИД СИК & \multicolumn{2}{c|}{Представитель заказчика}\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\centering{}\textit{Подпись}} & \multicolumn{2}{c|}{\textit{Подпись}} & \centering{}\textit{Подпись} & \centering{}\textit{Подпись} & \multicolumn{2}{c|}{\textit{Подпись}}\tabularnewline
+\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\textit{фамилия}} & \multicolumn{2}{c|}{\textit{фамилия}} & \multicolumn{1}{c|}{\textit{фамилия}} & \textit{фамилия} & \multicolumn{2}{c|}{\textit{фамилия}}\tabularnewline
+\hline
+\endfoot
+\multicolumn{8}{|l|}{Усреднённые значения по режимам}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Nепр & Ce & Gт пр & nтк пр & t{*}z ст пр & Пк\tabularnewline
+\hline
+\multicolumn{2}{|>{\centering}p{0.07\paperwidth}|}{\centering{Режим}} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & \end{tabular} & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{0,4 мП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne1650} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Мкр} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{МП} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Ne2500} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{Взл} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{30-мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & Ne & Ce & Gт & nтк & t{*}z ст & Пк\tabularnewline
+\hline
+\multicolumn{2}{|l|}{ЗМГ} & & & & & & \tabularnewline
+\hline
+\multicolumn{2}{|l|}{2,5 мин.м.} & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Оценка режимов по ТУ}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Neпр} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк пр,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст пр,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт пр, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & 1900 & 93,0 & 98,0$\pm$0,5 & 680 & 221 & -\tabularnewline
+\hline
+Мкр & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2100 & 94,0 & 98,0$\pm$0,5 & 705 & - & -\tabularnewline
+\hline
+МП & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 2800 & 97,5 & 98,0$\pm$0,5 & 775 & 205 & -\tabularnewline
+\hline
+Взл & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & 3000 & 98,5 & 98,0$\pm$0,5 & 795 & - & -\tabularnewline
+\hline
+30-мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{8}{|c|}{Замеренные параметры}\tabularnewline
+\hline
+\multicolumn{2}{|c|}{Параметр} & \multirow{2}{0.07\paperwidth}{\centering{}Ne} & \multirow{2}{0.07\paperwidth}{\centering{}не более nтк,\%} & \multirow{2}{0.07\paperheight}{\centering{}nст,\%} & \multirow{2}{0.07\paperheight}{\centering{}не более t{*}z ст,$\,^{\circ}\mbox{C}$} & \multirow{2}{0.07\paperheight}{\centering{}не более Ce г/л.с.ч.} & \multirow{2}{0.07\paperheight}{\centering{}Gт, кг/час}\tabularnewline
+\cline{1-2}
+\multicolumn{2}{|c|}{Режим} & & & & & & \tabularnewline
+\hline
+ & ТУ & - & & 80,0$\pm$0,5 & - & - & -\tabularnewline
+\hline
+ЗМГ & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+ & ТУ & - & 101,0 & 98,0$\pm$0,5 & 805 & - & -\tabularnewline
+\hline
+2,5 мин.м. & Факт & & & & & & \tabularnewline
+\hline
+ & Откл. & & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A0} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A1} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{A2} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{СКО} & & & & & \tabularnewline
+\hline
+\multicolumn{3}{|c|}{Примечание} & \multicolumn{5}{c|}{}\tabularnewline
+\hline
+\end{tabular}
+
+\includegraphics[angle=25,scale=3]{174}
+\end{document}
diff --git a/test/tex/txr_parse_test.c b/test/tex/txr_parse_test.c
new file mode 100644
index 0000000..d817d4b
--- /dev/null
+++ b/test/tex/txr_parse_test.c
@@ -0,0 +1,219 @@
+///@cond INTERNAL
+#include
+#include
+
+#include
+#include
+
+#include
+
+#include "txr-texparser.h"
+
+static gchar *fnameTable = NULL;
+static gchar *fnameEtalon = NULL;
+static gchar *fnameWrite = NULL;
+
+static GOptionEntry entries[] =
+{
+ { "table", 't', 0, G_OPTION_ARG_FILENAME, &fnameTable, "File with a table", NULL },
+ { "etalon", 'e', 0, G_OPTION_ARG_FILENAME, &fnameEtalon, "File with etalon table", NULL },
+ { "write", 'w', 0, G_OPTION_ARG_FILENAME, &fnameWrite, "File to write", NULL },
+ { NULL, 0, 0, 0, NULL, NULL, NULL }
+};
+
+int main (int argc, char *argv[])
+{
+ GOptionContext *context;
+ GError *error = NULL;
+
+ GError *parse_error = NULL;
+ gchar *contents = NULL,
+ *generated = NULL,
+ *gentext;
+ TXRGlob *doc = NULL;
+ TXRGlobIter it;
+
+ //MamanBar *bar;
+ //MamanBar *bar1;
+
+//#if (!GLIB_CHECK_VERSION (2, 36, 0))
+// g_type_init ();
+//#endif
+
+ //bar = g_object_new (MAMAN_BAR_TYPE, NULL);
+ //g_printf ("type = %s\n", G_OBJECT_TYPE_NAME (bar));
+ //g_object_unref (bar);
+ //bar1 = g_object_new (MAMAN_BAR_TYPE, NULL);
+ //g_object_unref (bar1);
+ //(void) bar1;
+ //return 0;
+
+ setlocale (LC_ALL, "");
+
+#if (!GLIB_CHECK_VERSION (2, 36, 0))
+ g_type_init ();
+#endif
+
+ /* commandline arguments processing */
+ context = g_option_context_new ("- tests LaTeX parser");
+ g_option_context_add_main_entries (context, entries, NULL);//GETTEXT_PACKAGE);
+ // g_option_context_add_group (context, gtk_get_option_group (TRUE));
+ if (!g_option_context_parse (context, &argc, &argv, &error))
+ {
+ fprintf (stderr, "option parsing failed: %s\n", error->message);
+ exit (1);
+ }
+ g_option_context_free (context);
+
+ /* read table */
+ if (!fnameTable)
+ {
+ fprintf (stderr, "Specify file with a table");
+ goto err;
+ }
+ /* load file contents
+ */
+ if (!g_file_get_contents (fnameTable, &contents, NULL, &error))
+ {
+ g_printf ("Unable to read file: %s\n", error->message);
+ goto err;
+ }
+ g_free (fnameTable);
+
+ g_assert ((contents == NULL && error != NULL)
+ || (contents != NULL && error == NULL));
+
+ /* parse TeX */
+ doc = txr_parse (contents, &parse_error);
+
+ if (parse_error)
+ {
+ g_print ("Error parsing TeX document: %s\n", parse_error->message);
+ goto err;
+ }
+
+ else
+ {
+ puts ("TeX document successfully parsed\n");
+ }
+
+ /* list all objects */
+ g_printf ("list all objects\n");
+ for (it = txr_glob_first (doc); it; it = txr_glob_iter_next (it))
+ {
+ g_printf ("%s\n", G_OBJECT_TYPE_NAME (*it));
+
+ if ( !g_strcmp0 ("TXRTabular", G_OBJECT_TYPE_NAME (*it))
+ || !g_strcmp0 ("TXRLongtable", G_OBJECT_TYPE_NAME (*it)))
+ {
+ TXRSubtable *subtable;
+ TXRSubtableIter st_it;
+
+ if (!g_strcmp0 ("TXRTabular", G_OBJECT_TYPE_NAME (*it)))
+ subtable = txr_tabular_get_table (TXR_TABULAR (*it));
+ else
+ subtable = txr_longtable_get_table (TXR_LONGTABLE (*it));
+
+ for (st_it = txr_subtable_first (subtable); st_it; st_it = txr_subtable_iter_next (st_it))
+ {
+ TXRRow *row = TXR_ROW (*st_it);
+ TXRRowIter row_it;
+
+ for (row_it = txr_row_first (row); row_it; row_it = txr_row_iter_next (row_it))
+ {
+ TXRCell *cell = TXR_CELL (*row_it);
+ TXRGlob *glob = txr_cell_get_contents (cell);
+ TXRGlobIter glob_it;
+
+ for (glob_it = txr_glob_first (glob); glob_it; glob_it = txr_glob_iter_next (glob_it))
+ {
+ if (g_strcmp0 ("TXRText", G_OBJECT_TYPE_NAME (*glob_it)))
+ g_printf (" %s\n", G_OBJECT_TYPE_NAME (*glob_it));
+ }
+ }
+ }
+ }
+ }
+
+ g_printf ("end of objects\n\n");
+
+ /* walk through all objects */
+ g_printf ("Walk through all objects\n");
+ for (it = txr_glob_first (doc); it; it = txr_glob_iter_next (it))
+ {
+ g_printf ("%s\n", G_OBJECT_TYPE_NAME (*it));
+
+ if (!g_strcmp0 ("TXRGraphics", G_OBJECT_TYPE_NAME (*it)))
+ {
+ gdouble width = 0,
+ height = 0;
+ gchar *w_unit = NULL,
+ *h_unit = NULL;
+ TXRGraphics *graphics = txr_graphics_clone (TXR_GRAPHICS (*it));
+ txr_graphics_get_size (graphics, &width, &w_unit, &height, &h_unit);
+ gentext = txr_glob_gen ((TXRGlob *) graphics);
+ g_printf (" width=%f%s, height=%f%s, path=%s,\n gen()=%s\n",
+ width, w_unit, height, h_unit,
+ txr_graphics_get_path (graphics),
+ gentext);
+ g_free (gentext);
+ /* test txr_graphics_set_size () */
+ txr_graphics_set_size (graphics, width / 2, "pt", height * 2, "dd");
+ gentext = txr_glob_gen ((TXRGlob *) graphics);
+ g_printf ("resized gen() = %s\n", gentext);
+ g_free (gentext);
+ txr_graphics_unref (graphics);
+ g_free (w_unit);
+ g_free (h_unit);
+ }
+ }
+ g_printf ("end of objects\n\n");
+
+ /* generate plain-TeX document */
+ generated = txr_glob_gen (doc);
+
+ /* load etalon file
+ */
+ if (fnameEtalon)
+ {
+ g_free (contents);
+ if (!g_file_get_contents (fnameEtalon, &contents, NULL, &error))
+ {
+ g_printf ("Unable to read file: %s\n", error->message);
+ goto err;
+ }
+ }
+ g_free (fnameEtalon);
+
+ if (!g_strcmp0 (contents, generated))
+ g_printf ("Original and generated text are EQUAL ;-)\n");
+ else
+ g_printf ("Original and generated text are NOT EQUAL ;-(\n");
+
+ g_printf ("--- Generated plain-TeX (generated) ---\n%s", generated);
+
+ /* write to file */
+ if (fnameWrite)
+ g_file_set_contents (fnameWrite, generated, -1, NULL);
+ g_free (fnameWrite);
+
+err:
+//end:
+ g_free (contents);
+ g_free (generated);
+
+ if (parse_error)
+ {
+ g_error_free (parse_error);
+ }
+
+ if (error)
+ {
+ g_error_free (error);
+ }
+
+ txr_glob_unref (doc);
+
+ return 0;
+}
+///@endcond
diff --git a/test/tex/unary_quotes.tex b/test/tex/unary_quotes.tex
new file mode 100644
index 0000000..ef6bad7
--- /dev/null
+++ b/test/tex/unary_quotes.tex
@@ -0,0 +1,19 @@
+'
+\begin{tabular}{c}
+' \tabularnewline
+\end{tabular}
+
+\begin{tabular}{c}
+' \tabularnewline
+\end{tabular}
+'
+
+"
+\begin{tabular}{c}
+" \tabularnewline
+\end{tabular}
+
+\begin{tabular}{c}
+" \tabularnewline
+\end{tabular}
+"
diff --git a/util/update-po.sh b/util/update-po.sh
new file mode 100755
index 0000000..550adfa
--- /dev/null
+++ b/util/update-po.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+##
+# settings
+##
+PROJECT=laview-latex-struct-0
+PO_DIR_NAME=po
+
+SCRIPT_PATH=`readlink -f $0`
+SCRIPT_DIR=${SCRIPT_PATH%/*}
+PRJDIR=${SCRIPT_DIR%/*}
+
+C_FILELIST="${PRJDIR}/src/*.vala"
+UI_FILELIST="${PRJDIR}/ui/*.glade"
+
+##
+# code
+##
+xgettext --language=C --escape --package-name=$PROJECT --default-domain=$PROJECT --add-comments=/// \
+ -k_ -kQ_ -kC_ -kN_ -kNC_ -kg_dgettext -kg_dcgettext \
+ -kg_dngettext -kg_dpgettext -kg_dpgettext2 -kg_strip_context -F -n -o \
+ $PRJDIR/$PO_DIR_NAME/source.pot $C_FILELIST
+
+xgettext --language=C --escape --package-name=$PROJECT --default-domain=$PROJECT --add-comments=/// \
+ -k_ -kQ_ -kC_ -kN_ -kNC_ -kg_dgettext -kg_dcgettext \
+ -kg_dngettext -kg_dpgettext -kg_dpgettext2 -kg_strip_context -F -n -o \
+ $PRJDIR/$PO_DIR_NAME/glade.pot $C_FILELIST
+
+msgcat -o $PRJDIR/$PO_DIR_NAME/$PROJECT.pot --use-first $PRJDIR/$PO_DIR_NAME/source.pot $PRJDIR/$PO_DIR_NAME/glade.pot
+
+rm $PRJDIR/$PO_DIR_NAME/source.pot
+rm $PRJDIR/$PO_DIR_NAME/glade.pot
+
+[ 0 != $? ] && echo "xgettext failed ;-(" && exit 1
+[ ! -e $PRJDIR/$PO_DIR_NAME/$PROJECT.pot ] && echo "No strings found ;-(" && exit 1
+
+for d in $PRJDIR/$PO_DIR_NAME/*; do
+ [ ! -d $d ] && continue
+
+ if [ -e $d/$PROJECT.po ]; then
+ echo "Merging '${d##*/}' locale" && msgmerge -F -U $d/$PROJECT.po $PRJDIR/$PO_DIR_NAME/$PROJECT.pot
+ [ 0 != $? ] && echo "msgmerge failed ;(" && exit 1
+ else
+ echo "Creating '${d##*/}' locale" && msginit -l ${d##*/} -o $d/$PROJECT.po -i $PRJDIR/$PO_DIR_NAME/$PROJECT.pot
+ [ 0 != $? ] && echo "msginit failed ;(" && exit 1
+ fi
+
+done
diff --git a/util/valadoc.sh b/util/valadoc.sh
new file mode 100755
index 0000000..b5a62b5
--- /dev/null
+++ b/util/valadoc.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+EXE_PATH="`readlink -f $0`"
+PRJ_PATH="${EXE_PATH%/*/*}"
+OUT_PATH="$PRJ_PATH/doc/html/latex-struct"
+OUT_INTERNAL_PATH="$PRJ_PATH/doc/html/latex-struct-internals"
+
+echo "Generating documentation..."
+rm -rf "$OUT_PATH"
+valadoc --no-protected -o "$OUT_PATH" -b "$PRJ_PATH/src" `find "$PRJ_PATH/src" -name "*.vapi" -or -name "*.vala"` \
+ --pkg=gtk+-3.0 --pkg=gee-0.8 --pkg=gmodule-2.0 --pkg=posix
+firefox "$OUT_PATH"/latex-struct/index.htm &>/dev/null
+
+#echo "Generating internal documentation..."
+#rm -rf "$OUT_INTERNAL_PATH"
+#valadoc -o "$OUT_INTERNAL_PATH" -b "$PRJ_PATH/src" `find "$PRJ_PATH/src" -name "*.vapi" -or -name "*.vala"` \
+# --pkg=gtk+-3.0 --pkg=gee-0.8 --pkg=gmodule-2.0 --pkg=posix --internal
+
+#firefox "$OUT_INTERNAL_PATH"/latex-struct-internals/index.htm &>/dev/null
diff --git a/valadoc_env b/valadoc_env
new file mode 100644
index 0000000..2e03d6c
--- /dev/null
+++ b/valadoc_env
@@ -0,0 +1,2 @@
+BASEDIR=src
+PKGS=gtk+-3.0 gee-0.8 gmodule-2.0 posix
| | | | | | | | |