dev/cpp/tex_parser/tex_table_class.hpp

54 lines
2.3 KiB
C++
Raw Normal View History

#ifndef TEX_TABLE_CLASS
#define TEX_TABLE_CLASS
#include <vector>
#include <string>
/* Ячейка.
* Если встречается ячейка с \multicolumn{n}, то
* следующие n-1 ячеек в таблице пустые и при компиляции
* к ним не добавляется символ &
*/
class cell_c {
std::string before;
std::string request;
std::string after;
};
/* Строка.
* Заканчивается тегом "\tabularnewline"
*/
class row_c {
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 {
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 {
std::string before;
std::vector<row_c> rows;
std::string after;
};
class table_c {
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);
#endif // TEX_TABLE_CLASS