-bool Paragraph::linuxDocConvertChar(char c, string & sgml_string)
-{
- bool retval = false;
- switch (c) {
- case Paragraph::META_HFILL:
- sgml_string.erase();
- break;
- case Paragraph::META_NEWLINE:
- sgml_string = '\n';
- break;
- case '&':
- sgml_string = "&";
- break;
- case '<':
- sgml_string = "<";
- break;
- case '>':
- sgml_string = ">";
- break;
- case '$':
- sgml_string = "$";
- break;
- case '#':
- sgml_string = "#";
- break;
- case '%':
- sgml_string = "%";
- break;
- case '[':
- sgml_string = "[";
- break;
- case ']':
- sgml_string = "]";
- break;
- case '{':
- sgml_string = "{";
- break;
- case '}':
- sgml_string = "}";
- break;
- case '~':
- sgml_string = "˜";
- break;
- case '"':
- sgml_string = """;
- break;
- case '\\':
- sgml_string = "\";
- break;
- case ' ':
- retval = true;
- sgml_string = ' ';
- break;
- case '\0': // Ignore :-)
- sgml_string.erase();
- break;
- default:
- sgml_string = c;
- break;
- }
- return retval;
-}
-
-
-Paragraph * Paragraph::TeXEnvironment(Buffer const * buf,
- BufferParams const & bparams,
- ostream & os, TexRow & texrow)
-{
- lyxerr[Debug::LATEX] << "TeXEnvironment... " << this << endl;
-
- LyXLayout const & style =
- textclasslist.Style(bparams.textclass,
- layout);
-
- if (style.isEnvironment()){
- if (style.latextype == LATEX_LIST_ENVIRONMENT) {
- os << "\\begin{" << style.latexname() << "}{"
- << params().labelWidthString() << "}\n";
- } else if (style.labeltype == LABEL_BIBLIO) {
- // ale970405
- os << "\\begin{" << style.latexname() << "}{"
- << bibitemWidest(buf)
- << "}\n";
- } else if (style.latextype == LATEX_ITEM_ENVIRONMENT) {
- os << "\\begin{" << style.latexname() << '}'
- << style.latexparam() << '\n';
- } else
- os << "\\begin{" << style.latexname() << '}'
- << style.latexparam() << '\n';
- texrow.newline();
- }
- Paragraph * par = this;
- do {
- par = par->TeXOnePar(buf, bparams,
- os, texrow, false);
-
- if (par && par->params().depth() > params().depth()) {
- if (textclasslist.Style(bparams.textclass,
- par->layout).isParagraph()
- // Thinko!
- // How to handle this? (Lgb)
- //&& !suffixIs(os, "\n\n")
- ) {
- // There should be at least one '\n' already
- // but we need there to be two for Standard
- // paragraphs that are depth-increment'ed to be
- // output correctly. However, tables can
- // also be paragraphs so don't adjust them.
- // ARRae
- // Thinkee:
- // Will it ever harm to have one '\n' too
- // many? i.e. that we sometimes will have
- // three in a row. (Lgb)
- os << '\n';
- texrow.newline();
- }
- par = par->pimpl_->TeXDeeper(buf, bparams, os, texrow);
- }
- } while (par
- && par->layout == layout
- && par->params().depth() == params().depth());
-
- if (style.isEnvironment()) {
- os << "\\end{" << style.latexname() << "}\n";
- }
-
- lyxerr[Debug::LATEX] << "TeXEnvironment...done " << par << endl;
- return par; // ale970302
-}