|
12 | 12 | #define DOCX_CRENGINE_IN_PAGE_FOOTNOTES 1 |
13 | 13 | // build FB2 DOM, comment out to build HTML DOM |
14 | 14 | #define DOCX_FB2_DOM_STRUCTURE 1 |
| 15 | +//If true <title class="hx"><p>...</p></title> else <title><hx>..</hx></title> |
| 16 | +#define DOCX_USE_CLASS_FOR_HEADING true |
15 | 17 |
|
16 | 18 | /// known docx items name and identifier |
17 | 19 | struct item_def_t { |
@@ -903,8 +905,8 @@ class docx_titleHandler |
903 | 905 | class docx_fb2TitleHandler : public docx_titleHandler |
904 | 906 | { |
905 | 907 | public: |
906 | | - docx_fb2TitleHandler(ldomDocumentWriter *writer, docxImportContext *context) : |
907 | | - docx_titleHandler(writer, context, true) |
| 908 | + docx_fb2TitleHandler(ldomDocumentWriter *writer, docxImportContext *context, bool useClassName) : |
| 909 | + docx_titleHandler(writer, context, useClassName) |
908 | 910 | {} |
909 | 911 | void onBodyStart(); |
910 | 912 | void onTitleStart(int level, bool noSection = false); |
@@ -2317,7 +2319,7 @@ bool ImportDocXDocument( LVStreamRef stream, ldomDocument * doc, LVDocViewCallba |
2317 | 2319 |
|
2318 | 2320 | #ifdef DOCX_FB2_DOM_STRUCTURE |
2319 | 2321 | //Two options when dealing with titles: (FB2|HTML) |
2320 | | - docx_fb2TitleHandler titleHandler(&writer, &importContext); //<section><title class=hx">..</title></section> |
| 2322 | + docx_fb2TitleHandler titleHandler(&writer, &importContext, DOCX_USE_CLASS_FOR_HEADING); //<section><title>..</title></section> |
2321 | 2323 | #else |
2322 | 2324 | docx_titleHandler titleHandler(&writer, &importContext); //<hx>..</hx> |
2323 | 2325 | #endif |
@@ -3124,17 +3126,27 @@ void docx_fb2TitleHandler::onTitleStart(int level, bool noSection) |
3124 | 3126 | closeSection(m_titleLevel - level + 1); |
3125 | 3127 | openSection(level); |
3126 | 3128 | m_writer->OnTagOpen(L"", L"title"); |
3127 | | - lString16 className = cs16("h") + lString16::itoa(level); |
3128 | | - m_writer->OnAttribute(L"", L"class", className.c_str()); |
3129 | | - m_writer->OnTagBody(); |
3130 | | - m_writer->OnTagOpen(L"", L"p"); |
| 3129 | + lString16 headingName = cs16("h") + lString16::itoa(level); |
| 3130 | + if( m_useClassName ) { |
| 3131 | + m_writer->OnAttribute(L"", L"class", headingName.c_str()); |
| 3132 | + m_writer->OnTagBody(); |
| 3133 | + m_writer->OnTagOpen(L"", L"p"); |
| 3134 | + } else { |
| 3135 | + m_writer->OnTagBody(); |
| 3136 | + m_writer->OnTagOpen(L"", headingName.c_str()); |
| 3137 | + } |
3131 | 3138 | } |
3132 | 3139 | } |
3133 | 3140 |
|
3134 | 3141 | void docx_fb2TitleHandler::onTitleEnd() |
3135 | 3142 | { |
| 3143 | + if( !m_useClassName ) { |
| 3144 | + lString16 headingName = cs16("h") + lString16::itoa(m_titleLevel); |
| 3145 | + m_writer->OnTagClose(L"", headingName.c_str()); |
| 3146 | + } else |
| 3147 | + m_writer->OnTagClose(L"", L"p"); |
| 3148 | + |
3136 | 3149 | m_writer->OnTagClose(L"", L"title"); |
3137 | | - m_writer->OnTagClose(L"", L"p"); |
3138 | 3150 | m_hasTitle = true; |
3139 | 3151 | } |
3140 | 3152 |
|
|
0 commit comments