]> git.lyx.org Git - lyx.git/blobdiff - src/output_latex.cpp
Support the new Indian Rupee currency symbol.
[lyx.git] / src / output_latex.cpp
index 0af736f9f794642b6f5436dcb034effe89bb926c..ea4d035367b173ddb0498b291e3e3dba099a5f35 100644 (file)
@@ -15,6 +15,7 @@
 #include "Buffer.h"
 #include "BufferParams.h"
 #include "Encoding.h"
+#include "Font.h"
 #include "InsetList.h"
 #include "Language.h"
 #include "Layout.h"
@@ -373,18 +374,44 @@ ParagraphList::const_iterator TeXOnePar(Buffer const & buf,
                open_encoding_ = none;
        }
 
-       if (runparams.verbatim) {
+       if (text.inset().getLayout().isPassThru()) {
                int const dist = distance(paragraphs.begin(), pit);
                Font const outerfont = text.outerFont(dist);
 
-               // No newline if only one paragraph in this lyxtext
+               // No newline before first paragraph in this lyxtext
                if (dist > 0) {
                        os << '\n';
                        texrow.newline();
+                       if (!text.inset().getLayout().parbreakIsNewline()) {
+                               os << '\n';
+                               texrow.newline();
+                       }
+               }
+
+               pit->latex(bparams, outerfont, os, texrow,
+                          runparams, start_pos, end_pos);
+               return nextpit;
+       }
+
+       if (style.pass_thru) {
+               int const dist = distance(paragraphs.begin(), pit);
+               Font const outerfont = text.outerFont(dist);
+               pit->latex(bparams, outerfont, os, texrow,
+                          runparams, start_pos, end_pos);
+               os << '\n';
+               texrow.newline();
+               if (!style.parbreak_is_newline) {
+                       os << '\n';
+                       texrow.newline();
+               } else if (nextpit != paragraphs.end()) {
+                       Layout const nextstyle = text.inset().forcePlainLayout() ?
+                               bparams.documentClass().plainLayout() : nextpit->layout();
+                       if (nextstyle.name() != style.name()) {
+                               os << '\n';
+                               texrow.newline();
+                       }
                }
 
-               /*bool need_par = */ pit->latex(bparams, outerfont,
-                       os, texrow, runparams, start_pos, end_pos);
                return nextpit;
        }
 
@@ -608,8 +635,8 @@ ParagraphList::const_iterator TeXOnePar(Buffer const & buf,
 
        // FIXME UNICODE
        os << from_utf8(everypar);
-       bool need_par = pit->latex(bparams, outerfont,
-                                            os, texrow, runparams, start_pos, end_pos);
+       pit->latex(bparams, outerfont, os, texrow,
+                                                runparams, start_pos, end_pos);
 
        // Make sure that \\par is done with the font of the last
        // character if this has another size as the default.
@@ -630,11 +657,8 @@ ParagraphList::const_iterator TeXOnePar(Buffer const & buf,
        if (style.resfont.size() != font.fontInfo().size()
            && nextpit != paragraphs.end()
            && !is_command) {
-               if (!need_par)
-                       os << '{';
+               os << '{';
                os << "\\" << from_ascii(font.latexSize()) << " \\par}";
-       } else if (need_par) {
-               os << "\\par}";
        } else if (is_command) {
                os << '}';
                if (runparams.encoding != prev_encoding) {