X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.cpp;h=e5d683ec1855d3f089eaa19828926c7eff5a1017;hb=b4e609bd691b326756e802bb16524bb837b5a10e;hp=01c4f1628657a1d07cac3af2fe11280e95efca97;hpb=a41bcb3701ad0026054a7ce5e95ca090dc6132d6;p=features.git diff --git a/src/Layout.cpp b/src/Layout.cpp index 01c4f16286..e5d683ec18 100644 --- a/src/Layout.cpp +++ b/src/Layout.cpp @@ -13,16 +13,14 @@ #include #include "Layout.h" -#include "FontInfo.h" -#include "Language.h" #include "Lexer.h" #include "output_xhtml.h" #include "TextClass.h" #include "support/debug.h" +#include "support/docstream.h" #include "support/lassert.h" #include "support/lstrings.h" -#include "support/Messages.h" #include "support/textutils.h" @@ -107,12 +105,16 @@ enum LayoutTags { LT_DOCBOOKTAG, LT_DOCBOOKATTR, LT_DOCBOOKTAGTYPE, + LT_DOCBOOKINNERATTR, + LT_DOCBOOKINNERTAG, + LT_DOCBOOKINNERTAGTYPE, LT_DOCBOOKININFO, LT_DOCBOOKABSTRACT, LT_DOCBOOKWRAPPERTAG, LT_DOCBOOKWRAPPERATTR, LT_DOCBOOKWRAPPERTAGTYPE, LT_DOCBOOKWRAPPERMERGEWITHPREVIOUS, + LT_DOCBOOKSECTION, LT_DOCBOOKSECTIONTAG, LT_DOCBOOKITEMWRAPPERTAG, LT_DOCBOOKITEMWRAPPERATTR, @@ -127,13 +129,14 @@ enum LayoutTags { LT_DOCBOOKITEMINNERATTR, LT_DOCBOOKITEMINNERTAGTYPE, LT_DOCBOOKFORCEABSTRACTTAG, + LT_DOCBOOKNOFONTINSIDE, LT_INPREAMBLE, LT_HTMLTITLE, LT_SPELLCHECK, LT_REFPREFIX, LT_RESETARGS, LT_RESUMECOUNTER, - LT_STEPMASTERCOUNTER, + LT_STEPPARENTCOUNTER, LT_RIGHTDELIM, LT_FORCELOCAL, LT_TOGGLE_INDENT, @@ -151,7 +154,7 @@ Layout::Layout() margintype = MARGIN_STATIC; latextype = LATEX_PARAGRAPH; resumecounter = false; - stepmastercounter = false; + stepparentcounter = false; intitle = false; inpreamble = false; needprotect = false; @@ -186,6 +189,7 @@ Layout::Layout() htmltitle_ = false; docbookabstract_ = false; docbookwrappermergewithprevious_ = false; + docbooksection_ = false; spellcheck = true; forcelocal = 0; itemcommand_ = "item"; @@ -234,6 +238,9 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass, { "docbookattr", LT_DOCBOOKATTR }, { "docbookforceabstracttag", LT_DOCBOOKFORCEABSTRACTTAG }, { "docbookininfo", LT_DOCBOOKININFO }, + { "docbookinnerattr", LT_DOCBOOKINNERATTR }, + { "docbookinnertag", LT_DOCBOOKINNERTAG }, + { "docbookinnertagtype", LT_DOCBOOKINNERTAGTYPE }, { "docbookitemattr", LT_DOCBOOKITEMATTR }, { "docbookiteminnerattr", LT_DOCBOOKITEMINNERATTR }, { "docbookiteminnertag", LT_DOCBOOKITEMINNERTAG }, @@ -246,6 +253,8 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass, { "docbookitemwrapperattr", LT_DOCBOOKITEMWRAPPERATTR }, { "docbookitemwrappertag", LT_DOCBOOKITEMWRAPPERTAG }, { "docbookitemwrappertagtype", LT_DOCBOOKITEMWRAPPERTAGTYPE }, + { "docbooknofontinside", LT_DOCBOOKNOFONTINSIDE, }, + { "docbooksection", LT_DOCBOOKSECTION }, { "docbooksectiontag", LT_DOCBOOKSECTIONTAG }, { "docbooktag", LT_DOCBOOKTAG }, { "docbooktagtype", LT_DOCBOOKTAGTYPE }, @@ -317,7 +326,7 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass, { "rightmargin", LT_RIGHTMARGIN }, { "spacing", LT_SPACING }, { "spellcheck", LT_SPELLCHECK }, - { "stepmastercounter", LT_STEPMASTERCOUNTER }, + { "stepparentcounter", LT_STEPPARENTCOUNTER }, { "textfont", LT_TEXTFONT }, { "toclevel", LT_TOCLEVEL }, { "toggleindent", LT_TOGGLE_INDENT }, @@ -437,8 +446,8 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass, lex >> resumecounter; break; - case LT_STEPMASTERCOUNTER: - lex >> stepmastercounter; + case LT_STEPPARENTCOUNTER: + lex >> stepparentcounter; break; case LT_ARGUMENT: @@ -750,6 +759,18 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass, lex >> docbooktagtype_; break; + case LT_DOCBOOKINNERTAG: + lex >> docbookinnertag_; + break; + + case LT_DOCBOOKINNERATTR: + lex >> docbookinnerattr_; + break; + + case LT_DOCBOOKINNERTAGTYPE: + lex >> docbookinnertagtype_; + break; + case LT_DOCBOOKFORCEABSTRACTTAG: lex >> docbookforceabstracttag_; break; @@ -778,15 +799,19 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass, lex >> docbookwrappermergewithprevious_; break; + case LT_DOCBOOKSECTION: + lex >> docbooksection_; + break; + case LT_DOCBOOKSECTIONTAG: lex >> docbooksectiontag_; break; - case LT_DOCBOOKITEMWRAPPERTAG: - lex >> docbookitemwrappertag_; - break; - - case LT_DOCBOOKITEMWRAPPERATTR: + case LT_DOCBOOKITEMWRAPPERTAG: + lex >> docbookitemwrappertag_; + break; + + case LT_DOCBOOKITEMWRAPPERATTR: lex >> docbookitemwrapperattr_; break; @@ -830,6 +855,10 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass, lex >> docbookiteminnertagtype_; break; + case LT_DOCBOOKNOFONTINSIDE: + lex >> docbooknofontinside_; + break; + case LT_SPELLCHECK: lex >> spellcheck; break; @@ -1167,6 +1196,10 @@ void Layout::readArgument(Lexer & lex, bool validating) latexargs_)); latexarg & arg = lam[id]; + if (listpreamble) + // list preamble has no delimiters by default + arg.nodelims = true; + bool error = false; bool finished = false; while (!finished && lex.isOK() && !error) { @@ -1242,6 +1275,21 @@ void Layout::readArgument(Lexer & lex, bool validating) } else if (tok == "freespacing") { lex.next(); arg.free_spacing = lex.getBool(); + } else if (tok == "docbooktag") { + lex.next(); + arg.docbooktag = lex.getDocString(); + } else if (tok == "docbookattr") { + lex.next(); + arg.docbookattr = lex.getDocString(); + } else if (tok == "docbooktagtype") { + lex.next(); + arg.docbooktagtype = lex.getDocString(); + } else if (tok == "docbookargumentaftermaintag") { + lex.next(); + arg.docbookargumentaftermaintag = lex.getBool(); + } else if (tok == "docbookargumentbeforemaintag") { + lex.next(); + arg.docbookargumentbeforemaintag = lex.getBool(); } else { lex.printError("Unknown tag"); error = true; @@ -1365,7 +1413,7 @@ void Layout::write(ostream & os) const "\tInPreamble " << inpreamble << "\n" "\tTocLevel " << toclevel << "\n" "\tResumeCounter " << resumecounter << "\n" - "\tStepMasterCounter " << stepmastercounter << '\n'; + "\tStepParentCounter " << stepparentcounter << '\n'; // ResetArgs does not make sense here for (LaTeXArgMap::const_iterator it = latexargs_.begin(); it != latexargs_.end(); ++it) @@ -1638,6 +1686,12 @@ void Layout::write(ostream & os) const os << "\tDocBookAttr \"" << docbookattr_ << "\"\n"; if(!docbooktagtype_.empty()) os << "\tDocBookTagType " << docbooktagtype_ << '\n'; + if(!docbookinnertag_.empty()) + os << "\tDocBookInnerTag " << docbookinnertag_ << '\n'; + if(!docbookinnerattr_.empty()) + os << "\tDocBookInnerAttr \"" << docbookinnerattr_ << "\"\n"; + if(!docbookinnertagtype_.empty()) + os << "\tDocBookInnerTagType " << docbookinnertagtype_ << '\n'; if(!docbookininfo_.empty()) os << "\tDocBookInInfo " << docbookininfo_ << '\n'; os << "\tDocBookAbstract " << docbookabstract_ << '\n'; @@ -1647,6 +1701,7 @@ void Layout::write(ostream & os) const os << "\tDocBookWrapperAttr " << docbookwrapperattr_ << '\n'; if(!docbookwrappertagtype_.empty()) os << "\tDocBookWrapperTagType " << docbookwrappertagtype_ << '\n'; + os << "\tDocBookSection " << docbooksection_ << '\n'; if(!docbooksectiontag_.empty()) os << "\tDocBookSectionTag " << docbooksectiontag_ << '\n'; if(!docbookitemtag_.empty()) @@ -1676,7 +1731,8 @@ void Layout::write(ostream & os) const os << "\tDocBookItemInnerTagType " << docbookiteminnertagtype_ << '\n'; if(!docbookforceabstracttag_.empty()) os << "\tDocBookForceAbstractTag " << docbookforceabstracttag_ << '\n'; - os << "\tSpellcheck " << spellcheck << "\n" + os << "\tDocBookNoFontInside " << docbooknofontinside_ << "\n" + "\tSpellcheck " << spellcheck << "\n" "\tForceLocal " << forcelocal << "\n" "End\n"; } @@ -1843,7 +1899,7 @@ string const & Layout::docbookattr() const } -bool isValidTagType(std::string type) +bool isValidTagType(std::string const & type) { return !(type.empty() || (type != "block" && type != "paragraph" && type != "inline")); } @@ -1857,6 +1913,28 @@ string const & Layout::docbooktagtype() const } +string const & Layout::docbookinnertag() const +{ + if (docbookinnertag_.empty()) + docbookinnertag_ = "NONE"; + return docbookinnertag_; +} + + +string const & Layout::docbookinnerattr() const +{ + return docbookinnerattr_; +} + + +string const & Layout::docbookinnertagtype() const +{ + if (!isValidTagType(docbookinnertagtype_)) + docbookinnertagtype_ = "block"; + return docbookinnertagtype_; +} + + string const & Layout::docbookininfo() const { // Indeed, a trilean. Only titles should be "maybe": otherwise, metadata is "always", content is "never".