]> git.lyx.org Git - features.git/commitdiff
Introduce doc preference for line numbering.
authorPavel Sanda <sanda@lyx.org>
Thu, 23 May 2019 13:13:27 +0000 (15:13 +0200)
committerPavel Sanda <sanda@lyx.org>
Thu, 23 May 2019 13:13:27 +0000 (15:13 +0200)
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg208781.html

development/FORMAT
lib/lyx2lyx/lyx_2_4.py
src/BufferParams.cpp
src/BufferParams.h
src/frontends/qt4/GuiDocument.cpp
src/frontends/qt4/ui/NumberingUi.ui
src/tex2lyx/TODO.txt
src/version.h

index fd2b6c4f93186ce412ef848722c6ce5b1b438d90..31f9ed2e7ed581085810761960c68c65b4e8b7b7 100644 (file)
@@ -7,6 +7,9 @@ changes happened in particular if possible. A good example would be
 
 -----------------------
 
+2019-05-21 Pavel Sanda <sanda@lyx.org>
+       * Format incremented to 575: add line numbering via lineno package
+
 2019-04-16  Günter Milde <milde@lyx.org>
         * Format incremented to 574: Ruby inset, fixes for Japanese.
 
index 56490855d9c9fc9f12cdf139ab9f5b140c10f4a0..866bbb2b865851ea7040876810356cc5779adde1 100644 (file)
@@ -1694,6 +1694,15 @@ def revert_utf8_japanese(document):
     if lang == "japanese-cjk":
         document.set_parameter("inputencoding", "utf8-cjk")
 
+def revert_lineno(document):
+    " Remove lineno package use."
+    i = find_token(document.header, "\\use_lineno", 0)
+    if i != -1:
+        del document.header[i]
+    i = find_token(document.header, "\\lineno_options", 0)
+    if i != -1:
+        del document.header[i]
+
 
 ##
 # Conversion hub
@@ -1731,9 +1740,11 @@ convert = [
            [572, [convert_notoFonts]],  # Added options thin, light, extralight for Noto
            [573, [convert_inputencoding_namechange]],
            [574, [convert_ruby_module, convert_utf8_japanese]],
+           [575, []],
           ]
 
