commit a25569ebb3e739779ff458b287e403c3bf79777a
Author: Juergen Spitzmueller <[email protected]>
Date:   Mon Dec 1 14:56:47 2014 +0100

    Add a layout tag ForceOwnlines that assures an inset is started and 
terminated by a line break in the LaTeX output.
    
    Fixes: #8875.

diff --git a/lib/doc/Customization.lyx b/lib/doc/Customization.lyx
index 1419957..96f4730 100644
--- a/lib/doc/Customization.lyx
+++ b/lib/doc/Customization.lyx
@@ -1,5 +1,5 @@
-#LyX 2.1 created this file. For more info see http://www.lyx.org/
-\lyxformat 476
+#LyX 2.2 created this file. For more info see http://www.lyx.org/
+\lyxformat 479
 \begin_document
 \begin_header
 \textclass scrbook
@@ -17019,6 +17019,59 @@ g.
 
 in TeX code or URL.
  A kludge.
+\change_inserted -712698321 1417441977
+
+\end_layout
+
+\begin_layout Description
+
+\change_inserted -712698321 1417442090
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted -712698321 1417441983
+ForceOwnlines
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted -712698321 1417441978
+
+\emph on
+0
+\end_layout
+
+\end_inset
+
+,
+\begin_inset space \thinspace{}
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted -712698321 1417441978
+1
+\end_layout
+
+\end_inset
+
+] Force a a line break in the LaTeX output before the inset starts and after
+ the inset ends.
+ This assures the inset itself is output on its own lines, for parsing 
purposes.
+\change_unchanged
+
 \end_layout
 
 \begin_layout Description
@@ -23533,7 +23586,7 @@ name "chap:List-of-functions"
 \align center
 \begin_inset Tabular
 <lyxtabular version="3" rows="11" columns="8">
-<features rotate="0" tabularvalignment="middle">
+<features tabularvalignment="middle">
 <column alignment="left" valignment="top">
 <column alignment="left" valignment="top">
 <column alignment="left" valignment="top">
diff --git a/lib/layouts/litinsets.inc b/lib/layouts/litinsets.inc
index 05440cb..c83b6a3 100644
--- a/lib/layouts/litinsets.inc
+++ b/lib/layouts/litinsets.inc
@@ -6,7 +6,7 @@
 # Note that this file is included in sweave.module,
 # knitr.module and noweb.module.
 
-Format 49
+Format 52
 
 Counter chunk
     PrettyFormat "Chunk ##"
@@ -23,15 +23,15 @@ InsetLayout "Flex:Chunk"
       Color              latex
       Family             typewriter
     EndFont
-    #LabelFont
-      #Color              latex
-      #Size               Small
-    #EndFont
-      MultiPar            true
+#   LabelFont
+#      Color              latex
+#      Size               Small
+#   EndFont
+    MultiPar              true
     CustomPars            false
     ForcePlain            true
-      PassThru            1
-      ParbreakIsNewline   1
+    PassThru              1
+    ParbreakIsNewline     1
     KeepEmpty             true
     Spellcheck            0
     FreeSpacing           true
@@ -43,5 +43,6 @@ InsetLayout "Flex:Chunk"
             LeftDelim     <<
             RightDelim    >>=<br/>
     EndArgument
-    ResetsFont false
+    ResetsFont            false
+    ForceOwnlines         true
 End
diff --git a/lib/scripts/layout2layout.py b/lib/scripts/layout2layout.py
index d269d58..10811e7 100644
--- a/lib/scripts/layout2layout.py
+++ b/lib/scripts/layout2layout.py
@@ -171,6 +171,9 @@ import os, re, string, sys
 # Incremented to format 51, 29 May 2014 by spitz
 # New Style tag "ToggleIndent"
 
+# Incremented to format 52, 1 December 2014 by spitz
+# New InsetLayout tag "ForceOwnlines"
+
 # Do not forget to document format change in Customization
 # Manual (section "Declaring a new text class").
 
@@ -178,7 +181,7 @@ import os, re, string, sys
 # development/tools/updatelayouts.py script to update all
 # layout files to the new format.
 
