dev/cpp/tex_parser/tex_table_class.hpp

61 lines
2.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef TEX_TABLE_CLASS
#define TEX_TABLE_CLASS
#include <vector>
#include <string>
#include "xerror.h"
/* Ячейка.
* Если встречается ячейка с \multicolumn{n}, то
* следующие n-1 ячеек в таблице пустые и при компиляции
* к ним не добавляется символ &
*/
class cell_c {
public:
std::string before;
std::string request;
std::string after;
};
/* Строка.
* Заканчивается тегом "\tabularnewline"
*/
class row_c {
public:
std::string before;
std::vector<cell_c> cells;
std::string after;
};
/* \hline\multicolumn{8}{|c|}{Сводный протокол результатов испытания двигателя ТВ7-117В \textnumero{}}\tabularnewline\multicolumn{8}{|c|}{Стенд \textnumero{}18 ~~ ИУД СИК ~ Дата: ~~~~~~~~ г. Время:~~~~~~~~~ Рн = ~~~ мм рт ст~~ tвх = ~~~ $\,^{\circ}\mbox{C}$}\tabularnewline\multicolumn{8}{|c|}{Характеристика ~~~~~~~ Акт сдачи, контрольные точки}\tabularnewline\hline\endhead
*/
class header_c {
public:
std::string before;
std::vector<row_c> rows;
std::string after;
};
/* \hline\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
*/
class footer_c {
public:
std::string before;
std::vector<row_c> rows;
std::string after;
};
class table_c {
public:
std::string id; // "Drossel1.Table1"
std::vector<std::string> columns_scheme; // "|>{\centering}m{0.1\paperwidth}"
header_c header;
footer_c footer;
std::vector<row_c> rows;
};
int parse_table(const char *table_source, table_c *table, struct xerror_s *error);
#endif // TEX_TABLE_CLASS