-revert =  [[573, [revert_ruby_module, revert_utf8_japanese]],
+revert =  [[574, [revert_lineno]],
+           [573, [revert_ruby_module, revert_utf8_japanese]],
            [572, [revert_inputencoding_namechange]],
            [571, [revert_notoFonts]],
            [570, [revert_cmidruletrimming]],
index 523e5c9a018e2f7b61b8f141dda232861af8cfbf..dd7d950f547753292716a8c28911fff1c949dce5 100644 (file)
@@ -475,6 +475,7 @@ BufferParams::BufferParams()
        output_sync = false;
        use_refstyle = true;
        use_minted = false;
+       use_lineno = false;
 
        // map current author
        author_map_[pimpl_->authorlist.get(0).bufferId()] = 0;
@@ -1118,6 +1119,11 @@ string BufferParams::readToken(Lexer & lex, string const & token,
                lex >> use_refstyle;
        } else if (token == "\\use_minted") {
                lex >> use_minted;
+       } else if (token == "\\use_lineno") {
+               lex >> use_lineno;
+       } else if (token == "\\lineno_options") {
+               lex.eatLine();
+               lineno_opts = trim(lex.getString());
        } else {
                lyxerr << "BufferParams::readToken(): Unknown token: " <<
                        token << endl;
@@ -1321,6 +1327,12 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
           << "\n\\use_refstyle " << use_refstyle
           << "\n\\use_minted " << use_minted
           << '\n';
+
+       if (use_lineno)
+               os << "\\use_lineno " << use_lineno << '\n';
+       if (!lineno_opts.empty())
+                os << "\\lineno_options " << lineno_opts << '\n';
+
        if (isbackgroundcolor == true)
                os << "\\backgroundcolor " << lyx::X11hexname(backgroundcolor) << '\n';
        if (isfontcolor == true)
@@ -2132,6 +2144,14 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
                // hyperref loads this automatically
                os << "\\usepackage{nameref}\n";
 
+       if (use_lineno){
+               os << "\\usepackage";
+               if (!lineno_opts.empty())
+                       os << "[" << lineno_opts << "]";
+               os << "{lineno}\n";
+               os << "\\linenumbers\n";
+       }
+
        // bibtopic needs to be loaded after hyperref.
        // the dot provides the aux file naming which LyX can detect.
        if (features.mustProvide("bibtopic"))
index 5c80670a8a87332868b372cca9590295527f2547..1e8b5b00f17205ca99c3c2b100d508cab2892ef8 100644 (file)
@@ -550,6 +550,10 @@ public:
        bool use_refstyle;
        /// use minted? or listings?
        bool use_minted;
+       //output line numbering
+       bool use_lineno;
+       //optional params for lineno package
+       std::string lineno_opts;
 
        /// Return true if language could be set to lang,
        /// otherwise return false and do not change language
index 23bb35cb8752e6a10bf98cdf329cb73302015095..48bc112a3e70be1c8b51a9e34ea17a5531a31641 100644 (file)
@@ -1253,6 +1253,11 @@ GuiDocument::GuiDocument(GuiView & lv)
        numberingModule->tocTW->headerItem()->setText(1, qt_("Numbered"));
        numberingModule->tocTW->headerItem()->setText(2, qt_("Appears in TOC"));
        setSectionResizeMode(numberingModule->tocTW->header(), QHeaderView::ResizeToContents);
+       connect(numberingModule->linenoGB, SIGNAL(clicked()),
+               this, SLOT(change_adaptor()));
+       connect(numberingModule->linenoLE, SIGNAL(textChanged(QString)),
+               this, SLOT(change_adaptor()));
+
 
        // biblio
        biblioModule = new UiWidget<Ui::BiblioUi>(this);
@@ -3282,6 +3287,8 @@ void GuiDocument::applyView()
                bp_.tocdepth = numberingModule->tocSL->value();
                bp_.secnumdepth = numberingModule->depthSL->value();
        }
+       bp_.use_lineno = numberingModule->linenoGB->isChecked();
+       bp_.lineno_opts = fromqstr(numberingModule->linenoLE->text());
 
        // bullets
        bp_.user_defined_bullet(0) = bulletsModule->bullet(0);
@@ -3806,6 +3813,9 @@ void GuiDocument::paramsToDialog()
                numberingModule->tocTW->clear();
        }
 
+       numberingModule->linenoGB->setChecked(bp_.use_lineno);
+       numberingModule->linenoLE->setText(toqstr(bp_.lineno_opts));
+
        // bullets
        bulletsModule->setBullet(0, bp_.user_defined_bullet(0));
        bulletsModule->setBullet(1, bp_.user_defined_bullet(1));
index 39bed38af5873e3187fddada0d9e176b79f52427..7927862f2bee2cc66b3a571908331719951d1970 100644 (file)
      </property>
     </widget>
    </item>
+   <item row="5" column="0">
+    <widget class="QGroupBox" name="linenoGB">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="title">
+      <string>L&amp;ines numbering</string>
+     </property>
+     <property name="flat">
+      <bool>true</bool>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <property name="checked">
+      <bool>false</bool>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Additional O&amp;ptions:</string>
+        </property>
+        <property name="buddy">
+         <cstring>linenoLE</cstring>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="linenoLE">
+        <property name="toolTip">
+         <string>lineno package options (e.g. right, modulo, switch, displaymath, mathlines,...)</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
   </layout>
  </widget>
  <tabstops>
index d1760ace5105a2601b6b0b033f75e14e32af6e40..c64cdccab01cc55342f39f95cbee8b9b43a23b27 100644 (file)
@@ -34,6 +34,7 @@ Format LaTeX feature                        LyX feature
 443    unicode-math.sty                     InsetMath*
 453    automatic stmaryrd loading           \use_package stmaryrd
 457    automatic stackrel loading           \use_package stackrel
+575    numbering of lines (lineno)          \use_lineno, \lineno_options
 
 
 
index a92854e8a9e5754268c6700fae9dec7c9eb97a86..496e34b8ee3c6e375e355a5fe6c5f9cd768b72e1 100644 (file)
@@ -32,8 +32,8 @@ extern char const * const lyx_version_info;
 
 // Do not remove the comment below, so we get merge conflict in
 // independent branches. Instead add your own.
-#define LYX_FORMAT_LYX 574 // gm: Japanese fixes
-#define LYX_FORMAT_TEX2LYX 574
+#define LYX_FORMAT_LYX 575 // ps: lineno
+#define LYX_FORMAT_TEX2LYX 575
 
 #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
 #ifndef _MSC_VER