-currentFormat = 51
+currentFormat = 52
 
 
 def usage(prog_name):
@@ -402,7 +405,7 @@ def convert(lines):
                 i += 1
             continue
 
-        if format == 50:
+        if format == 50 or format == 51:
             # nothing to do.
             i += 1
             continue
diff --git a/src/TextClass.cpp b/src/TextClass.cpp
index e0e302a..113cddb 100644
--- a/src/TextClass.cpp
+++ b/src/TextClass.cpp
@@ -61,7 +61,7 @@ namespace lyx {
 // You should also run the development/tools/updatelayouts.py script,
 // to update the format of all of our layout files.
 //
-int const LAYOUT_FORMAT = 51; //spitz: add ToggleIndent tag
+int const LAYOUT_FORMAT = 52; //spitz: add ForceOwnlines tag
 
 namespace {
 
diff --git a/src/insets/InsetLayout.cpp b/src/insets/InsetLayout.cpp
index d579132..4a6d0a8 100644
--- a/src/insets/InsetLayout.cpp
+++ b/src/insets/InsetLayout.cpp
@@ -89,6 +89,7 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
                IL_FONT,
                IL_FORCE_LOCAL_FONT_SWITCH,
                IL_FORCELTR,
+               IL_FORCEOWNLINES,
                IL_FORCEPLAIN,
                IL_FREESPACING,
                IL_HTMLTAG,
@@ -139,6 +140,7 @@ bool InsetLayout::read(Lexer & lex, TextClass const & 
tclass)
                { "font", IL_FONT },
                { "forcelocalfontswitch", IL_FORCE_LOCAL_FONT_SWITCH },
                { "forceltr", IL_FORCELTR },
+               { "forceownlines", IL_FORCEOWNLINES },
                { "forceplain", IL_FORCEPLAIN },
                { "freespacing", IL_FREESPACING },
                { "htmlattr", IL_HTMLATTR },
@@ -256,6 +258,9 @@ bool InsetLayout::read(Lexer & lex, TextClass const & 
tclass)
                case IL_FORCELTR:
                        lex >> forceltr_;
                        break;
+               case IL_FORCEOWNLINES:
+                       lex >> forceownlines_;
+                       break;
                case IL_INTOC:
                        lex >> intoc_;
                        break;
diff --git a/src/insets/InsetLayout.h b/src/insets/InsetLayout.h
index 9398e91..2ef6be4 100644
--- a/src/insets/InsetLayout.h
+++ b/src/insets/InsetLayout.h
@@ -164,6 +164,8 @@ public:
        ///
        bool forceLTR() const { return forceltr_; }
        ///
+       bool forceOwnlines() const { return forceownlines_; }
+       ///
        bool isInToc() const { return intoc_; }
        ///
        bool spellcheck() const { return spellcheck_; }
@@ -262,6 +264,8 @@ private:
        ///
        bool forceltr_;
        ///
+       bool forceownlines_;
+       ///
        bool needprotect_;
        /// should the contents be written to TOC strings?
        bool intoc_;
diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp
index de251e7..e0cd894 100644
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -433,6 +433,8 @@ void InsetText::latex(otexstream & os, OutputParams const & 
runparams) const
        // environment. Standard collapsable insets should not
        // redefine this, non-standard ones may call this.
        InsetLayout const & il = getLayout();
+       if (il.forceOwnlines())
+               os << breakln;
        if (!il.latexname().empty()) {
                if (il.latextype() == InsetLayout::COMMAND) {
                        // FIXME UNICODE
@@ -495,11 +497,13 @@ void InsetText::latex(otexstream & os, OutputParams const 
& runparams) const
                                os << breakln;
                        else
                                os << safebreakln;
-                       os << "\\end{" << from_utf8(il.latexname()) << "}\n";
+                       os << "\\end{" << from_utf8(il.latexname()) << "}" << 
breakln;
                        if (!il.isDisplay())
                                os.protectSpace(true);
                }
        }
+       if (il.forceOwnlines())
+               os << breakln;
 }
 
 

Reply via email to