+ os << "Style \"" << to_utf8(name_) << "\"\n";
+ if (!category_.empty() && obsoleted_by_.empty())
+ os << "\tCategory \"" << to_utf8(category_) << "\"\n";
+ // Can't deduce Copystyle here :-(
+ if (!obsoleted_by_.empty()) {
+ os << "\tObsoletedBy \"" << to_utf8(obsoleted_by_)
+ << "\"\nEnd\n";
+ return;
+ }
+ if (!depends_on_.empty())
+ os << "\tDependsOn " << to_utf8(depends_on_) << '\n';
+ switch (margintype) {
+ case MARGIN_DYNAMIC:
+ os << "\tMargin Dynamic\n";
+ break;
+ case MARGIN_FIRST_DYNAMIC:
+ os << "\tMargin First_Dynamic\n";
+ break;
+ case MARGIN_MANUAL:
+ os << "\tMargin Manual\n";
+ break;
+ case MARGIN_RIGHT_ADDRESS_BOX:
+ os << "\tMargin Right_Address_Box\n";
+ break;
+ case MARGIN_STATIC:
+ os << "\tMargin Static\n";
+ break;
+ }
+ switch (latextype) {
+ case LATEX_BIB_ENVIRONMENT:
+ os << "\tLatexType Bib_Environment\n";
+ break;
+ case LATEX_COMMAND:
+ os << "\tLatexType Command\n";
+ break;
+ case LATEX_ENVIRONMENT:
+ os << "\tLatexType Environment\n";
+ break;
+ case LATEX_ITEM_ENVIRONMENT:
+ os << "\tLatexType Item_Environment\n";
+ break;
+ case LATEX_LIST_ENVIRONMENT:
+ os << "\tLatexType List_Environment\n";
+ break;
+ case LATEX_PARAGRAPH:
+ os << "\tLatexType Paragraph\n";
+ break;
+ }
+ os << "\tInTitle " << intitle << "\n"
+ "\tInPreamble " << inpreamble << "\n"
+ "\tTocLevel " << toclevel << "\n"
+ "\tResumeCounter " << resumecounter << "\n"
+ "\tStepMasterCounter " << stepmastercounter << '\n';
+ // ResetArgs does not make sense here
+ for (LaTeXArgMap::const_iterator it = latexargs_.begin();
+ it != latexargs_.end(); ++it)
+ writeArgument(os, it->first, it->second);
+ for (LaTeXArgMap::const_iterator it = itemargs_.begin();
+ it != itemargs_.end(); ++it)
+ writeArgument(os, it->first, it->second);
+ for (LaTeXArgMap::const_iterator it = postcommandargs_.begin();
+ it != postcommandargs_.end(); ++it)
+ writeArgument(os, it->first, it->second);
+ os << "\tNeedProtect " << needprotect << "\n"
+ "\tNeedCProtect " << needcprotect << "\n"
+ "\tKeepEmpty " << keepempty << '\n';
+ if (labelfont == font)
+ lyxWrite(os, font, "Font", 1);
+ else {
+ lyxWrite(os, font, "TextFont", 1);
+ lyxWrite(os, labelfont, "LabelFont", 1);
+ }
+ os << "\tNextNoIndent " << nextnoindent << "\n"
+ "\tCommandDepth " << commanddepth << '\n';
+ if (!latexname_.empty())
+ os << "\tLatexName \"" << latexname_ << "\"\n";
+ if (!latexparam_.empty())
+ os << "\tLatexParam \"" << subst(latexparam_, "\"", """)
+ << "\"\n";
+ if (!leftdelim_.empty())
+ os << "\tLeftDelim "
+ << to_utf8(subst(leftdelim_, from_ascii("\n"), from_ascii("<br/>")))
+ << '\n';
+ if (!rightdelim_.empty())
+ os << "\tRightDelim "
+ << to_utf8(subst(rightdelim_, from_ascii("\n"), from_ascii("<br/>")))
+ << '\n';
+ if (!innertag_.empty())
+ os << "\tInnerTag \"" << innertag_ << "\"\n";
+ if (!labeltag_.empty())
+ os << "\tLabelTag \"" << labeltag_ << "\"\n";
+ if (!itemtag_.empty())
+ os << "\tItemTag \"" << itemtag_ << "\"\n";
+ if (!itemcommand_.empty())
+ os << "\tItemCommand " << itemcommand_ << '\n';
+ if (!preamble_.empty())
+ os << "\tPreamble\n\t"
+ << to_utf8(subst(rtrim(preamble_, "\n"),
+ from_ascii("\n"), from_ascii("\n\t")))
+ << "\n\tEndPreamble\n";
+ if (!langpreamble_.empty())
+ os << "\tLangPreamble\n\t"
+ << to_utf8(subst(rtrim(langpreamble_, "\n"),
+ from_ascii("\n"), from_ascii("\n\t")))
+ << "\n\tEndLangPreamble\n";
+ if (!babelpreamble_.empty())
+ os << "\tBabelPreamble\n\t"
+ << to_utf8(subst(rtrim(babelpreamble_, "\n"),
+ from_ascii("\n"), from_ascii("\n\t")))
+ << "\n\tEndBabelPreamble\n";
+ switch (labeltype) {
+ case LABEL_ABOVE:
+ os << "\tLabelType Above\n";
+ break;
+ case LABEL_BIBLIO:
+ os << "\tLabelType Bibliography\n";
+ break;
+ case LABEL_CENTERED:
+ os << "\tLabelType Centered\n";
+ break;
+ case LABEL_ENUMERATE:
+ os << "\tLabelType Enumerate\n";
+ break;
+ case LABEL_ITEMIZE:
+ os << "\tLabelType Itemize\n";
+ break;
+ case LABEL_MANUAL:
+ os << "\tLabelType Manual\n";
+ break;
+ case LABEL_NO_LABEL:
+ os << "\tLabelType No_Label\n";
+ break;
+ case LABEL_SENSITIVE:
+ os << "\tLabelType Sensitive\n";
+ break;
+ case LABEL_STATIC:
+ os << "\tLabelType Static\n";
+ break;
+ }
+ switch (endlabeltype) {
+ case END_LABEL_BOX:
+ os << "\tEndLabelType Box\n";
+ break;
+ case END_LABEL_FILLED_BOX:
+ os << "\tEndLabelType Filled_Box\n";
+ break;
+ case END_LABEL_NO_LABEL:
+ os << "\tEndLabelType No_Label\n";
+ break;
+ case END_LABEL_STATIC:
+ os << "\tEndLabelType Static\n";
+ break;
+ }
+ os << "\tParagraphGroup \"" << par_group_ << "\"\n";
+ if (!leftmargin.empty())
+ os << "\tLeftMargin \"" << to_utf8(leftmargin) << "\"\n";
+ if (!rightmargin.empty())
+ os << "\tRightMargin \"" << to_utf8(rightmargin) << "\"\n";
+ if (!labelindent.empty())
+ os << "\tLabelIndent " << to_utf8(labelindent) << '\n';
+ if (!parindent.empty())
+ os << "\tParIndent " << to_utf8(parindent) << '\n';
+ os << "\tParSkip " << parskip << "\n"
+ "\tItemSep " << itemsep << "\n"
+ "\tTopSep " << topsep << "\n"
+ "\tBottomSep " << bottomsep << "\n"
+ "\tLabelBottomSep " << labelbottomsep << '\n';
+ if (!labelsep.empty())
+ os << "\tLabelSep " << to_utf8(subst(labelsep, ' ', 'x'))
+ << '\n';
+ os << "\tParSep " << parsep << "\n"
+ "\tNewLine " << newline_allowed << '\n';
+ switch (align) {
+ case LYX_ALIGN_BLOCK:
+ os << "\tAlign Block\n";
+ break;
+ case LYX_ALIGN_CENTER:
+ os << "\tAlign Center\n";
+ break;
+ case LYX_ALIGN_LAYOUT:
+ os << "\tAlign Layout\n";
+ break;
+ case LYX_ALIGN_LEFT:
+ os << "\tAlign Left\n";
+ break;
+ case LYX_ALIGN_RIGHT:
+ os << "\tAlign Right\n";
+ break;
+ case LYX_ALIGN_DECIMAL:
+ case LYX_ALIGN_SPECIAL:
+ case LYX_ALIGN_NONE:
+ break;
+ }
+ if (alignpossible & (LYX_ALIGN_BLOCK | LYX_ALIGN_CENTER |
+ LYX_ALIGN_LAYOUT | LYX_ALIGN_LEFT | LYX_ALIGN_RIGHT)) {
+ bool first = true;
+ os << "\tAlignPossible";
+ if (alignpossible & LYX_ALIGN_BLOCK) {
+ os << " Block";
+ first = false;
+ }
+ if (alignpossible & LYX_ALIGN_CENTER) {
+ if (!first)
+ os << ',';
+ os << " Center";
+ first = false;
+ }
+ if (alignpossible & LYX_ALIGN_LAYOUT) {
+ if (!first)
+ os << ',';
+ os << " Layout";
+ first = false;
+ }
+ if (alignpossible & LYX_ALIGN_LEFT) {
+ if (!first)
+ os << ',';
+ os << " Left";
+ first = false;
+ }
+ if (alignpossible & LYX_ALIGN_RIGHT) {
+ if (!first)
+ os << ',';
+ os << " Right";
+ first = false;
+ }
+ os << '\n';
+ }
+ // LabelString must come before LabelStringAppendix
+ if (!labelstring_.empty())
+ os << "\tLabelString \"" << to_utf8(labelstring_) << "\"\n";
+ if (!endlabelstring_.empty())
+ os << "\tEndLabelString \"" << to_utf8(endlabelstring_) << "\"\n";
+ if (!labelstring_appendix_.empty() && labelstring_appendix_ != labelstring_)
+ os << "\tLabelStringAppendix \""
+ << to_utf8(labelstring_appendix_) << "\"\n";
+ if (!counter.empty())
+ os << "\tLabelCounter \"" << to_utf8(counter) << "\"\n";
+ os << "\tFreeSpacing " << free_spacing << '\n';
+ os << "\tPassThru " << pass_thru << '\n';
+ if (!pass_thru_chars.empty())
+ os << "\tPassThruChars " << to_utf8(pass_thru_chars) << '\n';
+ os << "\tParbreakIsNewline " << parbreak_is_newline << '\n';
+ switch (spacing.getSpace()) {
+ case Spacing::Double:
+ os << "\tSpacing Double\n";
+ break;
+ case Spacing::Onehalf:
+ os << "\tSpacing Onehalf\n";
+ break;
+ case Spacing::Other:
+ os << "\tSpacing Other " << spacing.getValueAsString() << '\n';
+ break;
+ case Spacing::Single:
+ os << "\tSpacing Single\n";
+ break;
+ case Spacing::Default:
+ break;
+ }
+ if (!requires_.empty()) {
+ os << "\tRequires ";
+ for (set<string>::const_iterator it = requires_.begin();
+ it != requires_.end(); ++it) {
+ if (it != requires_.begin())
+ os << ',';
+ os << *it;
+ }
+ os << '\n';