[LyX features/features/indexmacros] Merge branch 'master' into features/indexmacros

Juergen Spitzmueller spitz at lyx.org
Tue Apr 19 10:26:40 UTC 2022


The branch, features/indexmacros, has been created.
        at  5093e39170f16fa685208f5ef1f9a6584f69c5dd (commit)

- Log -----------------------------------------------------------------

commit 5093e39170f16fa685208f5ef1f9a6584f69c5dd
Merge: 7d7b21e 50403c4
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Tue Apr 19 11:54:11 2022 +0200

    Merge branch 'master' into features/indexmacros


commit 7d7b21ec3e60f0186929016d89a0dfeb4ad8c60f
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Tue Apr 19 11:46:08 2022 +0200

    Introduce InsetIndexMacros
    
    This adds native macros for subindexes (!level), |see and |seealso
    as well as native support for ranges |( |) and pagination format
    -- e.g., |textbf -- via the index dialog
    
    Resolves #12478, #7232 and #5014
    
    The feature is complete (incl. tex2lyx) except for
    
    * file format change and lyx2lyx
    * docbook/xhtml
    * documentation

diff --git a/lib/layouts/stdinsets.inc b/lib/layouts/stdinsets.inc
index 074b274..4063c63 100644
--- a/lib/layouts/stdinsets.inc
+++ b/lib/layouts/stdinsets.inc
@@ -431,6 +431,36 @@ InsetLayout Index
 	PassThruChars         @|!
 End
 
+InsetLayout IndexMacro:see
+	LabelString           See
+	Decoration            classic
+	Font
+	  Size                Small
+	EndFont
+	LabelFont
+	  Color               indexlabel
+	  Size                Small
+	EndFont
+	MultiPar              false
+	CustomPars            false
+	ForcePlain            true
+End
+
+InsetLayout IndexMacro:seealso
+	CopyStyle             IndexMacro:see
+	LabelString           "See also"
+End
+
+InsetLayout IndexMacro:sortkey
+	CopyStyle             IndexMacro:see
+	LabelString           "Sort as"
+End
+
+InsetLayout IndexMacro:subindex
+	CopyStyle             IndexMacro:see
+	LabelString           "Subindex"
+End
+
 InsetLayout Box
 	LabelFont
 	  Color               foreground
diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc
index ed9a9da..5929dbf 100644
--- a/lib/ui/stdcontext.inc
+++ b/lib/ui/stdcontext.inc
@@ -631,6 +631,23 @@ Menuset
 	Menu "context-index"
 		IndicesContext
 	End
+	
+	Menu "context-edit-index"
+		OptItem "Insert Subentry|b" "indexmacro-insert subindex"
+		OptItem "Insert Sortkey|k" "indexmacro-insert sortkey"
+		OptItem "Insert See Reference|e" "indexmacro-insert see"
+		OptItem "Insert See also Reference|a" "indexmacro-insert seealso"
+	End
+
+#
+# IndexMacro context menu
+#
+
+	Menu "context-indexmacro"
+		OptItem "See|e" "inset-modify changetype see"
+		OptItem "See also|a" "inset-modify changetype seealso"
+	End
+
 
 #
 # Index Lists context menu
diff --git a/lib/ui/stdmenus.inc b/lib/ui/stdmenus.inc
index ec5c5c0..2954b39 100644
--- a/lib/ui/stdmenus.inc
+++ b/lib/ui/stdmenus.inc
@@ -391,6 +391,7 @@ Menuset
 		Item "Label...|L" "label-insert"
 		Captions
 		Indices
+		OptSubmenu "Index Properties" "index_properties"
 		Item "Nomenclature Entry...|y" "nomencl-insert"
 		Separator
 		Item "Table...|T" "tabular-insert"
@@ -532,6 +533,13 @@ Menuset
 		Item "Double Frame|u" "box-insert Doublebox"
 	End
 
+	Menu "index_properties"
+		OptItem "Subentry|b" "indexmacro-insert subindex"
+		OptItem "Sortkey|k" "indexmacro-insert sortkey"
+		OptItem "See|e" "indexmacro-insert see"
+		OptItem "See also|a" "indexmacro-insert seealso"
+	End
+
 	Menu "insert_note"
 		Item "LyX Note|N" "note-insert Note"
 		Item "Comment|C" "note-insert Comment"
diff --git a/src/FuncCode.h b/src/FuncCode.h
index 8337c1f..6d7ed85 100644
--- a/src/FuncCode.h
+++ b/src/FuncCode.h
@@ -503,6 +503,8 @@ enum FuncCode
 	LFUN_FINISHED_DOWN,             // lasgouttes 20210629
 	LFUN_FINISHED_UP,               // lasgouttes 20210629
 	LFUN_BRANCH_SYNC_ALL,           // sanda 20220415
+	LFUN_INDEXMACRO_INSERT,         // spitz 20220220
+	// 395
 	LFUN_LASTACTION                 // end of the table
 };
 
diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index 559d950..399b3c0 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -2323,6 +2323,16 @@ void LyXAction::init()
  */
 		{ LFUN_IN_MATHMACROTEMPLATE, "in-mathmacrotemplate", Noop, Math },
 
+/*!
+ * \var lyx::FuncCode lyx::LFUN_INDEXMACRO_INSERT
+ * \li Action: Inserts special Index macros into the document.
+ * \li Syntax: indexmacro-insert <type>
+ * \li Params: <type>: see, seealso, subindex, sortkey.
+ * \li Origin: spitz, 20 Feb 2022
+ * \endvar
+ */
+		{ LFUN_INDEXMACRO_INSERT, "indexmacro-insert", Noop, Edit },
+
 
 /*!
  * \var lyx::FuncCode lyx::LFUN_IPAMACRO_INSERT
diff --git a/src/Makefile.am b/src/Makefile.am
index 99a0f98..9a642d8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -565,6 +565,7 @@ SOURCEFILESINSETS = \
 	insets/InsetHyperlink.cpp \
 	insets/InsetInclude.cpp \
 	insets/InsetIndex.cpp \
+	insets/InsetIndexMacro.cpp \
 	insets/InsetInfo.cpp \
 	insets/InsetIPA.cpp \
 	insets/InsetIPAMacro.cpp \
diff --git a/src/Text3.cpp b/src/Text3.cpp
index 185008b..bacc808 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -58,6 +58,7 @@
 #include "insets/InsetGraphics.h"
 #include "insets/InsetGraphicsParams.h"
 #include "insets/InsetInfo.h"
+#include "insets/InsetIndexMacro.h"
 #include "insets/InsetIPAMacro.h"
 #include "insets/InsetNewline.h"
 #include "insets/InsetQuotes.h"
@@ -2107,6 +2108,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 	case LFUN_BRANCH_INSERT:
 	case LFUN_PHANTOM_INSERT:
 	case LFUN_ERT_INSERT:
+	case LFUN_INDEXMACRO_INSERT:
 	case LFUN_LISTING_INSERT:
 	case LFUN_MARGINALNOTE_INSERT:
 	case LFUN_ARGUMENT_INSERT:
@@ -3285,6 +3287,14 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
 		}
 		code = HYPERLINK_CODE;
 		break;
+	case LFUN_INDEXMACRO_INSERT: {
+		string const arg = cmd.getArg(0);
+		if (arg == "sortkey")
+			code = INDEXMACRO_SORTKEY_CODE;
+		else
+			code = INDEXMACRO_CODE;
+		break;
+	}
 	case LFUN_IPAMACRO_INSERT: {
 		string const arg = cmd.getArg(0);
 		if (arg == "deco")
diff --git a/src/factory.cpp b/src/factory.cpp
index 6f17797..4ab74da 100644
--- a/src/factory.cpp
+++ b/src/factory.cpp
@@ -34,6 +34,7 @@
 #include "insets/InsetHyperlink.h"
 #include "insets/InsetInclude.h"
 #include "insets/InsetIndex.h"
+#include "insets/InsetIndexMacro.cpp"
 #include "insets/InsetInfo.h"
 #include "insets/InsetIPA.h"
 #include "insets/InsetIPAMacro.h"
@@ -159,6 +160,16 @@ Inset * createInsetHelper(Buffer * buf, FuncRequest const & cmd)
 			return new InsetIPADeco(buf, arg2);
 		}
 
+		case LFUN_INDEXMACRO_INSERT: {
+			string const arg = cmd.getArg(0);
+			if (arg != "see" && arg != "seealso"
+			    && arg != "subindex" && arg != "sortkey") {
+				LYXERR0("LFUN_IPAMACRO_INSERT: wrong argument");
+				return nullptr;
+			}
+			return new InsetIndexMacro(buf, arg);
+		}
+
 		case LFUN_ERT_INSERT:
 			return new InsetERT(buf);
 
@@ -667,6 +678,9 @@ Inset * readInset(Lexer & lex, Buffer * buf)
 			inset.reset(new InsetCaption(buf, s));
 		} else if (tmptok == "Index") {
 			inset.reset(new InsetIndex(buf, InsetIndexParams()));
+		} else if (tmptok == "IndexMacro") {
+			string s = lex.getString();
+			inset.reset(new InsetIndexMacro(buf, s));
 		} else if (tmptok == "FloatList") {
 			inset.reset(new InsetFloatList(buf));
 		} else if (tmptok == "Info") {
diff --git a/src/frontends/qt/GuiIndex.cpp b/src/frontends/qt/GuiIndex.cpp
index 6264d6a..5e14580 100644
--- a/src/frontends/qt/GuiIndex.cpp
+++ b/src/frontends/qt/GuiIndex.cpp
@@ -20,6 +20,7 @@
 #include "BufferParams.h"
 #include "FuncRequest.h"
 #include "IndicesList.h"
+#include "insets/InsetIndex.h"
 
 #include <QPushButton>
 
@@ -37,6 +38,18 @@ GuiIndex::GuiIndex(GuiView & lv)
 		this, SLOT(slotButtonBox(QAbstractButton *)));
 	connect(indicesCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
 
+	rangeCO->addItem(qt_("None"), InsetIndexParams::None);
+	rangeCO->addItem(qt_("Start"), InsetIndexParams::Start);
+	rangeCO->addItem(qt_("End"), InsetIndexParams::End);
+	connect(rangeCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
+
+	pageFormatCO->addItem(qt_("Default"), toqstr("default"));
+	pageFormatCO->addItem(qt_("Bold"), toqstr("textbf"));
+	pageFormatCO->addItem(qt_("Italic"), toqstr("textit"));
+	pageFormatCO->addItem(qt_("Emphasized"), toqstr("emph"));
+	pageFormatCO->addItem(qt_("Custom"), toqstr("custom"));
+	connect(pageFormatCO, SIGNAL(activated(int)), this, SLOT(pageFormatChanged(int)));
+
 	bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
 	bc().setOK(buttonBox->button(QDialogButtonBox::Ok));
 	bc().setCancel(buttonBox->button(QDialogButtonBox::Cancel));
@@ -49,11 +62,26 @@ void GuiIndex::change_adaptor()
 }
 
 
+void GuiIndex::pageFormatChanged(int i)
+{
+	QString const pf = pageFormatCO->itemData(i).toString();
+	pageFormatLE->setEnabled(pf == "custom");
+	change_adaptor();
+}
+
+
 void GuiIndex::updateContents()
 {
 	typedef IndicesList::const_iterator const_iterator;
 
-	IndicesList const & indiceslist = buffer().params().indiceslist();
+	BufferParams const & bp = buffer().masterBuffer()->params();
+	indicesGB->setEnabled(bp.use_indices);
+
+	QString const pf = pageFormatCO->itemData(
+		pageFormatCO->currentIndex()).toString();
+	pageFormatLE->setEnabled(pf == "custom");
+
+	IndicesList const & indiceslist = bp.indiceslist();
 	docstring const cur_index = params_.index;
 
 	indicesCO->clear();
@@ -64,8 +92,19 @@ void GuiIndex::updateContents()
 		indicesCO->addItem(toqstr(it->index()),
 			QVariant(toqstr(it->shortcut())));
 
-	int const pos = indicesCO->findData(toqstr(cur_index));
+	int pos = indicesCO->findData(toqstr(cur_index));
 	indicesCO->setCurrentIndex(pos);
+
+	pos = pageFormatCO->findData(toqstr(params_.pagefmt));
+	if (pos == -1) {
+		pos = pageFormatCO->findData("custom");
+		pageFormatLE->setText(toqstr(params_.pagefmt));
+	} else
+		pageFormatLE->clear();
+	pageFormatCO->setCurrentIndex(pos);
+
+	pos = rangeCO->findData(params_.range);
+	rangeCO->setCurrentIndex(pos);
 }
 
 
@@ -73,7 +112,15 @@ void GuiIndex::applyView()
 {
 	QString const index = indicesCO->itemData(
 		indicesCO->currentIndex()).toString();
+	int const range = rangeCO->itemData(
+		rangeCO->currentIndex()).toInt();
+	QString const pagefmt = pageFormatCO->itemData(
+		pageFormatCO->currentIndex()).toString();
 	params_.index = qstring_to_ucs4(index);
+	params_.range = InsetIndexParams::PageRange(range);
+	params_.pagefmt = (pagefmt == "custom") 
+			? fromqstr(pageFormatLE->text())
+			: fromqstr(pagefmt);
 }
 
 
diff --git a/src/frontends/qt/GuiIndex.h b/src/frontends/qt/GuiIndex.h
index bb99a22..0644644 100644
--- a/src/frontends/qt/GuiIndex.h
+++ b/src/frontends/qt/GuiIndex.h
@@ -31,6 +31,7 @@ public:
 
 private Q_SLOTS:
 	void change_adaptor();
+	void pageFormatChanged(int);
 
 private:
 	///  Apply changes
diff --git a/src/frontends/qt/ui/IndexUi.ui b/src/frontends/qt/ui/IndexUi.ui
index 95c2a71..a314489 100644
--- a/src/frontends/qt/ui/IndexUi.ui
+++ b/src/frontends/qt/ui/IndexUi.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>262</width>
-    <height>121</height>
+    <width>384</width>
+    <height>288</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -16,50 +16,119 @@
   <property name="sizeGripEnabled">
    <bool>true</bool>
   </property>
-  <layout class="QGridLayout" name="gridLayout">
+  <layout class="QGridLayout" name="gridLayout_3">
    <item row="0" column="0">
-    <layout class="QVBoxLayout">
-     <property name="spacing">
-      <number>6</number>
+    <widget class="QGroupBox" name="indicesGB">
+     <property name="title">
+      <string>Available I&ndexes</string>
      </property>
-     <property name="leftMargin">
-      <number>0</number>
-     </property>
-     <property name="topMargin">
-      <number>0</number>
-     </property>
-     <property name="rightMargin">
-      <number>0</number>
-     </property>
-     <property name="bottomMargin">
-      <number>0</number>
-     </property>
-     <item>
-      <widget class="QLabel" name="indicesLA">
-       <property name="text">
-        <string>Available I&ndexes:</string>
-       </property>
-       <property name="buddy">
-        <cstring>indicesCO</cstring>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QComboBox" name="indicesCO">
-       <property name="toolTip">
-        <string>Select the index this entry should be listed in.</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="0">
+       <widget class="QComboBox" name="indicesCO">
+        <property name="toolTip">
+         <string>Select the index this entry should be listed in.</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <spacer name="horizontalSpacer">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
    </item>
    <item row="1" column="0">
+    <widget class="QGroupBox" name="paginationGB">
+     <property name="title">
+      <string>&Pagination</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_2">
+      <item row="0" column="0">
+       <widget class="QLabel" name="rangeLA">
+        <property name="text">
+         <string>Page &Range:</string>
+        </property>
+        <property name="buddy">
+         <cstring>rangeCO</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <widget class="QComboBox" name="rangeCO">
+        <property name="toolTip">
+         <string>If the entry spans multiple pages, you can start or end the range here</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="2">
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>112</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="pageFormatLA">
+        <property name="text">
+         <string>&Format:</string>
+        </property>
+        <property name="buddy">
+         <cstring>pageFormatCO</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QComboBox" name="pageFormatCO">
+        <property name="toolTip">
+         <string>Customize the format of the page number here. Note that the format is not used with "See" and "See also" references.</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="2">
+       <widget class="QLineEdit" name="pageFormatLE">
+        <property name="toolTip">
+         <string>Enter custom command here (without leading backslash).</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="3" column="0">
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="standardButtons">
       <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
      </property>
     </widget>
    </item>
+   <item row="2" column="0">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
   </layout>
  </widget>
  <tabstops>
diff --git a/src/insets/InsetCode.h b/src/insets/InsetCode.h
index 43ed4b5..0b60ebf 100644
--- a/src/insets/InsetCode.h
+++ b/src/insets/InsetCode.h
@@ -239,6 +239,10 @@ enum InsetCode {
 	///
 	COUNTER_CODE,
 	///
+	INDEXMACRO_CODE, // 110
+	///
+	INDEXMACRO_SORTKEY_CODE,
+	///
 	INSET_CODE_SIZE
 };
 
diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp
index 8622263..8b69b6f 100644
--- a/src/insets/InsetIndex.cpp
+++ b/src/insets/InsetIndex.cpp
@@ -11,6 +11,7 @@
 #include <config.h>
 
 #include "InsetIndex.h"
+#include "InsetIndexMacro.h"
 
 #include "Buffer.h"
 #include "BufferParams.h"
@@ -19,10 +20,13 @@
 #include "Cursor.h"
 #include "DispatchResult.h"
 #include "Encoding.h"
+#include "ErrorList.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
 #include "IndicesList.h"
+#include "InsetList.h"
 #include "Language.h"
+#include "LaTeX.h"
 #include "LaTeXFeatures.h"
 #include "Lexer.h"
 #include "output_latex.h"
@@ -37,6 +41,7 @@
 #include "support/FileName.h"
 #include "support/gettext.h"
 #include "support/lstrings.h"
+#include "support/Translator.h"
 
 #include "frontends/alert.h"
 
@@ -51,6 +56,62 @@ using namespace lyx::support;
 
 namespace lyx {
 
+namespace {
+
+typedef Translator<string, InsetIndexParams::PageRange> PageRangeTranslator;
+typedef Translator<docstring, InsetIndexParams::PageRange> PageRangeTranslatorLoc;
+
+PageRangeTranslator const init_insetindexpagerangetranslator()
+{
+	PageRangeTranslator translator("none", InsetIndexParams::None);
+	translator.addPair("start", InsetIndexParams::Start);
+	translator.addPair("end", InsetIndexParams::End);
+	return translator;
+}
+
+PageRangeTranslator const init_insetindexpagerangetranslator_latex()
+{
+	PageRangeTranslator translator("", InsetIndexParams::None);
+	translator.addPair("(", InsetIndexParams::Start);
+	translator.addPair(")", InsetIndexParams::End);
+	return translator;
+}
+
+
+PageRangeTranslatorLoc const init_insetindexpagerangetranslator_loc()
+{
+	PageRangeTranslatorLoc translator(docstring(), InsetIndexParams::None);
+	translator.addPair(_("Starts page range"), InsetIndexParams::Start);
+	translator.addPair(_("Ends page range"), InsetIndexParams::End);
+	return translator;
+}
+
+
+PageRangeTranslator const & insetindexpagerangetranslator()
+{
+	static PageRangeTranslator const prtranslator =
+			init_insetindexpagerangetranslator();
+	return prtranslator;
+}
+
+
+PageRangeTranslatorLoc const & insetindexpagerangetranslator_loc()
+{
+	static PageRangeTranslatorLoc const translator =
+			init_insetindexpagerangetranslator_loc();
+	return translator;
+}
+
+
+PageRangeTranslator const & insetindexpagerangetranslator_latex()
+{
+	static PageRangeTranslator const lttranslator =
+			init_insetindexpagerangetranslator_latex();
+	return lttranslator;
+}
+
+} // namespace anon
+
 /////////////////////////////////////////////////////////////////////
 //
 // InsetIndex
@@ -59,7 +120,7 @@ namespace lyx {
 
 
 InsetIndex::InsetIndex(Buffer * buf, InsetIndexParams const & params)
-        : InsetCollapsible(buf), params_(params)
+	: InsetCollapsible(buf), params_(params)
 {}
 
 
@@ -91,106 +152,108 @@ void InsetIndex::latex(otexstream & ios, OutputParams const & runparams_in) cons
 		return;
 	}
 
-	// For the sorting key, we use the plaintext version
-	odocstringstream ourplain;
-	InsetText::plaintext(ourplain, runparams);
-
-	// These are the LaTeX and plaintext representations
-	docstring latexstr = ourlatex.str();
-	docstring plainstr = ourplain.str();
-
-	// This will get what follows | if anything does,
-	// the command (e.g., see, textbf) for pagination
-	// formatting
-	docstring cmd;
-
-	// Check for the | separator to strip the cmd.
-	// This goes wrong on an escaped "|", but as the escape
-	// character can be changed in style files, we cannot
-	// prevent that.
-	size_t pos = latexstr.find(from_ascii("|"));
-	if (pos != docstring::npos) {
-		// Put the bit after "|" into cmd...
-		cmd = latexstr.substr(pos + 1);
-		// ...and erase that stuff from latexstr
-		latexstr = latexstr.erase(pos);
-		// ...as well as from plainstr
-		size_t ppos = plainstr.find(from_ascii("|"));
-		if (ppos < plainstr.size())
-			plainstr.erase(ppos);
-		else
-			LYXERR0("The `|' separator was not found in the plaintext version!");
-	}
+	if (hasSortKey()) {
+		getSortkey(os, runparams);
+		os << "@";
+		os << ourlatex.str();
+		getSubentries(os, runparams);
+		if (hasSeeRef()) {
+			os << "|";
+			os << insetindexpagerangetranslator_latex().find(params_.range);
+			getSeeRefs(os, runparams);
+		}
+	} else {
+		// We check whether we need a sort key.
+		// If so, we use the plaintext version
+		odocstringstream ourplain;
+		InsetText::plaintext(ourplain, runparams);
+
+		// These are the LaTeX and plaintext representations
+		docstring latexstr = ourlatex.str();
+		docstring plainstr = ourplain.str();
+	
+		// This will get what follows | if anything does,
+		// the command (e.g., see, textbf) for pagination
+		// formatting
+		docstring cmd;
+
+		if (hasSeeRef()) {
+			odocstringstream seeref;
+			otexstream otsee(seeref);
+			getSeeRefs(otsee, runparams);
+			cmd = seeref.str();
+		} else if (!params_.pagefmt.empty() && params_.pagefmt != "default") {
+			cmd = from_utf8(params_.pagefmt);
+		} else {
+			// Check for the | separator to strip the cmd.
+			// This goes wrong on an escaped "|", but as the escape
+			// character can be changed in style files, we cannot
+			// prevent that.
+			size_t pos = latexstr.find(from_ascii("|"));
+			if (pos != docstring::npos) {
+				// Put the bit after "|" into cmd...
+				cmd = latexstr.substr(pos + 1);
+				// ...and erase that stuff from latexstr
+				latexstr = latexstr.erase(pos);
+				// ...as well as from plainstr
+				size_t ppos = plainstr.find(from_ascii("|"));
+				if (ppos < plainstr.size())
+					plainstr.erase(ppos);
+				else
+					LYXERR0("The `|' separator was not found in the plaintext version!");
+			}
+		}
 
-	// Separate the entries and subentries, i.e., split on "!".
-	// This goes wrong on an escaped "!", but as the escape
-	// character can be changed in style files, we cannot
-	// prevent that.
-	std::vector<docstring> const levels =
-			getVectorFromString(latexstr, from_ascii("!"), true);
-	std::vector<docstring> const levels_plain =
-			getVectorFromString(plainstr, from_ascii("!"), true);
-
-	vector<docstring>::const_iterator it = levels.begin();
-	vector<docstring>::const_iterator end = levels.end();
-	vector<docstring>::const_iterator it2 = levels_plain.begin();
-	bool first = true;
-	for (; it != end; ++it) {
-		// The separator needs to be put back when
-		// writing the levels, except for the first level
-		if (!first)
-			os << '!';
-		else
-			first = false;
-
-		// Now here comes the reason for this whole procedure:
-		// We try to correctly sort macros and formatted strings.
-		// If we find a command, prepend a plain text
-		// version of the content to get sorting right,
-		// e.g. \index{LyX@\LyX}, \index{text@\textbf{text}}.
-		// We do this on all levels.
-		// We don't do it if the level already contains a '@', though.
-		if (contains(*it, '\\') && !contains(*it, '@')) {
-			// Plaintext might return nothing (e.g. for ERTs).
-			// In that case, we use LaTeX.
-			docstring const spart =
-					(it2 < levels_plain.end() && !(*it2).empty())
-					? *it2 : *it;
-			// Now we need to validate that all characters in
-			// the sorting part are representable in the current
-			// encoding. If not try the LaTeX macro which might
-			// or might not be a good choice, and issue a warning.
-			pair<docstring, docstring> spart_latexed =
-					runparams.encoding->latexString(spart, runparams.dryrun);
-			if (!spart_latexed.second.empty())
-				LYXERR0("Uncodable character in index entry. Sorting might be wrong!");
-			if (spart != spart_latexed.first && !runparams.dryrun) {
-				// FIXME: warning should be passed to the error dialog
-				frontend::Alert::warning(_("Index sorting failed"),
-							 bformat(_("LyX's automatic index sorting algorithm faced\n"
-								   "problems with the entry '%1$s'.\n"
-								   "Please specify the sorting of this entry manually, as\n"
-								   "explained in the User Guide."), spart));
+		odocstringstream subentries;
+		otexstream otsub(subentries);
+		getSubentries(otsub, runparams);
+		if (subentries.str().empty()) {
+			// Separate the entries and subentries, i.e., split on "!".
+			// This goes wrong on an escaped "!", but as the escape
+			// character can be changed in style files, we cannot
+			// prevent that.
+			std::vector<docstring> const levels =
+					getVectorFromString(latexstr, from_ascii("!"), true);
+			std::vector<docstring> const levels_plain =
+					getVectorFromString(plainstr, from_ascii("!"), true);
+		
+			vector<docstring>::const_iterator it = levels.begin();
+			vector<docstring>::const_iterator end = levels.end();
+			vector<docstring>::const_iterator it2 = levels_plain.begin();
+			bool first = true;
+			for (; it != end; ++it) {
+				// The separator needs to be put back when
+				// writing the levels, except for the first level
+				if (!first)
+					os << '!';
+				else
+					first = false;
+		
+				// Now here comes the reason for this whole procedure:
+				// We try to correctly sort macros and formatted strings.
+				// If we find a command, prepend a plain text
+				// version of the content to get sorting right,
+				// e.g. \index{LyX@\LyX}, \index{text@\textbf{text}}.
+				// We do this on all levels.
+				// We don't do it if the level already contains a '@', though.
+				// Plaintext might return nothing (e.g. for ERTs).
+				// In that case, we use LaTeX.
+				docstring const spart = (levels_plain.empty() || (*it2).empty()) ? *it : *it2;
+				processLatexSorting(os, runparams, *it, spart);
+				if (it2 < levels_plain.end())
+					++it2;
 			}
-			// Remove remaining \'s from the sort key
-			docstring ppart = subst(spart_latexed.first, from_ascii("\\"), docstring());
-			// Plain quotes need to be escaped, however (#10649), as this
-			// is the default escape character
-			ppart = subst(ppart, from_ascii("\""), from_ascii("\\\""));
-
-			// Now insert the sortkey, separated by '@'.
-			os << ppart;
-			os << '@';
+		} else {
+			processLatexSorting(os, runparams, latexstr, plainstr);
+			os << subentries.str();
+		}
+
+		// At last, re-insert the command, separated by "|"
+		if (!cmd.empty()) {
+			os << "|"
+			   << insetindexpagerangetranslator_latex().find(params_.range)
+			   << cmd;
 		}
-		// Insert the actual level text
-		docstring const tpart = *it;
-		os << tpart;
-		if (it2 < levels_plain.end())
-			++it2;
-	}
-	// At last, re-insert the command, separated by "|"
-	if (!cmd.empty()) {
-		os << "|" << cmd;
 	}
 	os << '}';
 
@@ -203,6 +266,45 @@ void InsetIndex::latex(otexstream & ios, OutputParams const & runparams_in) cons
 }
 
 
+void InsetIndex::processLatexSorting(otexstream & os, OutputParams const & runparams,
+				docstring const latex, docstring const spart) const
+{
+	if (contains(latex, '\\') && !contains(latex, '@')) {
+		// Now we need to validate that all characters in
+		// the sorting part are representable in the current
+		// encoding. If not try the LaTeX macro which might
+		// or might not be a good choice, and issue a warning.
+		pair<docstring, docstring> spart_latexed =
+				runparams.encoding->latexString(spart, runparams.dryrun);
+		if (!spart_latexed.second.empty())
+			LYXERR0("Uncodable character in index entry. Sorting might be wrong!");
+		if (spart != spart_latexed.first && !runparams.dryrun) {
+			TeXErrors terr;
+			ErrorList & errorList = buffer().errorList("Export");
+			docstring const s = bformat(_("LyX's automatic index sorting algorithm faced "
+						      "problems with the entry '%1$s'.\n"
+						      "Please specify the sorting of this entry manually, as "
+						      "explained in the User Guide."), spart);
+			Paragraph const & par = buffer().paragraphs().front();
+			errorList.push_back(ErrorItem(_("Index sorting failed"), s,
+						      {par.id(), 0}, {par.id(), -1}));
+			buffer().bufferErrors(terr, errorList);
+		}
+		// Remove remaining \'s from the sort key
+		docstring ppart = subst(spart_latexed.first, from_ascii("\\"), docstring());
+		// Plain quotes need to be escaped, however (#10649), as this
+		// is the default escape character
+		ppart = subst(ppart, from_ascii("\""), from_ascii("\\\""));
+
+		// Now insert the sortkey, separated by '@'.
+		os << ppart;
+		os << '@';
+	}
+	// Insert the actual level text
+	os << latex;
+}
+
+
 void InsetIndex::docbook(XMLStream & xs, OutputParams const & runparams) const
 {
 	// Get the content of the inset as LaTeX, as some things may be encoded as ERT (like {}).
@@ -445,6 +547,8 @@ void InsetIndex::doDispatch(Cursor & cur, FuncRequest & cmd)
 		InsetIndex::string2params(to_utf8(cmd.argument()), params);
 		cur.recordUndoInset(this);
 		params_.index = params.index;
+		params_.range = params.range;
+		params_.pagefmt = params.pagefmt;
 		// what we really want here is a TOC update, but that means
 		// a full buffer update
 		cur.forceBufferUpdate();
@@ -485,6 +589,9 @@ bool InsetIndex::getStatus(Cursor & cur, FuncRequest const & cmd,
 		flag.setEnabled(realbuffer.params().use_indices);
 		return true;
 	}
+	
+	case LFUN_INDEXMACRO_INSERT:
+		return macrosPossible(cmd.getArg(0));
 
 	default:
 		return InsetCollapsible::getStatus(cur, cmd, flag);
@@ -492,6 +599,125 @@ bool InsetIndex::getStatus(Cursor & cur, FuncRequest const & cmd,
 }
 
 
+void InsetIndex::getSortkey(otexstream & os, OutputParams const & runparams) const
+{
+	Paragraph const & par = paragraphs().front();
+	InsetList::const_iterator it = par.insetList().begin();
+	for (; it != par.insetList().end(); ++it) {
+		Inset & inset = *it->inset;
+		if (inset.lyxCode() == INDEXMACRO_SORTKEY_CODE) {
+			InsetIndexMacro const & iim =
+				static_cast<InsetIndexMacro const &>(inset);
+			iim.getLatex(os, runparams);
+			return;
+		}
+	}
+}
+
+
+void InsetIndex::getSubentries(otexstream & os, OutputParams const & runparams) const
+{
+	Paragraph const & par = paragraphs().front();
+	InsetList::const_iterator it = par.insetList().begin();
+	int i = 0;
+	for (; it != par.insetList().end(); ++it) {
+		Inset & inset = *it->inset;
+		if (inset.lyxCode() == INDEXMACRO_CODE) {
+			InsetIndexMacro const & iim =
+				static_cast<InsetIndexMacro const &>(inset);
+			if (iim.params().type == InsetIndexMacroParams::Subindex) {
+				++i;
+				if (i > 2)
+					return;
+				os << "!";
+				iim.getLatex(os, runparams);
+			}
+		}
+	}
+}
+
+
+void InsetIndex::getSeeRefs(otexstream & os, OutputParams const & runparams) const
+{
+	Paragraph const & par = paragraphs().front();
+	InsetList::const_iterator it = par.insetList().begin();
+	for (; it != par.insetList().end(); ++it) {
+		Inset & inset = *it->inset;
+		if (inset.lyxCode() == INDEXMACRO_CODE) {
+			InsetIndexMacro const & iim =
+				static_cast<InsetIndexMacro const &>(inset);
+			if (iim.params().type == InsetIndexMacroParams::See
+			    || iim.params().type == InsetIndexMacroParams::Seealso) {
+				iim.getLatex(os, runparams);
+				return;
+			}
+		}
+	}
+}
+
+
+bool InsetIndex::hasSeeRef() const
+{
+	Paragraph const & par = paragraphs().front();
+	InsetList::const_iterator it = par.insetList().begin();
+	for (; it != par.insetList().end(); ++it) {
+		Inset & inset = *it->inset;
+		if (inset.lyxCode() == INDEXMACRO_CODE) {
+			InsetIndexMacro const & iim =
+				static_cast<InsetIndexMacro const &>(inset);
+			if (iim.params().type == InsetIndexMacroParams::See
+			    || iim.params().type == InsetIndexMacroParams::Seealso)
+				return true;
+		}
+	}
+	return false;
+}
+
+
+bool InsetIndex::hasSortKey() const
+{
+	Paragraph const & par = paragraphs().front();
+	InsetList::const_iterator it = par.insetList().begin();
+	for (; it != par.insetList().end(); ++it) {
+		Inset & inset = *it->inset;
+		if (inset.lyxCode() == INDEXMACRO_SORTKEY_CODE)
+			return true;
+	}
+	return false;
+}
+
+
+bool InsetIndex::macrosPossible(string const type) const
+{
+	if (type != "see" && type != "seealso"
+	    && type != "sortkey" && type != "subindex")
+		return false;
+
+	Paragraph const & par = paragraphs().front();
+	InsetList::const_iterator it = par.insetList().begin();
+	int subidxs = 0;
+	for (; it != par.insetList().end(); ++it) {
+		Inset & inset = *it->inset;
+		if (type == "sortkey" && inset.lyxCode() == INDEXMACRO_SORTKEY_CODE)
+			return false;
+		if (inset.lyxCode() == INDEXMACRO_CODE) {
+			InsetIndexMacro const & iim = static_cast<InsetIndexMacro const &>(inset);
+			if ((type == "see" || type == "seealso")
+			     && (iim.params().type == InsetIndexMacroParams::See
+				 || iim.params().type == InsetIndexMacroParams::Seealso))
+				return false;
+			if (type == "subindex"
+			     && iim.params().type == InsetIndexMacroParams::Subindex) {
+				++subidxs;
+				if (subidxs > 1)
+					return false;
+			}
+		}
+	}
+	return true;
+}
+
+
 ColorCode InsetIndex::labelColor() const
 {
 	if (params_.index.empty() || params_.index == from_ascii("idx"))
@@ -520,7 +746,21 @@ docstring InsetIndex::toolTip(BufferView const &, int, int) const
 		tip += ")";
 	}
 	tip += ": ";
-	return toolTipText(tip);
+	docstring res = toolTipText(tip);
+	if (!insetindexpagerangetranslator_loc().find(params_.range).empty())
+		res += "\n" + insetindexpagerangetranslator_loc().find(params_.range);
+	if (!params_.pagefmt.empty() && params_.pagefmt != "default") {
+		res += "\n" + _("Pagination format:") + " ";
+		if (params_.pagefmt == "textbf")
+			res += _("bold");
+		else if (params_.pagefmt == "textit")
+			res += _("italic");
+		else if (params_.pagefmt == "emph")
+			res += _("emphasized");
+		else
+			res += from_utf8(params_.pagefmt);
+	}
+	return res;
 }
 
 
@@ -541,9 +781,14 @@ docstring const InsetIndex::buttonLabel(BufferView const & bv) const
 		label += ")";
 	}
 
+	docstring res;
 	if (!il.contentaslabel() || geometry(bv) != ButtonOnly)
-		return label;
-	return getNewLabel(label);
+		res = label;
+	else
+		res = getNewLabel(label);
+	if (!insetindexpagerangetranslator_latex().find(params_.range).empty())
+		res += " " + from_ascii(insetindexpagerangetranslator_latex().find(params_.range));
+	return res;
 }
 
 
@@ -621,12 +866,33 @@ string InsetIndex::contextMenuName() const
 }
 
 
+string InsetIndex::contextMenu(BufferView const & bv, int x, int y) const
+{
+	// We override the implementation of InsetCollapsible,
+	// because we have eytra entries.
+	string owncm = "context-edit-index;";
+	return owncm + InsetCollapsible::contextMenu(bv, x, y);
+}
+
+
 bool InsetIndex::hasSettings() const
 {
-	return buffer().masterBuffer()->params().use_indices;
+	return true;
 }
 
 
+bool InsetIndex::insetAllowed(InsetCode code) const
+{
+	switch (code) {
+	case INDEXMACRO_CODE:
+	case INDEXMACRO_SORTKEY_CODE:
+		return true;
+	case INDEX_CODE:
+		return false;
+	default:
+		return InsetCollapsible::insetAllowed(code);
+	}
+}
 
 
 /////////////////////////////////////////////////////////////////////
@@ -644,6 +910,12 @@ void InsetIndexParams::write(ostream & os) const
 	else
 		os << "idx";
 	os << '\n';
+	os << "range "
+	   << insetindexpagerangetranslator().find(range)
+	   << '\n';
+	os << "pageformat "
+	   << pagefmt
+	   << '\n';
 }
 
 
@@ -653,6 +925,16 @@ void InsetIndexParams::read(Lexer & lex)
 		index = lex.getDocString();
 	else
 		index = from_ascii("idx");
+	if (lex.checkFor("range")) {
+		string st = lex.getString();
+		if (lex.eatLine()) {
+			st = lex.getString();
+			range = insetindexpagerangetranslator().find(lex.getString());
+		}
+	}
+	if (lex.checkFor("pageformat") && lex.eatLine()) {
+		pagefmt = lex.getString();
+	}
 }
 
 
diff --git a/src/insets/InsetIndex.h b/src/insets/InsetIndex.h
index b064cc7..97a82ba 100644
--- a/src/insets/InsetIndex.h
+++ b/src/insets/InsetIndex.h
@@ -21,15 +21,24 @@ namespace lyx {
 
 class InsetIndexParams {
 public:
+	enum PageRange {
+		None,
+		Start,
+		End
+	};
 	///
 	explicit InsetIndexParams(docstring const & b = docstring())
-		: index(b) {}
+		: index(b), range(None), pagefmt("default") {}
 	///
 	void write(std::ostream & os) const;
 	///
 	void read(Lexer & lex);
 	///
 	docstring index;
+	///
+	PageRange range;
+	///
+	std::string pagefmt;
 };
 
 
@@ -63,6 +72,9 @@ private:
 	///
 	void latex(otexstream &, OutputParams const &) const override;
 	///
+	void processLatexSorting(otexstream &, OutputParams const &,
+				 docstring const, docstring const) const;
+	///
 	bool showInsetDialog(BufferView *) const override;
 	///
 	bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const override;
@@ -80,11 +92,27 @@ private:
 	/// Updates needed features for this inset.
 	void validate(LaTeXFeatures & features) const override;
 	///
+	void getSortkey(otexstream &, OutputParams const &) const;
+	///
+	void getSubentries(otexstream &, OutputParams const &) const;
+	///
+	void getSeeRefs(otexstream &, OutputParams const &) const;
+	///
+	bool hasSeeRef() const;
+	///
+	bool hasSortKey() const;
+	///
+	bool macrosPossible(std::string const type) const;
+	///
 	std::string contextMenuName() const override;
 	///
+	std::string contextMenu(BufferView const &, int, int) const override;
+	///
 	Inset * clone() const override { return new InsetIndex(*this); }
 	/// Is the content of this inset part of the immediate text sequence?
 	bool isPartOfTextSequence() const override { return false; }
+	///
+	bool insetAllowed(InsetCode code) const override;
 
 	///
 	friend class InsetIndexParams;
diff --git a/src/insets/InsetIndexMacro.cpp b/src/insets/InsetIndexMacro.cpp
new file mode 100644
index 0000000..2bfbc91
--- /dev/null
+++ b/src/insets/InsetIndexMacro.cpp
@@ -0,0 +1,384 @@
+/**
+ * \file InsetIndexMacro.cpp
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Jürgen Spitzmüller
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#include <config.h>
+
+#include "InsetIndexMacro.h"
+
+#include "Buffer.h"
+#include "BufferParams.h"
+#include "Cursor.h"
+#include "Dimension.h"
+#include "Encoding.h"
+#include "ErrorList.h"
+#include "FontInfo.h"
+#include "FuncRequest.h"
+#include "FuncStatus.h"
+#include "InsetLayout.h"
+#include "InsetList.h"
+#include "LaTeX.h"
+#include "LaTeXFeatures.h"
+#include "Lexer.h"
+#include "MetricsInfo.h"
+#include "xml.h"
+#include "texstream.h"
+
+#include "frontends/alert.h"
+
+#include "support/debug.h"
+#include "support/docstream.h"
+#include "support/gettext.h"
+#include "support/lstrings.h"
+#include "support/Translator.h"
+
+using namespace std;
+using namespace lyx::support;
+
+namespace lyx {
+
+namespace {
+
+typedef Translator<string, InsetIndexMacroParams::Type> InsetIndexMacroTranslator;
+typedef Translator<docstring, InsetIndexMacroParams::Type> InsetIndexMacroTranslatorLoc;
+
+InsetIndexMacroTranslator const init_insetindexmacrotranslator()
+{
+	InsetIndexMacroTranslator translator("see", InsetIndexMacroParams::See);
+	translator.addPair("seealso", InsetIndexMacroParams::Seealso);
+	translator.addPair("subindex", InsetIndexMacroParams::Subindex);
+	translator.addPair("sortkey", InsetIndexMacroParams::Sortkey);
+	return translator;
+}
+
+
+InsetIndexMacroTranslatorLoc const init_insetindexmacrotranslator_loc()
+{
+	InsetIndexMacroTranslatorLoc translator(_("See"), InsetIndexMacroParams::See);
+	translator.addPair(_("See also"), InsetIndexMacroParams::Seealso);
+	translator.addPair(_("Subindex"), InsetIndexMacroParams::Subindex);
+	translator.addPair(_("Sort as"), InsetIndexMacroParams::Sortkey);
+	return translator;
+}
+
+
+InsetIndexMacroTranslator const & insetindexmacrotranslator()
+{
+	static InsetIndexMacroTranslator const macrotranslator =
+			init_insetindexmacrotranslator();
+	return macrotranslator;
+}
+
+
+InsetIndexMacroTranslatorLoc const & insetindexmacrotranslator_loc()
+{
+	static InsetIndexMacroTranslatorLoc const translator =
+			init_insetindexmacrotranslator_loc();
+	return translator;
+}
+
+} // namespace
+
+
+InsetIndexMacroParams::InsetIndexMacroParams()
+	: type(See)
+{}
+
+
+void InsetIndexMacroParams::write(ostream & os) const
+{
+	string const label = insetindexmacrotranslator().find(type);
+	os << "IndexMacro " << label << "\n";
+}
+
+
+void InsetIndexMacroParams::read(Lexer & lex)
+{
+	string label;
+	lex >> label;
+	if (lex)
+		type = insetindexmacrotranslator().find(label);
+}
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// InsetIndexMacro
+//
+/////////////////////////////////////////////////////////////////////
+
+InsetIndexMacro::InsetIndexMacro(Buffer * buf, string const & label)
+	: InsetCollapsible(buf)
+{
+	setDrawFrame(true);
+	setFrameColor(Color_insetframe);
+	params_.type = insetindexmacrotranslator().find(label);
+}
+
+
+InsetIndexMacro::~InsetIndexMacro()
+{}
+
+
+docstring InsetIndexMacro::layoutName() const
+{
+	return from_ascii("IndexMacro:" + insetindexmacrotranslator().find(params_.type));
+}
+
+InsetCode InsetIndexMacro::lyxCode() const
+{
+	return params_.type == InsetIndexMacroParams::Sortkey
+			? INDEXMACRO_SORTKEY_CODE
+			: INDEXMACRO_CODE;
+}
+
+
+void InsetIndexMacro::write(ostream & os) const
+{
+	params_.write(os);
+	InsetCollapsible::write(os);
+}
+
+
+void InsetIndexMacro::read(Lexer & lex)
+{
+	params_.read(lex);
+	InsetCollapsible::read(lex);
+}
+
+
+void InsetIndexMacro::getLatex(otexstream & os, OutputParams const & runparams) const
+{
+	if (params_.type == InsetIndexMacroParams::Subindex) {
+		if (hasSortKey()) {
+			getSortkey(os, runparams);
+			os << "@";
+		} else {
+			odocstringstream ourlatex;
+			otexstream ots(ourlatex);
+			InsetText::latex(ots, runparams);
+			odocstringstream ourplain;
+			InsetText::plaintext(ourplain, runparams);
+			// These are the LaTeX and plaintext representations
+			docstring latexstr = ourlatex.str();
+			docstring plainstr = ourplain.str();
+			processLatexSorting(os, runparams, latexstr, plainstr);
+		}
+		return;
+	}
+
+	if (params_.type == InsetIndexMacroParams::See)
+		os << "see{";
+	else if (params_.type == InsetIndexMacroParams::Seealso)
+		os << "seealso{";
+
+	InsetCollapsible::latex(os, runparams);
+
+	if (params_.type == InsetIndexMacroParams::See
+	     || params_.type == InsetIndexMacroParams::Seealso)
+		os << "}";
+}
+
+
+int InsetIndexMacro::getPlaintext(odocstringstream & os,
+			    OutputParams const & runparams, size_t max_length) const
+{
+	return InsetText::plaintext(os, runparams, max_length);
+}
+
+
+void InsetIndexMacro::getDocbook(XMLStream & xs, OutputParams const & runparams) const
+{
+	InsetText::docbook(xs, runparams);
+}
+
+
+docstring InsetIndexMacro::getXhtml(XMLStream & xs, OutputParams const & runparams) const
+{
+	return InsetText::xhtml(xs, runparams);
+}
+
+
+void InsetIndexMacro::doDispatch(Cursor & cur, FuncRequest & cmd)
+{
+	switch (cmd.action()) {
+
+	case LFUN_INSET_MODIFY: {
+		if (cmd.getArg(0) == "changetype") {
+			cur.recordUndoInset(this);
+			params_.type = insetindexmacrotranslator().find(cmd.getArg(1));
+			break;
+		}
+		InsetCollapsible::doDispatch(cur, cmd);
+		break;
+	}
+
+	default:
+		InsetCollapsible::doDispatch(cur, cmd);
+		break;
+	}
+}
+
+
+bool InsetIndexMacro::getStatus(Cursor & cur, FuncRequest const & cmd,
+				FuncStatus & flag) const
+{
+	switch (cmd.action()) {
+
+	case LFUN_INSET_MODIFY:
+		if (cmd.getArg(0) == "changetype") {
+			docstring const newtype = from_utf8(cmd.getArg(1));
+			bool const enabled = (params_.type == InsetIndexMacroParams::See
+					      || params_.type == InsetIndexMacroParams::Seealso)
+					    && (newtype == "see" || newtype == "seealso");
+			flag.setEnabled(enabled);
+			flag.setOnOff(
+				newtype == from_ascii(insetindexmacrotranslator().find(params_.type)));
+			return true;
+		}
+		return InsetCollapsible::getStatus(cur, cmd, flag);
+
+	default:
+		return InsetCollapsible::getStatus(cur, cmd, flag);
+	}
+}
+
+
+void InsetIndexMacro::processLatexSorting(otexstream & os, OutputParams const & runparams,
+				docstring const latex, docstring const plain) const
+{
+	if (contains(latex, '\\') && !contains(latex, '@')) {
+		// Plaintext might return nothing (e.g. for ERTs).
+		// In that case, we use LaTeX.
+		docstring const spart = (plain.empty()) ? latex : plain;
+		// Now we need to validate that all characters in
+		// the sorting part are representable in the current
+		// encoding. If not try the LaTeX macro which might
+		// or might not be a good choice, and issue a warning.
+		pair<docstring, docstring> spart_latexed =
+				runparams.encoding->latexString(spart, runparams.dryrun);
+		if (!spart_latexed.second.empty())
+			LYXERR0("Uncodable character in index entry. Sorting might be wrong!");
+		if (spart != spart_latexed.first && !runparams.dryrun) {
+			TeXErrors terr;
+			ErrorList & errorList = buffer().errorList("Export");
+			docstring const s = bformat(_("LyX's automatic index sorting algorithm faced "
+						      "problems with the sub-entry '%1$s'.\n"
+						      "Please specify the sorting of this entry manually, as "
+						      "explained in the User Guide."), spart);
+			Paragraph const & par = buffer().paragraphs().front();
+			errorList.push_back(ErrorItem(_("Index sorting failed"), s,
+						      {par.id(), 0}, {par.id(), -1}));
+			buffer().bufferErrors(terr, errorList);
+		}
+		// Remove remaining \'s from the sort key
+		docstring ppart = subst(spart_latexed.first, from_ascii("\\"), docstring());
+		// Plain quotes need to be escaped, however (#10649), as this
+		// is the default escape character
+		ppart = subst(ppart, from_ascii("\""), from_ascii("\\\""));
+
+		// Now insert the sortkey, separated by '@'.
+		os << ppart;
+		os << '@';
+	}
+	// Insert the actual level text
+	os << latex;
+}
+
+
+docstring InsetIndexMacro::toolTip(BufferView const &, int, int) const
+{
+	return insetindexmacrotranslator_loc().find(params_.type);
+}
+
+
+string InsetIndexMacro::params2string(InsetIndexMacroParams const & params)
+{
+	ostringstream data;
+	data << "IndexMacro" << ' ';
+	params.write(data);
+	return data.str();
+}
+
+
+void InsetIndexMacro::string2params(string const & in, InsetIndexMacroParams & params)
+{
+	params = InsetIndexMacroParams();
+
+	if (in.empty())
+		return;
+
+	istringstream data(in);
+	Lexer lex;
+	lex.setStream(data);
+	lex.setContext("InsetIndexMacro::string2params");
+	lex >> "IndexMacro" >> "see";
+
+	params.read(lex);
+}
+
+
+bool InsetIndexMacro::hasSortKey() const
+{
+	Paragraph const & par = paragraphs().front();
+	InsetList::const_iterator it = par.insetList().begin();
+	for (; it != par.insetList().end(); ++it) {
+		Inset & inset = *it->inset;
+		if (inset.lyxCode() == INDEXMACRO_SORTKEY_CODE)
+			return true;
+	}
+	return false;
+}
+
+
+void InsetIndexMacro::getSortkey(otexstream & os, OutputParams const & runparams) const
+{
+	Paragraph const & par = paragraphs().front();
+	InsetList::const_iterator it = par.insetList().begin();
+	for (; it != par.insetList().end(); ++it) {
+		Inset & inset = *it->inset;
+		if (inset.lyxCode() == INDEXMACRO_SORTKEY_CODE) {
+			InsetIndexMacro const & iim =
+				static_cast<InsetIndexMacro const &>(inset);
+			iim.getLatex(os, runparams);
+			return;
+		}
+	}
+}
+
+
+string InsetIndexMacro::contextMenuName() const
+{
+	return "context-indexmacro";
+}
+
+
+string InsetIndexMacro::contextMenu(BufferView const & bv, int x, int y) const
+{
+	// We override the implementation of InsetCollapsible,
+	// because we have eytra entries.
+	string owncm = "context-edit-index;";
+	return owncm + InsetCollapsible::contextMenu(bv, x, y);
+}
+
+
+bool InsetIndexMacro::insetAllowed(InsetCode code) const
+{
+	switch (code) {
+	case INDEX_CODE:
+		return false;
+	case INDEXMACRO_SORTKEY_CODE:
+		return (params_.type == InsetIndexMacroParams::Subindex
+			&& !hasSortKey());
+	default:
+		return InsetCollapsible::insetAllowed(code);
+	}
+}
+
+} // namespace lyx
diff --git a/src/insets/InsetIndexMacro.h b/src/insets/InsetIndexMacro.h
new file mode 100644
index 0000000..4122621
--- /dev/null
+++ b/src/insets/InsetIndexMacro.h
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+/**
+ * \file InsetIndexMacro.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Jürgen Spitzmüller
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef INSET_INSETMACRO_H
+#define INSET_INSETMACRO_H
+
+
+#include "Inset.h"
+#include "InsetCollapsible.h"
+
+
+namespace lyx {
+
+class LaTeXFeatures;
+
+class InsetIndexMacroParams
+{
+public:
+	enum Type {
+		See,
+		Seealso,
+		Subindex,
+		Sortkey
+	};
+	///
+	InsetIndexMacroParams();
+	///
+	void write(std::ostream & os) const;
+	///
+	void read(Lexer & lex);
+	///
+	Type type;
+};
+
+/////////////////////////////////////////////////////////////////////////
+//
+// InsetIndexMacro
+//
+/////////////////////////////////////////////////////////////////////////
+
+/// Used to insert index references
+class InsetIndexMacro : public InsetCollapsible
+{
+public:
+	///
+	InsetIndexMacro(Buffer *, std::string const &);
+	///
+	~InsetIndexMacro();
+	///
+	static std::string params2string(InsetIndexMacroParams const &);
+	///
+	static void string2params(std::string const &, InsetIndexMacroParams &);
+	///
+	InsetIndexMacroParams const & params() const { return params_; }
+	///
+	void getLatex(otexstream &, OutputParams const &) const;
+	///
+	int getPlaintext(odocstringstream &, OutputParams const &, size_t) const;
+	///
+	void getDocbook(XMLStream &, OutputParams const &) const;
+private:
+	///
+	InsetCode lyxCode() const override;
+	///
+	docstring layoutName() const override;
+	///
+	void write(std::ostream &) const override;
+	///
+	void read(Lexer & lex) override;
+	///
+	bool neverIndent() const override { return true; }
+	/// We do not output anything directly to the stream
+	void latex(otexstream &, OutputParams const &) const override {};
+	/// We do not output anything directly to the stream
+	int plaintext(odocstringstream &, OutputParams const &, size_t) const override { return 0; };
+	/// We do not output anything directly to the stream
+	void docbook(XMLStream &, OutputParams const &) const override {};
+	/// We do not output anything directly to the stream
+	docstring xhtml(XMLStream &, OutputParams const &) const override { return docstring(); };
+	///
+	docstring getXhtml(XMLStream &, OutputParams const &) const;
+	///
+	bool allowSpellCheck() const override { return false; }
+	///
+	bool insetAllowed(InsetCode code) const override;
+	///
+	bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const override;
+	///
+	void doDispatch(Cursor & cur, FuncRequest & cmd) override;
+	///
+	docstring toolTip(BufferView const & bv, int x, int y) const override;
+	///
+	void processLatexSorting(otexstream &, OutputParams const &,
+			    docstring const, docstring const) const;
+	///
+	bool hasSortKey() const;
+	///
+	void getSortkey(otexstream &, OutputParams const &) const;
+	///
+	std::string contextMenuName() const override;
+	///
+	std::string contextMenu(BufferView const &, int, int) const override;
+	///
+	Inset * clone() const override { return new InsetIndexMacro(*this); }
+	/// used by the constructors
+	void init();
+	///
+	friend class InsetIndexMacroParams;
+
+	///
+	InsetIndexMacroParams params_;
+};
+
+
+} // namespace lyx
+
+#endif
diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp
index 1767f2c..c67e934 100644
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -1040,6 +1040,10 @@ bool InsetText::insetAllowed(InsetCode code) const
 	case QUOTE_CODE:
 	case COUNTER_CODE:
 		return true;
+	// These are only allowed in index insets
+	case INDEXMACRO_CODE:
+	case INDEXMACRO_SORTKEY_CODE:
+		return false;
 	default:
 		return !isPassThru();
 	}
diff --git a/src/tex2lyx/Parser.cpp b/src/tex2lyx/Parser.cpp
index e4eb9b4..2cfac87 100644
--- a/src/tex2lyx/Parser.cpp
+++ b/src/tex2lyx/Parser.cpp
@@ -486,7 +486,40 @@ bool Parser::hasOpt(string const & l)
 }
 
 
-Parser::Arg Parser::getFullArg(char left, char right, bool allow_escaping)
+bool Parser::hasIdxMacros(string const & c, string const & e)
+{
+	// Check for index entry separator (! or @),
+	// consider escaping via "
+	// \p e marks a terminating delimiter¸
+
+	// remember current position
+	unsigned int oldpos = pos_;
+	// skip spaces and comments
+	bool retval = false;
+	while (good()) {
+		get_token();
+		if (isParagraph()) {
+			putback();
+			break;
+		}
+		if (curr_token().cat() == catEnd)
+			break;
+		if (!e.empty() && curr_token().asInput() == e
+		    && prev_token().asInput() != "\"")
+			break;
+		if (curr_token().asInput() == c
+		    && prev_token().asInput() != "\"") {
+			retval = true;
+			break;
+		}
+		continue;
+	}
+	pos_ = oldpos;
+	return retval;
+}
+
+
+Parser::Arg Parser::getFullArg(char left, char right, bool allow_escaping, char e)
 {
 	skip_spaces(true);
 
@@ -495,25 +528,28 @@ Parser::Arg Parser::getFullArg(char left, char right, bool allow_escaping)
 	if (! good())
 		return make_pair(false, string());
 
-	int group_level = 0;
+	int group_level = (left == '{') ? 1 : 0;
 	string result;
 	Token t = get_token();
 
-	if (t.cat() == catComment || t.cat() == catEscape ||
-	    t.character() != left) {
+	if (left != char()
+	    && (t.cat() == catComment || t.cat() == catEscape
+		|| t.character() != left)) {
 		putback();
 		return make_pair(false, string());
 	} else {
 		while (good()) {
 			t = get_token();
 			// honor grouping
-			if (left != '{' && t.cat() == catBegin) {
+			if (t.cat() == catBegin) {
 				++group_level;
-				continue;
+				if (left != '{')
+					continue;
 			}
-			if (left != '{' && t.cat() == catEnd) {
+			if (group_level > 0 && t.cat() == catEnd) {
 				--group_level;
-				continue;
+				if (left != '{')
+					continue;
 			}
 			// Ignore comments
 			if (t.cat() == catComment) {
@@ -525,6 +561,10 @@ Parser::Arg Parser::getFullArg(char left, char right, bool allow_escaping)
 				if (t.cat() != catEscape && t.character() == right
 				    && group_level == 0)
 					break;
+			} else if (e != char()) {
+				if (prev_token().character() != e && t.character() == right
+				    && group_level == 0)
+					break;
 			} else {
 				if (t.character() == right) {
 					if (t.cat() == catEscape)
@@ -540,9 +580,9 @@ Parser::Arg Parser::getFullArg(char left, char right, bool allow_escaping)
 }
 
 
-string Parser::getArg(char left, char right, bool allow_escaping)
+string Parser::getArg(char left, char right, bool allow_escaping, char e)
 {
-	return getFullArg(left, right, allow_escaping).second;
+	return getFullArg(left, right, allow_escaping, e).second;
 }
 
 
diff --git a/src/tex2lyx/Parser.h b/src/tex2lyx/Parser.h
index a99b40f..ec2fc3c 100644
--- a/src/tex2lyx/Parser.h
+++ b/src/tex2lyx/Parser.h
@@ -215,17 +215,22 @@ public:
 
 	/// Does an optional argument follow after the current token?
 	bool hasOpt(std::string const & l = "[");
+	/// Does this index entry has levels?
+	bool hasIdxMacros(std::string const & c,
+			  std::string const & e = std::string());
 	///
 	typedef std::pair<bool, std::string> Arg;
 	/*!
 	 * Get an argument enclosed by \p left and \p right.
 	 * If \p allow_escaping is true, a right delimiter escaped by a
 	 * backslash does not count as delimiter, but is included in the
-	 * argument.
+	 * argument. The \p e allows for a different escape character
+	 * (used in index insets)
 	 * \returns whether an argument was found in \p Arg.first and the
 	 * argument in \p Arg.second. \see getArg().
 	 */
-	Arg getFullArg(char left, char right, bool allow_escaping = true);
+	Arg getFullArg(char left, char right, bool allow_escaping = true,
+		       char e = char());
 	/*!
 	 * Get an argument enclosed by \p left and \p right.
 	 * If \p allow_escaping is true, a right delimiter escaped by a
@@ -236,7 +241,8 @@ public:
 	 * getFullArg() if you need to know whether there was an empty
 	 * argument or no argument at all.
 	 */
-	std::string getArg(char left, char right, bool allow_escaping = true);
+	std::string getArg(char left, char right, bool allow_escaping = true,
+			   char e = char());
 	/*!
 	 * Like getOpt(), but distinguishes between a missing argument ""
 	 * and an empty argument "[]".
diff --git a/src/tex2lyx/tex2lyx.h b/src/tex2lyx/tex2lyx.h
index f720cf1..4152911 100644
--- a/src/tex2lyx/tex2lyx.h
+++ b/src/tex2lyx/tex2lyx.h
@@ -48,7 +48,8 @@ extern std::string rgbcolor2code(std::string const & name);
 std::string translate_len(std::string const &);
 
 void parse_text(Parser & p, std::ostream & os, unsigned flags, bool outer,
-		Context & context, std::string const & rdelim = "");
+		Context & context, std::string const & rdelim = "",
+		std::string const & rdelimesc = "");
 void check_comment_bib(std::ostream & os, Context & context);
 
 void fix_child_filename(std::string & name);
@@ -68,7 +69,8 @@ std::string find_file(std::string const & name, std::string const & path,
 void parse_text_in_inset(Parser & p, std::ostream & os, unsigned flags,
                          bool outer, Context & context,
                          InsetLayout const * layout = nullptr,
-                         std::string const & rdelim = "");
+                         std::string const & rdelim = "",
+			 std::string const & rdelimesc = "");
 
 /// Guess document language from \p p if CJK is used.
 /// \p lang is used for all non-CJK contents.
diff --git a/src/tex2lyx/text.cpp b/src/tex2lyx/text.cpp
index 545515f..b661e6f 100644
--- a/src/tex2lyx/text.cpp
+++ b/src/tex2lyx/text.cpp
@@ -55,7 +55,7 @@ void output_arguments(ostream &, Parser &, bool, bool, const string &, Context &
 
 void parse_text_in_inset(Parser & p, ostream & os, unsigned flags, bool outer,
 		Context & context, InsetLayout const * layout,
-		string const & rdelim)
+		string const & rdelim, string const & rdelimesc)
 {
 	bool const forcePlainLayout =
 		layout ? layout->forcePlainLayout() : false;
@@ -78,7 +78,7 @@ void parse_text_in_inset(Parser & p, ostream & os, unsigned flags, bool outer,
 		parse_text(p, oss, FLAG_RDELIM, outer, dummy,
 			   string(1, context.latexparam.back()));
 	}
-	parse_text(p, os, flags, outer, newcontext, rdelim);
+	parse_text(p, os, flags, outer, newcontext, rdelim, rdelimesc);
 	if (layout)
 		output_arguments(os, p, outer, false, "post", newcontext,
 		                 layout->postcommandargs());
@@ -91,7 +91,8 @@ namespace {
 
 void parse_text_in_inset(Parser & p, ostream & os, unsigned flags, bool outer,
 		Context const & context, string const & name,
-		string const & rdelim = string())
+		string const & rdelim = string(),
+		string const & rdelimesc = string())
 {
 	InsetLayout const * layout = 0;
 	DocumentClass::InsetLayouts::const_iterator it =
@@ -99,17 +100,18 @@ void parse_text_in_inset(Parser & p, ostream & os, unsigned flags, bool outer,
 	if (it != context.textclass.insetLayouts().end())
 		layout = &(it->second);
 	Context newcontext = context;
-	parse_text_in_inset(p, os, flags, outer, newcontext, layout, rdelim);
+	parse_text_in_inset(p, os, flags, outer, newcontext, layout, rdelim, rdelimesc);
 }
 
 /// parses a paragraph snippet, useful for example for \\emph{...}
 void parse_text_snippet(Parser & p, ostream & os, unsigned flags, bool outer,
-		Context & context)
+			Context & context, string const & rdelim = string(),
+			string const & rdelimesc = string())
 {
 	Context newcontext(context);
 	// Don't inherit the paragraph-level extra stuff
 	newcontext.par_extra_stuff.clear();
-	parse_text(p, os, flags, outer, newcontext);
+	parse_text(p, os, flags, outer, newcontext, rdelim, rdelimesc);
 	// Make sure that we don't create invalid .lyx files
 	context.need_layout = newcontext.need_layout;
 	context.need_end_layout = newcontext.need_end_layout;
@@ -1506,6 +1508,218 @@ void parse_outer_box(Parser & p, ostream & os, unsigned flags, bool outer,
 }
 
 
+void parse_index_entry(Parser & p, ostream & os, Context & context, string const & kind)
+{
+	// write inset header
+	begin_inset(os, "Index ");
+	os << kind;
+
+	// Parse for post argument (|...)
+	p.pushPosition();
+	string const marg = p.getArg('{', '}');
+	p.popPosition();
+	char lc = char();
+	bool inpost = false;
+	bool startrange = false;
+	bool endrange = false;
+	string post;
+	for (string::const_iterator it = marg.begin(), et = marg.end(); it != et; ++it) {
+		char c = *it;
+		if (inpost) {
+			if (post.empty() && c == '(')
+				startrange = true;
+			else if (post.empty() && c == ')')
+				endrange = true;
+			else
+				post += c;
+		}
+		if (!inpost && (c == '|' && lc != '"'))
+			inpost = true;
+		lc = c;
+	}
+	if (startrange)
+		os << "\nrange start";
+	else if (endrange)
+		os << "\nrange end";
+	else
+		os << "\nrange none";
+	bool const see = prefixIs(post, "see{");
+	bool const seealso = prefixIs(post, "seealso{");
+	if (!post.empty() && !see && !seealso)
+		os << "\npageformat " << post;
+	else
+		os << "\npageformat default";
+	os << "\nstatus collapsed\n";
+
+	bool main = true;
+	// save position
+	p.pushPosition();
+	// Check for levels
+	if (p.hasIdxMacros("!")) {
+		// Index entry with levels
+		while (p.hasIdxMacros("!")) {
+			if (main) {
+				// swallow brace
+				p.get_token();
+				os << "\\begin_layout Plain Layout\n";
+			} else {
+				begin_inset(os, "IndexMacro subindex");
+				os << "\nstatus collapsed\n";
+			}
+			// Check for (level-specific) sortkey
+			if (p.hasIdxMacros("@", "!")) {
+				if (!main)
+					os << "\\begin_layout Plain Layout\n";
+				begin_inset(os, "IndexMacro sortkey");
+				os << "\nstatus collapsed\n";
+				parse_text_in_inset(p, os, FLAG_RDELIM, false, context, "IndexMacro sortkey", "@", "\"");
+				end_inset(os);
+			}
+			parse_text_snippet(p, os, FLAG_RDELIM, false, context, "!", "\"");
+			if (!main) {
+				os << "\n\\end_layout\n";
+				end_inset(os);
+			}
+			main = false;
+		}
+		if (!main) {
+			begin_inset(os, "IndexMacro subindex");
+			os << "\nstatus collapsed\n";
+		}
+		// Final level
+		// Check for (level-specific) sortkey
+		if (p.hasIdxMacros("@", "!")) {
+			if (main) {
+				// swallow brace
+				p.get_token();
+			}
+			os << "\\begin_layout Plain Layout\n";
+			begin_inset(os, "IndexMacro sortkey");
+			os << "\nstatus collapsed\n";
+			parse_text_in_inset(p, os, FLAG_RDELIM, false, context, "IndexMacro sortkey", "@", "\"");
+			end_inset(os);
+			if (post.empty() && !startrange && !endrange) {
+				parse_text_snippet(p, os, FLAG_BRACE_LAST, false, context);
+				p.dropPosition();
+			} else {
+				// Handle post-argument
+				parse_text_snippet(p, os, FLAG_RDELIM, false, context, "|", "\"");
+				if (see || seealso) {
+					while (p.next_token().character() != '{' && p.good())
+						p.get_token();
+					// this ends the subinset, as the see[also] insets
+					// must come at main index inset
+					os << "\n\\end_layout\n";
+					end_inset(os);
+					if (see)
+						begin_inset(os, "IndexMacro see");
+					else
+						begin_inset(os, "IndexMacro seealso");
+					os << "\nstatus collapsed\n";
+					os << "\\begin_layout Plain Layout\n";
+					parse_text_snippet(p, os, FLAG_ITEM, false, context);
+				}
+				p.popPosition();
+				// swallow argument
+				p.getArg('{', '}');
+			}
+			os << "\n\\end_layout\n";
+		} else {
+			if (post.empty() && !startrange && !endrange) {
+				parse_text_in_inset(p, os, FLAG_BRACE_LAST, false, context, "IndexMacro subindex");
+				p.dropPosition();
+			} else {
+				// Handle post-argument
+				if (see || seealso) {
+					os << "\\begin_layout Plain Layout\n";
+					parse_text_snippet(p, os, FLAG_RDELIM, false, context, "|", "\"");
+					while (p.next_token().character() != '{' && p.good())
+						p.get_token();
+					// this ends the subinset, as the see[also] insets
+					// must come at main index inset
+					os << "\n\\end_layout\n";
+					end_inset(os);
+					if (see)
+						begin_inset(os, "IndexMacro see");
+					else
+						begin_inset(os, "IndexMacro seealso");
+					os << "\nstatus collapsed\n";
+					parse_text_in_inset(p, os, FLAG_ITEM, false, context, "IndexMacro see");
+				} else
+					parse_text_in_inset(p, os, FLAG_RDELIM, false, context, "Index", "|", "\"");
+				p.popPosition();
+				// swallow argument
+				p.getArg('{', '}');
+			}
+		}
+		if (!main)
+			end_inset(os);
+		os << "\n\\end_layout\n";
+	} else {
+		// Index without any levels
+		// Check for sortkey
+		if (p.hasIdxMacros("@", "!")) {
+			// swallow brace
+			p.get_token();
+			os << "\\begin_layout Plain Layout\n";
+			begin_inset(os, "IndexMacro sortkey");
+			os << "\nstatus collapsed\n";
+			parse_text_in_inset(p, os, FLAG_RDELIM, false, context, "IndexMacro sortkey", "@", "\"");
+			end_inset(os);
+			if (post.empty() && !startrange && !endrange) {
+				parse_text_snippet(p, os, FLAG_BRACE_LAST, false, context);
+				p.dropPosition();
+			} else {
+				parse_text_snippet(p, os, FLAG_RDELIM, false, context, "|", "\"");
+				if (see || seealso) {
+					while (p.next_token().character() != '{' && p.good())
+						p.get_token();
+					if (see)
+						begin_inset(os, "IndexMacro see");
+					else
+						begin_inset(os, "IndexMacro seealso");
+					os << "\nstatus collapsed\n";
+					parse_text_in_inset(p, os, FLAG_ITEM, false, context, "IndexMacro see");
+					end_inset(os);
+				}
+				p.popPosition();
+				// swallow argument
+				p.getArg('{', '}');
+			}
+			os << "\n\\end_layout\n";
+		} else {
+			if (post.empty() && !startrange && !endrange) {
+				parse_text_in_inset(p, os, FLAG_ITEM, false, context, "Index");
+				p.dropPosition();
+			} else {
+				// Handle post-argument
+				// swallow brace
+				p.get_token();
+				if (see || seealso) {
+					os << "\\begin_layout Plain Layout\n";
+					parse_text_snippet(p, os, FLAG_RDELIM, false, context, "|", "\"");
+					while (p.next_token().character() != '{' && p.good())
+						p.get_token();
+					if (see)
+						begin_inset(os, "IndexMacro see");
+					else
+						begin_inset(os, "IndexMacro seealso");
+					os << "\nstatus collapsed\n";
+					parse_text_in_inset(p, os, FLAG_ITEM, false, context, "IndexMacro see");
+					end_inset(os);
+					os << "\n\\end_layout\n";
+				} else
+					parse_text_in_inset(p, os, FLAG_RDELIM, false, context, "Index", "|", "\"");
+				p.popPosition();
+				// swallow argument
+				p.getArg('{', '}');
+			}
+		}
+	}
+	end_inset(os);
+}
+
+
 void parse_listings(Parser & p, ostream & os, Context & parent_context,
 		    bool in_line, bool use_minted)
 {
@@ -2901,7 +3115,7 @@ void fix_child_filename(string & name)
 
 
 void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
-		Context & context, string const & rdelim)
+		Context & context, string const & rdelim, string const & rdelimesc)
 {
 	Layout const * newlayout = 0;
 	InsetLayout const * newinsetlayout = 0;
@@ -2990,7 +3204,8 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
 		if (rdelim.size() > 1)
 			tok += p.next_token().asInput();
 		if (t.cat() != catEscape && !rdelim.empty()
-		    && tok == rdelim && (flags & FLAG_RDELIM)) {
+		    && tok == rdelim && (flags & FLAG_RDELIM)
+		    && (rdelimesc.empty() || p.prev_token().asInput() != rdelimesc)) {
 		    	if (rdelim.size() > 1)
 		    		p.get_token(); // eat rdelim
 			return;
@@ -4712,10 +4927,7 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
 			string const arg = (t.cs() == "sindex" && p.hasOpt()) ?
 				p.getArg('[', ']') : "";
 			string const kind = arg.empty() ? "idx" : arg;
-			begin_inset(os, "Index ");
-			os << kind << "\nstatus collapsed\n";
-			parse_text_in_inset(p, os, FLAG_ITEM, false, context, "Index");
-			end_inset(os);
+			parse_index_entry(p, os, context, kind);
 			if (kind != "idx")
 				preamble.registerAutomaticallyLoadedPackage("splitidx");
 			continue;

commit 50403c4ecf08e50069ce48d794cc75b7490a2281
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Mon Apr 18 18:13:17 2022 +0200

    Improve selection when selecting out of inset by the left
    
    1/ put cusror in some display inset
    2/ use shift-left until the cursor exits the inset
    3/ see how the selection extends on the right.
    
    This is not really a selection drawing bug, but rather the fact that
    the anchor will be normalized to the first position after the inset,
    which is in the next row.
    
    This can be avoided by using the boundary property.
    
    See discussion in bug #12520.

diff --git a/src/Cursor.cpp b/src/Cursor.cpp
index d2190e7..ce02812 100644
--- a/src/Cursor.cpp
+++ b/src/Cursor.cpp
@@ -322,6 +322,7 @@ DocIterator CursorData::selectionEnd() const
 	if (di.depth() > depth()) {
 		di.resize(depth());
 		++di.pos();
+		di.boundary(true);
 	}
 	return di;
 }

commit 335f158896c067caa138fa7bcf9a9b38fcca1e35
Author: Pavel Sanda <sanda at lyx.org>
Date:   Sun Apr 17 00:49:35 2022 +0200

    * RELEASE-NOTES

diff --git a/lib/RELEASE-NOTES b/lib/RELEASE-NOTES
index 97c740c..344e6b1 100644
--- a/lib/RELEASE-NOTES
+++ b/lib/RELEASE-NOTES
@@ -146,6 +146,8 @@
 * tabular-feature: added toggle parameters "toggle-all-lines", "toggle-border-lines"
   and "toggle-inner-lines"
 
+* branch-sync-all: Open/close all insets of selected branch (depending on its activation status).
+
 
 !!!The following LyX functions have been removed in 2.4:
 
diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index f232e51..559d950 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -454,7 +454,7 @@ void LyXAction::init()
 
 /*!
  * \var lyx::FuncCode lyx::LFUN_BRANCH_SYNC_ALL
- * \li Action: Open/close all insets of selected branch (depending on its selection status).
+ * \li Action: Open/close all insets of selected branch (depending on its activation status).
  * \li Syntax: branch-sync-all
  * \li Origin: sanda, 15 April 2022
  * \endvar

commit a4f5f245f8245976ca4a0fdda4a43b96a159754c
Author: Pavel Sanda <sanda at lyx.org>
Date:   Sun Apr 17 00:38:17 2022 +0200

    forgotten bit

diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index c88c1b9..f232e51 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -455,7 +455,7 @@ void LyXAction::init()
 /*!
  * \var lyx::FuncCode lyx::LFUN_BRANCH_SYNC_ALL
  * \li Action: Open/close all insets of selected branch (depending on its selection status).
- * \li Syntax: branch-toggle-all
+ * \li Syntax: branch-sync-all
  * \li Origin: sanda, 15 April 2022
  * \endvar
  */

commit 5ba4d54b6303db27182f7ab1b7a0337f98546af2
Author: Pavel Sanda <sanda at lyx.org>
Date:   Sun Apr 17 00:37:22 2022 +0200

    *doc - branch-sync-all

diff --git a/lib/doc/UserGuide.lyx b/lib/doc/UserGuide.lyx
index 4cf4ce5..30a6ad3 100644
--- a/lib/doc/UserGuide.lyx
+++ b/lib/doc/UserGuide.lyx
@@ -8973,12 +8973,14 @@ Verbatim
 \end_layout
 
 \begin_layout Verbatim
+
 This is Verbatim.
 \end_layout
 
 \begin_layout Verbatim
 \noindent
 \align block
+
 The following 2 lines are empty:
 \end_layout
 
@@ -8991,6 +8993,7 @@ The following 2 lines are empty:
 \end_layout
 
 \begin_layout Verbatim
+
 Almost everything is allowed in Verbatim:"%&$§#~'`
 \backslash
 }][{|
@@ -9014,6 +9017,7 @@ Verbatim
 \end_layout
 
 \begin_layout Verbatim*
+
 This is Verbatim*.
 \end_layout
 
@@ -35518,8 +35522,19 @@ Exam-Question-Answer.pdf
 \end_layout
 
 \begin_layout Standard
-There are also inverted branch insets, whose content is output just in case
- the branch is 
+
+\change_inserted 5863208 1650147989
+It is also possible to 
+\change_deleted 5863208 1650147965
+There are also 
+\change_unchanged
+invert
+\change_deleted 5863208 1650147967
+ed
+\change_inserted 5863208 1650147977
+ just some
+\change_unchanged
+ branch insets, whose content is output just in case the branch is 
 \emph on
 not
 \emph default
@@ -35787,6 +35802,23 @@ Customization
 Flex insets and InsetLayout
 \emph default
 ).
+\change_inserted 5863208 1650148012
+
+\end_layout
+
+\begin_layout Standard
+
+\change_inserted 5863208 1650148601
+In case one extensively needs syncing activation branch status with open/close
+ status of all branch insets in the document we provide 
+\family typewriter
+branch-sync-all
+\family default
+ \SpecialChar LyX
+ function, which can be bound to keyboard shortcut or added to user-defined
+ context menu of branch inset.
+\change_unchanged
+
 \end_layout
 
 \begin_layout Section

commit 02ffd6dd70be2a376b5d09b55099aa75338a2889
Author: Pavel Sanda <sanda at lyx.org>
Date:   Sun Apr 17 00:16:19 2022 +0200

    Allow syncing open/close status of branch inset with it's activation status.
    
    This was kicked out by 742b39f4 (the code in inset toggle survived).
    https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg217311.html

diff --git a/src/FuncCode.h b/src/FuncCode.h
index 20231eb..8337c1f 100644
--- a/src/FuncCode.h
+++ b/src/FuncCode.h
@@ -502,6 +502,7 @@ enum FuncCode
 	LFUN_SPELLING_REMOVE_LOCAL,     // jspitzm 20210307
 	LFUN_FINISHED_DOWN,             // lasgouttes 20210629
 	LFUN_FINISHED_UP,               // lasgouttes 20210629
+	LFUN_BRANCH_SYNC_ALL,           // sanda 20220415
 	LFUN_LASTACTION                 // end of the table
 };
 
diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index ea60f53..c88c1b9 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -453,6 +453,15 @@ void LyXAction::init()
 		{ LFUN_BRANCH_INSERT, "branch-insert", Noop, Edit },
 
 /*!
+ * \var lyx::FuncCode lyx::LFUN_BRANCH_SYNC_ALL
+ * \li Action: Open/close all insets of selected branch (depending on its selection status).
+ * \li Syntax: branch-toggle-all
+ * \li Origin: sanda, 15 April 2022
+ * \endvar
+ */
+		{ LFUN_BRANCH_SYNC_ALL, "branch-sync-all", AtPoint, Buffer },
+
+/*!
  * \var lyx::FuncCode lyx::LFUN_BRANCH_INVERT
  * \li Action: Toggles inversion status of branch inset.
  * \li Syntax: branch-invert
diff --git a/src/insets/InsetBranch.cpp b/src/insets/InsetBranch.cpp
index 7a102ce..a30930a 100644
--- a/src/insets/InsetBranch.cpp
+++ b/src/insets/InsetBranch.cpp
@@ -224,9 +224,12 @@ void InsetBranch::doDispatch(Cursor & cur, FuncRequest & cmd)
 	case LFUN_BRANCH_ADD:
 		lyx::dispatch(FuncRequest(LFUN_BRANCH_ADD, params_.branch));
 		break;
+	case LFUN_BRANCH_SYNC_ALL:
+		lyx::dispatch(FuncRequest(LFUN_INSET_FORALL, "Branch:" + params_.branch + " inset-toggle assign"));
+		break;
 	case LFUN_INSET_TOGGLE:
 		if (cmd.argument() == "assign")
-			setStatus(cur, isBranchSelected() ? Open : Collapsed);
+			setStatus(cur, (isBranchSelected(true) != params_.inverted) ? Open : Collapsed);
 		else
 			InsetCollapsible::doDispatch(cur, cmd);
 		break;
@@ -276,6 +279,10 @@ bool InsetBranch::getStatus(Cursor & cur, FuncRequest const & cmd,
 		flag.setEnabled(buffer().parent() && isBranchSelected());
 		break;
 
+	case LFUN_BRANCH_SYNC_ALL:
+		flag.setEnabled(known_branch);
+		break;
+
 	case LFUN_INSET_TOGGLE:
 		if (cmd.argument() == "assign")
 			flag.setEnabled(true);

commit 28b206665fb7a90d0998f927cec003fcef9c573e
Author: Kornel Benko <kornel at lyx.org>
Date:   Sat Apr 16 15:10:33 2022 +0200

    FindAdv: Convert '\%' in a regex to '%'
    
    Regex contents comes from handling hullRegexp, so we
    have to reverse some its handling, among others also for the char '%'

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 015e437..2ea1e88 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -838,7 +838,7 @@ string correctRegex(string t, bool withformat)
 	 * and \{, \}, \[, \] => {, }, [, ]
 	 */
 	string s("");
-	regex wordre("(\\\\)*(\\\\(([A-Za-z]+|[\\{\\}])( |\\{\\})?|[\\[\\]\\{\\}]))");
+	regex wordre("(\\\\)*(\\\\(([A-Za-z]+|[\\{\\}%])( |\\{\\})?|[\\[\\]\\{\\}]))");
 	size_t lastpos = 0;
 	smatch sub;
 	bool backslashed = false;
@@ -893,6 +893,8 @@ string correctRegex(string t, bool withformat)
 				replace = "{";
 			else if (sub.str(4) == "}")
 				replace = "}";
+			else if (sub.str(4) == "%")
+				replace = "%";
 			else {
 				AccentsIterator it_ac = accents.find(sub.str(4));
 				if (it_ac == accents.end()) {

commit 965b2cdc73ffa8e3c3d842bd1b3cb3c148118db6
Author: Kornel Benko <kornel at lyx.org>
Date:   Fri Apr 15 17:18:40 2022 +0200

    Findadv: Correct findadv-combined test
    
    Replaced some 'CP' commands with 'CN' comments.

diff --git a/development/autotests/findadv-combined-in.txt b/development/autotests/findadv-combined-in.txt
index c273a13..bbcb14d 100644
--- a/development/autotests/findadv-combined-in.txt
+++ b/development/autotests/findadv-combined-in.txt
@@ -65,7 +65,7 @@ CP: Putting selection at .*idx: 0 par: 2 pos: 8\n with len: 1
 #
 CN: Part 007
 KK: \C\[F21]\C\[F20]\\[\[Return]
-CP: Escaped : '\['
+CN: Escaped : '\['
 CP: Putting selection at .*idx: 0 par: 3 pos: 3\n with len: 1
 #
 CN: Part 008
@@ -108,47 +108,47 @@ CP: Putting selection at .*idx: 0 par: 0 pos: 3\n with len: 1
 #
 CN: Part 102
 KK: \C\[F21]\C\[F20]\\(\[Return]
-CP: Escaped : '\('
+CN: Escaped : '\('
 CP: Putting selection at .*idx: 0 par: 1 pos: 1\n with len: 1
 #
 CN: Part 103
 KK: \C\[F21]\C\[F20]\\)\[Return]
-CP: Escaped : '\)'
+CN: Escaped : '\)'
 CP: Putting selection at .*idx: 0 par: 1 pos: 2\n with len: 1
 #
 CN: Part 104
 KK: \C\[F21]\C\[F20]\\\\\[Return]
-CP: Escaped : '\\'
+CN: Escaped : '\\'
 CP: Putting selection at .*idx: 0 par: 2 pos: 0\n with len: 1
 #
 CN: Part 105
 KK: \C\[F21]\C\[F20]%\[Return]
-CP: Escaped : '%'
+CN: Escaped : '%'
 CP: Putting selection at .*idx: 0 par: 2 pos: 7\n with len: 1
 #
 CN: Part 105
 KK: \C\[F21]\C\[F20]\\^\[Return]
-CP: Escaped : '\^'
+CN: Escaped : '\^'
 CP: Putting selection at .*idx: 0 par: 2 pos: 8\n with len: 1
 #
 CN: Part 106
 KK: \C\[F21]\C\[F20]\\{\[Return]
-CP: Escaping: '\backslash\{'
+CN: Escaping: '\backslash\{'
 CP: Putting selection at .*idx: 0 par: 3 pos: 5\n with len: 1
 #
 CN: Part 107
 KK: \C\[F21]\C\[F20]\\}\[Return]
-CP: Escaping: '\backslash\}'
+CN: Escaping: '\backslash\}'
 CP: Putting selection at .*idx: 0 par: 3 pos: 6\n with len: 1
 #
 CN: Part 108
 KK: \C\[F21]\C\[F20]\\]\[Return]
-CP: Escaped : '\]'
+CN: Escaped : '\]'
 CP: Putting selection at .*idx: 0 par: 4 pos: 4\n with len: 1
 #
 CN: Part 109
 KK: \C\[F21]\C\[F20]\\@\[Return]
-CP: Escaped : '\@'
+CN: Escaped : '\@'
 CP: Putting selection at .*idx: 0 par: 4 pos: 10\n with len: 1
 
 #

commit 45756a50b4e47c3fe182e77f8e976011db7cc070
Author: Kornel Benko <kornel at lyx.org>
Date:   Fri Apr 15 17:09:08 2022 +0200

    FindAdv: Handling of '%' in searched string while not ignoring format
    
    Difficult to decide, when to remove the sequence '%\n'.
    The sequence is OK for latex output as a command separator,
    but must be removed in searched string.
    
    Alas, not all occurences are wrong. Sigh.

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 6ef7cd3..015e437 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -3878,14 +3878,9 @@ string MatchStringAdv::normalize(docstring const & s, bool ignore_format) const
 	// Remove \n at begin
 	while (!t.empty() && t[0] == '\n')
 		t = t.substr(1);
-	// Remove [%]*\n at end
+	// Remove \n* at end
 	while (!t.empty() && t[t.size() - 1] == '\n') {
-		size_t count = 1;
-		if (!ignore_format) {
-			while ((t.size() > 1 + count) && (t[t.size() - 1 - count] == '%'))
-				count++;
-		}
-		t = t.substr(0, t.size() - count);
+		t = t.substr(0, t.size() - 1);
 	}
 	size_t pos;
 	// Handle all other '\n'

commit 18a1207c2d1c9cf3716bcda93281f8da5f345bc1
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Apr 14 10:27:10 2022 +0200

    de.po

diff --git a/po/de.gmo b/po/de.gmo
index df61191..cd9723d 100644
Binary files a/po/de.gmo and b/po/de.gmo differ
diff --git a/po/de.po b/po/de.po
index 43362d9..44e5e09 100644
--- a/po/de.po
+++ b/po/de.po
@@ -94,15 +94,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.4git\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-19 14:24+0100\n"
-"PO-Revision-Date: 2022-02-19 14:31+0100\n"
+"POT-Creation-Date: 2022-04-14 10:20+0200\n"
+"PO-Revision-Date: 2022-04-14 10:26+0200\n"
 "Last-Translator: Jürgen Spitzmüller <spitz at lyx.org>\n"
 "Language-Team: Deutsch <lyx-docs at lists.lyx.org>\n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Gtranslator 40.0\n"
+"X-Generator: Gtranslator 41.0\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
 #: src/frontends/qt/ui/AboutUi.ui:27
@@ -3711,10 +3711,10 @@ msgstr "Doppelt"
 #: src/frontends/qt/GuiHSpace.cpp:57 src/frontends/qt/GuiPrefs.cpp:816
 #: src/frontends/qt/GuiPrefs.cpp:844 src/frontends/qt/GuiPrefs.cpp:871
 #: src/frontends/qt/GuiPrefs.cpp:2329 src/frontends/qt/GuiPrefs.cpp:2352
-#: src/frontends/qt/GuiPrintNomencl.cpp:51 src/insets/InsetInfo.cpp:236
-#: src/insets/InsetInfo.cpp:246 src/insets/InsetInfo.cpp:250
-#: src/insets/InsetInfo.cpp:259 src/insets/InsetInfo.cpp:321
-#: src/insets/InsetInfo.cpp:343
+#: src/frontends/qt/GuiPrintNomencl.cpp:51 src/insets/InsetInfo.cpp:237
+#: src/insets/InsetInfo.cpp:247 src/insets/InsetInfo.cpp:251
+#: src/insets/InsetInfo.cpp:260 src/insets/InsetInfo.cpp:322
+#: src/insets/InsetInfo.cpp:344
 msgid "Custom"
 msgstr "Benutzerdefiniert"
 
@@ -4486,7 +4486,7 @@ msgstr "&Aktiv"
 msgid "Ctrl"
 msgstr "Strg-Taste"
 
-#: src/frontends/qt/ui/PrefInputUi.ui:249 src/insets/InsetInfo.cpp:863
+#: src/frontends/qt/ui/PrefInputUi.ui:249 src/insets/InsetInfo.cpp:892
 msgid "Shift"
 msgstr "Umschalttaste"
 
@@ -6387,7 +6387,7 @@ msgid "Footnote"
 msgstr "Fußnote"
 
 #: lib/citeengines/biblatex-natbib.citeengine:144
-#: lib/citeengines/biblatex.citeengine:134
+#: lib/citeengines/biblatex.citeengine:134 lib/layouts/stdinsets.inc:51
 msgid "Foot"
 msgstr "Fußnote"
 
@@ -7432,9 +7432,9 @@ msgstr "IEEE Transactions"
 #: lib/layouts/scrlttr2.layout:19 lib/layouts/siamltex.layout:37
 #: lib/layouts/sigplanconf.layout:41 lib/layouts/simplecv.layout:18
 #: lib/layouts/slides.layout:61 lib/layouts/stdclass.inc:28
-#: lib/layouts/stdinsets.inc:688 lib/layouts/stdletter.inc:12
+#: lib/layouts/stdinsets.inc:689 lib/layouts/stdletter.inc:12
 #: lib/layouts/svcommon.inc:26 lib/layouts/tufte-book.layout:35
-#: src/insets/InsetRef.cpp:597
+#: src/insets/InsetRef.cpp:599
 msgid "Standard"
 msgstr "Standard"
 
@@ -7505,7 +7505,7 @@ msgstr "Kleinschreibung"
 #: lib/layouts/siamltex.layout:222 lib/layouts/sigplanconf.layout:150
 #: lib/layouts/stdtitle.inc:37 lib/layouts/svcommon.inc:370
 #: lib/layouts/svmult.layout:89 lib/layouts/svprobth.layout:93
-#: lib/layouts/tufte-book.layout:55 src/insets/InsetInfo.cpp:283
+#: lib/layouts/tufte-book.layout:55 src/insets/InsetInfo.cpp:284
 msgid "Author"
 msgstr "Autor"
 
@@ -8065,7 +8065,7 @@ msgstr "Unterunterabschnitt"
 #: lib/layouts/scrclass.inc:240 lib/layouts/scrlettr.layout:203
 #: lib/layouts/scrlttr2.layout:322 lib/layouts/siamltex.layout:246
 #: lib/layouts/stdtitle.inc:62 lib/layouts/svcommon.inc:406
-#: lib/layouts/tufte-book.layout:60 src/insets/InsetInfo.cpp:284
+#: lib/layouts/tufte-book.layout:60 src/insets/InsetInfo.cpp:285
 msgid "Date"
 msgstr "Datum"
 
@@ -8513,7 +8513,7 @@ msgstr "American Chemical Society (ACS)"
 #: lib/layouts/scrclass.inc:142 lib/layouts/scrclass.inc:155
 #: lib/layouts/scrclass.inc:168 lib/layouts/scrclass.inc:324
 #: lib/layouts/scrclass.inc:349 lib/layouts/siamltex.layout:206
-#: lib/layouts/simplecv.layout:52 lib/layouts/stdinsets.inc:695
+#: lib/layouts/simplecv.layout:52 lib/layouts/stdinsets.inc:696
 #: lib/layouts/stdsections.inc:32 lib/layouts/stdsections.inc:76
 #: lib/layouts/stdsections.inc:117 lib/layouts/tufte-book.layout:98
 #: lib/layouts/tufte-book.layout:129 lib/layouts/tufte-handout.layout:40
@@ -9509,7 +9509,7 @@ msgstr "Spezialabschnitt*"
 
 #: lib/layouts/amsart.layout:98 lib/layouts/beamer.layout:336
 #: lib/layouts/beamer.layout:398 lib/layouts/beamer.layout:460
-#: lib/layouts/memoir.layout:248 lib/layouts/stdinsets.inc:713
+#: lib/layouts/memoir.layout:248 lib/layouts/stdinsets.inc:714
 #: lib/layouts/stdstarsections.inc:15 lib/layouts/stdstarsections.inc:30
 #: lib/layouts/stdstarsections.inc:45 lib/layouts/stdstarsections.inc:60
 #: lib/layouts/stdstarsections.inc:75 lib/layouts/stdstarsections.inc:90
@@ -9729,13 +9729,13 @@ msgid "Centered"
 msgstr "Zentriert"
 
 #: lib/layouts/apa.layout:285 lib/layouts/apax.inc:384
-#: lib/layouts/stdinsets.inc:689 src/insets/InsetCaption.cpp:436
+#: lib/layouts/stdinsets.inc:690 src/insets/InsetCaption.cpp:436
 msgid "standard"
 msgstr "Standard"
 
 #: lib/layouts/apa.layout:292 lib/layouts/apax.inc:391
 #: lib/layouts/scrclass.inc:325 lib/layouts/scrclass.inc:350
-#: lib/layouts/stdinsets.inc:696
+#: lib/layouts/stdinsets.inc:697
 msgid "The caption as it appears in the list of figures/tables"
 msgstr "Die Legende, wie sie im Abbildungs-/Tabellenverzeichnis erscheint"
 
@@ -12231,7 +12231,7 @@ msgstr ""
 "Gleichungsnummer die Abschnittsnummer voran, bspw. '(2.1)'."
 
 #: lib/layouts/eqs-within-sections.module:17 lib/layouts/scrbook.layout:29
-#: lib/layouts/stdcounters.inc:81 src/insets/InsetRef.cpp:598
+#: lib/layouts/stdcounters.inc:81 src/insets/InsetRef.cpp:600
 #: src/mathed/InsetMathRef.cpp:372
 msgid "Equation"
 msgstr "Gleichung"
@@ -12538,7 +12538,7 @@ msgid "Size the photo is resized to"
 msgstr "Ausgabegröße des Bildes"
 
 #: lib/layouts/europecv.layout:185 src/frontends/qt/GuiDocument.cpp:136
-#: src/insets/InsetRef.cpp:599
+#: src/insets/InsetRef.cpp:601
 msgid "Page"
 msgstr "Seite"
 
@@ -15786,7 +15786,7 @@ msgstr "CheckBox"
 msgid "ChoiceMenu"
 msgstr "Auswahlmenü"
 
-#: lib/layouts/pdfform.module:90 src/insets/InsetRef.cpp:604
+#: lib/layouts/pdfform.module:90 src/insets/InsetRef.cpp:606
 msgid "Label"
 msgstr "Beschriftung"
 
@@ -17091,10 +17091,6 @@ msgstr "Listing"
 msgid "Margin"
 msgstr "Rand"
 
-#: lib/layouts/stdinsets.inc:51
-msgid "foot"
-msgstr "Fußnote"
-
 #: lib/layouts/stdinsets.inc:177
 msgid "Greyedout"
 msgstr "Grauschrift"
@@ -17125,23 +17121,23 @@ msgstr "Stichwort"
 msgid "Argument"
 msgstr "Argument"
 
-#: lib/layouts/stdinsets.inc:715
+#: lib/layouts/stdinsets.inc:716
 msgid "unlabelled"
 msgstr "ohne Marke"
 
-#: lib/layouts/stdinsets.inc:722
+#: lib/layouts/stdinsets.inc:723
 msgid "Preview"
 msgstr "Vorschau"
 
-#: lib/layouts/stdinsets.inc:756 lib/layouts/stdinsets.inc:764
+#: lib/layouts/stdinsets.inc:757 lib/layouts/stdinsets.inc:765
 msgid "see equation[[nomencl]]"
 msgstr "siehe Gleichung"
 
-#: lib/layouts/stdinsets.inc:757 lib/layouts/stdinsets.inc:765
+#: lib/layouts/stdinsets.inc:758 lib/layouts/stdinsets.inc:766
 msgid "page[[nomencl]]"
 msgstr "Seite"
 
-#: lib/layouts/stdinsets.inc:758 lib/layouts/stdinsets.inc:766
+#: lib/layouts/stdinsets.inc:759 lib/layouts/stdinsets.inc:767
 msgid "Nomenclature[[output]]"
 msgstr "Nomenklatur"
 
@@ -19658,19 +19654,19 @@ msgstr "Als Querverweis kopieren|k"
 
 #: lib/ui/stdcontext.inc:61 lib/ui/stdcontext.inc:375 lib/ui/stdmenus.inc:108
 #: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1584
-#: src/mathed/InsetMathNest.cpp:555
+#: src/mathed/InsetMathNest.cpp:561
 msgid "Cut"
 msgstr "Ausschneiden"
 
 #: lib/ui/stdcontext.inc:62 lib/ui/stdcontext.inc:376 lib/ui/stdmenus.inc:109
-#: lib/ui/stdtoolbars.inc:87 src/BufferView.cpp:2269
+#: lib/ui/stdtoolbars.inc:87 src/BufferView.cpp:2270
 msgid "Copy"
 msgstr "Kopieren"
 
 #: lib/ui/stdcontext.inc:63 lib/ui/stdcontext.inc:377 lib/ui/stdmenus.inc:110
 #: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1528
 #: src/frontends/qt/GuiToolbar.cpp:441 src/mathed/InsetMathGrid.cpp:1565
-#: src/mathed/InsetMathNest.cpp:533
+#: src/mathed/InsetMathNest.cpp:539
 msgid "Paste"
 msgstr "Einfügen"
 
@@ -21840,16 +21836,16 @@ msgid "Toggle right line"
 msgstr "Rechte Linie an/aus"
 
 #: lib/ui/stdtoolbars.inc:167
-msgid "Set border lines"
-msgstr "Äußere Linien setzen"
+msgid "Toggle border lines"
+msgstr "Rahmenlinien an/aus"
 
 #: lib/ui/stdtoolbars.inc:168
-msgid "Set all lines"
-msgstr "Alle Linien setzen"
+msgid "Toggle inner lines"
+msgstr "Innere Linien an/aus"
 
 #: lib/ui/stdtoolbars.inc:169
-msgid "Set inner lines"
-msgstr "Innere Linien setzen"
+msgid "Toggle all lines"
+msgstr "Alle Linien an/aus"
 
 #: lib/ui/stdtoolbars.inc:170
 msgid "Unset all lines"
@@ -22046,7 +22042,7 @@ msgstr "Trennzeichen (feste Größe)"
 msgid "Miscellaneous (extended)"
 msgstr "Verschiedenes (erweitert)"
 
-#: lib/ui/stdtoolbars.inc:237 src/TocBackend.cpp:300
+#: lib/ui/stdtoolbars.inc:237 src/TocBackend.cpp:303
 msgid "Math Macros"
 msgstr "Mathe-Makros"
 
@@ -26982,7 +26978,7 @@ msgstr "Beispiel (roh)"
 msgid "Gnuplot"
 msgstr "Gnuplot"
 
-#: lib/examples/Articles:0 src/TocBackend.cpp:299
+#: lib/examples/Articles:0 src/TocBackend.cpp:302
 #: src/frontends/qt/GuiExternal.cpp:86
 msgid "External Material"
 msgstr "Externes Material"
@@ -26992,10 +26988,6 @@ msgid "Feynman Diagrams"
 msgstr "Feynman-Diagramme"
 
 #: lib/examples/Articles:0
-msgid "Instant Preview"
-msgstr "Eingebettete Vorschau"
-
-#: lib/examples/Articles:0
 msgid "Itemize Bullets"
 msgstr "Auflistungszeichen"
 
@@ -27016,6 +27008,10 @@ msgid "XY-Pic"
 msgstr "XY-Pic"
 
 #: lib/examples/Articles:0
+msgid "Instant Preview"
+msgstr "Eingebettete Vorschau"
+
+#: lib/examples/Articles:0
 msgid "Graphics and Insets"
 msgstr "Grafiken und Einfügungen"
 
@@ -27036,14 +27032,6 @@ msgid "Localization Test"
 msgstr "Übersetzungstest"
 
 #: lib/examples/Articles:0
-msgid "Hazard and Precautionary Statements"
-msgstr "H- und P-Sätze"
-
-#: lib/examples/Articles:0
-msgid "LilyPond Book"
-msgstr "LilyPond-Buch"
-
-#: lib/examples/Articles:0
 msgid "Multilingual Captions"
 msgstr "Mehrsprachige Legenden"
 
@@ -27055,6 +27043,14 @@ msgstr "Noweb2LyX"
 msgid "Noweb Listerrors"
 msgstr "Noweb-Fehlerbericht"
 
+#: lib/examples/Articles:0
+msgid "LilyPond Book"
+msgstr "LilyPond-Buch"
+
+#: lib/examples/Articles:0
+msgid "Hazard and Precautionary Statements"
+msgstr "H- und P-Sätze"
+
 #: lib/examples/Articles:0 src/frontends/qt/GuiDocument.cpp:1775
 msgid "Modules"
 msgstr "Module"
@@ -27084,10 +27080,6 @@ msgid "Multilingual Typesetting with platex"
 msgstr "Mehrsprachige Dokumente mit platex"
 
 #: lib/examples/Articles:0
-msgid "Hebrew Article (KOMA-Script)"
-msgstr "Hebräischer Aufsatz (KOMA-Script)"
-
-#: lib/examples/Articles:0
 msgid "IEEE Transactions Conference"
 msgstr "IEEE Transactions Conference"
 
@@ -27104,6 +27096,10 @@ msgid "Springers Global Journal Template (V. 3)"
 msgstr "Springers globale Vorlage für Zeitschriften (V. 3)"
 
 #: lib/examples/Articles:0
+msgid "Hebrew Article (KOMA-Script)"
+msgstr "Hebräischer Aufsatz (KOMA-Script)"
+
+#: lib/examples/Articles:0
 msgid "00 Main File"
 msgstr "00 Hauptdatei"
 
@@ -27542,7 +27538,7 @@ msgstr "iconv-Konvertierung fehlgeschlagen"
 msgid "conversion failed"
 msgstr "Konvertierung fehlgeschlagen"
 
-#: src/Buffer.cpp:1917 src/insets/InsetGraphics.cpp:905
+#: src/Buffer.cpp:1917 src/insets/InsetGraphics.cpp:919
 msgid "Uncodable character in file path"
 msgstr "Unkodierbares Zeichen im Dateipfad"
 
@@ -27647,13 +27643,13 @@ msgid "Error viewing the output file."
 msgstr "Fehler bei der Ansicht der Ausgabedatei."
 
 #: src/Buffer.cpp:3370 src/frontends/qt/GuiView.cpp:2706
-#: src/frontends/qt/Validator.cpp:241 src/insets/ExternalSupport.cpp:394
-#: src/insets/InsetGraphics.cpp:692 src/insets/InsetInclude.cpp:606
+#: src/frontends/qt/Validator.cpp:245 src/insets/ExternalSupport.cpp:394
+#: src/insets/InsetGraphics.cpp:693 src/insets/InsetInclude.cpp:606
 msgid "Invalid filename"
 msgstr "Ungültiger Dateiname"
 
 #: src/Buffer.cpp:3371 src/insets/ExternalSupport.cpp:395
-#: src/insets/InsetGraphics.cpp:693 src/insets/InsetInclude.cpp:607
+#: src/insets/InsetGraphics.cpp:694 src/insets/InsetInclude.cpp:607
 msgid ""
 "The following filename will cause troubles when running the exported file "
 "through LaTeX: "
@@ -27662,12 +27658,12 @@ msgstr ""
 "exportierten Datei ausgeführt wird: "
 
 #: src/Buffer.cpp:3376 src/insets/ExternalSupport.cpp:400
-#: src/insets/InsetGraphics.cpp:700 src/insets/InsetInclude.cpp:611
+#: src/insets/InsetGraphics.cpp:701 src/insets/InsetInclude.cpp:611
 msgid "Problematic filename for DVI"
 msgstr "Problematischer Dateiname für DVI"
 
 #: src/Buffer.cpp:3377 src/insets/ExternalSupport.cpp:401
-#: src/insets/InsetGraphics.cpp:701 src/insets/InsetInclude.cpp:612
+#: src/insets/InsetGraphics.cpp:702 src/insets/InsetInclude.cpp:612
 msgid ""
 "The following filename can cause troubles when running the exported file "
 "through LaTeX and opening the resulting DVI: "
@@ -27900,16 +27896,16 @@ msgstr ""
 "%1$s ist schreibgeschützt.\n"
 "Bitte speichern Sie die Datei unter einem neuen Namen."
 
-#: src/Buffer.cpp:5206 src/insets/InsetCaption.cpp:404
+#: src/Buffer.cpp:5213 src/insets/InsetCaption.cpp:404
 msgid "Senseless!!! "
 msgstr "Sinnlos!!! "
 
-#: src/Buffer.cpp:5470
+#: src/Buffer.cpp:5477
 #, c-format
 msgid "Document %1$s reloaded."
 msgstr "Dokument %1$s neu geladen."
 
-#: src/Buffer.cpp:5473
+#: src/Buffer.cpp:5480
 #, c-format
 msgid "Could not reload document %1$s."
 msgstr "Kann Dokument %1$s nicht neu laden."
@@ -28027,23 +28023,23 @@ msgid "greyedout inset text"
 msgstr "Grauschrift-Einfügungstext"
 
 #: src/BufferParams.cpp:1718 src/BufferParams.cpp:1872
-#: src/BufferParams.cpp:2315 src/Encoding.cpp:253 src/Paragraph.cpp:3014
+#: src/BufferParams.cpp:2315 src/Encoding.cpp:264 src/Paragraph.cpp:3014
 #: src/frontends/qt/LaTeXHighlighter.cpp:143
 #: src/frontends/qt/LaTeXHighlighter.cpp:257
 #: src/insets/InsetCommandParams.cpp:508 src/insets/InsetCommandParams.cpp:516
-#: src/insets/InsetGraphics.cpp:886 src/insets/InsetGraphics.cpp:894
+#: src/insets/InsetGraphics.cpp:900 src/insets/InsetGraphics.cpp:908
 #: src/insets/InsetListings.cpp:299 src/insets/InsetListings.cpp:307
-#: src/insets/InsetListings.cpp:332 src/mathed/MathExtern.cpp:1440
-#: src/mathed/MathExtern.cpp:1514
+#: src/insets/InsetListings.cpp:332 src/mathed/MathExtern.cpp:1444
+#: src/mathed/MathExtern.cpp:1518
 msgid "LyX Warning: "
 msgstr "LyX-Warnung: "
 
 #: src/BufferParams.cpp:1719 src/BufferParams.cpp:1873
-#: src/BufferParams.cpp:2316 src/Encoding.cpp:254 src/Paragraph.cpp:3015
+#: src/BufferParams.cpp:2316 src/Encoding.cpp:265 src/Paragraph.cpp:3015
 #: src/insets/InsetCommandParams.cpp:509 src/insets/InsetCommandParams.cpp:517
-#: src/insets/InsetGraphics.cpp:887 src/insets/InsetGraphics.cpp:895
+#: src/insets/InsetGraphics.cpp:901 src/insets/InsetGraphics.cpp:909
 #: src/insets/InsetListings.cpp:300 src/insets/InsetListings.cpp:308
-#: src/mathed/MathExtern.cpp:1441 src/mathed/MathExtern.cpp:1515
+#: src/mathed/MathExtern.cpp:1445 src/mathed/MathExtern.cpp:1519
 msgid "uncodable character"
 msgstr "unkodierbares Zeichen"
 
@@ -28221,7 +28217,7 @@ msgstr "Das Dokument wurde extern bearbeitet"
 msgid "This portion of the document is deleted."
 msgstr "Dieser Teil des Dokuments wird gelöscht."
 
-#: src/BufferView.cpp:1191 src/BufferView.cpp:2254
+#: src/BufferView.cpp:1191 src/BufferView.cpp:2255
 #: src/frontends/qt/GuiView.cpp:4296 src/frontends/qt/GuiView.cpp:4384
 msgid "Absolute filename expected."
 msgstr "Ein absoluter Dateipfad wird erwartet."
@@ -28298,42 +28294,42 @@ msgstr "Ein Zeichen (ohne Leerzeichen)"
 msgid "Statistics"
 msgstr "Statistik"
 
-#: src/BufferView.cpp:2112
+#: src/BufferView.cpp:2113
 #, c-format
 msgid ""
 "`inset-forall' interrupted because number of actions is larger than %1$d"
 msgstr ""
 ",inset-forall` wurde abgebrochen, da die Zahl der Aktionen %1$d übersteigt"
 
-#: src/BufferView.cpp:2114
+#: src/BufferView.cpp:2115
 #, c-format
 msgid "Applied \"%1$s\" to %2$d insets"
 msgstr "Der Befehl \"%1$s\" wurde auf %2$d Einfügungen angewandt"
 
-#: src/BufferView.cpp:2122
+#: src/BufferView.cpp:2123
 msgid "Branch name"
 msgstr "Name des Zweigs"
 
-#: src/BufferView.cpp:2129 src/frontends/qt/GuiBranches.cpp:225
+#: src/BufferView.cpp:2130 src/frontends/qt/GuiBranches.cpp:225
 msgid "Branch already exists"
 msgstr "Zweig existiert bereits"
 
-#: src/BufferView.cpp:3056
+#: src/BufferView.cpp:3057
 #, c-format
 msgid "Inserting document %1$s..."
 msgstr "Füge Dokument %1$s ein..."
 
-#: src/BufferView.cpp:3072
+#: src/BufferView.cpp:3073
 #, c-format
 msgid "Document %1$s inserted."
 msgstr "Dokument %1$s ist eingefügt."
 
-#: src/BufferView.cpp:3074
+#: src/BufferView.cpp:3075
 #, c-format
 msgid "Could not insert document %1$s"
 msgstr "Das Dokument %1$s konnte nicht eingefügt werden"
 
-#: src/BufferView.cpp:3569
+#: src/BufferView.cpp:3570
 #, c-format
 msgid ""
 "Could not read the specified document\n"
@@ -28344,11 +28340,11 @@ msgstr ""
 "konnte aufgrund des folgenden Fehlers\n"
 "nicht gelesen werden: %2$s"
 
-#: src/BufferView.cpp:3571
+#: src/BufferView.cpp:3572
 msgid "Could not read file"
 msgstr "Die Datei konnte nicht gelesen werden"
 
-#: src/BufferView.cpp:3578
+#: src/BufferView.cpp:3579
 #, c-format
 msgid ""
 "%1$s\n"
@@ -28357,17 +28353,17 @@ msgstr ""
 "%1$s\n"
 "ist nicht lesbar."
 
-#: src/BufferView.cpp:3579 src/frontends/qt/qt_helpers.cpp:311
-#: src/frontends/qt/qt_helpers.cpp:314 src/frontends/qt/qt_helpers.cpp:320
+#: src/BufferView.cpp:3580 src/frontends/qt/qt_helpers.cpp:322
+#: src/frontends/qt/qt_helpers.cpp:325 src/frontends/qt/qt_helpers.cpp:331
 #: src/output.cpp:39
 msgid "Could not open file"
 msgstr "Die Datei konnte nicht geöffnet werden"
 
-#: src/BufferView.cpp:3586
+#: src/BufferView.cpp:3587
 msgid "Reading not UTF-8 encoded file"
 msgstr "Lese nicht-UTF-8-kodierte Datei"
 
-#: src/BufferView.cpp:3587
+#: src/BufferView.cpp:3588
 msgid ""
 "The file is not UTF-8 encoded.\n"
 "It will be read as local 8Bit-encoded.\n"
@@ -30479,11 +30475,11 @@ msgstr ""
 msgid "Unknown Inset"
 msgstr "Unbekannte Einfügung"
 
-#: src/Text.cpp:554 src/insets/InsetTabular.cpp:473
+#: src/Text.cpp:554 src/insets/InsetTabular.cpp:476
 msgid "Change tracking author index missing"
 msgstr "Autorindex für die Änderungsverfolgung fehlt"
 
-#: src/Text.cpp:555 src/insets/InsetTabular.cpp:474
+#: src/Text.cpp:555 src/insets/InsetTabular.cpp:477
 #, c-format
 msgid ""
 "A change tracking author information for index %1$d is missing. This can "
@@ -30584,7 +30580,7 @@ msgstr "Mathe-Editor-Modus"
 msgid "No valid math formula"
 msgstr "Keine gültige Matheformel"
 
-#: src/Text3.cpp:210 src/mathed/InsetMathNest.cpp:1032
+#: src/Text3.cpp:210 src/mathed/InsetMathNest.cpp:1038
 msgid "Already in regular expression mode"
 msgstr "Bereits im Regexp-Modus"
 
@@ -30604,7 +30600,7 @@ msgstr " unbekannt"
 msgid "Table Style "
 msgstr "Tabellenstil"
 
-#: src/Text3.cpp:2385 src/frontends/qt/GuiApplication.cpp:1873
+#: src/Text3.cpp:2385 src/frontends/qt/GuiApplication.cpp:1887
 msgid "Missing argument"
 msgstr "Fehlendes Argument"
 
@@ -30761,53 +30757,57 @@ msgstr ""
 msgid "Error reading cite engine %1$s\n"
 msgstr "Fehler beim Lesen der Zitierformatdatei %1$s\n"
 
-#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:517
+#: src/TocBackend.cpp:69 src/insets/InsetInclude.cpp:1373
+msgid "MISSING: "
+msgstr "NICHT VORHANDEN:"
+
+#: src/TocBackend.cpp:273 src/insets/InsetIndex.cpp:517
 #: src/insets/InsetIndex.cpp:538
 msgid "unknown type!"
 msgstr "unbekannter Typ!"
 
-#: src/TocBackend.cpp:273
+#: src/TocBackend.cpp:276
 #, c-format
 msgid "Index Entries (%1$s)"
 msgstr "Stichwörter (%1$s)"
 
-#: src/TocBackend.cpp:289 src/insets/InsetTOC.cpp:75
+#: src/TocBackend.cpp:292 src/insets/InsetTOC.cpp:75
 msgid "Table of Contents"
 msgstr "Inhaltsverzeichnis"
 
-#: src/TocBackend.cpp:290
+#: src/TocBackend.cpp:293
 msgid "Changes"
 msgstr "Änderungen"
 
-#: src/TocBackend.cpp:291
+#: src/TocBackend.cpp:294
 msgid "Senseless"
 msgstr "Sinnlos"
 
-#: src/TocBackend.cpp:292
+#: src/TocBackend.cpp:295
 msgid "Citations"
 msgstr "Literaturverweise"
 
-#: src/TocBackend.cpp:293
+#: src/TocBackend.cpp:296
 msgid "Labels and References"
 msgstr "Marken und Querverweise"
 
-#: src/TocBackend.cpp:294
+#: src/TocBackend.cpp:297
 msgid "Broken References and Citations"
 msgstr "Ungültige Literatur- und Querverweise"
 
-#: src/TocBackend.cpp:296 src/frontends/qt/GuiDocument.cpp:1774
+#: src/TocBackend.cpp:299 src/frontends/qt/GuiDocument.cpp:1774
 msgid "Child Documents"
 msgstr "Unterdokumente"
 
-#: src/TocBackend.cpp:297
+#: src/TocBackend.cpp:300
 msgid "Graphics[[listof]]"
 msgstr "Grafiken"
 
-#: src/TocBackend.cpp:298
+#: src/TocBackend.cpp:301
 msgid "Equations"
 msgstr "Gleichungen"
 
-#: src/TocBackend.cpp:301
+#: src/TocBackend.cpp:304
 msgid "Nomenclature Entries"
 msgstr "Nomenklatureinträge"
 
@@ -31020,15 +31020,15 @@ msgstr ""
 
 #: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
 #: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1895
-#: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
-#: src/lyxfind.cpp:694 src/lyxfind.cpp:722
+#: src/lyxfind.cpp:310 src/lyxfind.cpp:337 src/lyxfind.cpp:358
+#: src/lyxfind.cpp:701 src/lyxfind.cpp:729
 msgid "&Yes"
 msgstr "&Ja"
 
 #: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
 #: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1895
-#: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
-#: src/lyxfind.cpp:694 src/lyxfind.cpp:722
+#: src/lyxfind.cpp:310 src/lyxfind.cpp:337 src/lyxfind.cpp:358
+#: src/lyxfind.cpp:701 src/lyxfind.cpp:729
 msgid "&No"
 msgstr "&Nein"
 
@@ -31165,7 +31165,7 @@ msgid "Dings 4"
 msgstr "Dings 4"
 
 #: src/frontends/qt/ButtonController.cpp:222
-#: src/frontends/qt/GuiApplication.cpp:1997 src/frontends/qt/GuiCompare.cpp:193
+#: src/frontends/qt/GuiApplication.cpp:2011 src/frontends/qt/GuiCompare.cpp:193
 #: src/frontends/qt/GuiSymbols.cpp:346
 msgid "Cancel"
 msgstr "Abbrechen"
@@ -31237,8 +31237,8 @@ msgstr "Erweiterte Suche läuft (drücken Sie ESC, um abzubrechen) ..."
 msgid "Advanced search cancelled by user"
 msgstr "Erweiterte Suche durch den Benutzer abgebrochen"
 
-#: src/frontends/qt/FindAndReplace.cpp:380 src/lyxfind.cpp:350
-#: src/lyxfind.cpp:693 src/lyxfind.cpp:721
+#: src/frontends/qt/FindAndReplace.cpp:380 src/lyxfind.cpp:357
+#: src/lyxfind.cpp:700 src/lyxfind.cpp:728
 msgid "Wrap search?"
 msgstr "Von vorne suchen?"
 
@@ -31391,89 +31391,89 @@ msgstr "Python-Aufruf: %1$s"
 msgid "About LyX"
 msgstr "Über LyX"
 
-#: src/frontends/qt/GuiApplication.cpp:736
+#: src/frontends/qt/GuiApplication.cpp:750
 msgid "About %1"
 msgstr "Über %1"
 
-#: src/frontends/qt/GuiApplication.cpp:737 src/frontends/qt/GuiPrefs.cpp:3528
+#: src/frontends/qt/GuiApplication.cpp:751 src/frontends/qt/GuiPrefs.cpp:3528
 msgid "Preferences"
 msgstr "Einstellungen"
 
-#: src/frontends/qt/GuiApplication.cpp:738
+#: src/frontends/qt/GuiApplication.cpp:752
 msgid "Reconfigure"
 msgstr "Neu konfigurieren"
 
-#: src/frontends/qt/GuiApplication.cpp:739
+#: src/frontends/qt/GuiApplication.cpp:753
 msgid "Restore Defaults"
 msgstr "Voreinstellungen"
 
-#: src/frontends/qt/GuiApplication.cpp:740
+#: src/frontends/qt/GuiApplication.cpp:754
 msgid "Quit %1"
 msgstr "%1 beenden"
 
-#: src/frontends/qt/GuiApplication.cpp:741 src/frontends/qt/GuiInclude.cpp:318
+#: src/frontends/qt/GuiApplication.cpp:755 src/frontends/qt/GuiInclude.cpp:318
 #: src/frontends/qt/GuiInclude.cpp:328 src/frontends/qt/GuiInclude.cpp:333
 msgid "&OK"
 msgstr "&OK"
 
-#: src/frontends/qt/GuiApplication.cpp:743
+#: src/frontends/qt/GuiApplication.cpp:757
 msgid "Apply"
 msgstr "Anwenden"
 
-#: src/frontends/qt/GuiApplication.cpp:744
+#: src/frontends/qt/GuiApplication.cpp:758
 msgid "Reset"
 msgstr "Zurücksetzen"
 
-#: src/frontends/qt/GuiApplication.cpp:745
+#: src/frontends/qt/GuiApplication.cpp:759
 msgid "Open"
 msgstr "Öffnen"
 
-#: src/frontends/qt/GuiApplication.cpp:1270
+#: src/frontends/qt/GuiApplication.cpp:1284
 msgid "Nothing to do"
 msgstr "Nichts zu tun"
 
-#: src/frontends/qt/GuiApplication.cpp:1276
+#: src/frontends/qt/GuiApplication.cpp:1290
 msgid "Unknown action"
 msgstr "Unbekannte Aktion"
 
-#: src/frontends/qt/GuiApplication.cpp:1320
+#: src/frontends/qt/GuiApplication.cpp:1334
 msgid "Command not handled"
 msgstr "Befehl wurde nicht ausgeführt"
 
-#: src/frontends/qt/GuiApplication.cpp:1326
+#: src/frontends/qt/GuiApplication.cpp:1340
 msgid "Command disabled"
 msgstr "Befehl ist deaktiviert"
 
-#: src/frontends/qt/GuiApplication.cpp:1434
+#: src/frontends/qt/GuiApplication.cpp:1448
 #, c-format
 msgid "Bad debug value `%1$s'."
 msgstr "Falscher Debug-Wert ,%1$s'."
 
-#: src/frontends/qt/GuiApplication.cpp:1463 src/frontends/qt/GuiView.cpp:2214
+#: src/frontends/qt/GuiApplication.cpp:1477 src/frontends/qt/GuiView.cpp:2214
 msgid "Command not allowed without a buffer open"
 msgstr "Dieser Befehl ist nur bei geöffnetem Dokument möglich"
 
-#: src/frontends/qt/GuiApplication.cpp:1470
+#: src/frontends/qt/GuiApplication.cpp:1484
 msgid "the <LFUN-COMMAND> argument of buffer-forall is not valid"
 msgstr "Das <LFUN-COMMAND>-Argument des Befehls 'buffer-forall' ist ungültig."
 
-#: src/frontends/qt/GuiApplication.cpp:1547
+#: src/frontends/qt/GuiApplication.cpp:1561
 msgid "Wrong focus!"
 msgstr "Fokusfehler!"
 
-#: src/frontends/qt/GuiApplication.cpp:1681
+#: src/frontends/qt/GuiApplication.cpp:1695
 msgid "Running configure..."
 msgstr "Neukonfiguration wird durchgeführt..."
 
-#: src/frontends/qt/GuiApplication.cpp:1691
+#: src/frontends/qt/GuiApplication.cpp:1705
 msgid "Reloading configuration..."
 msgstr "Konfiguration wird neu geladen..."
 
-#: src/frontends/qt/GuiApplication.cpp:1701
+#: src/frontends/qt/GuiApplication.cpp:1715
 msgid "System reconfiguration failed"
 msgstr "Neukonfiguration des Systems fehlgeschlagen"
 
-#: src/frontends/qt/GuiApplication.cpp:1702
+#: src/frontends/qt/GuiApplication.cpp:1716
 msgid ""
 "The system reconfiguration has failed.\n"
 "Default textclass is used but LyX may\n"
@@ -31485,11 +31485,11 @@ msgstr ""
 "der Lage, korrekt zu arbeiten.\n"
 "Bitte rekonfigurieren Sie nochmals, wenn nötig."
 
-#: src/frontends/qt/GuiApplication.cpp:1707
+#: src/frontends/qt/GuiApplication.cpp:1721
 msgid "System reconfigured"
 msgstr "Das System wurde neu konfiguriert"
 
-#: src/frontends/qt/GuiApplication.cpp:1708
+#: src/frontends/qt/GuiApplication.cpp:1722
 msgid ""
 "The system has been reconfigured.\n"
 "You need to restart LyX to make use of any\n"
@@ -31499,59 +31499,59 @@ msgstr ""
 "Sie müssen LyX neu starten, um die aktualisierten\n"
 "Spezifikationen für die Dokumentklassen zu nutzen."
 
-#: src/frontends/qt/GuiApplication.cpp:1789
+#: src/frontends/qt/GuiApplication.cpp:1803
 msgid "Exiting."
 msgstr "LyX wird beendet."
 
-#: src/frontends/qt/GuiApplication.cpp:1885
+#: src/frontends/qt/GuiApplication.cpp:1899
 #, c-format
 msgid "Opening help file %1$s..."
 msgstr "Hilfe-Datei %1$s wird geöffnet..."
 
-#: src/frontends/qt/GuiApplication.cpp:1905
+#: src/frontends/qt/GuiApplication.cpp:1919
 msgid "Wrong argument. Must be 'examples' or 'templates'."
 msgstr "Falsches Argument: muss 'examples' oder 'templates' sein."
 
-#: src/frontends/qt/GuiApplication.cpp:1919
+#: src/frontends/qt/GuiApplication.cpp:1933
 msgid "Syntax: set-color <lyx_name> <x11_name> <x11_darkname>"
 msgstr "Syntax: set-color <lyx_name> <x11_name> <x11_darkname>"
 
-#: src/frontends/qt/GuiApplication.cpp:1939
+#: src/frontends/qt/GuiApplication.cpp:1953
 #, c-format
 msgid "Set-color \"%1$s\" failed - color is undefined or may not be redefined"
 msgstr ""
 "Set-color \"%1$s\" ist fehlgeschlagen -- die Farbe ist nicht definiert oder "
 "darf nicht umdefiniert werden."
 
-#: src/frontends/qt/GuiApplication.cpp:2044
+#: src/frontends/qt/GuiApplication.cpp:2058
 #, c-format
 msgid "Cannot iterate more than %1$d times"
 msgstr "Mehr als %1$d Wiederholungen sind nicht möglich."
 
-#: src/frontends/qt/GuiApplication.cpp:2144
+#: src/frontends/qt/GuiApplication.cpp:2158
 #, c-format
 msgid "Applied \"%1$s\" to %2$d buffer(s)"
 msgstr "Der Befehl \"%1$s\" wurde auf %2$d Dateien (Pufferspeicher) angewandt"
 
-#: src/frontends/qt/GuiApplication.cpp:2230
+#: src/frontends/qt/GuiApplication.cpp:2244
 #, c-format
 msgid "Document defaults saved in %1$s"
 msgstr "Dokument-Standardeinstellungen gespeichert in %1$s"
 
-#: src/frontends/qt/GuiApplication.cpp:2234
+#: src/frontends/qt/GuiApplication.cpp:2248
 msgid "Unable to save document defaults"
 msgstr "Die Dokument-Standardeinstellungen können nicht gespeichert werden"
 
-#: src/frontends/qt/GuiApplication.cpp:2474
-#: src/frontends/qt/GuiApplication.cpp:2489
+#: src/frontends/qt/GuiApplication.cpp:2488
+#: src/frontends/qt/GuiApplication.cpp:2503
 msgid "Unknown function."
 msgstr "Unbekannte Funktion."
 
-#: src/frontends/qt/GuiApplication.cpp:3024
+#: src/frontends/qt/GuiApplication.cpp:3038
 msgid "The current document was closed."
 msgstr "Das aktuelle Dokument wurde geschlossen."
 
-#: src/frontends/qt/GuiApplication.cpp:3034
+#: src/frontends/qt/GuiApplication.cpp:3048
 msgid ""
 "LyX has caught an exception, it will now attempt to save all unsaved "
 "documents and exit.\n"
@@ -31563,12 +31563,12 @@ msgstr ""
 "\n"
 "Exception: "
 
-#: src/frontends/qt/GuiApplication.cpp:3038
-#: src/frontends/qt/GuiApplication.cpp:3044
+#: src/frontends/qt/GuiApplication.cpp:3052
+#: src/frontends/qt/GuiApplication.cpp:3058
 msgid "Software exception Detected"
 msgstr "Softwareausnahme erkannt"
 
-#: src/frontends/qt/GuiApplication.cpp:3042
+#: src/frontends/qt/GuiApplication.cpp:3056
 msgid ""
 "LyX has caught some really weird exception, it will now attempt to save all "
 "unsaved documents and exit."
@@ -31576,12 +31576,12 @@ msgstr ""
 "LyX hat einen ziemlich seltsamen Fehler entdeckt. Das Programm wird jetzt "
 "versuchen, alle ungespeicherten Dateien zu speichern, und dann beendet."
 
-#: src/frontends/qt/GuiApplication.cpp:3348
-#: src/frontends/qt/GuiApplication.cpp:3360
+#: src/frontends/qt/GuiApplication.cpp:3362
+#: src/frontends/qt/GuiApplication.cpp:3374
 msgid "Could not find UI definition file"
 msgstr "Die Benutzeroberflächen-Definitionsdatei konnte nicht gefunden werden"
 
-#: src/frontends/qt/GuiApplication.cpp:3349
+#: src/frontends/qt/GuiApplication.cpp:3363
 #, c-format
 msgid ""
 "Error while reading the included file\n"
@@ -31592,13 +31592,13 @@ msgstr ""
 "%1$s.\n"
 "Bitte überprüfen Sie Ihre Installation."
 
-#: src/frontends/qt/GuiApplication.cpp:3355
+#: src/frontends/qt/GuiApplication.cpp:3369
 msgid "Could not find default UI file"
 msgstr ""
 "Die Standard-Benutzeroberflächen-Definitionsdatei konnte nicht gefunden "
 "werden"
 
-#: src/frontends/qt/GuiApplication.cpp:3356
+#: src/frontends/qt/GuiApplication.cpp:3370
 msgid ""
 "LyX could not find the default UI file!\n"
 "Please check your installation."
@@ -31607,7 +31607,7 @@ msgstr ""
 "für die Benutzeroberfläche!\n"
 "Bitte überprüfen Sie Ihre Installation."
 
-#: src/frontends/qt/GuiApplication.cpp:3361
+#: src/frontends/qt/GuiApplication.cpp:3375
 #, c-format
 msgid ""
 "Error while reading the configuration file\n"
@@ -33999,7 +33999,7 @@ msgstr "&Gehe zurück"
 msgid "Jump back to the original cursor location"
 msgstr "Springe zur ursprünglichen Cursor-Platzierung zurück"
 
-#: src/frontends/qt/GuiRef.cpp:467 src/frontends/qt/GuiRef.cpp:487
+#: src/frontends/qt/GuiRef.cpp:471 src/frontends/qt/GuiRef.cpp:491
 msgid "<No prefix>"
 msgstr "<Ohne Präfix>"
 
@@ -35448,11 +35448,11 @@ msgstr "%1$s aktualisieren"
 msgid "View %1$s"
 msgstr "%1$s ansehen"
 
-#: src/frontends/qt/Validator.cpp:214
+#: src/frontends/qt/Validator.cpp:218
 msgid "space"
 msgstr "Leerzeichen"
 
-#: src/frontends/qt/Validator.cpp:242
+#: src/frontends/qt/Validator.cpp:246
 msgid ""
 "LyX does not provide LaTeX support for file names containing any of these "
 "characters:\n"
@@ -35460,48 +35460,48 @@ msgstr ""
 "LyX bietet keine LaTeX-Unterstützung für Dateinamen, die eines der folgenden "
 "Zeichen enthalten:\n"
 
-#: src/frontends/qt/qt_helpers.cpp:280
+#: src/frontends/qt/qt_helpers.cpp:291
 msgid "Invalid URL"
 msgstr "Ungültige URL"
 
-#: src/frontends/qt/qt_helpers.cpp:281
+#: src/frontends/qt/qt_helpers.cpp:292
 #, c-format
 msgid "The URL `%1$s' could not be resolved."
 msgstr "Die URL ,%1$s` konnte nicht aufgelöst werden."
 
-#: src/frontends/qt/qt_helpers.cpp:287
+#: src/frontends/qt/qt_helpers.cpp:298
 msgid "URL could not be accessed"
 msgstr "URL nicht zugänglich."
 
-#: src/frontends/qt/qt_helpers.cpp:288
+#: src/frontends/qt/qt_helpers.cpp:299
 #, c-format
 msgid "The URL `%1$s' could not be opened although it exists!"
 msgstr "Die URL ,%1$s` konnte nicht geöffnet werden, obwohl sie existiert!"
 
-#: src/frontends/qt/qt_helpers.cpp:312
+#: src/frontends/qt/qt_helpers.cpp:323
 msgid "The lyxpaperview script failed."
 msgstr "Das Skript lyxpaperview ist fehlgeschlagen."
 
-#: src/frontends/qt/qt_helpers.cpp:315
+#: src/frontends/qt/qt_helpers.cpp:326
 #, c-format
 msgid "No file was found using the pattern `%1$s'."
 msgstr "Mit dem Suchmuster ,%1$s` konnte keine Datei gefunden werden."
 
-#: src/frontends/qt/qt_helpers.cpp:321
+#: src/frontends/qt/qt_helpers.cpp:332
 #, c-format
 msgid "The target `%1$s' could not be resolved."
 msgstr "Das Verweisziel ,%1$s` konnte nicht aufgelöst werden."
 
-#: src/frontends/qt/qt_helpers.cpp:357
+#: src/frontends/qt/qt_helpers.cpp:368
 msgid "Could not update TeX information"
 msgstr "Die TeX-Informationen konnten nicht aktualisiert werden"
 
-#: src/frontends/qt/qt_helpers.cpp:358
+#: src/frontends/qt/qt_helpers.cpp:369
 #, c-format
 msgid "The script `%1$s' failed."
 msgstr "Das Skript ,%1$s` ist fehlgeschlagen."
 
-#: src/frontends/qt/qt_helpers.cpp:606
+#: src/frontends/qt/qt_helpers.cpp:617
 msgid "All Files "
 msgstr "Alle Dateien "
 
@@ -35900,15 +35900,15 @@ msgstr "FEHLER: Unbekannter Gleitobjekt-Typ: %1$s"
 msgid "float"
 msgstr "Gleitobjekt"
 
-#: src/insets/InsetFloat.cpp:911
+#: src/insets/InsetFloat.cpp:914
 msgid "Float: "
 msgstr "Gleitobjekt: "
 
-#: src/insets/InsetFloat.cpp:914
+#: src/insets/InsetFloat.cpp:917
 msgid "Subfloat: "
 msgstr "Untergleitobjekt: "
 
-#: src/insets/InsetFloat.cpp:924
+#: src/insets/InsetFloat.cpp:927
 msgid " (sideways)"
 msgstr " (seitwärts)"
 
@@ -35925,7 +35925,7 @@ msgstr "LyX kann keine Liste mit %1$s erzeugen"
 msgid "footnote"
 msgstr "Fußnote"
 
-#: src/insets/InsetGraphics.cpp:562 src/insets/InsetInclude.cpp:787
+#: src/insets/InsetGraphics.cpp:563 src/insets/InsetInclude.cpp:787
 #, c-format
 msgid ""
 "Could not copy the file\n"
@@ -35936,12 +35936,25 @@ msgstr ""
 "%1$s\n"
 "konnte nicht in das temporäre Verzeichnis kopiert werden."
 
-#: src/insets/InsetGraphics.cpp:778 src/insets/InsetGraphics.cpp:1015
+#: src/insets/InsetGraphics.cpp:779 src/insets/InsetGraphics.cpp:1029
 #, c-format
 msgid "No conversion of %1$s is needed after all"
 msgstr "Es ist keine Konvertierung von %1$s notwendig"
 
-#: src/insets/InsetGraphics.cpp:906
+#: src/insets/InsetGraphics.cpp:832
+msgid "Graphic not specified. Falling back to `draft' mode."
+msgstr "Keine Grafikdatei angegeben. Verwende 'Draft'-Modus."
+
+#: src/insets/InsetGraphics.cpp:833
+#, c-format
+msgid "Graphic `%1$s' was not found. Falling back to `draft' mode."
+msgstr "Die Grafikdatei `%1$s' wurde nicht gefunden. Verwende 'Draft'-Modus."
+
+#: src/insets/InsetGraphics.cpp:836
+msgid "Graphic not found!"
+msgstr "Grafik nicht gefunden!"
+
+#: src/insets/InsetGraphics.cpp:920
 #, c-format
 msgid ""
 "The following characters in one of the graphic paths are\n"
@@ -35953,7 +35966,7 @@ msgstr ""
 "%1$s. \n"
 "Sie müssen entweder die Kodierung oder den Pfad anpassen."
 
-#: src/insets/InsetGraphics.cpp:931
+#: src/insets/InsetGraphics.cpp:945
 #, c-format
 msgid "Graphics file: %1$s"
 msgstr "Grafikdatei: %1$s"
@@ -36150,10 +36163,6 @@ msgstr ""
 "Betroffene Datei:\n"
 "%1$s"
 
-#: src/insets/InsetInclude.cpp:1373
-msgid "MISSING: "
-msgstr "NICHT VORHANDEN:"
-
 #: src/insets/InsetIndex.cpp:169
 msgid "Index sorting failed"
 msgstr "Indexsortierung fehlgeschlagen"
@@ -36187,276 +36196,276 @@ msgstr "Alle Indexe"
 msgid "subindex"
 msgstr "Unterindex"
 
-#: src/insets/InsetInfo.cpp:194
+#: src/insets/InsetInfo.cpp:195
 msgid "No long date format (language unknown)!"
 msgstr "Kein langes Datumsformat (Sprache unbekannt)!"
 
-#: src/insets/InsetInfo.cpp:197
+#: src/insets/InsetInfo.cpp:198
 msgid "No medium date format (language unknown)!"
 msgstr "Kein mittleres Datumsformat (Sprache unbekannt)!"
 
-#: src/insets/InsetInfo.cpp:200
+#: src/insets/InsetInfo.cpp:201
 msgid "No short date format (language unknown)!"
 msgstr "Kein kurzes Datumsformat (Sprache unbekannt)!"
 
-#: src/insets/InsetInfo.cpp:229
+#: src/insets/InsetInfo.cpp:230
 msgid "Please select a valid type!"
 msgstr "Bitte wählen Sie einen gültigen Typ!"
 
-#: src/insets/InsetInfo.cpp:269
+#: src/insets/InsetInfo.cpp:270
 msgid "File name (with extension)"
 msgstr "Dateiname (mit Endung)"
 
-#: src/insets/InsetInfo.cpp:270
+#: src/insets/InsetInfo.cpp:271
 msgid "File name (without extension)"
 msgstr "Dateiname (ohne Endung)"
 
-#: src/insets/InsetInfo.cpp:271
+#: src/insets/InsetInfo.cpp:272
 msgid "File path"
 msgstr "Dateipfad"
 
-#: src/insets/InsetInfo.cpp:272
+#: src/insets/InsetInfo.cpp:273
 msgid "Used text class"
 msgstr "Verwendete Textklasse"
 
-#: src/insets/InsetInfo.cpp:277 src/insets/InsetInfo.cpp:1116
+#: src/insets/InsetInfo.cpp:278 src/insets/InsetInfo.cpp:1145
 msgid "No version control!"
 msgstr "Keine Versionskontrolle!"
 
-#: src/insets/InsetInfo.cpp:280
+#: src/insets/InsetInfo.cpp:281
 msgid "Revision[[Version Control]]"
 msgstr "Revision"
 
-#: src/insets/InsetInfo.cpp:281
+#: src/insets/InsetInfo.cpp:282
 msgid "Abbreviated revision[[Version Control]]"
 msgstr "Abgekürzte Revision"
 
-#: src/insets/InsetInfo.cpp:282
+#: src/insets/InsetInfo.cpp:283
 msgid "Tree revision"
 msgstr "Baumrevision"
 
-#: src/insets/InsetInfo.cpp:285
+#: src/insets/InsetInfo.cpp:286
 msgid "Time[[of day]]"
 msgstr "Uhrzeit"
 
-#: src/insets/InsetInfo.cpp:290
+#: src/insets/InsetInfo.cpp:291
 msgid "LyX version"
 msgstr "LyX-Version"
 
-#: src/insets/InsetInfo.cpp:291
+#: src/insets/InsetInfo.cpp:292
 msgid "LyX layout format"
 msgstr "LyX-Layoutformat"
 
-#: src/insets/InsetInfo.cpp:494
+#: src/insets/InsetInfo.cpp:495
 msgid "Invalid information inset"
 msgstr "Ungültige Informationseinfügung"
 
-#: src/insets/InsetInfo.cpp:497
+#: src/insets/InsetInfo.cpp:498
 #, c-format
 msgid "The keybard shortcut for the function '%1$s'"
 msgstr "Das Tastenkürzel für die LyX-Funktion '%1$s'"
 
-#: src/insets/InsetInfo.cpp:501
+#: src/insets/InsetInfo.cpp:502
 #, c-format
 msgid "The keybard shortcuts for the function '%1$s'"
 msgstr "Die Tastenkürzel für die LyX-Funktion '%1$s'"
 
-#: src/insets/InsetInfo.cpp:505
+#: src/insets/InsetInfo.cpp:506
 #, c-format
 msgid "The menu location for the function '%1$s'"
 msgstr "Der Menüeintrag für die LyX-Funktion '%1$s'"
 
-#: src/insets/InsetInfo.cpp:509
+#: src/insets/InsetInfo.cpp:510
 #, c-format
 msgid "The localization for the string '%1$s'"
 msgstr "Die Lokalisierung für '%1$s'"
 
-#: src/insets/InsetInfo.cpp:513
+#: src/insets/InsetInfo.cpp:514
 #, c-format
 msgid "The toolbar icon for the function '%1$s'"
 msgstr "Das Werkzeugleistensymbol für die LyX-Funktion '%1$s'"
 
-#: src/insets/InsetInfo.cpp:517
+#: src/insets/InsetInfo.cpp:518
 #, c-format
 msgid "The preference setting for the preference key '%1$s'"
 msgstr "Die LyX-Einstellung für den Einstellungsschlüssel '%1$s'"
 
-#: src/insets/InsetInfo.cpp:521
+#: src/insets/InsetInfo.cpp:522
 #, c-format
 msgid "Availability of the LaTeX package '%1$s'"
 msgstr "Verfügbarkeit des LaTeX-Pakets '%1$s'"
 
-#: src/insets/InsetInfo.cpp:525
+#: src/insets/InsetInfo.cpp:526
 #, c-format
 msgid "Availability of the LaTeX class '%1$s'"
 msgstr "Verfügbarkeit der LaTeX-Klasse '%1$s'"
 
-#: src/insets/InsetInfo.cpp:530
+#: src/insets/InsetInfo.cpp:531
 msgid "The name of this file (incl. extension)"
 msgstr "Der Name dieser Datei (inkl. Endung)"
 
-#: src/insets/InsetInfo.cpp:532
+#: src/insets/InsetInfo.cpp:533
 msgid "The name of this file (without extension)"
 msgstr "Der Name dieser Datei (ohne Endung)"
 
-#: src/insets/InsetInfo.cpp:534
+#: src/insets/InsetInfo.cpp:535
 msgid "The path where this file is saved"
 msgstr "Der Pfad, an dem diese Datei gespeichert ist"
 
-#: src/insets/InsetInfo.cpp:536
+#: src/insets/InsetInfo.cpp:537
 msgid "The class this document uses"
 msgstr "Die Klasse, die dieses Dokument verwendet"
 
-#: src/insets/InsetInfo.cpp:540
+#: src/insets/InsetInfo.cpp:541
 msgid "Version control revision"
 msgstr "Versionskontrolle: Revision"
 
-#: src/insets/InsetInfo.cpp:542
+#: src/insets/InsetInfo.cpp:543
 msgid "Version control abbreviated revision"
 msgstr "Versionskontrolle: Abgekürzte Revision"
 
-#: src/insets/InsetInfo.cpp:544
+#: src/insets/InsetInfo.cpp:545
 msgid "Version control tree revision"
 msgstr "Versionskontrolle: Tree-Revision"
 
-#: src/insets/InsetInfo.cpp:546
+#: src/insets/InsetInfo.cpp:547
 msgid "Version control author"
 msgstr "Versionskontrolle: Autor"
 
-#: src/insets/InsetInfo.cpp:548
+#: src/insets/InsetInfo.cpp:549
 msgid "Version control date"
 msgstr "Versionskontrolle: Datum"
 
-#: src/insets/InsetInfo.cpp:550
+#: src/insets/InsetInfo.cpp:551
 msgid "Version control time"
 msgstr "Versionskontrolle: Uhrzeit"
 
-#: src/insets/InsetInfo.cpp:554
+#: src/insets/InsetInfo.cpp:555
 msgid "The current LyX version"
 msgstr "Die aktuelle LyX-Version"
 
-#: src/insets/InsetInfo.cpp:556
+#: src/insets/InsetInfo.cpp:557
 msgid "The current LyX layout format"
 msgstr "Das aktuelle Format der LyX-Layoutdateien"
 
-#: src/insets/InsetInfo.cpp:559
+#: src/insets/InsetInfo.cpp:560
 msgid "The current date"
 msgstr "Das aktuelle Datum"
 
-#: src/insets/InsetInfo.cpp:562
+#: src/insets/InsetInfo.cpp:563
 msgid "The date of last save"
 msgstr "Das Datum der letzten gespeicherten Änderung"
 
-#: src/insets/InsetInfo.cpp:565
+#: src/insets/InsetInfo.cpp:566
 msgid "A static date"
 msgstr "Ein festes Datum"
 
-#: src/insets/InsetInfo.cpp:568
+#: src/insets/InsetInfo.cpp:569
 msgid "The current time"
 msgstr "Die aktuelle Uhrzeit"
 
-#: src/insets/InsetInfo.cpp:571
+#: src/insets/InsetInfo.cpp:572
 msgid "The time of last save"
 msgstr "Die Uhrzeit der letzten gespeicherten Änderung"
 
-#: src/insets/InsetInfo.cpp:574
+#: src/insets/InsetInfo.cpp:575
 msgid "A static time"
 msgstr "Eine feste Zeitangabe"
 
-#: src/insets/InsetInfo.cpp:601
+#: src/insets/InsetInfo.cpp:602
 msgid "Missing \\end_inset at this point."
 msgstr "Fehlendes \\end_inset an dieser Stelle."
 
-#: src/insets/InsetInfo.cpp:795
+#: src/insets/InsetInfo.cpp:824
 msgid "Unknown Info!"
 msgstr "Unbekannte Info-Einfügung!"
 
-#: src/insets/InsetInfo.cpp:804 src/insets/InsetInfo.cpp:991
+#: src/insets/InsetInfo.cpp:833 src/insets/InsetInfo.cpp:1020
 #, c-format
 msgid "Unknown action %1$s"
 msgstr "Aktion '%1$s' unbekannt"
 
-#: src/insets/InsetInfo.cpp:810 src/insets/InsetInfo.cpp:920
-#: src/insets/InsetInfo.cpp:929 src/insets/InsetInfo.cpp:937
+#: src/insets/InsetInfo.cpp:839 src/insets/InsetInfo.cpp:949
+#: src/insets/InsetInfo.cpp:958 src/insets/InsetInfo.cpp:966
 msgid "undefined"
 msgstr "undefiniert"
 
-#: src/insets/InsetInfo.cpp:833 src/insets/InsetInfo.cpp:883
+#: src/insets/InsetInfo.cpp:862 src/insets/InsetInfo.cpp:912
 msgid "Return[[Key]]"
 msgstr "Return"
 
-#: src/insets/InsetInfo.cpp:838
+#: src/insets/InsetInfo.cpp:867
 msgid "Tab[[Key]]"
 msgstr "Tab"
 
-#: src/insets/InsetInfo.cpp:843
+#: src/insets/InsetInfo.cpp:872
 msgid "PgUp"
 msgstr "Bild hoch"
 
-#: src/insets/InsetInfo.cpp:848
+#: src/insets/InsetInfo.cpp:877
 msgid "PgDown"
 msgstr "Bild runter"
 
-#: src/insets/InsetInfo.cpp:853
+#: src/insets/InsetInfo.cpp:882
 msgid "Backtab"
 msgstr "Rücktab"
 
-#: src/insets/InsetInfo.cpp:858
+#: src/insets/InsetInfo.cpp:887
 msgid "Tab"
 msgstr "Tab"
 
-#: src/insets/InsetInfo.cpp:868
+#: src/insets/InsetInfo.cpp:897
 msgid "CapsLock"
 msgstr "Feststelltaste"
 
-#: src/insets/InsetInfo.cpp:873
+#: src/insets/InsetInfo.cpp:902
 msgid "Control[[Key]]"
 msgstr "Control"
 
-#: src/insets/InsetInfo.cpp:878
+#: src/insets/InsetInfo.cpp:907
 msgid "Command[[Key]]"
 msgstr "Command"
 
-#: src/insets/InsetInfo.cpp:888
+#: src/insets/InsetInfo.cpp:917
 msgid "Option[[Key]]"
 msgstr "Option"
 
-#: src/insets/InsetInfo.cpp:893
+#: src/insets/InsetInfo.cpp:922
 msgid "Delete[[Key]]"
 msgstr "Rücktaste"
 
-#: src/insets/InsetInfo.cpp:898
+#: src/insets/InsetInfo.cpp:927
 msgid "Fn+Del"
 msgstr "Fn+Rücktaste"
 
-#: src/insets/InsetInfo.cpp:903
+#: src/insets/InsetInfo.cpp:932
 msgid "Esc"
 msgstr "Esc"
 
-#: src/insets/InsetInfo.cpp:947
+#: src/insets/InsetInfo.cpp:976
 msgid "not set"
 msgstr "nicht eingestellt"
 
-#: src/insets/InsetInfo.cpp:959 src/insets/InsetInfo.cpp:976
+#: src/insets/InsetInfo.cpp:988 src/insets/InsetInfo.cpp:1005
 msgid "yes"
 msgstr "ja"
 
-#: src/insets/InsetInfo.cpp:962 src/insets/InsetInfo.cpp:979
+#: src/insets/InsetInfo.cpp:991 src/insets/InsetInfo.cpp:1008
 msgid "no"
 msgstr "nein"
 
-#: src/insets/InsetInfo.cpp:1002
+#: src/insets/InsetInfo.cpp:1031
 #, c-format
 msgid "Can't determine menu entry for action %1$s in batch mode"
 msgstr ""
 "Der Menüeintrag für den Befehl %1$s kann im Batch-Mode nicht bestimmt werden"
 
-#: src/insets/InsetInfo.cpp:1010
+#: src/insets/InsetInfo.cpp:1039
 #, c-format
 msgid "No menu entry for action %1$s"
 msgstr "Kein Menüeintrag für die Aktion %1$s"
 
-#: src/insets/InsetInfo.cpp:1135
+#: src/insets/InsetInfo.cpp:1164
 #, c-format
 msgid "%1$s[[vcs data]] unknown"
 msgstr "%1$s unbekannt"
@@ -36819,7 +36828,7 @@ msgstr "Beschreibung: "
 msgid "Sorting: "
 msgstr "Sortierung: "
 
-#: src/insets/InsetNote.cpp:252
+#: src/insets/InsetNote.cpp:269
 msgid "note"
 msgstr "Notiz"
 
@@ -36867,51 +36876,51 @@ msgstr "%1$sText"
 msgid "text%1$s"
 msgstr "Text%1$s"
 
-#: src/insets/InsetRef.cpp:597
+#: src/insets/InsetRef.cpp:599
 msgid "Ref"
 msgstr "Querverweis"
 
-#: src/insets/InsetRef.cpp:598
+#: src/insets/InsetRef.cpp:600
 msgid "EqRef"
 msgstr "(Querverweis)"
 
-#: src/insets/InsetRef.cpp:599 src/mathed/InsetMathRef.cpp:373
+#: src/insets/InsetRef.cpp:601 src/mathed/InsetMathRef.cpp:373
 msgid "Page Number"
 msgstr "Seitennummer"
 
-#: src/insets/InsetRef.cpp:600 src/mathed/InsetMathRef.cpp:374
+#: src/insets/InsetRef.cpp:602 src/mathed/InsetMathRef.cpp:374
 msgid "Textual Page Number"
 msgstr "Seitennummer in Textform"
 
-#: src/insets/InsetRef.cpp:600
+#: src/insets/InsetRef.cpp:602
 msgid "TextPage"
 msgstr "TextSeite"
 
-#: src/insets/InsetRef.cpp:601 src/mathed/InsetMathRef.cpp:375
+#: src/insets/InsetRef.cpp:603 src/mathed/InsetMathRef.cpp:375
 msgid "Standard+Textual Page"
 msgstr "Standard+Seite in Textform"
 
-#: src/insets/InsetRef.cpp:601
+#: src/insets/InsetRef.cpp:603
 msgid "Ref+Text"
 msgstr "Querverweis+Text"
 
-#: src/insets/InsetRef.cpp:602 src/mathed/InsetMathRef.cpp:377
+#: src/insets/InsetRef.cpp:604 src/mathed/InsetMathRef.cpp:377
 msgid "Reference to Name"
 msgstr "Referenz auf Namen"
 
-#: src/insets/InsetRef.cpp:602
+#: src/insets/InsetRef.cpp:604
 msgid "NameRef"
 msgstr "Namen-Querverweis"
 
-#: src/insets/InsetRef.cpp:603
+#: src/insets/InsetRef.cpp:605
 msgid "Formatted"
 msgstr "Formatiert"
 
-#: src/insets/InsetRef.cpp:603
+#: src/insets/InsetRef.cpp:605
 msgid "Format"
 msgstr "Format"
 
-#: src/insets/InsetRef.cpp:604 src/mathed/InsetMathRef.cpp:378
+#: src/insets/InsetRef.cpp:606 src/mathed/InsetMathRef.cpp:378
 msgid "Label Only"
 msgstr "Nur Marke"
 
@@ -36985,11 +36994,11 @@ msgstr "Geschützter horizontaler Abstand (%1$s)"
 msgid "Unknown TOC type"
 msgstr "Unbekannter Inhaltsverzeichnis-Typ"
 
-#: src/insets/InsetTabular.cpp:464
+#: src/insets/InsetTabular.cpp:467
 msgid "Change tracking data incomplete"
 msgstr "Unvollständige Daten für Änderungsmarkierung"
 
-#: src/insets/InsetTabular.cpp:465
+#: src/insets/InsetTabular.cpp:468
 msgid ""
 "Change tracking information for tabular row/column is incomplete. I will "
 "ignore this."
@@ -36997,15 +37006,15 @@ msgstr ""
 "Die Informationen für die Änderungen von Tabellenzeilen- oder -spalten sind "
 "unvollständig. Sie werden ignoriert."
 
-#: src/insets/InsetTabular.cpp:5607
+#: src/insets/InsetTabular.cpp:5636
 msgid "Column movement not supported with multi-columns."
 msgstr "Verschieben von Spalten mit Mehrfachspalten leider nicht möglich."
 
-#: src/insets/InsetTabular.cpp:5625
+#: src/insets/InsetTabular.cpp:5654
 msgid "Row movement not supported with multi-rows."
 msgstr "Verschieben von Zeilen mit Mehrfachzeilen leider nicht möglich."
 
-#: src/insets/InsetTabular.cpp:6127
+#: src/insets/InsetTabular.cpp:6175
 msgid "Selection size should match clipboard content."
 msgstr ""
 "Die Anzahl der ausgewählten Zellen stimmt nicht mit dem Inhalt der "
@@ -37013,15 +37022,15 @@ msgstr ""
 
 # , c-format
 # , c-format
-#: src/insets/InsetText.cpp:1380
+#: src/insets/InsetText.cpp:1381
 msgid "[contains tracked changes]"
 msgstr "[enthält verfolgte Änderungen]"
 
-#: src/insets/InsetWrap.cpp:68
+#: src/insets/InsetWrap.cpp:64
 msgid "Wrap: "
 msgstr "Umflossenes Gleitobjekt: "
 
-#: src/insets/InsetWrap.cpp:201
+#: src/insets/InsetWrap.cpp:197
 msgid "wrap"
 msgstr "Umflossenes Gleitobjekt"
 
@@ -37081,15 +37090,15 @@ msgstr "Vorschau bereit"
 msgid "Preview failed"
 msgstr "Die Vorschau ist fehlgeschlagen"
 
-#: src/lyxfind.cpp:268
+#: src/lyxfind.cpp:275
 msgid "Search error"
 msgstr "Fehler beim Suchen"
 
-#: src/lyxfind.cpp:268
+#: src/lyxfind.cpp:275
 msgid "Search string is empty"
 msgstr "Die Such-Zeichenkette ist leer"
 
-#: src/lyxfind.cpp:300
+#: src/lyxfind.cpp:307
 msgid ""
 "The search string matches the selection, and search is limited to "
 "selection.\n"
@@ -37099,11 +37108,11 @@ msgstr ""
 "Suche ist auf die Auswahl begrenzt.\n"
 "Außerhalb weitersuchen?"
 
-#: src/lyxfind.cpp:302 src/lyxfind.cpp:329
+#: src/lyxfind.cpp:309 src/lyxfind.cpp:336
 msgid "Search outside selection?"
 msgstr "Außerhalb der Auswahl suchen?"
 
-#: src/lyxfind.cpp:327
+#: src/lyxfind.cpp:334
 msgid ""
 "The search string was not found within the selection.\n"
 "Continue search outside?"
@@ -37111,7 +37120,7 @@ msgstr ""
 "Der gesuchte Ausdruck wurde innerhalb der Auswahl nicht gefunden.\n"
 "Außerhalb weitersuchen?"
 
-#: src/lyxfind.cpp:345 src/lyxfind.cpp:691
+#: src/lyxfind.cpp:352 src/lyxfind.cpp:698
 msgid ""
 "End of file reached while searching forward.\n"
 "Continue searching from the beginning?"
@@ -37119,7 +37128,7 @@ msgstr ""
 "Das Ende des Dokuments wurde bei der Vorwärtssuche erreicht.\n"
 "Suche am Anfang fortsetzen?"
 
-#: src/lyxfind.cpp:348 src/lyxfind.cpp:719
+#: src/lyxfind.cpp:355 src/lyxfind.cpp:726
 msgid ""
 "Beginning of file reached while searching backward.\n"
 "Continue searching from the end?"
@@ -37127,62 +37136,62 @@ msgstr ""
 "Der Anfang des Dokuments wurde bei der Rückwärtssuche erreicht.\n"
 "Suche am Ende fortsetzen?"
 
-#: src/lyxfind.cpp:364
+#: src/lyxfind.cpp:371
 msgid "Search reached end of document, continuing from beginning."
 msgstr "Das Ende des Dokuments wurde erreicht, suche vom Anfang ab weiter."
 
-#: src/lyxfind.cpp:365
+#: src/lyxfind.cpp:372
 msgid "Search reached beginning of document, continuing from end."
 msgstr "Der Anfang des Dokuments wurde erreicht, suche vom Ende ab weiter."
 
-#: src/lyxfind.cpp:664
+#: src/lyxfind.cpp:671
 msgid "String not found in selection."
 msgstr "Der gesuchte Ausdruck wurde in der Auswahl nicht gefunden."
 
-#: src/lyxfind.cpp:666
+#: src/lyxfind.cpp:673
 msgid "String not found."
 msgstr "Die Zeichenkette wurde nicht gefunden."
 
-#: src/lyxfind.cpp:669
+#: src/lyxfind.cpp:676
 msgid "String found."
 msgstr "Zeichenkette gefunden."
 
-#: src/lyxfind.cpp:671
+#: src/lyxfind.cpp:678
 msgid "String has been replaced."
 msgstr "Die Zeichenkette wurde ersetzt."
 
-#: src/lyxfind.cpp:674
+#: src/lyxfind.cpp:681
 #, c-format
 msgid "%1$d strings have been replaced in the selection."
 msgstr "%1$d Zeichenketten wurden in der Auswahl ersetzt."
 
-#: src/lyxfind.cpp:675
+#: src/lyxfind.cpp:682
 #, c-format
 msgid "%1$d strings have been replaced."
 msgstr "%1$d Zeichenketten wurden ersetzt."
 
-#: src/lyxfind.cpp:4508
+#: src/lyxfind.cpp:4683
 msgid "One match has been replaced."
 msgstr "Ein Treffer wurde ersetzt."
 
-#: src/lyxfind.cpp:4511
+#: src/lyxfind.cpp:4686
 msgid "Two matches have been replaced."
 msgstr "Zwei Treffer wurden ersetzt."
 
-#: src/lyxfind.cpp:4514
+#: src/lyxfind.cpp:4689
 #, c-format
 msgid "%1$d matches have been replaced."
 msgstr "%1$d Treffer wurden ersetzt."
 
-#: src/lyxfind.cpp:4520
+#: src/lyxfind.cpp:4695
 msgid "Match not found."
 msgstr "Die Zeichenkette wurde nicht gefunden!"
 
-#: src/lyxfind.cpp:4526
+#: src/lyxfind.cpp:4701
 msgid "Match has been replaced."
 msgstr "Die Zeichenkette wurde ersetzt."
 
-#: src/lyxfind.cpp:4528
+#: src/lyxfind.cpp:4703
 msgid "Match found."
 msgstr "Die Zeichenkette wurde gefunden!"
 
@@ -37303,19 +37312,19 @@ msgstr "Mathe-Makro: \\%1$s"
 msgid "Invalid macro! \\%1$s"
 msgstr "Ungültiges Makro! \\%1$s"
 
-#: src/mathed/InsetMathNest.cpp:1018
+#: src/mathed/InsetMathNest.cpp:1024
 msgid "create new math text environment ($...$)"
 msgstr "Neue Mathe-Textumgebung erzeugen ($...$)"
 
-#: src/mathed/InsetMathNest.cpp:1021
+#: src/mathed/InsetMathNest.cpp:1027
 msgid "entered math text mode (textrm)"
 msgstr "Mathe-Textmodus betreten (textrm)"
 
-#: src/mathed/InsetMathNest.cpp:1043
+#: src/mathed/InsetMathNest.cpp:1049
 msgid "Regular expression editor mode"
 msgstr "Bearbeitungsmodus für reguläre Ausdrücke"
 
-#: src/mathed/InsetMathNest.cpp:1948
+#: src/mathed/InsetMathNest.cpp:1954
 #, c-format
 msgid "Cannot apply %1$s here."
 msgstr "%1$s kann hier nicht angewendet werden."
@@ -37379,11 +37388,11 @@ msgstr ""
 "Das angegebene Dokument %1$s\n"
 "konnte nicht geöffnet werden."
 
-#: src/output_latex.cpp:1658
+#: src/output_latex.cpp:1662
 msgid "Error in latexParagraphs"
 msgstr "Fehler in latexParagraphs"
 
-#: src/output_latex.cpp:1659
+#: src/output_latex.cpp:1663
 #, c-format
 msgid ""
 "You are using at least one layout (%1$s) intended for the title, after using "
@@ -37530,111 +37539,111 @@ msgstr "Lesen der Konfigurationsdateien"
 msgid "Custom keyboard definition"
 msgstr "Eigene Tastaturdefinition"
 
-#: src/support/debug.cpp:50
-msgid "LaTeX generation/execution"
-msgstr "LaTeX-Erzeugung/Ausführung"
+#: src/support/debug.cpp:50 src/support/debug.cpp:51
+msgid "Output source file generation/processing"
+msgstr "Erzeugung/Verarbeitung der Ausgabequelldatei"
 
-#: src/support/debug.cpp:51
+#: src/support/debug.cpp:52
 msgid "Math editor"
 msgstr "Mathe-Editor"
 
-#: src/support/debug.cpp:52
+#: src/support/debug.cpp:53
 msgid "Font handling"
 msgstr "Schrift-Handhabung"
 
-#: src/support/debug.cpp:53
+#: src/support/debug.cpp:54
 msgid "Textclass files reading"
 msgstr "Lesen der Textklassen-Dateien"
 
-#: src/support/debug.cpp:54
+#: src/support/debug.cpp:55
 msgid "Version control"
 msgstr "Versionskontrolle"
 
-#: src/support/debug.cpp:55
+#: src/support/debug.cpp:56
 msgid "External control interface"
 msgstr "Externe Kontroll-Schnittstelle"
 
-#: src/support/debug.cpp:56
+#: src/support/debug.cpp:57
 msgid "Undo/Redo mechanism"
 msgstr "Undo/Redo-Mechanismus"
 
-#: src/support/debug.cpp:57
+#: src/support/debug.cpp:58
 msgid "User commands"
 msgstr "Benutzerbefehle"
 
-#: src/support/debug.cpp:58
+#: src/support/debug.cpp:59
 msgid "The LyX Lexer"
 msgstr "Der LyX-Lexxer"
 
-#: src/support/debug.cpp:59
+#: src/support/debug.cpp:60
 msgid "Dependency information"
 msgstr "Informationen zu Abhängigkeiten"
 
-#: src/support/debug.cpp:60
+#: src/support/debug.cpp:61
 msgid "LyX Insets"
 msgstr "LyX-Einfügungen"
 
-#: src/support/debug.cpp:61
+#: src/support/debug.cpp:62
 msgid "Files used by LyX"
 msgstr "Von LyX verwendete Dateien"
 
-#: src/support/debug.cpp:62
+#: src/support/debug.cpp:63
 msgid "Workarea events"
 msgstr "Ereignisse im Arbeitsbereich"
 
-#: src/support/debug.cpp:63
+#: src/support/debug.cpp:64
 msgid "Clipboard handling"
 msgstr "Zwischenablage"
 
-#: src/support/debug.cpp:64
+#: src/support/debug.cpp:65
 msgid "Graphics conversion and loading"
 msgstr "Laden und Konvertierung einer Grafik"
 
-#: src/support/debug.cpp:65
+#: src/support/debug.cpp:66
 msgid "Change tracking"
 msgstr "Änderungsverfolgung"
 
-#: src/support/debug.cpp:66
+#: src/support/debug.cpp:67
 msgid "External template/inset messages"
 msgstr "Externe Vorlagen/Einfügungs-Meldungen"
 
-#: src/support/debug.cpp:67
+#: src/support/debug.cpp:68
 msgid "RowPainter profiling"
 msgstr "RowPainter-Profiling"
 
-#: src/support/debug.cpp:68
+#: src/support/debug.cpp:69
 msgid "Scrolling debugging"
 msgstr "Fehlersuche mit Scrolling"
 
-#: src/support/debug.cpp:69
+#: src/support/debug.cpp:70
 msgid "Math macros"
 msgstr "Mathe-Makros"
 
-#: src/support/debug.cpp:70
+#: src/support/debug.cpp:71
 msgid "RTL/Bidi"
 msgstr "RTL/Bidi"
 
-#: src/support/debug.cpp:71
+#: src/support/debug.cpp:72
 msgid "Locale/Internationalisation"
 msgstr "Spracheinstellungen/Internationalisierung"
 
-#: src/support/debug.cpp:72
+#: src/support/debug.cpp:73
 msgid "Selection copy/paste mechanism"
 msgstr "Auswahl kopieren/einfügen Mechanismus"
 
-#: src/support/debug.cpp:73
+#: src/support/debug.cpp:74
 msgid "Find and replace mechanism"
 msgstr "Mechanismus für Suchen und Ersetzen"
 
-#: src/support/debug.cpp:74
+#: src/support/debug.cpp:75
 msgid "Developers' general debug messages"
 msgstr "Allgemeine Testmeldungen der Entwickler"
 
-#: src/support/debug.cpp:75 src/support/debug.cpp:76
+#: src/support/debug.cpp:76 src/support/debug.cpp:77
 msgid "All debugging messages"
 msgstr "Alle Testmeldungen"
 
-#: src/support/debug.cpp:183
+#: src/support/debug.cpp:184
 #, c-format
 msgid "Debugging `%1$s' (%2$s)"
 msgstr "Testen von ,%1$s` (%2$s)"
@@ -37772,6 +37781,15 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Unbekannter Benutzer"
 
+#~ msgid "foot"
+#~ msgstr "Fußnote"
+
+#~ msgid "Set all lines"
+#~ msgstr "Alle Linien setzen"
+
+#~ msgid "LaTeX generation/execution"
+#~ msgstr "LaTeX-Erzeugung/Ausführung"
+
 #~ msgid "Running MakeIndex for nomencl."
 #~ msgstr "MakeIndex wird für nomencl ausgeführt."
 

commit 5ac8a0b9ae4d04b5539a29f564571db2bddde6e7
Author: Pavel Sanda <sanda at lyx.org>
Date:   Wed Apr 13 11:36:49 2022 +0200

    Update status of layouttranslations

diff --git a/lib/layouttranslations.review b/lib/layouttranslations.review
index d44271e..1e81a98 100644
--- a/lib/layouttranslations.review
+++ b/lib/layouttranslations.review
@@ -22,12 +22,12 @@ ro sr
 (30.11.2017, LyX 2.3.0 release )
 Additionally to the top ones, these languages should be reviewed for the following strings
 "List of Listings"
-bg ca da es fi gl he ko nb nn pl ro sl sr tr zh_CN zh_TW
+ca da es fi gl he ko nb nn pl ro sl sr tr zh_CN zh_TW
 
 "Nomenclature[[output]]" -> The string that is output to PDF for the nomenclature list
 "see equation[[nomencl]]"
 "page[[nomencl]]"
-bg ca da fi gl he ja ko nb nn pl ro sl sr tr zh_CN zh_TW
+ca da fi gl he ja ko nb nn pl ro sl sr tr zh_CN zh_TW
 
 -----
 LyX 2.4.0 release
@@ -35,7 +35,7 @@ LyX 2.4.0 release
 "Notes[[Endnotes]]" -> The header string of endnotes (with "Endnotes (Basic)" and "Footnotes as Endnotes
 (Basic)" modules). This is to be distinguished from "Notes" used by the Notes inset (which is more an
 annotation than a list of (end)notes)
-ar bg cs el en es eu fi fr he hu ja nb nl nn pl pt_BR pt_PT sv tr uk zh_CN zh_TW
+ar cs el en es eu fi fr he hu ja nb nl nn pl pt_BR pt_PT sv tr uk zh_CN zh_TW
 Note that the localized enotez package has the following translations that probably should be used:
 Catalan: Notes
 Croatian: Bilje\v{s}ke

commit 968379b6444e05b1efc2657eadb26102c6a9b866
Author: Pavel Sanda <sanda at lyx.org>
Date:   Wed Apr 13 11:33:28 2022 +0200

    Backport bg strings

diff --git a/po/bg.po b/po/bg.po
index 8a470b3..4d805ef 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -7598,7 +7598,7 @@ msgstr "Резюме"
 #: lib/layouts/theorems-ams-extended.module:348
 #: lib/layouts/theorems-counters-extended-bytype.inc:28
 msgid "Acknowledgement"
-msgstr "Благодарност"
+msgstr "Благодарности"
 
 #: lib/layouts/AEA.layout:131 lib/layouts/egs.layout:627
 #: lib/layouts/theorems-ams-extended-bytype.module:349
@@ -8207,7 +8207,7 @@ msgstr "Решение \\thesolution."
 #: lib/layouts/theorems-ams-extended.module:308
 #: lib/layouts/theorems-counters-extended-bytype.inc:25 lib/examples/Articles:0
 msgid "Summary"
-msgstr "обобщение"
+msgstr "Обобщение"
 
 # src/ext_l10n.h:191
 #: lib/layouts/AEA.layout:333 src/frontends/qt/Menus.cpp:1803
@@ -11140,7 +11140,7 @@ msgstr "Дефиниция"
 #: lib/layouts/theorems-without-preamble.inc:469
 #: lib/layouts/theorems-without-preamble.inc:472
 msgid "Note"
-msgstr "бележка"
+msgstr "Бележка"
 
 # src/ext_l10n.h:175
 #: lib/layouts/apax.inc:323
@@ -13957,7 +13957,7 @@ msgstr "Бележка в края"
 #: lib/layouts/foottoend.module:20 lib/layouts/foottoend.module:23
 #: lib/layouts/memoir.layout:319 lib/layouts/memoir.layout:322
 msgid "Notes[[Endnotes]]"
-msgstr "Бележки в края"
+msgstr "Бележки"
 
 # src/ext_l10n.h:438
 #: lib/layouts/enotez.module:2

commit 8471b97fd4fcb40573531187de9c9422abc89415
Author: Pavel Sanda <sanda at lyx.org>
Date:   Wed Apr 13 11:32:45 2022 +0200

    * layouttranslations updates from Veselin

diff --git a/lib/layouttranslations b/lib/layouttranslations
index 5d6d3c1..6825a61 100644
--- a/lib/layouttranslations
+++ b/lib/layouttranslations
@@ -53,7 +53,7 @@ Translation ar
 End
 
 Translation bg
-	"Acknowledgement" "Благодарност"
+	"Acknowledgement" "Благодарности"
 	"Algorithm" "Aлгоритъм"
 	"Assumption" "Допускане"
 	"Axiom" "Аксиома"
@@ -81,8 +81,8 @@ Translation bg
 	"Listings[[List of Listings]]" "Списъци"
 	"Nomenclature[[output]]" "Речник на означенията"
 	"Notation" "Означение"
-	"Note" "бележка"
-	"Notes[[Endnotes]]" "Бележки в края"
+	"Note" "Бележка"
+	"Notes[[Endnotes]]" "Бележки"
 	"Problem" "Задача"
 	"Proof" "Доказателство"
 	"Property" "Своиство"
@@ -91,7 +91,7 @@ Translation bg
 	"Remark" "Забележка"
 	"Scheme" "Чертеж"
 	"Solution" "Решение"
-	"Summary" "обобщение"
+	"Summary" "Обобщение"
 	"Tableau" "Таблица"
 	"Theorem" "Теорема"
 	"page[[nomencl]]" "стр."

commit c2229d388b622a65029d0566f5eca53b43d92528
Author: Kornel Benko <kornel at lyx.org>
Date:   Tue Apr 12 18:02:12 2022 +0200

    Find: Renamend for_searchAdv to for_serach in src/OutputParams.h
    
    Since this variable is used by quick find too, the naming was misleading

diff --git a/src/OutputParams.h b/src/OutputParams.h
index 65a58e5..64ab2f3 100644
--- a/src/OutputParams.h
+++ b/src/OutputParams.h
@@ -433,7 +433,7 @@ public:
 		SearchNonOutput = 8
 	};
 		
-	int for_searchAdv = NoSearch;
+	int for_search = NoSearch;
 
 	/// Are we generating this material for instant preview?
 	bool for_preview = false;
diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 7746597..434e515 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -1209,10 +1209,10 @@ void Paragraph::Private::latexSpecialChar(otexstream & os,
 {
 	char_type const c = owner_->getUChar(bparams, runparams, i);
 
-	if (style.pass_thru || runparams.pass_thru || (runparams.for_searchAdv != OutputParams::NoSearch)
+	if (style.pass_thru || runparams.pass_thru || (runparams.for_search != OutputParams::NoSearch)
 	    || contains(style.pass_thru_chars, c)
 	    || contains(runparams.pass_thru_chars, c)) {
-		if (runparams.for_searchAdv != OutputParams::NoSearch) {
+		if (runparams.for_search != OutputParams::NoSearch) {
 			if (c == '\\')
 				os << "\\\\";
 			else if (c == '{')
@@ -2640,10 +2640,10 @@ void Paragraph::latex(BufferParams const & bparams,
 
 		// Check whether a display math inset follows
 		bool output_changes;
-		if (runparams.for_searchAdv == OutputParams::NoSearch)
+		if (runparams.for_search == OutputParams::NoSearch)
 			output_changes = bparams.output_changes;
 		else
-			output_changes = ((runparams.for_searchAdv & OutputParams::SearchWithDeleted) != 0);
+			output_changes = ((runparams.for_search & OutputParams::SearchWithDeleted) != 0);
 		if (c == META_INSET
 		    && i >= start_pos && (end_pos == -1 || i < end_pos)) {
 			if (isDeleted(i))
@@ -4586,7 +4586,7 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
 			odocstringstream os;
 			if (inset->lyxCode() == lyx::QUOTE_CODE) {
 				OutputParams op(0);
-				op.for_searchAdv = OutputParams::SearchQuick;
+				op.for_search = OutputParams::SearchQuick;
 				inset->plaintext(os, op);
 			}
 			else {
diff --git a/src/insets/InsetBibtex.cpp b/src/insets/InsetBibtex.cpp
index 5f6b967..4e02b62 100644
--- a/src/insets/InsetBibtex.cpp
+++ b/src/insets/InsetBibtex.cpp
@@ -983,7 +983,7 @@ int InsetBibtex::plaintext(odocstringstream & os,
 	// We could output more information here, e.g., what databases are included
 	// and information about options. But I don't necessarily see any reason to
 	// do this right now.
-	if (op.for_tooltip || op.for_toc || op.for_searchAdv != OutputParams::NoSearch) {
+	if (op.for_tooltip || op.for_toc || op.for_search != OutputParams::NoSearch) {
 		os << '[' << reflabel << ']' << '\n';
 		return PLAINTEXT_NEWLINE;
 	}
diff --git a/src/insets/InsetBranch.cpp b/src/insets/InsetBranch.cpp
index 2b60ca6..7a102ce 100644
--- a/src/insets/InsetBranch.cpp
+++ b/src/insets/InsetBranch.cpp
@@ -314,7 +314,7 @@ bool InsetBranch::producesOutput() const
 
 void InsetBranch::latex(otexstream & os, OutputParams const & runparams) const
 {
-	if (producesOutput() || ((runparams.for_searchAdv & OutputParams::SearchNonOutput) != 0)) {
+	if (producesOutput() || ((runparams.for_search & OutputParams::SearchNonOutput) != 0)) {
 		OutputParams rp = runparams;
 		rp.inbranch = true;
 		InsetText::latex(os, rp);
@@ -328,7 +328,7 @@ void InsetBranch::latex(otexstream & os, OutputParams const & runparams) const
 int InsetBranch::plaintext(odocstringstream & os,
 			   OutputParams const & runparams, size_t max_length) const
 {
-	if (!producesOutput() && ((runparams.for_searchAdv & OutputParams::SearchNonOutput) == 0))
+	if (!producesOutput() && ((runparams.for_search & OutputParams::SearchNonOutput) == 0))
 		return 0;
 
 	int len = InsetText::plaintext(os, runparams, max_length);
diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp
index 30eacd7..9ee08a3 100644
--- a/src/insets/InsetInclude.cpp
+++ b/src/insets/InsetInclude.cpp
@@ -1006,14 +1006,14 @@ int InsetInclude::plaintext(odocstringstream & os,
 {
 	// just write the filename if we're making a tooltip or toc entry,
 	// or are generating this for advanced search
-	if (op.for_tooltip || op.for_toc || op.for_searchAdv != OutputParams::NoSearch) {
+	if (op.for_tooltip || op.for_toc || op.for_search != OutputParams::NoSearch) {
 		os << '[' << screenLabel() << '\n'
 		   << ltrim(getParam("filename")) << "\n]";
 		return PLAINTEXT_NEWLINE + 1; // one char on a separate line
 	}
 
 	if (isVerbatim(params()) || isListings(params())) {
-		if (op.for_searchAdv != OutputParams::NoSearch) {
+		if (op.for_search != OutputParams::NoSearch) {
 			os << '[' << screenLabel() << ']';
 		}
 		else {
diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp
index fe0890c..8622263 100644
--- a/src/insets/InsetIndex.cpp
+++ b/src/insets/InsetIndex.cpp
@@ -85,7 +85,7 @@ void InsetIndex::latex(otexstream & ios, OutputParams const & runparams_in) cons
 	odocstringstream ourlatex;
 	otexstream ots(ourlatex);
 	InsetText::latex(ots, runparams);
-	if (runparams.for_searchAdv != OutputParams::NoSearch) {
+	if (runparams.for_search != OutputParams::NoSearch) {
 		// No need for special handling, if we are only searching for some patterns
 		os << ourlatex.str() << "}";
 		return;
diff --git a/src/insets/InsetNote.cpp b/src/insets/InsetNote.cpp
index 0324ca8..45d89d0 100644
--- a/src/insets/InsetNote.cpp
+++ b/src/insets/InsetNote.cpp
@@ -207,12 +207,12 @@ bool InsetNote::isMacroScope() const
 void InsetNote::latex(otexstream & os, OutputParams const & runparams_in) const
 {
 	if (params_.type != InsetNoteParams::Greyedout
-	    && runparams_in.for_searchAdv != OutputParams::NoSearch
-	    && (runparams_in.for_searchAdv & OutputParams::SearchNonOutput) == 0)
+	    && runparams_in.for_search != OutputParams::NoSearch
+	    && (runparams_in.for_search & OutputParams::SearchNonOutput) == 0)
 		return;
 
 	if (params_.type == InsetNoteParams::Note) {
-		if ((runparams_in.for_searchAdv & OutputParams::SearchNonOutput) != 0) {
+		if ((runparams_in.for_search & OutputParams::SearchNonOutput) != 0) {
 			OutputParams runparams(runparams_in);
 			InsetCollapsible::latex(os, runparams);
 			runparams_in.encoding = runparams.encoding;
@@ -251,11 +251,11 @@ void InsetNote::latex(otexstream & os, OutputParams const & runparams_in) const
 int InsetNote::plaintext(odocstringstream & os,
 			 OutputParams const & runparams_in, size_t max_length) const
 {
-	if ((runparams_in.for_searchAdv & OutputParams::SearchNonOutput) == 0) {
+	if ((runparams_in.for_search & OutputParams::SearchNonOutput) == 0) {
 		if (params_.type == InsetNoteParams::Note)
 			return 0;
 		else if (params_.type == InsetNoteParams::Comment
-		    && (runparams_in.for_searchAdv != OutputParams::NoSearch))
+		    && (runparams_in.for_search != OutputParams::NoSearch))
 			return 0;
 	}
 
@@ -265,10 +265,10 @@ int InsetNote::plaintext(odocstringstream & os,
 		// Ignore files that are exported inside a comment
 		runparams.exportdata.reset(new ExportData);
 	}
-	if ((runparams_in.for_searchAdv & OutputParams::SearchNonOutput) == 0)
+	if ((runparams_in.for_search & OutputParams::SearchNonOutput) == 0)
 		os << '[' << buffer().B_("note") << ":\n";
 	InsetText::plaintext(os, runparams, max_length);
-	if ((runparams_in.for_searchAdv & OutputParams::SearchNonOutput) == 0)
+	if ((runparams_in.for_search & OutputParams::SearchNonOutput) == 0)
 		os << "\n]";
 
 	return PLAINTEXT_NEWLINE + 1; // one char on a separate line
diff --git a/src/insets/InsetQuotes.cpp b/src/insets/InsetQuotes.cpp
index 67ad767..1882769 100644
--- a/src/insets/InsetQuotes.cpp
+++ b/src/insets/InsetQuotes.cpp
@@ -851,7 +851,7 @@ void InsetQuotes::latex(otexstream & os, OutputParams const & runparams) const
 	docstring qstr;
 
 	// In pass-thru context, we output plain quotes
-	if (runparams.pass_thru || runparams.for_searchAdv != OutputParams::NoSearch)
+	if (runparams.pass_thru || runparams.for_search != OutputParams::NoSearch)
 		qstr = (level_ == QuoteLevel::Primary) ? from_ascii("\"") : from_ascii("'");
 	else if (style == QuoteStyle::Plain && fontspec_) {
 		// For XeTeX and LuaTeX,we need to disable mapping to get straight
@@ -944,7 +944,7 @@ void InsetQuotes::latex(otexstream & os, OutputParams const & runparams) const
 int InsetQuotes::plaintext(odocstringstream & os,
         OutputParams const & op, size_t) const
 {
-	if (op.for_searchAdv == OutputParams::NoSearch) {
+	if (op.for_search == OutputParams::NoSearch) {
 		docstring const str = displayString();
 		os << str;
 		return str.size();
diff --git a/src/insets/InsetSpace.cpp b/src/insets/InsetSpace.cpp
index 1a2eb09..92d4c43 100644
--- a/src/insets/InsetSpace.cpp
+++ b/src/insets/InsetSpace.cpp
@@ -579,27 +579,27 @@ void InsetSpace::latex(otexstream & os, OutputParams const & runparams) const
 {
 	switch (params_.kind) {
 	case InsetSpaceParams::NORMAL:
-		os << (runparams.free_spacing && (runparams.for_searchAdv == OutputParams::NoSearch) ? " " : "\\ ");
+		os << (runparams.free_spacing && (runparams.for_search == OutputParams::NoSearch) ? " " : "\\ ");
 		break;
 	case InsetSpaceParams::PROTECTED:
 		if (runparams.local_font &&
 		    runparams.local_font->language()->lang() == "polutonikogreek")
 			// in babel's polutonikogreek, ~ is active
-			os << (runparams.free_spacing && (runparams.for_searchAdv == OutputParams::NoSearch) ? " " : "\\nobreakspace{}");
+			os << (runparams.free_spacing && (runparams.for_search == OutputParams::NoSearch) ? " " : "\\nobreakspace{}");
 		else
-			os << (runparams.free_spacing && (runparams.for_searchAdv == OutputParams::NoSearch) ? ' ' : '~');
+			os << (runparams.free_spacing && (runparams.for_search == OutputParams::NoSearch) ? ' ' : '~');
 		break;
 	case InsetSpaceParams::VISIBLE:
-		os << (runparams.free_spacing && (runparams.for_searchAdv == OutputParams::NoSearch) ? " " : "\\textvisiblespace{}");
+		os << (runparams.free_spacing && (runparams.for_search == OutputParams::NoSearch) ? " " : "\\textvisiblespace{}");
 		break;
 	case InsetSpaceParams::THIN:
-		if (runparams.for_searchAdv != OutputParams::NoSearch)
+		if (runparams.for_search != OutputParams::NoSearch)
 			os << "\\thinspace{}";
 		else
 			os << (runparams.free_spacing ? " " : "\\,");
 		break;
 	case InsetSpaceParams::MEDIUM:
-		if (runparams.for_searchAdv != OutputParams::NoSearch)
+		if (runparams.for_search != OutputParams::NoSearch)
 			os << "\\medspace{}";
 		else if (params_.math)
 			os << (runparams.free_spacing ? " " : "\\:");
@@ -607,7 +607,7 @@ void InsetSpace::latex(otexstream & os, OutputParams const & runparams) const
 			os << (runparams.free_spacing ? " " : "\\medspace{}");
 		break;
 	case InsetSpaceParams::THICK:
-		if (runparams.for_searchAdv != OutputParams::NoSearch)
+		if (runparams.for_search != OutputParams::NoSearch)
 			os << "\\thickspace{}";
 		else if (params_.math)
 			os << (runparams.free_spacing ? " " : "\\;");
@@ -615,49 +615,49 @@ void InsetSpace::latex(otexstream & os, OutputParams const & runparams) const
 			os << (runparams.free_spacing ? " " : "\\thickspace{}");
 		break;
 	case InsetSpaceParams::QUAD:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\quad{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\quad{}");
 		break;
 	case InsetSpaceParams::QQUAD:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\qquad{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\qquad{}");
 		break;
 	case InsetSpaceParams::ENSPACE:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\enspace{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\enspace{}");
 		break;
 	case InsetSpaceParams::ENSKIP:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\enskip{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\enskip{}");
 		break;
 	case InsetSpaceParams::NEGTHIN:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\negthinspace{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\negthinspace{}");
 		break;
 	case InsetSpaceParams::NEGMEDIUM:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\negmedspace{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\negmedspace{}");
 		break;
 	case InsetSpaceParams::NEGTHICK:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\negthickspace{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\negthickspace{}");
 		break;
 	case InsetSpaceParams::HFILL:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\hfill{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\hfill{}");
 		break;
 	case InsetSpaceParams::HFILL_PROTECTED:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\hspace*{\\fill}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\hspace*{\\fill}");
 		break;
 	case InsetSpaceParams::DOTFILL:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\dotfill{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\dotfill{}");
 		break;
 	case InsetSpaceParams::HRULEFILL:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\hrulefill{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\hrulefill{}");
 		break;
 	case InsetSpaceParams::LEFTARROWFILL:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\leftarrowfill{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\leftarrowfill{}");
 		break;
 	case InsetSpaceParams::RIGHTARROWFILL:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\rightarrowfill{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\rightarrowfill{}");
 		break;
 	case InsetSpaceParams::UPBRACEFILL:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\upbracefill{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\upbracefill{}");
 		break;
 	case InsetSpaceParams::DOWNBRACEFILL:
-		os << (runparams.free_spacing && (runparams.for_searchAdv != OutputParams::NoSearch) ? " " : "\\downbracefill{}");
+		os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\downbracefill{}");
 		break;
 	case InsetSpaceParams::CUSTOM:
 		if (runparams.free_spacing)
diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index c3f2b77..6ef7cd3 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1098,11 +1098,11 @@ static docstring buffer_to_latex(Buffer & buffer)
 	// No side effect of file copying and image conversion
 	runparams.dryrun = true;
 	if (ignoreFormats.getDeleted())
-		runparams.for_searchAdv = OutputParams::SearchWithoutDeleted;
+		runparams.for_search = OutputParams::SearchWithoutDeleted;
 	else
-		runparams.for_searchAdv = OutputParams::SearchWithDeleted;
+		runparams.for_search = OutputParams::SearchWithDeleted;
 	if (ignoreFormats.getNonContent()) {
-		runparams.for_searchAdv |= OutputParams::SearchNonOutput;
+		runparams.for_search |= OutputParams::SearchNonOutput;
 	}
 	pit_type const endpit = buffer.paragraphs().size();
 	for (pit_type pit = 0; pit != endpit; ++pit) {
@@ -1174,13 +1174,13 @@ static docstring stringifySearchBuffer(Buffer & buffer, FindAndReplaceOptions co
 		int option = AS_STR_INSETS |AS_STR_PLAINTEXT;
 		if (ignoreFormats.getDeleted()) {
 			option |= AS_STR_SKIPDELETE;
-			runparams.for_searchAdv = OutputParams::SearchWithoutDeleted;
+			runparams.for_search = OutputParams::SearchWithoutDeleted;
 		}
 		else {
-			runparams.for_searchAdv = OutputParams::SearchWithDeleted;
+			runparams.for_search = OutputParams::SearchWithDeleted;
 		}
 		if (ignoreFormats.getNonContent()) {
-			runparams.for_searchAdv |= OutputParams::SearchNonOutput;
+			runparams.for_search |= OutputParams::SearchNonOutput;
 		}
 		string t("");
 		for (pos_type pit = pos_type(0); pit < (pos_type)buffer.paragraphs().size(); ++pit) {
@@ -3952,13 +3952,13 @@ docstring stringifyFromCursor(DocIterator const & cur, int len)
 		int option = AS_STR_INSETS | AS_STR_PLAINTEXT;
 		if (ignoreFormats.getDeleted()) {
 			option |= AS_STR_SKIPDELETE;
-			runparams.for_searchAdv = OutputParams::SearchWithoutDeleted;
+			runparams.for_search = OutputParams::SearchWithoutDeleted;
 		}
 		else {
-			runparams.for_searchAdv = OutputParams::SearchWithDeleted;
+			runparams.for_search = OutputParams::SearchWithDeleted;
 		}
 		if (ignoreFormats.getNonContent()) {
-			runparams.for_searchAdv |= OutputParams::SearchNonOutput;
+			runparams.for_search |= OutputParams::SearchNonOutput;
 		}
 		LYXERR(Debug::FIND, "Stringifying with cur: "
 		       << cur << ", from pos: " << cur.pos() << ", end: " << end);
@@ -4006,13 +4006,13 @@ docstring latexifyFromCursor(DocIterator const & cur, int len)
 	// No side effect of file copying and image conversion
 	runparams.dryrun = true;
 	if (ignoreFormats.getDeleted()) {
-		runparams.for_searchAdv = OutputParams::SearchWithoutDeleted;
+		runparams.for_search = OutputParams::SearchWithoutDeleted;
 	}
 	else {
-		runparams.for_searchAdv = OutputParams::SearchWithDeleted;
+		runparams.for_search = OutputParams::SearchWithDeleted;
 	}
 	if (ignoreFormats.getNonContent()) {
-		runparams.for_searchAdv |= OutputParams::SearchNonOutput;
+		runparams.for_search |= OutputParams::SearchNonOutput;
 	}
 
 	if (cur.inTexted()) {
diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp
index 805f84c..e266ec8 100644
--- a/src/mathed/InsetMathHull.cpp
+++ b/src/mathed/InsetMathHull.cpp
@@ -2359,7 +2359,7 @@ int InsetMathHull::plaintext(odocstringstream & os,
 	Encoding const * const enc = encodings.fromLyXName("utf8");
 
 	TeXMathStream::OutputType ot;
-	if (op.for_searchAdv == OutputParams::NoSearch)
+	if (op.for_search == OutputParams::NoSearch)
 		ot = TeXMathStream::wsDefault;
 	else
 		ot = TeXMathStream::wsSearchAdv;
diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp
index 4f21924..d4759a0 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -359,7 +359,7 @@ void InsetMathNest::normalize(NormalStream & os) const
 void InsetMathNest::latex(otexstream & os, OutputParams const & runparams) const
 {
 	TeXMathStream::OutputType ot;
-	if (runparams.for_searchAdv != OutputParams::NoSearch)
+	if (runparams.for_search != OutputParams::NoSearch)
 		ot = TeXMathStream::wsSearchAdv;
 	else if (runparams.dryrun)
 		ot = TeXMathStream::wsDryrun;
diff --git a/src/output_latex.cpp b/src/output_latex.cpp
index 61537c8..358aae5 100644
--- a/src/output_latex.cpp
+++ b/src/output_latex.cpp
@@ -462,10 +462,10 @@ void TeXEnvironment(Buffer const & buf, Text const & text,
 		// Do not output empty environments if the whole paragraph has
 		// been deleted with ct and changes are not output.
 		bool output_changes;
-		if (runparams.for_searchAdv == OutputParams::NoSearch)
+		if (runparams.for_search == OutputParams::NoSearch)
 			output_changes = buf.params().output_changes;
 		else
-			output_changes = ((runparams.for_searchAdv & OutputParams::SearchWithDeleted) != 0);
+			output_changes = ((runparams.for_search & OutputParams::SearchWithDeleted) != 0);
 		if (size_t(pit + 1) < paragraphs.size()) {
 			ParagraphList::const_iterator nextpar = paragraphs.iterator_at(pit + 1);
 			Paragraph const & cpar = paragraphs.at(pit);
@@ -578,7 +578,7 @@ void getArgInsets(otexstream & os, OutputParams const & runparams, Layout::LaTeX
 			}
 		}
 	}
-	if ((runparams.for_searchAdv != OutputParams::NoSearch) && argnr > 1) {
+	if ((runparams.for_search != OutputParams::NoSearch) && argnr > 1) {
 		// Mark end of arguments for findadv() only
 		os << "\\endarguments{}";
 	}
@@ -746,7 +746,7 @@ void parStartCommand(Paragraph const & par, otexstream & os,
 		break;
 	case LATEX_ITEM_ENVIRONMENT:
 	case LATEX_LIST_ENVIRONMENT:
-		if (runparams.for_searchAdv != OutputParams::NoSearch) {
+		if (runparams.for_search != OutputParams::NoSearch) {
 			os << "\\" + style.itemcommand() << "{" << style.latexname() << "}";
 		}
 		else {
@@ -758,7 +758,7 @@ void parStartCommand(Paragraph const & par, otexstream & os,
 		}
 		break;
 	case LATEX_ENVIRONMENT:
-		if (runparams.for_searchAdv != OutputParams::NoSearch) {
+		if (runparams.for_search != OutputParams::NoSearch) {
 			os << "\\latexenvironment{" << style.latexname() << "}{";
 		}
 		break;
@@ -796,7 +796,7 @@ void TeXOnePar(Buffer const & buf,
 
 	// Do not output empty commands if the whole paragraph has
 	// been deleted with ct and changes are not output.
-	if (((runparams_in.for_searchAdv & OutputParams::SearchWithDeleted) == 0) && style.latextype != LATEX_ENVIRONMENT
+	if (((runparams_in.for_search & OutputParams::SearchWithDeleted) == 0) && style.latextype != LATEX_ENVIRONMENT
 	    && !par.empty() && par.isDeleted(0, par.size()) && !bparams.output_changes)
 		return;
 
@@ -936,7 +936,7 @@ void TeXOnePar(Buffer const & buf,
 	bool const have_prior_nptpar =
 			prior_nontitle_par && !prior_nontitle_par->isPassThru();
 	Language const * const prev_language =
-		runparams_in.for_searchAdv != OutputParams::NoSearch
+		runparams_in.for_search != OutputParams::NoSearch
 			? languages.getLanguage("ignore")
 			: (have_prior_nptpar)
 				? (use_prev_env_language 
@@ -988,7 +988,7 @@ void TeXOnePar(Buffer const & buf,
 		&& !(have_prior_nptpar
 		     && (prev_language->rightToLeft() != par_language->rightToLeft()));
 	bool const localswitch =
-			(runparams_in.for_searchAdv != OutputParams::NoSearch
+			(runparams_in.for_search != OutputParams::NoSearch
 			|| text.inset().forceLocalFontSwitch()
 			|| (using_begin_end && text.inset().forcePlainLayout())
 			|| in_polyglossia_rtl_env)
@@ -1003,7 +1003,7 @@ void TeXOnePar(Buffer const & buf,
 	bool const localswitch_needed = localswitch && par_lang != outer_lang;
 
 	// localswitches need to be closed and reopened at each par
-	if ((runparams_in.for_searchAdv != OutputParams::NoSearch) || ((par_lang != prev_lang || localswitch_needed)
+	if ((runparams_in.for_search != OutputParams::NoSearch) || ((par_lang != prev_lang || localswitch_needed)
 	     // check if we already put language command in TeXEnvironment()
 	     && !(style.isEnvironment()
 		  && (pit == 0 || (priorpar->layout() != par.layout()
@@ -1071,7 +1071,7 @@ void TeXOnePar(Buffer const & buf,
 			// With CJK, the CJK tag has to be closed first (see below)
 			if ((runparams.encoding->package() != Encoding::CJK
 				 || bparams.useNonTeXFonts
-				 || (runparams.for_searchAdv != OutputParams::NoSearch))
+				 || (runparams.for_search != OutputParams::NoSearch))
 			    && (par_lang != openLanguageName(state) || localswitch || intitle_command)
 			    && !par_lang.empty()) {
 				string bc = use_polyglossia ?
@@ -1312,7 +1312,7 @@ void TeXOnePar(Buffer const & buf,
 		// when the paragraph uses CJK, the language has to be closed earlier
 		if ((font.language()->encoding()->package() != Encoding::CJK)
 			|| bparams.useNonTeXFonts
-			|| (runparams_in.for_searchAdv != OutputParams::NoSearch)) {
+			|| (runparams_in.for_search != OutputParams::NoSearch)) {
 			if (lang_end_command.empty()) {
 				// If this is a child, we should restore the
 				// master language after the last paragraph.
@@ -1708,10 +1708,10 @@ void latexParagraphs(Buffer const & buf,
 		// Do not output empty environments if the whole paragraph has
 		// been deleted with ct and changes are not output.
 		bool output_changes;
-		if (runparams.for_searchAdv == OutputParams::NoSearch)
+		if (runparams.for_search == OutputParams::NoSearch)
 			output_changes = bparams.output_changes;
 		else
-			output_changes = ((runparams.for_searchAdv & OutputParams::SearchWithDeleted) != 0);
+			output_changes = ((runparams.for_search & OutputParams::SearchWithDeleted) != 0);
 		bool const lastpar = size_t(pit + 1) >= paragraphs.size();
 		if (!lastpar) {
 			ParagraphList::const_iterator nextpar = paragraphs.iterator_at(pit + 1);
@@ -1854,7 +1854,7 @@ pair<bool, int> switchEncoding(odocstream & os, BufferParams const & bparams,
 		|| oldEnc.package() == Encoding::japanese
 		|| oldEnc.package() == Encoding::none
 		|| newEnc.package() == Encoding::none
-		|| (runparams.for_searchAdv != OutputParams::NoSearch))
+		|| (runparams.for_search != OutputParams::NoSearch))
 		return make_pair(false, 0);
 	// FIXME We ignore encoding switches from/to encodings that do
 	// neither support the inputenc package nor the CJK package here.

commit 9d6e704183009221ae3996608728537cfb772238
Author: Stephan Witt <switt at lyx.org>
Date:   Sat Apr 9 09:19:46 2022 +0200

    Improved package build script for MacOS. Handle compiler standard for Qt6.

diff --git a/development/LyX-Mac-binary-release.sh b/development/LyX-Mac-binary-release.sh
index 017a610..cc7320d 100644
--- a/development/LyX-Mac-binary-release.sh
+++ b/development/LyX-Mac-binary-release.sh
@@ -284,9 +284,9 @@ while [ $# -gt 0 ]; do
 		LyxOnlyPackage=$(echo ${1}|cut -d= -f2)
 		shift
 		;;
-	--enable-cxx11)
+	--enable-cxx11|--enable-cxx-mode=*)
 		LyXConfigureOptions="${LyXConfigureOptions} ${1}"
-		EnableCXX11="--enable-cxx11"
+		EnableCXXMode="${1}"
 		shift
 		;;
 	--*)
@@ -374,6 +374,12 @@ case "${QtVersion}" in
 6*)
 	QtLibraries=${QtLibraries:-"QtCore5Compat QtDBus QtSvg QtXml QtPrintSupport QtSvgWidgets QtWidgets QtGui QtNetwork QtConcurrent QtCore"}
 	QtFrameworkVersion="A"
+	case "${EnableCXXMode}" in
+	--enable-cxx11|--enable-cxx-mode=11)
+		echo Warning: Adjust cxx standard "${EnableCXXMode}" for Qt 6. C++17 or better is required.
+		EnableCXXMode="--enable-cxx-mode=17"
+		;;
+	esac
 	;;
 *)
 	QtLibraries=${QtLibraries:-"QtSvg QtXml QtGui QtNetwork QtCore"}
@@ -412,6 +418,19 @@ esac
 MYCFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}"
 MYLDFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}"
 
+case "${EnableCXXMode}" in
+--enable-cxx11|--enable-cxx-mode=11)
+	export CC=cc
+	export CXX="c++ -stdlib=libc++"
+	export CXXFLAGS=-std=c++11
+	;;
+--enable-cxx-mode=17)
+	export CC=cc
+	export CXX="c++ -stdlib=libc++"
+	export CXXFLAGS=-std=c++17
+	;;
+esac
+
 build_qt() {
 	echo Build Qt library ${QtSourceDir}
 	if [ "${QtInstallDir}" = "${QtBuildDir}" ]; then
@@ -641,14 +660,6 @@ build_lyx() {
 		rm -rf "${LyxAppPrefix}"
 	fi
 
-	case "${EnableCXX11}" in
-	"--enable-cxx11")
-		export CC=cc
-		export CXX="c++ -stdlib=libc++"
-		export CXXFLAGS=-std=c++11
-		;;
-	esac
-
 	# -------------------------------------
 	# Automate configure check
 	# -------------------------------------

commit 8338d1032ddb79007d3cf74ffee22a4f8da9d90d
Author: Kornel Benko <kornel at lyx.org>
Date:   Sat Apr 9 09:11:38 2022 +0200

    FindQuick: Amend 4bd38d8a: Remove now unneeded code

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 1e9f1fb..7746597 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -4560,32 +4560,6 @@ void Paragraph::changeCase(BufferParams const & bparams, pos_type pos,
 	}
 }
 
-static char_type matchquote(char_type in)
-{
-	switch (in) {
-		case 0x2018:	// Left Single Quotation Mark
-		case 0x2019:	// Right Single Quotation Mark
-		case 0x201a:	// Single Low-9 Quotation Mark
-		case 0x201b:	// Single High-Reversed-9 Quotation Mark 
-		case 0x2039:	// Single Left-Pointing Angle Quotation Mark
-		case 0x203a:	// Single Right-Pointing Angle Quotation Mark
-			return '\'';
-		case 0x00bb:	// Right-Pointing Double Angle Quotation Mark
-		case 0x00ab:	// Left-Pointing Double Angle Quotation Mark
-		case 0x201e:	// Double Low-9 Quotation Mark 
-		case 0x201c:	// Left Double Quotation Mark 
-		case 0x201d:	// Right Double Quotation Mark 
-		case 0x201f:	// Double High-Reversed-9 Quotation Mark 
-		case 0x2e42:	// Double Low-Reversed-9 Quotation Mark
-		case 0x301e:	// Double Prime Quotation Mark
-		case 0x301d:	// Reversed Double Prime Quotation Mark
-		case 0x301f:	// Low Double Prime Quotation Mark
-			return '"';
-		default:
-			return in;
-	}
-}
-
 int Paragraph::find(docstring const & str, bool cs, bool mw,
 		pos_type start_pos, bool del) const
 {
@@ -4622,9 +4596,8 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
 			if (!insetstring.empty()) {
 				int const insetstringsize = insetstring.length();
 				for (int j = 0; j < insetstringsize && pos < parsize; ++i, ++j) {
-					char_type ij = matchquote(insetstring[j]);
-					if ((cs && str[i] != ij)
-					    || (!cs && uppercase(str[i]) != uppercase(ij))) {
+					if ((cs && str[i] != insetstring[j])
+					    || (!cs && uppercase(str[i]) != uppercase(insetstring[j]))) {
 						nonmatch = true;
 						break;
 					}
@@ -4634,7 +4607,7 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
 		}
 		if (nonmatch || i == strsize)
 			break;
-		char_type dp = matchquote(d->text_[pos]);
+		char_type dp = d->text_[pos];
 		if (cs && str[i] != dp)
 			break;
 		if (!cs && uppercase(str[i]) != uppercase(dp))

commit 4bd38d8a09044172b107be30744456012b80fb4f
Author: Kornel Benko <kornel at lyx.org>
Date:   Sat Apr 9 08:52:24 2022 +0200

    FindQuick: Handle quotes special (as in findadv)

diff --git a/src/OutputParams.h b/src/OutputParams.h
index d00ec02..65a58e5 100644
--- a/src/OutputParams.h
+++ b/src/OutputParams.h
@@ -429,6 +429,7 @@ public:
 		NoSearch = 0,
 		SearchWithDeleted = 1,
 		SearchWithoutDeleted = 2,
+		SearchQuick = 4,
 		SearchNonOutput = 8
 	};
 		
diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index e37a123..1e9f1fb 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -4610,7 +4610,14 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
 			if (!inset->isLetter() && !inset->isChar())
 				break;
 			odocstringstream os;
-			inset->toString(os);
+			if (inset->lyxCode() == lyx::QUOTE_CODE) {
+				OutputParams op(0);
+				op.for_searchAdv = OutputParams::SearchQuick;
+				inset->plaintext(os, op);
+			}
+			else {
+				inset->toString(os);
+			}
 			docstring const insetstring = os.str();
 			if (!insetstring.empty()) {
 				int const insetstringsize = insetstring.length();

commit 801768af9242ff1aca8735a0226e4c78becded00
Author: Kornel Benko <kornel at lyx.org>
Date:   Fri Apr 8 19:56:41 2022 +0200

    FindQuick: Amend 1f7d90d6: Add some not handled quotation marks

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 92bb883..e37a123 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -4563,16 +4563,24 @@ void Paragraph::changeCase(BufferParams const & bparams, pos_type pos,
 static char_type matchquote(char_type in)
 {
 	switch (in) {
-		case 0x2018:
-		case 0x201a:
-		case 0x203a:
-		case 0x2039:
-			return '\'';	// ‘ ‚ › ‹
-		case 0x00bb:
-		case 0x00ab:
-		case 0x201e:
-		case 0x201c:
-			return '"';	// » « „ “
+		case 0x2018:	// Left Single Quotation Mark
+		case 0x2019:	// Right Single Quotation Mark
+		case 0x201a:	// Single Low-9 Quotation Mark
+		case 0x201b:	// Single High-Reversed-9 Quotation Mark 
+		case 0x2039:	// Single Left-Pointing Angle Quotation Mark
+		case 0x203a:	// Single Right-Pointing Angle Quotation Mark
+			return '\'';
+		case 0x00bb:	// Right-Pointing Double Angle Quotation Mark
+		case 0x00ab:	// Left-Pointing Double Angle Quotation Mark
+		case 0x201e:	// Double Low-9 Quotation Mark 
+		case 0x201c:	// Left Double Quotation Mark 
+		case 0x201d:	// Right Double Quotation Mark 
+		case 0x201f:	// Double High-Reversed-9 Quotation Mark 
+		case 0x2e42:	// Double Low-Reversed-9 Quotation Mark
+		case 0x301e:	// Double Prime Quotation Mark
+		case 0x301d:	// Reversed Double Prime Quotation Mark
+		case 0x301f:	// Low Double Prime Quotation Mark
+			return '"';
 		default:
 			return in;
 	}

commit 7cb700bf675ca255f3fcbe2fa07d04f0d359ed7b
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Fri Apr 8 11:51:53 2022 +0200

    Fix crash with countExpanders in Qt6
    
    It is not a good idea to contruct a QChar from a char_type that is
    really 32bits.
    
    Use lyx::isSpace, which already catters for this case.
    
    Since this code does not depend on qt anymore, move it to
    support::countExpanders.
    
    Get rid of Row::countSeparators, which is not used anymore.
    
    Fixes bug #12519.

diff --git a/src/Row.cpp b/src/Row.cpp
index f2d4aaf..3d5ab90 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -42,19 +42,11 @@ using frontend::FontMetrics;
 static double const MAX_SPACE_STRETCH = 1.5; //em
 
 
-int Row::Element::countSeparators() const
-{
-	if (type != STRING)
-		return 0;
-	return count(str.begin(), str.end(), ' ');
-}
-
-
 int Row::Element::countExpanders() const
 {
 	if (type != STRING)
 		return 0;
-	return theFontMetrics(font).countExpanders(str);
+	return support::countExpanders(str);
 }
 
 
@@ -385,16 +377,6 @@ int Row::right_x() const
 }
 
 
-int Row::countSeparators() const
-{
-	int n = 0;
-	const_iterator const end = elements_.end();
-	for (const_iterator cit = elements_.begin() ; cit != end ; ++cit)
-		n += cit->countSeparators();
-	return n;
-}
-
-
 bool Row::setExtraWidth(int w)
 {
 	if (w < 0)
diff --git a/src/Row.h b/src/Row.h
index 4c4bfce..6583fb2 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -66,9 +66,6 @@ public:
 			: type(t), pos(p), endpos(p + 1), font(f), change(ch) {}
 
 
-		// Return the number of separator in the element (only STRING type)
-		int countSeparators() const;
-
 		// Return total width of element, including separator overhead
 		// FIXME: Cache this value or the number of expanders?
 		double full_width() const { return dim.wid + extra * countExpanders(); }
@@ -238,8 +235,6 @@ public:
 	/// The offset of the right-most cursor position on the row
 	int right_x() const;
 
-	// Return the number of separators in the row
-	int countSeparators() const;
 	// Set the extra spacing for every expanding character in STRING-type
 	// elements.  \param w is the total amount of extra width for the row to be
 	// distributed among expanders.  \return false if the justification fails.
diff --git a/src/frontends/FontMetrics.h b/src/frontends/FontMetrics.h
index 66cd22d..f395270 100644
--- a/src/frontends/FontMetrics.h
+++ b/src/frontends/FontMetrics.h
@@ -168,10 +168,6 @@ public:
 		int & width,
 		int & ascent,
 		int & descent) const = 0;
-
-	/// return the number of expanding characters taken into account for
-	/// increased inter-word spacing during justification
-	virtual int countExpanders(docstring const & str) const = 0;
 };
 
 
diff --git a/src/frontends/qt/GuiFontMetrics.cpp b/src/frontends/qt/GuiFontMetrics.cpp
index e7f61c6..cb9f5af 100644
--- a/src/frontends/qt/GuiFontMetrics.cpp
+++ b/src/frontends/qt/GuiFontMetrics.cpp
@@ -18,10 +18,10 @@
 #include "Dimension.h"
 
 #include "support/convert.h"
+#include "support/debug.h"
 #include "support/lassert.h"
 #include "support/lstrings.h" // for breakString_helper with qt4
 #include "support/lyxlib.h"
-#include "support/debug.h"
 
 #define DISABLE_PMPROF
 #include "support/pmprof.h"
@@ -467,27 +467,6 @@ int GuiFontMetrics::x2pos(docstring const & s, int & x, bool const rtl,
 }
 
 
-int GuiFontMetrics::countExpanders(docstring const & str) const
-{
-	// Numbers of characters that are expanded by inter-word spacing.  These
-	// characters are spaces, except for characters 09-0D which are treated
-	// specially.  (From a combination of testing with the notepad found in qt's
-	// examples, and reading the source code.)  In addition, consecutive spaces
-	// only count as one expander.
-	bool wasspace = false;
-	int nexp = 0;
-	for (char_type c : str)
-		if (c > 0x0d && QChar(c).isSpace()) {
-			if (!wasspace) {
-				++nexp;
-				wasspace = true;
-			}
-		} else
-			wasspace = false;
-	return nexp;
-}
-
-
 namespace {
 
 const int brkStrOffset = 1 + BIDI_OFFSET;
diff --git a/src/frontends/qt/GuiFontMetrics.h b/src/frontends/qt/GuiFontMetrics.h
index 9501eb8..82c5839 100644
--- a/src/frontends/qt/GuiFontMetrics.h
+++ b/src/frontends/qt/GuiFontMetrics.h
@@ -92,7 +92,6 @@ public:
 		int & ascent,
 		int & descent) const override;
 
-	int countExpanders(docstring const & str) const override;
 	///
 	int width(QString const & str) const;
 
diff --git a/src/frontends/qt/GuiPainter.cpp b/src/frontends/qt/GuiPainter.cpp
index cf9cd7c..b243c6e 100644
--- a/src/frontends/qt/GuiPainter.cpp
+++ b/src/frontends/qt/GuiPainter.cpp
@@ -26,6 +26,7 @@
 #include "support/debug.h"
 #include "support/lassert.h"
 #include "support/lyxlib.h"
+#include "support/lstrings.h"
 
 #include <algorithm>
 
@@ -329,7 +330,7 @@ void GuiPainter::text(int x, int y, docstring const & s,
 	if (tw == 0.0)
 		// Take into account space stretching (word spacing)
 		textwidth = fm.width(s) +
-			static_cast<int>(fm.countExpanders(s) * wordspacing);
+			static_cast<int>(countExpanders(s) * wordspacing);
 	else
 		textwidth = static_cast<int>(tw);
 
diff --git a/src/support/lstrings.cpp b/src/support/lstrings.cpp
index 351c977..b9c23f5 100644
--- a/src/support/lstrings.cpp
+++ b/src/support/lstrings.cpp
@@ -1495,6 +1495,27 @@ string from_percent_encoding(string const & in)
 }
 
 
+int countExpanders(docstring const & str)
+{
+	// Numbers of characters that are expanded by inter-word spacing.  These
+	// characters are spaces, except for characters 09-0D which are treated
+	// specially.  (From a combination of testing with the notepad found in qt's
+	// examples, and reading the source code.)  In addition, consecutive spaces
+	// only count as one expander.
+	bool wasspace = false;
+	int nexp = 0;
+	for (char_type c : str)
+		if (c > 0x0d && isSpace(c)) {
+			if (!wasspace) {
+				++nexp;
+				wasspace = true;
+			}
+		} else
+			wasspace = false;
+	return nexp;
+}
+
+
 docstring bformat(docstring const & fmt, int arg1)
 {
 	LATTEST(contains(fmt, from_ascii("%1$d")));
diff --git a/src/support/lstrings.h b/src/support/lstrings.h
index 3d42bb6..390d29c 100644
--- a/src/support/lstrings.h
+++ b/src/support/lstrings.h
@@ -368,6 +368,11 @@ docstring to_percent_encoding(docstring const & in, docstring const & ex = docst
 /// Returns a string decoded from an URI/URL-style percent-encoded string \p in.
 std::string from_percent_encoding(std::string const & in);
 
+/// returns the number of expanding characters taken into account for
+/// increased inter-word spacing during justification
+int countExpanders(docstring const & str);
+
+
 docstring bformat(docstring const & fmt, int arg1);
 docstring bformat(docstring const & fmt, long arg1);
 #ifdef HAVE_LONG_LONG_INT

commit 1f7d90d6367010d32f77a536a246e8fed9b3d381
Author: Kornel Benko <kornel at lyx.org>
Date:   Fri Apr 8 08:40:32 2022 +0200

    Find: Advanced + Quick:
    
    Expand list of quotes to include also '» « › ‹'
    Enable quick find to search for quotes too

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index be133b1..92bb883 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -4560,6 +4560,23 @@ void Paragraph::changeCase(BufferParams const & bparams, pos_type pos,
 	}
 }
 
+static char_type matchquote(char_type in)
+{
+	switch (in) {
+		case 0x2018:
+		case 0x201a:
+		case 0x203a:
+		case 0x2039:
+			return '\'';	// ‘ ‚ › ‹
+		case 0x00bb:
+		case 0x00ab:
+		case 0x201e:
+		case 0x201c:
+			return '"';	// » « „ “
+		default:
+			return in;
+	}
+}
 
 int Paragraph::find(docstring const & str, bool cs, bool mw,
 		pos_type start_pos, bool del) const
@@ -4590,8 +4607,9 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
 			if (!insetstring.empty()) {
 				int const insetstringsize = insetstring.length();
 				for (int j = 0; j < insetstringsize && pos < parsize; ++i, ++j) {
-					if ((cs && str[i] != insetstring[j])
-					    || (!cs && uppercase(str[i]) != uppercase(insetstring[j]))) {
+					char_type ij = matchquote(insetstring[j]);
+					if ((cs && str[i] != ij)
+					    || (!cs && uppercase(str[i]) != uppercase(ij))) {
 						nonmatch = true;
 						break;
 					}
@@ -4601,9 +4619,10 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
 		}
 		if (nonmatch || i == strsize)
 			break;
-		if (cs && str[i] != d->text_[pos])
+		char_type dp = matchquote(d->text_[pos]);
+		if (cs && str[i] != dp)
 			break;
-		if (!cs && uppercase(str[i]) != uppercase(d->text_[pos]))
+		if (!cs && uppercase(str[i]) != uppercase(dp))
 			break;
 	}
 
diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 0f02a39..c3f2b77 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -913,10 +913,10 @@ string correctRegex(string t, bool withformat)
 	else if (lastpos < t.length())
 		s += t.substr(lastpos, t.length() - lastpos);
 	// Handle quotes in regex
-	// substitute all '„', '“' with '"'
-	// and all '‚', '‘' with "\'"
-	static std::regex plainquotes { R"(„|“)" };
-	static std::regex innerquotes { R"(‚|‘)" };
+	// substitute all '„', '“', '»', '«' with '"'
+	// and all '‚', '‘', '›', '‹' with "\'"
+	static std::regex plainquotes { R"(„|“|»|«)" };
+	static std::regex innerquotes { R"(‚|‘|›|‹)" };
 	t = std::regex_replace(s, plainquotes, R"(")");
 	s = std::regex_replace(t, innerquotes, R"(')");
 	//LYXERR0("correctRegex output '" << s << "'");

commit aa66663364c44047bd97c919a651b8adcaf7617a
Author: Kornel Benko <kornel at lyx.org>
Date:   Wed Apr 6 19:00:20 2022 +0200

    FindAdv: Amend 58f70b9d
    
    Consider plain-quotes, inner-quotes
    1 independent if in regex or text
    2 independent of quote style
    3 independent of using dynamic marks

diff --git a/src/insets/InsetQuotes.cpp b/src/insets/InsetQuotes.cpp
index 3dfed9e..67ad767 100644
--- a/src/insets/InsetQuotes.cpp
+++ b/src/insets/InsetQuotes.cpp
@@ -942,11 +942,20 @@ void InsetQuotes::latex(otexstream & os, OutputParams const & runparams) const
 
 
 int InsetQuotes::plaintext(odocstringstream & os,
-        OutputParams const &, size_t) const
+        OutputParams const & op, size_t) const
 {
-	docstring const str = displayString();
-	os << str;
-	return str.size();
+	if (op.for_searchAdv == OutputParams::NoSearch) {
+		docstring const str = displayString();
+		os << str;
+		return str.size();
+	}
+	else {
+		if (level_ == QuoteLevel::Primary)
+			os << from_ascii("\"");
+		else
+			os << from_ascii("'");
+		return 1;
+	}
 }
 
 
diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 64da365..0f02a39 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -909,9 +909,16 @@ string correctRegex(string t, bool withformat)
 		lastpos = sub.position(2) + sub.length(2);
 	}
 	if (lastpos == 0)
-		return t;
+		s = t;
 	else if (lastpos < t.length())
 		s += t.substr(lastpos, t.length() - lastpos);
+	// Handle quotes in regex
+	// substitute all '„', '“' with '"'
+	// and all '‚', '‘' with "\'"
+	static std::regex plainquotes { R"(„|“)" };
+	static std::regex innerquotes { R"(‚|‘)" };
+	t = std::regex_replace(s, plainquotes, R"(")");
+	s = std::regex_replace(t, innerquotes, R"(')");
 	//LYXERR0("correctRegex output '" << s << "'");
 	return s;
 }

commit 58f70b9da1c4137a9c9831dfade8239b33288bbf
Author: Kornel Benko <kornel at lyx.org>
Date:   Tue Apr 5 17:04:51 2022 +0200

    FindAdv: Handle search for quotes
    
    Double quotes will be found if using the string '"' in pattern.
    Single quotes needs "'" in pattern.

diff --git a/src/insets/InsetQuotes.cpp b/src/insets/InsetQuotes.cpp
index dc6dbba..3dfed9e 100644
--- a/src/insets/InsetQuotes.cpp
+++ b/src/insets/InsetQuotes.cpp
@@ -851,7 +851,7 @@ void InsetQuotes::latex(otexstream & os, OutputParams const & runparams) const
 	docstring qstr;
 
 	// In pass-thru context, we output plain quotes
-	if (runparams.pass_thru)
+	if (runparams.pass_thru || runparams.for_searchAdv != OutputParams::NoSearch)
 		qstr = (level_ == QuoteLevel::Primary) ? from_ascii("\"") : from_ascii("'");
 	else if (style == QuoteStyle::Plain && fontspec_) {
 		// For XeTeX and LuaTeX,we need to disable mapping to get straight

commit 31ac9ed59ff7d4eb22dfc2520fb216baf74115b7
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Apr 4 12:02:25 2022 +0200

    Fix indentation

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index c4b6b96..64da365 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -892,7 +892,7 @@ string correctRegex(string t, bool withformat)
 			else if (sub.str(4) == "{") // transforms '\{' into '{'
 				replace = "{";
 			else if (sub.str(4) == "}")
-                                replace = "}";
+				replace = "}";
 			else {
 				AccentsIterator it_ac = accents.find(sub.str(4));
 				if (it_ac == accents.end()) {
@@ -961,8 +961,8 @@ public:
 	enum range {
 		newIsTooFar,
 		newIsBetter,
-                newIsInvalid
-        };
+		newIsInvalid
+	};
 	int match_len;
 	int match_prefix;
 	int match2end;
@@ -976,16 +976,16 @@ public:
 
 static MatchResult::range interpretMatch(MatchResult &oldres, MatchResult &newres)
 {
-  if (newres.match2end < oldres.match2end)
-    return MatchResult::newIsTooFar;
-  if (newres.match_len < oldres.match_len)
-    return MatchResult::newIsTooFar;
-
-  if (newres.match_len == oldres.match_len) {
-    if (newres.match2end == oldres.match2end)
-      return MatchResult::newIsBetter;
-  }
-  return MatchResult::newIsInvalid;
+	if (newres.match2end < oldres.match2end)
+		return MatchResult::newIsTooFar;
+	if (newres.match_len < oldres.match_len)
+		return MatchResult::newIsTooFar;
+
+	if (newres.match_len == oldres.match_len) {
+		if (newres.match2end == oldres.match2end)
+			return MatchResult::newIsBetter;
+	}
+	return MatchResult::newIsInvalid;
 }
 
 /** The class performing a match between a position in the document and the FindAdvOptions.
@@ -1071,13 +1071,12 @@ vector <string> MatchStringAdv::matches = vector <string>(10);
 
 void MatchStringAdv::FillResults(MatchResult &found_mr)
 {
-  if (found_mr.match_len > 0) {
-    valid_matches = found_mr.result.size();
-    for (size_t i = 0; i < found_mr.result.size(); i++)
-      matches[i] = found_mr.result[i];
-  }
-  else
-    valid_matches = 0;
+	if (found_mr.match_len > 0) {
+		valid_matches = found_mr.result.size();
+		for (size_t i = 0; i < found_mr.result.size(); i++)
+			matches[i] = found_mr.result[i];
+	} else
+		valid_matches = 0;
 }
 
 static docstring buffer_to_latex(Buffer & buffer)
@@ -1202,12 +1201,12 @@ static size_t identifyLeading(string const & s)
 	// Kornel: Added textsl, textsf, textit, texttt and noun
 	// + allow to search for colored text too
 	while (regex_replace(t, t, "^\\\\(("
-	                     "(author|title|subtitle|subject|publishers|dedication|uppertitleback|lowertitleback|extratitle|"
-	                       "lyxaddress|lyxrightaddress|"
-	                       "footnotesize|tiny|scriptsize|small|large|Large|LARGE|huge|Huge|"
-	                       "emph|noun|minisec|text(bf|md|sl|sf|it|tt))|"
-	                     "((textcolor|foreignlanguage|latexenvironment)\\{[a-z]+\\*?\\})|"
-	                     "(u|uu)line|(s|x)out|uwave)|((sub)?(((sub)?section)|paragraph)|part|chapter)\\*?)\\{", "")
+			     "(author|title|subtitle|subject|publishers|dedication|uppertitleback|lowertitleback|extratitle|"
+			     "lyxaddress|lyxrightaddress|"
+			     "footnotesize|tiny|scriptsize|small|large|Large|LARGE|huge|Huge|"
+			     "emph|noun|minisec|text(bf|md|sl|sf|it|tt))|"
+			     "((textcolor|foreignlanguage|latexenvironment)\\{[a-z]+\\*?\\})|"
+			     "(u|uu)line|(s|x)out|uwave)|((sub)?(((sub)?section)|paragraph)|part|chapter)\\*?)\\{", "")
 	       || regex_replace(t, t, "^\\$", "")
 	       || regex_replace(t, t, "^\\\\\\[", "")
 	       || regex_replace(t, t, "^ ?\\\\item\\{[a-z]+\\}", "")
@@ -1271,169 +1270,170 @@ static Features identifyFeatures(string const & s)
  * defines values features of a key "\\[a-z]+{"
  */
 class KeyInfo {
- public:
-  enum KeyType {
-    /* Char type with content discarded
-     * like \hspace{1cm} */
-    noContent,
-    /* Char, like \backslash */
-    isChar,
-    /* replace starting backslash with '#' */
-    isText,
-    /* \part, \section*, ... */
-    isSectioning,
-    /* title, author etc */
-    isTitle,
-    /* \foreignlanguage{ngerman}, ... */
-    isMain,
-    /* inside \code{}
-     * to discard language in content */
-    noMain,
-    isRegex,
-    /* \begin{eqnarray}...\end{eqnarray}, ... $...$ */
-    isMath,
-    /* fonts, colors, markups, ... */
-    isStandard,
-    /* footnotesize, ... large, ...
-     * Ignore all of them */
-    isSize,
-    invalid,
-    /* inputencoding, ...
-     * Discard also content, because they do not help in search */
-    doRemove,
-    /* twocolumns, ...
-     * like remove, but also all arguments */
-    removeWithArg,
-    /* item, listitem */
-    isList,
-    /* tex, latex, ... like isChar */
-    isIgnored,
-    /* like \lettrine[lines=5]{}{} */
-    cleanToStart,
-    // like isStandard, but always remove head
-    headRemove,
-    /* End of arguments marker for lettrine,
-     * so that they can be ignored */
-    endArguments
-  };
- KeyInfo() = default;
- KeyInfo(KeyType type, int parcount, bool disable)
-   : keytype(type),
-    parenthesiscount(parcount),
-    disabled(disable) {}
-  KeyType keytype = invalid;
-  string head;
-  int _tokensize = -1;
-  int _tokenstart = -1;
-  int _dataStart = -1;
-  int _dataEnd = -1;
-  int parenthesiscount = 1;
-  bool disabled = false;
-  bool used = false;                    /* by pattern */
+public:
+	enum KeyType {
+		/* Char type with content discarded
+		 * like \hspace{1cm} */
+		noContent,
+		/* Char, like \backslash */
+		isChar,
+		/* replace starting backslash with '#' */
+		isText,
+		/* \part, \section*, ... */
+		isSectioning,
+		/* title, author etc */
+		isTitle,
+		/* \foreignlanguage{ngerman}, ... */
+		isMain,
+		/* inside \code{}
+		 * to discard language in content */
+		noMain,
+		isRegex,
+		/* \begin{eqnarray}...\end{eqnarray}, ... $...$ */
+		isMath,
+		/* fonts, colors, markups, ... */
+		isStandard,
+		/* footnotesize, ... large, ...
+		 * Ignore all of them */
+		isSize,
+		invalid,
+		/* inputencoding, ...
+		 * Discard also content, because they do not help in search */
+		doRemove,
+		/* twocolumns, ...
+		 * like remove, but also all arguments */
+		removeWithArg,
+		/* item, listitem */
+		isList,
+		/* tex, latex, ... like isChar */
+		isIgnored,
+		/* like \lettrine[lines=5]{}{} */
+		cleanToStart,
+		// like isStandard, but always remove head
+		headRemove,
+		/* End of arguments marker for lettrine,
+		 * so that they can be ignored */
+		endArguments
+	};
+	KeyInfo() = default;
+	KeyInfo(KeyType type, int parcount, bool disable)
+		: keytype(type),
+		  parenthesiscount(parcount),
+		  disabled(disable) {}
+	KeyType keytype = invalid;
+	string head;
+	int _tokensize = -1;
+	int _tokenstart = -1;
+	int _dataStart = -1;
+	int _dataEnd = -1;
+	int parenthesiscount = 1;
+	bool disabled = false;
+	bool used = false; /* by pattern */
 };
 
 class Border {
- public:
- Border(int l=0, int u=0) : low(l), upper(u) {}
-  int low;
-  int upper;
+public:
+	Border(int l=0, int u=0) : low(l), upper(u) {}
+	int low;
+	int upper;
 };
 
 #define MAXOPENED 30
 class Intervall {
-  bool isPatternString_;
+	bool isPatternString_;
 public:
-  explicit Intervall(bool isPattern, string const & p) :
-        isPatternString_(isPattern), par(p), ignoreidx(-1), actualdeptindex(0),
-        hasTitle(false), langcount(0)
-  {
-    depts[0] = 0;
-    closes[0] = 0;
-  }
-
-  string par;
-  int ignoreidx;
-  static vector<Border> borders;
-  int depts[MAXOPENED];
-  int closes[MAXOPENED];
-  int actualdeptindex;
-  int previousNotIgnored(int) const;
-  int nextNotIgnored(int) const;
-  void handleOpenP(int i);
-  void handleCloseP(int i, bool closingAllowed);
-  void resetOpenedP(int openPos);
-  void addIntervall(int upper);
-  void addIntervall(int low, int upper); /* if explicit */
-  void removeAccents();
-  void setForDefaultLang(KeyInfo const & defLang) const;
-  int findclosing(int start, int end, char up, char down, int repeat);
-  void handleParentheses(int lastpos, bool closingAllowed);
-  bool hasTitle;
-  int langcount;	// Number of disabled language specs up to current position in actual interval
-  int isOpeningPar(int pos) const;
-  string titleValue;
-  void output(ostringstream &os, int lastpos);
-  // string show(int lastpos);
+	explicit Intervall(bool isPattern, string const & p)
+		: isPatternString_(isPattern), par(p), ignoreidx(-1),
+		  actualdeptindex(0), hasTitle(false), langcount(0)
+	{
+		depts[0] = 0;
+		closes[0] = 0;
+	}
+
+	string par;
+	int ignoreidx;
+	static vector<Border> borders;
+	int depts[MAXOPENED];
+	int closes[MAXOPENED];
+	int actualdeptindex;
+	int previousNotIgnored(int) const;
+	int nextNotIgnored(int) const;
+	void handleOpenP(int i);
+	void handleCloseP(int i, bool closingAllowed);
+	void resetOpenedP(int openPos);
+	void addIntervall(int upper);
+	void addIntervall(int low, int upper); /* if explicit */
+	void removeAccents();
+	void setForDefaultLang(KeyInfo const & defLang) const;
+	int findclosing(int start, int end, char up, char down, int repeat);
+	void handleParentheses(int lastpos, bool closingAllowed);
+	bool hasTitle;
+	// Number of disabled language specs up
+	// to current position in actual interval
+	int langcount;
+	int isOpeningPar(int pos) const;
+	string titleValue;
+	void output(ostringstream &os, int lastpos);
+	// string show(int lastpos);
 };
 
 vector<Border> Intervall::borders = vector<Border>(30);
 
 int Intervall::isOpeningPar(int pos) const
 {
-  if ((pos < 0) || (size_t(pos) >= par.size()))
-    return 0;
-  if (par[pos] != '{')
-    return 0;
-  if (size_t(pos) + 2 >= par.size())
-    return 1;
-  if (par[pos+2] != '}')
-    return 1;
-  if (par[pos+1] == '[' || par[pos+1] == ']')
-    return 3;
-  return 1;
+	if ((pos < 0) || (size_t(pos) >= par.size()))
+		return 0;
+	if (par[pos] != '{')
+		return 0;
+	if (size_t(pos) + 2 >= par.size())
+		return 1;
+	if (par[pos+2] != '}')
+		return 1;
+	if (par[pos+1] == '[' || par[pos+1] == ']')
+		return 3;
+	return 1;
 }
 
 void Intervall::setForDefaultLang(KeyInfo const & defLang) const
 {
-  // Enable the use of first token again
-  if (ignoreidx >= 0) {
-    int value = defLang._tokenstart + defLang._tokensize;
-    int borderidx = 0;
-    if (hasTitle) {
-      borderidx = 1;
-    }
-    if (value > 0) {
-      if (borders[borderidx].low < value)
-        borders[borderidx].low = value;
-      if (borders[borderidx].upper < value)
-        borders[borderidx].upper = value;
-    }
-  }
+	// Enable the use of first token again
+	if (ignoreidx >= 0) {
+		int value = defLang._tokenstart + defLang._tokensize;
+		int borderidx = 0;
+		if (hasTitle)
+			borderidx = 1;
+		if (value > 0) {
+			if (borders[borderidx].low < value)
+				borders[borderidx].low = value;
+			if (borders[borderidx].upper < value)
+				borders[borderidx].upper = value;
+		}
+	}
 }
 
 static void checkDepthIndex(int val)
 {
-  static int maxdepthidx = MAXOPENED-2;
-  static int lastmaxdepth = 0;
-  if (val > lastmaxdepth) {
-    LYXERR(Debug::INFO, "Depth reached " << val);
-    lastmaxdepth = val;
-  }
-  if (val > maxdepthidx) {
-    maxdepthidx = val;
-    LYXERR(Debug::INFO, "maxdepthidx now " << val);
-  }
+	static int maxdepthidx = MAXOPENED-2;
+	static int lastmaxdepth = 0;
+	if (val > lastmaxdepth) {
+		LYXERR(Debug::INFO, "Depth reached " << val);
+		lastmaxdepth = val;
+	}
+	if (val > maxdepthidx) {
+		maxdepthidx = val;
+		LYXERR(Debug::INFO, "maxdepthidx now " << val);
+	}
 }
 
 #if 0
 // Not needed, because borders are now dynamically expanded
 static void checkIgnoreIdx(int val)
 {
-  static int lastmaxignore = -1;
-  if ((lastmaxignore < val) && (size_t(val+1) >= borders.size())) {
-    LYXERR(Debug::INFO, "IgnoreIdx reached " << val);
-    lastmaxignore = val;
-  }
+	static int lastmaxignore = -1;
+	if ((lastmaxignore < val) && (size_t(val+1) >= borders.size())) {
+		LYXERR(Debug::INFO, "IgnoreIdx reached " << val);
+		lastmaxignore = val;
+	}
 }
 #endif
 
@@ -1443,114 +1443,114 @@ static void checkIgnoreIdx(int val)
  */
 void Intervall::addIntervall(int low, int upper)
 {
-  int idx;
-  if (low == upper) return;
-  for (idx = ignoreidx+1; idx > 0; --idx) {
-    if (low > borders[idx-1].upper) {
-      break;
-    }
-  }
-  Border br(low, upper);
-  if (idx > ignoreidx) {
-    if (borders.size() <= size_t(idx)) {
-      borders.push_back(br);
-    }
-    else {
-      borders[idx] = br;
-    }
-    ignoreidx = idx;
-    // checkIgnoreIdx(ignoreidx);
-    return;
-  }
-  else {
-    // Expand only if one of the new bound is inside the interwall
-    // We know here that br.low > borders[idx-1].upper
-    if (br.upper < borders[idx].low) {
-      // We have to insert at this pos
-      if (size_t(ignoreidx+1) >= borders.size()) {
-        borders.push_back(borders[ignoreidx]);
-      }
-      else {
-        borders[ignoreidx+1] = borders[ignoreidx];
-      }
-      for (int i = ignoreidx; i > idx; --i) {
-        borders[i] = borders[i-1];
-      }
-      borders[idx] = br;
-      ignoreidx += 1;
-      // checkIgnoreIdx(ignoreidx);
-      return;
-    }
-    // Here we know, that we are overlapping
-    if (br.low > borders[idx].low)
-      br.low = borders[idx].low;
-    // check what has to be concatenated
-    int count = 0;
-    for (int i = idx; i <= ignoreidx; i++) {
-      if (br.upper >= borders[i].low) {
-        count++;
-        if (br.upper < borders[i].upper)
-          br.upper = borders[i].upper;
-      }
-      else {
-        break;
-      }
-    }
-    // count should be >= 1 here
-    borders[idx] = br;
-    if (count > 1) {
-      for (int i = idx + count; i <= ignoreidx; i++) {
-        borders[i-count+1] = borders[i];
-      }
-      ignoreidx -= count - 1;
-      return;
-    }
-  }
+	int idx;
+	if (low == upper) return;
+	for (idx = ignoreidx+1; idx > 0; --idx) {
+		if (low > borders[idx-1].upper) {
+			break;
+		}
+	}
+	Border br(low, upper);
+	if (idx > ignoreidx) {
+		if (borders.size() <= size_t(idx)) {
+			borders.push_back(br);
+		}
+		else {
+			borders[idx] = br;
+		}
+		ignoreidx = idx;
+		// checkIgnoreIdx(ignoreidx);
+		return;
+	}
+	else {
+		// Expand only if one of the new bound is inside the interwall
+		// We know here that br.low > borders[idx-1].upper
+		if (br.upper < borders[idx].low) {
+			// We have to insert at this pos
+			if (size_t(ignoreidx+1) >= borders.size()) {
+				borders.push_back(borders[ignoreidx]);
+			}
+			else {
+				borders[ignoreidx+1] = borders[ignoreidx];
+			}
+			for (int i = ignoreidx; i > idx; --i) {
+				borders[i] = borders[i-1];
+			}
+			borders[idx] = br;
+			ignoreidx += 1;
+			// checkIgnoreIdx(ignoreidx);
+			return;
+		}
+		// Here we know, that we are overlapping
+		if (br.low > borders[idx].low)
+			br.low = borders[idx].low;
+		// check what has to be concatenated
+		int count = 0;
+		for (int i = idx; i <= ignoreidx; i++) {
+			if (br.upper >= borders[i].low) {
+				count++;
+				if (br.upper < borders[i].upper)
+					br.upper = borders[i].upper;
+			}
+			else {
+				break;
+			}
+		}
+		// count should be >= 1 here
+		borders[idx] = br;
+		if (count > 1) {
+			for (int i = idx + count; i <= ignoreidx; i++) {
+				borders[i-count+1] = borders[i];
+			}
+			ignoreidx -= count - 1;
+			return;
+		}
+	}
 }
 
 static void buildaccent(string n, string param, string values)
 {
-  stringstream s(n);
-  string name;
-  const char delim = '|';
-  while (getline(s, name, delim)) {
-    size_t start = 0;
-    for (char c : param) {
-      string key = name + "{" + c + "}";
-      // get the corresponding utf8-value
-      if ((values[start] & 0xc0) != 0xc0) {
-        // should not happen, utf8 encoding starts at least with 11xxxxxx
-        // but value for '\dot{i}' is 'i', which is ascii
-        if ((values[start] & 0x80) == 0) {
-          // is ascii
-          accents[key] = values.substr(start, 1);
-          // LYXERR(Debug::INFO, "" << key << "=" << accents[key]);
-        }
-        start++;
-        continue;
-      }
-      for (int j = 1; ;j++) {
-        if (start + j >= values.size()) {
-          accents[key] = values.substr(start, j);
-          start = values.size() - 1;
-          break;
-        }
-        else if ((values[start+j] & 0xc0) != 0x80) {
-          // This is the first byte of following utf8 char
-          accents[key] = values.substr(start, j);
-          start += j;
-          // LYXERR(Debug::INFO, "" << key << "=" << accents[key]);
-          break;
-        }
-      }
-    }
-  }
+	stringstream s(n);
+	string name;
+	const char delim = '|';
+	while (getline(s, name, delim)) {
+		size_t start = 0;
+		for (char c : param) {
+			string key = name + "{" + c + "}";
+			// get the corresponding utf8-value
+			if ((values[start] & 0xc0) != 0xc0) {
+				// should not happen, utf8 encoding starts at least with 11xxxxxx
+				// but value for '\dot{i}' is 'i', which is ascii
+				if ((values[start] & 0x80) == 0) {
+					// is ascii
+					accents[key] = values.substr(start, 1);
+					// LYXERR(Debug::INFO, "" << key << "=" << accents[key]);
+				}
+				start++;
+				continue;
+			}
+			for (int j = 1; ;j++) {
+				if (start + j >= values.size()) {
+					accents[key] = values.substr(start, j);
+					start = values.size() - 1;
+					break;
+				}
+				else if ((values[start+j] & 0xc0) != 0x80) {
+					// This is the first byte of following utf8 char
+					accents[key] = values.substr(start, j);
+					start += j;
+					// LYXERR(Debug::INFO, "" << key << "=" << accents[key]);
+					break;
+				}
+			}
+		}
+	}
 }
 
 // Helper function
 static string getutf8(unsigned uchar)
 {
-	#define maxc 5
+#define maxc 5
 	string ret = string();
 	char c[maxc] = {0};
 	if (uchar <= 0x7f) {
@@ -1581,385 +1581,385 @@ static string getutf8(unsigned uchar)
 
 static void addAccents(string latex_in, string unicode_out)
 {
-  latex_in = latex_in.substr(1);
-  AccentsIterator it_ac = accents.find(latex_in);
-  if (it_ac == accents.end()) {
-    accents[latex_in] = unicode_out;
-  }
-  else {
-    LYXERR0("Key " << latex_in  << " already set");
-  }
+	latex_in = latex_in.substr(1);
+	AccentsIterator it_ac = accents.find(latex_in);
+	if (it_ac == accents.end()) {
+		accents[latex_in] = unicode_out;
+	}
+	else {
+		LYXERR0("Key " << latex_in  << " already set");
+	}
 }
 
 void static fillMissingUnicodesymbols()
 {
-  addAccents("\\pounds", getutf8(0x00a3));
-  addAccents("\\textsterling", getutf8(0x00a3));
-  addAccents("\\textyen", getutf8(0x00a5));
-  addAccents("\\yen", getutf8(0x00a5));
-  addAccents("\\textsection", getutf8(0x00a7));
-  addAccents("\\mathsection", getutf8(0x00a7));
-  addAccents("\\textcopyright", getutf8(0x00a9));
-  addAccents("\\copyright", getutf8(0x00a9));
-  addAccents("\\textlnot", getutf8(0x00ac));
-  addAccents("\\neg", getutf8(0x00ac));
-  addAccents("\\textregistered", getutf8(0x00ae));
-  addAccents("\\circledR", getutf8(0x00ae));
-  addAccents("\\textpm", getutf8(0x00b1));
-  addAccents("\\pm", getutf8(0x00b1));
-  addAccents("\\textparagraph", getutf8(0x00b6));
-  addAccents("\\mathparagraph", getutf8(0x00b6));
-  addAccents("\\textperiodcentered", getutf8(0x00b7));
-  addAccents("\\texttimes", getutf8(0x00d7));
-  addAccents("\\times", getutf8(0x00d7));
-  addAccents("\\O", getutf8(0x00d8));
-  addAccents("\\dh", getutf8(0x00f0));
-  addAccents("\\eth", getutf8(0x00f0));
-  addAccents("\\textdiv", getutf8(0x00f7));
-  addAccents("\\div", getutf8(0x00f7));
-  addAccents("\\o", getutf8(0x00f8));
-  addAccents("\\textcrlambda", getutf8(0x019b));
-  addAccents("\\j", getutf8(0x0237));
-  addAccents("\\textrevepsilon", getutf8(0x025c));
-  addAccents("\\textbaru", getutf8(0x0289));
-  addAccents("\\textquoteleft", getutf8(0x02bb));
-  addAccents("\\textGamma", getutf8(0x0393));
-  addAccents("\\Gamma", getutf8(0x0393));
-  addAccents("\\textDelta", getutf8(0x0394));
-  addAccents("\\Delta", getutf8(0x0394));
-  addAccents("\\textTheta", getutf8(0x0398));
-  addAccents("\\Theta", getutf8(0x0398));
-  addAccents("\\textLambda", getutf8(0x039b));
-  addAccents("\\Lambda", getutf8(0x039b));
-  addAccents("\\textXi", getutf8(0x039e));
-  addAccents("\\Xi", getutf8(0x039e));
-  addAccents("\\textPi", getutf8(0x03a0));
-  addAccents("\\Pi", getutf8(0x03a0));
-  addAccents("\\textSigma", getutf8(0x03a3));
-  addAccents("\\Sigma", getutf8(0x03a3));
-  addAccents("\\textUpsilon", getutf8(0x03a5));
-  addAccents("\\Upsilon", getutf8(0x03a5));
-  addAccents("\\textPhi", getutf8(0x03a6));
-  addAccents("\\Phi", getutf8(0x03a6));
-  addAccents("\\textPsi", getutf8(0x03a8));
-  addAccents("\\Psi", getutf8(0x03a8));
-  addAccents("\\textOmega", getutf8(0x03a9));
-  addAccents("\\Omega", getutf8(0x03a9));
-  addAccents("\\textalpha", getutf8(0x03b1));
-  addAccents("\\alpha", getutf8(0x03b1));
-  addAccents("\\textbeta", getutf8(0x03b2));
-  addAccents("\\beta", getutf8(0x03b2));
-  addAccents("\\textgamma", getutf8(0x03b3));
-  addAccents("\\gamma", getutf8(0x03b3));
-  addAccents("\\textdelta", getutf8(0x03b4));
-  addAccents("\\delta", getutf8(0x03b4));
-  addAccents("\\textepsilon", getutf8(0x03b5));
-  addAccents("\\varepsilon", getutf8(0x03b5));
-  addAccents("\\textzeta", getutf8(0x03b6));
-  addAccents("\\zeta", getutf8(0x03b6));
-  addAccents("\\texteta", getutf8(0x03b7));
-  addAccents("\\eta", getutf8(0x03b7));
-  addAccents("\\texttheta", getutf8(0x03b8));
-  addAccents("\\theta", getutf8(0x03b8));
-  addAccents("\\textiota", getutf8(0x03b9));
-  addAccents("\\iota", getutf8(0x03b9));
-  addAccents("\\textkappa", getutf8(0x03ba));
-  addAccents("\\kappa", getutf8(0x03ba));
-  addAccents("\\textlambda", getutf8(0x03bb));
-  addAccents("\\lambda", getutf8(0x03bb));
-  addAccents("\\textmu", getutf8(0x03bc));
-  addAccents("\\mu", getutf8(0x03bc));
-  addAccents("\\textnu", getutf8(0x03bd));
-  addAccents("\\nu", getutf8(0x03bd));
-  addAccents("\\textxi", getutf8(0x03be));
-  addAccents("\\xi", getutf8(0x03be));
-  addAccents("\\textpi", getutf8(0x03c0));
-  addAccents("\\pi", getutf8(0x03c0));
-  addAccents("\\textrho", getutf8(0x03c1));
-  addAccents("\\rho", getutf8(0x03c1));
-  addAccents("\\textfinalsigma", getutf8(0x03c2));
-  addAccents("\\varsigma", getutf8(0x03c2));
-  addAccents("\\textsigma", getutf8(0x03c3));
-  addAccents("\\sigma", getutf8(0x03c3));
-  addAccents("\\texttau", getutf8(0x03c4));
-  addAccents("\\tau", getutf8(0x03c4));
-  addAccents("\\textupsilon", getutf8(0x03c5));
-  addAccents("\\upsilon", getutf8(0x03c5));
-  addAccents("\\textphi", getutf8(0x03c6));
-  addAccents("\\varphi", getutf8(0x03c6));
-  addAccents("\\textchi", getutf8(0x03c7));
-  addAccents("\\chi", getutf8(0x03c7));
-  addAccents("\\textpsi", getutf8(0x03c8));
-  addAccents("\\psi", getutf8(0x03c8));
-  addAccents("\\textomega", getutf8(0x03c9));
-  addAccents("\\omega", getutf8(0x03c9));
-  addAccents("\\textdigamma", getutf8(0x03dd));
-  addAccents("\\digamma", getutf8(0x03dd));
-  addAccents("\\hebalef", getutf8(0x05d0));
-  addAccents("\\aleph", getutf8(0x05d0));
-  addAccents("\\hebbet", getutf8(0x05d1));
-  addAccents("\\beth", getutf8(0x05d1));
-  addAccents("\\hebgimel", getutf8(0x05d2));
-  addAccents("\\gimel", getutf8(0x05d2));
-  addAccents("\\hebdalet", getutf8(0x05d3));
-  addAccents("\\daleth", getutf8(0x05d3));
-  addAccents("\\hebhe", getutf8(0x05d4));
-  addAccents("\\hebvav", getutf8(0x05d5));
-  addAccents("\\hebzayin", getutf8(0x05d6));
-  addAccents("\\hebhet", getutf8(0x05d7));
-  addAccents("\\hebtet", getutf8(0x05d8));
-  addAccents("\\hebyod", getutf8(0x05d9));
-  addAccents("\\hebfinalkaf", getutf8(0x05da));
-  addAccents("\\hebkaf", getutf8(0x05db));
-  addAccents("\\heblamed", getutf8(0x05dc));
-  addAccents("\\hebfinalmem", getutf8(0x05dd));
-  addAccents("\\hebmem", getutf8(0x05de));
-  addAccents("\\hebfinalnun", getutf8(0x05df));
-  addAccents("\\hebnun", getutf8(0x05e0));
-  addAccents("\\hebsamekh", getutf8(0x05e1));
-  addAccents("\\hebayin", getutf8(0x05e2));
-  addAccents("\\hebfinalpe", getutf8(0x05e3));
-  addAccents("\\hebpe", getutf8(0x05e4));
-  addAccents("\\hebfinaltsadi", getutf8(0x05e5));
-  addAccents("\\hebtsadi", getutf8(0x05e6));
-  addAccents("\\hebqof", getutf8(0x05e7));
-  addAccents("\\hebresh", getutf8(0x05e8));
-  addAccents("\\hebshin", getutf8(0x05e9));
-  addAccents("\\hebtav", getutf8(0x05ea));
-
-  // Thai characters
-  addAccents("\\thaiKoKai", getutf8(0x0e01));
-  addAccents("\\thaiKhoKhai", getutf8(0x0e02));
-  addAccents("\\thaiKhoKhuat", getutf8(0x0e03));
-  addAccents("\\thaiKhoKhwai", getutf8(0x0e04));
-  addAccents("\\thaiKhoKhon", getutf8(0x0e05));
-  addAccents("\\thaiKhoRakhang", getutf8(0x0e06));
-  addAccents("\\thaiNgoNgu", getutf8(0x0e07));
-  addAccents("\\thaiChoChan", getutf8(0x0e08));
-  addAccents("\\thaiChoChing", getutf8(0x0e09));
-  addAccents("\\thaiChoChang", getutf8(0x0e0a));
-  addAccents("\\thaiSoSo", getutf8(0x0e0b));
-  addAccents("\\thaiChoChoe", getutf8(0x0e0c));
-  addAccents("\\thaiYoYing", getutf8(0x0e0d));
-  addAccents("\\thaiDoChada", getutf8(0x0e0e));
-  addAccents("\\thaiToPatak", getutf8(0x0e0f));
-  addAccents("\\thaiThoThan", getutf8(0x0e10));
-  addAccents("\\thaiThoNangmontho", getutf8(0x0e11));
-  addAccents("\\thaiThoPhuthao", getutf8(0x0e12));
-  addAccents("\\thaiNoNen", getutf8(0x0e13));
-  addAccents("\\thaiDoDek", getutf8(0x0e14));
-  addAccents("\\thaiToTao", getutf8(0x0e15));
-  addAccents("\\thaiThoThung", getutf8(0x0e16));
-  addAccents("\\thaiThoThahan", getutf8(0x0e17));
-  addAccents("\\thaiThoThong", getutf8(0x0e18));
-  addAccents("\\thaiNoNu", getutf8(0x0e19));
-  addAccents("\\thaiBoBaimai", getutf8(0x0e1a));
-  addAccents("\\thaiPoPla", getutf8(0x0e1b));
-  addAccents("\\thaiPhoPhung", getutf8(0x0e1c));
-  addAccents("\\thaiFoFa", getutf8(0x0e1d));
-  addAccents("\\thaiPhoPhan", getutf8(0x0e1e));
-  addAccents("\\thaiFoFan", getutf8(0x0e1f));
-  addAccents("\\thaiPhoSamphao", getutf8(0x0e20));
-  addAccents("\\thaiMoMa", getutf8(0x0e21));
-  addAccents("\\thaiYoYak", getutf8(0x0e22));
-  addAccents("\\thaiRoRua", getutf8(0x0e23));
-  addAccents("\\thaiRu", getutf8(0x0e24));
-  addAccents("\\thaiLoLing", getutf8(0x0e25));
-  addAccents("\\thaiLu", getutf8(0x0e26));
-  addAccents("\\thaiWoWaen", getutf8(0x0e27));
-  addAccents("\\thaiSoSala", getutf8(0x0e28));
-  addAccents("\\thaiSoRusi", getutf8(0x0e29));
-  addAccents("\\thaiSoSua", getutf8(0x0e2a));
-  addAccents("\\thaiHoHip", getutf8(0x0e2b));
-  addAccents("\\thaiLoChula", getutf8(0x0e2c));
-  addAccents("\\thaiOAng", getutf8(0x0e2d));
-  addAccents("\\thaiHoNokhuk", getutf8(0x0e2e));
-  addAccents("\\thaiPaiyannoi", getutf8(0x0e2f));
-  addAccents("\\thaiSaraA", getutf8(0x0e30));
-  addAccents("\\thaiMaiHanakat", getutf8(0x0e31));
-  addAccents("\\thaiSaraAa", getutf8(0x0e32));
-  addAccents("\\thaiSaraAm", getutf8(0x0e33));
-  addAccents("\\thaiSaraI", getutf8(0x0e34));
-  addAccents("\\thaiSaraIi", getutf8(0x0e35));
-  addAccents("\\thaiSaraUe", getutf8(0x0e36));
-  addAccents("\\thaiSaraUee", getutf8(0x0e37));
-  addAccents("\\thaiSaraU", getutf8(0x0e38));
-  addAccents("\\thaiSaraUu", getutf8(0x0e39));
-  addAccents("\\thaiPhinthu", getutf8(0x0e3a));
-  addAccents("\\thaiSaraE", getutf8(0x0e40));
-  addAccents("\\thaiSaraAe", getutf8(0x0e41));
-  addAccents("\\thaiSaraO", getutf8(0x0e42));
-  addAccents("\\thaiSaraAiMaimuan", getutf8(0x0e43));
-  addAccents("\\thaiSaraAiMaimalai", getutf8(0x0e44));
-  addAccents("\\thaiLakkhangyao", getutf8(0x0e45));
-  addAccents("\\thaiMaiyamok", getutf8(0x0e46));
-  addAccents("\\thaiMaitaikhu", getutf8(0x0e47));
-  addAccents("\\thaiMaiEk", getutf8(0x0e48));
-  addAccents("\\thaiMaiTho", getutf8(0x0e49));
-  addAccents("\\thaiMaiTri", getutf8(0x0e4a));
-  addAccents("\\thaiMaiChattawa", getutf8(0x0e4b));
-  addAccents("\\thaiThanthakhat", getutf8(0x0e4c));
-  addAccents("\\thaiNikhahit", getutf8(0x0e4d));
-  addAccents("\\thaiYamakkan", getutf8(0x0e4e));
-  addAccents("\\thaiFongman", getutf8(0x0e4f));
-  addAccents("\\thaizero", getutf8(0x0e50));
-  addAccents("\\thaione", getutf8(0x0e51));
-  addAccents("\\thaitwo", getutf8(0x0e52));
-  addAccents("\\thaithree", getutf8(0x0e53));
-  addAccents("\\thaifour", getutf8(0x0e54));
-  addAccents("\\thaifive", getutf8(0x0e55));
-  addAccents("\\thaisix", getutf8(0x0e56));
-  addAccents("\\thaiseven", getutf8(0x0e57));
-  addAccents("\\thaieight", getutf8(0x0e58));
-  addAccents("\\thainine", getutf8(0x0e59));
-  addAccents("\\thaiAngkhankhu", getutf8(0x0e5a));
-  addAccents("\\thaiKhomut", getutf8(0x0e5b));
-  addAccents("\\dag", getutf8(0x2020));
-  addAccents("\\dagger", getutf8(0x2020));
-  addAccents("\\textdagger", getutf8(0x2020));
-  addAccents("\\ddag", getutf8(0x2021));
-  addAccents("\\ddagger", getutf8(0x2021));
-  addAccents("\\textdaggerdbl", getutf8(0x2021));
-  addAccents("\\textbullet", getutf8(0x2022));
-  addAccents("\\bullet", getutf8(0x2022));
-  addAccents("\\dots", getutf8(0x2026));
-  addAccents("\\ldots", getutf8(0x2026));
-  addAccents("\\textellipsis", getutf8(0x2026));
-  addAccents("\\textasciiacute", getutf8(0x2032));
-  addAccents("\\prime", getutf8(0x2032));
-  addAccents("\\textacutedbl", getutf8(0x2033));
-  addAccents("\\dprime", getutf8(0x2033));
-  addAccents("\\textasciigrave", getutf8(0x2035));
-  addAccents("\\backprime", getutf8(0x2035));
-  addAccents("\\textsubcircum{ }", getutf8(0x2038));
-  addAccents("\\caretinsert", getutf8(0x2038));
-  addAccents("\\textasteriskcentered", getutf8(0x204e));
-  addAccents("\\ast", getutf8(0x204e));
-  addAccents("\\textmho", getutf8(0x2127));
-  addAccents("\\mho", getutf8(0x2127));
-  addAccents("\\textleftarrow", getutf8(0x2190));
-  addAccents("\\leftarrow", getutf8(0x2190));
-  addAccents("\\textuparrow", getutf8(0x2191));
-  addAccents("\\uparrow", getutf8(0x2191));
-  addAccents("\\textrightarrow", getutf8(0x2192));
-  addAccents("\\rightarrow", getutf8(0x2192));
-  addAccents("\\textdownarrow", getutf8(0x2193));
-  addAccents("\\downarrow", getutf8(0x2193));
-  addAccents("\\textglobrise", getutf8(0x2197));
-  addAccents("\\nearrow", getutf8(0x2197));
-  addAccents("\\textglobfall", getutf8(0x2198));
-  addAccents("\\searrow", getutf8(0x2198));
-  addAccents("\\textsurd", getutf8(0x221a));
-  addAccents("\\surd", getutf8(0x221a));
-  addAccents("\\textbigcircle", getutf8(0x25ef));
-  addAccents("\\bigcirc", getutf8(0x25ef));
-  addAccents("\\FiveStar", getutf8(0x2605));
-  addAccents("\\bigstar", getutf8(0x2605));
-  addAccents("\\FiveStarOpen", getutf8(0x2606));
-  addAccents("\\bigwhitestar", getutf8(0x2606));
-  addAccents("\\Checkmark", getutf8(0x2713));
-  addAccents("\\checkmark", getutf8(0x2713));
-  addAccents("\\CrossMaltese", getutf8(0x2720));
-  addAccents("\\maltese", getutf8(0x2720));
-  addAccents("\\textlangle", getutf8(0x27e8));
-  addAccents("\\langle", getutf8(0x27e8));
-  addAccents("\\textrangle", getutf8(0x27e9));
-  addAccents("\\rangle", getutf8(0x27e9));
+	addAccents("\\pounds", getutf8(0x00a3));
+	addAccents("\\textsterling", getutf8(0x00a3));
+	addAccents("\\textyen", getutf8(0x00a5));
+	addAccents("\\yen", getutf8(0x00a5));
+	addAccents("\\textsection", getutf8(0x00a7));
+	addAccents("\\mathsection", getutf8(0x00a7));
+	addAccents("\\textcopyright", getutf8(0x00a9));
+	addAccents("\\copyright", getutf8(0x00a9));
+	addAccents("\\textlnot", getutf8(0x00ac));
+	addAccents("\\neg", getutf8(0x00ac));
+	addAccents("\\textregistered", getutf8(0x00ae));
+	addAccents("\\circledR", getutf8(0x00ae));
+	addAccents("\\textpm", getutf8(0x00b1));
+	addAccents("\\pm", getutf8(0x00b1));
+	addAccents("\\textparagraph", getutf8(0x00b6));
+	addAccents("\\mathparagraph", getutf8(0x00b6));
+	addAccents("\\textperiodcentered", getutf8(0x00b7));
+	addAccents("\\texttimes", getutf8(0x00d7));
+	addAccents("\\times", getutf8(0x00d7));
+	addAccents("\\O", getutf8(0x00d8));
+	addAccents("\\dh", getutf8(0x00f0));
+	addAccents("\\eth", getutf8(0x00f0));
+	addAccents("\\textdiv", getutf8(0x00f7));
+	addAccents("\\div", getutf8(0x00f7));
+	addAccents("\\o", getutf8(0x00f8));
+	addAccents("\\textcrlambda", getutf8(0x019b));
+	addAccents("\\j", getutf8(0x0237));
+	addAccents("\\textrevepsilon", getutf8(0x025c));
+	addAccents("\\textbaru", getutf8(0x0289));
+	addAccents("\\textquoteleft", getutf8(0x02bb));
+	addAccents("\\textGamma", getutf8(0x0393));
+	addAccents("\\Gamma", getutf8(0x0393));
+	addAccents("\\textDelta", getutf8(0x0394));
+	addAccents("\\Delta", getutf8(0x0394));
+	addAccents("\\textTheta", getutf8(0x0398));
+	addAccents("\\Theta", getutf8(0x0398));
+	addAccents("\\textLambda", getutf8(0x039b));
+	addAccents("\\Lambda", getutf8(0x039b));
+	addAccents("\\textXi", getutf8(0x039e));
+	addAccents("\\Xi", getutf8(0x039e));
+	addAccents("\\textPi", getutf8(0x03a0));
+	addAccents("\\Pi", getutf8(0x03a0));
+	addAccents("\\textSigma", getutf8(0x03a3));
+	addAccents("\\Sigma", getutf8(0x03a3));
+	addAccents("\\textUpsilon", getutf8(0x03a5));
+	addAccents("\\Upsilon", getutf8(0x03a5));
+	addAccents("\\textPhi", getutf8(0x03a6));
+	addAccents("\\Phi", getutf8(0x03a6));
+	addAccents("\\textPsi", getutf8(0x03a8));
+	addAccents("\\Psi", getutf8(0x03a8));
+	addAccents("\\textOmega", getutf8(0x03a9));
+	addAccents("\\Omega", getutf8(0x03a9));
+	addAccents("\\textalpha", getutf8(0x03b1));
+	addAccents("\\alpha", getutf8(0x03b1));
+	addAccents("\\textbeta", getutf8(0x03b2));
+	addAccents("\\beta", getutf8(0x03b2));
+	addAccents("\\textgamma", getutf8(0x03b3));
+	addAccents("\\gamma", getutf8(0x03b3));
+	addAccents("\\textdelta", getutf8(0x03b4));
+	addAccents("\\delta", getutf8(0x03b4));
+	addAccents("\\textepsilon", getutf8(0x03b5));
+	addAccents("\\varepsilon", getutf8(0x03b5));
+	addAccents("\\textzeta", getutf8(0x03b6));
+	addAccents("\\zeta", getutf8(0x03b6));
+	addAccents("\\texteta", getutf8(0x03b7));
+	addAccents("\\eta", getutf8(0x03b7));
+	addAccents("\\texttheta", getutf8(0x03b8));
+	addAccents("\\theta", getutf8(0x03b8));
+	addAccents("\\textiota", getutf8(0x03b9));
+	addAccents("\\iota", getutf8(0x03b9));
+	addAccents("\\textkappa", getutf8(0x03ba));
+	addAccents("\\kappa", getutf8(0x03ba));
+	addAccents("\\textlambda", getutf8(0x03bb));
+	addAccents("\\lambda", getutf8(0x03bb));
+	addAccents("\\textmu", getutf8(0x03bc));
+	addAccents("\\mu", getutf8(0x03bc));
+	addAccents("\\textnu", getutf8(0x03bd));
+	addAccents("\\nu", getutf8(0x03bd));
+	addAccents("\\textxi", getutf8(0x03be));
+	addAccents("\\xi", getutf8(0x03be));
+	addAccents("\\textpi", getutf8(0x03c0));
+	addAccents("\\pi", getutf8(0x03c0));
+	addAccents("\\textrho", getutf8(0x03c1));
+	addAccents("\\rho", getutf8(0x03c1));
+	addAccents("\\textfinalsigma", getutf8(0x03c2));
+	addAccents("\\varsigma", getutf8(0x03c2));
+	addAccents("\\textsigma", getutf8(0x03c3));
+	addAccents("\\sigma", getutf8(0x03c3));
+	addAccents("\\texttau", getutf8(0x03c4));
+	addAccents("\\tau", getutf8(0x03c4));
+	addAccents("\\textupsilon", getutf8(0x03c5));
+	addAccents("\\upsilon", getutf8(0x03c5));
+	addAccents("\\textphi", getutf8(0x03c6));
+	addAccents("\\varphi", getutf8(0x03c6));
+	addAccents("\\textchi", getutf8(0x03c7));
+	addAccents("\\chi", getutf8(0x03c7));
+	addAccents("\\textpsi", getutf8(0x03c8));
+	addAccents("\\psi", getutf8(0x03c8));
+	addAccents("\\textomega", getutf8(0x03c9));
+	addAccents("\\omega", getutf8(0x03c9));
+	addAccents("\\textdigamma", getutf8(0x03dd));
+	addAccents("\\digamma", getutf8(0x03dd));
+	addAccents("\\hebalef", getutf8(0x05d0));
+	addAccents("\\aleph", getutf8(0x05d0));
+	addAccents("\\hebbet", getutf8(0x05d1));
+	addAccents("\\beth", getutf8(0x05d1));
+	addAccents("\\hebgimel", getutf8(0x05d2));
+	addAccents("\\gimel", getutf8(0x05d2));
+	addAccents("\\hebdalet", getutf8(0x05d3));
+	addAccents("\\daleth", getutf8(0x05d3));
+	addAccents("\\hebhe", getutf8(0x05d4));
+	addAccents("\\hebvav", getutf8(0x05d5));
+	addAccents("\\hebzayin", getutf8(0x05d6));
+	addAccents("\\hebhet", getutf8(0x05d7));
+	addAccents("\\hebtet", getutf8(0x05d8));
+	addAccents("\\hebyod", getutf8(0x05d9));
+	addAccents("\\hebfinalkaf", getutf8(0x05da));
+	addAccents("\\hebkaf", getutf8(0x05db));
+	addAccents("\\heblamed", getutf8(0x05dc));
+	addAccents("\\hebfinalmem", getutf8(0x05dd));
+	addAccents("\\hebmem", getutf8(0x05de));
+	addAccents("\\hebfinalnun", getutf8(0x05df));
+	addAccents("\\hebnun", getutf8(0x05e0));
+	addAccents("\\hebsamekh", getutf8(0x05e1));
+	addAccents("\\hebayin", getutf8(0x05e2));
+	addAccents("\\hebfinalpe", getutf8(0x05e3));
+	addAccents("\\hebpe", getutf8(0x05e4));
+	addAccents("\\hebfinaltsadi", getutf8(0x05e5));
+	addAccents("\\hebtsadi", getutf8(0x05e6));
+	addAccents("\\hebqof", getutf8(0x05e7));
+	addAccents("\\hebresh", getutf8(0x05e8));
+	addAccents("\\hebshin", getutf8(0x05e9));
+	addAccents("\\hebtav", getutf8(0x05ea));
+
+	// Thai characters
+	addAccents("\\thaiKoKai", getutf8(0x0e01));
+	addAccents("\\thaiKhoKhai", getutf8(0x0e02));
+	addAccents("\\thaiKhoKhuat", getutf8(0x0e03));
+	addAccents("\\thaiKhoKhwai", getutf8(0x0e04));
+	addAccents("\\thaiKhoKhon", getutf8(0x0e05));
+	addAccents("\\thaiKhoRakhang", getutf8(0x0e06));
+	addAccents("\\thaiNgoNgu", getutf8(0x0e07));
+	addAccents("\\thaiChoChan", getutf8(0x0e08));
+	addAccents("\\thaiChoChing", getutf8(0x0e09));
+	addAccents("\\thaiChoChang", getutf8(0x0e0a));
+	addAccents("\\thaiSoSo", getutf8(0x0e0b));
+	addAccents("\\thaiChoChoe", getutf8(0x0e0c));
+	addAccents("\\thaiYoYing", getutf8(0x0e0d));
+	addAccents("\\thaiDoChada", getutf8(0x0e0e));
+	addAccents("\\thaiToPatak", getutf8(0x0e0f));
+	addAccents("\\thaiThoThan", getutf8(0x0e10));
+	addAccents("\\thaiThoNangmontho", getutf8(0x0e11));
+	addAccents("\\thaiThoPhuthao", getutf8(0x0e12));
+	addAccents("\\thaiNoNen", getutf8(0x0e13));
+	addAccents("\\thaiDoDek", getutf8(0x0e14));
+	addAccents("\\thaiToTao", getutf8(0x0e15));
+	addAccents("\\thaiThoThung", getutf8(0x0e16));
+	addAccents("\\thaiThoThahan", getutf8(0x0e17));
+	addAccents("\\thaiThoThong", getutf8(0x0e18));
+	addAccents("\\thaiNoNu", getutf8(0x0e19));
+	addAccents("\\thaiBoBaimai", getutf8(0x0e1a));
+	addAccents("\\thaiPoPla", getutf8(0x0e1b));
+	addAccents("\\thaiPhoPhung", getutf8(0x0e1c));
+	addAccents("\\thaiFoFa", getutf8(0x0e1d));
+	addAccents("\\thaiPhoPhan", getutf8(0x0e1e));
+	addAccents("\\thaiFoFan", getutf8(0x0e1f));
+	addAccents("\\thaiPhoSamphao", getutf8(0x0e20));
+	addAccents("\\thaiMoMa", getutf8(0x0e21));
+	addAccents("\\thaiYoYak", getutf8(0x0e22));
+	addAccents("\\thaiRoRua", getutf8(0x0e23));
+	addAccents("\\thaiRu", getutf8(0x0e24));
+	addAccents("\\thaiLoLing", getutf8(0x0e25));
+	addAccents("\\thaiLu", getutf8(0x0e26));
+	addAccents("\\thaiWoWaen", getutf8(0x0e27));
+	addAccents("\\thaiSoSala", getutf8(0x0e28));
+	addAccents("\\thaiSoRusi", getutf8(0x0e29));
+	addAccents("\\thaiSoSua", getutf8(0x0e2a));
+	addAccents("\\thaiHoHip", getutf8(0x0e2b));
+	addAccents("\\thaiLoChula", getutf8(0x0e2c));
+	addAccents("\\thaiOAng", getutf8(0x0e2d));
+	addAccents("\\thaiHoNokhuk", getutf8(0x0e2e));
+	addAccents("\\thaiPaiyannoi", getutf8(0x0e2f));
+	addAccents("\\thaiSaraA", getutf8(0x0e30));
+	addAccents("\\thaiMaiHanakat", getutf8(0x0e31));
+	addAccents("\\thaiSaraAa", getutf8(0x0e32));
+	addAccents("\\thaiSaraAm", getutf8(0x0e33));
+	addAccents("\\thaiSaraI", getutf8(0x0e34));
+	addAccents("\\thaiSaraIi", getutf8(0x0e35));
+	addAccents("\\thaiSaraUe", getutf8(0x0e36));
+	addAccents("\\thaiSaraUee", getutf8(0x0e37));
+	addAccents("\\thaiSaraU", getutf8(0x0e38));
+	addAccents("\\thaiSaraUu", getutf8(0x0e39));
+	addAccents("\\thaiPhinthu", getutf8(0x0e3a));
+	addAccents("\\thaiSaraE", getutf8(0x0e40));
+	addAccents("\\thaiSaraAe", getutf8(0x0e41));
+	addAccents("\\thaiSaraO", getutf8(0x0e42));
+	addAccents("\\thaiSaraAiMaimuan", getutf8(0x0e43));
+	addAccents("\\thaiSaraAiMaimalai", getutf8(0x0e44));
+	addAccents("\\thaiLakkhangyao", getutf8(0x0e45));
+	addAccents("\\thaiMaiyamok", getutf8(0x0e46));
+	addAccents("\\thaiMaitaikhu", getutf8(0x0e47));
+	addAccents("\\thaiMaiEk", getutf8(0x0e48));
+	addAccents("\\thaiMaiTho", getutf8(0x0e49));
+	addAccents("\\thaiMaiTri", getutf8(0x0e4a));
+	addAccents("\\thaiMaiChattawa", getutf8(0x0e4b));
+	addAccents("\\thaiThanthakhat", getutf8(0x0e4c));
+	addAccents("\\thaiNikhahit", getutf8(0x0e4d));
+	addAccents("\\thaiYamakkan", getutf8(0x0e4e));
+	addAccents("\\thaiFongman", getutf8(0x0e4f));
+	addAccents("\\thaizero", getutf8(0x0e50));
+	addAccents("\\thaione", getutf8(0x0e51));
+	addAccents("\\thaitwo", getutf8(0x0e52));
+	addAccents("\\thaithree", getutf8(0x0e53));
+	addAccents("\\thaifour", getutf8(0x0e54));
+	addAccents("\\thaifive", getutf8(0x0e55));
+	addAccents("\\thaisix", getutf8(0x0e56));
+	addAccents("\\thaiseven", getutf8(0x0e57));
+	addAccents("\\thaieight", getutf8(0x0e58));
+	addAccents("\\thainine", getutf8(0x0e59));
+	addAccents("\\thaiAngkhankhu", getutf8(0x0e5a));
+	addAccents("\\thaiKhomut", getutf8(0x0e5b));
+	addAccents("\\dag", getutf8(0x2020));
+	addAccents("\\dagger", getutf8(0x2020));
+	addAccents("\\textdagger", getutf8(0x2020));
+	addAccents("\\ddag", getutf8(0x2021));
+	addAccents("\\ddagger", getutf8(0x2021));
+	addAccents("\\textdaggerdbl", getutf8(0x2021));
+	addAccents("\\textbullet", getutf8(0x2022));
+	addAccents("\\bullet", getutf8(0x2022));
+	addAccents("\\dots", getutf8(0x2026));
+	addAccents("\\ldots", getutf8(0x2026));
+	addAccents("\\textellipsis", getutf8(0x2026));
+	addAccents("\\textasciiacute", getutf8(0x2032));
+	addAccents("\\prime", getutf8(0x2032));
+	addAccents("\\textacutedbl", getutf8(0x2033));
+	addAccents("\\dprime", getutf8(0x2033));
+	addAccents("\\textasciigrave", getutf8(0x2035));
+	addAccents("\\backprime", getutf8(0x2035));
+	addAccents("\\textsubcircum{ }", getutf8(0x2038));
+	addAccents("\\caretinsert", getutf8(0x2038));
+	addAccents("\\textasteriskcentered", getutf8(0x204e));
+	addAccents("\\ast", getutf8(0x204e));
+	addAccents("\\textmho", getutf8(0x2127));
+	addAccents("\\mho", getutf8(0x2127));
+	addAccents("\\textleftarrow", getutf8(0x2190));
+	addAccents("\\leftarrow", getutf8(0x2190));
+	addAccents("\\textuparrow", getutf8(0x2191));
+	addAccents("\\uparrow", getutf8(0x2191));
+	addAccents("\\textrightarrow", getutf8(0x2192));
+	addAccents("\\rightarrow", getutf8(0x2192));
+	addAccents("\\textdownarrow", getutf8(0x2193));
+	addAccents("\\downarrow", getutf8(0x2193));
+	addAccents("\\textglobrise", getutf8(0x2197));
+	addAccents("\\nearrow", getutf8(0x2197));
+	addAccents("\\textglobfall", getutf8(0x2198));
+	addAccents("\\searrow", getutf8(0x2198));
+	addAccents("\\textsurd", getutf8(0x221a));
+	addAccents("\\surd", getutf8(0x221a));
+	addAccents("\\textbigcircle", getutf8(0x25ef));
+	addAccents("\\bigcirc", getutf8(0x25ef));
+	addAccents("\\FiveStar", getutf8(0x2605));
+	addAccents("\\bigstar", getutf8(0x2605));
+	addAccents("\\FiveStarOpen", getutf8(0x2606));
+	addAccents("\\bigwhitestar", getutf8(0x2606));
+	addAccents("\\Checkmark", getutf8(0x2713));
+	addAccents("\\checkmark", getutf8(0x2713));
+	addAccents("\\CrossMaltese", getutf8(0x2720));
+	addAccents("\\maltese", getutf8(0x2720));
+	addAccents("\\textlangle", getutf8(0x27e8));
+	addAccents("\\langle", getutf8(0x27e8));
+	addAccents("\\textrangle", getutf8(0x27e9));
+	addAccents("\\rangle", getutf8(0x27e9));
 }
 
 static void buildAccentsMap()
 {
-  accents["imath"] = "ı";
-  accents["i"] = "ı";
-  accents["jmath"] = "È·";
-  accents["cdot"] = "·";
-  accents["textasciicircum"] = "^";
-  accents["mathcircumflex"] = "^";
-  accents["sim"] = "~";
-  accents["guillemotright"] = "»";
-  accents["guillemotleft"] = "«";
-  accents["hairspace"]     = getutf8(0xf0000);	// select from free unicode plane 15
-  accents["thinspace"]     = getutf8(0xf0002);	// and used _only_ by findadv
-  accents["negthinspace"]  = getutf8(0xf0003);	// to omit backslashed latex macros
-  accents["medspace"]      = getutf8(0xf0004);	// See https://en.wikipedia.org/wiki/Private_Use_Areas
-  accents["negmedspace"]   = getutf8(0xf0005);
-  accents["thickspace"]    = getutf8(0xf0006);
-  accents["negthickspace"] = getutf8(0xf0007);
-  accents["lyx"]           = getutf8(0xf0010);	// Used logos
-  accents["LyX"]           = getutf8(0xf0010);
-  accents["tex"]           = getutf8(0xf0011);
-  accents["TeX"]           = getutf8(0xf0011);
-  accents["latex"]         = getutf8(0xf0012);
-  accents["LaTeX"]         = getutf8(0xf0012);
-  accents["latexe"]        = getutf8(0xf0013);
-  accents["LaTeXe"]        = getutf8(0xf0013);
-  accents["lyxarrow"]      = getutf8(0xf0020);
-  accents["braceleft"]     = getutf8(0xf0030);
-  accents["braceright"]    = getutf8(0xf0031);
-  accents["backslash lyx"]           = getutf8(0xf0010);	// Used logos inserted with starting \backslash
-  accents["backslash LyX"]           = getutf8(0xf0010);
-  accents["backslash tex"]           = getutf8(0xf0011);
-  accents["backslash TeX"]           = getutf8(0xf0011);
-  accents["backslash latex"]         = getutf8(0xf0012);
-  accents["backslash LaTeX"]         = getutf8(0xf0012);
-  accents["backslash latexe"]        = getutf8(0xf0013);
-  accents["backslash LaTeXe"]        = getutf8(0xf0013);
-  accents["backslash lyxarrow"]      = getutf8(0xf0020);
-  accents["ddot{\\imath}"] = "ï";
-  buildaccent("ddot", "aAeEhHiIoOtuUwWxXyY",
-                      "äÄëËḧḦïÏöÖẗüÜẅẄẍẌÿŸ");	// umlaut
-  buildaccent("dot|.", "aAbBcCdDeEfFGghHIimMnNoOpPrRsStTwWxXyYzZ",
-                       "ȧȦḃḂċĊḋḊėĖḟḞĠġḣḢİİṁṀṅṄȯȮṗṖṙṘṡṠṫṪẇẆẋẊẏẎżŻ");	// dot{i} can only happen if ignoring case, but there is no lowercase of 'İ'
-  accents["acute{\\imath}"] = "í";
-  buildaccent("acute", "aAcCeEgGkKlLmMoOnNpPrRsSuUwWyYzZiI",
-                       "áÁćĆéÉǵǴḱḰĺĹḿḾóÓńŃṕṔŕŔśŚúÚẃẂýÝźŹíÍ");
-  buildaccent("dacute|H|h", "oOuU", "őŐűŰ");	// double acute
-  buildaccent("mathring|r", "aAuUwy",
-                            "åÅůŮẘẙ");	// ring
-  accents["check{\\imath}"] = "ǐ";
-  accents["check{\\jmath}"] = "ǰ";
-  buildaccent("check|v", "cCdDaAeEiIoOuUgGkKhHlLnNrRsSTtzZ",
-                         "čČďĎǎǍěĚǐǏǒǑǔǓǧǦǩǨȟȞľĽňŇřŘšŠŤťžŽ");	// caron
-  accents["hat{\\imath}"] = "î";
-  accents["hat{\\jmath}"] = "ĵ";
-  buildaccent("hat|^", "aAcCeEgGhHiIjJoOsSuUwWyYzZ",
-                       "âÂĉĈêÊĝĜĥĤîÎĵĴôÔŝŜûÛŵŴŷŶẑẐ");	// circ
-  accents["bar{\\imath}"] = "Ä«";
-  buildaccent("bar|=", "aAeEiIoOuUyY",
-                       "āĀēĒīĪōŌūŪȳȲ");	// macron
-  accents["tilde{\\imath}"] = "Ä©";
-  buildaccent("tilde", "aAeEiInNoOuUvVyY",
-                       "ãÃẽẼĩĨñÑõÕũŨṽṼỹỸ");	// tilde
-  accents["breve{\\imath}"] = "Ä­";
-  buildaccent("breve|u", "aAeEgGiIoOuU",
-                         "ăĂĕĔğĞĭĬŏŎŭŬ");	// breve
-  accents["grave{\\imath}"] = "ì";
-  buildaccent("grave|`", "aAeEiIoOuUnNwWyY",
-                         "àÀèÈìÌòÒùÙǹǸẁẀỳỲ");	// grave
-  buildaccent("subdot|d", "BbDdHhKkLlMmNnRrSsTtVvWwZzAaEeIiOoUuYy",
-                          "ḄḅḌḍḤḥḲḳḶḷṂṃṆṇṚṛṢṣṬṭṾṿẈẉẒẓẠạẸẹỊịỌọỤụỴỵ");	// dot below
-  buildaccent("ogonek|k", "AaEeIiUuOo",
-                          "ĄąĘęĮįŲųǪǫ");	// ogonek
-  buildaccent("cedilla|c", "CcGgKkLlNnRrSsTtEeDdHh",
-                           "ÇçĢģĶķĻļŅņŖŗŞşŢţȨȩḐḑḨḩ");	// cedilla
-  buildaccent("subring|textsubring", "Aa",
-                                     "Ḁḁ");	// subring
-  buildaccent("subhat|textsubcircum", "DdEeLlNnTtUu",
-                                      "ḒḓḘḙḼḽṊṋṰṱṶṷ");	// subcircum
-  buildaccent("subtilde|textsubtilde", "EeIiUu",
-                                       "ḚḛḬḭṴṵ");	// subtilde
-  accents["dgrave{\\imath}"] = "ȉ";
-  accents["textdoublegrave{\\i}"] = "ȉ";
-  buildaccent("dgrave|textdoublegrave", "AaEeIiOoRrUu",
-                                        "ȀȁȄȅȈȉȌȍȐȑȔȕ"); // double grave
-  accents["rcap{\\imath}"] = "È‹";
-  accents["textroundcap{\\i}"] = "È‹";
-  buildaccent("rcap|textroundcap", "AaEeIiOoRrUu",
-                                   "ȂȃȆȇȊȋȎȏȒȓȖȗ"); // inverted breve
-  buildaccent("slashed", "oO",
-                         "øØ"); // slashed
-  fillMissingUnicodesymbols(); // Add some still not handled entries contained in 'unicodesynbols'
-  // LYXERR0("Number of accents " << accents.size());
+	accents["imath"] = "ı";
+	accents["i"] = "ı";
+	accents["jmath"] = "È·";
+	accents["cdot"] = "·";
+	accents["textasciicircum"] = "^";
+	accents["mathcircumflex"] = "^";
+	accents["sim"] = "~";
+	accents["guillemotright"] = "»";
+	accents["guillemotleft"] = "«";
+	accents["hairspace"]     = getutf8(0xf0000);	// select from free unicode plane 15
+	accents["thinspace"]     = getutf8(0xf0002);	// and used _only_ by findadv
+	accents["negthinspace"]  = getutf8(0xf0003);	// to omit backslashed latex macros
+	accents["medspace"]      = getutf8(0xf0004);	// See https://en.wikipedia.org/wiki/Private_Use_Areas
+	accents["negmedspace"]   = getutf8(0xf0005);
+	accents["thickspace"]    = getutf8(0xf0006);
+	accents["negthickspace"] = getutf8(0xf0007);
+	accents["lyx"]           = getutf8(0xf0010);	// Used logos
+	accents["LyX"]           = getutf8(0xf0010);
+	accents["tex"]           = getutf8(0xf0011);
+	accents["TeX"]           = getutf8(0xf0011);
+	accents["latex"]         = getutf8(0xf0012);
+	accents["LaTeX"]         = getutf8(0xf0012);
+	accents["latexe"]        = getutf8(0xf0013);
+	accents["LaTeXe"]        = getutf8(0xf0013);
+	accents["lyxarrow"]      = getutf8(0xf0020);
+	accents["braceleft"]     = getutf8(0xf0030);
+	accents["braceright"]    = getutf8(0xf0031);
+	accents["backslash lyx"]           = getutf8(0xf0010);	// Used logos inserted with starting \backslash
+	accents["backslash LyX"]           = getutf8(0xf0010);
+	accents["backslash tex"]           = getutf8(0xf0011);
+	accents["backslash TeX"]           = getutf8(0xf0011);
+	accents["backslash latex"]         = getutf8(0xf0012);
+	accents["backslash LaTeX"]         = getutf8(0xf0012);
+	accents["backslash latexe"]        = getutf8(0xf0013);
+	accents["backslash LaTeXe"]        = getutf8(0xf0013);
+	accents["backslash lyxarrow"]      = getutf8(0xf0020);
+	accents["ddot{\\imath}"] = "ï";
+	buildaccent("ddot", "aAeEhHiIoOtuUwWxXyY",
+		    "äÄëËḧḦïÏöÖẗüÜẅẄẍẌÿŸ");	// umlaut
+	buildaccent("dot|.", "aAbBcCdDeEfFGghHIimMnNoOpPrRsStTwWxXyYzZ",
+		    "ȧȦḃḂċĊḋḊėĖḟḞĠġḣḢİİṁṀṅṄȯȮṗṖṙṘṡṠṫṪẇẆẋẊẏẎżŻ");	// dot{i} can only happen if ignoring case, but there is no lowercase of 'İ'
+	accents["acute{\\imath}"] = "í";
+	buildaccent("acute", "aAcCeEgGkKlLmMoOnNpPrRsSuUwWyYzZiI",
+		    "áÁćĆéÉǵǴḱḰĺĹḿḾóÓńŃṕṔŕŔśŚúÚẃẂýÝźŹíÍ");
+	buildaccent("dacute|H|h", "oOuU", "őŐűŰ");	// double acute
+	buildaccent("mathring|r", "aAuUwy",
+		    "åÅůŮẘẙ");	// ring
+	accents["check{\\imath}"] = "ǐ";
+	accents["check{\\jmath}"] = "ǰ";
+	buildaccent("check|v", "cCdDaAeEiIoOuUgGkKhHlLnNrRsSTtzZ",
+		    "čČďĎǎǍěĚǐǏǒǑǔǓǧǦǩǨȟȞľĽňŇřŘšŠŤťžŽ");	// caron
+	accents["hat{\\imath}"] = "î";
+	accents["hat{\\jmath}"] = "ĵ";
+	buildaccent("hat|^", "aAcCeEgGhHiIjJoOsSuUwWyYzZ",
+		    "âÂĉĈêÊĝĜĥĤîÎĵĴôÔŝŜûÛŵŴŷŶẑẐ");	// circ
+	accents["bar{\\imath}"] = "Ä«";
+	buildaccent("bar|=", "aAeEiIoOuUyY",
+		    "āĀēĒīĪōŌūŪȳȲ");	// macron
+	accents["tilde{\\imath}"] = "Ä©";
+	buildaccent("tilde", "aAeEiInNoOuUvVyY",
+		    "ãÃẽẼĩĨñÑõÕũŨṽṼỹỸ");	// tilde
+	accents["breve{\\imath}"] = "Ä­";
+	buildaccent("breve|u", "aAeEgGiIoOuU",
+		    "ăĂĕĔğĞĭĬŏŎŭŬ");	// breve
+	accents["grave{\\imath}"] = "ì";
+	buildaccent("grave|`", "aAeEiIoOuUnNwWyY",
+		    "àÀèÈìÌòÒùÙǹǸẁẀỳỲ");	// grave
+	buildaccent("subdot|d", "BbDdHhKkLlMmNnRrSsTtVvWwZzAaEeIiOoUuYy",
+		    "ḄḅḌḍḤḥḲḳḶḷṂṃṆṇṚṛṢṣṬṭṾṿẈẉẒẓẠạẸẹỊịỌọỤụỴỵ");	// dot below
+	buildaccent("ogonek|k", "AaEeIiUuOo",
+		    "ĄąĘęĮįŲųǪǫ");	// ogonek
+	buildaccent("cedilla|c", "CcGgKkLlNnRrSsTtEeDdHh",
+		    "ÇçĢģĶķĻļŅņŖŗŞşŢţȨȩḐḑḨḩ");	// cedilla
+	buildaccent("subring|textsubring", "Aa",
+		    "Ḁḁ");	// subring
+	buildaccent("subhat|textsubcircum", "DdEeLlNnTtUu",
+		    "ḒḓḘḙḼḽṊṋṰṱṶṷ");	// subcircum
+	buildaccent("subtilde|textsubtilde", "EeIiUu",
+		    "ḚḛḬḭṴṵ");	// subtilde
+	accents["dgrave{\\imath}"] = "ȉ";
+	accents["textdoublegrave{\\i}"] = "ȉ";
+	buildaccent("dgrave|textdoublegrave", "AaEeIiOoRrUu",
+		    "ȀȁȄȅȈȉȌȍȐȑȔȕ"); // double grave
+	accents["rcap{\\imath}"] = "È‹";
+	accents["textroundcap{\\i}"] = "È‹";
+	buildaccent("rcap|textroundcap", "AaEeIiOoRrUu",
+		    "ȂȃȆȇȊȋȎȏȒȓȖȗ"); // inverted breve
+	buildaccent("slashed", "oO",
+		    "øØ"); // slashed
+	fillMissingUnicodesymbols(); // Add some still not handled entries contained in 'unicodesynbols'
+	// LYXERR0("Number of accents " << accents.size());
 }
 
 /*
@@ -1968,94 +1968,94 @@ static void buildAccentsMap()
  */
 void Intervall::removeAccents()
 {
-  if (accents.empty())
-    buildAccentsMap();
-  static regex const accre("\\\\("
-      "([\\S]|[A-Za-z]+)\\{[^\\{\\}]+\\}"
-      "|("
-	 "(backslash ([lL]y[xX]|[tT]e[xX]|[lL]a[tT]e[xX]e?|lyxarrow))"
-	"|[A-Za-z]+"
-      ")"
-      "(?![a-zA-Z]))");
-  smatch sub;
-  for (sregex_iterator itacc(par.begin(), par.end(), accre), end; itacc != end; ++itacc) {
-    sub = *itacc;
-    string key = sub.str(1);
-    AccentsIterator it_ac = accents.find(key);
-    if (it_ac != accents.end()) {
-      string val = it_ac->second;
-      size_t pos = sub.position(size_t(0));
-      for (size_t i = 0; i < val.size(); i++) {
-        par[pos+i] = val[i];
-      }
-      // Remove possibly following space too
-      if (par[pos+sub.str(0).size()] == ' ')
-        addIntervall(pos+val.size(), pos + sub.str(0).size()+1);
-      else
-        addIntervall(pos+val.size(), pos + sub.str(0).size());
-      for (size_t i = pos+val.size(); i < pos + sub.str(0).size(); i++) {
-        // remove traces of any remaining chars
-        par[i] = ' ';
-      }
-    }
-    else {
-      LYXERR(Debug::INFO, "Not added accent for \"" << key << "\"");
-    }
-  }
+	if (accents.empty())
+		buildAccentsMap();
+	static regex const accre("\\\\("
+				 "([\\S]|[A-Za-z]+)\\{[^\\{\\}]+\\}"
+				 "|("
+				 "(backslash ([lL]y[xX]|[tT]e[xX]|[lL]a[tT]e[xX]e?|lyxarrow))"
+				 "|[A-Za-z]+"
+				 ")"
+				 "(?![a-zA-Z]))");
+	smatch sub;
+	for (sregex_iterator itacc(par.begin(), par.end(), accre), end; itacc != end; ++itacc) {
+		sub = *itacc;
+		string key = sub.str(1);
+		AccentsIterator it_ac = accents.find(key);
+		if (it_ac != accents.end()) {
+			string val = it_ac->second;
+			size_t pos = sub.position(size_t(0));
+			for (size_t i = 0; i < val.size(); i++) {
+				par[pos+i] = val[i];
+			}
+			// Remove possibly following space too
+			if (par[pos+sub.str(0).size()] == ' ')
+				addIntervall(pos+val.size(), pos + sub.str(0).size()+1);
+			else
+				addIntervall(pos+val.size(), pos + sub.str(0).size());
+			for (size_t i = pos+val.size(); i < pos + sub.str(0).size(); i++) {
+				// remove traces of any remaining chars
+				par[i] = ' ';
+			}
+		}
+		else {
+			LYXERR(Debug::INFO, "Not added accent for \"" << key << "\"");
+		}
+	}
 }
 
 void Intervall::handleOpenP(int i)
 {
-  actualdeptindex++;
-  depts[actualdeptindex] = i+1;
-  closes[actualdeptindex] = -1;
-  checkDepthIndex(actualdeptindex);
+	actualdeptindex++;
+	depts[actualdeptindex] = i+1;
+	closes[actualdeptindex] = -1;
+	checkDepthIndex(actualdeptindex);
 }
 
 void Intervall::handleCloseP(int i, bool closingAllowed)
 {
-  if (actualdeptindex <= 0) {
-    if (! closingAllowed)
-      LYXERR(Debug::FIND, "Bad closing parenthesis in latex");  /* should not happen, but the latex input may be wrong */
-    // if we are at the very end
-    addIntervall(i, i+1);
-  }
-  else {
-    closes[actualdeptindex] = i+1;
-    actualdeptindex--;
-  }
+	if (actualdeptindex <= 0) {
+		if (! closingAllowed)
+			LYXERR(Debug::FIND, "Bad closing parenthesis in latex");  /* should not happen, but the latex input may be wrong */
+		// if we are at the very end
+		addIntervall(i, i+1);
+	}
+	else {
+		closes[actualdeptindex] = i+1;
+		actualdeptindex--;
+	}
 }
 
 void Intervall::resetOpenedP(int openPos)
 {
-  // Used as initializer for foreignlanguage entry
-  actualdeptindex = 1;
-  depts[1] = openPos+1;
-  closes[1] = -1;
+	// Used as initializer for foreignlanguage entry
+	actualdeptindex = 1;
+	depts[1] = openPos+1;
+	closes[1] = -1;
 }
 
 int Intervall::previousNotIgnored(int start) const
 {
-    int idx = 0;                          /* int intervalls */
-    for (idx = ignoreidx; idx >= 0; --idx) {
-      if (start > borders[idx].upper)
-        return start;
-      if (start >= borders[idx].low)
-        start = borders[idx].low-1;
-    }
-    return start;
+	int idx = 0;                          /* int intervalls */
+	for (idx = ignoreidx; idx >= 0; --idx) {
+		if (start > borders[idx].upper)
+			return start;
+		if (start >= borders[idx].low)
+			start = borders[idx].low-1;
+	}
+	return start;
 }
 
 int Intervall::nextNotIgnored(int start) const
 {
-    int idx = 0;                          /* int intervalls */
-    for (idx = 0; idx <= ignoreidx; idx++) {
-      if (start < borders[idx].low)
-        return start;
-      if (start < borders[idx].upper)
-        start = borders[idx].upper;
-    }
-    return start;
+	int idx = 0;                          /* int intervalls */
+	for (idx = 0; idx <= ignoreidx; idx++) {
+		if (start < borders[idx].low)
+			return start;
+		if (start < borders[idx].upper)
+			start = borders[idx].upper;
+	}
+	return start;
 }
 
 typedef unordered_map<string, KeyInfo> KeysMap;
@@ -2064,713 +2064,713 @@ typedef vector< KeyInfo> Entries;
 static KeysMap keys = unordered_map<string, KeyInfo>();
 
 class LatexInfo {
- private:
-  int entidx_;
-  Entries entries_;
-  Intervall interval_;
-  void buildKeys(bool);
-  void buildEntries(bool);
-  void makeKey(const string &, KeyInfo, bool isPatternString);
-  void processRegion(int start, int region_end); /*  remove {} parts */
-  void removeHead(KeyInfo const &, int count=0);
+private:
+	int entidx_;
+	Entries entries_;
+	Intervall interval_;
+	void buildKeys(bool);
+	void buildEntries(bool);
+	void makeKey(const string &, KeyInfo, bool isPatternString);
+	void processRegion(int start, int region_end); /*  remove {} parts */
+	void removeHead(KeyInfo const &, int count=0);
 
- public:
- LatexInfo(string const & par, bool isPatternString)
-         : entidx_(-1), interval_(isPatternString, par)
-  {
-    buildKeys(isPatternString);
-    entries_ = vector<KeyInfo>();
-    buildEntries(isPatternString);
-  }
-  int getFirstKey() {
-    entidx_ = 0;
-    if (entries_.empty()) {
-      return -1;
-    }
-    if (entries_[0].keytype == KeyInfo::isTitle) {
-      interval_.hasTitle = true;
-      if (! entries_[0].disabled) {
-        interval_.titleValue = entries_[0].head;
-      }
-      else {
-        interval_.titleValue = "";
-      }
-      removeHead(entries_[0]);
-      if (entries_.size() > 1)
-        return 1;
-      else
-        return -1;
-    }
-    return 0;
-  }
-  int getNextKey() {
-    entidx_++;
-    if (int(entries_.size()) > entidx_) {
-      return entidx_;
-    }
-    else {
-      return -1;
-    }
-  }
-  bool setNextKey(int idx) {
-    if ((idx == entidx_) && (entidx_ >= 0)) {
-      entidx_--;
-      return true;
-    }
-    else
-      return false;
-  }
-  int find(int start, KeyInfo::KeyType keytype) const {
-    if (start < 0)
-      return -1;
-    int tmpIdx = start;
-    while (tmpIdx < int(entries_.size())) {
-      if (entries_[tmpIdx].keytype == keytype)
-        return tmpIdx;
-      tmpIdx++;
-    }
-    return -1;
-  }
-  int process(ostringstream & os, KeyInfo const & actual);
-  int dispatch(ostringstream & os, int previousStart, KeyInfo & actual);
-  // string show(int lastpos) { return interval.show(lastpos);}
-  int nextNotIgnored(int start) { return interval_.nextNotIgnored(start);}
-  KeyInfo &getKeyInfo(int keyinfo) {
-    static KeyInfo invalidInfo = KeyInfo();
-    if ((keyinfo < 0) || ( keyinfo >= int(entries_.size())))
-      return invalidInfo;
-    else
-      return entries_[keyinfo];
-  }
-  void setForDefaultLang(KeyInfo const & defLang) {interval_.setForDefaultLang(defLang);}
-  void addIntervall(int low, int up) { interval_.addIntervall(low, up); }
+public:
+	LatexInfo(string const & par, bool isPatternString)
+		: entidx_(-1), interval_(isPatternString, par)
+	{
+		buildKeys(isPatternString);
+		entries_ = vector<KeyInfo>();
+		buildEntries(isPatternString);
+	}
+	int getFirstKey() {
+		entidx_ = 0;
+		if (entries_.empty()) {
+			return -1;
+		}
+		if (entries_[0].keytype == KeyInfo::isTitle) {
+			interval_.hasTitle = true;
+			if (! entries_[0].disabled) {
+				interval_.titleValue = entries_[0].head;
+			}
+			else {
+				interval_.titleValue = "";
+			}
+			removeHead(entries_[0]);
+			if (entries_.size() > 1)
+				return 1;
+			else
+				return -1;
+		}
+		return 0;
+	}
+	int getNextKey() {
+		entidx_++;
+		if (int(entries_.size()) > entidx_) {
+			return entidx_;
+		}
+		else {
+			return -1;
+		}
+	}
+	bool setNextKey(int idx) {
+		if ((idx == entidx_) && (entidx_ >= 0)) {
+			entidx_--;
+			return true;
+		}
+		else
+			return false;
+	}
+	int find(int start, KeyInfo::KeyType keytype) const {
+		if (start < 0)
+			return -1;
+		int tmpIdx = start;
+		while (tmpIdx < int(entries_.size())) {
+			if (entries_[tmpIdx].keytype == keytype)
+				return tmpIdx;
+			tmpIdx++;
+		}
+		return -1;
+	}
+	int process(ostringstream & os, KeyInfo const & actual);
+	int dispatch(ostringstream & os, int previousStart, KeyInfo & actual);
+	// string show(int lastpos) { return interval.show(lastpos);}
+	int nextNotIgnored(int start) { return interval_.nextNotIgnored(start);}
+	KeyInfo &getKeyInfo(int keyinfo) {
+		static KeyInfo invalidInfo = KeyInfo();
+		if ((keyinfo < 0) || ( keyinfo >= int(entries_.size())))
+			return invalidInfo;
+		else
+			return entries_[keyinfo];
+	}
+	void setForDefaultLang(KeyInfo const & defLang) {interval_.setForDefaultLang(defLang);}
+	void addIntervall(int low, int up) { interval_.addIntervall(low, up); }
 };
 
 
 int Intervall::findclosing(int start, int end, char up = '{', char down = '}', int repeat = 1)
 {
-  int skip = 0;
-  int depth = 0;
-  for (int i = start; i < end; i += 1 + skip) {
-    char c;
-    c = par[i];
-    skip = 0;
-    if (c == '\\') skip = 1;
-    else if (c == up) {
-      depth++;
-    }
-    else if (c == down) {
-      if (depth == 0) {
-        repeat--;
-        if ((repeat <= 0) || (par[i+1] != up))
-          return i;
-      }
-      --depth;
-    }
-  }
-  return end;
+	int skip = 0;
+	int depth = 0;
+	for (int i = start; i < end; i += 1 + skip) {
+		char c;
+		c = par[i];
+		skip = 0;
+		if (c == '\\') skip = 1;
+		else if (c == up) {
+			depth++;
+		}
+		else if (c == down) {
+			if (depth == 0) {
+				repeat--;
+				if ((repeat <= 0) || (par[i+1] != up))
+					return i;
+			}
+			--depth;
+		}
+	}
+	return end;
 }
 
 class MathInfo {
-  class MathEntry {
-  public:
-    string wait;
-    size_t mathEnd;
-    size_t mathpostfixsize;
-    size_t mathStart;
-    size_t mathprefixsize;
-    size_t mathSize;
-  };
-  size_t actualIdx_;
-  vector<MathEntry> entries_;
- public:
-  MathInfo() {
-    actualIdx_ = 0;
-  }
-  void insert(string const & wait, size_t start, size_t prefixsize, size_t end, size_t postfixsize) {
-    MathEntry m = MathEntry();
-    m.wait = wait;
-    m.mathStart = start;
-    m.mathprefixsize = prefixsize;
-    m.mathEnd = end + postfixsize;
-    m.mathpostfixsize = postfixsize;
-    m.mathSize = m.mathEnd - m.mathStart;
-    entries_.push_back(m);
-  }
-  bool empty() const { return entries_.empty(); }
-  size_t getEndPos() const {
-    if (entries_.empty() || (actualIdx_ >= entries_.size())) {
-      return 0;
-    }
-    return entries_[actualIdx_].mathEnd;
-  }
-  size_t getStartPos() const {
-    if (entries_.empty() || (actualIdx_ >= entries_.size())) {
-      return 100000;                    /*  definitely enough? */
-    }
-    return entries_[actualIdx_].mathStart;
-  }
-  size_t getPrefixSize() const {
-    if (entries_.empty() || (actualIdx_ >= entries_.size())) {
-      return 0;
-    }
-    return entries_[actualIdx_].mathprefixsize;
-  }
-  size_t getPostfixSize() const {
-    if (entries_.empty() || (actualIdx_ >= entries_.size())) {
-      return 0;
-    }
-    return entries_[actualIdx_].mathpostfixsize;
-  }
-  size_t getFirstPos() {
-    actualIdx_ = 0;
-    return getStartPos();
-  }
-  size_t getSize() const {
-    if (entries_.empty() || (actualIdx_ >= entries_.size())) {
-      return size_t(0);
-    }
-    return entries_[actualIdx_].mathSize;
-  }
-  void incrEntry() { actualIdx_++; }
+	class MathEntry {
+	public:
+		string wait;
+		size_t mathEnd;
+		size_t mathpostfixsize;
+		size_t mathStart;
+		size_t mathprefixsize;
+		size_t mathSize;
+	};
+	size_t actualIdx_;
+	vector<MathEntry> entries_;
+public:
+	MathInfo() {
+		actualIdx_ = 0;
+	}
+	void insert(string const & wait, size_t start, size_t prefixsize, size_t end, size_t postfixsize) {
+		MathEntry m = MathEntry();
+		m.wait = wait;
+		m.mathStart = start;
+		m.mathprefixsize = prefixsize;
+		m.mathEnd = end + postfixsize;
+		m.mathpostfixsize = postfixsize;
+		m.mathSize = m.mathEnd - m.mathStart;
+		entries_.push_back(m);
+	}
+	bool empty() const { return entries_.empty(); }
+	size_t getEndPos() const {
+		if (entries_.empty() || (actualIdx_ >= entries_.size())) {
+			return 0;
+		}
+		return entries_[actualIdx_].mathEnd;
+	}
+	size_t getStartPos() const {
+		if (entries_.empty() || (actualIdx_ >= entries_.size())) {
+			return 100000;                    /*  definitely enough? */
+		}
+		return entries_[actualIdx_].mathStart;
+	}
+	size_t getPrefixSize() const {
+		if (entries_.empty() || (actualIdx_ >= entries_.size())) {
+			return 0;
+		}
+		return entries_[actualIdx_].mathprefixsize;
+	}
+	size_t getPostfixSize() const {
+		if (entries_.empty() || (actualIdx_ >= entries_.size())) {
+			return 0;
+		}
+		return entries_[actualIdx_].mathpostfixsize;
+	}
+	size_t getFirstPos() {
+		actualIdx_ = 0;
+		return getStartPos();
+	}
+	size_t getSize() const {
+		if (entries_.empty() || (actualIdx_ >= entries_.size())) {
+			return size_t(0);
+		}
+		return entries_[actualIdx_].mathSize;
+	}
+	void incrEntry() { actualIdx_++; }
 };
 
 void LatexInfo::buildEntries(bool isPatternString)
 {
-  static regex const rmath("(\\\\)*(\\$|\\\\\\[|\\\\\\]|\\\\(begin|end)\\{((eqnarray|equation|flalign|gather|multline|align|x?x?alignat)\\*?\\})(\\{[0-9]+\\})?)");
-  static regex const rkeys("(\\\\)*(\\$|\\\\\\[|\\\\\\]|\\\\((([a-zA-Z]+\\*?)(\\{([a-z]+\\*?)\\}|=[0-9]+[a-z]+)?)))");
-  static bool disableLanguageOverride = false;
-  smatch sub, submath;
-  bool evaluatingRegexp = false;
-  MathInfo mi;
-  bool evaluatingMath = false;
-  bool evaluatingCode = false;
-  size_t codeEnd = 0;
-  bool evaluatingOptional = false;
-  size_t optionalEnd = 0;
-  int codeStart = -1;
-  KeyInfo found;
-  bool math_end_waiting = false;
-  size_t math_pos = 10000;
-  size_t math_prefix_size = 1;
-  string math_end;
-  static vector<string> usedText = vector<string>();
-  static bool removeMathHull = false;
-
-  interval_.removeAccents();
-
-  for (sregex_iterator itmath(interval_.par.begin(), interval_.par.end(), rmath), end; itmath != end; ++itmath) {
-    submath = *itmath;
-    if ((submath.position(2) - submath.position(0)) %2 == 1) {
-      // prefixed by odd count of '\\'
-      continue;
-    }
-    if (math_end_waiting) {
-      size_t pos = submath.position(size_t(2));
-      if ((math_end == "$") &&
-          (submath.str(2) == "$")) {
-        mi.insert("$", math_pos, 1, pos, 1);
-        math_end_waiting = false;
-      }
-      else if ((math_end == "\\]") &&
-               (submath.str(2) == "\\]")) {
-        mi.insert("\\]", math_pos, 2, pos, 2);
-        math_end_waiting = false;
-      }
-      else if ((submath.str(3).compare("end") == 0) &&
-          (submath.str(5).compare(math_end) == 0)) {
-        mi.insert(math_end, math_pos, math_prefix_size, pos, submath.str(2).length());
-        math_end_waiting = false;
-      }
-      else
-        continue;
-    }
-    else {
-      if (submath.str(3).compare("begin") == 0) {
-        math_end_waiting = true;
-        math_end = submath.str(5);
-        math_pos = submath.position(size_t(2));
-        math_prefix_size = submath.str(2).length();
-      }
-      else if (submath.str(2).compare("\\[") == 0) {
-        math_end_waiting = true;
-        math_end = "\\]";
-        math_pos = submath.position(size_t(2));
-      }
-      else if (submath.str(2) == "$") {
-        size_t pos = submath.position(size_t(2));
-        math_end_waiting = true;
-        math_end = "$";
-        math_pos = pos;
-      }
-    }
-  }
-  // Ignore language if there is math somewhere in pattern-string
-  if (isPatternString) {
-    for (auto s: usedText) {
-      // Remove entries created in previous search runs
-      keys.erase(s);
-    }
-    usedText = vector<string>();
-    if (! mi.empty()) {
-      // Disable language
-      keys["foreignlanguage"].disabled = true;
-      disableLanguageOverride = true;
-      removeMathHull = false;
-    }
-    else {
-      removeMathHull = true;	// used later if not isPatternString
-      disableLanguageOverride = false;
-    }
-  }
-  else {
-    if (disableLanguageOverride) {
-      keys["foreignlanguage"].disabled = true;
-    }
-  }
-  math_pos = mi.getFirstPos();
-  for (sregex_iterator it(interval_.par.begin(), interval_.par.end(), rkeys), end; it != end; ++it) {
-    sub = *it;
-    if ((sub.position(2) - sub.position(0)) %2 == 1) {
-      // prefixed by odd count of '\\'
-      continue;
-    }
-    string key = sub.str(5);
-    if (key == "") {
-      if (sub.str(2)[0] == '\\')
-        key = sub.str(2)[1];
-      else {
-        key = sub.str(2);
-      }
-    }
-    KeysIterator it_key = keys.find(key);
-    if (it_key != keys.end()) {
-      if (it_key->second.keytype == KeyInfo::headRemove) {
-        KeyInfo found1 = it_key->second;
-        found1.disabled = true;
-        found1.head = "\\" + key + "{";
-        found1._tokenstart = sub.position(size_t(2));
-        found1._tokensize = found1.head.length();
-        found1._dataStart = found1._tokenstart + found1.head.length();
-        int endpos = interval_.findclosing(found1._dataStart, interval_.par.length(), '{', '}', 1);
-        found1._dataEnd = endpos;
-        removeHead(found1);
-        continue;
-      }
-    }
-    if (evaluatingRegexp) {
-      if (sub.str(3).compare("endregexp") == 0) {
-        evaluatingRegexp = false;
-        // found._tokenstart already set
-        found._dataEnd = sub.position(size_t(2)) + 13;
-        found._dataStart = found._dataEnd;
-        found._tokensize = found._dataEnd - found._tokenstart;
-        found.parenthesiscount = 0;
-        found.head = interval_.par.substr(found._tokenstart, found._tokensize);
-      }
-      else {
-        continue;
-      }
-    }
-    else {
-      if (evaluatingMath) {
-        if (size_t(sub.position(size_t(2))) < mi.getEndPos())
-          continue;
-        evaluatingMath = false;
-        mi.incrEntry();
-        math_pos = mi.getStartPos();
-      }
-      if (it_key == keys.end()) {
-        found = KeyInfo(KeyInfo::isStandard, 0, true);
-        LYXERR(Debug::INFO, "Undefined key " << key << " ==> will be used as text");
-        found = KeyInfo(KeyInfo::isText, 0, false);
-        if (isPatternString) {
-          found.keytype = KeyInfo::isChar;
-          found.disabled = false;
-          found.used = true;
-        }
-        keys[key] = found;
-        usedText.push_back(key);
-      }
-      else
-        found = keys[key];
-      if (key.compare("regexp") == 0) {
-        evaluatingRegexp = true;
-        found._tokenstart = sub.position(size_t(2));
-        found._tokensize = 0;
-        continue;
-      }
-    }
-    // Handle the other params of key
-    if (found.keytype == KeyInfo::isIgnored)
-      continue;
-    else if (found.keytype == KeyInfo::isMath) {
-      if (size_t(sub.position(size_t(2))) == math_pos) {
-        found = keys[key];
-        found._tokenstart = sub.position(size_t(2));
-        found._tokensize = mi.getSize();
-        found._dataEnd = found._tokenstart + found._tokensize;
-        found._dataStart = found._dataEnd;
-        found.parenthesiscount = 0;
-        found.head = interval_.par.substr(found._tokenstart, found._tokensize);
-	if (removeMathHull) {
-	  interval_.addIntervall(found._tokenstart, found._tokenstart + mi.getPrefixSize());
-	  interval_.addIntervall(found._dataEnd - mi.getPostfixSize(), found._dataEnd);
+	static regex const rmath("(\\\\)*(\\$|\\\\\\[|\\\\\\]|\\\\(begin|end)\\{((eqnarray|equation|flalign|gather|multline|align|x?x?alignat)\\*?\\})(\\{[0-9]+\\})?)");
+	static regex const rkeys("(\\\\)*(\\$|\\\\\\[|\\\\\\]|\\\\((([a-zA-Z]+\\*?)(\\{([a-z]+\\*?)\\}|=[0-9]+[a-z]+)?)))");
+	static bool disableLanguageOverride = false;
+	smatch sub, submath;
+	bool evaluatingRegexp = false;
+	MathInfo mi;
+	bool evaluatingMath = false;
+	bool evaluatingCode = false;
+	size_t codeEnd = 0;
+	bool evaluatingOptional = false;
+	size_t optionalEnd = 0;
+	int codeStart = -1;
+	KeyInfo found;
+	bool math_end_waiting = false;
+	size_t math_pos = 10000;
+	size_t math_prefix_size = 1;
+	string math_end;
+	static vector<string> usedText = vector<string>();
+	static bool removeMathHull = false;
+
+	interval_.removeAccents();
+
+	for (sregex_iterator itmath(interval_.par.begin(), interval_.par.end(), rmath), end; itmath != end; ++itmath) {
+		submath = *itmath;
+		if ((submath.position(2) - submath.position(0)) %2 == 1) {
+			// prefixed by odd count of '\\'
+			continue;
+		}
+		if (math_end_waiting) {
+			size_t pos = submath.position(size_t(2));
+			if ((math_end == "$") &&
+					(submath.str(2) == "$")) {
+				mi.insert("$", math_pos, 1, pos, 1);
+				math_end_waiting = false;
+			}
+			else if ((math_end == "\\]") &&
+				 (submath.str(2) == "\\]")) {
+				mi.insert("\\]", math_pos, 2, pos, 2);
+				math_end_waiting = false;
+			}
+			else if ((submath.str(3).compare("end") == 0) &&
+				 (submath.str(5).compare(math_end) == 0)) {
+				mi.insert(math_end, math_pos, math_prefix_size, pos, submath.str(2).length());
+				math_end_waiting = false;
+			}
+			else
+				continue;
+		}
+		else {
+			if (submath.str(3).compare("begin") == 0) {
+				math_end_waiting = true;
+				math_end = submath.str(5);
+				math_pos = submath.position(size_t(2));
+				math_prefix_size = submath.str(2).length();
+			}
+			else if (submath.str(2).compare("\\[") == 0) {
+				math_end_waiting = true;
+				math_end = "\\]";
+				math_pos = submath.position(size_t(2));
+			}
+			else if (submath.str(2) == "$") {
+				size_t pos = submath.position(size_t(2));
+				math_end_waiting = true;
+				math_end = "$";
+				math_pos = pos;
+			}
+		}
+	}
+	// Ignore language if there is math somewhere in pattern-string
+	if (isPatternString) {
+		for (auto s: usedText) {
+			// Remove entries created in previous search runs
+			keys.erase(s);
+		}
+		usedText = vector<string>();
+		if (! mi.empty()) {
+			// Disable language
+			keys["foreignlanguage"].disabled = true;
+			disableLanguageOverride = true;
+			removeMathHull = false;
+		}
+		else {
+			removeMathHull = true;	// used later if not isPatternString
+			disableLanguageOverride = false;
+		}
 	}
 	else {
-	  // Treate all math constructs as simple math
-	  interval_.par[found._tokenstart] = '$';
-	  interval_.par[found._dataEnd - mi.getPostfixSize()] = '$';
-	  interval_.addIntervall(found._tokenstart + 1, found._tokenstart + mi.getPrefixSize());
-	  interval_.addIntervall(found._dataEnd - mi.getPostfixSize() + 1, found._dataEnd);
-	}
-        evaluatingMath = true;
-      }
-      else {
-        // begin|end of unknown env, discard
-        // First handle tables
-        // longtable|tabular
-        bool discardComment;
-        found = keys[key];
-        found.keytype = KeyInfo::doRemove;
-        if ((sub.str(7).compare("longtable") == 0) ||
-            (sub.str(7).compare("tabular") == 0)) {
-          discardComment = true;        /* '%' */
-        }
-        else {
-          discardComment = false;
-          static regex const removeArgs("^(multicols|multipar|sectionbox|subsectionbox|tcolorbox)$");
-          smatch sub2;
-          string token = sub.str(7);
-          if (regex_match(token, sub2, removeArgs)) {
-            found.keytype = KeyInfo::removeWithArg;
-          }
-        }
-        // discard spaces before pos(2)
-        int pos = sub.position(size_t(2));
-        int count;
-        for (count = 0; pos - count > 0; count++) {
-          char c = interval_.par[pos-count-1];
-          if (discardComment) {
-            if ((c != ' ') && (c != '%'))
-              break;
-          }
-          else if (c != ' ')
-            break;
-        }
-        found._tokenstart = pos - count;
-        if (sub.str(3).compare(0, 5, "begin") == 0) {
-          size_t pos1 = pos + sub.str(2).length();
-          if (sub.str(7).compare("cjk") == 0) {
-            pos1 = interval_.findclosing(pos1+1, interval_.par.length()) + 1;
-            if ((interval_.par[pos1] == '{') && (interval_.par[pos1+1] == '}'))
-              pos1 += 2;
-            found.keytype = KeyInfo::isMain;
-            found._dataStart = pos1;
-            found._dataEnd = interval_.par.length();
-            found.disabled = keys["foreignlanguage"].disabled;
-            found.used = keys["foreignlanguage"].used;
-            found._tokensize = pos1 - found._tokenstart;
-            found.head = interval_.par.substr(found._tokenstart, found._tokensize);
-          }
-          else {
-            // Swallow possible optional params
-            while (interval_.par[pos1] == '[') {
-              pos1 = interval_.findclosing(pos1+1, interval_.par.length(), '[', ']')+1;
-            }
-            // Swallow also the eventual parameter
-            if (interval_.par[pos1] == '{') {
-              found._dataEnd = interval_.findclosing(pos1+1, interval_.par.length()) + 1;
-            }
-            else {
-              found._dataEnd = pos1;
-            }
-            found._dataStart = found._dataEnd;
-            found._tokensize = count + found._dataEnd - pos;
-            found.parenthesiscount = 0;
-            found.head = interval_.par.substr(found._tokenstart, found._tokensize);
-            found.disabled = true;
-          }
-        }
-        else {
-          // Handle "\end{...}"
-          found._dataStart = pos + sub.str(2).length();
-          found._dataEnd = found._dataStart;
-          found._tokensize = count + found._dataEnd - pos;
-          found.parenthesiscount = 0;
-          found.head = interval_.par.substr(found._tokenstart, found._tokensize);
-          found.disabled = true;
-        }
-      }
-    }
-    else if (found.keytype != KeyInfo::isRegex) {
-      found._tokenstart = sub.position(size_t(2));
-      if (found.parenthesiscount == 0) {
-        // Probably to be discarded
-        size_t following_pos = sub.position(size_t(2)) + sub.str(5).length() + 1;
-        char following = interval_.par[following_pos];
-        if (following == ' ')
-          found.head = "\\" + sub.str(5) + " ";
-        else if (following == '=') {
-          // like \uldepth=1000pt
-          found.head = sub.str(2);
-        }
-        else
-          found.head = "\\" + key;
-        found._tokensize = found.head.length();
-        found._dataEnd = found._tokenstart + found._tokensize;
-        found._dataStart = found._dataEnd;
-      }
-      else {
-        int params = found._tokenstart + key.length() + 1;
-        if (evaluatingOptional) {
-          if (size_t(found._tokenstart) > optionalEnd) {
-            evaluatingOptional = false;
-          }
-          else {
-            found.disabled = true;
-          }
-        }
-        int optend = params;
-        while (interval_.par[optend] == '[') {
-          // discard optional parameters
-          optend = interval_.findclosing(optend+1, interval_.par.length(), '[', ']') + 1;
-        }
-        if (optend > params) {
-          key += interval_.par.substr(params, optend-params);
-          evaluatingOptional = true;
-          optionalEnd = optend;
-          if (found.keytype == KeyInfo::isSectioning) {
-            // Remove optional values (but still keep in header)
-            interval_.addIntervall(params, optend);
-          }
-        }
-        string token = sub.str(7);
-        int closings;
-        if (interval_.par[optend] != '{') {
-          closings = 0;
-          found.parenthesiscount = 0;
-          found.head = "\\" + key;
-        }
-        else
-          closings = found.parenthesiscount;
-        if (found.parenthesiscount == 1) {
-          found.head = "\\" + key + "{";
-        }
-        else if (found.parenthesiscount > 1) {
-          if (token != "") {
-            found.head = sub.str(2) + "{";
-            closings = found.parenthesiscount - 1;
-          }
-          else {
-            found.head = "\\" + key + "{";
-          }
-        }
-        found._tokensize = found.head.length();
-        found._dataStart = found._tokenstart + found.head.length();
-        if (found.keytype == KeyInfo::doRemove) {
-          if (closings > 0) {
-            size_t endpar = 2 + interval_.findclosing(found._dataStart, interval_.par.length(), '{', '}', closings);
-            if (endpar >= interval_.par.length())
-              found._dataStart = interval_.par.length();
-            else
-              found._dataStart = endpar;
-            found._tokensize = found._dataStart - found._tokenstart;
-          }
-          else {
-            found._dataStart = found._tokenstart + found._tokensize;
-          }
-          closings = 0;
-        }
-        if (interval_.par.substr(found._dataStart, 15).compare("\\endarguments{}") == 0) {
-          found._dataStart += 15;
-        }
-        size_t endpos;
-        if (closings < 1)
-          endpos = found._dataStart - 1;
-        else
-          endpos = interval_.findclosing(found._dataStart, interval_.par.length(), '{', '}', closings);
-        if (found.keytype == KeyInfo::isList) {
-          // Check if it really is list env
-          static regex const listre("^([a-z]+)$");
-          smatch sub2;
-          if (!regex_match(token, sub2, listre)) {
-            // Change the key of this entry. It is not in a list/item environment
-            found.keytype = KeyInfo::endArguments;
-          }
-        }
-        if (found.keytype == KeyInfo::noMain) {
-          evaluatingCode = true;
-          codeEnd = endpos;
-          codeStart = found._dataStart;
-        }
-        else if (evaluatingCode) {
-          if (size_t(found._dataStart) > codeEnd)
-            evaluatingCode = false;
-          else if (found.keytype == KeyInfo::isMain) {
-            // Disable this key, treate it as standard
-            found.keytype = KeyInfo::isStandard;
-            found.disabled = true;
-            if ((codeEnd +1 >= interval_.par.length()) &&
-                (found._tokenstart == codeStart)) {
-              // trickery, because the code inset starts
-              // with \selectlanguage ...
-              codeEnd = endpos;
-              if (entries_.size() > 1) {
-                entries_[entries_.size()-1]._dataEnd = codeEnd;
-              }
-            }
-          }
-        }
-        if ((endpos == interval_.par.length()) &&
-            (found.keytype == KeyInfo::doRemove)) {
-          // Missing closing => error in latex-input?
-          // therefore do not delete remaining data
-          found._dataStart -= 1;
-          found._dataEnd = found._dataStart;
-        }
-        else
-          found._dataEnd = endpos;
-      }
-      if (isPatternString) {
-        keys[key].used = true;
-      }
-    }
-    entries_.push_back(found);
-  }
+		if (disableLanguageOverride) {
+			keys["foreignlanguage"].disabled = true;
+		}
+	}
+	math_pos = mi.getFirstPos();
+	for (sregex_iterator it(interval_.par.begin(), interval_.par.end(), rkeys), end; it != end; ++it) {
+		sub = *it;
+		if ((sub.position(2) - sub.position(0)) %2 == 1) {
+			// prefixed by odd count of '\\'
+			continue;
+		}
+		string key = sub.str(5);
+		if (key == "") {
+			if (sub.str(2)[0] == '\\')
+				key = sub.str(2)[1];
+			else {
+				key = sub.str(2);
+			}
+		}
+		KeysIterator it_key = keys.find(key);
+		if (it_key != keys.end()) {
+			if (it_key->second.keytype == KeyInfo::headRemove) {
+				KeyInfo found1 = it_key->second;
+				found1.disabled = true;
+				found1.head = "\\" + key + "{";
+				found1._tokenstart = sub.position(size_t(2));
+				found1._tokensize = found1.head.length();
+				found1._dataStart = found1._tokenstart + found1.head.length();
+				int endpos = interval_.findclosing(found1._dataStart, interval_.par.length(), '{', '}', 1);
+				found1._dataEnd = endpos;
+				removeHead(found1);
+				continue;
+			}
+		}
+		if (evaluatingRegexp) {
+			if (sub.str(3).compare("endregexp") == 0) {
+				evaluatingRegexp = false;
+				// found._tokenstart already set
+				found._dataEnd = sub.position(size_t(2)) + 13;
+				found._dataStart = found._dataEnd;
+				found._tokensize = found._dataEnd - found._tokenstart;
+				found.parenthesiscount = 0;
+				found.head = interval_.par.substr(found._tokenstart, found._tokensize);
+			}
+			else {
+				continue;
+			}
+		}
+		else {
+			if (evaluatingMath) {
+				if (size_t(sub.position(size_t(2))) < mi.getEndPos())
+					continue;
+				evaluatingMath = false;
+				mi.incrEntry();
+				math_pos = mi.getStartPos();
+			}
+			if (it_key == keys.end()) {
+				found = KeyInfo(KeyInfo::isStandard, 0, true);
+				LYXERR(Debug::INFO, "Undefined key " << key << " ==> will be used as text");
+				found = KeyInfo(KeyInfo::isText, 0, false);
+				if (isPatternString) {
+					found.keytype = KeyInfo::isChar;
+					found.disabled = false;
+					found.used = true;
+				}
+				keys[key] = found;
+				usedText.push_back(key);
+			}
+			else
+				found = keys[key];
+			if (key.compare("regexp") == 0) {
+				evaluatingRegexp = true;
+				found._tokenstart = sub.position(size_t(2));
+				found._tokensize = 0;
+				continue;
+			}
+		}
+		// Handle the other params of key
+		if (found.keytype == KeyInfo::isIgnored)
+			continue;
+		else if (found.keytype == KeyInfo::isMath) {
+			if (size_t(sub.position(size_t(2))) == math_pos) {
+				found = keys[key];
+				found._tokenstart = sub.position(size_t(2));
+				found._tokensize = mi.getSize();
+				found._dataEnd = found._tokenstart + found._tokensize;
+				found._dataStart = found._dataEnd;
+				found.parenthesiscount = 0;
+				found.head = interval_.par.substr(found._tokenstart, found._tokensize);
+				if (removeMathHull) {
+					interval_.addIntervall(found._tokenstart, found._tokenstart + mi.getPrefixSize());
+					interval_.addIntervall(found._dataEnd - mi.getPostfixSize(), found._dataEnd);
+				}
+				else {
+					// Treate all math constructs as simple math
+					interval_.par[found._tokenstart] = '$';
+					interval_.par[found._dataEnd - mi.getPostfixSize()] = '$';
+					interval_.addIntervall(found._tokenstart + 1, found._tokenstart + mi.getPrefixSize());
+					interval_.addIntervall(found._dataEnd - mi.getPostfixSize() + 1, found._dataEnd);
+				}
+				evaluatingMath = true;
+			}
+			else {
+				// begin|end of unknown env, discard
+				// First handle tables
+				// longtable|tabular
+				bool discardComment;
+				found = keys[key];
+				found.keytype = KeyInfo::doRemove;
+				if ((sub.str(7).compare("longtable") == 0) ||
+						(sub.str(7).compare("tabular") == 0)) {
+					discardComment = true;        /* '%' */
+				}
+				else {
+					discardComment = false;
+					static regex const removeArgs("^(multicols|multipar|sectionbox|subsectionbox|tcolorbox)$");
+					smatch sub2;
+					string token = sub.str(7);
+					if (regex_match(token, sub2, removeArgs)) {
+						found.keytype = KeyInfo::removeWithArg;
+					}
+				}
+				// discard spaces before pos(2)
+				int pos = sub.position(size_t(2));
+				int count;
+				for (count = 0; pos - count > 0; count++) {
+					char c = interval_.par[pos-count-1];
+					if (discardComment) {
+						if ((c != ' ') && (c != '%'))
+							break;
+					}
+					else if (c != ' ')
+						break;
+				}
+				found._tokenstart = pos - count;
+				if (sub.str(3).compare(0, 5, "begin") == 0) {
+					size_t pos1 = pos + sub.str(2).length();
+					if (sub.str(7).compare("cjk") == 0) {
+						pos1 = interval_.findclosing(pos1+1, interval_.par.length()) + 1;
+						if ((interval_.par[pos1] == '{') && (interval_.par[pos1+1] == '}'))
+							pos1 += 2;
+						found.keytype = KeyInfo::isMain;
+						found._dataStart = pos1;
+						found._dataEnd = interval_.par.length();
+						found.disabled = keys["foreignlanguage"].disabled;
+						found.used = keys["foreignlanguage"].used;
+						found._tokensize = pos1 - found._tokenstart;
+						found.head = interval_.par.substr(found._tokenstart, found._tokensize);
+					}
+					else {
+						// Swallow possible optional params
+						while (interval_.par[pos1] == '[') {
+							pos1 = interval_.findclosing(pos1+1, interval_.par.length(), '[', ']')+1;
+						}
+						// Swallow also the eventual parameter
+						if (interval_.par[pos1] == '{') {
+							found._dataEnd = interval_.findclosing(pos1+1, interval_.par.length()) + 1;
+						}
+						else {
+							found._dataEnd = pos1;
+						}
+						found._dataStart = found._dataEnd;
+						found._tokensize = count + found._dataEnd - pos;
+						found.parenthesiscount = 0;
+						found.head = interval_.par.substr(found._tokenstart, found._tokensize);
+						found.disabled = true;
+					}
+				}
+				else {
+					// Handle "\end{...}"
+					found._dataStart = pos + sub.str(2).length();
+					found._dataEnd = found._dataStart;
+					found._tokensize = count + found._dataEnd - pos;
+					found.parenthesiscount = 0;
+					found.head = interval_.par.substr(found._tokenstart, found._tokensize);
+					found.disabled = true;
+				}
+			}
+		}
+		else if (found.keytype != KeyInfo::isRegex) {
+			found._tokenstart = sub.position(size_t(2));
+			if (found.parenthesiscount == 0) {
+				// Probably to be discarded
+				size_t following_pos = sub.position(size_t(2)) + sub.str(5).length() + 1;
+				char following = interval_.par[following_pos];
+				if (following == ' ')
+					found.head = "\\" + sub.str(5) + " ";
+				else if (following == '=') {
+					// like \uldepth=1000pt
+					found.head = sub.str(2);
+				}
+				else
+					found.head = "\\" + key;
+				found._tokensize = found.head.length();
+				found._dataEnd = found._tokenstart + found._tokensize;
+				found._dataStart = found._dataEnd;
+			}
+			else {
+				int params = found._tokenstart + key.length() + 1;
+				if (evaluatingOptional) {
+					if (size_t(found._tokenstart) > optionalEnd) {
+						evaluatingOptional = false;
+					}
+					else {
+						found.disabled = true;
+					}
+				}
+				int optend = params;
+				while (interval_.par[optend] == '[') {
+					// discard optional parameters
+					optend = interval_.findclosing(optend+1, interval_.par.length(), '[', ']') + 1;
+				}
+				if (optend > params) {
+					key += interval_.par.substr(params, optend-params);
+					evaluatingOptional = true;
+					optionalEnd = optend;
+					if (found.keytype == KeyInfo::isSectioning) {
+						// Remove optional values (but still keep in header)
+						interval_.addIntervall(params, optend);
+					}
+				}
+				string token = sub.str(7);
+				int closings;
+				if (interval_.par[optend] != '{') {
+					closings = 0;
+					found.parenthesiscount = 0;
+					found.head = "\\" + key;
+				}
+				else
+					closings = found.parenthesiscount;
+				if (found.parenthesiscount == 1) {
+					found.head = "\\" + key + "{";
+				}
+				else if (found.parenthesiscount > 1) {
+					if (token != "") {
+						found.head = sub.str(2) + "{";
+						closings = found.parenthesiscount - 1;
+					}
+					else {
+						found.head = "\\" + key + "{";
+					}
+				}
+				found._tokensize = found.head.length();
+				found._dataStart = found._tokenstart + found.head.length();
+				if (found.keytype == KeyInfo::doRemove) {
+					if (closings > 0) {
+						size_t endpar = 2 + interval_.findclosing(found._dataStart, interval_.par.length(), '{', '}', closings);
+						if (endpar >= interval_.par.length())
+							found._dataStart = interval_.par.length();
+						else
+							found._dataStart = endpar;
+						found._tokensize = found._dataStart - found._tokenstart;
+					}
+					else {
+						found._dataStart = found._tokenstart + found._tokensize;
+					}
+					closings = 0;
+				}
+				if (interval_.par.substr(found._dataStart, 15).compare("\\endarguments{}") == 0) {
+					found._dataStart += 15;
+				}
+				size_t endpos;
+				if (closings < 1)
+					endpos = found._dataStart - 1;
+				else
+					endpos = interval_.findclosing(found._dataStart, interval_.par.length(), '{', '}', closings);
+				if (found.keytype == KeyInfo::isList) {
+					// Check if it really is list env
+					static regex const listre("^([a-z]+)$");
+					smatch sub2;
+					if (!regex_match(token, sub2, listre)) {
+						// Change the key of this entry. It is not in a list/item environment
+						found.keytype = KeyInfo::endArguments;
+					}
+				}
+				if (found.keytype == KeyInfo::noMain) {
+					evaluatingCode = true;
+					codeEnd = endpos;
+					codeStart = found._dataStart;
+				}
+				else if (evaluatingCode) {
+					if (size_t(found._dataStart) > codeEnd)
+						evaluatingCode = false;
+					else if (found.keytype == KeyInfo::isMain) {
+						// Disable this key, treate it as standard
+						found.keytype = KeyInfo::isStandard;
+						found.disabled = true;
+						if ((codeEnd +1 >= interval_.par.length()) &&
+								(found._tokenstart == codeStart)) {
+							// trickery, because the code inset starts
+							// with \selectlanguage ...
+							codeEnd = endpos;
+							if (entries_.size() > 1) {
+								entries_[entries_.size()-1]._dataEnd = codeEnd;
+							}
+						}
+					}
+				}
+				if ((endpos == interval_.par.length()) &&
+						(found.keytype == KeyInfo::doRemove)) {
+					// Missing closing => error in latex-input?
+					// therefore do not delete remaining data
+					found._dataStart -= 1;
+					found._dataEnd = found._dataStart;
+				}
+				else
+					found._dataEnd = endpos;
+			}
+			if (isPatternString) {
+				keys[key].used = true;
+			}
+		}
+		entries_.push_back(found);
+	}
 }
 
 void LatexInfo::makeKey(const string &keysstring, KeyInfo keyI, bool isPatternString)
 {
-  stringstream s(keysstring);
-  string key;
-  const char delim = '|';
-  while (getline(s, key, delim)) {
-    KeyInfo keyII(keyI);
-    if (isPatternString) {
-      keyII.used = false;
-    }
-    else if ( !keys[key].used)
-      keyII.disabled = true;
-    keys[key] = keyII;
-  }
+	stringstream s(keysstring);
+	string key;
+	const char delim = '|';
+	while (getline(s, key, delim)) {
+		KeyInfo keyII(keyI);
+		if (isPatternString) {
+			keyII.used = false;
+		}
+		else if ( !keys[key].used)
+			keyII.disabled = true;
+		keys[key] = keyII;
+	}
 }
 
 void LatexInfo::buildKeys(bool isPatternString)
 {
 
-  static bool keysBuilt = false;
-  if (keysBuilt && !isPatternString) return;
-
-  // Keys to ignore in any case
-  makeKey("text|textcyrillic|lyxmathsym|ensuremath", KeyInfo(KeyInfo::headRemove, 1, true), true);
-  // Known standard keys with 1 parameter.
-  // Split is done, if not at start of region
-  makeKey("textsf|textss|texttt", KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getFamily()), isPatternString);
-  makeKey("textbf",               KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getSeries()), isPatternString);
-  makeKey("textit|textsc|textsl", KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getShape()), isPatternString);
-  makeKey("uuline|uline|uwave",   KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getUnderline()), isPatternString);
-  makeKey("emph|noun",            KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getMarkUp()), isPatternString);
-  makeKey("sout|xout",            KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getStrikeOut()), isPatternString);
-
-  makeKey("section|subsection|subsubsection|paragraph|subparagraph|minisec",
-          KeyInfo(KeyInfo::isSectioning, 1, ignoreFormats.getSectioning()), isPatternString);
-  makeKey("section*|subsection*|subsubsection*|paragraph*",
-          KeyInfo(KeyInfo::isSectioning, 1, ignoreFormats.getSectioning()), isPatternString);
-  makeKey("part|part*|chapter|chapter*", KeyInfo(KeyInfo::isSectioning, 1, ignoreFormats.getSectioning()), isPatternString);
-  makeKey("title|subtitle|author|subject|publishers|dedication|uppertitleback|lowertitleback|extratitle|lyxaddress|lyxrightaddress", KeyInfo(KeyInfo::isTitle, 1, ignoreFormats.getFrontMatter()), isPatternString);
-  // Regex
-  makeKey("regexp", KeyInfo(KeyInfo::isRegex, 1, false), isPatternString);
-
-  // Split is done, if not at start of region
-  makeKey("textcolor", KeyInfo(KeyInfo::isStandard, 2, ignoreFormats.getColor()), isPatternString);
-  makeKey("latexenvironment", KeyInfo(KeyInfo::isStandard, 2, false), isPatternString);
-
-  // Split is done always.
-  makeKey("foreignlanguage", KeyInfo(KeyInfo::isMain, 2, ignoreFormats.getLanguage()), isPatternString);
-
-  // Known charaters
-  // No split
-  makeKey("backslash|textbackslash|slash",  KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  makeKey("textasciicircum|textasciitilde", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  makeKey("textasciiacute|texemdash",       KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  makeKey("dots|ldots",                     KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  // Spaces
-  makeKey("quad|qquad|hfill|dotfill",               KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  makeKey("textvisiblespace|nobreakspace",          KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  makeKey("negthickspace|negmedspace|negthinspace", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  makeKey("thickspace|medspace|thinspace",          KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  // Skip
-  // makeKey("enskip|smallskip|medskip|bigskip|vfill", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  // Custom space/skip, remove the content (== length value)
-  makeKey("vspace|vspace*|hspace|hspace*|mspace", KeyInfo(KeyInfo::noContent, 1, false), isPatternString);
-  // Found in fr/UserGuide.lyx
-  makeKey("og|fg", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  // quotes
-  makeKey("textquotedbl|quotesinglbase|lyxarrow", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  makeKey("textquotedblleft|textquotedblright", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  // Known macros to remove (including their parameter)
-  // No split
-  makeKey("input|inputencoding|label|ref|index|bibitem", KeyInfo(KeyInfo::doRemove, 1, false), isPatternString);
-  makeKey("addtocounter|setlength",                 KeyInfo(KeyInfo::noContent, 2, true), isPatternString);
-  // handle like standard keys with 1 parameter.
-  makeKey("url|href|vref|thanks", KeyInfo(KeyInfo::isStandard, 1, false), isPatternString);
-
-  // Ignore deleted text
-  makeKey("lyxdeleted", KeyInfo(KeyInfo::doRemove, 3, false), isPatternString);
-  // but preserve added text
-  makeKey("lyxadded", KeyInfo(KeyInfo::doRemove, 2, false), isPatternString);
-
-  // Macros to remove, but let the parameter survive
-  // No split
-  makeKey("menuitem|textmd|textrm", KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
-
-  // Remove language spec from content of these insets
-  makeKey("code", KeyInfo(KeyInfo::noMain, 1, false), isPatternString);
-
-  // Same effect as previous, parameter will survive (because there is no one anyway)
-  // No split
-  makeKey("noindent|textcompwordmark|maketitle", KeyInfo(KeyInfo::isStandard, 0, true), isPatternString);
-  // Remove table decorations
-  makeKey("hline|tabularnewline|toprule|bottomrule|midrule", KeyInfo(KeyInfo::doRemove, 0, true), isPatternString);
-  // Discard shape-header.
-  // For footnote or shortcut too, because of lang settings
-  // and wrong handling if used 'KeyInfo::noMain'
-  makeKey("circlepar|diamondpar|heartpar|nutpar",  KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
-  makeKey("trianglerightpar|hexagonpar|starpar",   KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
-  makeKey("triangleuppar|triangledownpar|droppar", KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
-  makeKey("triangleleftpar|shapepar|dropuppar",    KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
-  makeKey("hphantom|vphantom|note|footnote|shortcut|include|includegraphics",     KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
-  makeKey("parbox", KeyInfo(KeyInfo::doRemove, 1, true), isPatternString);
-  // like ('tiny{}' or '\tiny ' ... )
-  makeKey("footnotesize|tiny|scriptsize|small|large|Large|LARGE|huge|Huge", KeyInfo(KeyInfo::isSize, 0, false), isPatternString);
-
-  // Survives, like known character
-  // makeKey("lyx|LyX|latex|LaTeX|latexe|LaTeXe|tex|TeX", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  makeKey("tableofcontents", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
-  makeKey("item|listitem", KeyInfo(KeyInfo::isList, 1, false), isPatternString);
-
-  makeKey("begin|end", KeyInfo(KeyInfo::isMath, 1, false), isPatternString);
-  makeKey("[|]", KeyInfo(KeyInfo::isMath, 1, false), isPatternString);
-  makeKey("$", KeyInfo(KeyInfo::isMath, 1, false), isPatternString);
-
-  makeKey("par|uldepth|ULdepth|protect|nobreakdash|medskip|relax", KeyInfo(KeyInfo::isStandard, 0, true), isPatternString);
-  // Remove RTL/LTR marker
-  makeKey("l|r|textlr|textfr|textar|beginl|endl", KeyInfo(KeyInfo::isStandard, 0, true), isPatternString);
-  makeKey("lettrine", KeyInfo(KeyInfo::cleanToStart, 0, true), isPatternString);
-  makeKey("lyxslide", KeyInfo(KeyInfo::isSectioning, 1, true), isPatternString);
-  makeKey("endarguments", KeyInfo(KeyInfo::endArguments, 0, true), isPatternString);
-  makeKey("twocolumn", KeyInfo(KeyInfo::removeWithArg, 2, true), isPatternString);
-  makeKey("tnotetext|ead|fntext|cortext|address", KeyInfo(KeyInfo::removeWithArg, 0, true), isPatternString);
-  makeKey("lyxend", KeyInfo(KeyInfo::isStandard, 0, true), isPatternString);
-  if (isPatternString) {
-    // Allow the first searched string to rebuild the keys too
-    keysBuilt = false;
-  }
-  else {
-    // no need to rebuild again
-    keysBuilt = true;
-  }
+	static bool keysBuilt = false;
+	if (keysBuilt && !isPatternString) return;
+
+	// Keys to ignore in any case
+	makeKey("text|textcyrillic|lyxmathsym|ensuremath", KeyInfo(KeyInfo::headRemove, 1, true), true);
+	// Known standard keys with 1 parameter.
+	// Split is done, if not at start of region
+	makeKey("textsf|textss|texttt", KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getFamily()), isPatternString);
+	makeKey("textbf",               KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getSeries()), isPatternString);
+	makeKey("textit|textsc|textsl", KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getShape()), isPatternString);
+	makeKey("uuline|uline|uwave",   KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getUnderline()), isPatternString);
+	makeKey("emph|noun",            KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getMarkUp()), isPatternString);
+	makeKey("sout|xout",            KeyInfo(KeyInfo::isStandard, 1, ignoreFormats.getStrikeOut()), isPatternString);
+
+	makeKey("section|subsection|subsubsection|paragraph|subparagraph|minisec",
+		KeyInfo(KeyInfo::isSectioning, 1, ignoreFormats.getSectioning()), isPatternString);
+	makeKey("section*|subsection*|subsubsection*|paragraph*",
+		KeyInfo(KeyInfo::isSectioning, 1, ignoreFormats.getSectioning()), isPatternString);
+	makeKey("part|part*|chapter|chapter*", KeyInfo(KeyInfo::isSectioning, 1, ignoreFormats.getSectioning()), isPatternString);
+	makeKey("title|subtitle|author|subject|publishers|dedication|uppertitleback|lowertitleback|extratitle|lyxaddress|lyxrightaddress", KeyInfo(KeyInfo::isTitle, 1, ignoreFormats.getFrontMatter()), isPatternString);
+	// Regex
+	makeKey("regexp", KeyInfo(KeyInfo::isRegex, 1, false), isPatternString);
+
+	// Split is done, if not at start of region
+	makeKey("textcolor", KeyInfo(KeyInfo::isStandard, 2, ignoreFormats.getColor()), isPatternString);
+	makeKey("latexenvironment", KeyInfo(KeyInfo::isStandard, 2, false), isPatternString);
+
+	// Split is done always.
+	makeKey("foreignlanguage", KeyInfo(KeyInfo::isMain, 2, ignoreFormats.getLanguage()), isPatternString);
+
+	// Known charaters
+	// No split
+	makeKey("backslash|textbackslash|slash",  KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	makeKey("textasciicircum|textasciitilde", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	makeKey("textasciiacute|texemdash",       KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	makeKey("dots|ldots",                     KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	// Spaces
+	makeKey("quad|qquad|hfill|dotfill",               KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	makeKey("textvisiblespace|nobreakspace",          KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	makeKey("negthickspace|negmedspace|negthinspace", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	makeKey("thickspace|medspace|thinspace",          KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	// Skip
+	// makeKey("enskip|smallskip|medskip|bigskip|vfill", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	// Custom space/skip, remove the content (== length value)
+	makeKey("vspace|vspace*|hspace|hspace*|mspace", KeyInfo(KeyInfo::noContent, 1, false), isPatternString);
+	// Found in fr/UserGuide.lyx
+	makeKey("og|fg", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	// quotes
+	makeKey("textquotedbl|quotesinglbase|lyxarrow", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	makeKey("textquotedblleft|textquotedblright", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	// Known macros to remove (including their parameter)
+	// No split
+	makeKey("input|inputencoding|label|ref|index|bibitem", KeyInfo(KeyInfo::doRemove, 1, false), isPatternString);
+	makeKey("addtocounter|setlength",                 KeyInfo(KeyInfo::noContent, 2, true), isPatternString);
+	// handle like standard keys with 1 parameter.
+	makeKey("url|href|vref|thanks", KeyInfo(KeyInfo::isStandard, 1, false), isPatternString);
+
+	// Ignore deleted text
+	makeKey("lyxdeleted", KeyInfo(KeyInfo::doRemove, 3, false), isPatternString);
+	// but preserve added text
+	makeKey("lyxadded", KeyInfo(KeyInfo::doRemove, 2, false), isPatternString);
+
+	// Macros to remove, but let the parameter survive
+	// No split
+	makeKey("menuitem|textmd|textrm", KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
+
+	// Remove language spec from content of these insets
+	makeKey("code", KeyInfo(KeyInfo::noMain, 1, false), isPatternString);
+
+	// Same effect as previous, parameter will survive (because there is no one anyway)
+	// No split
+	makeKey("noindent|textcompwordmark|maketitle", KeyInfo(KeyInfo::isStandard, 0, true), isPatternString);
+	// Remove table decorations
+	makeKey("hline|tabularnewline|toprule|bottomrule|midrule", KeyInfo(KeyInfo::doRemove, 0, true), isPatternString);
+	// Discard shape-header.
+	// For footnote or shortcut too, because of lang settings
+	// and wrong handling if used 'KeyInfo::noMain'
+	makeKey("circlepar|diamondpar|heartpar|nutpar",  KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
+	makeKey("trianglerightpar|hexagonpar|starpar",   KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
+	makeKey("triangleuppar|triangledownpar|droppar", KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
+	makeKey("triangleleftpar|shapepar|dropuppar",    KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
+	makeKey("hphantom|vphantom|note|footnote|shortcut|include|includegraphics",     KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
+	makeKey("parbox", KeyInfo(KeyInfo::doRemove, 1, true), isPatternString);
+	// like ('tiny{}' or '\tiny ' ... )
+	makeKey("footnotesize|tiny|scriptsize|small|large|Large|LARGE|huge|Huge", KeyInfo(KeyInfo::isSize, 0, false), isPatternString);
+
+	// Survives, like known character
+	// makeKey("lyx|LyX|latex|LaTeX|latexe|LaTeXe|tex|TeX", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	makeKey("tableofcontents", KeyInfo(KeyInfo::isChar, 0, false), isPatternString);
+	makeKey("item|listitem", KeyInfo(KeyInfo::isList, 1, false), isPatternString);
+
+	makeKey("begin|end", KeyInfo(KeyInfo::isMath, 1, false), isPatternString);
+	makeKey("[|]", KeyInfo(KeyInfo::isMath, 1, false), isPatternString);
+	makeKey("$", KeyInfo(KeyInfo::isMath, 1, false), isPatternString);
+
+	makeKey("par|uldepth|ULdepth|protect|nobreakdash|medskip|relax", KeyInfo(KeyInfo::isStandard, 0, true), isPatternString);
+	// Remove RTL/LTR marker
+	makeKey("l|r|textlr|textfr|textar|beginl|endl", KeyInfo(KeyInfo::isStandard, 0, true), isPatternString);
+	makeKey("lettrine", KeyInfo(KeyInfo::cleanToStart, 0, true), isPatternString);
+	makeKey("lyxslide", KeyInfo(KeyInfo::isSectioning, 1, true), isPatternString);
+	makeKey("endarguments", KeyInfo(KeyInfo::endArguments, 0, true), isPatternString);
+	makeKey("twocolumn", KeyInfo(KeyInfo::removeWithArg, 2, true), isPatternString);
+	makeKey("tnotetext|ead|fntext|cortext|address", KeyInfo(KeyInfo::removeWithArg, 0, true), isPatternString);
+	makeKey("lyxend", KeyInfo(KeyInfo::isStandard, 0, true), isPatternString);
+	if (isPatternString) {
+		// Allow the first searched string to rebuild the keys too
+		keysBuilt = false;
+	}
+	else {
+		// no need to rebuild again
+		keysBuilt = true;
+	}
 }
 
 /*
@@ -2779,555 +2779,555 @@ void LatexInfo::buildKeys(bool isPatternString)
  */
 void Intervall::handleParentheses(int lastpos, bool closingAllowed)
 {
-  int skip = 0;
-  for (int i = depts[actualdeptindex]; i < lastpos; i+= 1 + skip) {
-    char c;
-    c = par[i];
-    skip = 0;
-    if (c == '\\') skip = 1;
-    else if (c == '{') {
-      handleOpenP(i);
-    }
-    else if (c == '}') {
-      handleCloseP(i, closingAllowed);
-    }
-  }
+	int skip = 0;
+	for (int i = depts[actualdeptindex]; i < lastpos; i+= 1 + skip) {
+		char c;
+		c = par[i];
+		skip = 0;
+		if (c == '\\') skip = 1;
+		else if (c == '{') {
+			handleOpenP(i);
+		}
+		else if (c == '}') {
+			handleCloseP(i, closingAllowed);
+		}
+	}
 }
 
 #if (0)
 string Intervall::show(int lastpos)
 {
-  int idx = 0;                          /* int intervalls */
-  string s;
-  int i = 0;
-  for (idx = 0; idx <= ignoreidx; idx++) {
-    while (i < lastpos) {
-      int printsize;
-      if (i <= borders[idx].low) {
-        if (borders[idx].low > lastpos)
-          printsize = lastpos - i;
-        else
-          printsize = borders[idx].low - i;
-        s += par.substr(i, printsize);
-        i += printsize;
-        if (i >= borders[idx].low)
-          i = borders[idx].upper;
-      }
-      else {
-        i = borders[idx].upper;
-        break;
-      }
-    }
-  }
-  if (lastpos > i) {
-    s += par.substr(i, lastpos-i);
-  }
-  return s;
+	int idx = 0;                          /* int intervalls */
+	string s;
+	int i = 0;
+	for (idx = 0; idx <= ignoreidx; idx++) {
+		while (i < lastpos) {
+			int printsize;
+			if (i <= borders[idx].low) {
+				if (borders[idx].low > lastpos)
+					printsize = lastpos - i;
+				else
+					printsize = borders[idx].low - i;
+				s += par.substr(i, printsize);
+				i += printsize;
+				if (i >= borders[idx].low)
+					i = borders[idx].upper;
+			}
+			else {
+				i = borders[idx].upper;
+				break;
+			}
+		}
+	}
+	if (lastpos > i) {
+		s += par.substr(i, lastpos-i);
+	}
+	return s;
 }
 #endif
 
 void Intervall::output(ostringstream &os, int lastpos)
 {
-  // get number of chars to output
-  int idx = 0;                          /* int intervalls */
-  int i = 0;
-  int printed = 0;
-  string startTitle = titleValue;
-  for (idx = 0; idx <= ignoreidx; idx++) {
-    if (i < lastpos) {
-      if (i <= borders[idx].low) {
-        int printsize;
-        if (borders[idx].low > lastpos)
-          printsize = lastpos - i;
-        else
-          printsize = borders[idx].low - i;
-        if (printsize > 0) {
-          os << startTitle << par.substr(i, printsize);
-          i += printsize;
-          printed += printsize;
-          startTitle = "";
-        }
-        handleParentheses(i, false);
-        if (i >= borders[idx].low)
-          i = borders[idx].upper;
-      }
-      else {
-        i = borders[idx].upper;
-      }
-    }
-    else
-      break;
-  }
-  if (lastpos > i) {
-    os << startTitle << par.substr(i, lastpos-i);
-    printed += lastpos-i;
-  }
-  handleParentheses(lastpos, false);
-  int startindex;
-  if (keys["foreignlanguage"].disabled)
-    startindex = actualdeptindex-langcount;
-  else
-    startindex = actualdeptindex;
-  for (int i = startindex; i > 0; --i) {
-    os << "}";
-  }
-  if (hasTitle && (printed > 0))
-    os << "}";
-  if (! isPatternString_)
-    os << "\n";
-  handleParentheses(lastpos, true); /* extra closings '}' allowed here */
+	// get number of chars to output
+	int idx = 0;                          /* int intervalls */
+	int i = 0;
+	int printed = 0;
+	string startTitle = titleValue;
+	for (idx = 0; idx <= ignoreidx; idx++) {
+		if (i < lastpos) {
+			if (i <= borders[idx].low) {
+				int printsize;
+				if (borders[idx].low > lastpos)
+					printsize = lastpos - i;
+				else
+					printsize = borders[idx].low - i;
+				if (printsize > 0) {
+					os << startTitle << par.substr(i, printsize);
+					i += printsize;
+					printed += printsize;
+					startTitle = "";
+				}
+				handleParentheses(i, false);
+				if (i >= borders[idx].low)
+					i = borders[idx].upper;
+			}
+			else {
+				i = borders[idx].upper;
+			}
+		}
+		else
+			break;
+	}
+	if (lastpos > i) {
+		os << startTitle << par.substr(i, lastpos-i);
+		printed += lastpos-i;
+	}
+	handleParentheses(lastpos, false);
+	int startindex;
+	if (keys["foreignlanguage"].disabled)
+		startindex = actualdeptindex-langcount;
+	else
+		startindex = actualdeptindex;
+	for (int i = startindex; i > 0; --i) {
+		os << "}";
+	}
+	if (hasTitle && (printed > 0))
+		os << "}";
+	if (! isPatternString_)
+		os << "\n";
+	handleParentheses(lastpos, true); /* extra closings '}' allowed here */
 }
 
 void LatexInfo::processRegion(int start, int region_end)
 {
-  while (start < region_end) {          /* Let {[} and {]} survive */
-    int cnt = interval_.isOpeningPar(start);
-    if (cnt == 1) {
-      // Closing is allowed past the region
-      int closing = interval_.findclosing(start+1, interval_.par.length());
-      interval_.addIntervall(start, start+1);
-      interval_.addIntervall(closing, closing+1);
-    }
-    else if (cnt == 3)
-      start += 2;
-    start = interval_.nextNotIgnored(start+1);
-  }
+	while (start < region_end) {          /* Let {[} and {]} survive */
+		int cnt = interval_.isOpeningPar(start);
+		if (cnt == 1) {
+			// Closing is allowed past the region
+			int closing = interval_.findclosing(start+1, interval_.par.length());
+			interval_.addIntervall(start, start+1);
+			interval_.addIntervall(closing, closing+1);
+		}
+		else if (cnt == 3)
+			start += 2;
+		start = interval_.nextNotIgnored(start+1);
+	}
 }
 
 void LatexInfo::removeHead(KeyInfo const & actual, int count)
 {
-  if (actual.parenthesiscount == 0) {
-    // "{\tiny{} ...}" ==> "{{} ...}"
-    interval_.addIntervall(actual._tokenstart-count, actual._tokenstart + actual._tokensize);
-  }
-  else {
-    // Remove header hull, that is "\url{abcd}" ==> "abcd"
-    interval_.addIntervall(actual._tokenstart - count, actual._dataStart);
-    interval_.addIntervall(actual._dataEnd, actual._dataEnd+1);
-  }
+	if (actual.parenthesiscount == 0) {
+		// "{\tiny{} ...}" ==> "{{} ...}"
+		interval_.addIntervall(actual._tokenstart-count, actual._tokenstart + actual._tokensize);
+	}
+	else {
+		// Remove header hull, that is "\url{abcd}" ==> "abcd"
+		interval_.addIntervall(actual._tokenstart - count, actual._dataStart);
+		interval_.addIntervall(actual._dataEnd, actual._dataEnd+1);
+	}
 }
 
 int LatexInfo::dispatch(ostringstream &os, int previousStart, KeyInfo &actual)
 {
-  int nextKeyIdx = 0;
-  switch (actual.keytype)
-  {
-    case KeyInfo::isTitle: {
-      removeHead(actual);
-      nextKeyIdx = getNextKey();
-      break;
-    }
-    case KeyInfo::cleanToStart: {
-      actual._dataEnd = actual._dataStart;
-      nextKeyIdx = getNextKey();
-      // Search for end of arguments
-      int tmpIdx = find(nextKeyIdx, KeyInfo::endArguments);
-      if (tmpIdx > 0) {
-        for (int i = nextKeyIdx; i <= tmpIdx; i++) {
-          entries_[i].disabled = true;
-        }
-        actual._dataEnd = entries_[tmpIdx]._dataEnd;
-      }
-      while (interval_.par[actual._dataEnd] == ' ')
-        actual._dataEnd++;
-      interval_.addIntervall(0, actual._dataEnd+1);
-      interval_.actualdeptindex = 0;
-      interval_.depts[0] = actual._dataEnd+1;
-      interval_.closes[0] = -1;
-      break;
-    }
-    case KeyInfo::isText:
-      interval_.par[actual._tokenstart] = '#';
-      //interval_.addIntervall(actual._tokenstart, actual._tokenstart+1);
-      nextKeyIdx = getNextKey();
-      break;
-    case KeyInfo::noContent: {          /* char like "\hspace{2cm}" */
-      if (actual.disabled)
-        interval_.addIntervall(actual._tokenstart, actual._dataEnd);
-      else
-        interval_.addIntervall(actual._dataStart, actual._dataEnd);
-    }
-      // fall through
-    case KeyInfo::isChar: {
-      nextKeyIdx = getNextKey();
-      break;
-    }
-    case KeyInfo::isSize: {
-      if (actual.disabled || (interval_.par[actual._dataStart] != '{') || (interval_.par[actual._dataStart-1] == ' ')) {
-        if (actual.parenthesiscount == 0)
-          interval_.addIntervall(actual._tokenstart, actual._dataEnd);
-        else {
-          interval_.addIntervall(actual._tokenstart, actual._dataEnd+1);
-        }
-        nextKeyIdx = getNextKey();
-      } else {
-        // Here _dataStart points to '{', so correct it
-        actual._dataStart += 1;
-        actual._tokensize += 1;
-        actual.parenthesiscount = 1;
-        if (interval_.par[actual._dataStart] == '}') {
-          // Determine the end if used like '{\tiny{}...}'
-          actual._dataEnd = interval_.findclosing(actual._dataStart+1, interval_.par.length()) + 1;
-          interval_.addIntervall(actual._dataStart, actual._dataStart+1);
-        }
-        else {
-          // Determine the end if used like '\tiny{...}'
-          actual._dataEnd = interval_.findclosing(actual._dataStart, interval_.par.length()) + 1;
-        }
-        // Split on this key if not at start
-        int start = interval_.nextNotIgnored(previousStart);
-        if (start < actual._tokenstart) {
-          interval_.output(os, actual._tokenstart);
-          interval_.addIntervall(start, actual._tokenstart);
-        }
-        // discard entry if at end of actual
-        nextKeyIdx = process(os, actual);
-      }
-      break;
-    }
-    case KeyInfo::endArguments: {
-      // Remove trailing '{}' too
-      actual._dataStart += 1;
-      actual._dataEnd += 1;
-      interval_.addIntervall(actual._tokenstart, actual._dataEnd+1);
-      nextKeyIdx = getNextKey();
-      break;
-    }
-    case KeyInfo::noMain:
-      // fall through
-    case KeyInfo::isStandard: {
-      if (actual.disabled) {
-        removeHead(actual);
-        processRegion(actual._dataStart, actual._dataStart+1);
-        nextKeyIdx = getNextKey();
-      } else {
-        // Split on this key if not at datastart of calling entry
-        int start = interval_.nextNotIgnored(previousStart);
-        if (start < actual._tokenstart) {
-          interval_.output(os, actual._tokenstart);
-          interval_.addIntervall(start, actual._tokenstart);
-        }
-        // discard entry if at end of actual
-        nextKeyIdx = process(os, actual);
-      }
-      break;
-    }
-    case KeyInfo::removeWithArg: {
-      nextKeyIdx = getNextKey();
-      // Search for end of arguments
-      int tmpIdx = find(nextKeyIdx, KeyInfo::endArguments);
-      if (tmpIdx > 0) {
-        for (int i = nextKeyIdx; i <= tmpIdx; i++) {
-          entries_[i].disabled = true;
-        }
-        actual._dataEnd = entries_[tmpIdx]._dataEnd;
-      }
-      interval_.addIntervall(actual._tokenstart, actual._dataEnd+1);
-      break;
-    }
-    case KeyInfo::doRemove: {
-      // Remove the key with all parameters and following spaces
-      size_t pos;
-      size_t start;
-      if (interval_.par[actual._dataEnd-1] == ' ' || interval_.par[actual._dataEnd-1] == '}')
-        start = actual._dataEnd;
-      else
-        start = actual._dataEnd+1;
-      for (pos = start; pos < interval_.par.length(); pos++) {
-        if ((interval_.par[pos] != ' ') && (interval_.par[pos] != '%'))
-          break;
-      }
-      // Remove also enclosing parentheses [] and {}
-      int numpars = 0;
-      int spaces = 0;
-      while (actual._tokenstart > numpars) {
-        if (pos+numpars >= interval_.par.size())
-          break;
-        else if (interval_.par[pos+numpars] == ']' && interval_.par[actual._tokenstart-numpars-1] == '[')
-          numpars++;
-        else if (interval_.par[pos+numpars] == '}' && interval_.par[actual._tokenstart-numpars-1] == '{')
-          numpars++;
-        else
-          break;
-      }
-      if (numpars > 0) {
-        if (interval_.par[pos+numpars] == ' ')
-          spaces++;
-      }
-
-      interval_.addIntervall(actual._tokenstart-numpars, pos+numpars+spaces);
-      nextKeyIdx = getNextKey();
-      break;
-    }
-    case KeyInfo::isList: {
-      // Discard space before _tokenstart
-      int count;
-      for (count = 0; count < actual._tokenstart; count++) {
-        if (interval_.par[actual._tokenstart-count-1] != ' ')
-          break;
-      }
-      nextKeyIdx = getNextKey();
-      int tmpIdx = find(nextKeyIdx, KeyInfo::endArguments);
-      if (tmpIdx > 0) {
-        // Special case: \item is not a list, but a command (like in Style Author_Biography in maa-monthly.layout)
-        // with arguments
-        // How else can we catch this one?
-        for (int i = nextKeyIdx; i <= tmpIdx; i++) {
-          entries_[i].disabled = true;
-        }
-        actual._dataEnd = entries_[tmpIdx]._dataEnd;
-      }
-      else if (nextKeyIdx > 0) {
-        // Ignore any lang entries inside data region
-        for (int i = nextKeyIdx; i < int(entries_.size()) && entries_[i]._tokenstart < actual._dataEnd; i++) {
-          if (entries_[i].keytype == KeyInfo::isMain)
-            entries_[i].disabled = true;
-        }
-      }
-      if (actual.disabled) {
-        interval_.addIntervall(actual._tokenstart-count, actual._dataEnd+1);
-      }
-      else {
-        interval_.addIntervall(actual._tokenstart-count, actual._tokenstart);
-      }
-      if (interval_.par[actual._dataEnd+1] == '[') {
-        int posdown = interval_.findclosing(actual._dataEnd+2, interval_.par.length(), '[', ']');
-        if ((interval_.par[actual._dataEnd+2] == '{') &&
-            (interval_.par[posdown-1] == '}')) {
-          interval_.addIntervall(actual._dataEnd+1,actual._dataEnd+3);
-          interval_.addIntervall(posdown-1, posdown+1);
-        }
-        else {
-          interval_.addIntervall(actual._dataEnd+1, actual._dataEnd+2);
-          interval_.addIntervall(posdown, posdown+1);
-        }
-        int blk = interval_.nextNotIgnored(actual._dataEnd+1);
-        if (blk > posdown) {
-          // Discard at most 1 space after empty item
-          int count;
-          for (count = 0; count < 1; count++) {
-            if (interval_.par[blk+count] != ' ')
-              break;
-          }
-          if (count > 0)
-            interval_.addIntervall(blk, blk+count);
-        }
-      }
-      break;
-    }
-    case KeyInfo::isSectioning: {
-      // Discard spaces before _tokenstart
-      int count;
-      int val = actual._tokenstart;
-      for (count = 0; count < actual._tokenstart;) {
-        val = interval_.previousNotIgnored(val-1);
-        if (val < 0 || interval_.par[val] != ' ')
-          break;
-        else {
-          count = actual._tokenstart - val;
-        }
-      }
-      if (actual.disabled) {
-        removeHead(actual, count);
-        nextKeyIdx = getNextKey();
-      } else {
-        interval_.addIntervall(actual._tokenstart-count, actual._tokenstart);
-        nextKeyIdx = process(os, actual);
-      }
-      break;
-    }
-    case KeyInfo::isMath: {
-      // Same as regex, use the content unchanged
-      nextKeyIdx = getNextKey();
-      break;
-    }
-    case KeyInfo::isRegex: {
-      // DO NOT SPLIT ON REGEX
-      // Do not disable
-      nextKeyIdx = getNextKey();
-      break;
-    }
-    case KeyInfo::isIgnored: {
-      // Treat like a character for now
-      nextKeyIdx = getNextKey();
-      break;
-    }
-    case KeyInfo::isMain: {
-      if (interval_.par.substr(actual._dataStart, 2) == "% ")
-        interval_.addIntervall(actual._dataStart, actual._dataStart+2);
-      if (actual._tokenstart > 0) {
-        int prev = interval_.previousNotIgnored(actual._tokenstart - 1);
-        if ((prev >= 0) && interval_.par[prev] == '%')
-          interval_.addIntervall(prev, prev+1);
-      }
-      if (actual.disabled) {
-        removeHead(actual);
-        interval_.langcount++;
-        if ((interval_.par.substr(actual._dataStart, 3) == " \\[") ||
-            (interval_.par.substr(actual._dataStart, 8) == " \\begin{")) {
-          // Discard also the space before math-equation
-          interval_.addIntervall(actual._dataStart, actual._dataStart+1);
-        }
-        nextKeyIdx = getNextKey();
-        // interval.resetOpenedP(actual._dataStart-1);
-      }
-      else {
-        if (actual._tokenstart < 26) {
-          // for the first (and maybe dummy) language
-          interval_.setForDefaultLang(actual);
-        }
-        interval_.resetOpenedP(actual._dataStart-1);
-      }
-      break;
-    }
-    case KeyInfo::invalid:
-    case KeyInfo::headRemove:
-      // These two cases cannot happen, already handled
-      // fall through
-    default: {
-      // LYXERR(Debug::INFO, "Unhandled keytype");
-      nextKeyIdx = getNextKey();
-      break;
-    }
-  }
-  return nextKeyIdx;
+	int nextKeyIdx = 0;
+	switch (actual.keytype)
+	{
+	case KeyInfo::isTitle: {
+		removeHead(actual);
+		nextKeyIdx = getNextKey();
+		break;
+	}
+	case KeyInfo::cleanToStart: {
+		actual._dataEnd = actual._dataStart;
+		nextKeyIdx = getNextKey();
+		// Search for end of arguments
+		int tmpIdx = find(nextKeyIdx, KeyInfo::endArguments);
+		if (tmpIdx > 0) {
+			for (int i = nextKeyIdx; i <= tmpIdx; i++) {
+				entries_[i].disabled = true;
+			}
+			actual._dataEnd = entries_[tmpIdx]._dataEnd;
+		}
+		while (interval_.par[actual._dataEnd] == ' ')
+			actual._dataEnd++;
+		interval_.addIntervall(0, actual._dataEnd+1);
+		interval_.actualdeptindex = 0;
+		interval_.depts[0] = actual._dataEnd+1;
+		interval_.closes[0] = -1;
+		break;
+	}
+	case KeyInfo::isText:
+		interval_.par[actual._tokenstart] = '#';
+		//interval_.addIntervall(actual._tokenstart, actual._tokenstart+1);
+		nextKeyIdx = getNextKey();
+		break;
+	case KeyInfo::noContent: {          /* char like "\hspace{2cm}" */
+		if (actual.disabled)
+			interval_.addIntervall(actual._tokenstart, actual._dataEnd);
+		else
+			interval_.addIntervall(actual._dataStart, actual._dataEnd);
+	}
+		// fall through
+	case KeyInfo::isChar: {
+		nextKeyIdx = getNextKey();
+		break;
+	}
+	case KeyInfo::isSize: {
+		if (actual.disabled || (interval_.par[actual._dataStart] != '{') || (interval_.par[actual._dataStart-1] == ' ')) {
+			if (actual.parenthesiscount == 0)
+				interval_.addIntervall(actual._tokenstart, actual._dataEnd);
+			else {
+				interval_.addIntervall(actual._tokenstart, actual._dataEnd+1);
+			}
+			nextKeyIdx = getNextKey();
+		} else {
+			// Here _dataStart points to '{', so correct it
+			actual._dataStart += 1;
+			actual._tokensize += 1;
+			actual.parenthesiscount = 1;
+			if (interval_.par[actual._dataStart] == '}') {
+				// Determine the end if used like '{\tiny{}...}'
+				actual._dataEnd = interval_.findclosing(actual._dataStart+1, interval_.par.length()) + 1;
+				interval_.addIntervall(actual._dataStart, actual._dataStart+1);
+			}
+			else {
+				// Determine the end if used like '\tiny{...}'
+				actual._dataEnd = interval_.findclosing(actual._dataStart, interval_.par.length()) + 1;
+			}
+			// Split on this key if not at start
+			int start = interval_.nextNotIgnored(previousStart);
+			if (start < actual._tokenstart) {
+				interval_.output(os, actual._tokenstart);
+				interval_.addIntervall(start, actual._tokenstart);
+			}
+			// discard entry if at end of actual
+			nextKeyIdx = process(os, actual);
+		}
+		break;
+	}
+	case KeyInfo::endArguments: {
+		// Remove trailing '{}' too
+		actual._dataStart += 1;
+		actual._dataEnd += 1;
+		interval_.addIntervall(actual._tokenstart, actual._dataEnd+1);
+		nextKeyIdx = getNextKey();
+		break;
+	}
+	case KeyInfo::noMain:
+		// fall through
+	case KeyInfo::isStandard: {
+		if (actual.disabled) {
+			removeHead(actual);
+			processRegion(actual._dataStart, actual._dataStart+1);
+			nextKeyIdx = getNextKey();
+		} else {
+			// Split on this key if not at datastart of calling entry
+			int start = interval_.nextNotIgnored(previousStart);
+			if (start < actual._tokenstart) {
+				interval_.output(os, actual._tokenstart);
+				interval_.addIntervall(start, actual._tokenstart);
+			}
+			// discard entry if at end of actual
+			nextKeyIdx = process(os, actual);
+		}
+		break;
+	}
+	case KeyInfo::removeWithArg: {
+		nextKeyIdx = getNextKey();
+		// Search for end of arguments
+		int tmpIdx = find(nextKeyIdx, KeyInfo::endArguments);
+		if (tmpIdx > 0) {
+			for (int i = nextKeyIdx; i <= tmpIdx; i++) {
+				entries_[i].disabled = true;
+			}
+			actual._dataEnd = entries_[tmpIdx]._dataEnd;
+		}
+		interval_.addIntervall(actual._tokenstart, actual._dataEnd+1);
+		break;
+	}
+	case KeyInfo::doRemove: {
+		// Remove the key with all parameters and following spaces
+		size_t pos;
+		size_t start;
+		if (interval_.par[actual._dataEnd-1] == ' ' || interval_.par[actual._dataEnd-1] == '}')
+			start = actual._dataEnd;
+		else
+			start = actual._dataEnd+1;
+		for (pos = start; pos < interval_.par.length(); pos++) {
+			if ((interval_.par[pos] != ' ') && (interval_.par[pos] != '%'))
+				break;
+		}
+		// Remove also enclosing parentheses [] and {}
+		int numpars = 0;
+		int spaces = 0;
+		while (actual._tokenstart > numpars) {
+			if (pos+numpars >= interval_.par.size())
+				break;
+			else if (interval_.par[pos+numpars] == ']' && interval_.par[actual._tokenstart-numpars-1] == '[')
+				numpars++;
+			else if (interval_.par[pos+numpars] == '}' && interval_.par[actual._tokenstart-numpars-1] == '{')
+				numpars++;
+			else
+				break;
+		}
+		if (numpars > 0) {
+			if (interval_.par[pos+numpars] == ' ')
+				spaces++;
+		}
+
+		interval_.addIntervall(actual._tokenstart-numpars, pos+numpars+spaces);
+		nextKeyIdx = getNextKey();
+		break;
+	}
+	case KeyInfo::isList: {
+		// Discard space before _tokenstart
+		int count;
+		for (count = 0; count < actual._tokenstart; count++) {
+			if (interval_.par[actual._tokenstart-count-1] != ' ')
+				break;
+		}
+		nextKeyIdx = getNextKey();
+		int tmpIdx = find(nextKeyIdx, KeyInfo::endArguments);
+		if (tmpIdx > 0) {
+			// Special case: \item is not a list, but a command (like in Style Author_Biography in maa-monthly.layout)
+			// with arguments
+			// How else can we catch this one?
+			for (int i = nextKeyIdx; i <= tmpIdx; i++) {
+				entries_[i].disabled = true;
+			}
+			actual._dataEnd = entries_[tmpIdx]._dataEnd;
+		}
+		else if (nextKeyIdx > 0) {
+			// Ignore any lang entries inside data region
+			for (int i = nextKeyIdx; i < int(entries_.size()) && entries_[i]._tokenstart < actual._dataEnd; i++) {
+				if (entries_[i].keytype == KeyInfo::isMain)
+					entries_[i].disabled = true;
+			}
+		}
+		if (actual.disabled) {
+			interval_.addIntervall(actual._tokenstart-count, actual._dataEnd+1);
+		}
+		else {
+			interval_.addIntervall(actual._tokenstart-count, actual._tokenstart);
+		}
+		if (interval_.par[actual._dataEnd+1] == '[') {
+			int posdown = interval_.findclosing(actual._dataEnd+2, interval_.par.length(), '[', ']');
+			if ((interval_.par[actual._dataEnd+2] == '{') &&
+					(interval_.par[posdown-1] == '}')) {
+				interval_.addIntervall(actual._dataEnd+1,actual._dataEnd+3);
+				interval_.addIntervall(posdown-1, posdown+1);
+			}
+			else {
+				interval_.addIntervall(actual._dataEnd+1, actual._dataEnd+2);
+				interval_.addIntervall(posdown, posdown+1);
+			}
+			int blk = interval_.nextNotIgnored(actual._dataEnd+1);
+			if (blk > posdown) {
+				// Discard at most 1 space after empty item
+				int count;
+				for (count = 0; count < 1; count++) {
+					if (interval_.par[blk+count] != ' ')
+						break;
+				}
+				if (count > 0)
+					interval_.addIntervall(blk, blk+count);
+			}
+		}
+		break;
+	}
+	case KeyInfo::isSectioning: {
+		// Discard spaces before _tokenstart
+		int count;
+		int val = actual._tokenstart;
+		for (count = 0; count < actual._tokenstart;) {
+			val = interval_.previousNotIgnored(val-1);
+			if (val < 0 || interval_.par[val] != ' ')
+				break;
+			else {
+				count = actual._tokenstart - val;
+			}
+		}
+		if (actual.disabled) {
+			removeHead(actual, count);
+			nextKeyIdx = getNextKey();
+		} else {
+			interval_.addIntervall(actual._tokenstart-count, actual._tokenstart);
+			nextKeyIdx = process(os, actual);
+		}
+		break;
+	}
+	case KeyInfo::isMath: {
+		// Same as regex, use the content unchanged
+		nextKeyIdx = getNextKey();
+		break;
+	}
+	case KeyInfo::isRegex: {
+		// DO NOT SPLIT ON REGEX
+		// Do not disable
+		nextKeyIdx = getNextKey();
+		break;
+	}
+	case KeyInfo::isIgnored: {
+		// Treat like a character for now
+		nextKeyIdx = getNextKey();
+		break;
+	}
+	case KeyInfo::isMain: {
+		if (interval_.par.substr(actual._dataStart, 2) == "% ")
+			interval_.addIntervall(actual._dataStart, actual._dataStart+2);
+		if (actual._tokenstart > 0) {
+			int prev = interval_.previousNotIgnored(actual._tokenstart - 1);
+			if ((prev >= 0) && interval_.par[prev] == '%')
+				interval_.addIntervall(prev, prev+1);
+		}
+		if (actual.disabled) {
+			removeHead(actual);
+			interval_.langcount++;
+			if ((interval_.par.substr(actual._dataStart, 3) == " \\[") ||
+					(interval_.par.substr(actual._dataStart, 8) == " \\begin{")) {
+				// Discard also the space before math-equation
+				interval_.addIntervall(actual._dataStart, actual._dataStart+1);
+			}
+			nextKeyIdx = getNextKey();
+			// interval.resetOpenedP(actual._dataStart-1);
+		}
+		else {
+			if (actual._tokenstart < 26) {
+				// for the first (and maybe dummy) language
+				interval_.setForDefaultLang(actual);
+			}
+			interval_.resetOpenedP(actual._dataStart-1);
+		}
+		break;
+	}
+	case KeyInfo::invalid:
+	case KeyInfo::headRemove:
+		// These two cases cannot happen, already handled
+		// fall through
+	default: {
+		// LYXERR(Debug::INFO, "Unhandled keytype");
+		nextKeyIdx = getNextKey();
+		break;
+	}
+	}
+	return nextKeyIdx;
 }
 
 int LatexInfo::process(ostringstream & os, KeyInfo const & actual )
 {
-  int end = interval_.nextNotIgnored(actual._dataEnd);
-  int oldStart = actual._dataStart;
-  int nextKeyIdx = getNextKey();
-  while (true) {
-    if ((nextKeyIdx < 0) ||
-        (entries_[nextKeyIdx]._tokenstart >= actual._dataEnd) ||
-        (entries_[nextKeyIdx].keytype == KeyInfo::invalid)) {
-      if (oldStart <= end) {
-        processRegion(oldStart, end);
-        oldStart = end+1;
-      }
-      break;
-    }
-    KeyInfo &nextKey = getKeyInfo(nextKeyIdx);
-
-    if ((nextKey.keytype == KeyInfo::isMain) && !nextKey.disabled) {
-      (void) dispatch(os, actual._dataStart, nextKey);
-      end = nextKey._tokenstart;
-      break;
-    }
-    processRegion(oldStart, nextKey._tokenstart);
-    nextKeyIdx = dispatch(os, actual._dataStart, nextKey);
-
-    oldStart = nextKey._dataEnd+1;
-  }
-  // now nextKey is either invalid or is outside of actual._dataEnd
-  // output the remaining and discard myself
-  if (oldStart <= end) {
-    processRegion(oldStart, end);
-  }
-  if (interval_.par.size() > (size_t) end && interval_.par[end] == '}') {
-    end += 1;
-    // This is the normal case.
-    // But if using the firstlanguage, the closing may be missing
-  }
-  // get minimum of 'end' and  'actual._dataEnd' in case that the nextKey.keytype was 'KeyInfo::isMain'
-  int output_end;
-  if (actual._dataEnd < end)
-    output_end = interval_.nextNotIgnored(actual._dataEnd);
-  else if (interval_.par.size() > (size_t) end)
-    output_end = interval_.nextNotIgnored(end);
-  else
-    output_end = interval_.par.size();
-  if ((actual.keytype == KeyInfo::isMain) && actual.disabled) {
-    interval_.addIntervall(actual._tokenstart, actual._tokenstart+actual._tokensize);
-  }
-  // Remove possible empty data
-  int dstart = interval_.nextNotIgnored(actual._dataStart);
-  while (interval_.isOpeningPar(dstart) == 1) {
-    interval_.addIntervall(dstart, dstart+1);
-    int dend = interval_.findclosing(dstart+1, output_end);
-    interval_.addIntervall(dend, dend+1);
-    dstart = interval_.nextNotIgnored(dstart+1);
-  }
-  if (dstart < output_end)
-    interval_.output(os, output_end);
-  if (nextKeyIdx < 0)
-    interval_.addIntervall(0, end);
-  else
-    interval_.addIntervall(actual._tokenstart, end);
-  return nextKeyIdx;
+	int end = interval_.nextNotIgnored(actual._dataEnd);
+	int oldStart = actual._dataStart;
+	int nextKeyIdx = getNextKey();
+	while (true) {
+		if ((nextKeyIdx < 0) ||
+				(entries_[nextKeyIdx]._tokenstart >= actual._dataEnd) ||
+				(entries_[nextKeyIdx].keytype == KeyInfo::invalid)) {
+			if (oldStart <= end) {
+				processRegion(oldStart, end);
+				oldStart = end+1;
+			}
+			break;
+		}
+		KeyInfo &nextKey = getKeyInfo(nextKeyIdx);
+
+		if ((nextKey.keytype == KeyInfo::isMain) && !nextKey.disabled) {
+			(void) dispatch(os, actual._dataStart, nextKey);
+			end = nextKey._tokenstart;
+			break;
+		}
+		processRegion(oldStart, nextKey._tokenstart);
+		nextKeyIdx = dispatch(os, actual._dataStart, nextKey);
+
+		oldStart = nextKey._dataEnd+1;
+	}
+	// now nextKey is either invalid or is outside of actual._dataEnd
+	// output the remaining and discard myself
+	if (oldStart <= end) {
+		processRegion(oldStart, end);
+	}
+	if (interval_.par.size() > (size_t) end && interval_.par[end] == '}') {
+		end += 1;
+		// This is the normal case.
+		// But if using the firstlanguage, the closing may be missing
+	}
+	// get minimum of 'end' and  'actual._dataEnd' in case that the nextKey.keytype was 'KeyInfo::isMain'
+	int output_end;
+	if (actual._dataEnd < end)
+		output_end = interval_.nextNotIgnored(actual._dataEnd);
+	else if (interval_.par.size() > (size_t) end)
+		output_end = interval_.nextNotIgnored(end);
+	else
+		output_end = interval_.par.size();
+	if ((actual.keytype == KeyInfo::isMain) && actual.disabled) {
+		interval_.addIntervall(actual._tokenstart, actual._tokenstart+actual._tokensize);
+	}
+	// Remove possible empty data
+	int dstart = interval_.nextNotIgnored(actual._dataStart);
+	while (interval_.isOpeningPar(dstart) == 1) {
+		interval_.addIntervall(dstart, dstart+1);
+		int dend = interval_.findclosing(dstart+1, output_end);
+		interval_.addIntervall(dend, dend+1);
+		dstart = interval_.nextNotIgnored(dstart+1);
+	}
+	if (dstart < output_end)
+		interval_.output(os, output_end);
+	if (nextKeyIdx < 0)
+		interval_.addIntervall(0, end);
+	else
+		interval_.addIntervall(actual._tokenstart, end);
+	return nextKeyIdx;
 }
 
 string splitOnKnownMacros(string par, bool isPatternString)
 {
-  ostringstream os;
-  LatexInfo li(par, isPatternString);
-  // LYXERR(Debug::INFO, "Berfore split: " << par);
-  KeyInfo DummyKey = KeyInfo(KeyInfo::KeyType::isMain, 2, true);
-  DummyKey.head = "";
-  DummyKey._tokensize = 0;
-  DummyKey._dataStart = 0;
-  DummyKey._dataEnd = par.length();
-  DummyKey.disabled = true;
-  int firstkeyIdx = li.getFirstKey();
-  string s;
-  if (firstkeyIdx >= 0) {
-    KeyInfo firstKey = li.getKeyInfo(firstkeyIdx);
-    DummyKey._tokenstart = firstKey._tokenstart;
-    int nextkeyIdx;
-    if ((firstKey.keytype != KeyInfo::isMain) || firstKey.disabled) {
-      // Use dummy firstKey
-      firstKey = DummyKey;
-      (void) li.setNextKey(firstkeyIdx);
-    }
-    else {
-      if (par.substr(firstKey._dataStart, 2) == "% ")
-        li.addIntervall(firstKey._dataStart, firstKey._dataStart+2);
-    }
-    nextkeyIdx = li.process(os, firstKey);
-    while (nextkeyIdx >= 0) {
-      // Check for a possible gap between the last
-      // entry and this one
-      int datastart = li.nextNotIgnored(firstKey._dataStart);
-      KeyInfo &nextKey = li.getKeyInfo(nextkeyIdx);
-      if ((nextKey._tokenstart > datastart)) {
-        // Handle the gap
-        firstKey._dataStart = datastart;
-        firstKey._dataEnd = par.length();
-        (void) li.setNextKey(nextkeyIdx);
-        // Fake the last opened parenthesis
-        li.setForDefaultLang(firstKey);
-        nextkeyIdx = li.process(os, firstKey);
-      }
-      else {
-        if (nextKey.keytype != KeyInfo::isMain) {
-          firstKey._dataStart = datastart;
-          firstKey._dataEnd = nextKey._dataEnd+1;
-          (void) li.setNextKey(nextkeyIdx);
-          li.setForDefaultLang(firstKey);
-          nextkeyIdx = li.process(os, firstKey);
-        }
-        else {
-          nextkeyIdx = li.process(os, nextKey);
-        }
-      }
-    }
-    // Handle the remaining
-    firstKey._dataStart = li.nextNotIgnored(firstKey._dataStart);
-    firstKey._dataEnd = par.length();
-    // Check if ! empty
-    if ((firstKey._dataStart < firstKey._dataEnd) &&
-        (par[firstKey._dataStart] != '}')) {
-      li.setForDefaultLang(firstKey);
-      (void) li.process(os, firstKey);
-    }
-    s = os.str();
-    // return string definitelly impossible to match, but should be known
-  }
-  else
-    s = par;                            /* no known macros found */
-  // LYXERR(Debug::INFO, "After split: " << s);
-  return s;
+	ostringstream os;
+	LatexInfo li(par, isPatternString);
+	// LYXERR(Debug::INFO, "Berfore split: " << par);
+	KeyInfo DummyKey = KeyInfo(KeyInfo::KeyType::isMain, 2, true);
+	DummyKey.head = "";
+	DummyKey._tokensize = 0;
+	DummyKey._dataStart = 0;
+	DummyKey._dataEnd = par.length();
+	DummyKey.disabled = true;
+	int firstkeyIdx = li.getFirstKey();
+	string s;
+	if (firstkeyIdx >= 0) {
+		KeyInfo firstKey = li.getKeyInfo(firstkeyIdx);
+		DummyKey._tokenstart = firstKey._tokenstart;
+		int nextkeyIdx;
+		if ((firstKey.keytype != KeyInfo::isMain) || firstKey.disabled) {
+			// Use dummy firstKey
+			firstKey = DummyKey;
+			(void) li.setNextKey(firstkeyIdx);
+		}
+		else {
+			if (par.substr(firstKey._dataStart, 2) == "% ")
+				li.addIntervall(firstKey._dataStart, firstKey._dataStart+2);
+		}
+		nextkeyIdx = li.process(os, firstKey);
+		while (nextkeyIdx >= 0) {
+			// Check for a possible gap between the last
+			// entry and this one
+			int datastart = li.nextNotIgnored(firstKey._dataStart);
+			KeyInfo &nextKey = li.getKeyInfo(nextkeyIdx);
+			if ((nextKey._tokenstart > datastart)) {
+				// Handle the gap
+				firstKey._dataStart = datastart;
+				firstKey._dataEnd = par.length();
+				(void) li.setNextKey(nextkeyIdx);
+				// Fake the last opened parenthesis
+				li.setForDefaultLang(firstKey);
+				nextkeyIdx = li.process(os, firstKey);
+			}
+			else {
+				if (nextKey.keytype != KeyInfo::isMain) {
+					firstKey._dataStart = datastart;
+					firstKey._dataEnd = nextKey._dataEnd+1;
+					(void) li.setNextKey(nextkeyIdx);
+					li.setForDefaultLang(firstKey);
+					nextkeyIdx = li.process(os, firstKey);
+				}
+				else {
+					nextkeyIdx = li.process(os, nextKey);
+				}
+			}
+		}
+		// Handle the remaining
+		firstKey._dataStart = li.nextNotIgnored(firstKey._dataStart);
+		firstKey._dataEnd = par.length();
+		// Check if ! empty
+		if ((firstKey._dataStart < firstKey._dataEnd) &&
+				(par[firstKey._dataStart] != '}')) {
+			li.setForDefaultLang(firstKey);
+			(void) li.process(os, firstKey);
+		}
+		s = os.str();
+		// return string definitelly impossible to match, but should be known
+	}
+	else
+		s = par;                            /* no known macros found */
+	// LYXERR(Debug::INFO, "After split: " << s);
+	return s;
 }
 
 /*
@@ -3520,7 +3520,7 @@ static void modifyRegexForMatchWord(string &t)
 	}
 	else if (lastpos < t.length())
 		s += t.substr(lastpos, t.length() - lastpos);
-      t = "\\b" + s + "\\b";
+	t = "\\b" + s + "\\b";
 }
 
 MatchStringAdv::MatchStringAdv(lyx::Buffer & buf, FindAndReplaceOptions & opt)
@@ -3665,7 +3665,7 @@ MatchResult MatchStringAdv::findAux(DocIterator const & cur, int len, bool at_be
 
 	mres.searched_size = len;
 	if (at_begin &&
-		(opt.restr == FindAndReplaceOptions::R_ONLY_MATHS && !cur.inMathed()) )
+			(opt.restr == FindAndReplaceOptions::R_ONLY_MATHS && !cur.inMathed()) )
 		return mres;
 
 	docstring docstr = stringifyFromForSearch(opt, cur, len);
@@ -3796,23 +3796,23 @@ MatchResult MatchStringAdv::findAux(DocIterator const & cur, int len, bool at_be
 		mres.pos = m[2].first - m[0].first;;
 #endif
 		if (mres.match2end < 0)
-		  mres.match_len = 0;
+			mres.match_len = 0;
 		mres.leadsize = leadingsize;
 #if QTSEARCH
 		if (mres.match_len > 0) {
-		  string a0 = match.captured(0).mid(mres.pos + mres.match_prefix, mres.match_len).toStdString();
-		  mres.result.push_back(a0);
-		  for (int i = 3; i <= match.lastCapturedIndex(); i++) {
-		    mres.result.push_back(match.captured(i).toStdString());
-		  }
+			string a0 = match.captured(0).mid(mres.pos + mres.match_prefix, mres.match_len).toStdString();
+			mres.result.push_back(a0);
+			for (int i = 3; i <= match.lastCapturedIndex(); i++) {
+				mres.result.push_back(match.captured(i).toStdString());
+			}
 		}
 #else
 		if (mres.match_len > 0) {
-		  string a0 = m[0].str().substr(mres.pos + mres.match_prefix, mres.match_len);
-		  mres.result.push_back(a0);
-		  for (size_t i = 3; i < m.size(); i++) {
-		    mres.result.push_back(m[i]);
-		  }
+			string a0 = m[0].str().substr(mres.pos + mres.match_prefix, mres.match_len);
+			mres.result.push_back(a0);
+			for (size_t i = 3; i < m.size(); i++) {
+				mres.result.push_back(m[i]);
+			}
 		}
 #endif
 		return mres;
@@ -3842,25 +3842,25 @@ MatchResult MatchStringAdv::operator()(DocIterator const & cur, int len, bool at
 #if 0
 static bool simple_replace(string &t, string from, string to)
 {
-  regex repl("(\\\\)*(" + from + ")");
-  string s("");
-  size_t lastpos = 0;
-  smatch sub;
-  for (sregex_iterator it(t.begin(), t.end(), repl), end; it != end; ++it) {
-    sub = *it;
-    if ((sub.position(2) - sub.position(0)) % 2 == 1)
-      continue;
-    if (lastpos < (size_t) sub.position(2))
-      s += t.substr(lastpos, sub.position(2) - lastpos);
-    s += to;
-    lastpos = sub.position(2) + sub.length(2);
-  }
-  if (lastpos == 0)
-    return false;
-  else if (lastpos < t.length())
-    s += t.substr(lastpos, t.length() - lastpos);
-  t = s;
-  return true;
+	regex repl("(\\\\)*(" + from + ")");
+	string s("");
+	size_t lastpos = 0;
+	smatch sub;
+	for (sregex_iterator it(t.begin(), t.end(), repl), end; it != end; ++it) {
+		sub = *it;
+		if ((sub.position(2) - sub.position(0)) % 2 == 1)
+			continue;
+		if (lastpos < (size_t) sub.position(2))
+			s += t.substr(lastpos, sub.position(2) - lastpos);
+		s += to;
+		lastpos = sub.position(2) + sub.length(2);
+	}
+	if (lastpos == 0)
+		return false;
+	else if (lastpos < t.length())
+		s += t.substr(lastpos, t.length() - lastpos);
+	t = s;
+	return true;
 }
 #endif
 
@@ -3934,7 +3934,7 @@ docstring stringifyFromCursor(DocIterator const & cur, int len)
 		// TODO what about searching beyond/across paragraph breaks ?
 		// TODO Try adding a AS_STR_INSERTS as last arg
 		pos_type end = ( len == -1 || cur.pos() + len > int(par.size()) ) ?
-			int(par.size()) : cur.pos() + len;
+					int(par.size()) : cur.pos() + len;
 		// OutputParams runparams(&cur.buffer()->params().encoding());
 		OutputParams runparams(encodings.fromLyXName("utf8"));
 		runparams.nice = true;
@@ -3954,17 +3954,17 @@ docstring stringifyFromCursor(DocIterator const & cur, int len)
 			runparams.for_searchAdv |= OutputParams::SearchNonOutput;
 		}
 		LYXERR(Debug::FIND, "Stringifying with cur: "
-			<< cur << ", from pos: " << cur.pos() << ", end: " << end);
+		       << cur << ", from pos: " << cur.pos() << ", end: " << end);
 		return from_utf8(latexNamesToUtf8(par.asString(cur.pos(), end,
-								option,
-								&runparams)));
+							       option,
+							       &runparams)));
 	} else if (cur.inMathed()) {
 		CursorSlice cs = cur.top();
 		MathData md = cs.cell();
 		MathData::const_iterator it_end =
-			(( len == -1 || cs.pos() + len > int(md.size()))
-			 ? md.end()
-			 : md.begin() + cs.pos() + len );
+				(( len == -1 || cs.pos() + len > int(md.size()))
+				 ? md.end()
+				 : md.begin() + cs.pos() + len );
 		MathData md2;
 		for (MathData::const_iterator it = md.begin() + cs.pos(); it != it_end; ++it)
 			md2.push_back(*it);
@@ -4032,9 +4032,9 @@ docstring latexifyFromCursor(DocIterator const & cur, int len)
 		CursorSlice const & cs = cur.top();
 		MathData md = cs.cell();
 		MathData::const_iterator it_end =
-			((len == -1 || cs.pos() + len > int(md.size()))
-			 ? md.end()
-			 : md.begin() + cs.pos() + len);
+				((len == -1 || cs.pos() + len > int(md.size()))
+				 ? md.end()
+				 : md.begin() + cs.pos() + len);
 		MathData md2;
 		for (MathData::const_iterator it = md.begin() + cs.pos();
 		     it != it_end; ++it)
@@ -4088,9 +4088,9 @@ static void displayMResult(MatchResult &mres, string from, DocIterator & cur)
 	for (size_t i = 0; i < mres.result.size(); i++)
 		LYXERR0( "Match " << i << " = \"" << mres.result[i] << "\"");
 }
-	#define displayMres(s, txt, cur) displayMResult(s, txt, cur);
+#define displayMres(s, txt, cur) displayMResult(s, txt, cur);
 #else
-	#define displayMres(s, txt, cur)
+#define displayMres(s, txt, cur)
 #endif
 
 /** Finalize an advanced find operation, advancing the cursor to the innermost
@@ -4159,85 +4159,85 @@ MatchResult findAdvFinalize(DocIterator & cur, MatchStringAdv const & match, Mat
 	// Compute the match length
 	int len = 1;
 	if (cur.pos() + len > cur.lastpos())
-	  return fail;
+		return fail;
 
 	LASSERT(match.use_regexp, /**/);
 	{
-          int minl = 1;
-          int maxl = cur.lastpos() - cur.pos();
-          // Greedy behaviour while matching regexps
-          while (maxl > minl) {
-            MatchResult mres2;
-            mres2 = match(cur, len, at_begin);
-            displayMres(mres2, "Finalize loop", cur);
-            int actual_match_len = mres2.match_len;
-            if (actual_match_len >= max_match.match_len) {
-              // actual_match_len > max_match _can_ happen,
-              // if the search area splits
-              // some following word so that the regex
-              // (e.g. 'r.*r\b' matches 'r' from the middle of the
-              // splitted word)
-              // This means, the len value is too big
-	      actual_match_len = max_match.match_len;
-	      max_match = mres2;
-	      max_match.match_len = actual_match_len;
-              maxl = len;
-              if (maxl - minl < 4)
-                len = (maxl + minl)/2;
-              else
-                len = minl + (maxl - minl + 3)/4;
-            }
-            else {
-              // (actual_match_len < max_match.match_len)
-              minl = len + 1;
-              len = (maxl + minl)/2;
-            }
-          }
-	  len = minl;
-          old_cur = cur;
-          // Search for real start of matched characters
-          while (len > 1) {
-            MatchResult actual_match;
-            do {
-              cur.forwardPos();
-            } while (cur.depth() > old_cur.depth()); /* Skip inner insets */
-            if (cur.depth() < old_cur.depth()) {
-              // Outer inset?
-              LYXERR(Debug::INFO, "cur.depth() < old_cur.depth(), this should never happen");
-              break;
-            }
-            if (cur.pos() != old_cur.pos()) {
-              // OK, forwarded 1 pos in actual inset
-              actual_match = match(cur, len-1, at_begin);
-              if (actual_match.match_len == max_match.match_len) {
-                // Ha, got it! The shorter selection has the same match length
-                len--;
-                old_cur = cur;
-		max_match = actual_match;
-              }
-              else {
-                // OK, the shorter selection matches less chars, revert to previous value
-                cur = old_cur;
-                break;
-              }
-            }
-            else {
-              LYXERR(Debug::INFO, "cur.pos() == old_cur.pos(), this should never happen");
-              actual_match = match(cur, len, at_begin);
-              if (actual_match.match_len == max_match.match_len) {
-                old_cur = cur;
-                max_match = actual_match;
-              }
-            }
-          }
-          if (len == 0)
-            return fail;
-          else {
-            max_match.pos_len = len;
-	    displayMres(max_match, "SEARCH RESULT", cur)
-            return max_match;
-          }
-        }
+		int minl = 1;
+		int maxl = cur.lastpos() - cur.pos();
+		// Greedy behaviour while matching regexps
+		while (maxl > minl) {
+			MatchResult mres2;
+			mres2 = match(cur, len, at_begin);
+			displayMres(mres2, "Finalize loop", cur);
+			int actual_match_len = mres2.match_len;
+			if (actual_match_len >= max_match.match_len) {
+				// actual_match_len > max_match _can_ happen,
+				// if the search area splits
+				// some following word so that the regex
+				// (e.g. 'r.*r\b' matches 'r' from the middle of the
+				// splitted word)
+				// This means, the len value is too big
+				actual_match_len = max_match.match_len;
+				max_match = mres2;
+				max_match.match_len = actual_match_len;
+				maxl = len;
+				if (maxl - minl < 4)
+					len = (maxl + minl)/2;
+				else
+					len = minl + (maxl - minl + 3)/4;
+			}
+			else {
+				// (actual_match_len < max_match.match_len)
+				minl = len + 1;
+				len = (maxl + minl)/2;
+			}
+		}
+		len = minl;
+		old_cur = cur;
+		// Search for real start of matched characters
+		while (len > 1) {
+			MatchResult actual_match;
+			do {
+				cur.forwardPos();
+			} while (cur.depth() > old_cur.depth()); /* Skip inner insets */
+			if (cur.depth() < old_cur.depth()) {
+				// Outer inset?
+				LYXERR(Debug::INFO, "cur.depth() < old_cur.depth(), this should never happen");
+				break;
+			}
+			if (cur.pos() != old_cur.pos()) {
+				// OK, forwarded 1 pos in actual inset
+				actual_match = match(cur, len-1, at_begin);
+				if (actual_match.match_len == max_match.match_len) {
+					// Ha, got it! The shorter selection has the same match length
+					len--;
+					old_cur = cur;
+					max_match = actual_match;
+				}
+				else {
+					// OK, the shorter selection matches less chars, revert to previous value
+					cur = old_cur;
+					break;
+				}
+			}
+			else {
+				LYXERR(Debug::INFO, "cur.pos() == old_cur.pos(), this should never happen");
+				actual_match = match(cur, len, at_begin);
+				if (actual_match.match_len == max_match.match_len) {
+					old_cur = cur;
+					max_match = actual_match;
+				}
+			}
+		}
+		if (len == 0)
+			return fail;
+		else {
+			max_match.pos_len = len;
+			displayMres(max_match, "SEARCH RESULT", cur)
+					return max_match;
+		}
+	}
 }
 
 /// Finds forward
@@ -4256,7 +4256,7 @@ int findForwardAdv(DocIterator & cur, MatchStringAdv & match)
 		if (repeat)
 			msg = "Repeated";
 		displayMres(mres, msg + " findForwardAdv", cur)
-		int match_len = mres.match_len;
+				int match_len = mres.match_len;
 		if ((mres.pos > 100000) || (mres.match2end > 100000) || (match_len > 100000)) {
 			LYXERR(Debug::INFO, "BIG LENGTHS: " << mres.pos << ", " << match_len << ", " << mres.match2end);
 			match_len = 0;
@@ -4291,7 +4291,7 @@ int findForwardAdv(DocIterator & cur, MatchStringAdv & match)
 				cur.pos() = cur.pos() + increment;
 				MatchResult mres2 = match(cur, -1, false);
 				displayMres(mres2, "findForwardAdv loop", cur)
-				switch (interpretMatch(mres, mres2)) {
+						switch (interpretMatch(mres, mres2)) {
 					case MatchResult::newIsTooFar:
 						// behind the expected match
 						firstInvalid = increment;
@@ -4316,12 +4316,12 @@ int findForwardAdv(DocIterator & cur, MatchStringAdv & match)
 						firstInvalid--;
 						increment = increment*3/4;
 						cur = old_cur;
-					break;
+						break;
 				}
 			}
 			if (mres.match_len > 0) {
 				if (mres.match_prefix + mres.pos - mres.leadsize > 0) {
-					// The match seems to indicate some deeper level 
+					// The match seems to indicate some deeper level
 					repeat = true;
 					orig_cur = cur;
 					orig_mres = mres;
@@ -4439,7 +4439,7 @@ docstring stringifyFromForSearch(FindAndReplaceOptions const & opt,
 				 DocIterator const & cur, int len)
 {
 	if (cur.pos() < 0 || cur.pos() > cur.lastpos())
-	        return docstring();
+		return docstring();
 	if (!opt.ignoreformat)
 		return latexifyFromCursor(cur, len);
 	else
@@ -4448,10 +4448,10 @@ docstring stringifyFromForSearch(FindAndReplaceOptions const & opt,
 
 
 FindAndReplaceOptions::FindAndReplaceOptions(
-	docstring const & _find_buf_name, bool _casesensitive,
-	bool _matchword, bool _forward, bool _expandmacros, bool _ignoreformat,
-	docstring const & _repl_buf_name, bool _keep_case,
-	SearchScope _scope, SearchRestriction _restr, bool _replace_all)
+		docstring const & _find_buf_name, bool _casesensitive,
+		bool _matchword, bool _forward, bool _expandmacros, bool _ignoreformat,
+		docstring const & _repl_buf_name, bool _keep_case,
+		SearchScope _scope, SearchRestriction _restr, bool _replace_all)
 	: find_buf_name(_find_buf_name), casesensitive(_casesensitive), matchword(_matchword),
 	  forward(_forward), expandmacros(_expandmacros), ignoreformat(_ignoreformat),
 	  repl_buf_name(_repl_buf_name), keep_case(_keep_case), scope(_scope), restr(_restr), replace_all(_replace_all)
@@ -4516,30 +4516,30 @@ static void changeFirstCase(Buffer & buffer, TextCase first_case, TextCase other
 
 static bool replaceMatches(string &t, int maxmatchnum, vector <string> const & replacements)
 {
-  // Should replace the string "$" + std::to_string(matchnum) with replacement
-  // if the char '$' is not prefixed with odd number of char '\\'
-  static regex const rematch("(\\\\)*(\\$\\$([0-9]))");
-  string s;
-  size_t lastpos = 0;
-  smatch sub;
-  for (sregex_iterator it(t.begin(), t.end(), rematch), end; it != end; ++it) {
-    sub = *it;
-    if ((sub.position(2) - sub.position(0)) % 2 == 1)
-      continue;
-    int num = stoi(sub.str(3), nullptr, 10);
-    if (num >= maxmatchnum)
-      continue;
-    if (lastpos < (size_t) sub.position(2))
-      s += t.substr(lastpos, sub.position(2) - lastpos);
-    s += replacements[num];
-    lastpos = sub.position(2) + sub.length(2);
-  }
-  if (lastpos == 0)
-    return false;
-  else if (lastpos < t.length())
-    s += t.substr(lastpos, t.length() - lastpos);
-  t = s;
-  return true;
+	// Should replace the string "$" + std::to_string(matchnum) with replacement
+	// if the char '$' is not prefixed with odd number of char '\\'
+	static regex const rematch("(\\\\)*(\\$\\$([0-9]))");
+	string s;
+	size_t lastpos = 0;
+	smatch sub;
+	for (sregex_iterator it(t.begin(), t.end(), rematch), end; it != end; ++it) {
+		sub = *it;
+		if ((sub.position(2) - sub.position(0)) % 2 == 1)
+			continue;
+		int num = stoi(sub.str(3), nullptr, 10);
+		if (num >= maxmatchnum)
+			continue;
+		if (lastpos < (size_t) sub.position(2))
+			s += t.substr(lastpos, sub.position(2) - lastpos);
+		s += replacements[num];
+		lastpos = sub.position(2) + sub.length(2);
+	}
+	if (lastpos == 0)
+		return false;
+	else if (lastpos < t.length())
+		s += t.substr(lastpos, t.length() - lastpos);
+	t = s;
+	return true;
 }
 
 ///
@@ -4547,15 +4547,15 @@ static int findAdvReplace(BufferView * bv, FindAndReplaceOptions const & opt, Ma
 {
 	Cursor & cur = bv->cursor();
 	if (opt.repl_buf_name.empty()
-	    || theBufferList().getBuffer(FileName(to_utf8(opt.repl_buf_name)), true) == 0
-	    || theBufferList().getBuffer(FileName(to_utf8(opt.find_buf_name)), true) == 0)
+			|| theBufferList().getBuffer(FileName(to_utf8(opt.repl_buf_name)), true) == 0
+			|| theBufferList().getBuffer(FileName(to_utf8(opt.find_buf_name)), true) == 0)
 		return 0;
 
 	DocIterator sel_beg = cur.selectionBegin();
 	DocIterator sel_end = cur.selectionEnd();
 	if (&sel_beg.inset() != &sel_end.inset()
-	    || sel_beg.pit() != sel_end.pit()
-	    || sel_beg.idx() != sel_end.idx())
+			|| sel_beg.pit() != sel_end.pit()
+			|| sel_beg.idx() != sel_end.idx())
 		return 0;
 	int sel_len = sel_end.pos() - sel_beg.pos();
 	LYXERR(Debug::FIND, "sel_beg: " << sel_beg << ", sel_end: " << sel_end
@@ -4590,8 +4590,8 @@ static int findAdvReplace(BufferView * bv, FindAndReplaceOptions const & opt, Ma
 	cap::cutSelection(cur, false);
 	if (cur.inTexted()) {
 		repl_buffer.changeLanguage(
-			repl_buffer.language(),
-			cur.getFont().language());
+					repl_buffer.language(),
+					cur.getFont().language());
 		LYXERR(Debug::FIND, "Replacing by pasteParagraphList()ing repl_buffer");
 		LYXERR(Debug::FIND, "Before pasteParagraphList() cur=" << cur << endl);
 		cap::pasteParagraphList(cur, repl_buffer.paragraphs(),
@@ -4672,15 +4672,15 @@ bool findAdv(BufferView * bv, FindAndReplaceOptions & opt)
 		if (num_replaced > 0) {
 			switch (num_replaced)
 			{
-				case 1:
-					bv->message(_("One match has been replaced."));
-					break;
-				case 2:
-					bv->message(_("Two matches have been replaced."));
-					break;
-				default:
-					bv->message(bformat(_("%1$d matches have been replaced."), num_replaced));
-					break;
+			case 1:
+				bv->message(_("One match has been replaced."));
+				break;
+			case 2:
+				bv->message(_("Two matches have been replaced."));
+				break;
+			default:
+				bv->message(bformat(_("%1$d matches have been replaced."), num_replaced));
+				break;
 			}
 			num_replaced = 0;
 		}

commit bbf21502bf38f1435b3727e7b03915b442d2edd5
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Apr 4 11:43:55 2022 +0200

    Initialize member

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 5ceb345..c4b6b96 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1060,7 +1060,7 @@ private:
 	int close_wildcards;
 public:
 	// Are we searching with regular expressions ?
-	bool use_regexp;
+	bool use_regexp = false;
 	static int valid_matches;
 	static vector <string> matches;
 	void FillResults(MatchResult &found_mr);

commit 681334ce20987beae57c55f9a1796b2eefd41944
Author: Kornel Benko <kornel at lyx.org>
Date:   Mon Apr 4 10:46:55 2022 +0200

    FindAdv: Amend 6e7fd68c: Handle InsetNoteParams::Comment too

diff --git a/src/insets/InsetNote.cpp b/src/insets/InsetNote.cpp
index 40194fa..0324ca8 100644
--- a/src/insets/InsetNote.cpp
+++ b/src/insets/InsetNote.cpp
@@ -251,12 +251,16 @@ void InsetNote::latex(otexstream & os, OutputParams const & runparams_in) const
 int InsetNote::plaintext(odocstringstream & os,
 			 OutputParams const & runparams_in, size_t max_length) const
 {
-	if (params_.type == InsetNoteParams::Note
-	    && (runparams_in.for_searchAdv & OutputParams::SearchNonOutput) == 0)
-		return 0;
+	if ((runparams_in.for_searchAdv & OutputParams::SearchNonOutput) == 0) {
+		if (params_.type == InsetNoteParams::Note)
+			return 0;
+		else if (params_.type == InsetNoteParams::Comment
+		    && (runparams_in.for_searchAdv != OutputParams::NoSearch))
+			return 0;
+	}
 
 	OutputParams runparams(runparams_in);
-	if (params_.type == InsetNoteParams::Comment) {
+	if (params_.type != InsetNoteParams::Greyedout) {
 		runparams.inComment = true;
 		// Ignore files that are exported inside a comment
 		runparams.exportdata.reset(new ExportData);

commit 6e7fd68c798a8e5855f7e3a9ab6fd7014995f80d
Author: Kornel Benko <kornel at lyx.org>
Date:   Sun Apr 3 19:03:47 2022 +0200

    FindAdv: Allow to search in LyX-Note also if ignoring format

diff --git a/src/insets/InsetNote.cpp b/src/insets/InsetNote.cpp
index d36b0d6..40194fa 100644
--- a/src/insets/InsetNote.cpp
+++ b/src/insets/InsetNote.cpp
@@ -251,7 +251,8 @@ void InsetNote::latex(otexstream & os, OutputParams const & runparams_in) const
 int InsetNote::plaintext(odocstringstream & os,
 			 OutputParams const & runparams_in, size_t max_length) const
 {
-	if (params_.type == InsetNoteParams::Note)
+	if (params_.type == InsetNoteParams::Note
+	    && (runparams_in.for_searchAdv & OutputParams::SearchNonOutput) == 0)
 		return 0;
 
 	OutputParams runparams(runparams_in);
@@ -260,9 +261,11 @@ int InsetNote::plaintext(odocstringstream & os,
 		// Ignore files that are exported inside a comment
 		runparams.exportdata.reset(new ExportData);
 	}
-	os << '[' << buffer().B_("note") << ":\n";
+	if ((runparams_in.for_searchAdv & OutputParams::SearchNonOutput) == 0)
+		os << '[' << buffer().B_("note") << ":\n";
 	InsetText::plaintext(os, runparams, max_length);
-	os << "\n]";
+	if ((runparams_in.for_searchAdv & OutputParams::SearchNonOutput) == 0)
+		os << "\n]";
 
 	return PLAINTEXT_NEWLINE + 1; // one char on a separate line
 }

commit c559b69fe1d37471b840857baba952482995c97d
Author: Kornel Benko <kornel at lyx.org>
Date:   Sun Apr 3 18:05:15 2022 +0200

    FindAdv: Amend 4125f6a9
    
    Variables regexError and regexError only defined
    when searching via QT-version >= 5

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index bd76966..5ceb345 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -3436,12 +3436,12 @@ static bool previous_single_replace = true;
 
 void MatchStringAdv::CreateRegexp(FindAndReplaceOptions const & opt, string regexp_str, string regexp2_str, string par_as_string)
 {
+#if QTSEARCH
 	if (regexp_str.empty() || regexp2_str.empty()) {
 		regexIsValid = false;
 		regexError = "Invalid empty regex";
 		return;
 	}
-#if QTSEARCH
 	// Handle \w properly
 	QRegularExpression::PatternOptions popts = QRegularExpression::UseUnicodePropertiesOption | QRegularExpression::MultilineOption;
 	if (! opt.casesensitive) {

commit 4125f6a9d344674dc2910fe60ddd30c3011e2f86
Author: Kornel Benko <kornel at lyx.org>
Date:   Sun Apr 3 13:21:02 2022 +0200

    FindAdv: Omit possible empty patterns
    
    Normally this is done by the GUI, but searching for e.g. LyX-Comment
    allows empty patterns.

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index be11b16..bd76966 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -2740,7 +2740,7 @@ void LatexInfo::buildKeys(bool isPatternString)
   makeKey("trianglerightpar|hexagonpar|starpar",   KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
   makeKey("triangleuppar|triangledownpar|droppar", KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
   makeKey("triangleleftpar|shapepar|dropuppar",    KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
-  makeKey("hphantom|vphantom|footnote|shortcut|include|includegraphics",     KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
+  makeKey("hphantom|vphantom|note|footnote|shortcut|include|includegraphics",     KeyInfo(KeyInfo::isStandard, 1, true), isPatternString);
   makeKey("parbox", KeyInfo(KeyInfo::doRemove, 1, true), isPatternString);
   // like ('tiny{}' or '\tiny ' ... )
   makeKey("footnotesize|tiny|scriptsize|small|large|Large|LARGE|huge|Huge", KeyInfo(KeyInfo::isSize, 0, false), isPatternString);
@@ -3322,10 +3322,7 @@ string splitOnKnownMacros(string par, bool isPatternString)
       (void) li.process(os, firstKey);
     }
     s = os.str();
-    if (s.empty()) {
-      // return string definitelly impossible to match
-      s = "\\foreignlanguage{ignore}{ }";
-    }
+    // return string definitelly impossible to match, but should be known
   }
   else
     s = par;                            /* no known macros found */
@@ -3439,6 +3436,11 @@ static bool previous_single_replace = true;
 
 void MatchStringAdv::CreateRegexp(FindAndReplaceOptions const & opt, string regexp_str, string regexp2_str, string par_as_string)
 {
+	if (regexp_str.empty() || regexp2_str.empty()) {
+		regexIsValid = false;
+		regexError = "Invalid empty regex";
+		return;
+	}
 #if QTSEARCH
 	// Handle \w properly
 	QRegularExpression::PatternOptions popts = QRegularExpression::UseUnicodePropertiesOption | QRegularExpression::MultilineOption;
@@ -3526,6 +3528,10 @@ MatchStringAdv::MatchStringAdv(lyx::Buffer & buf, FindAndReplaceOptions & opt)
 {
 	Buffer & find_buf = *theBufferList().getBuffer(FileName(to_utf8(opt.find_buf_name)), true);
 	docstring const & ds = stringifySearchBuffer(find_buf, opt);
+	if (ds.empty() ) {
+		CreateRegexp(opt, "", "", "");
+		return;
+	}
 	use_regexp = lyx::to_utf8(ds).find("\\regexp{") != std::string::npos;
 	if (opt.replace_all && previous_single_replace) {
 		previous_single_replace = false;
@@ -3543,6 +3549,10 @@ MatchStringAdv::MatchStringAdv(lyx::Buffer & buf, FindAndReplaceOptions & opt)
 	size_t lead_size = 0;
 	// correct the language settings
 	par_as_string = correctlanguagesetting(par_as_string, true, !opt.ignoreformat, &buf);
+	if (par_as_string.empty()) {
+		CreateRegexp(opt, "", "", "");
+		return;
+	}
 	opt.matchAtStart = false;
 	if (!use_regexp) {
 		identifyClosing(par_as_string); // Removes math closings ($, ], ...) at end of string

commit e7ed8213ac47f52471130687613d5c15e3d0a023
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Apr 3 03:41:02 2022 +0200

    DocBook: fix a test to ensure that the DocBook document is valid.
    
    A book cannot directly contain paragraphs, they must be within a chapter.

diff --git a/autotests/export/xhtml/table_borders.lyx b/autotests/export/xhtml/table_borders.lyx
index 7b59f5f..76bfe2c 100644
--- a/autotests/export/xhtml/table_borders.lyx
+++ b/autotests/export/xhtml/table_borders.lyx
@@ -101,6 +101,10 @@
 Check HTML export
 \end_layout
 
+\begin_layout Chapter
+Some borders are bolder than others
+\end_layout
+
 \begin_layout Standard
 \begin_inset Tabular
 <lyxtabular version="3" rows="4" columns="3">

commit 26300c565fd3eeca9ee398b17c2bceedef31b5f5
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sat Apr 2 04:03:12 2022 +0200

    MathML: fix validity for fractions with units.
    
    https://www.lyx.org/trac/ticket/12513
    
    Contributed by lynx.

diff --git a/src/mathed/InsetMathFrac.cpp b/src/mathed/InsetMathFrac.cpp
index e58a787..3ad0dfe 100644
--- a/src/mathed/InsetMathFrac.cpp
+++ b/src/mathed/InsetMathFrac.cpp
@@ -543,17 +543,20 @@ void InsetMathFrac::mathmlize(MathMLStream & ms) const
 		break;
 
 	case UNIT:
-		// FIXME This is not right, because we still output mi, etc,
-		// when we output the cell. So we need to prevent that somehow.
-		if (nargs() == 2)
-			ms << cell(0)
-			   << MTag("mstyle mathvariant='normal'") 
-			   << cell(1) 
-			   << ETag("mstyle");
-		else
-			ms << MTag("mstyle mathvariant='normal'")
-			   << cell(0)
-			   << ETag("mstyle");
+		if (nargs() == 2) {
+			ms << MTag("mrow");
+			ms << cell(0);
+			SetMode textmode(ms, true);
+			ms << MTagInline("mstyle mathvariant='normal'");
+			ms << cell(1);
+			ms << ETagInline("mstyle");
+			ms << ETag("mrow");
+		} else {
+			SetMode textmode(ms, true);
+			ms << MTag("mstyle mathvariant='normal'");
+			ms << cell(0);
+			ms << ETag("mstyle");
+		}
 	}
 }
 

commit 4feb6aaea95670caa5b1292a0f618c2c8777343a
Author: Kornel Benko <kornel at lyx.org>
Date:   Sat Apr 2 17:01:02 2022 +0200

    Make clang happy
    
    Omitting 'error: comparison of integer expressions of different signedness'

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 53058dd..be11b16 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -3863,7 +3863,7 @@ string MatchStringAdv::normalize(docstring const & s, bool ignore_format) const
 		t = t.substr(1);
 	// Remove [%]*\n at end
 	while (!t.empty() && t[t.size() - 1] == '\n') {
-		int count = 1;
+		size_t count = 1;
 		if (!ignore_format) {
 			while ((t.size() > 1 + count) && (t[t.size() - 1 - count] == '%'))
 				count++;
@@ -3892,7 +3892,7 @@ string MatchStringAdv::normalize(docstring const & s, bool ignore_format) const
 				t.replace(pos, 1, " ");
 			}
 			if (!ignore_format) {
-				int count = 0;
+				size_t count = 0;
 				while ((pos > count + 1) && (t[pos - 1 -count] == '%')) {
 					count++;
 				}

commit 0ab862f9425fe8f4fe9f831c8347df56e1d9fc06
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Apr 2 12:05:18 2022 +0200

    Amend d96135a9dcc5

diff --git a/src/insets/InsetNote.cpp b/src/insets/InsetNote.cpp
index 05253de..d36b0d6 100644
--- a/src/insets/InsetNote.cpp
+++ b/src/insets/InsetNote.cpp
@@ -207,6 +207,7 @@ bool InsetNote::isMacroScope() const
 void InsetNote::latex(otexstream & os, OutputParams const & runparams_in) const
 {
 	if (params_.type != InsetNoteParams::Greyedout
+	    && runparams_in.for_searchAdv != OutputParams::NoSearch
 	    && (runparams_in.for_searchAdv & OutputParams::SearchNonOutput) == 0)
 		return;
 

commit d96135a9dcc54ab1e6283863f4534ef5530c2faa
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Apr 2 11:19:55 2022 +0200

    Amend bcad19e504f845
    
    Allow searching in notes and comments if non-output-content is true

diff --git a/src/insets/InsetNote.cpp b/src/insets/InsetNote.cpp
index adacef3..05253de 100644
--- a/src/insets/InsetNote.cpp
+++ b/src/insets/InsetNote.cpp
@@ -206,9 +206,19 @@ bool InsetNote::isMacroScope() const
 
 void InsetNote::latex(otexstream & os, OutputParams const & runparams_in) const
 {
-	if (params_.type == InsetNoteParams::Note)
+	if (params_.type != InsetNoteParams::Greyedout
+	    && (runparams_in.for_searchAdv & OutputParams::SearchNonOutput) == 0)
 		return;
 
+	if (params_.type == InsetNoteParams::Note) {
+		if ((runparams_in.for_searchAdv & OutputParams::SearchNonOutput) != 0) {
+			OutputParams runparams(runparams_in);
+			InsetCollapsible::latex(os, runparams);
+			runparams_in.encoding = runparams.encoding;
+		}
+		return;
+	}
+
 	OutputParams runparams(runparams_in);
 	if (params_.type == InsetNoteParams::Comment) {
 		runparams.inComment = true;
diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp
index af1847c..1767f2c 100644
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -485,12 +485,6 @@ void InsetText::latex(otexstream & os, OutputParams const & runparams) const
 	// environment. Standard collapsible insets should not
 	// redefine this, non-standard ones may call this.
 	InsetLayout const & il = getLayout();
-	if (runparams.for_searchAdv != OutputParams::NoSearch &&
-	    (runparams.for_searchAdv & OutputParams::SearchNonOutput) == 0 &&
-	    !il.latexname().empty() &&
-	    il.latextype() == InsetLaTeXType::ENVIRONMENT &&
-	    il.latexname() == "comment")
-		return;
 
 	if (il.forceOwnlines())
 		os << breakln;

commit 50374e38e1ef69aacdddeb771bc7716657338437
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sat Apr 2 03:31:15 2022 +0200

    XHTML/CALS tables: create helper functions to share more code.

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 8251333..749c244 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -3809,6 +3809,66 @@ docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & run
 }
 
 
+void Tabular::xmlHeader(XMLStream & xs, OutputParams const & runparams) const
+{
+	// Output the header of the table. For both HTML and CALS, this is surrounded by a thead.
+	bool const have_first_head = haveLTFirstHead(false);
+	// if we have a first head, then we are going to ignore the
+	// headers for the additional pages, since there aren't any
+	// in HTML or DocBook.
+	bool const have_head = !have_first_head && haveLTHead(false);
+
+	if (have_head || have_first_head) {
+		xs << xml::StartTag("thead") << xml::CR();
+		for (row_type r = 0; r < nrows(); ++r) {
+			if (((have_first_head && row_info[r].endfirsthead) ||
+			     (have_head && row_info[r].endhead)) &&
+			    !row_info[r].caption) {
+				xmlRow(xs, r, runparams, true, false, buffer().params().docbook_table_output);
+			}
+		}
+		xs << xml::EndTag("thead");
+		xs << xml::CR();
+	}
+}
+
+
+void Tabular::xmlFooter(XMLStream & xs, OutputParams const & runparams) const
+{
+	// Output the footer of the table. For both HTML and CALS, this is surrounded by a tfoot and output just after
+	// the header (and before the body).
+	bool const have_last_foot = haveLTLastFoot(false);
+	bool const have_foot = !have_last_foot && haveLTFoot(false);
+
+	if (have_foot || have_last_foot) {
+		xs << xml::StartTag("tfoot") << xml::CR();
+		for (row_type r = 0; r < nrows(); ++r) {
+			if (((have_last_foot && row_info[r].endlastfoot) ||
+			     (have_foot && row_info[r].endfoot)) &&
+			    !row_info[r].caption) {
+				xmlRow(xs, r, runparams, false, false, buffer().params().docbook_table_output);
+			}
+		}
+		xs << xml::EndTag("tfoot");
+		xs << xml::CR();
+	}
+}
+
+
+void Tabular::xmlBody(XMLStream & xs, OutputParams const & runparams) const
+{
+	// Output the main part of the table. The tbody container is mandatory for CALS, but optional for HTML (only if
+	// there is no header and no footer). It never hurts to have it, though.
+	xs << xml::StartTag("tbody");
+	xs << xml::CR();
+	for (row_type r = 0; r < nrows(); ++r)
+		if (isValidRow(r))
+			xmlRow(xs, r, runparams, false, false, buffer().params().docbook_table_output);
+	xs << xml::EndTag("tbody");
+	xs << xml::CR();
+}
+
+
 void Tabular::docbook(XMLStream & xs, OutputParams const & runparams) const
 {
 	// Some tables are inline. Likely limitation: cannot output a table within a table; is that really a limitation?
@@ -3848,52 +3908,9 @@ void Tabular::docbook(XMLStream & xs, OutputParams const & runparams) const
 		}
 	}
 
-	// Output the header of the table. For both HTML and CALS, this is surrounded by a thead.
-	bool const havefirsthead = haveLTFirstHead(false);
-	// if we have a first head, then we are going to ignore the
-	// headers for the additional pages, since there aren't any
-	// in DocBook. this test accomplishes that.
-	bool const havehead = !havefirsthead && haveLTHead(false);
-	if (havehead || havefirsthead) {
-		xs << xml::StartTag("thead") << xml::CR();
-		for (row_type r = 0; r < nrows(); ++r) {
-			if (((havefirsthead && row_info[r].endfirsthead) ||
-			     (havehead && row_info[r].endhead)) &&
-			    !row_info[r].caption) {
-				xmlRow(xs, r, runparams, true, false, buffer().params().docbook_table_output);
-			}
-		}
-		xs << xml::EndTag("thead");
-		xs << xml::CR();
-	}
-
-	// Output the footer of the table. For both HTML and CALS, this is surrounded by a tfoot and output just after
-	// the header (and before the body).
-	bool const havelastfoot = haveLTLastFoot(false);
-	// as before.
-	bool const havefoot = !havelastfoot && haveLTFoot(false);
-	if (havefoot || havelastfoot) {
-		xs << xml::StartTag("tfoot") << xml::CR();
-		for (row_type r = 0; r < nrows(); ++r) {
-			if (((havelastfoot && row_info[r].endlastfoot) ||
-			     (havefoot && row_info[r].endfoot)) &&
-			    !row_info[r].caption) {
-				xmlRow(xs, r, runparams, false, false, buffer().params().docbook_table_output);
-			}
-		}
-		xs << xml::EndTag("tfoot");
-		xs << xml::CR();
-	}
-
-	// Output the main part of the table. The tbody container is mandatory for CALS, but optional for HTML (only if
-	// there is no header and no footer). It never hurts to have it, though.
-	xs << xml::StartTag("tbody");
-	xs << xml::CR();
-	for (row_type r = 0; r < nrows(); ++r)
-		if (isValidRow(r))
-			xmlRow(xs, r, runparams, false, false, buffer().params().docbook_table_output);
-	xs << xml::EndTag("tbody");
-	xs << xml::CR();
+	xmlHeader(xs, runparams);
+	xmlFooter(xs, runparams);
+	xmlBody(xs, runparams);
 
 	// If this method started the table tag, also make it close it.
 	if (!runparams.docbook_in_table) {
@@ -3938,48 +3955,10 @@ docstring Tabular::xhtml(XMLStream & xs, OutputParams const & runparams) const
 	xs << xml::StartTag("table");
 	xs << xml::CR();
 
-	// output header info
-	bool const havefirsthead = haveLTFirstHead(false);
-	// if we have a first head, then we are going to ignore the
-	// headers for the additional pages, since there aren't any
-	// in XHTML. this test accomplishes that.
-	bool const havehead = !havefirsthead && haveLTHead(false);
-	if (havehead || havefirsthead) {
-		xs << xml::StartTag("thead");
-		xs << xml::CR();
-		for (row_type r = 0; r < nrows(); ++r) {
-			if (((havefirsthead && row_info[r].endfirsthead) ||
-			     (havehead && row_info[r].endhead)) &&
-			    !row_info[r].caption) {
-				ret += xmlRow(xs, r, runparams, true);
-			}
-		}
-		xs << xml::EndTag("thead");
-		xs << xml::CR();
-	}
-	// output footer info
-	bool const havelastfoot = haveLTLastFoot(false);
-	// as before.
-	bool const havefoot = !havelastfoot && haveLTFoot(false);
-	if (havefoot || havelastfoot) {
-		xs << xml::StartTag("tfoot") << xml::CR();
-		for (row_type r = 0; r < nrows(); ++r) {
-			if (((havelastfoot && row_info[r].endlastfoot) ||
-			     (havefoot && row_info[r].endfoot)) &&
-			    !row_info[r].caption) {
-				ret += xmlRow(xs, r, runparams);
-			}
-		}
-		xs << xml::EndTag("tfoot");
-		xs << xml::CR();
-	}
+	xmlHeader(xs, runparams);
+	xmlFooter(xs, runparams);
+	xmlBody(xs, runparams);
 
-	xs << xml::StartTag("tbody") << xml::CR();
-	for (row_type r = 0; r < nrows(); ++r)
-		if (isValidRow(r))
-			ret += xmlRow(xs, r, runparams);
-	xs << xml::EndTag("tbody");
-	xs << xml::CR();
 	xs << xml::EndTag("table");
 	xs << xml::CR();
 	if (is_long_tabular) {
diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h
index 0fbafa8..08b626f 100644
--- a/src/insets/InsetTabular.h
+++ b/src/insets/InsetTabular.h
@@ -957,6 +957,9 @@ public:
 	docstring xmlRow(XMLStream & xs, row_type row, OutputParams const &,
 	                 bool header = false, bool is_xhtml = true,
 					 BufferParams::TableOutput docbook_table_output = BufferParams::TableOutput::HTMLTable) const;
+	void xmlHeader(XMLStream & xs, OutputParams const &) const;
+	void xmlFooter(XMLStream & xs, OutputParams const &) const;
+	void xmlBody(XMLStream & xs, OutputParams const &) const;
 	XmlRowWiseBorders computeXmlBorders(row_type row) const;
 	std::vector<std::string> computeCssStylePerCell(row_type row, col_type col, idx_type cell) const;
 

commit 88f767e4922a0c4cdb39b24d6b6e2a41d1d8dc4a
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sat Apr 2 02:56:32 2022 +0200

    CALS tables: base implementation of row separators on the new code from XHTML.

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 77bb970..8251333 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -3738,7 +3738,17 @@ docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & run
 	Tabular::XmlRowWiseBorders const borders = computeXmlBorders(row);
 	idx_type cell = getFirstCellInRow(row);
 
-	xs << xml::StartTag(row_tag);
+	std::string row_attr;
+	bool cals_row_has_rowsep = false; // TODO: is this required? Is it possible that only a/several cells request a row separator, but not the complete row?
+	// CALS only: all cases where there should be a line *below* this row.
+	if (is_cals_table && (row_info[row].bottom_space_default || bottomLine(cell))) {
+		if (borders.completeBorderBelow) {
+			row_attr = "rowsep='1'";
+			cals_row_has_rowsep = true;
+		}
+	}
+
+	xs << xml::StartTag(row_tag, row_attr);
 	xs << xml::CR();
 	for (col_type c = 0; c < ncols(); ++c, ++cell) {
 		if (isPartOfMultiColumn(row, c) || isPartOfMultiRow(row, c))
@@ -3757,22 +3767,25 @@ docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & run
 			attr << "' ";
 		}
 
-		attr << getHAlignAsXmlAttribute(cell, false) << " " << getVAlignAsXmlAttribute(cell);
+		if (is_cals_table) {
+			if (!cals_row_has_rowsep && bottomLine(cell))
+				attr << "rowsep='1' ";
+		}
 
-		attr << getHAlignAsXmlAttribute(cell, false) << " " << getVAlignAsXmlAttribute(cell) << " ";
+		attr << getHAlignAsXmlAttribute(cell, false) << " " << getVAlignAsXmlAttribute(cell);
 
 		if (is_xhtml_table) {
 			if (isMultiColumn(cell))
-				attr << "colspan='" << columnSpan(cell) << "'";
+				attr << " colspan='" << columnSpan(cell) << "'";
 			else if (isMultiRow(cell))
-				attr << "rowspan='" << rowSpan(cell) << "'";
+				attr << " rowspan='" << rowSpan(cell) << "'";
 		} else if (is_cals_table) {
 			if (isMultiColumn(cell))
-				attr << "namest='c" << c << " nameend='c" << (c + columnSpan(cell)) << "'";
+				attr << " namest='c" << c << " nameend='c" << (c + columnSpan(cell)) << "'";
 			else if (isMultiRow(cell))
-				attr << "morerows='" << rowSpan(cell) << "'";
-			else if (!is_xhtml && docbook_table_output == BufferParams::TableOutput::CALSTable)
-				attr << "colname='c" << (c + 1) << "'"; // CALS column numbering starts at 1.
+				attr << " morerows='" << rowSpan(cell) << "'";
+			else
+				attr << " colname='c" << (c + 1) << "'"; // CALS column numbering starts at 1.
 		}
 
 		// Render the cell as either XHTML or DocBook.
@@ -3808,13 +3821,13 @@ void Tabular::docbook(XMLStream & xs, OutputParams const & runparams) const
 	// "Formal" tables have a title and use the tag <table>; the distinction with <informaltable> is done outside.
 	// HTML has the caption first with titles forbidden, and CALS has a title first.
 	if (haveLTCaption()) {
-		std::string tag = ((buffer().params().docbook_table_output) == BufferParams::HTMLTable) ? "caption" : "title";
+		std::string caption_tag = ((buffer().params().docbook_table_output) == BufferParams::HTMLTable) ? "caption" : "title";
 
-		xs << xml::StartTag(tag);
+		xs << xml::StartTag(caption_tag);
 		for (row_type r = 0; r < nrows(); ++r)
 			if (row_info[r].caption)
 				xmlRow(xs, r, runparams, false, false, buffer().params().docbook_table_output);
-		xs << xml::EndTag(tag);
+		xs << xml::EndTag(caption_tag);
 		xs << xml::CR();
 	}
 

commit 8b9c162f515c9666a8a4c5ca26052d710b15d89b
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sat Apr 2 02:54:12 2022 +0200

    CALS tables: fix implementation of multirow/col.

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 478ecf1..77bb970 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -3731,6 +3731,7 @@ docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & run
 {
 	docstring ret;
 	const bool is_xhtml_table = is_xhtml || docbook_table_output == BufferParams::TableOutput::HTMLTable;
+	const bool is_cals_table = !is_xhtml && docbook_table_output == BufferParams::TableOutput::CALSTable;
 
 	std::string const row_tag = is_xhtml_table ? "tr" : "row";
 	std::string const cell_tag = is_xhtml_table ? (header ? "th" : "td") : "entry";
@@ -3758,16 +3759,21 @@ docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & run
 
 		attr << getHAlignAsXmlAttribute(cell, false) << " " << getVAlignAsXmlAttribute(cell);
 
-		if (isMultiColumn(cell))
-			attr << " colspan='" << columnSpan(cell) << "'";
-		else if (isMultiRow(cell))
-			attr << " rowspan='" << rowSpan(cell) << "'";
-		else if (!is_xhtml && docbook_table_output == BufferParams::TableOutput::CALSTable)
-			attr << " colname='c" << (c + 1) << "'"; // CALS column numbering starts at 1.
+		attr << getHAlignAsXmlAttribute(cell, false) << " " << getVAlignAsXmlAttribute(cell) << " ";
 
-		// All cases where there should be a line *below* this row.
-		if (!is_xhtml && docbook_table_output == BufferParams::TableOutput::CALSTable && row_info[row].bottom_space_default)
-			attr << " rowsep='1'";
+		if (is_xhtml_table) {
+			if (isMultiColumn(cell))
+				attr << "colspan='" << columnSpan(cell) << "'";
+			else if (isMultiRow(cell))
+				attr << "rowspan='" << rowSpan(cell) << "'";
+		} else if (is_cals_table) {
+			if (isMultiColumn(cell))
+				attr << "namest='c" << c << " nameend='c" << (c + columnSpan(cell)) << "'";
+			else if (isMultiRow(cell))
+				attr << "morerows='" << rowSpan(cell) << "'";
+			else if (!is_xhtml && docbook_table_output == BufferParams::TableOutput::CALSTable)
+				attr << "colname='c" << (c + 1) << "'"; // CALS column numbering starts at 1.
+		}
 
 		// Render the cell as either XHTML or DocBook.
 		xs << xml::StartTag(cell_tag, attr.str(), true);

commit 544adb065b89afa27002dc8b391ee7c907e200ac
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Apr 1 21:15:13 2022 +0200

    XHTML tables: fix borders and implement booktabs.
    
    https://www.lyx.org/trac/ticket/10154
    
    Contributed by raccoon.

diff --git a/autotests/export/xhtml/table_borders.lyx b/autotests/export/xhtml/table_borders.lyx
new file mode 100644
index 0000000..7b59f5f
--- /dev/null
+++ b/autotests/export/xhtml/table_borders.lyx
@@ -0,0 +1,235 @@
+#LyX 2.4 created this file. For more info see https://www.lyx.org/
+\lyxformat 609
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass scrbook
+\begin_preamble
+% Added by lyx2lyx
+\setlength{\parskip}{\medskipamount}
+\setlength{\parindent}{0pt}
+\end_preamble
+\use_default_options true
+\maintain_unincluded_children no
+\language ngerman
+\language_package default
+\inputencoding auto-legacy
+\fontencoding auto
+\font_roman "lmodern" "default"
+\font_sans "lmss" "default"
+\font_typewriter "lmtt" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_roman_osf false
+\font_sans_osf false
+\font_typewriter_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 0
+\use_package mathtools 0
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 0
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 0
+\use_minted 0
+\use_lineno 0
+\branch Test
+\selected 1
+\filename_suffix 0
+\color #e9c792 #16386d
+\end_branch
+\index Stichwortverzeichnis
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style english
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tablestyle default
+\tracking_changes false
+\output_changes false
+\change_bars false
+\postpone_fragile_content false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\docbook_table_output 0
+\docbook_mathml_prefix 1
+\html_latex_start <span class='latex'>
+\html_latex_end </span>
+\end_header
+
+\begin_body
+
+\begin_layout Title
+Check HTML export
+\end_layout
+
+\begin_layout Standard
+\begin_inset Tabular
+<lyxtabular version="3" rows="4" columns="3">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="3cm">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+a
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+d
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+s
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/autotests/export/xhtml/table_borders.xhtml b/autotests/export/xhtml/table_borders.xhtml
new file mode 100644
index 0000000..7e0602e
--- /dev/null
+++ b/autotests/export/xhtml/table_borders.xhtml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta name="GENERATOR" content="LyX 2.4.0dev" />
+<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
+<title>Check HTML export</title>
+<style type='text/css'>
+/* Layout-provided Styles */
+h1.title {
+font-family: sans-serif;
+font-weight: bold;
+font-size: x-large;
+margin-bottom: 1ex;
+text-align: center;
+
+}
+h1.chapter {
+font-family: sans-serif;
+font-weight: bold;
+font-size: x-large;
+margin-top: 2ex;
+margin-bottom: 0.8ex;
+text-align: left;
+
+}
+div.standard {
+	text-indent: 2em;
+	margin-bottom: 2ex;
+}
+div.plain_layout {
+text-align: left;
+
+}
+table {
+	border-collapse: collapse;
+	display: inline-block;
+}
+td {
+	padding: 0.5ex;
+}
+
+
+</style>
+</head>
+<body dir="auto">
+<h1 class="title" id='magicparlabel-1'>Check HTML export</h1>
+<section>
+<h1 class="chapter" id='magicparlabel-2'><span class="chapter_label">1</span> here<a id="sec_ere__dsd" /></h1>
+<div class="standard" id='magicparlabel-3'>see <a href="#sec_ere__dsd">1</a></div>
+
+<div class="standard" id='magicparlabel-4'><table>
+<tbody>
+<tr>
+<td style='width: 3cm; border-bottom: 3.000000px double; border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'><div class="plain_layout" id='magicparlabel-26'>a</div>
+</td>
+<td style='border-bottom: 3.000000px double; border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'><div class="plain_layout" id='magicparlabel-29'>d</div>
+</td>
+<td style='border-bottom: 3.000000px double; border-right: 1px solid; border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'><div class="plain_layout" id='magicparlabel-32'>s</div>
+</td>
+</tr>
+<tr>
+<td style='width: 3cm; border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'>
+</td>
+<td style='border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'>
+</td>
+<td style='border-right: 1px solid; border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'>
+</td>
+</tr>
+<tr>
+<td style='width: 3cm; border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'>
+</td>
+<td style='border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'>
+</td>
+<td style='border-right: 1px solid; border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'>
+</td>
+</tr>
+<tr>
+<td style='width: 3cm; border-bottom: 1.000000px solid; border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'>
+</td>
+<td style='border-bottom: 1.000000px solid; border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'>
+</td>
+<td style='border-bottom: 1.000000px solid; border-right: 1px solid; border-left: 1px solid; border-top: 1.000000px solid' align='center' valign='top'>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+</section>
+</body>
+</html>
diff --git a/lib/layouts/stdinsets.inc b/lib/layouts/stdinsets.inc
index 32a0af3..074b274 100644
--- a/lib/layouts/stdinsets.inc
+++ b/lib/layouts/stdinsets.inc
@@ -776,7 +776,6 @@ InsetLayout Tabular
 			display: inline-block;
 		}
 		td {
-			border: 1px solid black;
 			padding: 0.5ex;
 		}
 	EndHTMLStyle
diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 0832054..478ecf1 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -3654,6 +3654,77 @@ std::string Tabular::getHAlignAsXmlAttribute(idx_type cell, bool is_xhtml) const
 	}
 }
 
+Tabular::XmlRowWiseBorders Tabular::computeXmlBorders(row_type row) const
+{
+	Tabular::XmlRowWiseBorders borders;
+
+	// Determine whether borders are required.
+	for (col_type c = 0; c < ncols(); ++c) {
+		if (row < nrows() - 1) {
+			if (!bottomLine(cellIndex(row, c))
+			    || !topLine(cellIndex(row + 1, c))) {
+				borders.completeBorder = false;
+			}
+			if (!bottomLine(cellIndex(row, c))
+			    && !topLine(cellIndex(row + 1, c))) {
+				borders.completeBorderBelow = false;
+			}
+		} else if (row == nrows() - 1 && !bottomLine(cellIndex(row, c))) {
+			borders.completeBorderBelow = false;
+		}
+
+		if ((row > 0 && !bottomLine(cellIndex(row - 1, c)) && !topLine(cellIndex(row, c))) ||
+		    (row == 0 && !topLine(cellIndex(row, c)))) {
+			borders.completeBorderAbove = false;
+		}
+	}
+
+	// Size of booktabs borders.
+	if (use_booktabs) {
+		if (borders.completeBorderAbove)
+			borders.borderTopWidth = row == 0 ? 2 : 1.5;
+		if (borders.completeBorderBelow) {
+			borders.borderBottomWidth = row == nrows() - 1 ? 2 : 1.5;
+			borders.borderBottomWidthComplete = 3 * borders.borderBottomWidth;
+		}
+	}
+
+	return borders;
+}
+
+
+std::vector<std::string> Tabular::computeCssStylePerCell(row_type row, col_type col, idx_type cell) const
+{
+	std::vector<std::string> styles;
+
+	// Fixed width.
+	Length const col_width = column_info[col].p_width;
+	if (!col_width.zero())
+		styles.emplace_back("width: " + col_width.asHTMLString());
+
+	// Borders and booktabs.
+	const Tabular::XmlRowWiseBorders borders = computeXmlBorders(row);
+
+	if (bottomLine(cell)) {
+		if (row < nrows() - 1 && borders.completeBorder)
+			styles.emplace_back("border-bottom: " + to_string(borders.borderBottomWidthComplete) + "px double");
+		else
+			styles.emplace_back("border-bottom: " + to_string(borders.borderBottomWidth) + "px solid");
+	}
+	if (rightLine(cell)) {
+		if (col < ncols() - 1 && leftLine(cell + 1))
+			styles.emplace_back("border-right: 3px double");
+		else
+			styles.emplace_back("border-right: 1px solid");
+	}
+	if (leftLine(cell))
+		styles.emplace_back("border-left: 1px solid");
+	if (topLine(cell))
+		styles.emplace_back("border-top: " + to_string(borders.borderTopWidth) + "px solid");
+
+	return styles;
+}
+
 
 docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & runparams,
 	bool header, bool is_xhtml, BufferParams::TableOutput docbook_table_output) const
@@ -3663,22 +3734,26 @@ docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & run
 
 	std::string const row_tag = is_xhtml_table ? "tr" : "row";
 	std::string const cell_tag = is_xhtml_table ? (header ? "th" : "td") : "entry";
+	Tabular::XmlRowWiseBorders const borders = computeXmlBorders(row);
 	idx_type cell = getFirstCellInRow(row);
 
 	xs << xml::StartTag(row_tag);
 	xs << xml::CR();
-	for (col_type c = 0; c < ncols(); ++c) {
+	for (col_type c = 0; c < ncols(); ++c, ++cell) {
 		if (isPartOfMultiColumn(row, c) || isPartOfMultiRow(row, c))
 			continue;
 
 		stringstream attr;
 
 		if (is_xhtml_table) {
-			Length const cwidth = column_info[c].p_width;
-			if (!cwidth.zero()) {
-				string const hwidth = cwidth.asHTMLString();
-				attr << "style='width: " << hwidth << ";' ";
-			}
+			const std::vector<std::string> styles = computeCssStylePerCell(row, c, cell);
+			attr << "style='" ;
+	        for (auto it = styles.begin(); it != styles.end(); ++it) {
+				attr << *it;
+				if (it != styles.end() - 1)
+					attr << "; ";
+	        }
+			attr << "' ";
 		}
 
 		attr << getHAlignAsXmlAttribute(cell, false) << " " << getVAlignAsXmlAttribute(cell);
@@ -3707,7 +3782,6 @@ docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & run
 		}
 		xs << xml::EndTag(cell_tag);
 		xs << xml::CR();
-		++cell;
 	}
 	xs << xml::EndTag(row_tag);
 	xs << xml::CR();
diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h
index 8a99ef4..0fbafa8 100644
--- a/src/insets/InsetTabular.h
+++ b/src/insets/InsetTabular.h
@@ -850,6 +850,24 @@ public:
 	///
 	typedef std::vector<ColumnData> column_vector;
 
+private:
+	// Determines the style of borders, per row.
+	class XmlRowWiseBorders {
+	public:
+		// Whether to draw double bottom line.
+		bool completeBorder = true;
+
+		// Whether to draw booktabs' thicker lines.
+		bool completeBorderAbove = true;
+		bool completeBorderBelow = true;
+
+		// Size of the borders.
+		double borderBottomWidth = 1.0;
+		double borderBottomWidthComplete = 3.0;
+		double borderTopWidth = 1.0;
+	};
+
+public:
 	///
 	idx_type numberofcells;
 	///
@@ -939,6 +957,8 @@ public:
 	docstring xmlRow(XMLStream & xs, row_type row, OutputParams const &,
 	                 bool header = false, bool is_xhtml = true,
 					 BufferParams::TableOutput docbook_table_output = BufferParams::TableOutput::HTMLTable) const;
+	XmlRowWiseBorders computeXmlBorders(row_type row) const;
+	std::vector<std::string> computeCssStylePerCell(row_type row, col_type col, idx_type cell) const;
 
 	/// Transforms the vertical alignment of the given cell as a prebaked XML attribute (for HTML and CALS).
 	std::string getHAlignAsXmlAttribute(idx_type cell, bool is_xhtml = true) const;

commit 838157392a8ddfbd3db604bf62f30f6c839d70b3
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Apr 1 20:39:02 2022 +0200

    XHTML/DocBook tables: slight refactoring.

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 8c571d6..0832054 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -3659,9 +3659,10 @@ docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & run
 	bool header, bool is_xhtml, BufferParams::TableOutput docbook_table_output) const
 {
 	docstring ret;
+	const bool is_xhtml_table = is_xhtml || docbook_table_output == BufferParams::TableOutput::HTMLTable;
 
-	std::string const row_tag = (is_xhtml || docbook_table_output == BufferParams::TableOutput::HTMLTable) ? "tr" : "row";
-	std::string const cell_tag = (is_xhtml || docbook_table_output == BufferParams::TableOutput::HTMLTable) ? (header ? "th" : "td") : "entry";
+	std::string const row_tag = is_xhtml_table ? "tr" : "row";
+	std::string const cell_tag = is_xhtml_table ? (header ? "th" : "td") : "entry";
 	idx_type cell = getFirstCellInRow(row);
 
 	xs << xml::StartTag(row_tag);
@@ -3672,7 +3673,7 @@ docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & run
 
 		stringstream attr;
 
-		if (is_xhtml || docbook_table_output == BufferParams::TableOutput::HTMLTable) {
+		if (is_xhtml_table) {
 			Length const cwidth = column_info[c].p_width;
 			if (!cwidth.zero()) {
 				string const hwidth = cwidth.asHTMLString();

commit 72f630cb8f370f2ab2b600be7c16f49fd8f1f276
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Apr 1 04:40:10 2022 +0200

    DocBook: remove unused variable.

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 1124331..8c571d6 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -3717,8 +3717,6 @@ docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & run
 
 void Tabular::docbook(XMLStream & xs, OutputParams const & runparams) const
 {
-	docstring ret;
-
 	// Some tables are inline. Likely limitation: cannot output a table within a table; is that really a limitation?
 	if (!runparams.docbook_in_table) { // Check on the *outer* set of parameters, so that the table can be closed
 		// properly at the end of this function.

commit 5488bebb303f47ba94621dfd1c05d3a54c6db16c
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Apr 1 04:37:48 2022 +0200

    XHTML/DocBook: merge code paths to generate a row in a table.

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 0d45855..1124331 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -3612,13 +3612,6 @@ void Tabular::latex(otexstream & os, OutputParams const & runparams) const
 }
 
 
-void Tabular::docbookRow(XMLStream & xs, row_type row,
-		   OutputParams const & runparams, bool header) const
-{
-	docbookRow(xs, row, runparams, header, buffer().params().docbook_table_output);
-}
-
-
 std::string Tabular::getVAlignAsXmlAttribute(idx_type cell) const
 {
 	switch (getVAlignment(cell)) {
@@ -3662,10 +3655,13 @@ std::string Tabular::getHAlignAsXmlAttribute(idx_type cell, bool is_xhtml) const
 }
 
 
-void Tabular::docbookRow(XMLStream & xs, row_type row, OutputParams const & runparams, bool header, BufferParams::TableOutput docbook_table_output) const
+docstring Tabular::xmlRow(XMLStream & xs, row_type row, OutputParams const & runparams,
+	bool header, bool is_xhtml, BufferParams::TableOutput docbook_table_output) const
 {
-	std::string const row_tag = (docbook_table_output == BufferParams::TableOutput::HTMLTable) ? "tr" : "row";
-	std::string const cell_tag = (docbook_table_output == BufferParams::TableOutput::HTMLTable) ? (header ? "th" : "td") : "entry";
+	docstring ret;
+
+	std::string const row_tag = (is_xhtml || docbook_table_output == BufferParams::TableOutput::HTMLTable) ? "tr" : "row";
+	std::string const cell_tag = (is_xhtml || docbook_table_output == BufferParams::TableOutput::HTMLTable) ? (header ? "th" : "td") : "entry";
 	idx_type cell = getFirstCellInRow(row);
 
 	xs << xml::StartTag(row_tag);
@@ -3676,7 +3672,7 @@ void Tabular::docbookRow(XMLStream & xs, row_type row, OutputParams const & runp
 
 		stringstream attr;
 
-		if (docbook_table_output == BufferParams::TableOutput::HTMLTable) {
+		if (is_xhtml || docbook_table_output == BufferParams::TableOutput::HTMLTable) {
 			Length const cwidth = column_info[c].p_width;
 			if (!cwidth.zero()) {
 				string const hwidth = cwidth.asHTMLString();
@@ -3690,24 +3686,32 @@ void Tabular::docbookRow(XMLStream & xs, row_type row, OutputParams const & runp
 			attr << " colspan='" << columnSpan(cell) << "'";
 		else if (isMultiRow(cell))
 			attr << " rowspan='" << rowSpan(cell) << "'";
-		else if (docbook_table_output == BufferParams::TableOutput::CALSTable)
+		else if (!is_xhtml && docbook_table_output == BufferParams::TableOutput::CALSTable)
 			attr << " colname='c" << (c + 1) << "'"; // CALS column numbering starts at 1.
 
 		// All cases where there should be a line *below* this row.
-		if (docbook_table_output == BufferParams::TableOutput::CALSTable && row_info[row].bottom_space_default)
+		if (!is_xhtml && docbook_table_output == BufferParams::TableOutput::CALSTable && row_info[row].bottom_space_default)
 			attr << " rowsep='1'";
 
-		OutputParams rp = runparams;
-		rp.docbook_in_par = false;
-		rp.docbook_force_pars = true;
+		// Render the cell as either XHTML or DocBook.
 		xs << xml::StartTag(cell_tag, attr.str(), true);
-		cellInset(cell)->docbook(xs, rp);
+		if (is_xhtml) {
+			ret += cellInset(cell)->xhtml(xs, runparams);
+		} else {
+			// DocBook: no return value for this function.
+			OutputParams rp = runparams;
+			rp.docbook_in_par = false;
+			rp.docbook_force_pars = true;
+			cellInset(cell)->docbook(xs, rp);
+		}
 		xs << xml::EndTag(cell_tag);
 		xs << xml::CR();
 		++cell;
 	}
 	xs << xml::EndTag(row_tag);
 	xs << xml::CR();
+
+	return ret;
 }
 
 
@@ -3730,7 +3734,7 @@ void Tabular::docbook(XMLStream & xs, OutputParams const & runparams) const
 		xs << xml::StartTag(tag);
 		for (row_type r = 0; r < nrows(); ++r)
 			if (row_info[r].caption)
-				docbookRow(xs, r, runparams);
+				xmlRow(xs, r, runparams, false, false, buffer().params().docbook_table_output);
 		xs << xml::EndTag(tag);
 		xs << xml::CR();
 	}
@@ -3764,7 +3768,7 @@ void Tabular::docbook(XMLStream & xs, OutputParams const & runparams) const
 			if (((havefirsthead && row_info[r].endfirsthead) ||
 			     (havehead && row_info[r].endhead)) &&
 			    !row_info[r].caption) {
-				docbookRow(xs, r, runparams, true);
+				xmlRow(xs, r, runparams, true, false, buffer().params().docbook_table_output);
 			}
 		}
 		xs << xml::EndTag("thead");
@@ -3782,7 +3786,7 @@ void Tabular::docbook(XMLStream & xs, OutputParams const & runparams) const
 			if (((havelastfoot && row_info[r].endlastfoot) ||
 			     (havefoot && row_info[r].endfoot)) &&
 			    !row_info[r].caption) {
-				docbookRow(xs, r, runparams); // TODO: HTML vs CALS
+				xmlRow(xs, r, runparams, false, false, buffer().params().docbook_table_output);
 			}
 		}
 		xs << xml::EndTag("tfoot");
@@ -3795,7 +3799,7 @@ void Tabular::docbook(XMLStream & xs, OutputParams const & runparams) const
 	xs << xml::CR();
 	for (row_type r = 0; r < nrows(); ++r)
 		if (isValidRow(r))
-			docbookRow(xs, r, runparams);
+			xmlRow(xs, r, runparams, false, false, buffer().params().docbook_table_output);
 	xs << xml::EndTag("tbody");
 	xs << xml::CR();
 
@@ -3807,43 +3811,6 @@ void Tabular::docbook(XMLStream & xs, OutputParams const & runparams) const
 }
 
 
-docstring Tabular::xhtmlRow(XMLStream & xs, row_type row,
-			   OutputParams const & runparams, bool header) const
-{
-	docstring ret;
-	string const celltag = header ? "th" : "td";
-	idx_type cell = getFirstCellInRow(row);
-
-	xs << xml::StartTag("tr");
-	for (col_type c = 0; c < ncols(); ++c) {
-		if (isPartOfMultiColumn(row, c) || isPartOfMultiRow(row, c))
-			continue;
-
-		stringstream attr;
-
-		Length const cwidth = column_info[c].p_width;
-		if (!cwidth.zero()) {
-			string const hwidth = cwidth.asHTMLString();
-			attr << "style=\"width: " << hwidth << ";\" ";
-		}
-
-		attr << getHAlignAsXmlAttribute(cell, true) << " " << getVAlignAsXmlAttribute(cell);
-
-		if (isMultiColumn(cell))
-			attr << " colspan='" << columnSpan(cell) << "'";
-		else if (isMultiRow(cell))
-			attr << " rowspan='" << rowSpan(cell) << "'";
-
-		xs << xml::StartTag(celltag, attr.str(), true) << xml::CR();
-		ret += cellInset(cell)->xhtml(xs, runparams);
-		xs << xml::EndTag(celltag) << xml::CR();
-		++cell;
-	}
-	xs << xml::EndTag("tr");
-	return ret;
-}
-
-
 docstring Tabular::xhtml(XMLStream & xs, OutputParams const & runparams) const
 {
 	docstring ret;
@@ -3870,7 +3837,7 @@ docstring Tabular::xhtml(XMLStream & xs, OutputParams const & runparams) const
 			xs << xml::CR();
 			for (row_type r = 0; r < nrows(); ++r)
 				if (row_info[r].caption)
-					ret += xhtmlRow(xs, r, runparams);
+					ret += xmlRow(xs, r, runparams);
 			xs << xml::EndTag("div");
 			xs << xml::CR();
 		}
@@ -3892,7 +3859,7 @@ docstring Tabular::xhtml(XMLStream & xs, OutputParams const & runparams) const
 			if (((havefirsthead && row_info[r].endfirsthead) ||
 			     (havehead && row_info[r].endhead)) &&
 			    !row_info[r].caption) {
-				ret += xhtmlRow(xs, r, runparams, true);
+				ret += xmlRow(xs, r, runparams, true);
 			}
 		}
 		xs << xml::EndTag("thead");
@@ -3908,7 +3875,7 @@ docstring Tabular::xhtml(XMLStream & xs, OutputParams const & runparams) const
 			if (((havelastfoot && row_info[r].endlastfoot) ||
 			     (havefoot && row_info[r].endfoot)) &&
 			    !row_info[r].caption) {
-				ret += xhtmlRow(xs, r, runparams);
+				ret += xmlRow(xs, r, runparams);
 			}
 		}
 		xs << xml::EndTag("tfoot");
@@ -3918,7 +3885,7 @@ docstring Tabular::xhtml(XMLStream & xs, OutputParams const & runparams) const
 	xs << xml::StartTag("tbody") << xml::CR();
 	for (row_type r = 0; r < nrows(); ++r)
 		if (isValidRow(r))
-			ret += xhtmlRow(xs, r, runparams);
+			ret += xmlRow(xs, r, runparams);
 	xs << xml::EndTag("tbody");
 	xs << xml::CR();
 	xs << xml::EndTag("table");
diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h
index 217aaa5..8a99ef4 100644
--- a/src/insets/InsetTabular.h
+++ b/src/insets/InsetTabular.h
@@ -935,14 +935,10 @@ public:
 				idx_type cell, row_type row, col_type column,
 				std::vector<unsigned int> const &,
 				bool onlydata, size_t max_length) const;
-	/// auxiliary function for DocBook
-	void docbookRow(XMLStream &, row_type, OutputParams const &,
-					bool header = false) const;
-	void docbookRow(XMLStream &, row_type, OutputParams const &,
-					bool header, BufferParams::TableOutput docbook_table_output) const;
-	///
-	docstring xhtmlRow(XMLStream & xs, row_type, OutputParams const &,
-	                   bool header = false) const;
+	///
+	docstring xmlRow(XMLStream & xs, row_type row, OutputParams const &,
+	                 bool header = false, bool is_xhtml = true,
+					 BufferParams::TableOutput docbook_table_output = BufferParams::TableOutput::HTMLTable) const;
 
 	/// Transforms the vertical alignment of the given cell as a prebaked XML attribute (for HTML and CALS).
 	std::string getHAlignAsXmlAttribute(idx_type cell, bool is_xhtml = true) const;

commit fa5db30d411d4c03cd2bc25de4cecb6d130b3a09
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Apr 1 04:37:33 2022 +0200

    Remove debug output.

diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp
index b3e73ff..00f497f 100644
--- a/src/insets/InsetERT.cpp
+++ b/src/insets/InsetERT.cpp
@@ -158,8 +158,6 @@ void InsetERT::docbook(XMLStream & xs, OutputParams const & runparams) const
 			os_trimmed.insert(4, from_ascii("}"));
 		}
 
-		std::cout << to_utf8(os_trimmed) << std::endl;
-
 		// Look into the global table of Unicode characters if there is a match.
 		bool termination;
 		docstring rem;

commit 46c6c40bea6ac75474b712b718b5903a8451bd31
Author: Pavel Sanda <sanda at lyx.org>
Date:   Fri Apr 1 23:05:04 2022 +0200

    * layouttranslations for bg

diff --git a/lib/layouttranslations b/lib/layouttranslations
index a85e72c..5d6d3c1 100644
--- a/lib/layouttranslations
+++ b/lib/layouttranslations
@@ -53,7 +53,7 @@ Translation ar
 End
 
 Translation bg
-	"Acknowledgement" "Признателност"
+	"Acknowledgement" "Благодарност"
 	"Algorithm" "Aлгоритъм"
 	"Assumption" "Допускане"
 	"Axiom" "Аксиома"
@@ -82,7 +82,7 @@ Translation bg
 	"Nomenclature[[output]]" "Речник на означенията"
 	"Notation" "Означение"
 	"Note" "бележка"
-	"Notes[[Endnotes]]" "Notes"
+	"Notes[[Endnotes]]" "Бележки в края"
 	"Problem" "Задача"
 	"Proof" "Доказателство"
 	"Property" "Своиство"

commit d1f8c48d1b27c0590037d3fd715d0ede6df44d4d
Author: Pavel Sanda <sanda at lyx.org>
Date:   Fri Apr 1 22:56:57 2022 +0200

    * bash_completion from Hernan Solari

diff --git a/lib/scripts/bash_completion b/lib/scripts/bash_completion
index 4d7b914..4e08fc0 100644
--- a/lib/scripts/bash_completion
+++ b/lib/scripts/bash_completion
@@ -34,8 +34,14 @@ _lyx()
 	fi
 
 	case "$last" in
-	--export|-e)
-		_filedir '+(pdf[1234]|PDF[1234]|pdf|PDF|ps|PS|xhtml|XHTML)';;
+		# check for export fmt. Short list presented
+	--export|-e|-E|--export-to)
+		COMPREPLY=( $(compgen -W 'latex pdflatex luatex xetex xhtml' -- $cur) );;
+	--import|-i)
+		# check for import format. Short list presented
+		# (-i | --import) requireas a second input _filedir 
+		# must point to *tex | *text | *xhtml depending on choice
+		COMPREPLY=( $(compgen -W 'latex text luatex xetex xhtml' -- $cur) );;
 	-dbg)
 		# check for multiple debug commands
 		if [[ $cur == *,* ]]; then #
@@ -46,6 +52,34 @@ _lyx()
 		fi;;
 	--force-overwrite|-f)
 		COMPREPLY=( $( compgen -W 'all main none' -- $cur ) );;
+
+	latex|xetex|luatex|text|xhtml)
+		# we need to know if previous token was -i or -E
+		if [[ $COMP_CWORD > 2 ]]; then
+			prev=${COMP_WORDS[$(($COMP_CWORD - 2))]}
+		else
+			prev=''
+		fi
+		if (test $prev=="-i")|(test $prev=="-E"); then
+			case $last in
+				text)
+					_filedir '@(txt)' ;;
+				latex|luatex|xetex)
+					_filedir '@(tex)' ;;
+				xhtml)
+					_filedir '@(xhtml)' ;;
+			esac
+		fi;;
+	pdflatex)
+		# we need to know if previous token was -E
+		if [[ $COMP_CWORD > 2 ]]; then
+			prev=${COMP_WORDS[$(($COMP_CWORD - 2))]}
+		else
+			prev=''
+		fi
+		if test $prev == "-E"; then
+					_filedir '@(pdf)' 
+		fi;;
 	*)
           case "$cur" in
           -*)
@@ -58,7 +92,7 @@ _lyx()
 	  
           *)
 		# LyX files
-                _filedir '@(lyx)' 
+		_filedir '@(lyx)' 
           esac
 	esac
 
@@ -66,3 +100,4 @@ _lyx()
 	test $g -eq 0 && shopt -u extglob
 
 } && complete -F _lyx $filenames lyx
+

commit 9804b544e9ab1775f219f1439bbe174b671f5871
Author: Pavel Sanda <sanda at lyx.org>
Date:   Fri Apr 1 22:55:41 2022 +0200

    Add Hernan to credits

diff --git a/lib/generate_contributions.py b/lib/generate_contributions.py
index 86ba4a8..d45db09 100755
--- a/lib/generate_contributions.py
+++ b/lib/generate_contributions.py
@@ -1915,7 +1915,15 @@ contributors = [
                  "m=151306079714476",
                  "12 December 2017",
                  u"Russian localization and documentation, bug reports and fixes, updating of code"),
-     
+
+     contributor(u"Hernán Gustavo Solari",
+                 "hgsolari () gmail ! com",
+                 "GPL",
+                 "Re: Bug#1008257: lyx: bash-completion not working",
+                 "m=164864464510820",
+                 "30 March 2022",
+                 u"bash-completion fixes"),
+
      contributor(u"Giovanni Sora",
                  "g.sora () tiscali ! it",
                  "GPL",

commit bcad19e504f845f8fe08d4d62b46e0fdbc67145e
Author: Kornel Benko <kornel at lyx.org>
Date:   Fri Apr 1 20:14:47 2022 +0200

    FindAdv: Handle latex-output for comment-environment
    
    Disable if in search-adv modus and not searching in not-printed contents,
    enable otherwise

diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp
index a452184..af1847c 100644
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -485,6 +485,13 @@ void InsetText::latex(otexstream & os, OutputParams const & runparams) const
 	// environment. Standard collapsible insets should not
 	// redefine this, non-standard ones may call this.
 	InsetLayout const & il = getLayout();
+	if (runparams.for_searchAdv != OutputParams::NoSearch &&
+	    (runparams.for_searchAdv & OutputParams::SearchNonOutput) == 0 &&
+	    !il.latexname().empty() &&
+	    il.latextype() == InsetLaTeXType::ENVIRONMENT &&
+	    il.latexname() == "comment")
+		return;
+
 	if (il.forceOwnlines())
 		os << breakln;
 	bool needendgroup = false;

commit 83e65161a8a12be72aa6ba5b5037e378b2730051
Author: Kornel Benko <kornel at lyx.org>
Date:   Fri Apr 1 13:45:57 2022 +0200

    FindAdv: Ignore comment-feature (but not its content)
    
    TODO: Handle 'comment' like other features, but this needs more thinking.

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 61749d4..53058dd 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1037,7 +1037,7 @@ private:
 	 ** @todo Normalization should also expand macros, if the corresponding
 	 ** search option was checked.
 	 **/
-	string normalize(docstring const & s) const;
+	string normalize(docstring const & s, bool ignore_fomat) const;
 	// normalized string to search
 	string par_as_string;
 	// regular expression to use for searching
@@ -3029,7 +3029,7 @@ int LatexInfo::dispatch(ostringstream &os, int previousStart, KeyInfo &actual)
       // Remove the key with all parameters and following spaces
       size_t pos;
       size_t start;
-      if (interval_.par[actual._dataEnd-1] == ' ')
+      if (interval_.par[actual._dataEnd-1] == ' ' || interval_.par[actual._dataEnd-1] == '}')
         start = actual._dataEnd;
       else
         start = actual._dataEnd+1;
@@ -3536,7 +3536,7 @@ MatchStringAdv::MatchStringAdv(lyx::Buffer & buf, FindAndReplaceOptions & opt)
 		previous_single_replace = true;
 	}
 	// When using regexp, braces are hacked already by escape_for_regex()
-	par_as_string = normalize(ds);
+	par_as_string = normalize(ds, opt.ignoreformat);
 	open_braces = 0;
 	close_wildcards = 0;
 
@@ -3660,7 +3660,7 @@ MatchResult MatchStringAdv::findAux(DocIterator const & cur, int len, bool at_be
 
 	docstring docstr = stringifyFromForSearch(opt, cur, len);
 	string str;
-	str = normalize(docstr);
+	str = normalize(docstr, opt.ignoreformat);
 	if (!opt.ignoreformat) {
 		str = correctlanguagesetting(str, false, !opt.ignoreformat);
 		// remove closing '}' and '\n' to allow for use of '$' in regex
@@ -3854,16 +3854,22 @@ static bool simple_replace(string &t, string from, string to)
 }
 #endif
 
-string MatchStringAdv::normalize(docstring const & s) const
+string MatchStringAdv::normalize(docstring const & s, bool ignore_format) const
 {
 	string t;
 	t = lyx::to_utf8(s);
 	// Remove \n at begin
 	while (!t.empty() && t[0] == '\n')
 		t = t.substr(1);
-	// Remove \n at end
-	while (!t.empty() && t[t.size() - 1] == '\n')
-		t = t.substr(0, t.size() - 1);
+	// Remove [%]*\n at end
+	while (!t.empty() && t[t.size() - 1] == '\n') {
+		int count = 1;
+		if (!ignore_format) {
+			while ((t.size() > 1 + count) && (t[t.size() - 1 - count] == '%'))
+				count++;
+		}
+		t = t.substr(0, t.size() - count);
+	}
 	size_t pos;
 	// Handle all other '\n'
 	while ((pos = t.find("\n")) != string::npos) {
@@ -3876,13 +3882,24 @@ string MatchStringAdv::normalize(docstring const & s) const
 				t.replace(pos-2, 3, "");
 			}
 		}
-		else if (!isAlnumASCII(t[pos+1]) || !isAlnumASCII(t[pos-1])) {
-			// '\n' adjacent to non-alpha-numerics, discard
-			t.replace(pos, 1, "");
-		}
 		else {
-			// Replace all other \n with spaces
-			t.replace(pos, 1, " ");
+			if (!isAlnumASCII(t[pos+1]) || !isAlnumASCII(t[pos-1])) {
+				// '\n' adjacent to non-alpha-numerics, discard
+				t.replace(pos, 1, "");
+			}
+			else {
+				// Replace all other \n with spaces
+				t.replace(pos, 1, " ");
+			}
+			if (!ignore_format) {
+				int count = 0;
+				while ((pos > count + 1) && (t[pos - 1 -count] == '%')) {
+					count++;
+				}
+				if (count > 0) {
+					t.replace(pos - count, count, "");
+				}
+			}
 		}
 	}
 	// Remove stale empty \emph{}, \textbf{} and similar blocks from latexify

commit 1aa449785e075425dec69c7887e1c42d5ebccd36
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Fri Apr 1 11:34:26 2022 +0200

    Indentation

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 35fdd68..61749d4 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -192,7 +192,7 @@ IgnoreFormats ignoreFormats;
 
 void setIgnoreFormat(string const & type, bool value, bool fromUser)
 {
-  ignoreFormats.setIgnoreFormat(type, value, fromUser);
+	ignoreFormats.setIgnoreFormat(type, value, fromUser);
 }
 
 

commit 898007fecdb0d9d4119b9548fa62f2ec783f51e8
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Fri Apr 1 09:27:55 2022 +0200

    bg.po: update from Veselin

diff --git a/po/bg.po b/po/bg.po
index 85af081..8a470b3 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.3.x\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2021-03-05 15:06-0500\n"
+"POT-Creation-Date: 2022-02-16 12:05+0200\n"
 "PO-Revision-Date: 2019-04-23 13:49+0300\n"
 "Last-Translator: V. Jeliazkov <vveesskkoo at google.com>\n"
 "Language-Team: Bulgarian <lyx-docs at lists.lyx.org>\n"
@@ -23,33 +23,30 @@ msgstr "Версия"
 
 # src/lyxfunc.C:1132
 #: src/frontends/qt/ui/AboutUi.ui:150
-#, fuzzy
 msgid "Library directory"
-msgstr "Директория за библиотеките: "
+msgstr "Директория с библиотеките"
 
 #: src/frontends/qt/ui/AboutUi.ui:162
 msgid "Open library directory in file browser"
-msgstr ""
+msgstr "Отваряне на директорията с библиотеките"
 
 #: src/frontends/qt/ui/AboutUi.ui:165
 msgid "[[do]]&Open"
-msgstr ""
+msgstr "&Отваряне"
 
 # src/lyxfunc.C:1132
 #: src/frontends/qt/ui/AboutUi.ui:200
-#, fuzzy
 msgid "User directory"
-msgstr "Потребителска директория: "
+msgstr "Директория на потребителя"
 
 #: src/frontends/qt/ui/AboutUi.ui:231
 msgid "Open user directory in file browser"
-msgstr ""
+msgstr "Отваряне на директорията с файлов мениджър"
 
 # src/LyXAction.C:144
 #: src/frontends/qt/ui/AboutUi.ui:234
-#, fuzzy
 msgid "[[do]]O&pen"
-msgstr "&Разширен"
+msgstr "О&тваряне"
 
 # src/credits.C:72
 #: src/frontends/qt/ui/AboutUi.ui:263
@@ -65,7 +62,7 @@ msgstr "Авторски права"
 # src/ext_l10n.h:131
 #: src/frontends/qt/ui/AboutUi.ui:313
 msgid "Build Info"
-msgstr "Настройки при компилиране"
+msgstr "Компилиране"
 
 # src/LColor.C:97
 #: src/frontends/qt/ui/AboutUi.ui:338
@@ -74,23 +71,21 @@ msgstr "Бележки към изданието"
 
 #: src/frontends/qt/ui/AboutUi.ui:383
 msgid "Copy version information to clipboard"
-msgstr ""
+msgstr "Копиране на информацията за версията в буфера"
 
 # src/LyXAction.C:303
 #: src/frontends/qt/ui/AboutUi.ui:386
-#, fuzzy
 msgid "Copy &Version Info"
-msgstr "Вмъкни бел. в поле"
+msgstr "Копиране на версията"
 
 # src/ext_l10n.h:186
 #: src/frontends/qt/ui/BibitemUi.ui:26 src/frontends/qt/ui/BibitemUi.ui:45
-#, fuzzy
 msgid "The bibliography key"
-msgstr "Библиография"
+msgstr "Библиографски ключ"
 
 #: src/frontends/qt/ui/BibitemUi.ui:29
 msgid "Ke&y:"
-msgstr "&Ключ"
+msgstr "&Ключ:"
 
 # src/frontends/xforms/FormPreferences.C:1278
 #: src/frontends/qt/ui/BibitemUi.ui:52 src/frontends/qt/ui/BibitemUi.ui:76
@@ -108,19 +103,17 @@ msgstr "Eтикет:"
 
 # src/lyx_gui_misc.C:430
 #: src/frontends/qt/ui/BibitemUi.ui:83
-#, fuzzy
 msgid "&Year:"
-msgstr "годена"
+msgstr "&Година"
 
 #: src/frontends/qt/ui/BibitemUi.ui:96
 msgid "The year with \"Author (Year)\" citations (without parentheses)."
-msgstr ""
+msgstr "Цитати с годината „Автор (година)“ без скоби."
 
 # src/ext_l10n.h:175
 #: src/frontends/qt/ui/BibitemUi.ui:105 src/frontends/qt/GuiBibitem.cpp:64
-#, fuzzy
 msgid "A&ll Author Names:"
-msgstr "Автор"
+msgstr "Пълно име на автора:"
 
 #: src/frontends/qt/ui/BibitemUi.ui:115
 msgid ""
@@ -128,6 +121,9 @@ msgid ""
 "full list for author-year citation, you can put the full list here and the "
 "abbreviated list above."
 msgstr ""
+"Ако желаете да използвате съкратен списък с автори с „и др.“ накрая, както и "
+"пълен списък с цитати автор-година можете да поставите пълния списък тук, а "
+"съкратения отгоре."
 
 #: src/frontends/qt/ui/BibitemUi.ui:122 src/frontends/qt/GuiBibitem.cpp:93
 msgid ""
@@ -173,8 +169,8 @@ msgid "Provides available cite style variants."
 msgstr "Осигуряване на наличните стилове за цитирания."
 
 # src/form1.C:129 src/sp_form.C:58
-#: src/frontends/qt/ui/BiblioUi.ui:118 src/frontends/qt/GuiPrefs.cpp:729
-#: src/frontends/qt/GuiPrefs.cpp:858
+#: src/frontends/qt/ui/BiblioUi.ui:118 src/frontends/qt/GuiPrefs.cpp:733
+#: src/frontends/qt/GuiPrefs.cpp:862
 msgid "Opt&ions:"
 msgstr "&опции: "
 
@@ -308,8 +304,8 @@ msgstr "Избиране на програма за съставяне на ли
 
 # src/form1.C:129 src/sp_form.C:58
 #: src/frontends/qt/ui/BiblioUi.ui:424 src/frontends/qt/ui/PrefLatexUi.ui:103
-#: src/frontends/qt/ui/PrefLatexUi.ui:205 src/frontends/qt/GuiPrefs.cpp:754
-#: src/frontends/qt/GuiPrefs.cpp:885
+#: src/frontends/qt/ui/PrefLatexUi.ui:205 src/frontends/qt/GuiPrefs.cpp:758
+#: src/frontends/qt/GuiPrefs.cpp:889
 msgid "Op&tions:"
 msgstr "Опции:"
 
@@ -317,6 +313,7 @@ msgstr "Опции:"
 msgid ""
 "Define options such as --min-crossrefs (see the documentation of BibTeX)"
 msgstr ""
+"Дефиниране на опции като --min-crossrefs (виж документацията на BibTeX)"
 
 # src/insets/insetbib.C:339
 #: src/frontends/qt/ui/BibtexUi.ui:23
@@ -365,9 +362,8 @@ msgstr "&Премахване"
 
 # src/frontends/gnome/FormCitation.C:560
 #: src/frontends/qt/ui/BibtexUi.ui:107
-#, fuzzy
 msgid "Move the selected database up (Ctrl-Up)"
-msgstr "Преместване избрания файл нагоре (Ctrl-горна стрелка)"
+msgstr "Преместване избраната база дании нагоре (Ctrl-горна стрелка)"
 
 # src/frontends/kde/refdlg.C:81 src/frontends/kde/tocdlg.C:43
 #: src/frontends/qt/ui/BibtexUi.ui:110 src/frontends/qt/ui/CitationUi.ui:191
@@ -377,9 +373,8 @@ msgstr "Преместване на&горе"
 
 # src/frontends/gnome/FormCitation.C:560
 #: src/frontends/qt/ui/BibtexUi.ui:130
-#, fuzzy
 msgid "Move the selected database down (Ctrl-Down)"
-msgstr "Преместване на избрания файл надолу (Ctrl-долна стрелка)"
+msgstr "Преместване на избраната база дании надолу (Ctrl-долна стрелка)"
 
 # src/ext_l10n.h:398
 #: src/frontends/qt/ui/BibtexUi.ui:133 src/frontends/qt/ui/CitationUi.ui:214
@@ -389,13 +384,11 @@ msgstr "Преместване на&долу"
 
 # src/ext_l10n.h:94
 #: src/frontends/qt/ui/BibtexUi.ui:160
-#, fuzzy
 msgid "Edit selected database externally"
-msgstr "Външен материал(x)...|x"
+msgstr "Редактиране на базата данни с външна програма"
 
 # src/MenuBackend.C:444 src/ext_l10n.h:2 src/ext_l10n.h:5
 #: src/frontends/qt/ui/BibtexUi.ui:163
-#, fuzzy
 msgid "&Edit..."
 msgstr "&Редактиране"
 
@@ -450,9 +443,9 @@ msgid "Add L&ocal..."
 msgstr "Добавяне на друг"
 
 # src/form1.C:129 src/sp_form.C:58
-#: src/frontends/qt/ui/BibtexUi.ui:304 lib/layouts/beamer.layout:518
-#: lib/layouts/beamer.layout:547 lib/layouts/beamer.layout:558
-#: lib/layouts/beamer.layout:586 lib/layouts/beamer.layout:689
+#: src/frontends/qt/ui/BibtexUi.ui:304 lib/layouts/beamer.layout:520
+#: lib/layouts/beamer.layout:549 lib/layouts/beamer.layout:560
+#: lib/layouts/beamer.layout:588 lib/layouts/beamer.layout:691
 #: lib/layouts/chessboard.module:31 lib/layouts/chessboard.module:61
 #: lib/layouts/chessboard.module:139 lib/layouts/fixme.module:68
 #: lib/layouts/fixme.module:103 lib/layouts/fixme.module:146
@@ -505,9 +498,8 @@ msgstr "Добавяне на лит. списък към съдържаниет
 
 # src/ext_l10n.h:215
 #: src/frontends/qt/ui/BibtexUi.ui:383
-#, fuzzy
 msgid "Custo&m:"
-msgstr "потребителско"
+msgstr "От потребителя:"
 
 #: src/frontends/qt/ui/BibtexUi.ui:393
 msgid ""
@@ -568,9 +560,9 @@ msgstr "Избиране тип на вътрешното оформление"
 #: src/frontends/qt/ui/ListingsUi.ui:105 src/frontends/qt/ui/TabularUi.ui:1200
 #: src/frontends/qt/ui/TabularUi.ui:1219 src/frontends/qt/ui/TabularUi.ui:1267
 #: src/frontends/qt/GuiBox.cpp:420 src/frontends/qt/GuiBox.cpp:630
-#: src/frontends/qt/GuiDocument.cpp:124 src/frontends/qt/GuiGraphics.cpp:576
-#: src/frontends/qt/GuiMathMatrix.cpp:33 src/frontends/qt/GuiPrefs.cpp:2285
-#: src/frontends/qt/GuiPrefs.cpp:2308
+#: src/frontends/qt/GuiDocument.cpp:124 src/frontends/qt/GuiGraphics.cpp:582
+#: src/frontends/qt/GuiMathMatrix.cpp:33 src/frontends/qt/GuiPrefs.cpp:2327
+#: src/frontends/qt/GuiPrefs.cpp:2350
 msgid "None"
 msgstr "няма"
 
@@ -647,17 +639,17 @@ msgstr "&Рамка:"
 # src/frontends/kde/dlg/paraextradlgdata.C:142
 #: src/frontends/qt/ui/BoxUi.ui:204 src/frontends/qt/ui/BoxUi.ui:234
 #: src/frontends/qt/ui/TabularUi.ui:213 src/frontends/qt/ui/TabularUi.ui:404
-#: lib/ui/stdcontext.inc:462 src/frontends/qt/GuiMathMatrix.cpp:54
+#: lib/ui/stdcontext.inc:482 src/frontends/qt/GuiMathMatrix.cpp:54
 msgid "Top"
 msgstr "отгоре"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:155
 #: src/frontends/qt/ui/BoxUi.ui:209 src/frontends/qt/ui/BoxUi.ui:239
 #: src/frontends/qt/ui/TabularUi.ui:218 src/frontends/qt/ui/TabularUi.ui:409
-#: lib/ui/stdcontext.inc:463 src/frontends/qt/GuiMathMatrix.cpp:55
-#: src/frontends/qt/GuiTabular.cpp:250
+#: lib/ui/stdcontext.inc:483 src/frontends/qt/GuiMathMatrix.cpp:55
+#: src/frontends/qt/GuiTabular.cpp:256
 msgid "Middle"
-msgstr "центриране"
+msgstr "център"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:168
 #: src/frontends/qt/ui/BoxUi.ui:214 src/frontends/qt/ui/BoxUi.ui:244
@@ -677,7 +669,7 @@ msgstr "центриране"
 #: lib/layouts/g-brief2.layout:593 lib/layouts/g-brief2.layout:613
 #: lib/layouts/g-brief2.layout:634 lib/layouts/g-brief2.layout:654
 #: lib/layouts/g-brief2.layout:674 lib/layouts/g-brief2.layout:694
-#: lib/layouts/g-brief2.layout:714 lib/ui/stdcontext.inc:464
+#: lib/layouts/g-brief2.layout:714 lib/ui/stdcontext.inc:484
 #: src/frontends/qt/GuiMathMatrix.cpp:56
 msgid "Bottom"
 msgstr "отдолу"
@@ -691,35 +683,35 @@ msgstr "запълване"
 # src/frontends/kde/dlg/parageneraldlgdata.C:120
 #: src/frontends/qt/ui/BoxUi.ui:265 src/frontends/qt/ui/ListingsUi.ui:110
 #: src/frontends/qt/ui/TabularUi.ui:344 src/frontends/qt/ui/TabularUi.ui:1553
-#: src/frontends/qt/ui/WrapUi.ui:47 src/frontends/qt/GuiDocument.cpp:1542
-#: src/frontends/qt/GuiParagraph.cpp:115 src/frontends/qt/GuiTabular.cpp:1036
+#: src/frontends/qt/ui/WrapUi.ui:47 src/frontends/qt/GuiDocument.cpp:1554
+#: src/frontends/qt/GuiParagraph.cpp:115 src/frontends/qt/GuiTabular.cpp:1042
 msgid "Left"
 msgstr "ляво"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:107
 #: src/frontends/qt/ui/BoxUi.ui:270 src/frontends/qt/ui/TabularUi.ui:349
 #: src/frontends/qt/GuiExternal.cpp:78 src/frontends/qt/GuiGraphics.cpp:73
-#: src/frontends/qt/GuiParagraph.cpp:117 src/frontends/qt/GuiTabular.cpp:1037
+#: src/frontends/qt/GuiParagraph.cpp:117 src/frontends/qt/GuiTabular.cpp:1043
 msgid "Center"
-msgstr "центриране"
+msgstr "център"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:133
 #: src/frontends/qt/ui/BoxUi.ui:275 src/frontends/qt/ui/ListingsUi.ui:115
 #: src/frontends/qt/ui/TabularUi.ui:354 src/frontends/qt/ui/WrapUi.ui:52
-#: src/frontends/qt/GuiDocument.cpp:1544 src/frontends/qt/GuiParagraph.cpp:116
-#: src/frontends/qt/GuiTabular.cpp:1038
+#: src/frontends/qt/GuiDocument.cpp:1556 src/frontends/qt/GuiParagraph.cpp:116
+#: src/frontends/qt/GuiTabular.cpp:1044
 msgid "Right"
 msgstr "дясно"
 
 # src/ext_l10n.h:219
 #: src/frontends/qt/ui/BoxUi.ui:299 src/frontends/qt/ui/CharacterUi.ui:145
 msgid "Decoration"
-msgstr "Украса"
+msgstr "Мат. знаци"
 
 # src/ext_l10n.h:219
 #: src/frontends/qt/ui/BoxUi.ui:308
 msgid "Decoration box types"
-msgstr "Видове украса на рамките"
+msgstr "Знаци за мат. изрази"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
 #: src/frontends/qt/ui/BoxUi.ui:318
@@ -743,7 +735,7 @@ msgstr "Отстояние "
 # src/ext_l10n.h:219
 #: src/frontends/qt/ui/BoxUi.ui:358
 msgid "&Decoration:"
-msgstr "&Украса"
+msgstr "&Форма"
 
 # src/frontends/xforms/form_document.C:262
 #: src/frontends/qt/ui/BoxUi.ui:368
@@ -785,9 +777,8 @@ msgstr "Изберете подходящото разклонение"
 # src/frontends/xforms/FormPreferences.C:226
 # src/frontends/xforms/FormPreferences.C:255
 #: src/frontends/qt/ui/BranchUi.ui:37
-#, fuzzy
 msgid "Inverted"
-msgstr "Конвертори"
+msgstr "обърнато"
 
 #: src/frontends/qt/ui/BranchesUi.ui:35
 msgid ""
@@ -814,7 +805,7 @@ msgstr "Изтриване на избраното разклонение."
 
 # src/frontends/kde/dlg/paradlgdata.C:82
 #: src/frontends/qt/ui/BranchesUi.ui:74 src/frontends/qt/ui/IndicesUi.ui:165
-#: src/Buffer.cpp:4722 src/Buffer.cpp:4735
+#: src/Buffer.cpp:4733 src/Buffer.cpp:4746
 msgid "&Remove"
 msgstr "&Премахване"
 
@@ -871,14 +862,13 @@ msgstr "&Ново"
 
 #: src/frontends/qt/ui/BranchesUi.ui:169
 msgid "Reset branch color to default (standard background)"
-msgstr ""
+msgstr "Задавене цвят на разклонението по подразбиране (стандартен фон)"
 
 # src/frontends/xforms/form_preferences.C:600
 # src/frontends/xforms/form_preferences.C:687
 #: src/frontends/qt/ui/BranchesUi.ui:172
-#, fuzzy
 msgid "R&eset Color"
-msgstr "Презареждане"
+msgstr "&Цветове по подразбиране"
 
 # src/frontends/gnome/FormCitation.C:560
 #: src/frontends/qt/ui/BranchesUnknownUi.ui:25
@@ -905,18 +895,18 @@ msgstr "Добавяне на всички"
 # src/frontends/kde/dlg/printdlgdata.C:133
 # src/frontends/kde/dlg/tabcreatedlgdata.C:60 src/frontends/kde/indexdlg.C:65
 # src/frontends/kde/refdlg.C:92 src/frontends/kde/urldlg.C:58
-#: src/frontends/qt/ui/BranchesUnknownUi.ui:58 src/Buffer.cpp:1457
-#: src/Buffer.cpp:4696 src/Buffer.cpp:4790 src/LyXVC.cpp:114 src/LyXVC.cpp:310
+#: src/frontends/qt/ui/BranchesUnknownUi.ui:58 src/Buffer.cpp:1458
+#: src/Buffer.cpp:4707 src/Buffer.cpp:4817 src/LyXVC.cpp:114 src/LyXVC.cpp:310
 #: src/buffer_funcs.cpp:56 src/frontends/qt/GuiBranches.cpp:226
-#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiDocument.cpp:2834
-#: src/frontends/qt/GuiParagraph.cpp:177 src/frontends/qt/GuiPrefs.cpp:3365
-#: src/frontends/qt/GuiView.cpp:2683 src/frontends/qt/GuiView.cpp:2915
-#: src/frontends/qt/GuiView.cpp:2939 src/frontends/qt/GuiView.cpp:2953
-#: src/frontends/qt/GuiView.cpp:3055 src/frontends/qt/GuiView.cpp:3100
-#: src/frontends/qt/GuiView.cpp:3155 src/frontends/qt/GuiView.cpp:3389
-#: src/frontends/qt/GuiView.cpp:3403 src/frontends/qt/GuiView.cpp:3505
-#: src/frontends/qt/GuiView.cpp:3530 src/frontends/qt/GuiView.cpp:4234
-#: src/frontends/qt/GuiView.cpp:4241 src/insets/InsetBibtex.cpp:153
+#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiDocument.cpp:2852
+#: src/frontends/qt/GuiParagraph.cpp:177 src/frontends/qt/GuiPrefs.cpp:3414
+#: src/frontends/qt/GuiView.cpp:2875 src/frontends/qt/GuiView.cpp:3107
+#: src/frontends/qt/GuiView.cpp:3131 src/frontends/qt/GuiView.cpp:3145
+#: src/frontends/qt/GuiView.cpp:3247 src/frontends/qt/GuiView.cpp:3292
+#: src/frontends/qt/GuiView.cpp:3347 src/frontends/qt/GuiView.cpp:3581
+#: src/frontends/qt/GuiView.cpp:3595 src/frontends/qt/GuiView.cpp:3697
+#: src/frontends/qt/GuiView.cpp:3722 src/frontends/qt/GuiView.cpp:4426
+#: src/frontends/qt/GuiView.cpp:4433 src/insets/InsetBibtex.cpp:153
 msgid "&Cancel"
 msgstr "&Отказване"
 
@@ -932,7 +922,7 @@ msgstr "&Неопределени разклонения:"
 
 # src/insets/insetbib.C:69 src/insets/insetbib.C:70 src/insets/insetbib.C:210
 # src/insets/insetbib.C:211
-#: src/frontends/qt/ui/BulletsUi.ui:17 src/frontends/qt/ui/PDFSupportUi.ui:421
+#: src/frontends/qt/ui/BulletsUi.ui:17 src/frontends/qt/ui/PDFSupportUi.ui:406
 msgid "&Level:"
 msgstr "&Ниво:"
 
@@ -962,20 +952,20 @@ msgstr "&Размер:"
 #: src/frontends/qt/GuiCharacter.cpp:85 src/frontends/qt/GuiCharacter.cpp:98
 #: src/frontends/qt/GuiCharacter.cpp:136 src/frontends/qt/GuiCharacter.cpp:147
 #: src/frontends/qt/GuiCharacter.cpp:190 src/frontends/qt/GuiCharacter.cpp:241
-#: src/frontends/qt/GuiDocument.cpp:120 src/frontends/qt/GuiDocument.cpp:858
-#: src/frontends/qt/GuiDocument.cpp:878 src/frontends/qt/GuiDocument.cpp:1048
-#: src/frontends/qt/GuiDocument.cpp:1133 src/frontends/qt/GuiDocument.cpp:1179
-#: src/frontends/qt/GuiDocument.cpp:1190 src/frontends/qt/GuiDocument.cpp:1418
-#: src/frontends/qt/GuiDocument.cpp:1536 src/frontends/qt/GuiDocument.cpp:1543
-#: src/frontends/qt/GuiDocument.cpp:2576 src/frontends/qt/GuiDocument.cpp:2663
-#: src/frontends/qt/GuiDocument.cpp:2664 src/frontends/qt/GuiDocument.cpp:2665
-#: src/frontends/qt/GuiDocument.cpp:2685 src/frontends/qt/GuiDocument.cpp:2692
-#: src/frontends/qt/GuiDocument.cpp:2699 src/frontends/qt/GuiDocument.cpp:2789
-#: src/frontends/qt/GuiDocument.cpp:3398 src/frontends/qt/GuiDocument.cpp:4888
+#: src/frontends/qt/GuiDocument.cpp:120 src/frontends/qt/GuiDocument.cpp:866
+#: src/frontends/qt/GuiDocument.cpp:886 src/frontends/qt/GuiDocument.cpp:1058
+#: src/frontends/qt/GuiDocument.cpp:1143 src/frontends/qt/GuiDocument.cpp:1189
+#: src/frontends/qt/GuiDocument.cpp:1200 src/frontends/qt/GuiDocument.cpp:1430
+#: src/frontends/qt/GuiDocument.cpp:1548 src/frontends/qt/GuiDocument.cpp:1555
+#: src/frontends/qt/GuiDocument.cpp:2590 src/frontends/qt/GuiDocument.cpp:2677
+#: src/frontends/qt/GuiDocument.cpp:2678 src/frontends/qt/GuiDocument.cpp:2679
+#: src/frontends/qt/GuiDocument.cpp:2703 src/frontends/qt/GuiDocument.cpp:2710
+#: src/frontends/qt/GuiDocument.cpp:2717 src/frontends/qt/GuiDocument.cpp:2807
+#: src/frontends/qt/GuiDocument.cpp:3413 src/frontends/qt/GuiDocument.cpp:4908
 #: src/frontends/qt/GuiExternal.cpp:76 src/frontends/qt/GuiGraphics.cpp:71
-#: src/frontends/qt/GuiIndices.cpp:58 src/frontends/qt/GuiListings.cpp:156
-#: src/frontends/qt/GuiListings.cpp:163 src/frontends/qt/GuiPrefs.cpp:2437
-#: src/frontends/qt/GuiPrefs.cpp:2583 src/frontends/qt/GuiPrintNomencl.cpp:47
+#: src/frontends/qt/GuiIndices.cpp:58 src/frontends/qt/GuiListings.cpp:160
+#: src/frontends/qt/GuiListings.cpp:167 src/frontends/qt/GuiPrefs.cpp:2483
+#: src/frontends/qt/GuiPrefs.cpp:2629 src/frontends/qt/GuiPrintNomencl.cpp:47
 #: src/frontends/qt/GuiTabularCreate.cpp:107
 #: src/frontends/qt/GuiViewSource.cpp:341
 msgid "Default"
@@ -983,43 +973,43 @@ msgstr "по подразбиране"
 
 # src/lyxfont.C:56
 #: src/frontends/qt/ui/BulletsUi.ui:142 src/FontInfo.cpp:55
-#: src/frontends/qt/GuiCharacter.cpp:65 src/frontends/qt/GuiListings.cpp:156
+#: src/frontends/qt/GuiCharacter.cpp:65 src/frontends/qt/GuiListings.cpp:160
 msgid "Tiny"
 msgstr "Дребен"
 
 # src/lyxfont.C:56
 #: src/frontends/qt/ui/BulletsUi.ui:147 src/FontInfo.cpp:55
-#: src/frontends/qt/GuiCharacter.cpp:66 src/frontends/qt/GuiListings.cpp:156
+#: src/frontends/qt/GuiCharacter.cpp:66 src/frontends/qt/GuiListings.cpp:160
 msgid "Smallest"
 msgstr "Най-малък"
 
 # src/lyxfont.C:56
 #: src/frontends/qt/ui/BulletsUi.ui:152 src/FontInfo.cpp:55
-#: src/frontends/qt/GuiCharacter.cpp:67 src/frontends/qt/GuiListings.cpp:156
+#: src/frontends/qt/GuiCharacter.cpp:67 src/frontends/qt/GuiListings.cpp:160
 msgid "Smaller"
 msgstr "По-малък"
 
 # src/lyxfont.C:56
 #: src/frontends/qt/ui/BulletsUi.ui:157 src/FontInfo.cpp:55
-#: src/frontends/qt/GuiCharacter.cpp:68 src/frontends/qt/GuiListings.cpp:156
+#: src/frontends/qt/GuiCharacter.cpp:68 src/frontends/qt/GuiListings.cpp:160
 msgid "Small"
 msgstr "Малък"
 
 # src/frontends/kde/paraextradlg.C:25 src/lyxfont.C:56
 #: src/frontends/qt/ui/BulletsUi.ui:162 src/FontInfo.cpp:55
-#: src/frontends/qt/GuiCharacter.cpp:69 src/frontends/qt/GuiListings.cpp:156
+#: src/frontends/qt/GuiCharacter.cpp:69 src/frontends/qt/GuiListings.cpp:160
 msgid "Normal"
 msgstr "Нормален"
 
 # src/lyxfont.C:56
 #: src/frontends/qt/ui/BulletsUi.ui:167 src/FontInfo.cpp:55
-#: src/frontends/qt/GuiCharacter.cpp:70 src/frontends/qt/GuiListings.cpp:157
+#: src/frontends/qt/GuiCharacter.cpp:70 src/frontends/qt/GuiListings.cpp:161
 msgid "Large"
 msgstr "Голям"
 
 # src/lyxfont.C:57
 #: src/frontends/qt/ui/BulletsUi.ui:172 src/FontInfo.cpp:56
-#: src/frontends/qt/GuiCharacter.cpp:71 src/frontends/qt/GuiListings.cpp:157
+#: src/frontends/qt/GuiCharacter.cpp:71 src/frontends/qt/GuiListings.cpp:161
 msgid "Larger"
 msgstr "По-голям"
 
@@ -1042,35 +1032,30 @@ msgid "Huger"
 msgstr "Грамаден"
 
 #: src/frontends/qt/ui/ChangeTrackingUi.ui:20
-#, fuzzy
 msgid "If checked, additions and deletions will be tracked in the document"
 msgstr ""
-"Само ако е отметнато бележките и коментарите се проверяват за правописни "
-"грешки"
+"Ако е отметнато процеса на добавяне и изтриване се проследява в документа"
 
 # src/ext_l10n.h:31
 #: src/frontends/qt/ui/ChangeTrackingUi.ui:23
-#, fuzzy
 msgid "&Track changes"
-msgstr "Проследяване на промените"
+msgstr "&Проследяване на промените"
 
 #: src/frontends/qt/ui/ChangeTrackingUi.ui:30
 msgid "If checked, changes will be shown in the PDF/DVI/PS output"
-msgstr ""
+msgstr "Ако е отметнато промените се показват в крайния документ (PDF/DVI/PS)"
 
 #: src/frontends/qt/ui/ChangeTrackingUi.ui:33
-#, fuzzy
 msgid "&Show changes in output"
-msgstr "Показване на промените в крайния документ"
+msgstr "П&оказване на промените в крайния документ"
 
 #: src/frontends/qt/ui/ChangeTrackingUi.ui:40
 msgid "Use change bars in addition to change tracking markup"
-msgstr ""
+msgstr "Използване на вертикални черти в допълнение към открояване на промените"
 
 #: src/frontends/qt/ui/ChangeTrackingUi.ui:43
-#, fuzzy
 msgid "Use change &bars in output"
-msgstr "Показване на промените в крайния документ"
+msgstr "Използване на черти в крайния документ"
 
 # src/LyXAction.C:263
 #: src/frontends/qt/ui/ChangesUi.ui:38
@@ -1183,15 +1168,14 @@ msgid "Strike-through text"
 msgstr "Зачертаване (задраскване) на текса"
 
 # src/frontends/xforms/FormPreferences.C:223
-#: src/frontends/qt/ui/CharacterUi.ui:254 src/frontends/qt/GuiPrefs.cpp:211
+#: src/frontends/qt/ui/CharacterUi.ui:254 src/frontends/qt/GuiPrefs.cpp:215
 msgid "Language Settings"
 msgstr "Езикови настройки"
 
 # диалогов прозорец
 # src/layout_forms.C:64
 #: src/frontends/qt/ui/CharacterUi.ui:265 src/frontends/qt/ui/LanguageUi.ui:22
-#: src/frontends/qt/ui/LyXFilesUi.ui:94
-#: src/frontends/qt/ui/SpellcheckerUi.ui:57
+#: src/frontends/qt/ui/SpellcheckerUi.ui:28
 #: src/frontends/qt/ui/ThesaurusUi.ui:23
 msgid "&Language:"
 msgstr "&Език:"
@@ -1202,8 +1186,8 @@ msgstr "&Език:"
 #: lib/layouts/bicaption.module:16 lib/layouts/europasscv.layout:440
 #: lib/layouts/europasscv.layout:475 lib/layouts/europasscv.layout:482
 #: lib/layouts/europecv.layout:321 lib/layouts/europecv.layout:327
-#: lib/layouts/moderncv.layout:580 src/frontends/qt/GuiDocument.cpp:1767
-#: src/frontends/qt/GuiPrefs.cpp:2388 src/frontends/qt/Menus.cpp:920
+#: lib/layouts/moderncv.layout:580 src/frontends/qt/GuiDocument.cpp:1781
+#: src/frontends/qt/GuiPrefs.cpp:2430 src/frontends/qt/Menus.cpp:938
 msgid "Language"
 msgstr "eзик"
 
@@ -1300,17 +1284,17 @@ msgstr ""
 # src/frontends/gnome/FormCitation.C:560
 #: src/frontends/qt/ui/CitationUi.ui:188
 msgid "Move the selected citation up (Ctrl-Up)"
-msgstr "Преместване избрания файл нагоре (Ctrl-горна стрелка)"
+msgstr "Преместване избраната препратка нагоре (Ctrl-горна стрелка)"
 
 # src/frontends/gnome/FormCitation.C:560
 #: src/frontends/qt/ui/CitationUi.ui:211
 msgid "Move the selected citation down (Ctrl-Down)"
-msgstr "Преместване на избрания файл надолу (Ctrl-долна стрелка)"
+msgstr "Преместване на избраната препратка надолу (Ctrl-долна стрелка)"
 
 # src/frontends/xforms/FormCitation.C:37
 #: src/frontends/qt/ui/CitationUi.ui:232
 msgid "Selected &Citations:"
-msgstr "Избрани цитирания:"
+msgstr "Избрани препратки:"
 
 # src/frontends/xforms/FormPreferences.C:252
 #: src/frontends/qt/ui/CitationUi.ui:276
@@ -1319,7 +1303,7 @@ msgstr "Форматиране"
 
 #: src/frontends/qt/ui/CitationUi.ui:289
 msgid "Citation st&yle:"
-msgstr "&Стил цитиране:"
+msgstr "&Стил препратки:"
 
 #: src/frontends/qt/ui/CitationUi.ui:299 src/frontends/qt/GuiCitation.cpp:303
 msgid "Text befo&re:"
@@ -1417,7 +1401,7 @@ msgstr "Цветни бележки:"
 
 # src/LyXAction.C:263
 #: src/frontends/qt/ui/ColorUi.ui:118 src/frontends/qt/ui/ColorUi.ui:256
-#: src/frontends/qt/GuiDocument.cpp:2205 src/frontends/qt/GuiDocument.cpp:2235
+#: src/frontends/qt/GuiDocument.cpp:2219 src/frontends/qt/GuiDocument.cpp:2249
 msgid "&Change..."
 msgstr "&Избор на цвят"
 
@@ -1443,9 +1427,8 @@ msgstr "Сравняване на ревизии"
 
 # src/ext_l10n.h:323
 #: src/frontends/qt/ui/CompareHistoryUi.ui:34
-#, fuzzy
 msgid "Revisions ba&ck"
-msgstr "Въпрос"
+msgstr "&Ревизии назад"
 
 # src/ext_l10n.h:24
 #: src/frontends/qt/ui/CompareHistoryUi.ui:87
@@ -1454,13 +1437,12 @@ msgstr "Между ревизии"
 
 #: src/frontends/qt/ui/CompareHistoryUi.ui:100
 msgid "Old:"
-msgstr ""
+msgstr "Първи:"
 
 # src/LColor.C:63
 #: src/frontends/qt/ui/CompareHistoryUi.ui:135
-#, fuzzy
 msgid "New:"
-msgstr "текст"
+msgstr "Втори:"
 
 # src/frontends/xforms/FormDocument.C:273 src/insets/figinset.C:1975
 # src/insets/insetexternal.C:143 src/lyxfunc.C:3105 src/lyxfunc.C:3181
@@ -1470,9 +1452,8 @@ msgid "Old Documen&t:"
 msgstr "&Първи документ:"
 
 #: src/frontends/qt/ui/CompareUi.ui:51
-#, fuzzy
 msgid "Specify the original version of the document here (comparison source)"
-msgstr "Посочете първоначалната версия на документа (източник)"
+msgstr "Посочете първоначалната версия на документа (източника)"
 
 # src/frontends/xforms/form_preferences.C:843
 # src/frontends/xforms/form_preferences.C:853
@@ -1492,9 +1473,8 @@ msgid "&New Document:"
 msgstr "&Втори документ:"
 
 #: src/frontends/qt/ui/CompareUi.ui:87
-#, fuzzy
 msgid "Specify the modified version of the document here (comparison target)"
-msgstr "Посочете променената версия на документа (цел на сравнението)"
+msgstr "Посочете променената версия на документа (целта на сравнението)"
 
 # src/frontends/xforms/form_preferences.C:843
 # src/frontends/xforms/form_preferences.C:853
@@ -1517,7 +1497,7 @@ msgstr "Избиране на документа от които да се вз
 
 # src/insets/insetinclude.C:117 src/lyx_cb.C:197 src/lyxfunc.C:3054
 # src/lyxfunc.C:3156 src/lyxfunc.C:3212 src/lyxfunc.C:3288
-#: src/frontends/qt/ui/CompareUi.ui:120 src/frontends/qt/GuiDocument.cpp:781
+#: src/frontends/qt/ui/CompareUi.ui:120 src/frontends/qt/GuiDocument.cpp:789
 msgid "Document Settings"
 msgstr "Настройки на документа"
 
@@ -1547,39 +1527,37 @@ msgstr "Активиране проследяване на промените в
 
 # src/form1.C:237
 #: src/frontends/qt/ui/CounterUi.ui:22
-#, fuzzy
 msgid "C&ounter:"
-msgstr "В&ъншно:"
+msgstr "&Брояч:"
 
 # src/lyxfunc.C:3159
 #: src/frontends/qt/ui/CounterUi.ui:38
-#, fuzzy
 msgid "Select counter to modify"
-msgstr "Изберане на документ за отваряне"
+msgstr "Изберане на брояч за настройка"
 
 # src/ext_l10n.h:344
 #: src/frontends/qt/ui/CounterUi.ui:45
-#, fuzzy
 msgid "&Action:"
-msgstr "Раздел"
+msgstr "&Действие:"
 
 #: src/frontends/qt/ui/CounterUi.ui:63
 msgid "Select the action to perform on selected counter"
-msgstr ""
+msgstr "Избиране на действие, което да се приложи към избрания брояч"
 
 #: src/frontends/qt/ui/CounterUi.ui:79
 msgid ""
 "If checked, modification affects the counter only in the LyX workarea, not "
 "in the output"
 msgstr ""
+"Ако е отметнато, промените засягат брояча само в работната среда на LyX, но "
+"не и в крайния документ"
 
 #: src/frontends/qt/ui/CounterUi.ui:85
-#, fuzzy
 msgid "&Workarea only"
-msgstr "Събития от работната среда"
+msgstr "&Само в работната среда"
 
 # src/frontends/xforms/form_toc.C:40
-#: src/frontends/qt/ui/DelimiterUi.ui:122 src/frontends/qt/GuiDelimiter.cpp:375
+#: src/frontends/qt/ui/DelimiterUi.ui:122 src/frontends/qt/GuiDelimiter.cpp:376
 msgid "TeX Code: "
 msgstr "TeX код:"
 
@@ -1616,9 +1594,8 @@ msgid "Use Class Defaults"
 msgstr "Възстановяване по подразбиране"
 
 #: src/frontends/qt/ui/DocumentUi.ui:109
-#, fuzzy
 msgid "Save settings as defaults for new documents"
-msgstr "Запазване на настройките в LyX като подразбиращи се за докмента"
+msgstr "Запазване на настройките като подразбиращи се за нови докменти"
 
 # src/ext_l10n.h:130
 #: src/frontends/qt/ui/DocumentUi.ui:112
@@ -1627,7 +1604,7 @@ msgstr "Запазване по подразбиране"
 
 # src/frontends/xforms/FormGraphics.C:36
 # src/frontends/xforms/FormGraphics.C:359
-#: src/frontends/qt/ui/ERTUi.ui:38 src/frontends/qt/GuiPrefs.cpp:1297
+#: src/frontends/qt/ui/ERTUi.ui:38 src/frontends/qt/GuiPrefs.cpp:1323
 msgid "Display"
 msgstr "Изглед"
 
@@ -1647,16 +1624,15 @@ msgstr "Показва целия изходен код на LaTex"
 
 # src/LyXAction.C:144
 #: src/frontends/qt/ui/ERTUi.ui:72
-#, fuzzy
 msgid "[[is]]O&pen"
-msgstr "&Разширен"
+msgstr "&Отваряне"
 
 #: src/frontends/qt/ui/ErrorListUi.ui:38
 msgid ""
 "Selecting an error will show the error message in the panel below and the "
 "cursor will jump to the location in the document where the error occurred."
 msgstr ""
-"Посочване на ред с грешка ще покаже описанието и в долния панел, а курсура в "
+"Избиране на ред с грешка ще покаже описанието и в долния панел, а курсура в "
 "документа ще се позиционира на мястото където е настъпила грешката."
 
 # src/importer.C:58
@@ -1693,7 +1669,7 @@ msgstr "Показване на резултата"
 # src/frontends/kde/dlg/printdlgdata.C:246
 #: src/frontends/qt/ui/ExternalUi.ui:45
 msgid "F&ile"
-msgstr "(&F)Файл"
+msgstr "Файл"
 
 # src/form1.C:245
 #: src/frontends/qt/ui/ExternalUi.ui:66 src/frontends/qt/ui/ExternalUi.ui:73
@@ -1792,9 +1768,8 @@ msgstr "Задава центъра на въртене"
 
 # src/ext_l10n.h:191
 #: src/frontends/qt/ui/ExternalUi.ui:426
-#, fuzzy
 msgid "Ori&gin:"
-msgstr "Заглавие"
+msgstr "Начало:"
 
 # src/form1.C:133
 #: src/frontends/qt/ui/ExternalUi.ui:446
@@ -1807,18 +1782,18 @@ msgid "Scale"
 msgstr "Мащаб"
 
 #: src/frontends/qt/ui/ExternalUi.ui:494 src/frontends/qt/ui/GraphicsUi.ui:153
-#: src/frontends/qt/GuiGraphics.cpp:476
+#: src/frontends/qt/GuiGraphics.cpp:482
 msgid "Height of image in output"
 msgstr "Крайна височина на изображението"
 
 #: src/frontends/qt/ui/ExternalUi.ui:504 src/frontends/qt/ui/GraphicsUi.ui:121
-#: src/frontends/qt/GuiGraphics.cpp:475
+#: src/frontends/qt/GuiGraphics.cpp:481
 msgid "Width of image in output"
 msgstr "Крайна ширина на изображението"
 
 #: src/frontends/qt/ui/ExternalUi.ui:527
 msgid "Maintain aspect ratio with largest dimension"
-msgstr ""
+msgstr "Запазване на съотношението при най-голям размер"
 
 #: src/frontends/qt/ui/ExternalUi.ui:530 src/frontends/qt/ui/GraphicsUi.ui:199
 msgid "&Maintain aspect ratio"
@@ -1831,11 +1806,11 @@ msgstr "Изрязване"
 
 #: src/frontends/qt/ui/ExternalUi.ui:577
 msgid "Clip to bounding box values"
-msgstr ""
+msgstr "Свиване до размера на ограничителната рамка"
 
 #: src/frontends/qt/ui/ExternalUi.ui:580
 msgid "Clip to &bounding box"
-msgstr ""
+msgstr "Свиване до размера на рамката"
 
 # src/ext_l10n.h:63
 #: src/frontends/qt/ui/ExternalUi.ui:587 src/frontends/qt/ui/GraphicsUi.ui:390
@@ -1854,7 +1829,7 @@ msgstr "&Горен десен ъгъл:"
 
 #: src/frontends/qt/ui/ExternalUi.ui:617
 msgid "Get bounding box from the (EPS) file"
-msgstr ""
+msgstr "Взимане на очертаващата рамка от EPS файла"
 
 # src/frontends/xforms/form_preferences.C:923
 #: src/frontends/qt/ui/ExternalUi.ui:620 src/frontends/qt/ui/GraphicsUi.ui:485
@@ -1867,9 +1842,8 @@ msgstr "y"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:151
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:14
-#, fuzzy
 msgid "TabWidget"
-msgstr "Ширина на етикет"
+msgstr "Подпрозорец"
 
 # src/frontends/gnome/FormCitation.C:453
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:21
@@ -1878,9 +1852,8 @@ msgstr "Търсене"
 
 # src/frontends/gnome/FormCitation.C:453
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:55
-#, fuzzy
 msgid "Search fo&r:"
-msgstr "Грешка при търсене"
+msgstr "Търсене за:"
 
 # src/form1.C:290
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:92
@@ -1901,10 +1874,9 @@ msgstr "Ограничава търсенето само до цели думи"
 
 # src/ext_l10n.h:263
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:153
-#: src/frontends/qt/ui/SearchUi.ui:217 src/frontends/qt/GuiSearch.cpp:101
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:241 src/frontends/qt/GuiSearch.cpp:102
 msgid "Wh&ole words"
-msgstr "Цели думи"
+msgstr "&Цели думи"
 
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:160
 msgid "Perform a case-sensitive search"
@@ -1917,28 +1889,24 @@ msgstr "&Различ. на малки и големи букви"
 
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:205
 #: src/frontends/qt/FindAndReplace.cpp:648
-#, fuzzy
 msgid "Find next occurrence (Enter, backwards: Shift+Enter)"
-msgstr "Търсене на следващото съвпадение - клавиша „Нов ред“"
+msgstr "Търсене на следващо съвпадение - клавиша „Нов ред“, назад: „Изместване“ + „Нов ред“"
 
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:208
-#: src/frontends/qt/ui/SearchUi.ui:172 src/frontends/qt/FindAndReplace.cpp:647
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:190 src/frontends/qt/FindAndReplace.cpp:647
 msgid "Find &>"
-msgstr "Следващо търсене"
+msgstr "Търсене &>"
 
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:221
 #: src/frontends/qt/FindAndReplace.cpp:650
-#, fuzzy
 msgid "Replace and find next occurrence (Enter, backwards: Shift+Enter)"
-msgstr "Търсене и замяна на следващото съвпадение - клавиша „Нов ред“"
+msgstr "Замяна и търсене на следващо съвпадение - клавиша „Нов ред“, назад: „Изместване“ + „Нов ред“"
 
 # src/sp_form.C:86
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:224
 #: src/frontends/qt/FindAndReplace.cpp:649
-#, fuzzy
 msgid "Rep&lace >"
-msgstr "Замяна"
+msgstr "Замяна >"
 
 # src/lyx_cb.C:230
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:234
@@ -1947,15 +1915,14 @@ msgstr "Замяна на всички съвпадения наведнъж"
 
 # src/form1.C:314
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:237
-#: src/frontends/qt/ui/SearchUi.ui:50
+#: src/frontends/qt/ui/SearchUi.ui:68
 msgid "Replace &All"
 msgstr "Замяна на &всички"
 
 # src/ext_l10n.h:344
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:264
-#, fuzzy
 msgid "Settin&gs"
-msgstr "Настройки на програмата"
+msgstr "&Настройки"
 
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:279
 msgid "The scope to which the search horizon is restricted"
@@ -2022,7 +1989,6 @@ msgstr "В целия текст"
 
 # src/LColor.C:81
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:399
-#, fuzzy
 msgid "E&xpand macros"
 msgstr "Развиване на макросите"
 
@@ -2041,7 +2007,6 @@ msgstr "Запазване на първото съвпадение при за
 # src/frontends/xforms/FormPreferences.C:252
 #: src/frontends/qt/ui/FloatPlacementUi.ui:14
 #: src/frontends/qt/ui/OutputUi.ui:14 src/frontends/qt/ui/PDFSupportUi.ui:14
-#, fuzzy
 msgid "Form"
 msgstr "Формати"
 
@@ -2085,7 +2050,7 @@ msgstr "Центриране на съдържанието"
 #: src/frontends/qt/ui/FloatPlacementUi.ui:117
 #: src/frontends/qt/ui/ParagraphUi.ui:124 src/frontends/qt/ui/TabularUi.ui:1560
 msgid "&Center"
-msgstr "центриране"
+msgstr "център"
 
 #: src/frontends/qt/ui/FloatPlacementUi.ui:124
 msgid "Right-align float contents"
@@ -2159,7 +2124,6 @@ msgstr "&Пренебрегване правилата на LaTeX"
 
 # src/bufferview_funcs.C:267
 #: src/frontends/qt/ui/FontUi.ui:14
-#, fuzzy
 msgid "FontUi"
 msgstr "Шрифт:"
 
@@ -2185,7 +2149,7 @@ msgstr "&LaTeX кодиране:"
 
 #: src/frontends/qt/ui/FontUi.ui:101
 msgid "Specify the font encoding (e.g., T1)."
-msgstr ""
+msgstr "Посочване кодирането на шриф (напр. T1)."
 
 # src/frontends/xforms/form_preferences.C:105 src/lyxfont.C:42
 #: src/frontends/qt/ui/FontUi.ui:110
@@ -2197,6 +2161,8 @@ msgid ""
 "Select the roman (serif) typeface. To filter the list of fonts, just start "
 "typing while the list is expanded."
 msgstr ""
+"Избиране на шрифт със серифно (римско) начертаване. За филтриране на списъка "
+"започнете да пишете докато списъка се разширява."
 
 #: src/frontends/qt/ui/FontUi.ui:142
 msgid "Use a real small caps shape, if the font provides one"
@@ -2227,12 +2193,10 @@ msgstr "Опции:"
 
 #: src/frontends/qt/ui/FontUi.ui:194 src/frontends/qt/ui/FontUi.ui:302
 #: src/frontends/qt/ui/FontUi.ui:410
-#, fuzzy
 msgid ""
 "Here you can insert additional options (as provided by the font package)"
 msgstr ""
-"Тук можете да въведете допълнителни параметри за избрания библиографски "
-"пакет."
+"Тук можете да въведете допълнителни параметри предоставени от пакета за шрифт."
 
 # src/frontends/xforms/form_preferences.C:108
 #: src/frontends/qt/ui/FontUi.ui:205
@@ -2244,6 +2208,8 @@ msgid ""
 "Select the Sans Serif (grotesque) typeface. To filter the list of fonts, "
 "just start typing while the list is expanded."
 msgstr ""
+"Избиране на безсерифно (grotesque) начертаване. За филтриране на списъка от "
+"шрифтове започнете да пишете докато списъка се разширява."
 
 # src/frontends/xforms/form_tabular.C:453
 #: src/frontends/qt/ui/FontUi.ui:237
@@ -2258,9 +2224,8 @@ msgstr ""
 
 # src/lyxfunc.C:3128
 #: src/frontends/qt/ui/FontUi.ui:267
-#, fuzzy
 msgid "Use old st&yle figures"
-msgstr "Използване на цифри с различна височина"
+msgstr "Използване на цифри встар стил"
 
 # src/frontends/xforms/form_preferences.C:111 src/lyxfont.C:42
 #: src/frontends/qt/ui/FontUi.ui:313
@@ -2286,9 +2251,8 @@ msgstr ""
 
 # src/lyxfunc.C:3128
 #: src/frontends/qt/ui/FontUi.ui:375
-#, fuzzy
 msgid "Use old style &figures"
-msgstr "Използване на цифри с различна височина"
+msgstr "Използване на цифри в стар стил"
 
 # src/frontends/xforms/FormPreferences.C:261
 #: src/frontends/qt/ui/FontUi.ui:421
@@ -2298,7 +2262,7 @@ msgstr "За &математика:"
 # src/frontends/kde/printdlg.C:35
 #: src/frontends/qt/ui/FontUi.ui:431
 msgid "Select the math typeface"
-msgstr "Избор на шрифт за математически изрази"
+msgstr "Избор на начертаване за математически изрази"
 
 # src/frontends/gnome/FormCitation.C:527
 #: src/frontends/qt/ui/FontUi.ui:438
@@ -2345,7 +2309,7 @@ msgstr ""
 
 #: src/frontends/qt/ui/FontUi.ui:480
 msgid "Disallow l&ine breaks after dashes"
-msgstr "Забрана на нав ред след тирета (обикновено и дълго)"
+msgstr "Забрана на нав ред след тире (обикновено и дълго)"
 
 # src/frontends/xforms/FormGraphics.C:36
 # src/frontends/xforms/FormGraphics.C:359
@@ -2370,7 +2334,7 @@ msgstr ""
 "настройка."
 
 # src/form1.C:157 src/frontends/xforms/form_graphics.C:46
-#: src/frontends/qt/ui/GraphicsUi.ui:166 src/frontends/qt/GuiGraphics.cpp:474
+#: src/frontends/qt/ui/GraphicsUi.ui:166 src/frontends/qt/GuiGraphics.cpp:480
 msgid "Set &height:"
 msgstr "&Височина"
 
@@ -2389,7 +2353,7 @@ msgstr ""
 # src/form1.C:161 src/frontends/kde/dlg/paraextradlgdata.C:91
 # src/frontends/xforms/form_graphics.C:44
 # src/frontends/xforms/form_paragraph.C:219
-#: src/frontends/qt/ui/GraphicsUi.ui:186 src/frontends/qt/GuiGraphics.cpp:473
+#: src/frontends/qt/ui/GraphicsUi.ui:186 src/frontends/qt/GuiGraphics.cpp:479
 msgid "Set &width:"
 msgstr "&Ширина"
 
@@ -2481,10 +2445,11 @@ msgstr "Мащаб на екрана (%):"
 msgid ""
 "If LyX uses a dark theme, revert the colors of this graphics in the workarea"
 msgstr ""
+"Ако LyX използва тъмна тема, обръща цветовете при изобразяване на работната площ"
 
 #: src/frontends/qt/ui/GraphicsUi.ui:592
 msgid "Re&vert colors in dark mode"
-msgstr ""
+msgstr "Обръщане на цветовете в тъмен режим"
 
 # src/frontends/xforms/form_preferences.C:926
 #: src/frontends/qt/ui/GraphicsUi.ui:615 src/frontends/qt/ui/GraphicsUi.ui:634
@@ -2498,46 +2463,43 @@ msgstr "LaTeX &опции:"
 
 #: src/frontends/qt/ui/GraphicsUi.ui:641
 msgid "Assign the graphic to a group of graphics that share the same settings"
-msgstr ""
+msgstr "Присъединяване на изображение към група с еднакви настройки "
 
 # src/frontends/xforms/FormGraphics.C:36
 # src/frontends/xforms/FormGraphics.C:359
 #: src/frontends/qt/ui/GraphicsUi.ui:644
-#, fuzzy
 msgid "Graphics Group"
-msgstr "Графика"
+msgstr "Графична група"
 
 #: src/frontends/qt/ui/GraphicsUi.ui:677
 msgid "Assigned &to group:"
-msgstr ""
+msgstr "Присъединяване към група: "
 
 #: src/frontends/qt/ui/GraphicsUi.ui:700
 msgid "Click to define a new graphics group."
-msgstr ""
+msgstr "Щракнете за да дефинирате нова графична група."
 
 #: src/frontends/qt/ui/GraphicsUi.ui:703
 msgid "O&pen new group..."
-msgstr ""
+msgstr "Отваряне на нова група..."
 
 #: src/frontends/qt/ui/GraphicsUi.ui:710
 msgid "Select an existing group for the current graphics."
-msgstr ""
+msgstr "Избиране на съществуваща група за текущото изображение."
 
 # src/LyXAction.C:321
 #: src/frontends/qt/ui/GraphicsUi.ui:723
-#, fuzzy
 msgid "Draft mode"
-msgstr "Матем. режим"
+msgstr "Режим проектиране"
 
 # src/LyXAction.C:321
 #: src/frontends/qt/ui/GraphicsUi.ui:726
-#, fuzzy
 msgid "&Draft mode"
-msgstr "Матем. режим"
+msgstr "Режим &проектиране"
 
 #: src/frontends/qt/ui/HSpaceUi.ui:28
 msgid "Select a fill pattern style for HFills"
-msgstr ""
+msgstr "Избиране на стил за запълване на шаблон HFills"
 
 #: src/frontends/qt/ui/HSpaceUi.ui:37
 msgid "..............."
@@ -2581,23 +2543,21 @@ msgstr "&Стойност:"
 #: src/frontends/qt/ui/HSpaceUi.ui:100 src/frontends/qt/ui/VSpaceUi.ui:62
 msgid "Custom value. Needs spacing type \"Custom\"."
 msgstr ""
-"За да можете да зададете стойност отместването трябва да е „потребителско“"
+"За да можете да зададете стойност отместването трябва да е „от потребителя“"
 
 # src/frontends/kde/dlg/printdlgdata.C:246
 #: src/frontends/qt/ui/HSpaceUi.ui:110
-#, fuzzy
 msgid "&Fill Pattern:"
-msgstr "(&F)Файл"
+msgstr "Попълване на шаблон"
 
 #: src/frontends/qt/ui/HSpaceUi.ui:123 src/frontends/qt/ui/VSpaceUi.ui:46
 msgid "&Protect:"
-msgstr "Защити"
+msgstr "&Защити:"
 
 # src/LyXAction.C:197 src/lyx_cb.C:878
-#: src/frontends/qt/ui/HSpaceUi.ui:133 src/frontends/qt/GuiHSpace.cpp:212
-#, fuzzy
+#: src/frontends/qt/ui/HSpaceUi.ui:133 src/frontends/qt/GuiHSpace.cpp:217
 msgid "Insert the spacing even after a line break"
-msgstr "Вмъкни фигура"
+msgstr "Вмъкване на интервал дори след нов ред."
 
 # src/ext_l10n.h:406 src/frontends/gnome/FormUrl.C:117
 # src/frontends/kde/urldlg.C:62 src/frontends/kde/urldlg.C:63
@@ -2605,8 +2565,8 @@ msgstr "Вмъкни фигура"
 #: lib/layouts/acmart.layout:694 lib/layouts/acmart.layout:712
 #: lib/layouts/amsdefs.inc:190 lib/layouts/maa-monthly.layout:165
 #: lib/layouts/maa-monthly.layout:169 lib/layouts/minimalistic.module:27
-#: lib/layouts/scrlttr2.layout:271 lib/layouts/stdinsets.inc:578
-#: lib/layouts/stdinsets.inc:581
+#: lib/layouts/scrlttr2.layout:271 lib/layouts/stdinsets.inc:579
+#: lib/layouts/stdinsets.inc:582
 msgid "URL"
 msgstr "URL"
 
@@ -2618,7 +2578,7 @@ msgstr "&Цел:"
 # src/frontends/kde/urldlg.C:64 src/frontends/kde/urldlg.C:65
 #: src/frontends/qt/ui/HyperlinkUi.ui:37 src/frontends/qt/ui/HyperlinkUi.ui:68
 msgid "Name associated with the URL"
-msgstr "Име за URL-а"
+msgstr "Име свързано с URL-а"
 
 # src/frontends/gnome/FormRef.C:301
 #: src/frontends/qt/ui/HyperlinkUi.ui:40 src/frontends/qt/ui/LyXFilesUi.ui:55
@@ -2631,6 +2591,8 @@ msgid ""
 "Pass content of the `Name' field literally to LaTeX. Check this if you want "
 "to enter LaTeX code."
 msgstr ""
+"Подава съдържанието на полето „име“ дословно към LaTeX. Изберете това ако "
+"желаете да въвеждате код на LaTeX."
 
 # src/lyxrc.C:1838
 #: src/frontends/qt/ui/HyperlinkUi.ui:106
@@ -2703,8 +2665,8 @@ msgstr "Редактиране на файла"
 
 # src/MenuBackend.C:444 src/ext_l10n.h:2 src/ext_l10n.h:5
 #: src/frontends/qt/ui/IncludeUi.ui:72 src/frontends/qt/ui/LocalLayoutUi.ui:77
-#: src/frontends/qt/ui/PreambleUi.ui:48 src/frontends/qt/GuiDocument.cpp:579
-#: src/frontends/qt/GuiDocument.cpp:751
+#: src/frontends/qt/ui/PreambleUi.ui:48 src/frontends/qt/GuiDocument.cpp:578
+#: src/frontends/qt/GuiDocument.cpp:759
 msgid "&Edit"
 msgstr "&Редактиране"
 
@@ -2713,6 +2675,8 @@ msgid ""
 "File name to include. (You can create a new file by entering the name of one "
 "that does not yet exist.)"
 msgstr ""
+"Име на файл за включване. Може да създадете нов файл като въведете име на файл, "
+"който все още не съществува."
 
 #: src/frontends/qt/ui/IncludeUi.ui:124
 msgid "Underline spaces in generated output"
@@ -2730,7 +2694,7 @@ msgstr "Показване на предварителния изглед на L
 # src/frontends/kde/dlg/printdlgdata.C:246
 #: src/frontends/qt/ui/IncludeUi.ui:143
 msgid "&Show preview"
-msgstr "&Предварителен изглед"
+msgstr "Предварителен &изглед"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
 #: src/frontends/qt/ui/IncludeUi.ui:171
@@ -2746,7 +2710,7 @@ msgstr "&Нодрис:"
 #: src/frontends/qt/ui/ListingsSettingsUi.ui:79
 #: src/frontends/qt/ui/ListingsUi.ui:507
 msgid "Check it to enter parameters that are not recognizable by LyX"
-msgstr ""
+msgstr "Отметка за въвеждане на параметри, които не се разпознават от LyX"
 
 #: src/frontends/qt/ui/IncludeUi.ui:282
 #: src/frontends/qt/ui/ListingsSettingsUi.ui:82
@@ -2789,8 +2753,8 @@ msgid "Index Generation"
 msgstr "Съставяне на указатели"
 
 # src/form1.C:129 src/sp_form.C:58
-#: src/frontends/qt/ui/IndicesUi.ui:54 src/frontends/qt/GuiPrefs.cpp:704
-#: src/frontends/qt/GuiPrefs.cpp:830
+#: src/frontends/qt/ui/IndicesUi.ui:54 src/frontends/qt/GuiPrefs.cpp:708
+#: src/frontends/qt/GuiPrefs.cpp:834
 msgid "&Options:"
 msgstr "&Опции:"
 
@@ -2878,19 +2842,17 @@ msgstr "Тук се въвежда точна дата в ISO формат: ГГ
 
 # src/ext_l10n.h:215
 #: src/frontends/qt/ui/InfoUi.ui:70
-#, fuzzy
 msgid "&Custom:"
 msgstr "&От потребителя:"
 
 # src/LyXAction.C:164
 #: src/frontends/qt/ui/InsetParamsUi.ui:17
-#, fuzzy
 msgid "Inset Parameter Configuration"
-msgstr "Вмъкни цитат"
+msgstr "Конфигурация на парамтри за добавки"
 
 #: src/frontends/qt/ui/InsetParamsUi.ui:47
 msgid "Update dialog when moving context"
-msgstr "Опресняване на диалога когато се сменя контекста"
+msgstr "Актуализиране на диалога когато се сменя контекста"
 
 #: src/frontends/qt/ui/InsetParamsUi.ui:50
 msgid "S&ynchronize Dialog"
@@ -2912,12 +2874,12 @@ msgstr "&Клас (жанр) документ"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:48
 msgid "Click to select a local document class definition file"
-msgstr "Избиране на локална дефиниция на клас документ от файл"
+msgstr "Избиране на дефиниция на клас документ от локален файл"
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1260
 #: src/frontends/qt/ui/LaTeXUi.ui:51
-msgid "&Local Layout..."
-msgstr "&Разглеждане"
+msgid "&Local Class..."
+msgstr "&Локален клас..."
 
 # src/form1.C:129 src/sp_form.C:58
 #: src/frontends/qt/ui/LaTeXUi.ui:61
@@ -2951,7 +2913,7 @@ msgstr "&От потребителя:"
 # src/frontends/xforms/FormGraphics.C:359
 #: src/frontends/qt/ui/LaTeXUi.ui:106
 msgid "&Graphics driver:"
-msgstr "&Графичен драйвер"
+msgstr "&Графична представяне: "
 
 #: src/frontends/qt/ui/LaTeXUi.ui:136
 msgid "Select if the current document is included to a master file"
@@ -2987,9 +2949,8 @@ msgstr "Вид кавички"
 
 # src/frontends/xforms/FormDocument.C:1101
 #: src/frontends/qt/ui/LanguageUi.ui:49
-#, fuzzy
 msgid "Select the default quotation marks style"
-msgstr "Избиране на гарнитурата на шрифта по подразбиране за документа"
+msgstr "Избиране на кавички за цитиране по подразбиране"
 
 #: src/frontends/qt/ui/LanguageUi.ui:59
 msgid ""
@@ -3007,27 +2968,25 @@ msgstr "Динамичен знак за кавички"
 
 # src/frontends/xforms/form_preferences.C:132
 #: src/frontends/qt/ui/LanguageUi.ui:89
-#, fuzzy
 msgid "&Encoding:"
 msgstr "&Кодиране:"
 
 #: src/frontends/qt/ui/LanguageUi.ui:102
 msgid "Select encoding of the generated LaTeX source (LaTeX input encoding)."
-msgstr ""
+msgstr "Избиране на кодиране за генерирания изходен код на LaTex."
 
 #: src/frontends/qt/ui/LanguageUi.ui:115
 msgid "Select Unicode encoding variant."
-msgstr ""
+msgstr "Избиране на вариант на уникод кодиране."
 
 #: src/frontends/qt/ui/LanguageUi.ui:125
 msgid "Specify whether to load the 'inputenc' package."
-msgstr ""
+msgstr "Посочване дали да се зарежда пакета „inputenc“."
 
 # src/bufferlist.C:113 src/bufferlist.C:189
 #: src/frontends/qt/ui/LanguageUi.ui:135
-#, fuzzy
 msgid "Select custom encoding."
-msgstr "Запазване на документа?"
+msgstr "избиране на кодиране от потребителя."
 
 # src/layout_forms.C:64
 #: src/frontends/qt/ui/LanguageUi.ui:142
@@ -3089,10 +3048,10 @@ msgstr "Пакет за открояване на синтаксиса:"
 
 # src/ext_l10n.h:274
 #: src/frontends/qt/ui/ListingsUi.ui:14 lib/layouts/numreport.inc:37
-#: lib/layouts/stdcounters.inc:77 lib/layouts/stdinsets.inc:337
-#: lib/layouts/stdinsets.inc:343 lib/layouts/stdinsets.inc:392
-#: lib/layouts/stdinsets.inc:398 src/insets/InsetCaption.cpp:414
-#: src/insets/InsetListings.cpp:611 src/insets/InsetListings.cpp:612
+#: lib/layouts/stdcounters.inc:77 lib/layouts/stdinsets.inc:338
+#: lib/layouts/stdinsets.inc:344 lib/layouts/stdinsets.inc:393
+#: lib/layouts/stdinsets.inc:399 src/insets/InsetCaption.cpp:410
+#: src/insets/InsetListings.cpp:612 src/insets/InsetListings.cpp:613
 msgid "Listing"
 msgstr "Списък"
 
@@ -3245,33 +3204,30 @@ msgstr "&Диалект:"
 
 #: src/frontends/qt/ui/ListingsUi.ui:370
 msgid "Select the dialect of the programming language, if available"
-msgstr ""
+msgstr "Избор на диалект на език за програмиране ако е наличен"
 
 # src/bufferview_funcs.C:280
 #: src/frontends/qt/ui/ListingsUi.ui:380
-#, fuzzy
 msgid "Range"
-msgstr "Единично"
+msgstr "Обхват"
 
 # src/ext_l10n.h:242
 #: src/frontends/qt/ui/ListingsUi.ui:389
-#, fuzzy
 msgid "Fi&rst line:"
-msgstr "Малко име"
+msgstr "&Първи ред:"
 
 #: src/frontends/qt/ui/ListingsUi.ui:402
 msgid "The first line to be printed"
-msgstr ""
+msgstr "Първи ред за печатане"
 
 # src/LColor.C:84
 #: src/frontends/qt/ui/ListingsUi.ui:415
-#, fuzzy
 msgid "&Last line:"
-msgstr "ред на математика"
+msgstr "П&оследен ред:"
 
 #: src/frontends/qt/ui/ListingsUi.ui:428
 msgid "The last line to be printed"
-msgstr ""
+msgstr "Последен ред, които да се отпечта"
 
 # src/frontends/kde/FormCitation.C:166 src/frontends/kde/FormRef.C:203
 # src/frontends/kde/citationdlg.C:87 src/frontends/kde/dlg/indexdlgdata.C:85
@@ -3314,20 +3270,18 @@ msgstr "Грешките се показват в панела със съобщ
 
 #: src/frontends/qt/ui/LocalLayoutUi.ui:74 src/frontends/qt/ui/PreambleUi.ui:45
 msgid "Editor for Latex (plain) format will be used"
-msgstr ""
+msgstr "Ще се използва редактор за LaTeX в тектов режим"
 
 # src/frontends/xforms/FormPreferences.C:226
 # src/frontends/xforms/FormPreferences.C:255
 #: src/frontends/qt/ui/LocalLayoutUi.ui:84
-#, fuzzy
 msgid "Convert"
-msgstr "Конвертори"
+msgstr "Преобразуване"
 
 # src/frontends/xforms/form_toc.C:40
 #: src/frontends/qt/ui/LogUi.ui:25
-#, fuzzy
 msgid "Log &Type:"
-msgstr "Тип(T):|#T"
+msgstr "Тип &журнал:"
 
 #: src/frontends/qt/ui/LogUi.ui:71
 msgid "Jump to the next error message."
@@ -3354,7 +3308,7 @@ msgstr "&Търсене:"
 
 #: src/frontends/qt/ui/LogUi.ui:111
 msgid "Hit Enter or click 'Find Next' to search"
-msgstr ""
+msgstr "Натиснете клавиша „Нов ред“ или щракнете „Следващо търсене“ за да търсите."
 
 #: src/frontends/qt/ui/LogUi.ui:118
 msgid "Find &Next"
@@ -3374,7 +3328,7 @@ msgstr "Връщане в изходно положение"
 #: src/frontends/qt/ui/LogUi.ui:159 src/frontends/qt/ui/ViewSourceUi.ui:173
 #: src/frontends/qt/GuiRef.cpp:77
 msgid "&Update"
-msgstr "&Опресняване"
+msgstr "&Актуализиране"
 
 #: src/frontends/qt/ui/LyXFilesUi.ui:23
 msgid "Filter"
@@ -3403,6 +3357,12 @@ msgstr "При филтриране се раличават малки и гол
 msgid "Case Sensiti&ve"
 msgstr "Различава малки и големи"
 
+# диалогов прозорец
+# src/layout_forms.C:64
+#: src/frontends/qt/ui/LyXFilesUi.ui:94
+msgid "File &Language:"
+msgstr "&Език от файла:"
+
 #: src/frontends/qt/ui/LyXFilesUi.ui:110
 msgid "The available language(s) of the selected file will be displayed here"
 msgstr "Тук ще се показват наличните езици за избраните файлове."
@@ -3454,39 +3414,38 @@ msgstr "&Разделител на колони:"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
 #: src/frontends/qt/ui/MasterChildUi.ui:20
-#, fuzzy
 msgid "Master Document Output"
-msgstr "Запазване на документа?"
+msgstr "Резултат от главния документ"
 
 #: src/frontends/qt/ui/MasterChildUi.ui:29
 msgid "Include all subdocuments in the output"
-msgstr ""
+msgstr "Включване на всички поддокументи в крайния резултат"
 
 # src/ext_l10n.h:92
 #: src/frontends/qt/ui/MasterChildUi.ui:32
-#, fuzzy
 msgid "&Include all children"
-msgstr "Включи файл(e)|e"
+msgstr "Включване на всички поддокументи"
 
 #: src/frontends/qt/ui/MasterChildUi.ui:39
 msgid "Include only the selected subdocuments in the output"
-msgstr ""
+msgstr "Включване само на избраните поддокументи в крайния резултат"
 
 #: src/frontends/qt/ui/MasterChildUi.ui:42
 msgid "Include only &selected children"
-msgstr ""
+msgstr "Включване само на избраните поддокументи"
 
 #: src/frontends/qt/ui/MasterChildUi.ui:58
 msgid ""
 "Here you can set up the handling of counters and references with regard to "
 "the excluded child documents."
 msgstr ""
+"Тук можете да настроите обработката на броячите и препратките по отношение "
+"на изключените поддокументи."
 
 # src/frontends/kde/refdlg.C:30
 #: src/frontends/qt/ui/MasterChildUi.ui:61
-#, fuzzy
 msgid "Global Counters && References"
-msgstr "всички нецитирани препратки"
+msgstr "Глобални броячи и препратки"
 
 #: src/frontends/qt/ui/MasterChildUi.ui:67
 msgid ""
@@ -3495,10 +3454,14 @@ msgid ""
 "document.<br>This is the fastest method. Use this if you do not need correct "
 "counter values and references."
 msgstr ""
+"Всички броячи и препратки от изключени поддокументи ще се пренебрегнат и така "
+"броячите в крайния документ ще се различават от броячите в пълния документ.<br> "
+"Това е най-бързия метод. Използва се само ако нямате нужда от коректни стойности "
+"на броячите и препратките."
 
 #: src/frontends/qt/ui/MasterChildUi.ui:70
 msgid "Do &not maintain (fast)"
-msgstr ""
+msgstr "Без спазване (бързо)"
 
 #: src/frontends/qt/ui/MasterChildUi.ui:77
 msgid ""
@@ -3509,10 +3472,16 @@ msgid ""
 "is significantly faster than \"Strictly maintain\". Use this if you need "
 "correct counters and more or less correct references."
 msgstr ""
+"Броячите и препратките на изключените поддокументи ще се настроят веднъж и "
+"ще се адаптират ако изключения документ бъде променен. Това работи правилно "
+"в повечето случай, но не коригира препатките към страници на невключените "
+"поддокументи, които се променят поради промяна във включените файлове. <br>"
+"Това много по-бързо от „Стриктно спазване“. Използвайте това ако имате нужда "
+"коректни броячи и повече или по-малко коректни препратки."
 
 #: src/frontends/qt/ui/MasterChildUi.ui:80
 msgid "Maintain mostl&y (medium)"
-msgstr ""
+msgstr "Спазване в &повечето случай (средно)"
 
 #: src/frontends/qt/ui/MasterChildUi.ui:87
 msgid ""
@@ -3520,16 +3489,19 @@ msgid ""
 "document. This can be much slower than the first two methods.<br>Use this if "
 "you absolutely need correct counters."
 msgstr ""
+"Гарантира, че всички броячи и препратки са идентични на цялостния документ. "
+"Това може да е много по-бьвно от първите два метода.<br>Използва се ако "
+"имате нужда от коректни броячи."
 
 #: src/frontends/qt/ui/MasterChildUi.ui:90
 msgid "Strictly &maintain (slow)"
-msgstr ""
+msgstr "Стриктно &спазване (бавно)"
 
 # src/mathed/math_forms.C:152
 #: src/frontends/qt/ui/MathMatrixUi.ui:53
 msgid "Horizontal alignment per column (l,c,r)"
 msgstr ""
-"Хоризонтално подравняване на колона - низ от „l“(ляво), „c“(центрирано) и "
+"Хоризонтално подравняване на колона - низ от „l“(ляво), „c“(център) и "
 "„r“(дясно)"
 
 # src/frontends/xforms/form_paragraph.C:153
@@ -3549,13 +3521,12 @@ msgstr "&Хоризонтално:"
 
 # src/ext_l10n.h:173
 #: src/frontends/qt/ui/MathMatrixUi.ui:100
-#, fuzzy
 msgid "Appearance"
-msgstr "Приложения"
+msgstr "Външен вид"
 
 #: src/frontends/qt/ui/MathMatrixUi.ui:122
 msgid "decoration type / matrix border"
-msgstr ""
+msgstr "тип декорация / матричен кант"
 
 # src/frontends/kde/printdlg.C:31
 #: src/frontends/qt/ui/MathMatrixUi.ui:149
@@ -3698,13 +3669,12 @@ msgstr ""
 # src/ext_l10n.h:291 src/insets/insetinfo.C:77 src/insets/insetinfo.C:102
 # src/insets/insetinfo.C:231
 #: src/frontends/qt/ui/NoteUi.ui:47
-#, fuzzy
 msgid "LyX &Note"
-msgstr "Бележка"
+msgstr "LyX Бележка"
 
 #: src/frontends/qt/ui/NoteUi.ui:54
 msgid "Export to LaTeX/Docbook but don't print"
-msgstr ""
+msgstr "Експортиране към LaTeX/Docbook, но без печат"
 
 # src/ext_l10n.h:202
 #: src/frontends/qt/ui/NoteUi.ui:57
@@ -3713,37 +3683,36 @@ msgstr "Коментар"
 
 # src/frontends/kde/printdlg.C:25
 #: src/frontends/qt/ui/NoteUi.ui:64
-#, fuzzy
 msgid "Print as grey text"
-msgstr "Печат на всяка страница"
+msgstr "Печат като сив текст"
 
 #: src/frontends/qt/ui/NoteUi.ui:67
 msgid "&Greyed out"
-msgstr ""
+msgstr "&Цветна бележка"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
 #: src/frontends/qt/ui/NumberingUi.ui:37
-#, fuzzy
 msgid "Add line numbers to the document"
-msgstr "Показване на главния документ"
+msgstr "Добавяне номера на редовете в документа"
 
 # src/mathed/formula.C:929
 #: src/frontends/qt/ui/NumberingUi.ui:40
-#, fuzzy
 msgid "L&ine numbering"
 msgstr "Номериране на редовете"
 
 # src/form1.C:129 src/sp_form.C:58
 #: src/frontends/qt/ui/NumberingUi.ui:63
-#, fuzzy
 msgid "O&ptions:"
-msgstr "&Опции"
+msgstr "&Опции:"
 
 #: src/frontends/qt/ui/NumberingUi.ui:73
 msgid ""
 "Line numbering (lineno package) options (e.g. right, modulo, switch(*), "
 "pagewise). Please refer to the lineno package manual for details."
 msgstr ""
+"Опции за номериране на редовете (пакета lineno) (като right, module, "
+"switch(*), pagewise). Обърнете се към ръководството но пакета lineno "
+"за повече информация."
 
 # src/frontends/gnome/FormToc.C:100 src/frontends/gnome/FormToc.C:167
 # src/frontends/kde/FormToc.C:167 src/frontends/kde/FormToc.C:168
@@ -3760,36 +3729,59 @@ msgstr "&Номериране"
 
 # src/frontends/xforms/form_preferences.C:926
 #: src/frontends/qt/ui/OutputUi.ui:20
-#, fuzzy
 msgid "DocBook Output Options"
-msgstr "Опции за съставяне на XHTML"
+msgstr "Опции при извеждане на DocBook"
 
 # src/frontends/xforms/FormPreferences.C:232
 #: src/frontends/qt/ui/OutputUi.ui:35
-#, fuzzy
 msgid "&Table output:"
-msgstr "&Математически изходен резултат:"
+msgstr "Формат за &таблици:"
 
-#: src/frontends/qt/ui/OutputUi.ui:51 src/frontends/qt/ui/OutputUi.ui:203
+#: src/frontends/qt/ui/OutputUi.ui:51 src/frontends/qt/ui/OutputUi.ui:260
 msgid "Format to use for math output."
 msgstr ""
 "Избиране на изходен формат за резултата от обработката на математическите "
 "символи"
 
-#: src/frontends/qt/ui/OutputUi.ui:55 src/frontends/qt/ui/OutputUi.ui:212
+#: src/frontends/qt/ui/OutputUi.ui:55 src/frontends/qt/ui/OutputUi.ui:269
 msgid "HTML"
 msgstr "HTML"
 
 #: src/frontends/qt/ui/OutputUi.ui:60
 msgid "CALS"
+msgstr "CALS"
+
+#: src/frontends/qt/ui/OutputUi.ui:87
+msgid "&MathML namespace prefix:"
+msgstr "&Именовано пространство в MathML:"
+
+#: src/frontends/qt/ui/OutputUi.ui:103
+msgid ""
+"Namespace prefix to use for MathML formulae. For instance, with the <code>m</"
+"code> prefix, the MathML tags will be output like <code>m:math</code>."
 msgstr ""
+"Именовано пространство за използване във формулите на MathML. Например с "
+"префикс <code>m</code> елементите на MathML ще се изведат като <code>m:math</code>."
+
+#: src/frontends/qt/ui/OutputUi.ui:107
+msgid "No prefix (namespace defined inline for each tag)"
+msgstr "Без префикс - именното пространство се дефинира за всеки елемент"
+
+# src/ext_l10n.h:133
+#: src/frontends/qt/ui/OutputUi.ui:112
+msgid "m (default)"
+msgstr "m (по подразбиране)"
+
+#: src/frontends/qt/ui/OutputUi.ui:117
+msgid "mml"
+msgstr "mml"
 
 # src/frontends/xforms/FormPreferences.C:252
-#: src/frontends/qt/ui/OutputUi.ui:84
+#: src/frontends/qt/ui/OutputUi.ui:141
 msgid "LyX Format"
 msgstr "LyX формат"
 
-#: src/frontends/qt/ui/OutputUi.ui:96
+#: src/frontends/qt/ui/OutputUi.ui:153
 msgid ""
 "Save all parameters in the LyX file, including ones that are frequently "
 "switched or that are specific to the user (such as the output of the tracked "
@@ -3802,163 +3794,165 @@ msgstr ""
 "помага при съвместна работа върху един файл и при работа със ситема за "
 "управление на версиите."
 
-#: src/frontends/qt/ui/OutputUi.ui:99
+#: src/frontends/qt/ui/OutputUi.ui:156
 msgid "Save &transient properties"
 msgstr "Запазване на преходните настройки"
 
 # src/frontends/kde/tocdlg.C:57
-#: src/frontends/qt/ui/OutputUi.ui:109
+#: src/frontends/qt/ui/OutputUi.ui:166
 msgid "Output Format"
 msgstr "Изходен формат"
 
 # src/lyxrc.C:1838
-#: src/frontends/qt/ui/OutputUi.ui:150 src/frontends/qt/ui/OutputUi.ui:163
+#: src/frontends/qt/ui/OutputUi.ui:207 src/frontends/qt/ui/OutputUi.ui:220
 msgid "Specify the default output format (for view/update)"
 msgstr ""
 "Изберете изходния формат по подразбиране за предварителен преглед и "
-"опресняване."
+"актуализация."
 
 # src/frontends/xforms/form_preferences.C:221
-#: src/frontends/qt/ui/OutputUi.ui:153
+#: src/frontends/qt/ui/OutputUi.ui:210
 msgid "De&fault output format:"
 msgstr "&Изходен формат по подразбиране:"
 
 # src/frontends/xforms/form_preferences.C:926
-#: src/frontends/qt/ui/OutputUi.ui:188
+#: src/frontends/qt/ui/OutputUi.ui:245
 msgid "XHTML Output Options"
-msgstr "Опции за съставяне на XHTML"
+msgstr "Опции при извеждане на XHTML"
 
 # src/frontends/xforms/form_document.C:587
-#: src/frontends/qt/ui/OutputUi.ui:207
+#: src/frontends/qt/ui/OutputUi.ui:264
 msgid "MathML"
 msgstr "МаthML"
 
 # src/frontends/kde/dlg/printdlgdata.C:42
-#: src/frontends/qt/ui/OutputUi.ui:217
+#: src/frontends/qt/ui/OutputUi.ui:274
 msgid "Images"
 msgstr "Изображения"
 
 # src/ext_l10n.h:265
-#: src/frontends/qt/ui/OutputUi.ui:222 lib/layouts/aapaper.layout:63
+#: src/frontends/qt/ui/OutputUi.ui:279 lib/layouts/aapaper.layout:63
 #: lib/layouts/egs.layout:712 lib/languages:146
-#: src/frontends/qt/GuiDocument.cpp:1597 src/frontends/qt/GuiErrorList.cpp:50
-#: src/frontends/qt/GuiLog.cpp:235 src/frontends/qt/GuiPrefs.cpp:638
+#: src/frontends/qt/GuiDocument.cpp:1609 src/frontends/qt/GuiErrorList.cpp:50
+#: src/frontends/qt/GuiLog.cpp:282 src/frontends/qt/GuiPrefs.cpp:642
 msgid "LaTeX"
 msgstr "LaTeX"
 
 # src/frontends/kde/dlg/printdlgdata.C:88
 # src/frontends/xforms/form_print.C:138
-#: src/frontends/qt/ui/OutputUi.ui:230
+#: src/frontends/qt/ui/OutputUi.ui:287
 msgid "Write CSS to file"
 msgstr "Записване на CSS във файл"
 
 # src/frontends/xforms/FormPreferences.C:232
-#: src/frontends/qt/ui/OutputUi.ui:243
+#: src/frontends/qt/ui/OutputUi.ui:300
 msgid "&Math output:"
 msgstr "&Математически изходен резултат:"
 
 # src/mathed/math_panel.C:128
-#: src/frontends/qt/ui/OutputUi.ui:259
+#: src/frontends/qt/ui/OutputUi.ui:316
 msgid "Math &image scaling:"
-msgstr "Мащаб на мат. изображение:"
+msgstr "Мащаб на математ. изображение:"
 
-#: src/frontends/qt/ui/OutputUi.ui:269
+#: src/frontends/qt/ui/OutputUi.ui:326
 msgid "Whether to comply strictly with XHTML 1.1."
-msgstr "Дали да се спазва стриктно стандарта XHTML 1.1"
+msgstr "Спазвана стриктен XHTML 1.1 стандарт"
 
-#: src/frontends/qt/ui/OutputUi.ui:272
+#: src/frontends/qt/ui/OutputUi.ui:329
 msgid "&Strict XHTML 1.1"
 msgstr "&Стриктен XHTML 1.1"
 
-#: src/frontends/qt/ui/OutputUi.ui:285
+#: src/frontends/qt/ui/OutputUi.ui:342
 msgid "Scaling factor for images used for math output."
 msgstr ""
 "Коефицент за мащаба на изображението, в резултат от обработката на "
 "математическите символи"
 
-#: src/frontends/qt/ui/OutputUi.ui:320
+#: src/frontends/qt/ui/OutputUi.ui:377
 msgid ""
 "Runs the LaTeX backend with the -shell-escape option (Warning: use only when "
 "really necessary)"
 msgstr ""
+"Стартира програми от командния ред чрез -shell-escape опцията на LaTeX."
+"Внимание: използвайте само при необходимост поради риск за сигурността - "
+"изпълнение на произволни команди скрити в LaTeX скрипт."
 
-#: src/frontends/qt/ui/OutputUi.ui:323
+#: src/frontends/qt/ui/OutputUi.ui:380
 msgid "&Allow running external programs"
-msgstr ""
+msgstr "Рарешава се стартиране на &външни програми от LaTeX скрипт"
 
 # src/frontends/xforms/form_preferences.C:926
-#: src/frontends/qt/ui/OutputUi.ui:330
-#, fuzzy
+#: src/frontends/qt/ui/OutputUi.ui:387
 msgid "LaTeX Output Options"
-msgstr "Опции за съставяне на XHTML"
+msgstr "Опции на LaTeX за крайния файл"
 
-#: src/frontends/qt/ui/OutputUi.ui:338
+#: src/frontends/qt/ui/OutputUi.ui:395
 msgid "Enable forward/reverse search between editor and output (e.g., SyncTeX)"
 msgstr ""
 "Позволява търсене напред и назад между LyX-редактора и изходния резултат "
 "(напр. от SyncTeX)"
 
-#: src/frontends/qt/ui/OutputUi.ui:341
+#: src/frontends/qt/ui/OutputUi.ui:398
 msgid "S&ynchronize with output"
 msgstr "&Синхронизиране с изхода"
 
 # src/ext_l10n.h:215
-#: src/frontends/qt/ui/OutputUi.ui:366
+#: src/frontends/qt/ui/OutputUi.ui:423
 msgid "C&ustom macro:"
 msgstr "&Вмъкване на LaTeX команда:"
 
 # src/lyx_cb.C:675
-#: src/frontends/qt/ui/OutputUi.ui:376
+#: src/frontends/qt/ui/OutputUi.ui:433
 msgid "Custom LaTeX preamble macro"
 msgstr "Избиране на LaTeX команда за вмъкване в заглавната част"
 
-#: src/frontends/qt/ui/OutputUi.ui:403
+#: src/frontends/qt/ui/OutputUi.ui:460
 msgid ""
 "If this is checked, fragile items such as labels and index entries are moved "
 "out of moving arguments such as sections and captions. This prevents LaTeX "
 "errors that can happen in such cases. It is recommended to keep this on."
 msgstr ""
 
-#: src/frontends/qt/ui/OutputUi.ui:406
+#: src/frontends/qt/ui/OutputUi.ui:463
 msgid "Put fra&gile content out of moving arguments"
 msgstr ""
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:38
+#: src/frontends/qt/ui/PDFSupportUi.ui:23
 msgid "&Use hyperref support"
-msgstr ""
+msgstr "Използване на хипервръзки"
 
 # src/frontends/xforms/FormParagraph.C:132
-#: src/frontends/qt/ui/PDFSupportUi.ui:72
+#: src/frontends/qt/ui/PDFSupportUi.ui:57
 msgid "&General"
 msgstr "&Общо"
 
 # src/ext_l10n.h:146
-#: src/frontends/qt/ui/PDFSupportUi.ui:119
+#: src/frontends/qt/ui/PDFSupportUi.ui:104
 msgid "Header Information"
 msgstr "Заглавна информация"
 
 # src/ext_l10n.h:395 src/frontends/gnome/FormCitation.C:529
-#: src/frontends/qt/ui/PDFSupportUi.ui:134
+#: src/frontends/qt/ui/PDFSupportUi.ui:119
 msgid "&Title:"
 msgstr "&Заглавие:"
 
 # src/ext_l10n.h:175
-#: src/frontends/qt/ui/PDFSupportUi.ui:147
+#: src/frontends/qt/ui/PDFSupportUi.ui:132
 msgid "&Author:"
 msgstr "&Автор:"
 
 # src/ext_l10n.h:367
-#: src/frontends/qt/ui/PDFSupportUi.ui:160
+#: src/frontends/qt/ui/PDFSupportUi.ui:145
 msgid "Sub&ject:"
 msgstr "&Тема:"
 
 # src/ext_l10n.h:262 src/frontends/gnome/FormIndex.C:89
 # src/frontends/xforms/form_index.C:28
-#: src/frontends/qt/ui/PDFSupportUi.ui:173
+#: src/frontends/qt/ui/PDFSupportUi.ui:158
 msgid "&Keywords:"
 msgstr "&Ключови думи:"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:206
+#: src/frontends/qt/ui/PDFSupportUi.ui:191
 msgid ""
 "If not stated explicitly, fill title and author from appropriate environments"
 msgstr ""
@@ -3966,82 +3960,99 @@ msgstr ""
 "контекст"
 
 # src/ext_l10n.h:175
-#: src/frontends/qt/ui/PDFSupportUi.ui:209
+#: src/frontends/qt/ui/PDFSupportUi.ui:194
 msgid "Automatically fi&ll header"
 msgstr "&Автоматично попълване на заглавната част"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:216
+#: src/frontends/qt/ui/PDFSupportUi.ui:201
 msgid "Enable fullscreen PDF presentation"
 msgstr "Разрешаване на PDF презентации на пълен екран"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:219
+#: src/frontends/qt/ui/PDFSupportUi.ui:204
 msgid "Load in &fullscreen mode"
 msgstr "&Зареждане в режим на пълен екран"
 
 # src/frontends/kde/urldlg.C:45
-#: src/frontends/qt/ui/PDFSupportUi.ui:229
+#: src/frontends/qt/ui/PDFSupportUi.ui:214
 msgid "H&yperlinks"
 msgstr "&Хипервръзки"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:280
+#: src/frontends/qt/ui/PDFSupportUi.ui:265
 msgid "Allows link text to break across lines."
 msgstr "Разрешаване хипервръзките да се пренасят на нов ред"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:283
+#: src/frontends/qt/ui/PDFSupportUi.ui:268
 msgid "B&reak links over lines"
 msgstr "&Пренасяне на връзките на нов ред"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:290
+#: src/frontends/qt/ui/PDFSupportUi.ui:275
 msgid "No &frames around links"
 msgstr "&Без рамки около връзките"
 
 # src/frontends/xforms/FormPreferences.C:244
-#: src/frontends/qt/ui/PDFSupportUi.ui:300
+#: src/frontends/qt/ui/PDFSupportUi.ui:285
 msgid "C&olor links"
 msgstr "&Цветни връзки"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:307
+#: src/frontends/qt/ui/PDFSupportUi.ui:292
 msgid "Bibliographical backreferences"
 msgstr "Поставяне на обратни указатели в литературния списък"
 
 # src/frontends/xforms/FormPreferences.C:68
-#: src/frontends/qt/ui/PDFSupportUi.ui:310
+#: src/frontends/qt/ui/PDFSupportUi.ui:295
 msgid "B&ackreferences:"
 msgstr "&Обратни указатели:"
 
 # src/frontends/xforms/form_paragraph.C:244
-#: src/frontends/qt/ui/PDFSupportUi.ui:339
+#: src/frontends/qt/ui/PDFSupportUi.ui:324
 msgid "&Bookmarks"
 msgstr "&Показалци"
 
 # src/frontends/xforms/form_paragraph.C:244
-#: src/frontends/qt/ui/PDFSupportUi.ui:360
+#: src/frontends/qt/ui/PDFSupportUi.ui:345
 msgid "G&enerate bookmarks (toc)"
 msgstr "&Създаване на показалци в съдържанието"
 
 # src/lyxfont.C:415
-#: src/frontends/qt/ui/PDFSupportUi.ui:390
+#: src/frontends/qt/ui/PDFSupportUi.ui:375
 msgid "&Numbered bookmarks"
 msgstr "&Номерирани показалци"
 
 # src/frontends/xforms/form_paragraph.C:244
-#: src/frontends/qt/ui/PDFSupportUi.ui:397
+#: src/frontends/qt/ui/PDFSupportUi.ui:382
 msgid "&Open bookmark tree"
 msgstr "&Отваряне на дървото с показалци"
 
 # src/frontends/kde/printdlg.C:31
-#: src/frontends/qt/ui/PDFSupportUi.ui:431
+#: src/frontends/qt/ui/PDFSupportUi.ui:416
 msgid "Number of levels"
 msgstr "Брой нива"
 
 # src/frontends/xforms/form_preferences.C:926
-#: src/frontends/qt/ui/PDFSupportUi.ui:473
+#: src/frontends/qt/ui/PDFSupportUi.ui:455
 msgid "Additional O&ptions"
 msgstr "&Допълнителни опции"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:509
-msgid "e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
-msgstr "напр.: „pdfstartview=XYZ, plainpages=false, pdfpagelabels“"
+#: src/frontends/qt/ui/PDFSupportUi.ui:461
+msgid ""
+"Additional hyperref options (comma-separated) to be passed via \\hypersetup."
+msgstr ""
+"Допълнителни опции за хипервръзките, разделени със запетая и предавани чрез \\hypersetup."
+
+#: src/frontends/qt/ui/PDFSupportUi.ui:464
+msgid "Hyperse&tup"
+msgstr "Настройка на хипервръзките"
+
+#: src/frontends/qt/ui/PDFSupportUi.ui:487
+msgid ""
+"Document metadata and PDF settings (as specified in LaTeX 06/2022 and later)"
+msgstr ""
+"Метаданни за документа и PDF настройките, така както са в LaTeX 06/22 и следващи версии"
+
+# src/ext_l10n.h:130
+#: src/frontends/qt/ui/PDFSupportUi.ui:490
+msgid "Document &Metadata"
+msgstr "&Метаданни за документа"
 
 # src/frontends/xforms/form_preferences.C:354
 #: src/frontends/qt/ui/PageLayoutUi.ui:20
@@ -4078,9 +4089,9 @@ msgstr "Пей&заж"
 # src/frontends/xforms/FormParagraph.C:33
 #: src/frontends/qt/ui/PageLayoutUi.ui:162
 #: lib/layouts/customHeadersFooters.module:3 lib/layouts/landscape.module:3
-#: lib/layouts/multicol.module:3 src/frontends/qt/GuiDocument.cpp:1765
+#: lib/layouts/multicol.module:3 src/frontends/qt/GuiDocument.cpp:1779
 msgid "Page Layout"
-msgstr "Оформление на страниците"
+msgstr "Страници"
 
 # src/frontends/xforms/form_document.C:278
 #: src/frontends/qt/ui/PageLayoutUi.ui:171
@@ -4107,17 +4118,17 @@ msgstr "&Разстояние между редовете"
 
 # src/bufferview_funcs.C:280
 #: src/frontends/qt/ui/ParagraphUi.ui:60 src/Text.cpp:2118
-#: src/frontends/qt/GuiDocument.cpp:867
+#: src/frontends/qt/GuiDocument.cpp:875
 msgid "Single"
 msgstr "eдинично"
 
 #: src/frontends/qt/ui/ParagraphUi.ui:65
 msgid "1.5"
-msgstr ""
+msgstr "1.5"
 
 # src/bufferview_funcs.C:286
 #: src/frontends/qt/ui/ParagraphUi.ui:70 src/Text.cpp:2124
-#: src/frontends/qt/GuiDocument.cpp:871
+#: src/frontends/qt/GuiDocument.cpp:879
 msgid "Double"
 msgstr "двойно"
 
@@ -4128,19 +4139,19 @@ msgstr "двойно"
 #: src/frontends/qt/ui/TabularUi.ui:1210 src/frontends/qt/ui/TabularUi.ui:1229
 #: src/frontends/qt/ui/TabularUi.ui:1277 src/frontends/qt/ui/VSpaceUi.ui:118
 #: lib/layouts/stdcustom.inc:8 src/frontends/qt/FloatPlacement.cpp:185
-#: src/frontends/qt/GuiDocument.cpp:859 src/frontends/qt/GuiDocument.cpp:865
-#: src/frontends/qt/GuiDocument.cpp:873 src/frontends/qt/GuiDocument.cpp:987
-#: src/frontends/qt/GuiDocument.cpp:1054 src/frontends/qt/GuiDocument.cpp:1140
-#: src/frontends/qt/GuiDocument.cpp:1191 src/frontends/qt/GuiDocument.cpp:1537
-#: src/frontends/qt/GuiHSpace.cpp:57 src/frontends/qt/GuiPrefs.cpp:812
-#: src/frontends/qt/GuiPrefs.cpp:840 src/frontends/qt/GuiPrefs.cpp:867
-#: src/frontends/qt/GuiPrefs.cpp:2287 src/frontends/qt/GuiPrefs.cpp:2310
+#: src/frontends/qt/GuiDocument.cpp:867 src/frontends/qt/GuiDocument.cpp:873
+#: src/frontends/qt/GuiDocument.cpp:881 src/frontends/qt/GuiDocument.cpp:997
+#: src/frontends/qt/GuiDocument.cpp:1064 src/frontends/qt/GuiDocument.cpp:1150
+#: src/frontends/qt/GuiDocument.cpp:1201 src/frontends/qt/GuiDocument.cpp:1549
+#: src/frontends/qt/GuiHSpace.cpp:57 src/frontends/qt/GuiPrefs.cpp:816
+#: src/frontends/qt/GuiPrefs.cpp:844 src/frontends/qt/GuiPrefs.cpp:871
+#: src/frontends/qt/GuiPrefs.cpp:2329 src/frontends/qt/GuiPrefs.cpp:2352
 #: src/frontends/qt/GuiPrintNomencl.cpp:51 src/insets/InsetInfo.cpp:236
 #: src/insets/InsetInfo.cpp:246 src/insets/InsetInfo.cpp:250
-#: src/insets/InsetInfo.cpp:259 src/insets/InsetInfo.cpp:317
-#: src/insets/InsetInfo.cpp:335
+#: src/insets/InsetInfo.cpp:259 src/insets/InsetInfo.cpp:321
+#: src/insets/InsetInfo.cpp:343
 msgid "Custom"
-msgstr "потребителско"
+msgstr "задаване"
 
 #: src/frontends/qt/ui/ParagraphUi.ui:110
 msgid "&Justified"
@@ -4153,7 +4164,7 @@ msgstr "от&дясно"
 
 #: src/frontends/qt/ui/ParagraphUi.ui:138
 msgid "Use the default alignment for this paragraph, whatever it is."
-msgstr ""
+msgstr "Използване на подравняване по подразбиране за този параграф, каквото и да е то."
 
 # src/frontends/kde/FormParagraph.C:183
 # src/frontends/xforms/FormParagraph.C:148
@@ -4178,13 +4189,12 @@ msgstr "Най-дълъг етикет"
 
 # src/buffer.C:323
 #: src/frontends/qt/ui/ParagraphUi.ui:201
-#, fuzzy
 msgid "&Do not indent paragraph"
-msgstr "Абзац с отстъп"
+msgstr "Абзац без отстъп"
 
 #: src/frontends/qt/ui/PhantomUi.ui:47
 msgid "Horizontal and vertical space of the phantom content"
-msgstr ""
+msgstr "Хориз. и верт. разстояние от фантомното съдържание"
 
 # src/ext_l10n.h:438
 #: src/frontends/qt/ui/PhantomUi.ui:50
@@ -4213,24 +4223,22 @@ msgstr "Вертикален фантом"
 
 # src/form1.C:286
 #: src/frontends/qt/ui/PreambleUi.ui:38
-#, fuzzy
 msgid "&Find"
 msgstr "&Търсене:"
 
 # src/frontends/kde/citationdlg.C:96
 #: src/frontends/qt/ui/PrefColorsUi.ui:60
-#, fuzzy
 msgid "Change the selected color"
-msgstr "Променяне името на избраното разклонение."
+msgstr "Промяна на избрания цвят"
 
 # src/intl.C:349 src/intl.C:350
 #: src/frontends/qt/ui/PrefColorsUi.ui:63
 msgid "A&lter..."
-msgstr "&Променяне"
+msgstr "&Промяна"
 
 #: src/frontends/qt/ui/PrefColorsUi.ui:70
 msgid "Reset the selected color to its original value"
-msgstr ""
+msgstr "Връщане на избрания цвят до неговата първоначална стойност"
 
 #: src/frontends/qt/ui/PrefColorsUi.ui:73
 msgid "Restore &Default"
@@ -4241,13 +4249,12 @@ msgid "Reset all colors to their original value"
 msgstr "Възстановяване на всички цветове до първоначалната им стойност"
 
 #: src/frontends/qt/ui/PrefColorsUi.ui:83
-#, fuzzy
 msgid "Restore A&ll"
-msgstr "Възстановяване"
+msgstr "Възстановяване всички"
 
 #: src/frontends/qt/ui/PrefColorsUi.ui:105
 msgid "Use the color scheme of your Operating System/Desktop Environment"
-msgstr ""
+msgstr "Използване на цветовата схема от графичната среда на операционната система"
 
 # src/lyxfunc.C:1132
 #: src/frontends/qt/ui/PrefColorsUi.ui:108
@@ -4274,7 +4281,7 @@ msgstr "Автоматично дописване в реда"
 
 #: src/frontends/qt/ui/PrefCompletionUi.ui:51
 msgid "Show the popup in math mode after the delay."
-msgstr ""
+msgstr "Показване на изскачащ прозорец в матем. режим след закъснение"
 
 # src/ext_l10n.h:175
 #: src/frontends/qt/ui/PrefCompletionUi.ui:54
@@ -4327,9 +4334,9 @@ msgid "Cursor i&ndicator"
 msgstr "Индикатор на курсора"
 
 #: src/frontends/qt/ui/PrefCompletionUi.ui:119
-#: src/frontends/qt/GuiPrefs.cpp:317
+#: src/frontends/qt/GuiPrefs.cpp:321
 msgid "General[[settings]]"
-msgstr ""
+msgstr "Общи"
 
 #: src/frontends/qt/ui/PrefCompletionUi.ui:142
 msgid ""
@@ -4428,8 +4435,8 @@ msgstr "&Редактиране"
 
 # src/frontends/kde/dlg/paradlgdata.C:82
 #: src/frontends/qt/ui/PrefConvertersUi.ui:286
-#: src/frontends/qt/ui/PrefShortcutsUi.ui:61 src/frontends/qt/GuiPrefs.cpp:3101
-#: src/frontends/qt/GuiPrefs.cpp:3187
+#: src/frontends/qt/ui/PrefShortcutsUi.ui:61 src/frontends/qt/GuiPrefs.cpp:3150
+#: src/frontends/qt/GuiPrefs.cpp:3236
 msgid "Remo&ve"
 msgstr "&Премахване"
 
@@ -4524,11 +4531,12 @@ msgid ""
 "If this is checked, additions in change tracking are underlined in the "
 "workarea"
 msgstr ""
+"Ако е отметнато добавките в документа при проследяване на промените се "
+"подчертават в работната площ"
 
 #: src/frontends/qt/ui/PrefDisplayUi.ui:157
-#, fuzzy
 msgid "&Underline change tracking additions"
-msgstr "Активиране проследяване на промените в крайния документ"
+msgstr "&Подчертаване на промените в документа"
 
 # src/debug.C:42
 #: src/frontends/qt/ui/PrefDocHandlingUi.ui:26
@@ -4660,7 +4668,7 @@ msgid "Ask the user"
 msgstr "пита се птребителя"
 
 # src/ext_l10n.h:16 src/ext_l10n.h:29
-#: src/frontends/qt/ui/PrefEditUi.ui:26 src/frontends/qt/GuiPrefs.cpp:210
+#: src/frontends/qt/ui/PrefEditUi.ui:26 src/frontends/qt/GuiPrefs.cpp:214
 msgid "Editing"
 msgstr "Редактиране"
 
@@ -4690,10 +4698,13 @@ msgid ""
 "paste operations and when moving content from/to insets if change tracking "
 "is deactivated."
 msgstr ""
+"Ако е отметнато, открояването на текста при проследяване на промените няма да "
+"се възстанови при операциите копиране и поставяне, и при преместване на текст "
+"от/в добавка при неактивно проселдяване на промените."
 
 #: src/frontends/qt/ui/PrefEditUi.ui:93
 msgid "&Keep change tracking markup on copy and paste"
-msgstr ""
+msgstr "Проследяване на промените при копиране и поставяне"
 
 # src/frontends/kde/refdlg.C:99
 #: src/frontends/qt/ui/PrefEditUi.ui:100
@@ -4713,21 +4724,19 @@ msgstr ""
 
 # src/frontends/kde/printdlg.C:35
 #: src/frontends/qt/ui/PrefEditUi.ui:119
-#, fuzzy
 msgid "Search &drive for cited files"
-msgstr "Изборане на директория за примерни файлове"
+msgstr "Претърсване на диска за файлове с цитати"
 
 # src/frontends/kde/dlg/printdlgdata.C:246
 #: src/frontends/qt/ui/PrefEditUi.ui:144
-#, fuzzy
 msgid "Patte&rn:"
-msgstr "(&F)Файл"
+msgstr "Шаблан:"
 
 #: src/frontends/qt/ui/PrefEditUi.ui:154
 msgid "Define search pattern (see UserGuide for syntax)"
-msgstr ""
+msgstr "Дефиниране на шаблон за търсене (виж ръководството за синтаксис)"
 
-#: src/frontends/qt/ui/PrefEditUi.ui:167 src/LyXRC.cpp:3103
+#: src/frontends/qt/ui/PrefEditUi.ui:167 src/LyXRC.cpp:3175
 msgid ""
 "Configure the width of the text cursor. Automatic zoom-controlled cursor "
 "width used when set to 0."
@@ -4741,7 +4750,7 @@ msgstr "Ширина на курсора в пиксели (px):"
 
 #: src/frontends/qt/ui/PrefEditUi.ui:198
 msgid "Skip trailing non-word characters"
-msgstr ""
+msgstr "Премахване на крайните знаци, които не са букви"
 
 # src/ext_l10n.h:202
 #: src/frontends/qt/ui/PrefEditUi.ui:201
@@ -4769,7 +4778,6 @@ msgid "Hide sta&tusbar"
 msgstr "Скриване на лентата на състоянието"
 
 #: src/frontends/qt/ui/PrefEditUi.ui:267
-#, fuzzy
 msgid "H&ide tabbar"
 msgstr "Скриване на лентата с разделите"
 
@@ -4778,7 +4786,6 @@ msgid "&Limit text width"
 msgstr "Ограничаване ширината на реда"
 
 #: src/frontends/qt/ui/PrefEditUi.ui:328
-#, fuzzy
 msgid "Screen used (pi&xels):"
 msgstr "Изполван екран в пиксели (px):"
 
@@ -4858,7 +4865,7 @@ msgid ""
 "Specification of the default output formats when using specific LaTeX "
 "variants"
 msgstr ""
-"Показва форматите по подразбиране, когато се използва специфичен LaTeXi "
+"Показва форматите по подразбиране, когато се използва специфичен LaTeX "
 "вариант."
 
 # src/frontends/xforms/form_preferences.C:221
@@ -4907,13 +4914,12 @@ msgstr "Вашето име"
 
 # src/lyxfont.C:51
 #: src/frontends/qt/ui/PrefIdentityUi.ui:41
-#, fuzzy
 msgid "&Initials:"
-msgstr "Курсив"
+msgstr "&Инициали:"
 
 #: src/frontends/qt/ui/PrefIdentityUi.ui:63
 msgid "Initials of your name"
-msgstr ""
+msgstr "Инициали на вашето име"
 
 # src/layout_forms.C:23
 #: src/frontends/qt/ui/PrefIdentityUi.ui:72
@@ -5012,7 +5018,7 @@ msgid "Ctrl"
 msgstr "Ctrl"
 
 # src/lyxfont.C:56
-#: src/frontends/qt/ui/PrefInputUi.ui:249 src/insets/InsetInfo.cpp:855
+#: src/frontends/qt/ui/PrefInputUi.ui:249 src/insets/InsetInfo.cpp:863
 msgid "Shift"
 msgstr "Shift"
 
@@ -5032,9 +5038,8 @@ msgstr ""
 "Изберете езика за графичния потребителски интерфейс (менюта, диалози и т.н.)"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:57
-#, fuzzy
 msgid "LaTeX Language Support"
-msgstr "Поддръжка за писане от дясно наляво"
+msgstr "Поддържани езици от LaTeX"
 
 # src/layout_forms.C:64
 #: src/frontends/qt/ui/PrefLanguageUi.ui:63
@@ -5042,38 +5047,36 @@ msgid "Language &package:"
 msgstr "&Езиков пакет:"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:73
-#, fuzzy
 msgid "Select which (LaTeX) language package documents should use by default"
-msgstr "Изберете какъв езиков пакет да се използва от LyX"
+msgstr "Изберете какъв езиков пакет от LaTeX да се използва по подразбиране"
 
 # src/ext_l10n.h:175
 #: src/frontends/qt/ui/PrefLanguageUi.ui:77
-#: src/frontends/qt/GuiDocument.cpp:1050 src/frontends/qt/GuiDocument.cpp:2706
-#: src/frontends/qt/GuiPrefs.cpp:811 src/frontends/qt/GuiPrefs.cpp:839
+#: src/frontends/qt/GuiDocument.cpp:1060 src/frontends/qt/GuiDocument.cpp:2724
+#: src/frontends/qt/GuiPrefs.cpp:815 src/frontends/qt/GuiPrefs.cpp:843
 msgid "Automatic"
 msgstr "по подразбиране"
 
 # src/layout_forms.C:72
 #: src/frontends/qt/ui/PrefLanguageUi.ui:82
-#: src/frontends/qt/GuiDocument.cpp:1052
+#: src/frontends/qt/GuiDocument.cpp:1062
 msgid "Always Babel"
-msgstr "винаги Babel"
+msgstr "винаги Бабел (babel)"
 
 # src/layout_forms.C:64
 #: src/frontends/qt/ui/PrefLanguageUi.ui:92
-#: src/frontends/qt/GuiDocument.cpp:1056
+#: src/frontends/qt/GuiDocument.cpp:1066
 msgid "None[[language package]]"
 msgstr "няма"
 
 # src/lyxrc.C:1908
 #: src/frontends/qt/ui/PrefLanguageUi.ui:100
-#, fuzzy
 msgid ""
 "Enter the command to load a custom language package (default: "
 "\\usepackage{babel})"
 msgstr ""
-"Въведете командата за зареждане на езиков пакет (по подразбиране: "
-"\\usepackage{babel}"
+"Въведете команда за зареждане на езиков пакет от потребителя "
+"(по подразбиране: \\usepackage{babel}"
 
 # src/frontends/xforms/form_preferences.C:438
 #: src/frontends/qt/ui/PrefLanguageUi.ui:107
@@ -5082,11 +5085,11 @@ msgstr "Команда за начало:"
 
 # src/lyxrc.C:1936
 #: src/frontends/qt/ui/PrefLanguageUi.ui:117
-#, fuzzy
 msgid ""
 "The LaTeX command that starts a switch to a different language. The "
 "placeholder $$lang is replaced by the actual language name."
-msgstr "LaTeX командата за начало на локална смяна на езика."
+msgstr "LaTeX командата за начало на локална смяна на езика. "
+"Променливата $$lang се заменя с името на езика."
 
 # src/frontends/xforms/form_preferences.C:445
 #: src/frontends/qt/ui/PrefLanguageUi.ui:124
@@ -5095,97 +5098,91 @@ msgstr "Команда за край:"
 
 # src/lyxrc.C:1936
 #: src/frontends/qt/ui/PrefLanguageUi.ui:134
-#, fuzzy
 msgid ""
 "The LaTeX command that ends a switch to a different language.  The "
 "placeholder $$lang is replaced by the actual language name."
 msgstr "LaTeX командата за край на локалната смяна на езика."
+"Променливата $$lang се заменя с името на езика."
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:141
-#, fuzzy
 msgid ""
 "Check to pass the language globally (to the document class), not locally (to "
 "the language package), so that other packages are also informed about the "
 "used languages."
 msgstr ""
-"Активирай за настройка на езика глобално - за класа (жанра) на документа, а "
-"не локално - за езиковия пакет"
+"При активиране настройката на езика е глобална - за класа (жанра) на документа, а "
+"не локално - за езиковия пакет, така че, други пакети също разбират използваните "
+"езици."
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:144
 msgid "Set languages &globally"
 msgstr "Задаване на езика глобално"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:151
-#, fuzzy
 msgid ""
 "If checked, the document language is explicitly set by a language switch "
 "command"
 msgstr ""
-"Отметнете за да не настройвате изришно езика за документа с команда за смяна "
+"Отметнете за да настройвате изрично езика за документа с команда за смяна "
 "на език"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:154
-#, fuzzy
 msgid "Set document language e&xplicitly"
-msgstr "Задаване на езика глобално"
+msgstr "Езика се задава изрично"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:161
-#, fuzzy
 msgid ""
 "If checked, the document language is explicitly closed by a language switch "
 "command"
 msgstr ""
-"Отметнете за да не затваряте изришно езика за документа с команда за смяна "
+"Отметнете за да затваряте изрично езика за документа с команда за смяна "
 "на език"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:164
 msgid "&Unset document language explicitly"
-msgstr ""
+msgstr "Езика не се задава изрично"
 
 # заглавие на диалог
 # src/form1.C:129 src/sp_form.C:58
 #: src/frontends/qt/ui/PrefLanguageUi.ui:177
-#, fuzzy
 msgid "Editor Settings"
-msgstr "Настройки на рамка"
+msgstr "Настройки на редактора"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:189
-#, fuzzy
 msgid ""
 "Check to highlight additional languages (to the document language) visually "
 "in the work area"
 msgstr ""
-"Отметнете за да откроите визуално текста на чужд език в работния документ"
+"Отметка за открояване визуално текста на чужди езици в работния документ"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:192
-#, fuzzy
 msgid "&Mark additional languages"
-msgstr "Открояване на чужд език"
+msgstr "Открояване на чужди езици"
 
-#: src/frontends/qt/ui/PrefLanguageUi.ui:199 src/LyXRC.cpp:3231
+#: src/frontends/qt/ui/PrefLanguageUi.ui:199 src/LyXRC.cpp:3303
 msgid ""
 "Select to use the current keyboard language, as set from the operating "
 "system, as default input language."
 msgstr ""
+"Избиране на език на клавиатурата по подразбиране от настройките на операционната система"
 
 # src/frontends/xforms/FormPreferences.C:1798
 # src/frontends/xforms/FormPreferences.C:1806
 #: src/frontends/qt/ui/PrefLanguageUi.ui:202
-#, fuzzy
 msgid "Respect &OS keyboard language"
-msgstr "Клавишна подредба"
+msgstr "Съобразяване с езика на клавиатурата от ОС"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:226
 msgid ""
 "Specify here how the arrow keys behave within scripts with right-to-left "
 "direction"
 msgstr ""
+"Посочете тук как се движи курсора с клавишите стрелка в текст от дясно наляво"
 
 # src/ext_l10n.h:202
 #: src/frontends/qt/ui/PrefLanguageUi.ui:229
-#, fuzzy
 msgid "Right-to-left cursor movement:"
-msgstr "Използване на Mac стил движение на кусора"
+msgstr "Движение на кусора от дясно на ляво:"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:239
 msgid ""
@@ -5193,6 +5190,9 @@ msgid ""
 "to-left text in a left-to-right paragraph, the cursor starts at the right "
 "when coming from the left)"
 msgstr ""
+"Курсора следва логическата посока на текста (напр. в текст „от дясно наляво“ "
+"вложен в абзац с текст „от ляво надясно“, курсора започва вдясно, когато идва "
+"отляво)."
 
 # src/frontends/kde/dlg/paraextradlgdata.C:142
 #: src/frontends/qt/ui/PrefLanguageUi.ui:242
@@ -5205,6 +5205,8 @@ msgid ""
 "text in a left-to-right paragraph, the cursor starts at the left when coming "
 "from the left)"
 msgstr ""
+"Курсора следва визуалните посоки (напр. в текст „от дясно наляво“ вложен в "
+"абзац с текст „от ляво надясно“, курсора започва вляво, когато идва отляво)."
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:255
 msgid "&Visual"
@@ -5212,9 +5214,8 @@ msgstr "&Визуално"
 
 # src/frontends/kde/refdlg.C:30
 #: src/frontends/qt/ui/PrefLanguageUi.ui:280
-#, fuzzy
 msgid "Local Preferences"
-msgstr "всички препратки"
+msgstr "Локални предпочитания"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:286
 #: src/frontends/qt/ui/PrefLanguageUi.ui:344
@@ -5223,6 +5224,9 @@ msgid ""
 "dialog by default. \"Language default\" selects the appropriate separator "
 "for the current language."
 msgstr ""
+"Тук се посочва десетичния разделител по подразбиране, който се използва в "
+"диалога с настройките на таблица. Избирайки „По подлазбиране за езика“ поставя "
+"подходящия разделител за текущия език."
 
 # src/frontends/xforms/form_preferences.C:221
 #: src/frontends/qt/ui/PrefLanguageUi.ui:289
@@ -5231,16 +5235,14 @@ msgstr "Разделител за десетични числа:"
 
 # src/frontends/xforms/form_preferences.C:221
 #: src/frontends/qt/ui/PrefLanguageUi.ui:318
-#, fuzzy
 msgid "Insert a custom decimal separator here"
-msgstr "Разделител за десетични числа:"
+msgstr "Вмъкване тук на разделител за десетични числа от потребителя"
 
 # src/frontends/xforms/FormDocument.C:1101
 #: src/frontends/qt/ui/PrefLanguageUi.ui:331
 #: src/frontends/qt/ui/PrefLanguageUi.ui:361
-#, fuzzy
 msgid "Select the default length unit for LyX dialogs"
-msgstr "Избиране на гарнитурата на шрифта по подразбиране за документа"
+msgstr "Избиране на мерна единица за дължина по подразбиране за LyX диалозите"
 
 # src/frontends/xforms/form_preferences.C:391
 #: src/frontends/qt/ui/PrefLanguageUi.ui:334
@@ -5249,10 +5251,9 @@ msgstr "Eдиница за дължина:"
 
 # src/ext_l10n.h:270
 #: src/frontends/qt/ui/PrefLanguageUi.ui:348
-#: src/frontends/qt/GuiDocument.cpp:1013
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:1023
 msgid "Language Default"
-msgstr "&По подразбиране за езика"
+msgstr "По подразбиране за езика"
 
 # src/frontends/xforms/form_preferences.C:926
 #: src/frontends/qt/ui/PrefLatexUi.ui:34
@@ -5388,7 +5389,7 @@ msgstr "Други опции"
 msgid "Output &line length:"
 msgstr "Дължина на реда на изходния документ:"
 
-#: src/frontends/qt/ui/PrefOutputUi.ui:186 src/LyXRC.cpp:3042
+#: src/frontends/qt/ui/PrefOutputUi.ui:186 src/LyXRC.cpp:3114
 msgid ""
 "The maximum line length of exported plain text/LaTeX/SGML files. If set to "
 "0, paragraphs are output in a single line; if the line length is > 0, "
@@ -5732,19 +5733,17 @@ msgstr "Настройки на означенията"
 #: src/frontends/qt/ui/PrintNomenclUi.ui:19
 #: src/frontends/qt/ui/PrintNomenclUi.ui:32
 msgid "Define hanging indentation/label length for the nomenclature list."
-msgstr ""
+msgstr "Определяне на отстъпа за запис или етикет от номенслатурен списък."
 
 # src/frontends/xforms/form_paragraph.C:48
 #: src/frontends/qt/ui/PrintNomenclUi.ui:22
-#, fuzzy
 msgid "&List Indentation:"
-msgstr "Отместване"
+msgstr "Отместване на списък:"
 
 # src/mathed/math_forms.C:140
 #: src/frontends/qt/ui/PrintNomenclUi.ui:39
-#, fuzzy
 msgid "Custom &Width:"
-msgstr "Колони "
+msgstr "Ширина от потребителя:"
 
 #: src/frontends/qt/ui/PrintNomenclUi.ui:52
 msgid "Custom value. \"List Indentation\" needs to be set to \"Custom\"."
@@ -5757,9 +5756,8 @@ msgstr "Набични указатели:"
 
 # src/frontends/xforms/FormDocument.C:1101
 #: src/frontends/qt/ui/PrintindexUi.ui:50
-#, fuzzy
 msgid "Select the index that shall be printed at this place of the document."
-msgstr "подразбиращи се за този документ клас?"
+msgstr "Избиране на индекс, които да се отпечата на това място от дакумента."
 
 #: src/frontends/qt/ui/PrintindexUi.ui:61
 msgid "Check if this index should be part (e.g., a section) of the former one."
@@ -5767,20 +5765,21 @@ msgstr ""
 
 # src/layout_forms.C:28
 #: src/frontends/qt/ui/PrintindexUi.ui:64
-#, fuzzy
 msgid "&Subindex"
-msgstr "Серия(S):|#S"
+msgstr "&Подиндекс"
 
 #: src/frontends/qt/ui/PrintindexUi.ui:71
 msgid ""
 "Pass index names literally to LaTeX. Check this if you want to use LaTeX "
 "code in index names."
 msgstr ""
+"Подаване на индексни имена дословно към LaTeX. Отметнете това ако искате "
+"да използвате код на LaTeX в имена на индекси."
 
 # src/frontends/xforms/FormPreferences.C:232
-#: src/frontends/qt/ui/ProgressViewUi.ui:93 src/frontends/qt/GuiPrefs.cpp:212
+#: src/frontends/qt/ui/ProgressViewUi.ui:93 src/frontends/qt/GuiPrefs.cpp:216
 msgid "Output"
-msgstr "Изходен документ"
+msgstr "Краен документ"
 
 # src/ext_l10n.h:344
 #: src/frontends/qt/ui/ProgressViewUi.ui:146
@@ -5932,21 +5931,18 @@ msgstr "<препратка> на стр. <страница>"
 
 # src/frontends/kde/refdlg.C:66
 #: src/frontends/qt/ui/RefUi.ui:262 src/frontends/qt/GuiRef.cpp:325
-#, fuzzy
 msgid "Formatted reference"
-msgstr "\"Хубава\" препратка"
+msgstr "Форматирана препратка"
 
 # src/frontends/kde/refdlg.C:30
 #: src/frontends/qt/ui/RefUi.ui:267 src/frontends/qt/GuiRef.cpp:324
-#, fuzzy
 msgid "Textual reference"
-msgstr "Достъпни препратки"
+msgstr "Текстова препратки"
 
 # src/frontends/xforms/FormPreferences.C:244
 #: src/frontends/qt/ui/RefUi.ui:272 src/frontends/qt/GuiRef.cpp:326
-#, fuzzy
 msgid "Label only"
-msgstr "Цветове"
+msgstr "Само етикет"
 
 #: src/frontends/qt/ui/RefUi.ui:310
 msgid ""
@@ -5979,140 +5975,124 @@ msgstr "Главни букви"
 msgid "Do not output part of label before \":\""
 msgstr "Не извежда частта от етикета преди „:“ (двоеточието)."
 
-#: src/frontends/qt/ui/RefUi.ui:333 lib/ui/stdcontext.inc:106
+#: src/frontends/qt/ui/RefUi.ui:333 lib/ui/stdcontext.inc:126
 msgid "No Prefix"
 msgstr "Без префикс"
 
-#: src/frontends/qt/ui/SearchUi.ui:34
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:52
 msgid "Find previous occurrence (Shift+Enter)"
-msgstr "Търсене на следващото съвпадение - клавиша „Нов ред“"
+msgstr "Търсене на предишно съвпадение - клавиша „Изместване“ + „Нов ред“"
 
 # src/form1.C:286
-#: src/frontends/qt/ui/SearchUi.ui:37 src/frontends/qt/FindAndReplace.cpp:642
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:55 src/frontends/qt/FindAndReplace.cpp:642
 msgid "&< Find"
-msgstr "&Търсене:"
+msgstr "< Търсене"
 
 # src/lyx_cb.C:230
-#: src/frontends/qt/ui/SearchUi.ui:47
+#: src/frontends/qt/ui/SearchUi.ui:65
 #, fuzzy
 msgid "Replace all occurrences"
 msgstr "Замяна на всички съвпадения наведнъж"
 
-#: src/frontends/qt/ui/SearchUi.ui:82 src/frontends/qt/GuiSearch.cpp:203
+#: src/frontends/qt/ui/SearchUi.ui:100 src/frontends/qt/GuiSearch.cpp:206
 msgid "Hide replace and option widgets"
 msgstr ""
 
 # src/frontends/xforms/FormPreferences.C:247
 # src/frontends/xforms/FormPreferences.C:264
 # src/frontends/xforms/FormPreferences.C:272 src/mathed/math_forms.C:46
-#: src/frontends/qt/ui/SearchUi.ui:85 src/frontends/qt/GuiSearch.cpp:202
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:103 src/frontends/qt/GuiSearch.cpp:205
 msgid "&Minimize"
-msgstr "Различни"
+msgstr "Минимизиране"
 
 # src/form1.C:290
-#: src/frontends/qt/ui/SearchUi.ui:92
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:110
 msgid "Rep&lace with:"
-msgstr "Замяна с:"
+msgstr "&Замяна с:"
 
 # src/frontends/gnome/FormCitation.C:453
-#: src/frontends/qt/ui/SearchUi.ui:102
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:120
 msgid "&Search:"
-msgstr "Търсене"
+msgstr "Търсене:"
 
-#: src/frontends/qt/ui/SearchUi.ui:137
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:155
 msgid "Replace and find next occurrence"
-msgstr "Търсене и замяна на следващото съвпадение - клавиша „Нов ред“"
+msgstr "Замяна и намиране на следващо съвпадение"
 
 # src/sp_form.C:86
-#: src/frontends/qt/ui/SearchUi.ui:143
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:161
 msgid "&Replace >"
-msgstr "Замяна"
+msgstr "Замяна >"
 
-#: src/frontends/qt/ui/SearchUi.ui:153
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:171
 msgid "Replace and find previous occurrence"
-msgstr "Търсене и замяна на следващото съвпадение - клавиша „Нов ред“"
+msgstr "Замяна и намиране на следващо съвпадение"
 
 # src/sp_form.C:86
-#: src/frontends/qt/ui/SearchUi.ui:156
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:174
 msgid "< Re&place"
-msgstr "Замяна"
+msgstr "< Замяна"
 
-#: src/frontends/qt/ui/SearchUi.ui:166
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:184
 msgid "Find next occurrence (Enter)"
-msgstr "Търсене на следващото съвпадение - клавиша „Нов ред“"
+msgstr "Намиране на следващо съвпадение - клавиша „Нов ред“"
 
-#: src/frontends/qt/ui/SearchUi.ui:204
+#: src/frontends/qt/ui/SearchUi.ui:228
 msgid "Treat uppercase/lowercase writing as distinct"
-msgstr ""
+msgstr "Различаване на малки и големи букви"
 
 # src/form1.C:310
-#: src/frontends/qt/ui/SearchUi.ui:207 src/frontends/qt/GuiSearch.cpp:99
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:231 src/frontends/qt/GuiSearch.cpp:100
 msgid "&Case sensitive[[search]]"
 msgstr "Различаване на малки от големи букви"
 
-#: src/frontends/qt/ui/SearchUi.ui:214
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:238
 msgid "Match whole words only"
-msgstr "&Съвпадение само на цели думи"
+msgstr "Съвпадение само на цели думи"
 
-#: src/frontends/qt/ui/SearchUi.ui:224
+#: src/frontends/qt/ui/SearchUi.ui:248
 msgid "Limit search and replace to selection"
-msgstr ""
+msgstr "Ограничаване на търсенето и замяна само до избрания текс"
 
 # src/LColor.C:64
-#: src/frontends/qt/ui/SearchUi.ui:227 src/frontends/qt/GuiSearch.cpp:103
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:251 src/frontends/qt/GuiSearch.cpp:104
 msgid "Selection onl&y"
-msgstr "Избраните елементи|И"
+msgstr "Само избрания текст"
 
-#: src/frontends/qt/ui/SearchUi.ui:234
+#: src/frontends/qt/ui/SearchUi.ui:258
 msgid "If this is checked, LyX will search forward immediately"
 msgstr ""
 
-#: src/frontends/qt/ui/SearchUi.ui:237 src/frontends/qt/GuiSearch.cpp:105
-#, fuzzy
+#: src/frontends/qt/ui/SearchUi.ui:261 src/frontends/qt/GuiSearch.cpp:106
 msgid "Search as yo&u type"
 msgstr "&Търсене докато се пише"
 
-#: src/frontends/qt/ui/SearchUi.ui:244
+#: src/frontends/qt/ui/SearchUi.ui:268
 msgid "If the end/start of the document is reached, automatically wrap around"
 msgstr ""
 
-#: src/frontends/qt/ui/SearchUi.ui:247 src/frontends/qt/GuiSearch.cpp:107
+#: src/frontends/qt/ui/SearchUi.ui:271 src/frontends/qt/GuiSearch.cpp:108
 #, fuzzy
 msgid "&Wrap"
 msgstr "плаващ в текста: "
 
 #: src/frontends/qt/ui/SendtoUi.ui:50
 msgid "Process the converted file with this command ($$FName = file name)"
-msgstr ""
+msgstr "Обработване на конвертирания файл с тази команда ($$FName = име_на_файл)"
 
 # src/frontends/xforms/form_preferences.C:761
 #: src/frontends/qt/ui/SendtoUi.ui:95
-#, fuzzy
 msgid "Export for&mats:"
-msgstr "&Поддържани формати за експорт:"
+msgstr "&Формати за експорт:"
 
 # src/LyXSendto.C:40
 #: src/frontends/qt/ui/SendtoUi.ui:105
-#, fuzzy
 msgid "Send exported file to &command:"
-msgstr "Подаване на експортирания документ към следната команда:"
+msgstr "Подаване на експортирания файл към командаjd:"
 
 #: src/frontends/qt/ui/ShortcutUi.ui:14
 msgid "Edit shortcut"
-msgstr ""
+msgstr "Редактиране на препратка"
 
 # src/mathed/math_forms.C:22
 #: src/frontends/qt/ui/ShortcutUi.ui:23
@@ -6121,13 +6101,12 @@ msgstr "Функция:"
 
 #: src/frontends/qt/ui/ShortcutUi.ui:33
 msgid "Enter LyX function or command sequence"
-msgstr ""
+msgstr "Въвеждане на LyX функция или последователност от команди"
 
 # src/ext_l10n.h:375
 #: src/frontends/qt/ui/ShortcutUi.ui:43
-#, fuzzy
 msgid "Short&cut:"
-msgstr "Подзаглавие"
+msgstr "Препратка:"
 
 #: src/frontends/qt/ui/ShortcutUi.ui:56
 msgid ""
@@ -6142,13 +6121,12 @@ msgstr ""
 # src/frontends/xforms/form_preferences.C:600
 # src/frontends/xforms/form_preferences.C:687
 #: src/frontends/qt/ui/ShortcutUi.ui:69
-#, fuzzy
 msgid "&Delete Key"
-msgstr "Изтрий(D)|#D"
+msgstr "Изтриване на ключ"
 
 #: src/frontends/qt/ui/ShortcutUi.ui:76
 msgid "Clear current shortcut"
-msgstr ""
+msgstr "Изчистване на текущата препратка"
 
 # src/lyx_gui_misc.C:430
 #: src/frontends/qt/ui/ShortcutUi.ui:79 src/frontends/qt/ui/TabularUi.ui:1106
@@ -6159,95 +6137,107 @@ msgstr "Премахване"
 #: src/frontends/qt/ui/SpellcheckerUi.ui:20
 #: src/frontends/qt/GuiSpellchecker.cpp:273
 #: src/frontends/qt/GuiSpellchecker.cpp:280
-#: src/frontends/qt/GuiSpellchecker.cpp:559
+#: src/frontends/qt/GuiSpellchecker.cpp:587
 msgid "Spell Checker"
 msgstr "Проверка на правописа"
 
-# src/lyx_cb.C:230
-#: src/frontends/qt/ui/SpellcheckerUi.ui:29
-#, fuzzy
-msgid "Replace with selected word"
-msgstr "Да го заменя ли с текущия документ?"
-
-# src/lyx_cb.C:230
-#: src/frontends/qt/ui/SpellcheckerUi.ui:45
-#, fuzzy
-msgid "Replace word with current choice"
-msgstr "Да го заменя ли с текущия документ?"
-
-# src/sp_form.C:86
-#: src/frontends/qt/ui/SpellcheckerUi.ui:48
-#: src/frontends/qt/ui/ThesaurusUi.ui:86
-msgid "&Replace"
-msgstr "Замяна"
-
-#: src/frontends/qt/ui/SpellcheckerUi.ui:73
+#: src/frontends/qt/ui/SpellcheckerUi.ui:44
 msgid ""
 "The checked language. Switching this alters the language of the checked word."
 msgstr ""
 
 # src/support/getUserName.C:13
-#: src/frontends/qt/ui/SpellcheckerUi.ui:82
-#, fuzzy
+#: src/frontends/qt/ui/SpellcheckerUi.ui:60
 msgid "Unknown &word:"
 msgstr "Непозната дума:"
 
-#: src/frontends/qt/ui/SpellcheckerUi.ui:92
+#: src/frontends/qt/ui/SpellcheckerUi.ui:70
 msgid "Current word"
-msgstr ""
+msgstr "Текуща дума"
+
+#: src/frontends/qt/ui/SpellcheckerUi.ui:77
+msgid "Skip this match and go to next misspelling"
+msgstr "Пропускане на това съвпадение и отиване до следващата грешка"
+
+#: src/frontends/qt/ui/SpellcheckerUi.ui:80
+msgid "S&kip"
+msgstr "Пропускане"
 
 # src/sp_form.C:86
-#: src/frontends/qt/ui/SpellcheckerUi.ui:99
-#, fuzzy
+#: src/frontends/qt/ui/SpellcheckerUi.ui:87
 msgid "Repla&cement:"
 msgstr "Заместване:"
 
+#: src/frontends/qt/ui/SpellcheckerUi.ui:97
+msgid "Skips all occurrences of this word within the current session."
+msgstr ""
+
+#: src/frontends/qt/ui/SpellcheckerUi.ui:100
+msgid "Skip A&ll"
+msgstr "Пропускане на всичко"
+
+# src/lyx_cb.C:230
+#: src/frontends/qt/ui/SpellcheckerUi.ui:110
+msgid "Replace with selected word"
+msgstr "Замяна с избраната дума"
+
+# src/lyx_cb.C:230
+#: src/frontends/qt/ui/SpellcheckerUi.ui:126
+msgid "Replace word with current choice"
+msgstr "Замяна на дума с текущия избор"
+
+# src/sp_form.C:86
+#: src/frontends/qt/ui/SpellcheckerUi.ui:129
+#: src/frontends/qt/ui/ThesaurusUi.ui:86
+msgid "&Replace"
+msgstr "Замяна"
+
 # src/ext_l10n.h:323
-#: src/frontends/qt/ui/SpellcheckerUi.ui:115
-#, fuzzy
+#: src/frontends/qt/ui/SpellcheckerUi.ui:142
 msgid "S&uggestions:"
-msgstr "Въпрос"
+msgstr "Предложения:"
+
+# src/lyx_cb.C:230
+#: src/frontends/qt/ui/SpellcheckerUi.ui:152
+msgid "Replace all occurrences of the word in the document with current choice"
+msgstr "Замяна на всички съвпадения на думата в документа с текущия избор"
 
 # src/form1.C:314
-#: src/frontends/qt/ui/SpellcheckerUi.ui:128
-#, fuzzy
+#: src/frontends/qt/ui/SpellcheckerUi.ui:155
 msgid "Re&place All"
 msgstr "Замяна на &всички"
 
-# src/sp_form.C:95
-#: src/frontends/qt/ui/SpellcheckerUi.ui:145
-#, fuzzy
-msgid "Add the word to your personal dictionary"
-msgstr "Вмъкни в личния речник(I)|#I"
-
-# src/spellchecker.C:717
-#: src/frontends/qt/ui/SpellcheckerUi.ui:148
-#, fuzzy
-msgid "&Add[[Spellchecker]]"
-msgstr "Правопис"
-
-# src/sp_form.C:97
-#: src/frontends/qt/ui/SpellcheckerUi.ui:171
-#, fuzzy
-msgid "Ignore this word"
-msgstr "Игнорирай(g)|#g"
+#: src/frontends/qt/ui/SpellcheckerUi.ui:165
+msgid "Ignore this occurrence of the word permanently"
+msgstr "Пропускане на това съвпадение на думата постоянно"
 
-#: src/frontends/qt/ui/SpellcheckerUi.ui:174
+#: src/frontends/qt/ui/SpellcheckerUi.ui:168
 msgid "Ign&ore"
-msgstr ""
+msgstr "Пропускане"
 
-# src/sp_form.C:99
-#: src/frontends/qt/ui/SpellcheckerUi.ui:181
-#, fuzzy
-msgid "Ignore this word throughout this session"
-msgstr "Приеми думата за тази сесия(A)|#A"
+#: src/frontends/qt/ui/SpellcheckerUi.ui:175
+msgid ""
+"Ignore all occurrences of this word within this document. This persists "
+"beyond the current session."
+msgstr ""
+"Пропускане на всички съвпадения на тази дума в документа. Това продължава "
+"и след текущата сесия."
 
 # src/lyxfont.C:43 src/lyxfont.C:47 src/lyxfont.C:52 src/lyxfont.C:58
 # src/lyxfont.C:62
-#: src/frontends/qt/ui/SpellcheckerUi.ui:184
-#, fuzzy
+#: src/frontends/qt/ui/SpellcheckerUi.ui:178
 msgid "I&gnore All"
-msgstr "Игнорирай"
+msgstr "Пропускане на всички"
+
+# src/sp_form.C:95
+#: src/frontends/qt/ui/SpellcheckerUi.ui:185
+msgid "Add the word to your personal dictionary"
+msgstr "Добавяне на дума във вашия личен речник"
+
+# src/spellchecker.C:717
+#: src/frontends/qt/ui/SpellcheckerUi.ui:188
+msgid "&Add[[Spellchecker]]"
+msgstr "Добавяне"
 
 #: src/frontends/qt/ui/SymbolsUi.ui:40
 msgid ""
@@ -6264,7 +6254,7 @@ msgstr "&Категория:"
 
 #: src/frontends/qt/ui/SymbolsUi.ui:73
 msgid "Select this to display all available characters at once"
-msgstr ""
+msgstr "Избиране за показване на всички налични знаци наведнъж"
 
 # src/frontends/xforms/FormGraphics.C:36
 # src/frontends/xforms/FormGraphics.C:359
@@ -6274,9 +6264,8 @@ msgstr "&Показване на всички"
 
 # src/insets/insetbib.C:340
 #: src/frontends/qt/ui/TabularCreateUi.ui:121
-#, fuzzy
 msgid "&Style:"
-msgstr "Стил"
+msgstr "&Стил:"
 
 # src/LColor.C:78
 #: src/frontends/qt/ui/TabularUi.ui:33
@@ -6364,7 +6353,7 @@ msgstr "градуса"
 # src/lyxfunc.C:3156 src/lyxfunc.C:3212 src/lyxfunc.C:3288
 #: src/frontends/qt/ui/TabularUi.ui:302
 msgid "Column settings"
-msgstr "Настройки на колоната"
+msgstr "Настройки на колона"
 
 #: src/frontends/qt/ui/TabularUi.ui:313
 msgid ""
@@ -6372,41 +6361,41 @@ msgid ""
 "text width</p><p>* Variable: Adjust to match table width</p><p>* Custom: "
 "Fixed custom width</p></body></html>"
 msgstr ""
-"<html><head/><body><p>Начин на задаване на ширината:</p><p>* според "
-"дължината на текста: разпъване за да обхване текста</p><p>* променлива: "
-"нагласяване според ширината на таблицата</p><p>* потребителска: зададена "
-"фиксирана ширина</p></body></html>"
+"<html><head/><body><p>Начин на задаване на ширината:</p><p>* обхваща "
+"текста: разтягане докато се обхване текста</p><p>* разтягане: "
+"разтягане до запълване на свободното пространство</p><p>* фиксирана: "
+"зададена от потребиталя фиксирана ширина</p></body></html>"
 
 # src/ext_l10n.h:126
 #: src/frontends/qt/ui/TabularUi.ui:317
 msgid "Text length"
-msgstr "дължина на текста"
+msgstr "обхваща текста"
 
 # src/LColor.C:97
 #: src/frontends/qt/ui/TabularUi.ui:322
 msgid "Variable[[Width]]"
-msgstr "променлива"
+msgstr "разтягане"
 
 # src/mathed/math_forms.C:140
 #: src/frontends/qt/ui/TabularUi.ui:327
 msgid "Custom[[Width]]"
-msgstr "потребителска"
+msgstr "фиксирана"
 
 # src/mathed/math_forms.C:152
 #: src/frontends/qt/ui/TabularUi.ui:335
 msgid "Horizontal alignment in column"
-msgstr "Хоризонтално подравняване на съдържанието в клетката"
+msgstr "Хоризонтално подравняване на колоната"
 
 #: src/frontends/qt/ui/TabularUi.ui:339 src/frontends/qt/GuiParagraph.cpp:114
-#: src/frontends/qt/GuiTabular.cpp:1040
+#: src/frontends/qt/GuiTabular.cpp:1046
 msgid "Justified"
 msgstr "двустранно"
 
 # src/frontends/xforms/form_document.C:244
-#: src/frontends/qt/ui/TabularUi.ui:359 src/frontends/qt/GuiTabular.cpp:243
-#: src/frontends/qt/GuiTabular.cpp:1042
+#: src/frontends/qt/ui/TabularUi.ui:359 src/frontends/qt/GuiTabular.cpp:249
+#: src/frontends/qt/GuiTabular.cpp:1048
 msgid "At Decimal Separator"
-msgstr "при десетичния разделител"
+msgstr "при разделителя"
 
 # src/mathed/math_forms.C:152
 #: src/frontends/qt/ui/TabularUi.ui:390
@@ -6429,7 +6418,7 @@ msgstr "&Верт. подравняване в реда:"
 # src/ext_l10n.h:141
 #: src/frontends/qt/ui/TabularUi.ui:437
 msgid "Custom width of the column"
-msgstr "Зададена от потребителя ширина на колона"
+msgstr "От потребителя зададена ширина на колона"
 
 # src/frontends/xforms/form_preferences.C:221
 #: src/frontends/qt/ui/TabularUi.ui:457
@@ -6459,7 +6448,7 @@ msgstr "Конфигуриране формата на колоната с па
 # src/frontends/xforms/form_tabular.C:349
 #: src/frontends/qt/ui/TabularUi.ui:566
 msgid "&Borders"
-msgstr "&Рамки"
+msgstr "&Кантове"
 
 # src/frontends/xforms/form_tabular.C:99
 #: src/frontends/qt/ui/TabularUi.ui:572
@@ -6468,13 +6457,13 @@ msgstr "Видими кантове"
 
 #: src/frontends/qt/ui/TabularUi.ui:1071
 msgid "Set borders of the current (selected) cell(s)"
-msgstr "Задаване на кантовете на текущо избраните клетки"
+msgstr "Поставяне на кантове на избраните клетки"
 
 # src/frontends/xforms/form_tabular.C:223
 # src/frontends/xforms/form_tabular.C:349
 #: src/frontends/qt/ui/TabularUi.ui:1084
 msgid "All Borders"
-msgstr "Всички рамки"
+msgstr "Всички кантове"
 
 #: src/frontends/qt/ui/TabularUi.ui:1093
 msgid "Set all borders of the current (selected) cell(s)"
@@ -6503,22 +6492,22 @@ msgstr "По подразбиране"
 msgid ""
 "If this is checked, the table will be reset to the formal default style "
 "(only top and bottom row have horizontal lines)"
-msgstr "Ако е активирана тази отметка "
+msgstr "Ако е активирана тази отметка, таблицата ще се възстанови до "
+"формалния стил по подразбиране - само горния и долния ред имат хориз. линии"
 
 # src/frontends/xforms/form_preferences.C:221
 #: src/frontends/qt/ui/TabularUi.ui:1138
-#, fuzzy
 msgid "Use Default &Formal Style"
-msgstr "Стандартен размер на лист"
+msgstr "Използване на формален стил по подразбиране"
 
 #: src/frontends/qt/ui/TabularUi.ui:1145
 msgid "Use formal (a.k.a. booktabs) border style (no vertical borders)"
-msgstr "Използване на официален стил (без вертикални кантове)"
+msgstr "Използване на формален стил таблица (без вертикални кантове)"
 
 # src/frontends/kde/paraextradlg.C:25 src/lyxfont.C:56
 #: src/frontends/qt/ui/TabularUi.ui:1148
 msgid "Fo&rmal"
-msgstr "Официален"
+msgstr "Формален"
 
 # src/frontends/xforms/form_paragraph.C:153
 #: src/frontends/qt/ui/TabularUi.ui:1177
@@ -6527,12 +6516,12 @@ msgstr "Допълнително разстояние"
 
 #: src/frontends/qt/ui/TabularUi.ui:1183
 msgid "T&op of row:"
-msgstr "Отгоре на реда:"
+msgstr "Над реда:"
 
 # src/frontends/xforms/form_paragraph.C:244
 #: src/frontends/qt/ui/TabularUi.ui:1243
 msgid "Botto&m of row:"
-msgstr "Отдолу на реда:"
+msgstr "Под реда:"
 
 #: src/frontends/qt/ui/TabularUi.ui:1256
 msgid "Bet&ween rows:"
@@ -6555,7 +6544,7 @@ msgstr "Пренасяне на нова страница"
 # src/form1.C:129 src/sp_form.C:58
 #: src/frontends/qt/ui/TabularUi.ui:1324
 msgid "Row settings"
-msgstr "Настройки на реда"
+msgstr "Настройки на ред"
 
 # src/ext_l10n.h:362
 #: src/frontends/qt/ui/TabularUi.ui:1330
@@ -6593,7 +6582,7 @@ msgstr ""
 # src/ext_l10n.h:398
 #: src/frontends/qt/ui/TabularUi.ui:1368 src/frontends/qt/ui/TabularUi.ui:1405
 #: src/frontends/qt/ui/TabularUi.ui:1446 src/frontends/qt/ui/TabularUi.ui:1477
-#: src/frontends/qt/ui/TabularUi.ui:1515 src/frontends/qt/GuiToolbar.cpp:641
+#: src/frontends/qt/ui/TabularUi.ui:1515 src/frontends/qt/GuiToolbar.cpp:654
 #: src/insets/InsetBranch.cpp:79 src/insets/InsetBranch.cpp:82
 msgid "on"
 msgstr "вкл."
@@ -6681,7 +6670,7 @@ msgstr "Подравняване на таблицата"
 
 #: src/frontends/qt/ui/TabularUi.ui:1599
 msgid "Current cell:"
-msgstr "Текуща клетка:"
+msgstr "Избрана клетка:"
 
 # src/ext_l10n.h:320
 #: src/frontends/qt/ui/TabularUi.ui:1621
@@ -6901,7 +6890,7 @@ msgstr "Преместване на избрания елемент нагоре
 
 #: src/frontends/qt/ui/TocUi.ui:203
 msgid "Adjust the depth of the navigation tree"
-msgstr ""
+msgstr "Нагласяне дълбочината на навигационното дърво"
 
 # src/frontends/kde/refdlg.C:57
 #: src/frontends/qt/ui/TocUi.ui:257
@@ -6922,28 +6911,27 @@ msgid ""
 "Filter items that are not output (in notes, inactive branches, deleted in "
 "change tracking, etc.)"
 msgstr ""
+"Филтриране на елементи, които не са активни - в бележки, неактивни разклонения, "
+"изтрити промени и др."
 
 # src/exporter.C:91
-#: src/frontends/qt/ui/TocUi.ui:317
-#, fuzzy
+#: src/frontends/qt/ui/TocUi.ui:317 src/frontends/qt/TocWidget.cpp:88
 msgid "All items"
-msgstr "всички файлове"
+msgstr "всички елементи"
 
 # src/ext_l10n.h:75
 #: src/frontends/qt/ui/TocUi.ui:322
-#, fuzzy
 msgid "Only output items"
-msgstr "Изтрий колона(D)|D"
+msgstr "само активни елементи"
 
 # src/ext_l10n.h:75
 #: src/frontends/qt/ui/TocUi.ui:327
-#, fuzzy
 msgid "Only non-output items"
-msgstr "Изтрий колона(D)|D"
+msgstr "само неактивни елементи"
 
 #: src/frontends/qt/ui/TocUi.ui:335
 msgid "Sho&w:"
-msgstr ""
+msgstr "&Покажи:"
 
 #: src/frontends/qt/ui/TocUi.ui:358
 msgid ""
@@ -6954,14 +6942,13 @@ msgstr ""
 
 # src/frontends/kde/FormIndex.C:96
 #: src/frontends/qt/ui/ToggleWarningUi.ui:14
-#, fuzzy
 msgid "Enter text"
-msgstr "LyX: Въвеждане на текст"
+msgstr "Въвеждане на текст"
 
 #: src/frontends/qt/ui/ToggleWarningUi.ui:62
 #: src/frontends/qt/GuiProgress.cpp:194
 msgid "If you check this, LyX will not warn you again in the given case."
-msgstr ""
+msgstr "Ако отметнете това LyX няма да ви предупреждава повече за този случай."
 
 #: src/frontends/qt/ui/ToggleWarningUi.ui:65
 #: src/frontends/qt/GuiProgress.cpp:193
@@ -6979,33 +6966,31 @@ msgid "DefSkip"
 msgstr "разстояние по подразбиране"
 
 # src/frontends/kde/parageneraldlg.C:39 src/frontends/kde/parageneraldlg.C:46
-#: src/frontends/qt/ui/VSpaceUi.ui:88 src/frontends/qt/GuiDocument.cpp:862
+#: src/frontends/qt/ui/VSpaceUi.ui:88 src/frontends/qt/GuiDocument.cpp:870
 msgid "SmallSkip"
 msgstr "малко разстояние"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
-#: src/frontends/qt/ui/VSpaceUi.ui:93 src/frontends/qt/GuiDocument.cpp:863
+#: src/frontends/qt/ui/VSpaceUi.ui:93 src/frontends/qt/GuiDocument.cpp:871
 msgid "MedSkip"
 msgstr "средно разстояние"
 
 # src/frontends/kde/parageneraldlg.C:41 src/frontends/kde/parageneraldlg.C:48
-#: src/frontends/qt/ui/VSpaceUi.ui:98 src/frontends/qt/GuiDocument.cpp:864
+#: src/frontends/qt/ui/VSpaceUi.ui:98 src/frontends/qt/GuiDocument.cpp:872
 msgid "BigSkip"
 msgstr "голямо разстояние"
 
 # src/ext_l10n.h:65
 #: src/frontends/qt/ui/VSpaceUi.ui:103 src/VSpace.cpp:201
-#: src/frontends/qt/GuiDocument.cpp:860
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:868
 msgid "Half line height"
-msgstr "основата вдясно"
+msgstr "половин ред височина"
 
 # src/form1.C:157 src/frontends/xforms/form_graphics.C:46
 #: src/frontends/qt/ui/VSpaceUi.ui:108 src/VSpace.cpp:204
-#: src/frontends/qt/GuiDocument.cpp:861
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:869
 msgid "Line height"
-msgstr "&Височина"
+msgstr "един ред височина"
 
 # src/frontends/kde/parageneraldlg.C:42 src/frontends/kde/parageneraldlg.C:49
 #: src/frontends/qt/ui/VSpaceUi.ui:113
@@ -7019,7 +7004,7 @@ msgstr "&Формат:"
 
 #: src/frontends/qt/ui/ViewSourceUi.ui:114
 msgid "Automatic update"
-msgstr "Автоматично опресняване"
+msgstr "Автоматична актуализация"
 
 #: src/frontends/qt/ui/ViewSourceUi.ui:130
 msgid "Show the source as the master document gets it"
@@ -7054,23 +7039,21 @@ msgid "Select the output format"
 msgstr "Избиране на изходния формат на документа"
 
 # src/sp_form.C:86
-#: src/frontends/qt/ui/WorkAreaUi.ui:82 src/frontends/qt/GuiView.cpp:3530
-#: src/frontends/qt/GuiView.cpp:4234
+#: src/frontends/qt/ui/WorkAreaUi.ui:82 src/frontends/qt/GuiView.cpp:3722
+#: src/frontends/qt/GuiView.cpp:4426
 msgid "&Reload"
 msgstr "&Презареждане"
 
 # src/lyxfont.C:43 src/lyxfont.C:47 src/lyxfont.C:52 src/lyxfont.C:58
 # src/lyxfont.C:62
 #: src/frontends/qt/ui/WorkAreaUi.ui:89
-#, fuzzy
 msgid "&Ignore"
-msgstr "Игнорирай"
+msgstr "Пропускане"
 
 # src/frontends/xforms/form_paragraph.C:153
 #: src/frontends/qt/ui/WrapUi.ui:33
-#, fuzzy
 msgid "Horizontal placement"
-msgstr "Интервал"
+msgstr "Хориз. поставяне"
 
 # src/ext_l10n.h:133
 #: src/frontends/qt/ui/WrapUi.ui:37
@@ -7084,7 +7067,7 @@ msgstr "вътрешно"
 
 #: src/frontends/qt/ui/WrapUi.ui:60
 msgid "Check this to allow flexible placement"
-msgstr ""
+msgstr "Отметка за позволяване на произволно поставяне"
 
 #: src/frontends/qt/ui/WrapUi.ui:63
 msgid "Allow &floating"
@@ -7092,15 +7075,14 @@ msgstr ""
 
 #: src/frontends/qt/ui/WrapUi.ui:70
 msgid "Wid&th:"
-msgstr ""
+msgstr "Ширина:"
 
 # src/form1.C:161 src/frontends/kde/dlg/paraextradlgdata.C:91
 # src/frontends/xforms/form_graphics.C:44
 # src/frontends/xforms/form_paragraph.C:219
 #: src/frontends/qt/ui/WrapUi.ui:108
-#, fuzzy
 msgid "Unit of width value"
-msgstr "Ширина"
+msgstr "Мерна единица за ширина"
 
 #: src/frontends/qt/ui/WrapUi.ui:115
 msgid "use overhang"
@@ -7124,9 +7106,8 @@ msgstr ""
 
 # src/frontends/kde/printdlg.C:31
 #: src/frontends/qt/ui/WrapUi.ui:169
-#, fuzzy
 msgid "use number of lines"
-msgstr "Брой копия за печат"
+msgstr "използване номера на редове"
 
 # src/mathed/math_panel.C:128
 #: src/frontends/qt/ui/WrapUi.ui:172
@@ -7136,20 +7117,20 @@ msgstr "Разстояние"
 
 # src/frontends/kde/printdlg.C:31
 #: src/frontends/qt/ui/WrapUi.ui:182
-#, fuzzy
 msgid "number of needed lines"
-msgstr "Брой копия за печат"
+msgstr "брой необходими редове"
 
 #: lib/citeengines/basic.citeengine:2
-#, fuzzy
 msgid "Basic (BibTeX)"
-msgstr "арабски (ArabTeX)"
+msgstr "Обикновена (BibTeX)"
 
 #: lib/citeengines/basic.citeengine:6
 msgid ""
 "The basic citation capabilities provided by BibTeX. Mainly simple numeric "
 "styles primarily suitable for science and maths."
 msgstr ""
+"Основни възможности зо цитиране осигурени от Бибтех (BibTeX). Главно прости "
+"числови стилове удобни за математика и др. науки."
 
 # src/ext_l10n.h:375
 #: lib/citeengines/basic.citeengine:52
@@ -7200,19 +7181,22 @@ msgid ""
 "than normal Biblatex. As with normal Biblatex, the use of 'biber' as "
 "Bibliography processor is advised."
 msgstr ""
+"Варианта BibLaTeX поддържа команди за Natbib цитати и така е най-удобен за "
+"преминаване от Natbib (или по-стари версии  от LyX 2.3) към Biblatex. "
+"Програмата Natbib поддържа малко по-различни и няколко допълнителни стила "
+"от нормалния Biblatex. Както и при обичайния Biblatex за билиографска програма "
+"се препоръчва използването на „biber“."
 
 # src/ext_l10n.h:82
 #: lib/citeengines/biblatex-natbib.citeengine:143
 #: lib/citeengines/biblatex.citeengine:133 lib/layouts/numreport.inc:42
 #: lib/layouts/stdcounters.inc:86
-#, fuzzy
 msgid "Footnote"
-msgstr "Бележки под черта"
+msgstr "Бележка под черта"
 
 # src/ext_l10n.h:246
 #: lib/citeengines/biblatex-natbib.citeengine:144
 #: lib/citeengines/biblatex.citeengine:134
-#, fuzzy
 msgid "Foot"
 msgstr "Бел. под черта"
 
@@ -7220,16 +7204,14 @@ msgstr "Бел. под черта"
 #: lib/citeengines/biblatex-natbib.citeengine:145
 #: lib/citeengines/biblatex.citeengine:135
 #: lib/citeengines/jurabib.citeengine:125
-#, fuzzy
 msgid "bibliography entry"
-msgstr "Библиография"
+msgstr "библиографски запис"
 
 # src/ext_l10n.h:186
 #: lib/citeengines/biblatex-natbib.citeengine:146
 #: lib/citeengines/biblatex.citeengine:136 lib/layouts/tufte-book.layout:30
-#, fuzzy
 msgid "Full bibliography entry."
-msgstr "Библиография"
+msgstr "Пълен библиографски запис."
 
 #: lib/citeengines/biblatex-natbib.citeengine:147
 #: lib/citeengines/biblatex.citeengine:137
@@ -7269,9 +7251,8 @@ msgstr "Горен индекс"
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
 #: lib/citeengines/biblatex.citeengine:2 src/insets/InsetBibtex.cpp:148
-#, fuzzy
 msgid "Biblatex"
-msgstr "Залепи"
+msgstr "Библатех (BibLaTeX)"
 
 #: lib/citeengines/biblatex.citeengine:8
 msgid ""
@@ -7280,19 +7261,22 @@ msgid ""
 "many features that are not possible with BibTeX. The use of 'biber' as "
 "bibliography processor is advised."
 msgstr ""
+"Библатех поддържа много автор-година и числови стилове. Насочен е главно към "
+"хуманитарните науки. Поддържа много настройки, напълно локализиран е и осигурява "
+"много функции, които не са достъпни с Бибтех (BibTeX). Препоръчва се "
+"използването на „biber“ като библиографски компилатор."
 
 #: lib/citeengines/biblatex.citeengine:140
 msgid "S&horten author list[[Possible substitute to All aut&hors]]"
-msgstr ""
+msgstr "Кратък списък с автори"
 
 #: lib/citeengines/biblatex.citeengine:141
 msgid "Force a short author list (using et al.)"
-msgstr ""
+msgstr "Налагане на кратък списък с автори използвайки „и др.“."
 
 #: lib/citeengines/jurabib.citeengine:2
-#, fuzzy
 msgid "Jurabib (BibTeX)"
-msgstr "арабски (ArabTeX)"
+msgstr "Jurabib (BibTeX)"
 
 #: lib/citeengines/jurabib.citeengine:7
 msgid ""
@@ -7300,28 +7284,27 @@ msgid ""
 "studies and the Humanities. It includes localizations for English, German, "
 "French, Dutch, Spanish and Italian."
 msgstr ""
+"Jurabib поддържа набор от автор-година стилове за цитиране главно удобни за "
+"юридическа литература и хуманитарни науки. Включва адаптация за английски, "
+"немски, френски, холандски, испански и италиански."
 
 # src/ext_l10n.h:186
 #: lib/citeengines/jurabib.citeengine:126
-#, fuzzy
 msgid "Bibliography entry."
-msgstr "Библиография"
+msgstr "Библиографски запис."
 
 #: lib/citeengines/jurabib.citeengine:127
-#, fuzzy
 msgid "before"
-msgstr "Текст преди(T)|#T"
+msgstr "преди"
 
 # src/ext_l10n.h:375
 #: lib/citeengines/jurabib.citeengine:128
-#, fuzzy
 msgid "short title"
-msgstr "Подзаглавие"
+msgstr "кратко заглавие"
 
 #: lib/citeengines/natbib.citeengine:2
-#, fuzzy
 msgid "Natbib (BibTeX)"
-msgstr "арабски (ArabTeX)"
+msgstr "Natbib (BibTeX)"
 
 #: lib/citeengines/natbib.citeengine:8
 msgid ""
@@ -7333,7 +7316,7 @@ msgstr ""
 
 #: lib/layouts/AEA.layout:3 lib/examples/Articles:0
 msgid "American Economic Association (AEA)"
-msgstr ""
+msgstr "Американска икономическа асоциация (AEA)"
 
 # src/frontends/xforms/form_paragraph.C:153
 #: lib/layouts/AEA.layout:4 lib/layouts/IEEEtran-CompSoc.layout:4
@@ -7372,9 +7355,8 @@ msgstr "Статии"
 
 # src/ext_l10n.h:375
 #: lib/layouts/AEA.layout:50 lib/layouts/apa.layout:109 lib/layouts/apax.inc:54
-#, fuzzy
 msgid "ShortTitle"
-msgstr "Подзаглавие"
+msgstr "Кратко заглавие"
 
 # падащ списък на контекста
 #: lib/layouts/AEA.layout:51 lib/layouts/AEA.layout:130
@@ -7471,59 +7453,51 @@ msgstr "предни части"
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/AEA.layout:61
-#, fuzzy
 msgid "Publication Month"
-msgstr "Абзац разделяне"
+msgstr "Месец на публекация"
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/AEA.layout:67
-#, fuzzy
 msgid "Publication Month:"
-msgstr "Абзац разделяне"
+msgstr "Месец на публикация:"
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/AEA.layout:79
-#, fuzzy
 msgid "Publication Year"
-msgstr "Абзац разделяне"
+msgstr "Година на публикация"
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/AEA.layout:82
-#, fuzzy
 msgid "Publication Year:"
-msgstr "Абзац разделяне"
+msgstr "Година на публикация:"
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/AEA.layout:90
-#, fuzzy
 msgid "Publication Volume"
-msgstr "Абзац разделяне"
+msgstr "Том на публикация"
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/AEA.layout:93
-#, fuzzy
 msgid "Publication Volume:"
-msgstr "Абзац разделяне"
+msgstr "Том на публикация:"
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/AEA.layout:99
-#, fuzzy
 msgid "Publication Issue"
-msgstr "Абзац разделяне"
+msgstr "Издание на публикация"
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/AEA.layout:102
-#, fuzzy
 msgid "Publication Issue:"
-msgstr "Абзац разделяне"
+msgstr "Издание на публикация:"
 
 #: lib/layouts/AEA.layout:109
 msgid "JEL"
-msgstr ""
+msgstr "JEL"
 
 #: lib/layouts/AEA.layout:112
 msgid "JEL:"
-msgstr ""
+msgstr "JEL:"
 
 # src/ext_l10n.h:263
 #: lib/layouts/AEA.layout:115 lib/layouts/IEEEtran-CompSoc.layout:55
@@ -7624,20 +7598,19 @@ msgstr "Резюме"
 #: lib/layouts/theorems-ams-extended.module:348
 #: lib/layouts/theorems-counters-extended-bytype.inc:28
 msgid "Acknowledgement"
-msgstr "Признателност"
+msgstr "Благодарност"
 
 #: lib/layouts/AEA.layout:131 lib/layouts/egs.layout:627
 #: lib/layouts/theorems-ams-extended-bytype.module:349
 #: lib/layouts/theorems-ams-extended-chap-bytype.module:420
 #: lib/layouts/theorems-ams-extended.module:339
 msgid "Acknowledgement."
-msgstr "Признателност."
+msgstr "Благодарност."
 
 # src/ext_l10n.h:244
 #: lib/layouts/AEA.layout:140
-#, fuzzy
 msgid "Figure Notes"
-msgstr "Фигура"
+msgstr "Текст на изображение"
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
 # падащ списък на контекста
@@ -7648,10 +7621,10 @@ msgstr "Фигура"
 #: lib/layouts/acmsiggraph-0-92.layout:44 lib/layouts/acmsiggraph.layout:36
 #: lib/layouts/agutex.layout:33 lib/layouts/amsart.layout:33
 #: lib/layouts/amsbook.layout:34 lib/layouts/apa.layout:26
-#: lib/layouts/apax.inc:22 lib/layouts/beamer.layout:65
-#: lib/layouts/beamer.layout:1209 lib/layouts/beamer.layout:1236
-#: lib/layouts/beamer.layout:1263 lib/layouts/beamer.layout:1388
-#: lib/layouts/beamer.layout:1425 lib/layouts/broadway.layout:179
+#: lib/layouts/apax.inc:22 lib/layouts/beamer.layout:67
+#: lib/layouts/beamer.layout:1211 lib/layouts/beamer.layout:1238
+#: lib/layouts/beamer.layout:1265 lib/layouts/beamer.layout:1390
+#: lib/layouts/beamer.layout:1427 lib/layouts/broadway.layout:179
 #: lib/layouts/cl2emult.layout:152 lib/layouts/db_stdclass.inc:17
 #: lib/layouts/dtk.layout:33 lib/layouts/egs.layout:20
 #: lib/layouts/elsart.layout:51 lib/layouts/elsarticle.layout:36
@@ -7679,49 +7652,45 @@ msgstr "Фигура"
 #: lib/layouts/stdlayouts.inc:38 lib/layouts/stdlayouts.inc:63
 #: lib/layouts/stdlayouts.inc:85 lib/layouts/stdletter.inc:13
 #: lib/layouts/svcommon.inc:27 lib/layouts/svcommon.inc:710
-#: lib/layouts/svcommon.inc:721 lib/layouts/tufte-book.layout:236
+#: lib/layouts/svcommon.inc:721 lib/layouts/tufte-book.layout:242
 msgid "MainText"
 msgstr "текст"
 
 # src/ext_l10n.h:244
 #: lib/layouts/AEA.layout:147
-#, fuzzy
 msgid "Figure Note"
-msgstr "Фигура"
+msgstr "Бележка на изображение"
 
 #: lib/layouts/AEA.layout:148 lib/layouts/AEA.layout:175
 msgid "Text of a note in a figure"
-msgstr ""
+msgstr "Текст на бележка в изображение"
 
 # src/ext_l10n.h:291 src/insets/insetinfo.C:77 src/insets/insetinfo.C:102
 # src/insets/insetinfo.C:231
 #: lib/layouts/AEA.layout:156 lib/layouts/apax.inc:240
-#: lib/layouts/beamer.layout:1437 lib/layouts/powerdot.layout:228
+#: lib/layouts/beamer.layout:1439 lib/layouts/powerdot.layout:228
 msgid "Note:"
 msgstr "Бележка:"
 
 # src/LColor.C:97
 #: lib/layouts/AEA.layout:169
-#, fuzzy
 msgid "Table Notes"
-msgstr "ред на таблица"
+msgstr "Бележки в таблица"
 
 # src/LColor.C:97
 #: lib/layouts/AEA.layout:173
-#, fuzzy
 msgid "Table Note"
-msgstr "ред на таблица"
+msgstr "Бележка в таблица"
 
 # src/buffer.C:3331
 #: lib/layouts/AEA.layout:174
-#, fuzzy
 msgid "Text of a note in a table"
-msgstr "Недъзможна е работата с файл: "
+msgstr "Текст на бележка в таблица"
 
 # src/ext_l10n.h:387
 #: lib/layouts/AEA.layout:180 lib/layouts/IEEEtran.layout:49
 #: lib/layouts/acmart.layout:548 lib/layouts/acmart.layout:552
-#: lib/layouts/beamer.layout:1376 lib/layouts/elsart.layout:306
+#: lib/layouts/beamer.layout:1378 lib/layouts/elsart.layout:306
 #: lib/layouts/elsart.layout:310 lib/layouts/foils.layout:248
 #: lib/layouts/heb-article.layout:28 lib/layouts/ijmpc.layout:421
 #: lib/layouts/ijmpd.layout:428 lib/layouts/ijmpd.layout:431
@@ -7914,7 +7883,7 @@ msgid "Conjecture"
 msgstr "Предположение"
 
 #: lib/layouts/AEA.layout:241 lib/layouts/acmart.layout:587
-#: lib/layouts/beamer.layout:1292 lib/layouts/elsart.layout:381
+#: lib/layouts/beamer.layout:1294 lib/layouts/elsart.layout:381
 #: lib/layouts/foils.layout:281 lib/layouts/heb-article.layout:66
 #: lib/layouts/ijmpc.layout:442 lib/layouts/ijmpd.layout:457
 #: lib/layouts/ijmpd.layout:460 lib/layouts/llncs.layout:353
@@ -7964,7 +7933,7 @@ msgstr "Признак"
 
 # src/ext_l10n.h:221
 #: lib/layouts/AEA.layout:256 lib/layouts/acmart.layout:615
-#: lib/layouts/beamer.layout:1330 lib/layouts/elsart.layout:417
+#: lib/layouts/beamer.layout:1332 lib/layouts/elsart.layout:417
 #: lib/layouts/foils.layout:295 lib/layouts/heb-article.layout:86
 #: lib/layouts/llncs.layout:367 lib/layouts/siamltex.layout:128
 #: lib/layouts/svmono.layout:34 lib/layouts/theorems-ams-bytype.inc:180
@@ -7991,7 +7960,7 @@ msgstr "Определение"
 
 # src/ext_l10n.h:232
 #: lib/layouts/AEA.layout:263 lib/layouts/acmart.layout:629
-#: lib/layouts/beamer.layout:1342 lib/layouts/elsart.layout:442
+#: lib/layouts/beamer.layout:1344 lib/layouts/elsart.layout:442
 #: lib/layouts/linguistics.module:18 lib/layouts/llncs.layout:374
 #: lib/layouts/svmono.layout:74 lib/layouts/theorems-ams-bytype.inc:207
 #: lib/layouts/theorems-ams-bytype.inc:217
@@ -8012,7 +7981,7 @@ msgstr "Определение"
 #: lib/layouts/theorems-without-preamble.inc:240
 #: lib/layouts/theorems-without-preamble.inc:243 lib/layouts/theorems.inc:204
 #: lib/layouts/theorems.inc:213 lib/layouts/theorems.inc:216
-#: src/frontends/qt/GuiDocument.cpp:1344
+#: src/frontends/qt/GuiDocument.cpp:1356
 msgid "Example"
 msgstr "Пример"
 
@@ -8044,7 +8013,7 @@ msgstr "Упражнение"
 
 # src/ext_l10n.h:271
 #: lib/layouts/AEA.layout:277 lib/layouts/acmart.layout:594
-#: lib/layouts/beamer.layout:1364 lib/layouts/elsart.layout:372
+#: lib/layouts/beamer.layout:1366 lib/layouts/elsart.layout:372
 #: lib/layouts/foils.layout:274 lib/layouts/heb-article.layout:56
 #: lib/layouts/ijmpc.layout:446 lib/layouts/ijmpd.layout:465
 #: lib/layouts/ijmpd.layout:468 lib/layouts/llncs.layout:388
@@ -8241,14 +8210,14 @@ msgid "Summary"
 msgstr "обобщение"
 
 # src/ext_l10n.h:191
-#: lib/layouts/AEA.layout:333 src/frontends/qt/Menus.cpp:1787
-#: src/frontends/qt/Menus.cpp:1802
+#: lib/layouts/AEA.layout:333 src/frontends/qt/Menus.cpp:1803
+#: src/frontends/qt/Menus.cpp:1818
 msgid "Caption"
 msgstr "надпис"
 
 # src/ext_l10n.h:318
 #: lib/layouts/AEA.layout:344 lib/layouts/IEEEtran.layout:448
-#: lib/layouts/beamer.layout:1370 lib/layouts/elsart.layout:342
+#: lib/layouts/beamer.layout:1372 lib/layouts/elsart.layout:342
 #: lib/layouts/foils.layout:309 lib/layouts/heb-article.layout:106
 #: lib/layouts/ijmpc.layout:399 lib/layouts/ijmpd.layout:405
 #: lib/layouts/llncs.layout:408 lib/layouts/siamltex.layout:157
@@ -8261,7 +8230,7 @@ msgstr "Доказателство"
 
 #: lib/layouts/IEEEtran-CompSoc.layout:3 lib/examples/Articles:0
 msgid "IEEE Transactions Computer Society"
-msgstr ""
+msgstr "IEEE Общество за компютърни трансакции"
 
 # src/ext_l10n.h:361
 #: lib/layouts/IEEEtran-CompSoc.layout:19
@@ -8295,13 +8264,12 @@ msgstr ""
 
 #: lib/layouts/IEEEtran-TransMag.layout:3 lib/examples/Articles:0
 msgid "IEEE Transactions on Magnetics"
-msgstr ""
+msgstr "IEEE Трансакции по магнетизъм"
 
 # src/ext_l10n.h:400
 #: lib/layouts/IEEEtran.layout:3
-#, fuzzy
 msgid "IEEE Transactions"
-msgstr "Преход"
+msgstr "IEEE трансакции"
 
 # src/ext_l10n.h:361
 #: lib/layouts/IEEEtran.layout:35 lib/layouts/aa.layout:36
@@ -8310,7 +8278,7 @@ msgstr "Преход"
 #: lib/layouts/acmsiggraph-0-92.layout:43 lib/layouts/acmsiggraph.layout:35
 #: lib/layouts/agutex.layout:32 lib/layouts/amsart.layout:32
 #: lib/layouts/amsbook.layout:33 lib/layouts/apa.layout:25
-#: lib/layouts/apax.inc:21 lib/layouts/beamer.layout:64
+#: lib/layouts/apax.inc:21 lib/layouts/beamer.layout:66
 #: lib/layouts/broadway.layout:178 lib/layouts/chess.layout:30
 #: lib/layouts/cl2emult.layout:151 lib/layouts/db_stdclass.inc:16
 #: lib/layouts/dtk.layout:32 lib/layouts/egs.layout:19
@@ -8330,9 +8298,9 @@ msgstr "Преход"
 #: lib/layouts/scrlttr2.layout:19 lib/layouts/siamltex.layout:37
 #: lib/layouts/sigplanconf.layout:41 lib/layouts/simplecv.layout:18
 #: lib/layouts/slides.layout:61 lib/layouts/stdclass.inc:28
-#: lib/layouts/stdinsets.inc:687 lib/layouts/stdletter.inc:12
+#: lib/layouts/stdinsets.inc:688 lib/layouts/stdletter.inc:12
 #: lib/layouts/svcommon.inc:26 lib/layouts/tufte-book.layout:35
-#: src/insets/InsetRef.cpp:595
+#: src/insets/InsetRef.cpp:597
 msgid "Standard"
 msgstr "По подразбиране"
 
@@ -8343,7 +8311,7 @@ msgstr "По подразбиране"
 #: lib/layouts/acmart.layout:145 lib/layouts/acmsiggraph-0-92.layout:165
 #: lib/layouts/acmsiggraph.layout:141 lib/layouts/agutex.layout:56
 #: lib/layouts/amsdefs.inc:27 lib/layouts/apa.layout:42 lib/layouts/apax.inc:38
-#: lib/layouts/beamer.layout:984 lib/layouts/beamerposter.layout:21
+#: lib/layouts/beamer.layout:986 lib/layouts/beamerposter.layout:21
 #: lib/layouts/broadway.layout:192 lib/layouts/cl2emult.layout:41
 #: lib/layouts/copernicus.layout:34 lib/layouts/docbook-book.layout:18
 #: lib/layouts/docbook-chapter.layout:14 lib/layouts/docbook-section.layout:14
@@ -8370,19 +8338,17 @@ msgstr "Заглавие"
 
 #: lib/layouts/IEEEtran.layout:91 lib/layouts/IEEEtran.layout:96
 msgid "IEEE membership"
-msgstr ""
+msgstr "IEEE членство"
 
 # src/lyxfunc.C:1125
 #: lib/layouts/IEEEtran.layout:112 lib/layouts/revtex4-x.inc:350
-#, fuzzy
 msgid "Lowercase"
-msgstr "overset"
+msgstr "Малки букви"
 
 # src/lyxfunc.C:1125
 #: lib/layouts/IEEEtran.layout:116
-#, fuzzy
 msgid "lowercase"
-msgstr "overset"
+msgstr "малки бекви"
 
 # src/ext_l10n.h:175
 #: lib/layouts/IEEEtran.layout:123 lib/layouts/aa.layout:237
@@ -8391,7 +8357,7 @@ msgstr "overset"
 #: lib/layouts/achemso.layout:84 lib/layouts/acmart.layout:81
 #: lib/layouts/acmsiggraph-0-92.layout:178 lib/layouts/acmsiggraph.layout:154
 #: lib/layouts/amsdefs.inc:57 lib/layouts/apa.layout:139
-#: lib/layouts/apax.inc:80 lib/layouts/beamer.layout:1048
+#: lib/layouts/apax.inc:80 lib/layouts/beamer.layout:1050
 #: lib/layouts/beamerposter.layout:31 lib/layouts/broadway.layout:210
 #: lib/layouts/cl2emult.layout:63 lib/layouts/copernicus.layout:61
 #: lib/layouts/ectaart.layout:131 lib/layouts/ectaart.layout:217
@@ -8414,45 +8380,40 @@ msgid "Author"
 msgstr "Автор"
 
 # src/ext_l10n.h:375
-#: lib/layouts/IEEEtran.layout:129 lib/layouts/beamer.layout:1061
+#: lib/layouts/IEEEtran.layout:129 lib/layouts/beamer.layout:1063
 #, fuzzy
 msgid "Short Author|S"
 msgstr "Подзаглавие"
 
 #: lib/layouts/IEEEtran.layout:130
 msgid "A short version of the author name"
-msgstr ""
+msgstr "Кратка версия на името на автора"
 
 # src/ext_l10n.h:175
 #: lib/layouts/IEEEtran.layout:152
-#, fuzzy
 msgid "Author Name"
-msgstr "Автор"
+msgstr "Име на автор"
 
 # src/ext_l10n.h:175
 #: lib/layouts/IEEEtran.layout:158
-#, fuzzy
 msgid "Author name"
-msgstr "Автор"
+msgstr "Име на автор"
 
 # src/ext_l10n.h:221
 #: lib/layouts/IEEEtran.layout:170
-#, fuzzy
 msgid "Author Affiliation"
-msgstr "Дефиниция"
+msgstr "Принадлежност на автор"
 
 # src/ext_l10n.h:221
 #: lib/layouts/IEEEtran.layout:173 lib/layouts/agutex.layout:122
 #: lib/layouts/copernicus.layout:67
-#, fuzzy
 msgid "Author affiliation"
-msgstr "Дефиниция"
+msgstr "Принадлежност на автор"
 
 # src/ext_l10n.h:175
 #: lib/layouts/IEEEtran.layout:184
-#, fuzzy
 msgid "Author Mark"
-msgstr "Автор"
+msgstr "Знак на автор"
 
 # src/ext_l10n.h:175
 #: lib/layouts/IEEEtran.layout:189 lib/layouts/elsarticle.layout:174
@@ -8511,9 +8472,8 @@ msgstr "Индекс запис"
 
 # src/insets/insetbib.C:219
 #: lib/layouts/IEEEtran.layout:316 lib/layouts/IEEEtran.layout:320
-#, fuzzy
 msgid "Paragraph Start"
-msgstr "Библ. перо"
+msgstr "Начало на абзац"
 
 # src/ext_l10n.h:337
 #: lib/layouts/IEEEtran.layout:324
@@ -8523,7 +8483,7 @@ msgstr "Заглавие"
 
 #: lib/layouts/IEEEtran.layout:325
 msgid "First character of first word"
-msgstr ""
+msgstr "Първа буква на първата дума"
 
 # src/ext_l10n.h:173
 #: lib/layouts/IEEEtran.layout:334 lib/layouts/IEEEtran.layout:344
@@ -8539,7 +8499,7 @@ msgstr "Приложения"
 #: lib/layouts/acmsiggraph.layout:305 lib/layouts/agutex.layout:167
 #: lib/layouts/agutex.layout:177 lib/layouts/agutex.layout:197
 #: lib/layouts/agutex.layout:223 lib/layouts/amsdefs.inc:266
-#: lib/layouts/apa.layout:244 lib/layouts/beamer.layout:1169
+#: lib/layouts/apa.layout:244 lib/layouts/beamer.layout:1171
 #: lib/layouts/copernicus.layout:437 lib/layouts/egs.layout:588
 #: lib/layouts/egs.layout:639 lib/layouts/elsarticle.layout:333
 #: lib/layouts/europasscv.layout:539 lib/layouts/europecv.layout:380
@@ -8583,7 +8543,7 @@ msgstr "Автозаписът пропадна!"
 #: lib/layouts/ijmpc.layout:496 lib/layouts/ijmpc.layout:498
 #: lib/layouts/ijmpd.layout:520 lib/layouts/ijmpd.layout:522
 #: lib/layouts/kluwer.layout:364 lib/layouts/kluwer.layout:377
-#: lib/examples/Articles:0 src/RowPainter.cpp:366
+#: lib/examples/Articles:0 src/RowPainter.cpp:374
 msgid "Appendix"
 msgstr "приложение"
 
@@ -8602,7 +8562,7 @@ msgstr "Кратко заглавие на приложението"
 #: lib/layouts/aapaper.layout:234 lib/layouts/aastex.layout:450
 #: lib/layouts/aguplus.inc:172 lib/layouts/aguplus.inc:174
 #: lib/layouts/agutex.layout:219 lib/layouts/amsbook.layout:121
-#: lib/layouts/amsdefs.inc:265 lib/layouts/beamer.layout:1168
+#: lib/layouts/amsdefs.inc:265 lib/layouts/beamer.layout:1170
 #: lib/layouts/book.layout:24 lib/layouts/book.layout:26
 #: lib/layouts/cl2emult.layout:115 lib/layouts/copernicus.layout:433
 #: lib/layouts/egs.layout:638 lib/layouts/elsarticle.layout:329
@@ -8620,16 +8580,16 @@ msgstr "Кратко заглавие на приложението"
 #: lib/layouts/scrreprt.layout:12 lib/layouts/scrreprt.layout:14
 #: lib/layouts/siamltex.layout:339 lib/layouts/simplecv.layout:196
 #: lib/layouts/stdstruct.inc:59 lib/layouts/svcommon.inc:657
-#: lib/layouts/tufte-book.layout:292 lib/layouts/tufte-book.layout:294
+#: lib/layouts/tufte-book.layout:298 lib/layouts/tufte-book.layout:300
 #: lib/layouts/tufte-handout.layout:77 lib/examples/Articles:0
-#: src/frontends/qt/GuiDocument.cpp:1771 src/insets/InsetBibtex.cpp:957
+#: src/frontends/qt/GuiDocument.cpp:1785 src/insets/InsetBibtex.cpp:957
 msgid "Bibliography"
 msgstr "Литература"
 
 # src/ext_l10n.h:329
 #: lib/layouts/IEEEtran.layout:389 lib/layouts/aastex.layout:464
 #: lib/layouts/aastex.layout:485 lib/layouts/agutex.layout:235
-#: lib/layouts/amsdefs.inc:281 lib/layouts/beamer.layout:1183
+#: lib/layouts/amsdefs.inc:281 lib/layouts/beamer.layout:1185
 #: lib/layouts/cl2emult.layout:130 lib/layouts/copernicus.layout:449
 #: lib/layouts/egs.layout:654 lib/layouts/elsarticle.layout:345
 #: lib/layouts/ijmpc.layout:540 lib/layouts/ijmpd.layout:564
@@ -8647,7 +8607,7 @@ msgstr "Препратки"
 # src/frontends/xforms/form_preferences.C:896
 #: lib/layouts/IEEEtran.layout:398 lib/layouts/aastex.layout:474
 #: lib/layouts/agutex.layout:244 lib/layouts/amsdefs.inc:293
-#: lib/layouts/beamer.layout:1192 lib/layouts/cl2emult.layout:139
+#: lib/layouts/beamer.layout:1194 lib/layouts/cl2emult.layout:139
 #: lib/layouts/copernicus.layout:457 lib/layouts/egs.layout:662
 #: lib/layouts/elsarticle.layout:354 lib/layouts/ijmpc.layout:549
 #: lib/layouts/ijmpd.layout:573 lib/layouts/iopart.layout:346
@@ -8662,7 +8622,7 @@ msgstr "заглавна част на лит. списък"
 # src/ext_l10n.h:186
 #: lib/layouts/IEEEtran.layout:399 lib/layouts/aastex.layout:475
 #: lib/layouts/agutex.layout:245 lib/layouts/amsdefs.inc:294
-#: lib/layouts/beamer.layout:1193 lib/layouts/cl2emult.layout:140
+#: lib/layouts/beamer.layout:1195 lib/layouts/cl2emult.layout:140
 #: lib/layouts/copernicus.layout:458 lib/layouts/egs.layout:663
 #: lib/layouts/elsarticle.layout:355 lib/layouts/ijmpc.layout:550
 #: lib/layouts/ijmpd.layout:574 lib/layouts/iopart.layout:347
@@ -8676,7 +8636,7 @@ msgstr "Заглавна част на лит. списък"
 
 #: lib/layouts/IEEEtran.layout:400 lib/layouts/aastex.layout:476
 #: lib/layouts/agutex.layout:246 lib/layouts/amsdefs.inc:295
-#: lib/layouts/beamer.layout:1194 lib/layouts/cl2emult.layout:141
+#: lib/layouts/beamer.layout:1196 lib/layouts/cl2emult.layout:141
 #: lib/layouts/copernicus.layout:459 lib/layouts/egs.layout:664
 #: lib/layouts/elsarticle.layout:356 lib/layouts/ijmpc.layout:551
 #: lib/layouts/ijmpd.layout:575 lib/layouts/iopart.layout:348
@@ -8696,11 +8656,11 @@ msgstr "Биография"
 
 #: lib/layouts/IEEEtran.layout:415 lib/layouts/moderncv.layout:275
 msgid "Photo"
-msgstr ""
+msgstr "Снимка"
 
 #: lib/layouts/IEEEtran.layout:416
 msgid "Optional photo for biography"
-msgstr ""
+msgstr "Незадължителна снимка за биография"
 
 # src/ext_l10n.h:288 src/frontends/gnome/FormUrl.C:119
 #: lib/layouts/IEEEtran.layout:421 lib/layouts/IEEEtran.layout:438
@@ -8721,25 +8681,22 @@ msgstr "Име"
 # src/lyxrc.C:1838
 #: lib/layouts/IEEEtran.layout:422 lib/layouts/IEEEtran.layout:439
 #: lib/layouts/sigplanconf.layout:165
-#, fuzzy
 msgid "Name of the author"
-msgstr "Укажете стандартния размер на хартията."
+msgstr "Име на автора"
 
 # src/ext_l10n.h:187
 #: lib/layouts/IEEEtran.layout:431
-#, fuzzy
 msgid "Biography without photo"
 msgstr "Биография без снимка"
 
 # src/ext_l10n.h:187
 #: lib/layouts/IEEEtran.layout:443
-#, fuzzy
 msgid "BiographyNoPhoto"
-msgstr "Биография"
+msgstr "Биография без снимка"
 
 # src/ext_l10n.h:298
 #: lib/layouts/IEEEtran.layout:449 lib/layouts/acmart.layout:553
-#: lib/layouts/beamer.layout:1293 lib/layouts/elsart.layout:311
+#: lib/layouts/beamer.layout:1295 lib/layouts/elsart.layout:311
 #: lib/layouts/elsart.layout:343 lib/layouts/foils.layout:249
 #: lib/layouts/heb-article.layout:29 lib/layouts/heb-article.layout:107
 #: lib/layouts/ijmpc.layout:402 lib/layouts/ijmpd.layout:408
@@ -8750,25 +8707,22 @@ msgstr "Биография"
 #: lib/layouts/theorems-named.module:13 lib/layouts/theorems-named.module:58
 #: lib/layouts/theorems-proof.inc:14 lib/layouts/theorems-starred.inc:27
 #: lib/layouts/theorems-without-preamble.inc:39 lib/layouts/theorems.inc:28
-#, fuzzy
 msgid "Reasoning"
-msgstr "Отваряне"
+msgstr "Разсъждаване"
 
 # src/frontends/xforms/form_preferences.C:278
 #: lib/layouts/IEEEtran.layout:455 lib/layouts/siamltex.layout:163
 #: lib/layouts/theorems-proof.inc:21
-#, fuzzy
 msgid "Alternative Proof String"
-msgstr "Използвай алтернативен език"
+msgstr "Текст на алтернативно доказателство"
 
 # src/frontends/xforms/form_preferences.C:278
 #: lib/layouts/IEEEtran.layout:456 lib/layouts/siamltex.layout:164
-#, fuzzy
 msgid "An alternative proof string"
-msgstr "Използвай алтернативен език"
+msgstr "Текст на алтернативно доказателство"
 
 # src/ext_l10n.h:318
-#: lib/layouts/IEEEtran.layout:468 lib/layouts/beamer.layout:1373
+#: lib/layouts/IEEEtran.layout:468 lib/layouts/beamer.layout:1375
 #: lib/layouts/foils.layout:312 lib/layouts/llncs.layout:411
 #: lib/layouts/siamltex.layout:176 lib/layouts/svcommon.inc:748
 #: lib/layouts/svmono.layout:103 lib/layouts/svmono.layout:107
@@ -8778,12 +8732,12 @@ msgstr "Доказателство."
 
 #: lib/layouts/InStar.module:2
 msgid "Title and Preamble Hacks"
-msgstr ""
+msgstr "Подобрения в заглавието и преамбюла"
 
 #: lib/layouts/InStar.module:3 lib/layouts/fix-cm.module:3
 #: lib/layouts/fixltx2e.module:3 lib/layouts/minimalistic.module:3
 msgid "Fixes & Hacks"
-msgstr ""
+msgstr "Поправки и подобрения"
 
 #: lib/layouts/InStar.module:13
 msgid ""
@@ -8795,24 +8749,29 @@ msgid ""
 "in title-related material. (If you put these in a Standard layout, this "
 "signals to LyX to output \\maketitle, which may then come too early.)"
 msgstr ""
+"Добавя два нови стила: 1. „В преамбюл“, където се добавя всичко за "
+"заглавната част на документа. Може да се използва ако някои желае да "
+"пише преамбюла в изложението на документа. 1. „В заглавие“, което се пише "
+"в изложението на документа, но съдържанието ще се включи преди да се "
+"изпълни \\maketitle. Това е полезно за правене на разклонения и бележки "
+"при материали свързани със заглавието. Ако паставите това в стандартно "
+"оформление се сигнализира на LyX да изпълни \\maketitle, което ще дойде "
+"твърде рано."
 
 # src/lyx_cb.C:675
 #: lib/layouts/InStar.module:17
-#, fuzzy
 msgid "In Preamble"
-msgstr "LaTeX увод"
+msgstr "В преамбюл"
 
 # src/ext_l10n.h:395 src/frontends/gnome/FormCitation.C:529
 #: lib/layouts/InStar.module:24
-#, fuzzy
 msgid "In Title"
-msgstr "Заглавие"
+msgstr "В заглавие"
 
 # src/frontends/kde/paraextradlg.C:25 src/lyxfont.C:56
 #: lib/layouts/RJournal.layout:3 lib/examples/Articles:0
-#, fuzzy
 msgid "R Journal"
-msgstr "Нормален"
+msgstr "Журнал R"
 
 #: lib/layouts/RJournal.layout:4 lib/layouts/bxjsreport.layout:4
 #: lib/layouts/ctex-report.layout:4 lib/layouts/extreport.layout:4
@@ -8872,7 +8831,7 @@ msgstr "Ел. поща"
 # src/frontends/xforms/FormPreferences.C:255
 #: lib/layouts/a0poster.layout:3 lib/examples/Articles:0
 msgid "A0 Poster"
-msgstr "A0 плакат"
+msgstr "Плакат A0"
 
 # src/frontends/xforms/FormPreferences.C:226
 # src/frontends/xforms/FormPreferences.C:255
@@ -8887,7 +8846,7 @@ msgstr "Плакати"
 #: lib/layouts/sciposter.layout:130 lib/layouts/sciposter.layout:133
 #: lib/layouts/sciposter.layout:160
 msgid "Giant"
-msgstr ""
+msgstr "Гигатски"
 
 #: lib/layouts/a0poster.layout:57 lib/layouts/a0poster.layout:60
 #: lib/layouts/a0poster.layout:86 lib/layouts/beamerposter.layout:69
@@ -8895,7 +8854,7 @@ msgstr ""
 #: lib/layouts/sciposter.layout:146 lib/layouts/sciposter.layout:149
 #: lib/layouts/sciposter.layout:175
 msgid "More Giant"
-msgstr ""
+msgstr "По-гигантски"
 
 #: lib/layouts/a0poster.layout:63 lib/layouts/a0poster.layout:66
 #: lib/layouts/a0poster.layout:92 lib/layouts/beamerposter.layout:75
@@ -8903,22 +8862,22 @@ msgstr ""
 #: lib/layouts/sciposter.layout:152 lib/layouts/sciposter.layout:155
 #: lib/layouts/sciposter.layout:181
 msgid "Most Giant"
-msgstr ""
+msgstr "Най-гигантски"
 
 #: lib/layouts/a0poster.layout:69 lib/layouts/beamerposter.layout:81
 #: lib/layouts/sciposter.layout:158
 msgid "Giant Snippet"
-msgstr ""
+msgstr "Гигантски фрагмент"
 
 #: lib/layouts/a0poster.layout:84 lib/layouts/beamerposter.layout:96
 #: lib/layouts/sciposter.layout:173
 msgid "More Giant Snippet"
-msgstr ""
+msgstr "По-гигантски фрагмент"
 
 #: lib/layouts/a0poster.layout:90 lib/layouts/beamerposter.layout:102
 #: lib/layouts/sciposter.layout:179
 msgid "Most Giant Snippet"
-msgstr ""
+msgstr "Най-гигантски фрагмент"
 
 #: lib/layouts/aa.layout:3 lib/examples/Articles:0
 msgid "Astronomy & Astrophysics"
@@ -8927,7 +8886,7 @@ msgstr "Астрономия и астрофизика"
 # src/ext_l10n.h:375
 #: lib/layouts/aa.layout:69 lib/layouts/aapaper.inc:9
 #: lib/layouts/aapaper.layout:81 lib/layouts/acm-sigs.inc:10
-#: lib/layouts/acmart.layout:160 lib/layouts/beamer.layout:1021
+#: lib/layouts/acmart.layout:160 lib/layouts/beamer.layout:1023
 #: lib/layouts/beamerposter.layout:26 lib/layouts/kluwer.layout:136
 #: lib/layouts/llncs.layout:135 lib/layouts/scrclass.inc:217
 #: lib/layouts/sigplanconf.layout:138 lib/layouts/svcommon.inc:356
@@ -8939,38 +8898,35 @@ msgstr "подзаглавие"
 # src/form1.C:129 src/sp_form.C:58
 #: lib/layouts/aa.layout:113 lib/layouts/aapaper.inc:65
 #: lib/layouts/aapaper.layout:93
-#, fuzzy
 msgid "Offprint"
-msgstr "Опции"
+msgstr "Отделно издание"
 
 # src/form1.C:129 src/sp_form.C:58
 #: lib/layouts/aa.layout:122 lib/layouts/aapaper.inc:73
-#, fuzzy
 msgid "Offprint Requests to:"
-msgstr "Опции"
+msgstr "Отделно издание по изискване на:"
 
 # src/layout_forms.C:23
 #: lib/layouts/aa.layout:142 lib/layouts/svglobal.layout:136
 #: lib/layouts/svjog.layout:140 lib/layouts/svprobth.layout:169
-#, fuzzy
 msgid "Mail"
-msgstr "Семейство(F):|#F"
+msgstr "Ел. поща"
 
 #: lib/layouts/aa.layout:151
 msgid "Correspondence to:"
-msgstr ""
+msgstr "Кореспонденция до:"
 
 #: lib/layouts/aa.layout:181 lib/layouts/copernicus.layout:427
 #: lib/layouts/egs.layout:602
 msgid "Acknowledgements."
-msgstr ""
+msgstr "Благодарности."
 
 # src/ext_l10n.h:344
 #: lib/layouts/aa.layout:196 lib/layouts/aapaper.layout:66
 #: lib/layouts/aapaper.layout:139 lib/layouts/aastex.layout:97
 #: lib/layouts/aguplus.inc:29 lib/layouts/amsart.layout:66
 #: lib/layouts/amsbook.layout:57 lib/layouts/apa.layout:339
-#: lib/layouts/apax.inc:438 lib/layouts/beamer.layout:288
+#: lib/layouts/apax.inc:438 lib/layouts/beamer.layout:290
 #: lib/layouts/egs.layout:33 lib/layouts/europasscv.layout:264
 #: lib/layouts/europecv.layout:193 lib/layouts/isprs.layout:160
 #: lib/layouts/iucr.layout:47 lib/layouts/jss.layout:25
@@ -8994,7 +8950,7 @@ msgstr "Раздел"
 #: lib/layouts/aapaper.layout:149 lib/layouts/aastex.layout:110
 #: lib/layouts/aguplus.inc:44 lib/layouts/amsart.layout:107
 #: lib/layouts/amsbook.layout:67 lib/layouts/apa.layout:350
-#: lib/layouts/apax.inc:449 lib/layouts/beamer.layout:350
+#: lib/layouts/apax.inc:449 lib/layouts/beamer.layout:352
 #: lib/layouts/egs.layout:56 lib/layouts/isprs.layout:172
 #: lib/layouts/iucr.layout:53 lib/layouts/jss.layout:29
 #: lib/layouts/kluwer.layout:72 lib/layouts/latex8.layout:59
@@ -9013,7 +8969,7 @@ msgstr "Подраздел"
 #: lib/layouts/aapaper.layout:161 lib/layouts/aastex.layout:123
 #: lib/layouts/amsart.layout:130 lib/layouts/amsbook.layout:76
 #: lib/layouts/apa.layout:360 lib/layouts/apax.inc:459
-#: lib/layouts/beamer.layout:412 lib/layouts/isprs.layout:182
+#: lib/layouts/beamer.layout:414 lib/layouts/isprs.layout:182
 #: lib/layouts/iucr.layout:61 lib/layouts/jss.layout:33
 #: lib/layouts/kluwer.layout:82 lib/layouts/llncs.layout:67
 #: lib/layouts/ltugboat.layout:90 lib/layouts/memoir.layout:129
@@ -9030,7 +8986,7 @@ msgstr "Подподраздел"
 #: lib/layouts/aa.layout:253 lib/layouts/aapaper.layout:99
 #: lib/layouts/aapaper.layout:202 lib/layouts/aastex.layout:265
 #: lib/layouts/acmart.layout:133 lib/layouts/amsdefs.inc:82
-#: lib/layouts/beamer.layout:1120 lib/layouts/beamerposter.layout:41
+#: lib/layouts/beamer.layout:1122 lib/layouts/beamerposter.layout:41
 #: lib/layouts/dinbrief.layout:218 lib/layouts/egs.layout:550
 #: lib/layouts/foils.layout:169 lib/layouts/frletter.layout:24
 #: lib/layouts/g-brief.layout:199 lib/layouts/g-brief2.layout:54
@@ -9052,7 +9008,7 @@ msgid "institutemark"
 msgstr "Знак на организацията"
 
 # src/LyXAction.C:354
-#: lib/layouts/aa.layout:273 lib/layouts/beamer.layout:1103
+#: lib/layouts/aa.layout:273 lib/layouts/beamer.layout:1105
 msgid "Institute Mark"
 msgstr "Знак на организацията"
 
@@ -9071,65 +9027,60 @@ msgstr "Резюме (структурирано)"
 # src/frontends/xforms/FormPreferences.C:226
 # src/frontends/xforms/FormPreferences.C:255
 #: lib/layouts/aa.layout:335
-#, fuzzy
 msgid "Context"
-msgstr "Конвертори"
+msgstr "Контекст"
 
 #: lib/layouts/aa.layout:336
 msgid "Context of your work (optional, can be left empty)"
-msgstr ""
+msgstr "Контекст на вашата работе (незадължително, може да не се попълва)"
 
 #: lib/layouts/aa.layout:340
 msgid "Aims"
-msgstr ""
+msgstr "Цели"
 
 #: lib/layouts/aa.layout:341
 msgid "Aims of your work"
-msgstr ""
+msgstr "Цели на вашата работа"
 
 #: lib/layouts/aa.layout:345
 msgid "Methods"
-msgstr ""
+msgstr "Методи"
 
 #: lib/layouts/aa.layout:346
 msgid "Methods used in your work"
-msgstr ""
+msgstr "Методи използвани във вашата работа"
 
 #: lib/layouts/aa.layout:350
 msgid "Results"
-msgstr ""
+msgstr "Резултати"
 
 #: lib/layouts/aa.layout:351
 msgid "Results of your work"
-msgstr ""
+msgstr "Резултати на вашата работа"
 
 # src/ext_l10n.h:263
 #: lib/layouts/aa.layout:377
-#, fuzzy
 msgid "Key words."
-msgstr "Ключови дума"
+msgstr "Ключови думи"
 
 # src/LyXAction.C:354
-#: lib/layouts/aa.layout:395 lib/layouts/beamer.layout:1076
+#: lib/layouts/aa.layout:395 lib/layouts/beamer.layout:1078
 #: lib/layouts/beamerposter.layout:36 lib/layouts/cl2emult.layout:81
 #: lib/layouts/llncs.layout:231 lib/layouts/sciposter.layout:24
 #: lib/layouts/svcommon.inc:384
-#, fuzzy
 msgid "Institute"
-msgstr "Вмъкни кавички"
+msgstr "Институция"
 
 # src/layout_forms.C:23
 #: lib/layouts/aa.layout:406 lib/layouts/sciposter.layout:29
 #: lib/layouts/scrlttr2.layout:257
-#, fuzzy
 msgid "E-Mail"
-msgstr "Семейство(F):|#F"
+msgstr "Ел. поща"
 
 # src/layout_forms.C:23
 #: lib/layouts/aapaper.inc:56
-#, fuzzy
 msgid "email:"
-msgstr "Семейство(F):|#F"
+msgstr "ел. поща:"
 
 #: lib/layouts/aapaper.inc:93 lib/layouts/aastex.layout:354
 #: lib/layouts/aastex62.layout:225 lib/layouts/apa.layout:243
@@ -9139,7 +9090,7 @@ msgstr "Семейство(F):|#F"
 #: lib/layouts/kluwer.layout:353 lib/layouts/svcommon.inc:639
 #: lib/layouts/svcommon.inc:652
 msgid "Acknowledgements"
-msgstr ""
+msgstr "Благодарности"
 
 # src/ext_l10n.h:390
 #: lib/layouts/aapaper.inc:107 lib/layouts/aapaper.layout:96
@@ -9149,11 +9100,11 @@ msgstr "Синонимен речник"
 
 #: lib/layouts/aapaper.inc:118
 msgid "Thesaurus not supported in recent A&A:"
-msgstr ""
+msgstr "Синонимен речник не се поддържа в последни A&A:"
 
 #: lib/layouts/aapaper.layout:3 lib/layouts/aapaper.layout:14
 msgid "Astronomy & Astrophysics (V. 4, Obsolete)"
-msgstr ""
+msgstr "Астрономия и астрофизика (вер. 4, остарял)"
 
 #: lib/layouts/aapaper.layout:4 lib/layouts/acm-sigs-alt.layout:4
 #: lib/layouts/acm-sigs.layout:4 lib/layouts/acmsiggraph-0-92.layout:4
@@ -9168,7 +9119,7 @@ msgstr "Излязли от употреба"
 
 # src/LyXAction.C:251
 #: lib/layouts/aapaper.layout:50 lib/layouts/apa.layout:391
-#: lib/layouts/apax.inc:490 lib/layouts/beamer.layout:82
+#: lib/layouts/apax.inc:490 lib/layouts/beamer.layout:84
 #: lib/layouts/egs.layout:203 lib/layouts/powerdot.layout:264
 #: lib/layouts/simplecv.layout:108 lib/layouts/stdlists.inc:13
 msgid "Itemize"
@@ -9176,14 +9127,14 @@ msgstr "Водещи знаци"
 
 # src/ext_l10n.h:231
 #: lib/layouts/aapaper.layout:53 lib/layouts/apa.layout:427
-#: lib/layouts/apax.inc:527 lib/layouts/beamer.layout:131
+#: lib/layouts/apax.inc:527 lib/layouts/beamer.layout:133
 #: lib/layouts/egs.layout:166 lib/layouts/powerdot.layout:326
 #: lib/layouts/stdlists.inc:52
 msgid "Enumerate"
 msgstr "Номериране"
 
 # src/ext_l10n.h:223
-#: lib/layouts/aapaper.layout:56 lib/layouts/beamer.layout:186
+#: lib/layouts/aapaper.layout:56 lib/layouts/beamer.layout:188
 #: lib/layouts/egs.layout:239 lib/layouts/hollywood.layout:130
 #: lib/layouts/paper.layout:110 lib/layouts/scrclass.inc:55
 #: lib/layouts/scrlettr.layout:21 lib/layouts/scrlttr2.layout:33
@@ -9196,8 +9147,8 @@ msgstr "Описание"
 #: lib/layouts/aapaper.layout:59 lib/layouts/algorithm2e.module:34
 #: lib/layouts/apa.layout:392 lib/layouts/apa.layout:428
 #: lib/layouts/apa.layout:466 lib/layouts/apax.inc:491 lib/layouts/apax.inc:528
-#: lib/layouts/apax.inc:566 lib/layouts/beamer.layout:83
-#: lib/layouts/beamer.layout:132 lib/layouts/beamer.layout:187
+#: lib/layouts/apax.inc:566 lib/layouts/beamer.layout:85
+#: lib/layouts/beamer.layout:134 lib/layouts/beamer.layout:189
 #: lib/layouts/egs.layout:139 lib/layouts/egs.layout:167
 #: lib/layouts/egs.layout:204 lib/layouts/enumitem.module:88
 #: lib/layouts/europasscv.layout:400 lib/layouts/foils.layout:87
@@ -9214,7 +9165,7 @@ msgstr "изброяване по списък"
 
 #: lib/layouts/aastex.layout:3
 msgid "American Astronomical Society (AASTeX v. 5)"
-msgstr ""
+msgstr "Американско астрономическо общество (AASTeX v. 5)"
 
 # src/ext_l10n.h:221
 #: lib/layouts/aastex.layout:169 lib/layouts/aastex62.layout:174
@@ -9225,32 +9176,28 @@ msgstr ""
 #: lib/layouts/maa-monthly.layout:124 lib/layouts/moderncv.layout:445
 #: lib/layouts/revtex4-x.inc:63 lib/layouts/revtex4.layout:141
 #: lib/layouts/sigplanconf.layout:172
-#, fuzzy
 msgid "Affiliation"
-msgstr "Дефиниция"
+msgstr "Принадлежност"
 
 # src/ext_l10n.h:221
 #: lib/layouts/aastex.layout:192 lib/layouts/aastex62.layout:219
-#, fuzzy
 msgid "Altaffilation"
-msgstr "Дефиниция"
+msgstr "Предишна принадлежност"
 
 # src/mathed/formula.C:929
 #: lib/layouts/aastex.layout:201 lib/layouts/agutex.layout:132
-#: src/mathed/InsetMathHull.cpp:1857 src/mathed/InsetMathHull.cpp:1866
-#, fuzzy
+#: src/mathed/InsetMathHull.cpp:1866 src/mathed/InsetMathHull.cpp:1875
 msgid "Number"
-msgstr "Номериране"
+msgstr "Номер"
 
 #: lib/layouts/aastex.layout:202
 msgid "Consecutive number for the alternative affiliations"
-msgstr ""
+msgstr "Пореден номер на алтернативна принадлежност"
 
 # src/frontends/xforms/form_preferences.C:278
 #: lib/layouts/aastex.layout:207
-#, fuzzy
 msgid "Alternative affiliation:"
-msgstr "Използвай алтернативен език"
+msgstr "Алтернативна принадлежност:"
 
 # src/ext_l10n.h:170
 #: lib/layouts/aastex.layout:245
@@ -9258,34 +9205,30 @@ msgid "And"
 msgstr "И"
 
 # src/ext_l10n.h:170
-#: lib/layouts/aastex.layout:256 src/frontends/qt/GuiDocument.cpp:3137
-#: src/frontends/qt/GuiDocument.cpp:3149 src/frontends/qt/GuiDocument.cpp:3275
-#: src/frontends/qt/GuiDocument.cpp:3294
-#, fuzzy
+#: lib/layouts/aastex.layout:256 src/frontends/qt/GuiDocument.cpp:3152
+#: src/frontends/qt/GuiDocument.cpp:3164 src/frontends/qt/GuiDocument.cpp:3290
+#: src/frontends/qt/GuiDocument.cpp:3309
 msgid "and"
-msgstr "И"
+msgstr "и"
 
 # src/ext_l10n.h:221
 #: lib/layouts/aastex.layout:301
-#, fuzzy
 msgid "altaffilmark"
-msgstr "Дефиниция"
+msgstr "знак за принадлежност"
 
 # src/ext_l10n.h:221
 #: lib/layouts/aastex.layout:305
-#, fuzzy
 msgid "altaffiliation mark"
-msgstr "Дефиниция"
+msgstr "знак за принадлежнаст"
 
 # src/buffer.C:329
 #: lib/layouts/aastex.layout:336
-#, fuzzy
 msgid "Subject headings:"
-msgstr "Грешка при ченете от "
+msgstr "Тема в заглавието:"
 
 #: lib/layouts/aastex.layout:365
 msgid "[Acknowledgements]"
-msgstr ""
+msgstr "[Благодарности]"
 
 # src/ext_l10n.h:310
 #: lib/layouts/aastex.layout:377
@@ -9294,9 +9237,8 @@ msgstr "Фигура"
 
 # src/ext_l10n.h:310
 #: lib/layouts/aastex.layout:388
-#, fuzzy
 msgid "Place Figure here:"
-msgstr "Фигура"
+msgstr "Поставяне на фигура тук:"
 
 # src/ext_l10n.h:311
 #: lib/layouts/aastex.layout:397
@@ -9305,15 +9247,13 @@ msgstr "Таблица"
 
 # src/ext_l10n.h:311
 #: lib/layouts/aastex.layout:408
-#, fuzzy
 msgid "Place Table here:"
-msgstr "Таблица"
+msgstr "Поставяне на таблица:"
 
 # src/ext_l10n.h:174
 #: lib/layouts/aastex.layout:427 lib/layouts/copernicus.layout:344
-#, fuzzy
 msgid "[Appendix]"
-msgstr "Приложение"
+msgstr "[Приложение]"
 
 # src/mathed/math_panel.C:116
 #: lib/layouts/aastex.layout:437
@@ -9323,15 +9263,13 @@ msgstr "Разделител"
 
 # src/text2.C:456
 #: lib/layouts/aastex.layout:492
-#, fuzzy
 msgid "NoteToEditor"
-msgstr "Няма нищо за правене"
+msgstr "Бел. към редактора"
 
 # src/text2.C:456
 #: lib/layouts/aastex.layout:504
-#, fuzzy
 msgid "Note to Editor:"
-msgstr "Няма нищо за правене"
+msgstr "Бел. към редактора:"
 
 # src/frontends/xforms/FormTabular.C:133
 #: lib/layouts/aastex.layout:516 lib/layouts/aastex6.layout:106
@@ -9342,9 +9280,8 @@ msgstr "Дълга таблица"
 
 # src/frontends/gnome/FormRef.C:311
 #: lib/layouts/aastex.layout:528
-#, fuzzy
 msgid "References. ---"
-msgstr " Препратка: "
+msgstr "Препратки. ---"
 
 # src/frontends/gnome/FormToc.C:100 src/frontends/gnome/FormToc.C:167
 # src/frontends/kde/FormToc.C:167 src/frontends/kde/FormToc.C:168
@@ -9352,9 +9289,8 @@ msgstr " Препратка: "
 # src/insets/insettoc.C:22
 #: lib/layouts/aastex.layout:539 lib/layouts/aastex6.layout:113
 #: lib/layouts/aastex62.layout:124
-#, fuzzy
 msgid "TableComments"
-msgstr "Съдържание"
+msgstr "Коментари на таблица"
 
 # src/ext_l10n.h:291 src/insets/insetinfo.C:77 src/insets/insetinfo.C:102
 # src/insets/insetinfo.C:231
@@ -9388,7 +9324,7 @@ msgstr ""
 # src/ext_l10n.h:240
 #: lib/layouts/aastex.layout:605
 msgid "FigCaption"
-msgstr "Фиг.заглавие"
+msgstr "Надпис на фигура"
 
 #: lib/layouts/aastex.layout:606
 msgid "fig."
@@ -9396,7 +9332,7 @@ msgstr "фиг."
 
 #: lib/layouts/aastex.layout:612
 msgid "Filename to identify the corresponding figure file"
-msgstr ""
+msgstr "Име на файл за зареждане на изображението"
 
 # src/ext_l10n.h:238
 #: lib/layouts/aastex.layout:627
@@ -9416,11 +9352,11 @@ msgstr ""
 
 #: lib/layouts/aastex.layout:665
 msgid "Obj:"
-msgstr ""
+msgstr "Обект:"
 
 #: lib/layouts/aastex.layout:667 lib/layouts/aastex.layout:697
 msgid "Recognized Name"
-msgstr ""
+msgstr "Разпознато име"
 
 #: lib/layouts/aastex.layout:668
 msgid "Separate the recognized name of an object from text"
@@ -9428,15 +9364,13 @@ msgstr ""
 
 # src/insets/insetbib.C:339
 #: lib/layouts/aastex.layout:683
-#, fuzzy
 msgid "Dataset"
-msgstr "База данни:"
+msgstr "Набор данни"
 
 # src/insets/insetbib.C:339
 #: lib/layouts/aastex.layout:695
-#, fuzzy
 msgid "Dataset:"
-msgstr "База данни:"
+msgstr "Набор данни:"
 
 #: lib/layouts/aastex.layout:698
 msgid "Separate the dataset ID from text"
@@ -9444,15 +9378,15 @@ msgstr ""
 
 #: lib/layouts/aastex6.layout:3 lib/examples/Articles:0
 msgid "American Astronomical Society (AASTeX v. 6)"
-msgstr ""
+msgstr "Американско астрономическо общество (AASTEX вер. 6)"
 
 #: lib/layouts/aastex6.layout:59 lib/layouts/aastex62.layout:70
 msgid "Software"
-msgstr ""
+msgstr "Софуер"
 
 #: lib/layouts/aastex6.layout:66 lib/layouts/aastex62.layout:77
 msgid "Software:"
-msgstr ""
+msgstr "Софтуер:"
 
 #: lib/layouts/aastex6.layout:103 lib/layouts/aastex62.layout:114
 msgid "APPENDIX"
@@ -9460,41 +9394,35 @@ msgstr ""
 
 # src/ext_l10n.h:329
 #: lib/layouts/aastex6.layout:107 lib/layouts/aastex62.layout:118
-#, fuzzy
 msgid "References-"
-msgstr "Препратки"
+msgstr "Препратки-"
 
 # src/ext_l10n.h:291 src/insets/insetinfo.C:77 src/insets/insetinfo.C:102
 # src/insets/insetinfo.C:231
 #: lib/layouts/aastex6.layout:114 lib/layouts/aastex62.layout:125
-#, fuzzy
 msgid "Note-"
-msgstr "Бележка"
+msgstr "Бележка-"
 
 #: lib/layouts/aastex62.layout:3 lib/examples/Articles:0
-#, fuzzy
 msgid "American Astronomical Society (AASTeX v. 6.2)"
-msgstr "Книга на Американско математическо общество (AMS)"
+msgstr "Американско астрономическо общество (AASTEX вер. 6.2)"
 
 # src/ext_l10n.h:175
 #: lib/layouts/aastex62.layout:130 lib/layouts/ectaart.layout:210
 #: lib/layouts/ectaart.layout:213
-#, fuzzy
 msgid "Corresponding Author"
-msgstr "Автор"
+msgstr "Кореспондиращ автор"
 
 # src/ext_l10n.h:175
 #: lib/layouts/aastex62.layout:136
-#, fuzzy
 msgid "Corresponding author:"
-msgstr "Автор"
+msgstr "Кореспондиращ автор:"
 
 # src/ext_l10n.h:175
 #: lib/layouts/aastex62.layout:155 lib/layouts/copernicus.layout:65
 #: lib/layouts/egs.layout:380 lib/layouts/svmult.layout:93
-#, fuzzy
 msgid "Author:"
-msgstr "Автор"
+msgstr "Автор:"
 
 #: lib/layouts/aastex62.layout:161 lib/layouts/acmart.layout:196
 #: lib/layouts/apax.inc:640 lib/layouts/apax.inc:667
@@ -9511,9 +9439,8 @@ msgstr ""
 #: lib/layouts/egs.layout:407 lib/layouts/iucr.layout:194
 #: lib/layouts/jss.layout:78 lib/layouts/revtex4-x.inc:77
 #: lib/layouts/revtex4.layout:152
-#, fuzzy
 msgid "Affiliation:"
-msgstr "Дефиниция"
+msgstr "Принадлежност:"
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/aastex62.layout:187 lib/layouts/revtex4-x.inc:164
@@ -9543,141 +9470,125 @@ msgstr "Абзац разделяне"
 
 # src/ext_l10n.h:174
 #: lib/layouts/aastex62.layout:241 lib/layouts/copernicus.layout:307
-#, fuzzy
 msgid "Section Appendix"
-msgstr "приложение"
+msgstr "Раадел приложение"
 
 # src/LColor.C:64
 #: lib/layouts/aastex62.layout:245
-#, fuzzy
 msgid "\\Alph{appendix}."
-msgstr "избор"
+msgstr "\\Alph{appendix}."
 
 # src/ext_l10n.h:174
 #: lib/layouts/aastex62.layout:253 lib/layouts/copernicus.layout:315
-#, fuzzy
 msgid "Subappendix"
-msgstr "приложение"
+msgstr "Подраздел приложение"
 
 # src/ext_l10n.h:371
 #: lib/layouts/aastex62.layout:257 lib/layouts/copernicus.layout:319
-#, fuzzy
 msgid "Subsection Appendix"
-msgstr "Подраздел"
+msgstr "Подраздел приложение"
 
 # src/LColor.C:64
 #: lib/layouts/aastex62.layout:261
-#, fuzzy
 msgid "\\Alph{appendix}\\arabic{subappendix}."
-msgstr "избор"
+msgstr "\\Alph{appendix}\\arabic{subappendix}."
 
 # src/ext_l10n.h:373
 #: lib/layouts/aastex62.layout:269 lib/layouts/copernicus.layout:327
-#, fuzzy
 msgid "Subsubappendix"
-msgstr "Под-подраздел"
+msgstr "Под-подприложиние"
 
 # src/ext_l10n.h:373
 #: lib/layouts/aastex62.layout:273 lib/layouts/copernicus.layout:331
-#, fuzzy
 msgid "Subsubsection Appendix"
-msgstr "Под-подраздел"
+msgstr "Под-подраздел Приложение"
 
 # src/ext_l10n.h:373
 #: lib/layouts/aastex62.layout:277
-#, fuzzy
 msgid "\\Alph{appendix}\\arabic{subappendix}.\\arabic{subsubappendix}."
-msgstr "Под-подраздел"
+msgstr "\\Alph{appendix}\\arabic{subappendix}.\\arabic{subsubappendix}."
 
 #: lib/layouts/achemso.layout:3 lib/examples/Articles:0
 msgid "American Chemical Society (ACS)"
-msgstr ""
+msgstr "Американско химическо общество (ACS)"
 
 # src/ext_l10n.h:375
 #: lib/layouts/achemso.layout:75 lib/layouts/amsdefs.inc:41
 #: lib/layouts/apa.layout:291 lib/layouts/apax.inc:390
-#: lib/layouts/beamer.layout:260 lib/layouts/beamer.layout:315
-#: lib/layouts/beamer.layout:377 lib/layouts/beamer.layout:439
-#: lib/layouts/beamer.layout:998 lib/layouts/europecv.layout:201
+#: lib/layouts/beamer.layout:262 lib/layouts/beamer.layout:317
+#: lib/layouts/beamer.layout:379 lib/layouts/beamer.layout:441
+#: lib/layouts/beamer.layout:1000 lib/layouts/europecv.layout:201
 #: lib/layouts/iopart.layout:67 lib/layouts/jasatex.layout:75
 #: lib/layouts/memoir.layout:68 lib/layouts/revtex4-x.inc:245
 #: lib/layouts/scrclass.inc:142 lib/layouts/scrclass.inc:155
 #: lib/layouts/scrclass.inc:168 lib/layouts/scrclass.inc:324
 #: lib/layouts/scrclass.inc:349 lib/layouts/siamltex.layout:206
-#: lib/layouts/simplecv.layout:52 lib/layouts/stdinsets.inc:694
+#: lib/layouts/simplecv.layout:52 lib/layouts/stdinsets.inc:695
 #: lib/layouts/stdsections.inc:32 lib/layouts/stdsections.inc:76
 #: lib/layouts/stdsections.inc:117 lib/layouts/tufte-book.layout:98
 #: lib/layouts/tufte-book.layout:129 lib/layouts/tufte-handout.layout:40
 msgid "Short Title|S"
-msgstr "Кратък надпис"
+msgstr "Кратки заглавия"
 
 #: lib/layouts/achemso.layout:76
 msgid "Short title which will appear in the running header"
-msgstr ""
+msgstr "Кратко име, което ще се появи в подвижно заглавие"
 
 # src/frontends/gnome/FormRef.C:301
 #: lib/layouts/achemso.layout:119 lib/layouts/acmart.layout:125
-#, fuzzy
 msgid "Short name"
-msgstr "Име:"
+msgstr "Кратко име"
 
 # src/lyxrc.C:1676
 #: lib/layouts/achemso.layout:120
-#, fuzzy
 msgid "Short name which appears in the footer of the title page"
-msgstr "Опция за обръщане на реда за печат на страниците."
+msgstr "Кратко име което се появява в долния колшнтштул на заглавната страница"
 
 # src/ext_l10n.h:221
 #: lib/layouts/achemso.layout:131
-#, fuzzy
 msgid "Alt Affiliation"
-msgstr "Дефиниция"
+msgstr "Алтернат. принадлежност"
 
 # src/ext_l10n.h:221
 #: lib/layouts/achemso.layout:144
-#, fuzzy
 msgid "Also Affiliation"
-msgstr "Дефиниция"
+msgstr "Също принадлежност"
 
 #: lib/layouts/achemso.layout:157 lib/layouts/europasscv.layout:141
 #: lib/layouts/europecv.layout:140 lib/layouts/lettre.layout:48
 #: lib/layouts/lettre.layout:381 lib/layouts/moderncv.layout:210
 #: lib/layouts/scrlttr2.layout:242 lib/configure.py:855
 msgid "Fax"
-msgstr ""
+msgstr "Факс"
 
 # src/LColor.C:63
 #: lib/layouts/achemso.layout:163 lib/layouts/europasscv.layout:144
 #: lib/layouts/europecv.layout:143 lib/layouts/lettre.layout:394
 #: lib/layouts/moderncv.layout:213
-#, fuzzy
 msgid "Fax:"
-msgstr "текст"
+msgstr "Факс:"
 
 # src/ext_l10n.h:308
 #: lib/layouts/achemso.layout:173 lib/layouts/dinbrief.layout:384
 #: lib/layouts/g-brief.layout:127 lib/layouts/moderncv.layout:184
 msgid "Phone"
-msgstr "Телефонен указател"
+msgstr "Телефон"
 
 # src/ext_l10n.h:308
 #: lib/layouts/achemso.layout:176 lib/layouts/g-brief.layout:130
 #: lib/layouts/moderncv.layout:187
-#, fuzzy
 msgid "Phone:"
-msgstr "Телефонен указател"
+msgstr "Телефон:"
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/achemso.layout:187
-#, fuzzy
 msgid "Abbreviations"
-msgstr "Абзац разделяне"
+msgstr "Съкращения"
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/achemso.layout:193
-#, fuzzy
 msgid "Abbreviations:"
-msgstr "Абзац разделяне"
+msgstr "Съкращения:"
 
 # src/ext_l10n.h:462
 #: lib/layouts/achemso.layout:206
@@ -9744,35 +9655,31 @@ msgstr ""
 
 # src/ext_l10n.h:175
 #: lib/layouts/achemso.layout:311
-#, fuzzy
 msgid "TOC entry"
-msgstr "Автор"
+msgstr "Точка от съдържание"
 
 #: lib/layouts/achemso.layout:315
 msgid "Graphical TOC Entry"
-msgstr ""
+msgstr "Графична точка от съдържание"
 
 # src/LColor.C:67
 #: lib/layouts/achemso.layout:321
-#, fuzzy
 msgid "Bibnote"
-msgstr "бележка"
+msgstr "Bibnote"
 
 # src/LColor.C:67
 #: lib/layouts/achemso.layout:325
-#, fuzzy
 msgid "bibnote"
-msgstr "бележка"
+msgstr "bibnote"
 
 # src/lyxfont.C:56
 #: lib/layouts/achemso.layout:344
-#, fuzzy
 msgid "Chemistry"
-msgstr "Дребен"
+msgstr "Химия"
 
 #: lib/layouts/achemso.layout:347
 msgid "chemistry"
-msgstr ""
+msgstr "химия"
 
 # src/ext_l10n.h:433
 #: lib/layouts/achemso.layout:359 lib/layouts/achemso.layout:362
@@ -9787,15 +9694,13 @@ msgstr ""
 # src/ext_l10n.h:387
 #: lib/layouts/acm-sigs.inc:33 lib/layouts/acmart.layout:398
 #: lib/layouts/sigplanconf.layout:188
-#, fuzzy
 msgid "Terms"
-msgstr "Теорема"
+msgstr "Условия"
 
 # src/frontends/xforms/FormParagraph.C:132
 #: lib/layouts/acm-sigs.inc:39
-#, fuzzy
 msgid "General terms:"
-msgstr "Общо"
+msgstr "Общи условия:"
 
 #: lib/layouts/acm-sigs.layout:3 lib/examples/Articles:0
 msgid "ACM SIG Proceedings (SP, Obsolete)"
@@ -9803,7 +9708,7 @@ msgstr ""
 
 #: lib/layouts/acmart.layout:3 lib/examples/Articles:0
 msgid "Association for Computing Machinery (ACM)"
-msgstr ""
+msgstr "Асоциация за изчислителна техника (ACM)"
 
 # src/ext_l10n.h:386
 #: lib/layouts/acmart.layout:86 lib/layouts/acmsiggraph-0-92.layout:335
@@ -9815,39 +9720,34 @@ msgstr "Благодарности"
 
 # src/ext_l10n.h:386
 #: lib/layouts/acmart.layout:100
-#, fuzzy
 msgid "Thanks: "
-msgstr "Благодарности:"
+msgstr "Благодарности: "
 
 # src/frontends/kde/paraextradlg.C:25 src/lyxfont.C:56
 #: lib/layouts/acmart.layout:106
-#, fuzzy
 msgid "ACM Journal"
-msgstr "Нормален"
+msgstr "Журнал ACM"
 
 # src/lyx_cb.C:675
 #: lib/layouts/acmart.layout:109 lib/layouts/apax.inc:341
 #: lib/layouts/apax.inc:349 lib/layouts/apax.inc:358 lib/layouts/apax.inc:366
-#, fuzzy
 msgid "Preamble"
-msgstr "LaTeX увод"
+msgstr "Преамбюл"
 
 #: lib/layouts/acmart.layout:111
 msgid "Journal's Short Name: "
-msgstr ""
+msgstr "Кратко име на журнала: "
 
 # src/ext_l10n.h:328 src/frontends/kde/refdlg.C:62
 # src/frontends/xforms/FormRef.C:36
 #: lib/layouts/acmart.layout:122
-#, fuzzy
 msgid "ACM Conference"
-msgstr "Препратка"
+msgstr "Конференсия ACM"
 
 # src/lyx.C:87
 #: lib/layouts/acmart.layout:129
-#, fuzzy
 msgid "Full name"
-msgstr "Параметри(p)|#p"
+msgstr "Пълно име"
 
 #: lib/layouts/acmart.layout:137
 msgid "Venue"
@@ -9856,21 +9756,18 @@ msgstr ""
 # src/ext_l10n.h:328 src/frontends/kde/refdlg.C:62
 # src/frontends/xforms/FormRef.C:36
 #: lib/layouts/acmart.layout:140
-#, fuzzy
 msgid "Conference Name: "
-msgstr "Препратка"
+msgstr "Име на конференция: "
 
 # src/ext_l10n.h:375
 #: lib/layouts/acmart.layout:147
-#, fuzzy
 msgid "Short title"
 msgstr "Подзаглавие"
 
 # src/ext_l10n.h:163
 #: lib/layouts/acmart.layout:184
-#, fuzzy
 msgid "Email address: "
-msgstr "Адреси"
+msgstr "Ел. адрес: "
 
 #: lib/layouts/acmart.layout:198
 msgid "ORCID: "
@@ -9878,61 +9775,52 @@ msgstr ""
 
 # src/ext_l10n.h:221
 #: lib/layouts/acmart.layout:218
-#, fuzzy
 msgid "Affiliation: "
-msgstr "Дефиниция"
+msgstr "Принадлежност: "
 
 # src/ext_l10n.h:221
 #: lib/layouts/acmart.layout:222
-#, fuzzy
 msgid "Additional Affiliation"
-msgstr "Дефиниция"
+msgstr "Допълнителна принадлежност"
 
 # src/ext_l10n.h:221
 #: lib/layouts/acmart.layout:224
-#, fuzzy
 msgid "Additional Affiliation: "
-msgstr "Дефиниция"
+msgstr "Допълнителна принадлежност: "
 
 # src/ext_l10n.h:320
 #: lib/layouts/acmart.layout:228 lib/layouts/acmart.layout:232
-#, fuzzy
 msgid "Position"
-msgstr "Допускане"
+msgstr "Позиция"
 
 # src/LyXAction.C:164
 #: lib/layouts/acmart.layout:237 lib/layouts/acmart.layout:239
 #: lib/layouts/paper.layout:181
-#, fuzzy
 msgid "Institution"
-msgstr "Вмъкни цитат"
+msgstr "Институция"
 
 # src/sp_form.C:86
 #: lib/layouts/acmart.layout:244 lib/layouts/acmart.layout:246
-#, fuzzy
 msgid "Department"
-msgstr "Замести"
+msgstr "Отдел"
 
 # src/ext_l10n.h:163
 #: lib/layouts/acmart.layout:252 lib/layouts/acmart.layout:254
-#, fuzzy
 msgid "Street Address"
-msgstr "Адреси"
+msgstr "Адрес на улица"
 
 # src/lyxfont.C:56
 #: lib/layouts/acmart.layout:260 lib/layouts/acmart.layout:262
 #: lib/layouts/iucr.layout:77 lib/layouts/iucr.layout:82
-#, fuzzy
 msgid "City"
-msgstr "Дребен"
+msgstr "Град"
 
 # src/frontends/xforms/FormDocument.C:279
 # src/frontends/xforms/FormParagraph.C:133
 #: lib/layouts/acmart.layout:268 lib/layouts/acmart.layout:270
 #: lib/layouts/iucr.layout:99 lib/layouts/iucr.layout:102
-#, fuzzy
 msgid "Country"
-msgstr "Екстри"
+msgstr "Област"
 
 # src/ext_l10n.h:362
 #: lib/layouts/acmart.layout:276 lib/layouts/acmart.layout:278
@@ -9942,9 +9830,8 @@ msgstr "Държава"
 
 # src/ext_l10n.h:202
 #: lib/layouts/acmart.layout:284 lib/layouts/acmart.layout:286
-#, fuzzy
 msgid "Postal Code"
-msgstr "Коментар"
+msgstr "Пощенски код"
 
 # src/ext_l10n.h:246
 #: lib/layouts/acmart.layout:292
@@ -9966,9 +9853,8 @@ msgstr "подзаглавие"
 
 # src/ext_l10n.h:375
 #: lib/layouts/acmart.layout:310
-#, fuzzy
 msgid "Subtitle Note: "
-msgstr "подзаглавие"
+msgstr "Бележка на подзаглавие: "
 
 # src/ext_l10n.h:175
 #: lib/layouts/acmart.layout:314 lib/layouts/apax.inc:304
@@ -9985,16 +9871,14 @@ msgstr "Бележка: "
 # src/frontends/kde/dlg/tabcreatedlgdata.C:107
 # src/frontends/xforms/form_tabular_create.C:45
 #: lib/layouts/acmart.layout:320
-#, fuzzy
 msgid "ACM Volume"
-msgstr "Колони"
+msgstr "Том ACM"
 
 # src/frontends/kde/dlg/tabcreatedlgdata.C:107
 # src/frontends/xforms/form_tabular_create.C:45
 #: lib/layouts/acmart.layout:322
-#, fuzzy
 msgid "Volume: "
-msgstr "Колони"
+msgstr "Том: "
 
 # src/mathed/formula.C:929
 #: lib/layouts/acmart.layout:326
@@ -10016,9 +9900,8 @@ msgstr "Вертикално разстояние"
 
 # src/frontends/xforms/form_paragraph.C:153
 #: lib/layouts/acmart.layout:334
-#, fuzzy
 msgid "Article: "
-msgstr "Вертикално разстояние"
+msgstr "Статия: "
 
 # src/lyx_gui_misc.C:430
 #: lib/layouts/acmart.layout:338
@@ -10028,21 +9911,18 @@ msgstr "годена"
 
 # src/lyx_gui_misc.C:430
 #: lib/layouts/acmart.layout:340
-#, fuzzy
 msgid "Year: "
-msgstr "годена"
+msgstr "Година: "
 
 # src/frontends/xforms/FormPreferences.C:261
 #: lib/layouts/acmart.layout:344
-#, fuzzy
 msgid "ACM Month"
-msgstr "месец"
+msgstr "Месец ACM"
 
 # src/frontends/xforms/FormPreferences.C:261
 #: lib/layouts/acmart.layout:346
-#, fuzzy
 msgid "Month: "
-msgstr "месец"
+msgstr "Месец: "
 
 #: lib/layouts/acmart.layout:350
 msgid "ACM Art Seq Num"
@@ -10050,9 +9930,8 @@ msgstr ""
 
 # src/mathed/formula.C:929
 #: lib/layouts/acmart.layout:352
-#, fuzzy
 msgid "Article Sequential Number: "
-msgstr "Номериране"
+msgstr "Пореден номер на статия: "
 
 #: lib/layouts/acmart.layout:356
 msgid "ACM Submission ID"
@@ -10070,7 +9949,7 @@ msgstr ""
 
 #: lib/layouts/acmart.layout:364
 msgid "Price: "
-msgstr ""
+msgstr "Цена: "
 
 #: lib/layouts/acmart.layout:368
 msgid "ACM ISBN"
@@ -10106,15 +9985,13 @@ msgstr ""
 
 # src/lyx_gui_misc.C:430
 #: lib/layouts/acmart.layout:392
-#, fuzzy
 msgid "Start Page"
-msgstr "Завършване на страница"
+msgstr "Начална страница"
 
 # src/frontends/xforms/form_print.C:112
 #: lib/layouts/acmart.layout:394
-#, fuzzy
 msgid "Start Page: "
-msgstr "Страници:"
+msgstr "Начална страница: "
 
 # src/ext_l10n.h:387
 #: lib/layouts/acmart.layout:400
@@ -10124,13 +10001,12 @@ msgstr "Теорема"
 
 # src/ext_l10n.h:263
 #: lib/layouts/acmart.layout:406
-#, fuzzy
 msgid "Keywords: "
-msgstr "Ключови думи:"
+msgstr "Ключови думи: "
 
 #: lib/layouts/acmart.layout:410
 msgid "CCSXML"
-msgstr ""
+msgstr "CCSXML"
 
 #: lib/layouts/acmart.layout:421
 msgid "Computing Classification Scheme (XML): "
@@ -10138,9 +10014,8 @@ msgstr ""
 
 # src/ext_l10n.h:223
 #: lib/layouts/acmart.layout:432
-#, fuzzy
 msgid "CCS Description"
-msgstr "Описание"
+msgstr "Описание CCS"
 
 #: lib/layouts/acmart.layout:435
 msgid "Significance"
@@ -10148,33 +10023,28 @@ msgstr ""
 
 # src/ext_l10n.h:367
 #: lib/layouts/acmart.layout:437
-#, fuzzy
 msgid "Computing Classification Scheme: "
-msgstr "Тема"
+msgstr "Изчислителна класификационна схема: "
 
 # src/ext_l10n.h:209
 #: lib/layouts/acmart.layout:450
-#, fuzzy
 msgid "Set Copyright"
 msgstr "Авторски права"
 
 # src/ext_l10n.h:209
 #: lib/layouts/acmart.layout:452
-#, fuzzy
 msgid "Set Copyright: "
-msgstr "Авторски права"
+msgstr "Авторски права: "
 
 # src/ext_l10n.h:209
 #: lib/layouts/acmart.layout:456
-#, fuzzy
 msgid "Copyright Year"
-msgstr "Авторски права"
+msgstr "Година на авторски права"
 
 # src/ext_l10n.h:209
 #: lib/layouts/acmart.layout:458
-#, fuzzy
 msgid "Copyright Year: "
-msgstr "Авторски права"
+msgstr "Година за авторски права: "
 
 # src/lyx_gui_misc.C:430
 #: lib/layouts/acmart.layout:462 lib/layouts/acmart.layout:465
@@ -10196,9 +10066,8 @@ msgstr ""
 
 # src/ext_l10n.h:327
 #: lib/layouts/acmart.layout:477
-#, fuzzy
 msgid "Received: "
-msgstr "Получен"
+msgstr "Получен: "
 
 # src/ext_l10n.h:375
 #: lib/layouts/acmart.layout:485
@@ -10228,9 +10097,9 @@ msgid "Margin figure (sigchi-a only)"
 msgstr "само главния файл"
 
 # src/ext_l10n.h:244
-#: lib/layouts/acmart.layout:526 lib/layouts/beamer.layout:1724
+#: lib/layouts/acmart.layout:526 lib/layouts/beamer.layout:1728
 #: lib/layouts/powerdot.layout:577 lib/layouts/sciposter.layout:109
-#: lib/layouts/stdfloats.inc:33 lib/layouts/tufte-book.layout:286
+#: lib/layouts/stdfloats.inc:33 lib/layouts/tufte-book.layout:292
 msgid "List of Figures"
 msgstr "Списък на изображенията"
 
@@ -10241,9 +10110,9 @@ msgstr ""
 # src/frontends/gnome/FormToc.C:108 src/frontends/gnome/FormToc.C:185
 # src/frontends/kde/FormToc.C:177 src/frontends/kde/FormToc.C:178
 # src/frontends/kde/tocdlg.C:30 src/insets/insettoc.C:28
-#: lib/layouts/acmart.layout:539 lib/layouts/beamer.layout:1711
+#: lib/layouts/acmart.layout:539 lib/layouts/beamer.layout:1715
 #: lib/layouts/powerdot.layout:560 lib/layouts/sciposter.layout:123
-#: lib/layouts/stdfloats.inc:18 lib/layouts/tufte-book.layout:270
+#: lib/layouts/stdfloats.inc:18 lib/layouts/tufte-book.layout:276
 msgid "List of Tables"
 msgstr "Списък на таблиците"
 
@@ -10256,7 +10125,7 @@ msgid "Definitions & Theorems"
 msgstr "Определения и теореми"
 
 # src/frontends/xforms/form_preferences.C:926
-#: lib/layouts/acmart.layout:562 lib/layouts/beamer.layout:1322
+#: lib/layouts/acmart.layout:562 lib/layouts/beamer.layout:1324
 #: lib/layouts/theorems-ams-bytype.inc:40
 #: lib/layouts/theorems-ams-chap-bytype.inc:82 lib/layouts/theorems-ams.inc:37
 #: lib/layouts/theorems-bytype.inc:35 lib/layouts/theorems-named.module:22
@@ -10264,7 +10133,7 @@ msgstr "Определения и теореми"
 msgid "Additional Theorem Text"
 msgstr "Допълнителен текст на теорема"
 
-#: lib/layouts/acmart.layout:563 lib/layouts/beamer.layout:1323
+#: lib/layouts/acmart.layout:563 lib/layouts/beamer.layout:1325
 #: lib/layouts/theorems-ams-bytype.inc:41
 #: lib/layouts/theorems-ams-chap-bytype.inc:83 lib/layouts/theorems-ams.inc:38
 #: lib/layouts/theorems-bytype.inc:36 lib/layouts/theorems-named.module:23
@@ -10279,43 +10148,43 @@ msgstr "Допълнителен текст добавен към заглавн
 #: lib/layouts/theorems-bytype.inc:49
 #: lib/layouts/theorems-without-preamble.inc:62 lib/layouts/theorems.inc:52
 msgid "Theorem \\thetheorem."
-msgstr "Теорема \\thetheorem."
+msgstr "Теорема „\\thetheorem“"
 
 # src/ext_l10n.h:320
 #: lib/layouts/acmart.layout:591 lib/layouts/theorems-ams.inc:81
 #: lib/layouts/theorems.inc:81
 msgid "Corollary \\thetheorem."
-msgstr "Следствие \\thetheorem."
+msgstr "Следствие „\\thetheorem“"
 
 #: lib/layouts/acmart.layout:598 lib/layouts/theorems-ams.inc:101
 #: lib/layouts/theorems.inc:101
 msgid "Lemma \\thetheorem."
-msgstr "Лема \\thetheorem."
+msgstr "Лема „\\thetheorem“"
 
 # src/ext_l10n.h:320
 #: lib/layouts/acmart.layout:605 lib/layouts/theorems-ams.inc:121
 #: lib/layouts/theorems.inc:121
 msgid "Proposition \\thetheorem."
-msgstr "Твърдение \\thetheorem."
+msgstr "Твърдение „\\thetheorem“"
 
 # src/ext_l10n.h:291 src/insets/insetinfo.C:77 src/insets/insetinfo.C:102
 # src/insets/insetinfo.C:231
 #: lib/layouts/acmart.layout:612 lib/layouts/theorems-ams.inc:141
 #: lib/layouts/theorems.inc:141
 msgid "Conjecture \\thetheorem."
-msgstr "Предположение \\thetheorem."
+msgstr "Предположение „\\thetheorem“"
 
 # src/ext_l10n.h:221
 #: lib/layouts/acmart.layout:619 lib/layouts/theorems-ams.inc:181
 #: lib/layouts/theorems.inc:181
 msgid "Definition \\thetheorem."
-msgstr "Определение \\thetheorem."
+msgstr "Определение „\\thetheorem“"
 
 # src/ext_l10n.h:232
 #: lib/layouts/acmart.layout:632 lib/layouts/theorems-ams.inc:207
 #: lib/layouts/theorems.inc:207
 msgid "Example \\thetheorem."
-msgstr "Пример \\thetheorem."
+msgstr "Пример „\\thetheorem“"
 
 #: lib/layouts/acmart.layout:635
 #, fuzzy
@@ -10361,21 +10230,20 @@ msgstr ""
 #: lib/layouts/sigplanconf.layout:242 lib/layouts/spie.layout:100
 #: lib/examples/Articles:0
 msgid "Acknowledgments"
-msgstr ""
+msgstr "Благодарности"
 
 #: lib/layouts/acmart.layout:675 lib/layouts/acmart.layout:679
 msgid "Grant Sponsor"
-msgstr ""
+msgstr "Спонсор на грант"
 
 #: lib/layouts/acmart.layout:683 lib/layouts/acmart.layout:719
 msgid "Sponsor ID"
-msgstr ""
+msgstr "Спонсор ИН"
 
 # src/frontends/kde/refdlg.C:63
 #: lib/layouts/acmart.layout:704 lib/layouts/acmart.layout:708
-#, fuzzy
 msgid "Grant Number"
-msgstr "Номер на страница"
+msgstr "Номер на грант"
 
 #: lib/layouts/acmsiggraph-0-92.layout:3 lib/examples/Articles:0
 msgid "ACM SIGGGRAPH 0.92 (obsolete)"
@@ -10411,73 +10279,63 @@ msgstr "Номериране"
 
 # src/mathed/formula.C:929
 #: lib/layouts/acmsiggraph-0-92.layout:103 lib/layouts/acmsiggraph.layout:95
-#, fuzzy
 msgid "Article number:"
-msgstr "Номериране"
+msgstr "Номер на статия: "
 
 # src/ext_l10n.h:209
 #: lib/layouts/acmsiggraph-0-92.layout:107
-#, fuzzy
 msgid "Set copyright"
 msgstr "Авторски права"
 
 # src/ext_l10n.h:209
 #: lib/layouts/acmsiggraph-0-92.layout:110
-#, fuzzy
 msgid "Copyright type:"
-msgstr "Авторски права"
+msgstr "Вид авторско право:"
 
 # src/ext_l10n.h:209
 #: lib/layouts/acmsiggraph-0-92.layout:114
-#, fuzzy
 msgid "Copyright year"
-msgstr "Авторски права"
+msgstr "Година на авторско право"
 
 # src/ext_l10n.h:209
 #: lib/layouts/acmsiggraph-0-92.layout:117
-#, fuzzy
 msgid "Year of copyright:"
-msgstr "Авторски права"
+msgstr "Година на авторско право:"
 
 # src/ext_l10n.h:328 src/frontends/kde/refdlg.C:62
 # src/frontends/xforms/FormRef.C:36
 #: lib/layouts/acmsiggraph-0-92.layout:125
-#, fuzzy
 msgid "Conference info"
-msgstr "Препратка"
+msgstr "Информация за конференсия"
 
 # src/frontends/kde/refdlg.C:51
 #: lib/layouts/acmsiggraph-0-92.layout:128
-#, fuzzy
 msgid "Conference info:"
-msgstr "Препратка :"
+msgstr "Информация за конференсия:"
 
 # src/ext_l10n.h:328 src/frontends/kde/refdlg.C:62
 # src/frontends/xforms/FormRef.C:36
 #: lib/layouts/acmsiggraph-0-92.layout:132
-#, fuzzy
 msgid "Conference name"
-msgstr "Препратка"
+msgstr "Име на конференсия"
 
 #: lib/layouts/acmsiggraph-0-92.layout:137
 msgid "ISBN"
-msgstr ""
+msgstr "ISBN"
 
 #: lib/layouts/acmsiggraph-0-92.layout:140
 msgid "ISBN:"
-msgstr ""
+msgstr "ISBN:"
 
 #: lib/layouts/acmsiggraph-0-92.layout:144 lib/layouts/sigplanconf.layout:127
-#, fuzzy
 msgid "DOI"
-msgstr "DIA"
+msgstr "DOI"
 
 # src/frontends/xforms/form_paragraph.C:153
 #: lib/layouts/acmsiggraph-0-92.layout:147
 #: lib/layouts/acmsiggraph-0-92.layout:154 lib/layouts/acmsiggraph.layout:102
-#, fuzzy
 msgid "Article DOI:"
-msgstr "Вертикално разстояние"
+msgstr "Статия DOI:"
 
 #: lib/layouts/acmsiggraph-0-92.layout:151 lib/layouts/acmsiggraph.layout:99
 msgid "TOG article DOI"
@@ -10496,9 +10354,8 @@ msgstr "PDF автор:"
 # src/ext_l10n.h:263
 #: lib/layouts/acmsiggraph-0-92.layout:198
 #: lib/layouts/acmsiggraph-0-92.layout:203
-#, fuzzy
 msgid "Keyword list"
-msgstr "Ключови дума"
+msgstr "Списък с ключови думи"
 
 # src/LColor.C:75
 #: lib/layouts/acmsiggraph-0-92.layout:207
@@ -10566,17 +10423,16 @@ msgstr "Брой копия за печат"
 #: lib/layouts/acmsiggraph-0-92.layout:313
 #: lib/layouts/acmsiggraph-0-92.layout:314 lib/layouts/acmsiggraph.layout:269
 #: lib/layouts/acmsiggraph.layout:270
-#, fuzzy
 msgid "Subcategory"
-msgstr "Заглавие"
+msgstr "Подкатегория"
 
 #: lib/layouts/acmsiggraph-0-92.layout:319 lib/layouts/acmsiggraph.layout:275
 msgid "Third-level"
-msgstr ""
+msgstr "Трето ниво"
 
 #: lib/layouts/acmsiggraph-0-92.layout:320 lib/layouts/acmsiggraph.layout:276
 msgid "Third-level of the category"
-msgstr ""
+msgstr "Трето ниво на категория"
 
 # src/ext_l10n.h:375
 #: lib/layouts/acmsiggraph-0-92.layout:326 lib/layouts/acmsiggraph.layout:282
@@ -10593,9 +10449,8 @@ msgstr "Подзаглавие"
 # src/layout_forms.C:23
 #: lib/layouts/acmsiggraph-0-92.layout:339 lib/layouts/acmsiggraph.layout:295
 #: lib/layouts/jss.layout:183 lib/layouts/jss.layout:185
-#, fuzzy
 msgid "E-mail"
-msgstr "Семейство(F):|#F"
+msgstr "Ел. поща"
 
 #: lib/layouts/acmsiggraph.layout:3
 msgid "ACM SIGGRAPH (older than 0.91, obsolete)"
@@ -10607,7 +10462,7 @@ msgstr ""
 
 #: lib/layouts/acmsiggraph.layout:110
 msgid "Project URL:"
-msgstr ""
+msgstr "URL на проекта:"
 
 #: lib/layouts/acmsiggraph.layout:114
 msgid "TOG video URL"
@@ -10615,9 +10470,8 @@ msgstr ""
 
 # src/LyXAction.C:261
 #: lib/layouts/acmsiggraph.layout:117
-#, fuzzy
 msgid "Video URL:"
-msgstr "Вмъкни етикет"
+msgstr "Видео URL:"
 
 #: lib/layouts/acmsiggraph.layout:121
 msgid "TOG data URL"
@@ -10642,11 +10496,11 @@ msgstr "Вмъкни етикет"
 
 #: lib/layouts/agums.layout:3
 msgid "American Geophysical Union (AGUPLUS Manuscript)"
-msgstr ""
+msgstr "Американски геофизичен съюз (ръкопис AGUPLUS)"
 
 # src/ext_l10n.h:345
 #: lib/layouts/aguplus.inc:37 lib/layouts/amsart.layout:77
-#: lib/layouts/amsbook.layout:86 lib/layouts/beamer.layout:332
+#: lib/layouts/amsbook.layout:86 lib/layouts/beamer.layout:334
 #: lib/layouts/egs.layout:676 lib/layouts/isprs.layout:192
 #: lib/layouts/spie.layout:32 lib/layouts/stdstarsections.inc:43
 #: lib/layouts/svcommon.inc:278
@@ -10655,7 +10509,7 @@ msgstr "Раздел*"
 
 # src/ext_l10n.h:372
 #: lib/layouts/aguplus.inc:52 lib/layouts/amsart.layout:119
-#: lib/layouts/amsbook.layout:95 lib/layouts/beamer.layout:394
+#: lib/layouts/amsbook.layout:95 lib/layouts/beamer.layout:396
 #: lib/layouts/egs.layout:696 lib/layouts/isprs.layout:203
 #: lib/layouts/stdstarsections.inc:58 lib/layouts/svcommon.inc:286
 msgid "Subsection*"
@@ -10684,30 +10538,26 @@ msgstr "Абзац*"
 # src/ext_l10n.h:270
 #: lib/layouts/aguplus.inc:80 lib/layouts/customHeadersFooters.module:12
 #: lib/layouts/foils.layout:215 lib/layouts/simplecv.layout:143
-#, fuzzy
 msgid "Left Header"
-msgstr "Заглавие"
+msgstr "Надпис горе вляво"
 
 # src/ext_l10n.h:270
 #: lib/layouts/aguplus.inc:93 lib/layouts/customHeadersFooters.module:19
 #: lib/layouts/foils.layout:219
-#, fuzzy
 msgid "Left Header:"
-msgstr "Заглавие"
+msgstr "Наспис горе вляво:"
 
 # src/ext_l10n.h:337
 #: lib/layouts/aguplus.inc:103 lib/layouts/customHeadersFooters.module:40
 #: lib/layouts/foils.layout:223 lib/layouts/simplecv.layout:162
-#, fuzzy
 msgid "Right Header"
-msgstr "Заглавие"
+msgstr "Надпис горе вдясно"
 
 # src/ext_l10n.h:337
 #: lib/layouts/aguplus.inc:107 lib/layouts/customHeadersFooters.module:43
 #: lib/layouts/foils.layout:227
-#, fuzzy
 msgid "Right Header:"
-msgstr "Заглавие"
+msgstr "Надпис горе вдясно:"
 
 # src/ext_l10n.h:327
 #: lib/layouts/aguplus.inc:115 lib/layouts/copernicus.layout:176
@@ -10815,7 +10665,7 @@ msgid "Planotable"
 msgstr "Таблица"
 
 # src/frontends/xforms/FormTabular.C:133
-#: lib/layouts/aguplus.inc:211 lib/layouts/beamer.layout:1706
+#: lib/layouts/aguplus.inc:211 lib/layouts/beamer.layout:1710
 #: lib/layouts/powerdot.layout:553 lib/layouts/powerdot.layout:631
 #: lib/layouts/sciposter.layout:118 lib/layouts/stdfloats.inc:13
 #: lib/ui/stdtoolbars.inc:153 src/insets/Inset.cpp:104
@@ -10835,7 +10685,7 @@ msgstr "Таблица"
 
 #: lib/layouts/agutex.layout:3 lib/examples/Articles:0
 msgid "American Geophysical Union (AGUTeX)"
-msgstr ""
+msgstr "Американски геофизичен съюз (AGUTeX)"
 
 # src/ext_l10n.h:175
 #: lib/layouts/agutex.layout:77
@@ -10845,9 +10695,8 @@ msgstr "Автори"
 # src/ext_l10n.h:221
 #: lib/layouts/agutex.layout:100 lib/layouts/agutex.layout:104
 #: lib/layouts/copernicus.layout:92
-#, fuzzy
 msgid "Affiliation Mark"
-msgstr "Дефиниция"
+msgstr "Знак за принадлежност"
 
 #: lib/layouts/agutex.layout:133
 msgid "Consecutive number for the author affiliations"
@@ -10855,29 +10704,25 @@ msgstr ""
 
 # src/ext_l10n.h:221
 #: lib/layouts/agutex.layout:138
-#, fuzzy
 msgid "Author affiliation:"
-msgstr "Дефиниция"
+msgstr "Принадлежност на автора:"
 
 # src/ext_l10n.h:202
 #: lib/layouts/agutex.layout:205
-#, fuzzy
 msgid "Acknowledgments."
-msgstr "complement"
+msgstr "Благодарности."
 
 # src/ext_l10n.h:169
 #: lib/layouts/algorithm2e.module:2
-#, fuzzy
 msgid "Algorithm2e Float"
-msgstr "Aлгоритъм"
+msgstr "Плаващ обект Алгоритъм2е"
 
 # src/form1.C:129 src/sp_form.C:58
 #: lib/layouts/algorithm2e.module:3 lib/layouts/bicaption.module:3
 #: lib/layouts/figs-within-sections.module:3
 #: lib/layouts/tabs-within-sections.module:3
-#, fuzzy
 msgid "Floats & Captions"
-msgstr "Опции на класа"
+msgstr "Плаващи обекти и надписи"
 
 #: lib/layouts/algorithm2e.module:8
 msgid ""
@@ -10894,27 +10739,24 @@ msgstr "Списък на алгоритмите"
 
 #: lib/layouts/amsart.layout:3 lib/layouts/amsbook.layout:3
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "American Mathematical Society (AMS)"
-msgstr "Книга на Американско математическо общество (AMS)"
+msgstr "Американско математическо общество (AMS)"
 
 # src/LColor.C:64
 #: lib/layouts/amsart.layout:87
-#, fuzzy
 msgid "SpecialSection"
-msgstr "избор"
+msgstr "Специален раздел"
 
 # src/LColor.C:64
 #: lib/layouts/amsart.layout:96
-#, fuzzy
 msgid "SpecialSection*"
-msgstr "избор"
+msgstr "Специален раздел*"
 
 # src/mathed/formula.C:929
 # падащ списък на контекста
-#: lib/layouts/amsart.layout:98 lib/layouts/beamer.layout:334
-#: lib/layouts/beamer.layout:396 lib/layouts/beamer.layout:458
-#: lib/layouts/memoir.layout:248 lib/layouts/stdinsets.inc:712
+#: lib/layouts/amsart.layout:98 lib/layouts/beamer.layout:336
+#: lib/layouts/beamer.layout:398 lib/layouts/beamer.layout:460
+#: lib/layouts/memoir.layout:248 lib/layouts/stdinsets.inc:713
 #: lib/layouts/stdstarsections.inc:15 lib/layouts/stdstarsections.inc:30
 #: lib/layouts/stdstarsections.inc:45 lib/layouts/stdstarsections.inc:60
 #: lib/layouts/stdstarsections.inc:75 lib/layouts/stdstarsections.inc:90
@@ -10924,7 +10766,7 @@ msgstr "без номера"
 
 # src/ext_l10n.h:374
 #: lib/layouts/amsart.layout:140 lib/layouts/amsbook.layout:103
-#: lib/layouts/beamer.layout:456 lib/layouts/isprs.layout:212
+#: lib/layouts/beamer.layout:458 lib/layouts/isprs.layout:212
 #: lib/layouts/stdstarsections.inc:73 lib/layouts/svcommon.inc:294
 msgid "Subsubsection*"
 msgstr "Подподраздел*"
@@ -10952,8 +10794,8 @@ msgstr "Глава за примири"
 #: lib/layouts/amsbook.layout:166 lib/layouts/apa.layout:412
 #: lib/layouts/apa.layout:450 lib/layouts/apa.layout:486
 #: lib/layouts/apax.inc:512 lib/layouts/apax.inc:550 lib/layouts/apax.inc:586
-#: lib/layouts/beamer.layout:107 lib/layouts/beamer.layout:160
-#: lib/layouts/beamer.layout:203 lib/layouts/beamer.layout:788
+#: lib/layouts/beamer.layout:109 lib/layouts/beamer.layout:162
+#: lib/layouts/beamer.layout:205 lib/layouts/beamer.layout:790
 #: lib/layouts/egs.layout:154 lib/layouts/egs.layout:188
 #: lib/layouts/egs.layout:224 lib/layouts/egs.layout:259
 #: lib/layouts/europasscv.layout:405 lib/layouts/foils.layout:105
@@ -10972,8 +10814,8 @@ msgstr "заглавна част на списък"
 #: lib/layouts/amsbook.layout:167 lib/layouts/apa.layout:413
 #: lib/layouts/apa.layout:451 lib/layouts/apa.layout:487
 #: lib/layouts/apax.inc:513 lib/layouts/apax.inc:551 lib/layouts/apax.inc:587
-#: lib/layouts/beamer.layout:108 lib/layouts/beamer.layout:161
-#: lib/layouts/beamer.layout:204 lib/layouts/beamer.layout:789
+#: lib/layouts/beamer.layout:110 lib/layouts/beamer.layout:163
+#: lib/layouts/beamer.layout:206 lib/layouts/beamer.layout:791
 #: lib/layouts/egs.layout:155 lib/layouts/egs.layout:189
 #: lib/layouts/egs.layout:225 lib/layouts/egs.layout:260
 #: lib/layouts/europasscv.layout:406 lib/layouts/foils.layout:106
@@ -10991,8 +10833,8 @@ msgstr "Заглавна част на списък (LaTeX код)"
 #: lib/layouts/amsbook.layout:168 lib/layouts/apa.layout:414
 #: lib/layouts/apa.layout:452 lib/layouts/apa.layout:488
 #: lib/layouts/apax.inc:514 lib/layouts/apax.inc:552 lib/layouts/apax.inc:588
-#: lib/layouts/beamer.layout:109 lib/layouts/beamer.layout:162
-#: lib/layouts/beamer.layout:205 lib/layouts/beamer.layout:790
+#: lib/layouts/beamer.layout:111 lib/layouts/beamer.layout:164
+#: lib/layouts/beamer.layout:207 lib/layouts/beamer.layout:792
 #: lib/layouts/egs.layout:156 lib/layouts/egs.layout:190
 #: lib/layouts/egs.layout:226 lib/layouts/egs.layout:261
 #: lib/layouts/europasscv.layout:407 lib/layouts/foils.layout:107
@@ -11042,13 +10884,12 @@ msgstr "Текущ адрес"
 # src/ext_l10n.h:163
 #: lib/layouts/amsdefs.inc:169
 msgid "Current address:"
-msgstr "Текущ адреси:"
+msgstr "Текущ адрес:"
 
 # src/ext_l10n.h:163
 #: lib/layouts/amsdefs.inc:181
-#, fuzzy
 msgid "E-mail address:"
-msgstr "Адреси"
+msgstr "Адрес ел. поща:"
 
 # src/ext_l10n.h:406 src/frontends/gnome/FormUrl.C:117
 # src/frontends/kde/urldlg.C:62 src/frontends/kde/urldlg.C:63
@@ -11059,15 +10900,13 @@ msgstr "URL:"
 
 # src/ext_l10n.h:263
 #: lib/layouts/amsdefs.inc:206
-#, fuzzy
 msgid "Key words and phrases:"
-msgstr "Ключови дума"
+msgstr "Ключови думи и фрази:"
 
 # src/ext_l10n.h:386
 #: lib/layouts/amsdefs.inc:218 lib/layouts/revtex4.layout:216
-#, fuzzy
 msgid "Thanks:"
-msgstr "Благодаря"
+msgstr "Благодарности:"
 
 # src/ext_l10n.h:220
 #: lib/layouts/amsdefs.inc:227
@@ -11077,9 +10916,8 @@ msgstr "Речник"
 # src/ext_l10n.h:219
 #: lib/layouts/amsdefs.inc:230 lib/layouts/svglobal.layout:132
 #: lib/layouts/svjog.layout:136 lib/layouts/svprobth.layout:165
-#, fuzzy
 msgid "Dedication:"
-msgstr "Посвещение"
+msgstr "Посвещение:"
 
 # src/ext_l10n.h:403
 #: lib/layouts/amsdefs.inc:238
@@ -11088,9 +10926,8 @@ msgstr "Преводач"
 
 # src/ext_l10n.h:403
 #: lib/layouts/amsdefs.inc:241
-#, fuzzy
 msgid "Translator:"
-msgstr "Преводач"
+msgstr "Преводач:"
 
 # src/ext_l10n.h:367
 #: lib/layouts/amsdefs.inc:251 lib/layouts/siamltex.layout:332
@@ -11104,19 +10941,17 @@ msgstr ""
 
 #: lib/layouts/apa.layout:3 lib/examples/Articles:0
 msgid "American Psychological Association (APA)"
-msgstr ""
+msgstr "Американска психологическа асоциация (APA)"
 
 # src/ext_l10n.h:337
 #: lib/layouts/apa.layout:58
-#, fuzzy
 msgid "RightHeader"
-msgstr "Заглавие"
+msgstr "Заглавие вдясно"
 
 # src/ext_l10n.h:337
 #: lib/layouts/apa.layout:67
-#, fuzzy
 msgid "Right header:"
-msgstr "Заглавие"
+msgstr "Заглавие вдясно:"
 
 #: lib/layouts/apa.layout:95 lib/layouts/apax.inc:263
 #: lib/layouts/maa-monthly.layout:43
@@ -11125,82 +10960,73 @@ msgstr "Резюме:"
 
 # src/ext_l10n.h:375
 #: lib/layouts/apa.layout:118 lib/layouts/apax.inc:63
-#, fuzzy
 msgid "Short title:"
-msgstr "Подзаглавие"
+msgstr "Кратко заглавие:"
 
 # src/ext_l10n.h:175
 #: lib/layouts/apa.layout:160 lib/layouts/apax.inc:101
-#, fuzzy
 msgid "TwoAuthors"
-msgstr "Автор"
+msgstr "Двама автори"
 
 # src/ext_l10n.h:175
 #: lib/layouts/apa.layout:168 lib/layouts/apax.inc:109
-#, fuzzy
 msgid "ThreeAuthors"
-msgstr "Автор"
+msgstr "Трима автори"
 
 # src/ext_l10n.h:175
 #: lib/layouts/apa.layout:176 lib/layouts/apax.inc:117
-#, fuzzy
 msgid "FourAuthors"
-msgstr "Автор"
+msgstr "Четирима автори"
 
 # src/ext_l10n.h:221
 #: lib/layouts/apa.layout:212 lib/layouts/apax.inc:191
-#, fuzzy
 msgid "TwoAffiliations"
-msgstr "Дефиниция"
+msgstr "Две принадлежности"
 
 # src/ext_l10n.h:221
 #: lib/layouts/apa.layout:220 lib/layouts/apax.inc:198
-#, fuzzy
 msgid "ThreeAffiliations"
-msgstr "Дефиниция"
+msgstr "Три принадлежности"
 
 # src/ext_l10n.h:221
 #: lib/layouts/apa.layout:228 lib/layouts/apax.inc:205
-#, fuzzy
 msgid "FourAffiliations"
-msgstr "Дефиниция"
+msgstr "Четири принадлежности"
 
 #: lib/layouts/apa.layout:256 lib/layouts/iucr.layout:254
 msgid "Acknowledgements:"
-msgstr "Признателност:"
+msgstr "Благодарности:"
 
 #: lib/layouts/apa.layout:273 lib/layouts/apax.inc:372
 msgid "ThickLine"
-msgstr ""
+msgstr "Дебела линия"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:107
 #: lib/layouts/apa.layout:284 lib/layouts/apax.inc:383
-#, fuzzy
 msgid "Centered"
-msgstr "Центринан"
+msgstr "центринан"
 
 # src/ext_l10n.h:361
 #: lib/layouts/apa.layout:285 lib/layouts/apax.inc:384
-#: lib/layouts/stdinsets.inc:688 src/insets/InsetCaption.cpp:440
-#, fuzzy
+#: lib/layouts/stdinsets.inc:689 src/insets/InsetCaption.cpp:436
 msgid "standard"
-msgstr "Стандартен"
+msgstr "стандартен"
 
 # src/frontends/xforms/FormPreferences.C:1278
 #: lib/layouts/apa.layout:292 lib/layouts/apax.inc:391
 #: lib/layouts/scrclass.inc:325 lib/layouts/scrclass.inc:350
-#: lib/layouts/stdinsets.inc:695
+#: lib/layouts/stdinsets.inc:696
 msgid "The caption as it appears in the list of figures/tables"
 msgstr "Надписа който ще се появи в сисъка с изображения и/или таблици."
 
 # src/ext_l10n.h:244
 #: lib/layouts/apa.layout:307 lib/layouts/apax.inc:406
 msgid "FitFigure"
-msgstr "Фигура"
+msgstr "Напасване на фигура"
 
 #: lib/layouts/apa.layout:313 lib/layouts/apax.inc:412
 msgid "FitBitmap"
-msgstr ""
+msgstr "Напасване на растер"
 
 # src/ext_l10n.h:369
 #: lib/layouts/apa.layout:380 lib/layouts/apax.inc:479
@@ -11215,30 +11041,28 @@ msgstr "Подабзац"
 # src/ext_l10n.h:215
 #: lib/layouts/apa.layout:408 lib/layouts/apa.layout:446
 #: lib/layouts/apax.inc:508 lib/layouts/apax.inc:546
-#: lib/layouts/beamer.layout:95 lib/layouts/beamer.layout:148
+#: lib/layouts/beamer.layout:97 lib/layouts/beamer.layout:150
 #: lib/layouts/egs.layout:184 lib/layouts/egs.layout:220
 #: lib/layouts/europasscv.layout:428 lib/layouts/powerdot.layout:299
 #: lib/layouts/powerdot.layout:364 lib/layouts/stdlists.inc:33
 #: lib/layouts/stdlists.inc:75 lib/layouts/theorems-case.inc:66
-#, fuzzy
 msgid "Custom Item|s"
-msgstr "Клиент"
+msgstr "Елемент от потребителя|Е"
 
 #: lib/layouts/apa.layout:409 lib/layouts/apa.layout:447
 #: lib/layouts/apax.inc:509 lib/layouts/apax.inc:547
-#: lib/layouts/beamer.layout:96 lib/layouts/beamer.layout:149
+#: lib/layouts/beamer.layout:98 lib/layouts/beamer.layout:151
 #: lib/layouts/egs.layout:185 lib/layouts/egs.layout:221
 #: lib/layouts/europasscv.layout:429 lib/layouts/powerdot.layout:300
 #: lib/layouts/powerdot.layout:365 lib/layouts/stdlists.inc:34
 #: lib/layouts/stdlists.inc:76 lib/layouts/theorems-case.inc:67
 msgid "A customized item string"
-msgstr ""
+msgstr "Текстов елемент от потребитела"
 
 # src/ext_l10n.h:458
 #: lib/layouts/apa.layout:465 lib/layouts/apax.inc:565
-#, fuzzy
 msgid "Seriate"
-msgstr "Сръбски"
+msgstr "Нареждам"
 
 #: lib/layouts/apa.layout:482 lib/layouts/apa.layout:483
 #: lib/layouts/apax.inc:582 lib/layouts/apax.inc:583
@@ -11248,24 +11072,21 @@ msgstr "(\\alph{enumii})"
 
 #: lib/layouts/apa6.layout:3 lib/examples/Articles:0
 msgid "American Psychological Association (APA), v. 6"
-msgstr ""
+msgstr "Американска психологическа асоциация (APA), вер. 6"
 
 #: lib/layouts/apa7.layout:3 lib/examples/Articles:0
-#, fuzzy
 msgid "American Psychological Association (APA), v. 7"
-msgstr "Книга на Американско математическо общество (AMS)"
+msgstr "Американска психологическа асоциация (APA), вер. 7"
 
 # src/ext_l10n.h:175
 #: lib/layouts/apax.inc:124
-#, fuzzy
 msgid "FiveAuthors"
-msgstr "Автор"
+msgstr "Пет автори"
 
 # src/ext_l10n.h:175
 #: lib/layouts/apax.inc:131
-#, fuzzy
 msgid "SixAuthors"
-msgstr "Автор"
+msgstr "Шест автори"
 
 # src/ext_l10n.h:270
 #: lib/layouts/apax.inc:138
@@ -11293,7 +11114,7 @@ msgstr "Дефиниция"
 
 # src/ext_l10n.h:291 src/insets/insetinfo.C:77 src/insets/insetinfo.C:102
 # src/insets/insetinfo.C:231
-#: lib/layouts/apax.inc:227 lib/layouts/beamer.layout:1653
+#: lib/layouts/apax.inc:227 lib/layouts/beamer.layout:1657
 #: lib/layouts/elsart.layout:470 lib/layouts/fixme.module:108
 #: lib/layouts/iopart.layout:106 lib/layouts/llncs.layout:394
 #: lib/layouts/powerdot.layout:215 lib/layouts/slides.layout:170
@@ -11328,9 +11149,8 @@ msgstr "бележка на автора:"
 
 # src/frontends/kde/paraextradlg.C:25 src/lyxfont.C:56
 #: lib/layouts/apax.inc:340 lib/layouts/egs.layout:416
-#, fuzzy
 msgid "Journal"
-msgstr "Нормален"
+msgstr "Журнал"
 
 # src/frontends/kde/dlg/tabcreatedlgdata.C:107
 # src/frontends/xforms/form_tabular_create.C:45
@@ -11342,9 +11162,8 @@ msgstr "Колони"
 # src/frontends/kde/dlg/tabcreatedlgdata.C:107
 # src/frontends/xforms/form_tabular_create.C:45
 #: lib/layouts/apax.inc:365
-#, fuzzy
 msgid "Volume"
-msgstr "Колони"
+msgstr "Том"
 
 #: lib/layouts/apax.inc:506
 msgid "*"
@@ -11374,9 +11193,8 @@ msgstr ""
 
 # src/ext_l10n.h:175
 #: lib/layouts/apax.inc:639 lib/layouts/apax.inc:661
-#, fuzzy
 msgid "Author-name"
-msgstr "Автор"
+msgstr "Автор-име"
 
 # src/ext_l10n.h:424
 #: lib/layouts/arab-article.layout:3
@@ -11392,8 +11210,8 @@ msgid "Article (Standard Class)"
 msgstr "Статия (стандартен вид)"
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
-#: lib/layouts/article.layout:21 lib/layouts/beamer.layout:246
-#: lib/layouts/beamer.layout:275 lib/layouts/memoir.layout:66
+#: lib/layouts/article.layout:21 lib/layouts/beamer.layout:248
+#: lib/layouts/beamer.layout:277 lib/layouts/memoir.layout:66
 #: lib/layouts/mwart.layout:25 lib/layouts/paper.layout:55
 #: lib/layouts/scrartcl.layout:22 lib/layouts/scrclass.inc:77
 #: lib/layouts/stdcounters.inc:9 lib/layouts/stdsections.inc:12
@@ -11421,69 +11239,68 @@ msgstr "Прожектор"
 msgid "Presentations"
 msgstr "Презентации"
 
-#: lib/layouts/beamer.layout:88 lib/layouts/beamer.layout:137
-#: lib/layouts/beamer.layout:192 lib/layouts/beamer.layout:503
-#: lib/layouts/beamer.layout:571 lib/layouts/beamer.layout:629
-#: lib/layouts/beamer.layout:659 lib/layouts/beamer.layout:875
-#: lib/layouts/beamer.layout:904 lib/layouts/beamer.layout:1227
-#: lib/layouts/beamer.layout:1252 lib/layouts/beamer.layout:1279
-#: lib/layouts/beamer.layout:1445
+#: lib/layouts/beamer.layout:90 lib/layouts/beamer.layout:139
+#: lib/layouts/beamer.layout:194 lib/layouts/beamer.layout:505
+#: lib/layouts/beamer.layout:573 lib/layouts/beamer.layout:631
+#: lib/layouts/beamer.layout:661 lib/layouts/beamer.layout:877
+#: lib/layouts/beamer.layout:906 lib/layouts/beamer.layout:1229
+#: lib/layouts/beamer.layout:1254 lib/layouts/beamer.layout:1281
+#: lib/layouts/beamer.layout:1447
 msgid "Overlay Specifications|v"
 msgstr ""
 
-#: lib/layouts/beamer.layout:89 lib/layouts/beamer.layout:138
-#: lib/layouts/beamer.layout:193
+#: lib/layouts/beamer.layout:91 lib/layouts/beamer.layout:140
+#: lib/layouts/beamer.layout:195
 msgid "Overlay specifications for this list"
 msgstr ""
 
-#: lib/layouts/beamer.layout:99 lib/layouts/beamer.layout:152
-#: lib/layouts/beamer.layout:213 lib/layouts/beamer.layout:798
+#: lib/layouts/beamer.layout:101 lib/layouts/beamer.layout:154
+#: lib/layouts/beamer.layout:215 lib/layouts/beamer.layout:800
 #: lib/layouts/powerdot.layout:303 lib/layouts/powerdot.layout:368
 msgid "Item Overlay Specifications"
 msgstr ""
 
 # src/layout_forms.C:28
-#: lib/layouts/beamer.layout:100 lib/layouts/beamer.layout:153
-#: lib/layouts/beamer.layout:214 lib/layouts/beamer.layout:628
-#: lib/layouts/beamer.layout:658 lib/layouts/beamer.layout:799
-#: lib/layouts/beamer.layout:874 lib/layouts/beamer.layout:903
-#: lib/layouts/beamer.layout:1226 lib/layouts/beamer.layout:1251
-#: lib/layouts/beamer.layout:1278 lib/layouts/beamer.layout:1444
+#: lib/layouts/beamer.layout:102 lib/layouts/beamer.layout:155
+#: lib/layouts/beamer.layout:216 lib/layouts/beamer.layout:630
+#: lib/layouts/beamer.layout:660 lib/layouts/beamer.layout:801
+#: lib/layouts/beamer.layout:876 lib/layouts/beamer.layout:905
+#: lib/layouts/beamer.layout:1228 lib/layouts/beamer.layout:1253
+#: lib/layouts/beamer.layout:1280 lib/layouts/beamer.layout:1446
 #: lib/layouts/powerdot.layout:304 lib/layouts/powerdot.layout:369
 #, fuzzy
 msgid "On Slide"
 msgstr "Серия(S):|#S"
 
-#: lib/layouts/beamer.layout:101 lib/layouts/beamer.layout:154
-#: lib/layouts/beamer.layout:215 lib/layouts/beamer.layout:800
+#: lib/layouts/beamer.layout:103 lib/layouts/beamer.layout:156
+#: lib/layouts/beamer.layout:217 lib/layouts/beamer.layout:802
 #: lib/layouts/powerdot.layout:305 lib/layouts/powerdot.layout:370
 msgid "Overlay specifications for this item"
 msgstr ""
 
 # src/lyx_cb.C:198 src/lyxfunc.C:3055
-#: lib/layouts/beamer.layout:144
+#: lib/layouts/beamer.layout:146
 #, fuzzy
 msgid "Mini Template"
 msgstr "Шаблони"
 
-#: lib/layouts/beamer.layout:145
+#: lib/layouts/beamer.layout:147
 msgid "Mini template for this list (see beamer manual for details)"
 msgstr ""
 
 # src/frontends/xforms/form_tabular.C:113
-#: lib/layouts/beamer.layout:199
-#, fuzzy
+#: lib/layouts/beamer.layout:201
 msgid "Longest label|s"
-msgstr " Дълга таблица(L)|#L"
+msgstr "Най-дълъг етикат"
 
-#: lib/layouts/beamer.layout:200
+#: lib/layouts/beamer.layout:202
 msgid "The longest label in this list (to determine the indendation width)"
-msgstr ""
+msgstr "Най-дългия етикат в този списък (за определяне ширината на интервалите)"
 
 # src/ext_l10n.h:344
 # падащ списък на контекста
-#: lib/layouts/beamer.layout:247 lib/layouts/beamer.layout:289
-#: lib/layouts/beamer.layout:351 lib/layouts/beamer.layout:413
+#: lib/layouts/beamer.layout:249 lib/layouts/beamer.layout:291
+#: lib/layouts/beamer.layout:353 lib/layouts/beamer.layout:415
 #: lib/layouts/egs.layout:34 lib/layouts/egs.layout:57
 #: lib/layouts/europasscv.layout:265 lib/layouts/europecv.layout:194
 #: lib/layouts/foils.layout:46 lib/layouts/ltugboat.layout:49
@@ -11499,592 +11316,577 @@ msgstr ""
 msgid "Sectioning"
 msgstr "раздели"
 
-#: lib/layouts/beamer.layout:252 lib/layouts/beamer.layout:307
-#: lib/layouts/beamer.layout:340 lib/layouts/beamer.layout:369
-#: lib/layouts/beamer.layout:402 lib/layouts/beamer.layout:431
-#: lib/layouts/beamer.layout:464
+#: lib/layouts/beamer.layout:254 lib/layouts/beamer.layout:309
+#: lib/layouts/beamer.layout:342 lib/layouts/beamer.layout:371
+#: lib/layouts/beamer.layout:404 lib/layouts/beamer.layout:433
+#: lib/layouts/beamer.layout:466
 msgid "Mode"
-msgstr ""
+msgstr "Жанр"
 
 # src/LColor.C:64
-#: lib/layouts/beamer.layout:253 lib/layouts/beamer.layout:308
-#: lib/layouts/beamer.layout:341 lib/layouts/beamer.layout:370
-#: lib/layouts/beamer.layout:403 lib/layouts/beamer.layout:432
-#: lib/layouts/beamer.layout:465
-#, fuzzy
+#: lib/layouts/beamer.layout:255 lib/layouts/beamer.layout:310
+#: lib/layouts/beamer.layout:343 lib/layouts/beamer.layout:372
+#: lib/layouts/beamer.layout:405 lib/layouts/beamer.layout:434
+#: lib/layouts/beamer.layout:467
 msgid "Mode Specification|S"
-msgstr "избор"
+msgstr "Настройки на жанра"
 
-#: lib/layouts/beamer.layout:254 lib/layouts/beamer.layout:309
-#: lib/layouts/beamer.layout:342 lib/layouts/beamer.layout:371
-#: lib/layouts/beamer.layout:404 lib/layouts/beamer.layout:433
-#: lib/layouts/beamer.layout:466
+#: lib/layouts/beamer.layout:256 lib/layouts/beamer.layout:311
+#: lib/layouts/beamer.layout:344 lib/layouts/beamer.layout:373
+#: lib/layouts/beamer.layout:406 lib/layouts/beamer.layout:435
+#: lib/layouts/beamer.layout:468
 msgid "Specify in which mode (article, presentation etc.) this header appears"
 msgstr ""
-"Посочване режима (статия, презентация и т.н.), в който това заглавие се "
+"Посочване на жанра (статия, презентация и т.н.), в който това заглавие ще се "
 "появява."
 
 # src/frontends/xforms/FormPreferences.C:1278
-#: lib/layouts/beamer.layout:261 lib/layouts/memoir.layout:69
+#: lib/layouts/beamer.layout:263 lib/layouts/memoir.layout:69
 #: lib/layouts/scrclass.inc:143 lib/layouts/stdsections.inc:33
 #: lib/layouts/tufte-handout.layout:41
-#, fuzzy
 msgid "The part as it appears in the table of contents/running headers"
-msgstr "Името на формата, както ще се вижда в менютата."
+msgstr "Името на главата, както ще се появи в съдържанието и горния колинтитул."
 
 # src/ext_l10n.h:373
-#: lib/layouts/beamer.layout:304
-#, fuzzy
+#: lib/layouts/beamer.layout:306
 msgid "Section \\arabic{section}"
-msgstr "Под-подраздел"
+msgstr "Подраздел \\arabic{section}"
 
 # src/frontends/xforms/FormPreferences.C:1278
-#: lib/layouts/beamer.layout:316 lib/layouts/scrclass.inc:169
+#: lib/layouts/beamer.layout:318 lib/layouts/scrclass.inc:169
 #: lib/layouts/simplecv.layout:53 lib/layouts/stdsections.inc:118
 #: lib/layouts/tufte-book.layout:130
-#, fuzzy
 msgid "The section as it appears in the table of contents/running headers"
-msgstr "Името на формата, както ще се вижда в менютата."
+msgstr "Името на раздела, както ще се появи в съдържанието и горния колинтитул."
 
 # src/LColor.C:64
-#: lib/layouts/beamer.layout:328 lib/layouts/numarticle.inc:11
+#: lib/layouts/beamer.layout:330 lib/layouts/numarticle.inc:11
 #: lib/layouts/powerdot.layout:254
 msgid "\\Alph{section}"
 msgstr "\\Alph{section}"
 
 # src/ext_l10n.h:373
-#: lib/layouts/beamer.layout:366
-#, fuzzy
+#: lib/layouts/beamer.layout:368
 msgid "Subsection \\arabic{section}.\\arabic{subsection}"
-msgstr "Под-подраздел"
+msgstr "Подраздел \\arabic{section}.\\arabic{subsection}"
 
 # src/frontends/xforms/FormPreferences.C:1278
-#: lib/layouts/beamer.layout:378
-#, fuzzy
+#: lib/layouts/beamer.layout:380
 msgid "The subsection as it appears in the table of contents/running headers"
-msgstr "Името на формата, както ще се вижда в менютата."
+msgstr "Името на подраздела, както ще се появи в съдържанието и горния колинтитул."
 
 # src/ext_l10n.h:373
-#: lib/layouts/beamer.layout:390
+#: lib/layouts/beamer.layout:392
 msgid "\\arabic{section}.\\arabic{subsection}"
 msgstr "\\arabic{section}.\\arabic{subsection}"
 
 # src/ext_l10n.h:373
-#: lib/layouts/beamer.layout:428
-#, fuzzy
+#: lib/layouts/beamer.layout:430
 msgid ""
 "Subsubsection \\arabic{section}.\\arabic{subsection}.\\arabic{subsubsection}"
-msgstr "Под-подраздел"
+msgstr "Под-подраздел \\arabic{section}.\\arabic{subsection}.\\arabic{subsubsection}"
 
-#: lib/layouts/beamer.layout:440
+#: lib/layouts/beamer.layout:442
 msgid ""
 "The subsubsection as it appears in the table of contents/running headers"
 msgstr ""
+"Под-подраздела, както ще се появи в съдържанието и горния колититул"
 
 # src/ext_l10n.h:373
-#: lib/layouts/beamer.layout:452
-#, fuzzy
+#: lib/layouts/beamer.layout:454
 msgid "\\arabic{section}.\\arabic{subsection}.\\arabic{subsubsection}"
-msgstr "Под-подраздел"
+msgstr "\\arabic{section}.\\arabic{subsection}.\\arabic{subsubsection}"
 
 # src/lyx.C:87
-#: lib/layouts/beamer.layout:479 lib/layouts/beamer.layout:485
-#, fuzzy
+#: lib/layouts/beamer.layout:481 lib/layouts/beamer.layout:487
 msgid "Frame"
-msgstr "Параметри(p)|#p"
+msgstr "Рамка"
 
 # src/lyx.C:87
-#: lib/layouts/beamer.layout:480 lib/layouts/beamer.layout:565
-#: lib/layouts/beamer.layout:612 lib/layouts/beamer.layout:643
-#, fuzzy
+#: lib/layouts/beamer.layout:482 lib/layouts/beamer.layout:567
+#: lib/layouts/beamer.layout:614 lib/layouts/beamer.layout:645
 msgid "Frames"
-msgstr "Параметри(p)|#p"
+msgstr "Рамки"
 
 # src/ext_l10n.h:344
-#: lib/layouts/beamer.layout:502 lib/layouts/beamer.layout:937
-#: lib/layouts/beamer.layout:1314 lib/layouts/beamer.layout:1471
-#: lib/layouts/beamer.layout:1491 lib/layouts/beamer.layout:1511
-#: lib/layouts/beamer.layout:1531 lib/layouts/beamer.layout:1551
-#: lib/layouts/beamer.layout:1572 lib/layouts/beamer.layout:1593
-#: lib/layouts/beamer.layout:1614 lib/layouts/beamer.layout:1635
-#: lib/layouts/beamer.layout:1661 lib/layouts/pdfform.module:124
+#: lib/layouts/beamer.layout:504 lib/layouts/beamer.layout:939
+#: lib/layouts/beamer.layout:1316 lib/layouts/beamer.layout:1473
+#: lib/layouts/beamer.layout:1493 lib/layouts/beamer.layout:1513
+#: lib/layouts/beamer.layout:1533 lib/layouts/beamer.layout:1553
+#: lib/layouts/beamer.layout:1574 lib/layouts/beamer.layout:1595
+#: lib/layouts/beamer.layout:1616 lib/layouts/beamer.layout:1637
+#: lib/layouts/beamer.layout:1665 lib/layouts/pdfform.module:124
 #, fuzzy
 msgid "Action"
 msgstr "Раздел"
 
-#: lib/layouts/beamer.layout:504 lib/layouts/beamer.layout:572
+#: lib/layouts/beamer.layout:506 lib/layouts/beamer.layout:574
 msgid "Overlay specifications for this frame"
 msgstr ""
 
-#: lib/layouts/beamer.layout:510 lib/layouts/beamer.layout:578
+#: lib/layouts/beamer.layout:512 lib/layouts/beamer.layout:580
 msgid "Default Overlay Specifications"
 msgstr ""
 
-#: lib/layouts/beamer.layout:511 lib/layouts/beamer.layout:579
+#: lib/layouts/beamer.layout:513 lib/layouts/beamer.layout:581
 msgid "Default overlay specifications within this frame"
 msgstr ""
 
 # src/frontends/xforms/form_preferences.C:926
-#: lib/layouts/beamer.layout:517 lib/layouts/beamer.layout:546
-#: lib/layouts/beamer.layout:557 lib/layouts/beamer.layout:585
+#: lib/layouts/beamer.layout:519 lib/layouts/beamer.layout:548
+#: lib/layouts/beamer.layout:559 lib/layouts/beamer.layout:587
 #, fuzzy
 msgid "Frame Options"
 msgstr "допълнителни опции"
 
-#: lib/layouts/beamer.layout:519 lib/layouts/beamer.layout:548
-#: lib/layouts/beamer.layout:559 lib/layouts/beamer.layout:587
+#: lib/layouts/beamer.layout:521 lib/layouts/beamer.layout:550
+#: lib/layouts/beamer.layout:561 lib/layouts/beamer.layout:589
 msgid "Frame options (see beamer manual)"
 msgstr ""
 
 # src/ext_l10n.h:375
-#: lib/layouts/beamer.layout:522
+#: lib/layouts/beamer.layout:524
 #, fuzzy
 msgid "Frame Title"
 msgstr "Подзаглавие"
 
-#: lib/layouts/beamer.layout:523
+#: lib/layouts/beamer.layout:525
 msgid "Enter the frame title here"
 msgstr ""
 
 # src/LColor.C:82
-#: lib/layouts/beamer.layout:542
+#: lib/layouts/beamer.layout:544
 #, fuzzy
 msgid "PlainFrame"
 msgstr "рамка на математика"
 
 # src/frontends/xforms/form_preferences.C:926
-#: lib/layouts/beamer.layout:544
+#: lib/layouts/beamer.layout:546
 #, fuzzy
 msgid "Frame (plain)"
 msgstr "допълнителни опции"
 
 # src/LColor.C:82
-#: lib/layouts/beamer.layout:553
+#: lib/layouts/beamer.layout:555
 #, fuzzy
 msgid "FragileFrame"
 msgstr "рамка на математика"
 
 # src/ext_l10n.h:377
-#: lib/layouts/beamer.layout:555
+#: lib/layouts/beamer.layout:557
 #, fuzzy
 msgid "Frame (fragile)"
 msgstr "Презиме"
 
 # src/LColor.C:82
-#: lib/layouts/beamer.layout:564
+#: lib/layouts/beamer.layout:566
 #, fuzzy
 msgid "AgainFrame"
 msgstr "рамка на математика"
 
 # src/layout_forms.C:28
-#: lib/layouts/beamer.layout:570 lib/layouts/powerdot.layout:135
+#: lib/layouts/beamer.layout:572 lib/layouts/powerdot.layout:135
 #: lib/layouts/seminar.layout:111 lib/layouts/slides.layout:92
 #: src/frontends/qt/GuiDocument.cpp:136
 msgid "Slide"
 msgstr "Кадър"
 
-#: lib/layouts/beamer.layout:599
+#: lib/layouts/beamer.layout:601
 msgid "Repeat frame with label"
 msgstr ""
 
 # src/ext_l10n.h:375
-#: lib/layouts/beamer.layout:611
+#: lib/layouts/beamer.layout:613
 #, fuzzy
 msgid "FrameTitle"
 msgstr "Подзаглавие"
 
-#: lib/layouts/beamer.layout:630 lib/layouts/beamer.layout:660
-#: lib/layouts/beamer.layout:876 lib/layouts/beamer.layout:905
-#: lib/layouts/beamer.layout:939 lib/layouts/beamer.layout:1228
-#: lib/layouts/beamer.layout:1253 lib/layouts/beamer.layout:1280
-#: lib/layouts/beamer.layout:1316 lib/layouts/beamer.layout:1446
-#: lib/layouts/beamer.layout:1473 lib/layouts/beamer.layout:1493
-#: lib/layouts/beamer.layout:1513 lib/layouts/beamer.layout:1533
-#: lib/layouts/beamer.layout:1553 lib/layouts/beamer.layout:1574
-#: lib/layouts/beamer.layout:1595 lib/layouts/beamer.layout:1616
-#: lib/layouts/beamer.layout:1637 lib/layouts/beamer.layout:1663
+#: lib/layouts/beamer.layout:632 lib/layouts/beamer.layout:662
+#: lib/layouts/beamer.layout:878 lib/layouts/beamer.layout:907
+#: lib/layouts/beamer.layout:941 lib/layouts/beamer.layout:1230
+#: lib/layouts/beamer.layout:1255 lib/layouts/beamer.layout:1282
+#: lib/layouts/beamer.layout:1318 lib/layouts/beamer.layout:1448
+#: lib/layouts/beamer.layout:1475 lib/layouts/beamer.layout:1495
+#: lib/layouts/beamer.layout:1515 lib/layouts/beamer.layout:1535
+#: lib/layouts/beamer.layout:1555 lib/layouts/beamer.layout:1576
+#: lib/layouts/beamer.layout:1597 lib/layouts/beamer.layout:1618
+#: lib/layouts/beamer.layout:1639 lib/layouts/beamer.layout:1667
 msgid "Specify the overlay settings (see beamer manual)"
 msgstr ""
 
 # src/ext_l10n.h:375
-#: lib/layouts/beamer.layout:636
+#: lib/layouts/beamer.layout:638
 #, fuzzy
 msgid "Short Frame Title|S"
 msgstr "Подзаглавие"
 
-#: lib/layouts/beamer.layout:637
+#: lib/layouts/beamer.layout:639
 msgid "A short form of the frame title used in some themes"
 msgstr ""
 
 # src/ext_l10n.h:375
-#: lib/layouts/beamer.layout:642
+#: lib/layouts/beamer.layout:644
 #, fuzzy
 msgid "FrameSubtitle"
 msgstr "Подзаглавие"
 
 # src/frontends/kde/dlg/tabcreatedlgdata.C:107
 # src/frontends/xforms/form_tabular_create.C:45
-#: lib/layouts/beamer.layout:672 lib/layouts/moderncv.layout:395
+#: lib/layouts/beamer.layout:674 lib/layouts/moderncv.layout:395
 #: lib/layouts/moderncv.layout:412
-#, fuzzy
 msgid "Column"
-msgstr "Колони"
+msgstr "Колона"
 
 # src/frontends/kde/dlg/tabcreatedlgdata.C:107
 # src/frontends/xforms/form_tabular_create.C:45
-#: lib/layouts/beamer.layout:673 lib/layouts/beamer.layout:698
-#: lib/layouts/beamer.layout:699 lib/layouts/beamer.layout:709
+#: lib/layouts/beamer.layout:675 lib/layouts/beamer.layout:700
+#: lib/layouts/beamer.layout:701 lib/layouts/beamer.layout:711
 #: lib/layouts/moderncv.layout:373 lib/layouts/multicol.module:15
 msgid "Columns"
 msgstr "колони"
 
-#: lib/layouts/beamer.layout:685
+#: lib/layouts/beamer.layout:687
 msgid "Start column (increase depth!), width:"
 msgstr ""
 
 # src/insets/insetinclude.C:117 src/lyx_cb.C:197 src/lyxfunc.C:3054
 # src/lyxfunc.C:3156 src/lyxfunc.C:3212 src/lyxfunc.C:3288
-#: lib/layouts/beamer.layout:688 lib/layouts/powerdot.layout:504
+#: lib/layouts/beamer.layout:690 lib/layouts/powerdot.layout:504
 #, fuzzy
 msgid "Column Options"
 msgstr "Документи"
 
-#: lib/layouts/beamer.layout:690
+#: lib/layouts/beamer.layout:692
 msgid "Column options (see beamer manual)"
 msgstr ""
 
 # src/frontends/xforms/form_paragraph.C:200
-#: lib/layouts/beamer.layout:711
+#: lib/layouts/beamer.layout:713
 msgid "Column Placement Options"
 msgstr "опции за разположение на колони"
 
-#: lib/layouts/beamer.layout:712
+#: lib/layouts/beamer.layout:714
 msgid "Column placement options (t, T, c, b)"
 msgstr ""
-"Опции за разположение на колони за подравняване - низ от „t“ (отгоре), "
-"„T“ (?), „c“ (центрирано), „b“ (отдолу)"
+"Опции за разположение на колони за подравняване - низ от „t“ (горе), "
+"„T“ (?), „c“ (център), „b“ (долу)"
 
-#: lib/layouts/beamer.layout:729
+#: lib/layouts/beamer.layout:731
 msgid "ColumnsCenterAligned"
 msgstr ""
 
-#: lib/layouts/beamer.layout:732
+#: lib/layouts/beamer.layout:734
 msgid "Columns (center aligned)"
 msgstr ""
 
-#: lib/layouts/beamer.layout:736
+#: lib/layouts/beamer.layout:738
 msgid "ColumnsTopAligned"
 msgstr ""
 
-#: lib/layouts/beamer.layout:739
+#: lib/layouts/beamer.layout:741
 msgid "Columns (top aligned)"
 msgstr ""
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
-#: lib/layouts/beamer.layout:748 lib/layouts/powerdot.layout:518
+#: lib/layouts/beamer.layout:750 lib/layouts/powerdot.layout:518
 #, fuzzy
 msgid "Pause"
 msgstr "Залепи"
 
 # src/frontends/xforms/form_preferences.C:896
-#: lib/layouts/beamer.layout:749 lib/layouts/beamer.layout:777
-#: lib/layouts/beamer.layout:823 lib/layouts/beamer.layout:855
-#: lib/layouts/beamer.layout:884 lib/layouts/powerdot.layout:519
+#: lib/layouts/beamer.layout:751 lib/layouts/beamer.layout:779
+#: lib/layouts/beamer.layout:825 lib/layouts/beamer.layout:857
+#: lib/layouts/beamer.layout:886 lib/layouts/powerdot.layout:519
 #, fuzzy
 msgid "Overlays"
 msgstr "обърнато"
 
 # src/frontends/kde/refdlg.C:63
-#: lib/layouts/beamer.layout:755 lib/layouts/powerdot.layout:525
+#: lib/layouts/beamer.layout:757 lib/layouts/powerdot.layout:525
 #, fuzzy
 msgid "Pause number"
 msgstr "Номер на страница"
 
-#: lib/layouts/beamer.layout:756 lib/layouts/powerdot.layout:526
+#: lib/layouts/beamer.layout:758 lib/layouts/powerdot.layout:526
 msgid "Number of slide where the context below the pause gets visible"
 msgstr ""
 
-#: lib/layouts/beamer.layout:767 lib/layouts/powerdot.layout:537
+#: lib/layouts/beamer.layout:769 lib/layouts/powerdot.layout:537
 msgid "_ _ _ _ _ _ _ _ _ _ _ _ _ _"
 msgstr "_ _ _ _ _ _ _ _ _ _ _ _ _ _"
 
 # src/form1.C:129 src/sp_form.C:58
-#: lib/layouts/beamer.layout:776 lib/layouts/beamer.layout:815
-#, fuzzy
+#: lib/layouts/beamer.layout:778 lib/layouts/beamer.layout:817
 msgid "Overprint"
-msgstr "Опции"
+msgstr "Надпечатка"
 
 # src/form1.C:129 src/sp_form.C:58
-#: lib/layouts/beamer.layout:783
-#, fuzzy
+#: lib/layouts/beamer.layout:785
 msgid "Overprint Area Width"
-msgstr "Опции"
+msgstr "Ширина на надпечатка"
 
 # src/form1.C:161 src/frontends/kde/dlg/paraextradlgdata.C:91
 # src/frontends/xforms/form_graphics.C:44
 # src/frontends/xforms/form_paragraph.C:219
-#: lib/layouts/beamer.layout:784 lib/layouts/europasscv.layout:246
+#: lib/layouts/beamer.layout:786 lib/layouts/europasscv.layout:246
 #: lib/layouts/graphicboxes.module:49 lib/layouts/moderncv.layout:400
 #: lib/layouts/sectionbox.module:22 src/frontends/qt/GuiBox.cpp:71
-#, fuzzy
 msgid "Width"
-msgstr "Ширина"
+msgstr "ширина"
 
-#: lib/layouts/beamer.layout:785
+#: lib/layouts/beamer.layout:787
 msgid "The width of the overprint area (default: text width)"
-msgstr ""
+msgstr "Ширина на площа за надпечат (по подразбиране е ширината на текста)"
 
 # src/frontends/xforms/form_preferences.C:896
-#: lib/layouts/beamer.layout:822
+#: lib/layouts/beamer.layout:824
 #, fuzzy
 msgid "OverlayArea"
 msgstr "обърнато"
 
 # src/frontends/xforms/form_preferences.C:896
-#: lib/layouts/beamer.layout:832
+#: lib/layouts/beamer.layout:834
 #, fuzzy
 msgid "Overlayarea"
 msgstr "обърнато"
 
 # src/frontends/xforms/form_preferences.C:896
-#: lib/layouts/beamer.layout:842
+#: lib/layouts/beamer.layout:844
 #, fuzzy
 msgid "Overlay Area Width"
 msgstr "обърнато"
 
-#: lib/layouts/beamer.layout:843
+#: lib/layouts/beamer.layout:845
 msgid "The width of the overlay area"
 msgstr ""
 
 # src/frontends/xforms/form_preferences.C:896
-#: lib/layouts/beamer.layout:847
+#: lib/layouts/beamer.layout:849
 #, fuzzy
 msgid "Overlay Area Height"
 msgstr "обърнато"
 
 # src/form1.C:157 src/frontends/xforms/form_graphics.C:46
-#: lib/layouts/beamer.layout:848 lib/layouts/graphicboxes.module:56
+#: lib/layouts/beamer.layout:850 lib/layouts/graphicboxes.module:56
 #: lib/layouts/moderncv.layout:288 src/frontends/qt/GuiBox.cpp:70
-#, fuzzy
 msgid "Height"
-msgstr "Височина"
+msgstr "като височинaта"
 
-#: lib/layouts/beamer.layout:849
+#: lib/layouts/beamer.layout:851
 msgid "The height of the overlay area"
 msgstr ""
 
 # src/frontends/kde/dlg/paradlgdata.C:82
-#: lib/layouts/beamer.layout:854 lib/layouts/beamer.layout:1563
-#: lib/layouts/beamer.layout:1565 lib/layouts/powerdot.layout:660
+#: lib/layouts/beamer.layout:856 lib/layouts/beamer.layout:1565
+#: lib/layouts/beamer.layout:1567 lib/layouts/powerdot.layout:660
 #, fuzzy
 msgid "Uncover"
 msgstr "(&R)Въстанови"
 
 # src/ext_l10n.h:75
-#: lib/layouts/beamer.layout:864
+#: lib/layouts/beamer.layout:866
 #, fuzzy
 msgid "Uncovered on slides"
 msgstr "Изтрий колона(D)|D"
 
 # src/lyxfont.C:62
-#: lib/layouts/beamer.layout:883 lib/layouts/beamer.layout:1542
-#: lib/layouts/beamer.layout:1544 lib/layouts/powerdot.layout:666
+#: lib/layouts/beamer.layout:885 lib/layouts/beamer.layout:1544
+#: lib/layouts/beamer.layout:1546 lib/layouts/powerdot.layout:666
 #, fuzzy
 msgid "Only"
 msgstr "Вкл."
 
 # src/ext_l10n.h:75
-#: lib/layouts/beamer.layout:893
+#: lib/layouts/beamer.layout:895
 #, fuzzy
 msgid "Only on slides"
 msgstr "Изтрий колона(D)|D"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:94
-#: lib/layouts/beamer.layout:917
+#: lib/layouts/beamer.layout:919
 #, fuzzy
 msgid "Block"
 msgstr "Блок"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:94
-#: lib/layouts/beamer.layout:918
+#: lib/layouts/beamer.layout:920
 msgid "Blocks"
 msgstr "Блок"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:94
-#: lib/layouts/beamer.layout:927
+#: lib/layouts/beamer.layout:929
 msgid "Block:"
 msgstr "блок:"
 
 # src/LColor.C:64
-#: lib/layouts/beamer.layout:938
+#: lib/layouts/beamer.layout:940
 #, fuzzy
 msgid "Action Specification|S"
 msgstr "избор"
 
 # src/sp_form.C:86
-#: lib/layouts/beamer.layout:945
+#: lib/layouts/beamer.layout:947
 msgid "Block Title"
 msgstr "Заглавие на блок"
 
-#: lib/layouts/beamer.layout:946
+#: lib/layouts/beamer.layout:948
 msgid "Enter the block title here"
 msgstr "Въведете името на блока"
 
-#: lib/layouts/beamer.layout:961
+#: lib/layouts/beamer.layout:963
 #, fuzzy
 msgid "ExampleBlock"
 msgstr "Пример"
 
 # src/ext_l10n.h:232
-#: lib/layouts/beamer.layout:964
+#: lib/layouts/beamer.layout:966
 #, fuzzy
 msgid "Example Block:"
 msgstr "Пример"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:94
-#: lib/layouts/beamer.layout:970
+#: lib/layouts/beamer.layout:972
 #, fuzzy
 msgid "AlertBlock"
 msgstr "Блок"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:94
-#: lib/layouts/beamer.layout:973
+#: lib/layouts/beamer.layout:975
 #, fuzzy
 msgid "Alert Block:"
 msgstr "Блок"
 
 # src/ext_l10n.h:274
-#: lib/layouts/beamer.layout:985 lib/layouts/beamer.layout:1022
-#: lib/layouts/beamer.layout:1049 lib/layouts/beamer.layout:1077
-#: lib/layouts/beamer.layout:1121 lib/layouts/beamer.layout:1144
+#: lib/layouts/beamer.layout:987 lib/layouts/beamer.layout:1024
+#: lib/layouts/beamer.layout:1051 lib/layouts/beamer.layout:1079
+#: lib/layouts/beamer.layout:1123 lib/layouts/beamer.layout:1146
 #, fuzzy
 msgid "Titling"
 msgstr "Списък"
 
-#: lib/layouts/beamer.layout:999
+#: lib/layouts/beamer.layout:1001
 msgid "Short title which appears in the sidebar/header"
 msgstr ""
 
-#: lib/layouts/beamer.layout:1013
+#: lib/layouts/beamer.layout:1015
 msgid "Title (Plain Frame)"
 msgstr ""
 
 # src/ext_l10n.h:375
-#: lib/layouts/beamer.layout:1035
-#, fuzzy
+#: lib/layouts/beamer.layout:1037
 msgid "Short Subtitle|S"
-msgstr "Подзаглавие"
+msgstr "Кратко подзаглавие"
 
-#: lib/layouts/beamer.layout:1036
+#: lib/layouts/beamer.layout:1038
 msgid "Short subtitle which appears in the sidebar/header"
-msgstr ""
+msgstr "Кратко подзаглавие, което се показва в полето/колинтитуля"
 
-#: lib/layouts/beamer.layout:1062
+#: lib/layouts/beamer.layout:1064
 msgid "Short author which appears in the sidebar/header"
 msgstr ""
 
 # src/ext_l10n.h:375
-#: lib/layouts/beamer.layout:1089
+#: lib/layouts/beamer.layout:1091
 #, fuzzy
 msgid "Short Institute|S"
 msgstr "Подзаглавие"
 
-#: lib/layouts/beamer.layout:1090
+#: lib/layouts/beamer.layout:1092
 msgid "Short institute which appears in the sidebar/header"
 msgstr ""
 
 # src/LyXAction.C:354
-#: lib/layouts/beamer.layout:1099
+#: lib/layouts/beamer.layout:1101
 #, fuzzy
 msgid "InstituteMark"
 msgstr "Вмъкни кавички"
 
 # src/ext_l10n.h:375
-#: lib/layouts/beamer.layout:1133
+#: lib/layouts/beamer.layout:1135
 #, fuzzy
 msgid "Short Date|S"
 msgstr "Подзаглавие"
 
-#: lib/layouts/beamer.layout:1134
+#: lib/layouts/beamer.layout:1136
 msgid "Short date which appears in the sidebar/header"
 msgstr ""
 
 # src/frontends/xforms/FormGraphics.C:36
 # src/frontends/xforms/FormGraphics.C:359
-#: lib/layouts/beamer.layout:1143 lib/layouts/beamerposter.layout:46
+#: lib/layouts/beamer.layout:1145 lib/layouts/beamerposter.layout:46
 #, fuzzy
 msgid "TitleGraphic"
 msgstr "Графика"
 
 # src/form1.C:165
-#: lib/layouts/beamer.layout:1208 lib/layouts/egs.layout:103
+#: lib/layouts/beamer.layout:1210 lib/layouts/egs.layout:103
 #: lib/layouts/powerdot.layout:426 lib/layouts/stdlayouts.inc:12
 msgid "Quotation"
 msgstr "Цитиране"
 
 # src/ext_l10n.h:291 src/insets/insetinfo.C:77 src/insets/insetinfo.C:102
 # src/insets/insetinfo.C:231
-#: lib/layouts/beamer.layout:1235 lib/layouts/egs.layout:122
+#: lib/layouts/beamer.layout:1237 lib/layouts/egs.layout:122
 #: lib/layouts/moderncv.layout:305 lib/layouts/powerdot.layout:448
 #: lib/layouts/stdlayouts.inc:37
 msgid "Quote"
 msgstr "Цитат"
 
 # src/lyxfunc.C:1125
-#: lib/layouts/beamer.layout:1260 lib/layouts/egs.layout:277
+#: lib/layouts/beamer.layout:1262 lib/layouts/egs.layout:277
 #: lib/layouts/powerdot.layout:468 lib/layouts/stdlayouts.inc:60
 msgid "Verse"
 msgstr "Стих"
 
-#: lib/layouts/beamer.layout:1302 lib/layouts/foils.layout:340
+#: lib/layouts/beamer.layout:1304 lib/layouts/foils.layout:340
 #: lib/layouts/theorems-starred.inc:78
 msgid "Corollary."
 msgstr "Следствие."
 
 # src/LColor.C:64
-#: lib/layouts/beamer.layout:1315 lib/layouts/beamer.layout:1472
-#: lib/layouts/beamer.layout:1492 lib/layouts/beamer.layout:1512
-#: lib/layouts/beamer.layout:1532 lib/layouts/beamer.layout:1552
-#: lib/layouts/beamer.layout:1573 lib/layouts/beamer.layout:1594
-#: lib/layouts/beamer.layout:1615 lib/layouts/beamer.layout:1636
-#: lib/layouts/beamer.layout:1662
+#: lib/layouts/beamer.layout:1317 lib/layouts/beamer.layout:1474
+#: lib/layouts/beamer.layout:1494 lib/layouts/beamer.layout:1514
+#: lib/layouts/beamer.layout:1534 lib/layouts/beamer.layout:1554
+#: lib/layouts/beamer.layout:1575 lib/layouts/beamer.layout:1596
+#: lib/layouts/beamer.layout:1617 lib/layouts/beamer.layout:1638
+#: lib/layouts/beamer.layout:1666
 #, fuzzy
 msgid "Action Specifications|S"
 msgstr "избор"
 
 # src/ext_l10n.h:221
-#: lib/layouts/beamer.layout:1333 lib/layouts/foils.layout:354
+#: lib/layouts/beamer.layout:1335 lib/layouts/foils.layout:354
 #: lib/layouts/theorems-starred.inc:174
 msgid "Definition."
 msgstr "Определение."
 
 # src/ext_l10n.h:221
-#: lib/layouts/beamer.layout:1336
+#: lib/layouts/beamer.layout:1338
 msgid "Definitions"
 msgstr "Определения"
 
 # src/ext_l10n.h:221
-#: lib/layouts/beamer.layout:1339
+#: lib/layouts/beamer.layout:1341
 msgid "Definitions."
 msgstr "Определения."
 
 # src/ext_l10n.h:232
-#: lib/layouts/beamer.layout:1345 lib/layouts/theorems-starred.inc:200
+#: lib/layouts/beamer.layout:1347 lib/layouts/theorems-starred.inc:200
 msgid "Example."
 msgstr "Пример."
 
 # src/ext_l10n.h:232
-#: lib/layouts/beamer.layout:1352
+#: lib/layouts/beamer.layout:1354
 msgid "Examples"
 msgstr "Примери"
 
 # src/ext_l10n.h:232
-#: lib/layouts/beamer.layout:1355
+#: lib/layouts/beamer.layout:1357
 msgid "Examples."
 msgstr "Примери."
 
 # src/ext_l10n.h:238
-#: lib/layouts/beamer.layout:1358 lib/layouts/theorems-ams-bytype.inc:160
+#: lib/layouts/beamer.layout:1360 lib/layouts/theorems-ams-bytype.inc:160
 #: lib/layouts/theorems-ams-bytype.inc:169
 #: lib/layouts/theorems-ams-bytype.inc:172
 #: lib/layouts/theorems-ams-chap-bytype.inc:222
@@ -12106,136 +11908,135 @@ msgid "Fact"
 msgstr "Факт"
 
 # src/ext_l10n.h:238
-#: lib/layouts/beamer.layout:1361 lib/layouts/theorems-starred.inc:154
+#: lib/layouts/beamer.layout:1363 lib/layouts/theorems-starred.inc:154
 msgid "Fact."
 msgstr "Факт."
 
 # src/ext_l10n.h:271
-#: lib/layouts/beamer.layout:1367 lib/layouts/foils.layout:333
+#: lib/layouts/beamer.layout:1369 lib/layouts/foils.layout:333
 #: lib/layouts/theorems-starred.inc:97
 msgid "Lemma."
 msgstr "Лема."
 
 # src/ext_l10n.h:387
-#: lib/layouts/beamer.layout:1379 lib/layouts/foils.layout:326
+#: lib/layouts/beamer.layout:1381 lib/layouts/foils.layout:326
 #: lib/layouts/theorems-named.module:18 lib/layouts/theorems-starred.inc:32
 msgid "Theorem."
 msgstr "Теорема."
 
 # src/ext_l10n.h:279
-#: lib/layouts/beamer.layout:1387 lib/layouts/egs.layout:730
+#: lib/layouts/beamer.layout:1389 lib/layouts/egs.layout:730
 #: lib/layouts/lyxmacros.inc:12
 msgid "LyX-Code"
 msgstr "LyX Код"
 
 # src/ext_l10n.h:291 src/insets/insetinfo.C:77 src/insets/insetinfo.C:102
 # src/insets/insetinfo.C:231
-#: lib/layouts/beamer.layout:1424
+#: lib/layouts/beamer.layout:1426
 #, fuzzy
 msgid "NoteItem"
 msgstr "Бележка"
 
 # src/lyxfont.C:47
-#: lib/layouts/beamer.layout:1462 lib/layouts/beamer.layout:1464
+#: lib/layouts/beamer.layout:1464 lib/layouts/beamer.layout:1466
 #: src/FontInfo.cpp:48 src/frontends/qt/GuiCharacter.cpp:138
 msgid "Bold"
 msgstr "Получер"
 
 # src/ext_l10n.h:123
-#: lib/layouts/beamer.layout:1482 lib/layouts/ectaart.layout:178
+#: lib/layouts/beamer.layout:1484 lib/layouts/ectaart.layout:178
 msgid "Emphasize"
 msgstr "Открояване"
 
 # src/lyxfont.C:401
-#: lib/layouts/beamer.layout:1484
+#: lib/layouts/beamer.layout:1486
 msgid "Emph."
 msgstr "Открояване"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:94
-#: lib/layouts/beamer.layout:1502 lib/layouts/beamer.layout:1504
+#: lib/layouts/beamer.layout:1504 lib/layouts/beamer.layout:1506
 #, fuzzy
 msgid "Alert"
 msgstr "Блок"
 
-#: lib/layouts/beamer.layout:1522 lib/layouts/beamer.layout:1524
+#: lib/layouts/beamer.layout:1524 lib/layouts/beamer.layout:1526
 #: lib/layouts/svcommon.inc:73 lib/layouts/svcommon.inc:100
 #: lib/layouts/svcommon.inc:107
 msgid "Structure"
-msgstr ""
+msgstr "Структура"
 
 # src/ext_l10n.h:259
-#: lib/layouts/beamer.layout:1584 lib/layouts/beamer.layout:1586
+#: lib/layouts/beamer.layout:1586 lib/layouts/beamer.layout:1588
 #: lib/layouts/powerdot.layout:644
 #, fuzzy
 msgid "Visible"
 msgstr "Игнорирай"
 
 # src/ext_l10n.h:259
-#: lib/layouts/beamer.layout:1605 lib/layouts/beamer.layout:1607
+#: lib/layouts/beamer.layout:1607 lib/layouts/beamer.layout:1609
 #, fuzzy
 msgid "Invisible"
 msgstr "Игнорирай"
 
 # src/frontends/xforms/form_preferences.C:278
-#: lib/layouts/beamer.layout:1626 lib/layouts/beamer.layout:1628
+#: lib/layouts/beamer.layout:1628 lib/layouts/beamer.layout:1630
 #, fuzzy
 msgid "Alternative"
 msgstr "Използвай алтернативен език"
 
 # src/frontends/xforms/form_graphics.C:61
 # src/frontends/xforms/form_graphics.C:82 src/lyxfont.C:411
-#: lib/layouts/beamer.layout:1643
+#: lib/layouts/beamer.layout:1646
 #, fuzzy
 msgid "Default Text"
 msgstr "Стандартно"
 
 # src/lyxrc.C:1838
-#: lib/layouts/beamer.layout:1644
+#: lib/layouts/beamer.layout:1647
 #, fuzzy
 msgid "Enter the default text here"
 msgstr "Укажете стандартния размер на хартията."
 
 # src/ext_l10n.h:136
-#: lib/layouts/beamer.layout:1651
+#: lib/layouts/beamer.layout:1655
 #, fuzzy
 msgid "Beamer Note"
 msgstr "Бележка(N)|N"
 
 # src/frontends/xforms/form_preferences.C:926
-#: lib/layouts/beamer.layout:1669
+#: lib/layouts/beamer.layout:1673
 #, fuzzy
 msgid "Note Options"
 msgstr "допълнителни опции"
 
-#: lib/layouts/beamer.layout:1670
+#: lib/layouts/beamer.layout:1674
 msgid "Specifiy note options (see beamer manual)"
 msgstr ""
 
 # src/frontends/xforms/form_paragraph.C:153
-#: lib/layouts/beamer.layout:1675
+#: lib/layouts/beamer.layout:1679
 #, fuzzy
 msgid "ArticleMode"
 msgstr "Вертикално разстояние"
 
 # src/frontends/xforms/form_paragraph.C:153
-#: lib/layouts/beamer.layout:1681
-#, fuzzy
+#: lib/layouts/beamer.layout:1685
 msgid "Article"
-msgstr "Вертикално разстояние"
+msgstr "Статия"
 
 # src/frontends/xforms/form_document.C:113
-#: lib/layouts/beamer.layout:1686
+#: lib/layouts/beamer.layout:1690
 #, fuzzy
 msgid "PresentationMode"
 msgstr "Ориентация"
 
 # src/frontends/xforms/form_document.C:113
-#: lib/layouts/beamer.layout:1692
+#: lib/layouts/beamer.layout:1696
 msgid "Presentation"
 msgstr "Презентация"
 
 # src/ext_l10n.h:244
-#: lib/layouts/beamer.layout:1719 lib/layouts/powerdot.layout:570
+#: lib/layouts/beamer.layout:1723 lib/layouts/powerdot.layout:570
 #: lib/layouts/powerdot.layout:627 lib/layouts/sciposter.layout:104
 #: lib/layouts/stdfloats.inc:28
 msgid "Figure"
@@ -12247,56 +12048,52 @@ msgstr "Плакат за прожектор"
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/layouts/bicaption.module:2
-#, fuzzy
 msgid "Bilingual Captions"
-msgstr "допълнителни опции"
+msgstr "Двуезични надписи"
 
 #: lib/layouts/bicaption.module:7
 msgid ""
 "Provides two styles to typeset bilingual captions. For a description see the "
 "file MultilingualCaptions.lyx in LyX's examples folder."
 msgstr ""
+"Осигурява два стила за набор от надписи на два езика. За по-подробно описание "
+"вижте файла „MultilingualCaptions.lyx“ в директорията с примерните документи."
 
 # src/ext_l10n.h:191
 #: lib/layouts/bicaption.module:11
-#, fuzzy
 msgid "Caption setup"
-msgstr "Заглавие"
+msgstr "Настройки на надпис"
 
 #: lib/layouts/bicaption.module:17
 msgid ""
 "Language that should be affected, can be 'bi-first', 'bi-second' or 'bi-both'"
 msgstr ""
+"Език, които ще се промени: основен, втори или двата"
 
 # src/ext_l10n.h:191
 #: lib/layouts/bicaption.module:30
-#, fuzzy
 msgid "Caption setup:"
-msgstr "Заглавие"
+msgstr "Настройки на надпис:"
 
 # src/ext_l10n.h:191
 #: lib/layouts/bicaption.module:38
-#, fuzzy
 msgid "Bicaption"
-msgstr "Заглавие"
+msgstr "Двуезичен надпис"
 
 # src/ext_l10n.h:274
 #: lib/layouts/bicaption.module:39
-#, fuzzy
 msgid "bilingual"
-msgstr "Списък"
+msgstr "двуезичен"
 
 # src/ext_l10n.h:375
 #: lib/layouts/bicaption.module:45
-#, fuzzy
 msgid "Main Language Short Title"
-msgstr "Подзаглавие"
+msgstr "Кратко заглавие на основния език"
 
 # src/LyXAction.C:149
 #: lib/layouts/bicaption.module:46
-#, fuzzy
 msgid "Short title for the main(document) language"
-msgstr "Превключи към отворен документ"
+msgstr "Кратко заглавие за основния език на главния документ"
 
 # src/ext_l10n.h:270
 #: lib/layouts/bicaption.module:50
@@ -12327,7 +12124,7 @@ msgstr "Брайлов код"
 
 #: lib/layouts/braille.module:3
 msgid "Accessibility"
-msgstr ""
+msgstr "Достъпност"
 
 #: lib/layouts/braille.module:7
 msgid ""
@@ -12344,29 +12141,28 @@ msgstr "Брайлов код (по позразбиране)"
 
 # src/lyxfont.C:56
 #: lib/layouts/braille.module:37 lib/layouts/braille.module:62
-#, fuzzy
 msgid "Braille:"
-msgstr "Малък 2"
+msgstr "Брайлов код:"
 
 #: lib/layouts/braille.module:48
 msgid "Braille (textsize)"
-msgstr ""
+msgstr "Брайлов код (размер текст)"
 
 #: lib/layouts/braille.module:73
 msgid "Braille (dots on)"
-msgstr ""
+msgstr "Брайлов код (с точки)"
 
 #: lib/layouts/braille.module:88
 msgid "Braille_dots_on"
-msgstr ""
+msgstr "Брайлов код с точки"
 
 #: lib/layouts/braille.module:99
 msgid "Braille (dots off)"
-msgstr ""
+msgstr "Брайлов код (без точки)"
 
 #: lib/layouts/braille.module:114
 msgid "Braille_dots_off"
-msgstr ""
+msgstr "Брайлов код без точки"
 
 #: lib/layouts/braille.module:125
 msgid "Braille (mirror on)"
@@ -12398,7 +12194,7 @@ msgstr "ред на таблица"
 
 #: lib/layouts/broadway.layout:3
 msgid "Broadway"
-msgstr ""
+msgstr "Бродуей"
 
 # src/ext_l10n.h:96
 #: lib/layouts/broadway.layout:4 lib/layouts/hollywood.layout:4
@@ -12414,9 +12210,8 @@ msgstr "Номериране"
 
 # src/frontends/kde/refdlg.C:63
 #: lib/layouts/broadway.layout:32
-#, fuzzy
 msgid "Scene Number"
-msgstr "Номер на страница"
+msgstr "Номер на сцена"
 
 #: lib/layouts/broadway.layout:36 lib/layouts/hollywood.layout:41
 msgid "Dialogue"
@@ -12487,24 +12282,20 @@ msgid "Right Address"
 msgstr "Адрес вдясно"
 
 #: lib/layouts/bxjsarticle.layout:3
-#, fuzzy
 msgid "Japanese Article (BXJS Class)"
-msgstr "Статия на японски (jsarticle)"
+msgstr "Статия на японски (клас BXJS)"
 
 #: lib/layouts/bxjsbook.layout:3
-#, fuzzy
 msgid "Japanese Book (BXJS Class)"
-msgstr "Книга на японски (jsbook)"
+msgstr "Книга на японски (клас BXJS)"
 
 #: lib/layouts/bxjsreport.layout:3
-#, fuzzy
 msgid "Japanese Report (BXJS Class)"
-msgstr "Доклад на японски (jreport)"
+msgstr "Доклад на японски (клас BXJS)"
 
 #: lib/layouts/bxjsslide.layout:3
-#, fuzzy
 msgid "Japanese Slide (BXJS Class)"
-msgstr "Японско pLaTeX (JIS)"
+msgstr "Кадър на японски (клас BXJS)"
 
 # src/ext_l10n.h:262 src/frontends/gnome/FormIndex.C:89
 # src/frontends/xforms/form_index.C:28
@@ -12667,19 +12458,20 @@ msgstr ""
 # src/ext_l10n.h:262 src/frontends/gnome/FormIndex.C:89
 # src/frontends/xforms/form_index.C:28
 #: lib/layouts/chessboard.module:2
-#, fuzzy
 msgid "Chess Board"
-msgstr "Ключова дума"
+msgstr "Шахмат"
 
 #: lib/layouts/chessboard.module:3 lib/layouts/lilypond.module:3
 msgid "Leisure, Sports & Music"
-msgstr ""
+msgstr "Свободно време, спорт и музика"
 
 #: lib/layouts/chessboard.module:7
 msgid ""
 "Support for the chessboard package to print chess games See chessboard-"
 "article.lyx example file."
 msgstr ""
+"Поддържа пакета „chessboard“ за отпечатване на шахматни дъски. Вижте "
+"примерния файл article.lyx."
 
 #: lib/layouts/chessboard.module:16
 msgid "NewChessGame"
@@ -12762,19 +12554,17 @@ msgstr ""
 # src/ext_l10n.h:262 src/frontends/gnome/FormIndex.C:89
 # src/frontends/xforms/form_index.C:28
 #: lib/layouts/chessboard.module:137 lib/examples/Articles:0
-#, fuzzy
 msgid "Chessboard"
-msgstr "Ключова дума"
+msgstr "Шахмат"
 
 # src/form1.C:129 src/sp_form.C:58
 #: lib/layouts/chessboard.module:140
-#, fuzzy
 msgid "Chessboard Options"
-msgstr "Опции на класа"
+msgstr "Опции за шахмат"
 
 #: lib/layouts/chessboard.module:141
 msgid "See chessboard manual for a comprehensive list of keys and values"
-msgstr ""
+msgstr "Вижте в ръководството на модула за шах пълния списък с параметри и стойности"
 
 #: lib/layouts/cl2emult.layout:3
 msgid "Springer Contributed Books (cl2emult, Obsolete!)"
@@ -12825,16 +12615,14 @@ msgstr ""
 
 # src/LaTeX.C:223
 #: lib/layouts/copernicus.layout:102 lib/layouts/svcommon.inc:437
-#, fuzzy
 msgid "Running Title"
-msgstr "Стартирам BibTeX."
+msgstr "Повтарящи се заглавия"
 
 # src/LaTeX.C:223
 #: lib/layouts/copernicus.layout:107 lib/layouts/kluwer.layout:253
 #: lib/layouts/svcommon.inc:441
-#, fuzzy
 msgid "Running title:"
-msgstr "Стартирам BibTeX."
+msgstr "Повтарящо се заглавие:"
 
 # src/ext_l10n.h:242
 #: lib/layouts/copernicus.layout:113
@@ -12941,21 +12729,18 @@ msgstr "\\thesection заключения"
 
 # src/LColor.C:64
 #: lib/layouts/copernicus.layout:311
-#, fuzzy
 msgid "Appendix \\Alph{appendix}:"
-msgstr "избор"
+msgstr "Приложение \\Alph{appendix}:"
 
 # src/LColor.C:64
 #: lib/layouts/copernicus.layout:323
-#, fuzzy
 msgid "\\Alph{appendix}\\arabic{subappendix}"
-msgstr "избор"
+msgstr "\\Alph{appendix}\\arabic{subappendix}"
 
 # src/ext_l10n.h:373
 #: lib/layouts/copernicus.layout:335
-#, fuzzy
 msgid "\\Alph{appendix}\\arabic{subappendix}.\\arabic{subsubappendix}"
-msgstr "Под-подраздел"
+msgstr "\\Alph{appendix}\\arabic{subappendix}.\\arabic{subsubappendix}"
 
 #: lib/layouts/copernicus.layout:358
 msgid "CodeAvailability"
@@ -13005,15 +12790,13 @@ msgstr "Препратка"
 # src/frontends/kde/FormToc.C:177 src/frontends/kde/FormToc.C:178
 # src/frontends/kde/tocdlg.C:30 src/insets/insettoc.C:28
 #: lib/layouts/copernicus.layout:400
-#, fuzzy
 msgid "AuthorContribution"
-msgstr "Списък на таблици"
+msgstr "Принос на автора"
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/layouts/copernicus.layout:402
-#, fuzzy
 msgid "Author contributions."
-msgstr "допълнителни опции"
+msgstr "Принос на автора"
 
 #: lib/layouts/copernicus.layout:408
 msgid "CompetingInterests"
@@ -13024,22 +12807,20 @@ msgid "Competing Interests."
 msgstr ""
 
 #: lib/layouts/copernicus.layout:416
-#, fuzzy
 msgid "Disclaimer"
-msgstr "&Отхвърляне"
+msgstr "Опровержение"
 
 #: lib/layouts/copernicus.layout:419
-#, fuzzy
 msgid "Disclaimer."
-msgstr "&Отхвърляне"
+msgstr "Опровержение"
 
 #: lib/layouts/ctex-article.layout:3 lib/examples/Articles:0
 msgid "Chinese Article (CTeX)"
-msgstr ""
+msgstr "Статия на китайски (CTeX)"
 
 #: lib/layouts/ctex-book.layout:3
 msgid "Chinese Book (CTeX)"
-msgstr ""
+msgstr "Книга на китайски (CTeX)"
 
 #: lib/layouts/ctex-report.layout:3
 msgid "Chinese Report (CTeX)"
@@ -13047,9 +12828,8 @@ msgstr "Доклад на китайски (CTeX)"
 
 # src/ext_l10n.h:337
 #: lib/layouts/customHeadersFooters.module:2
-#, fuzzy
 msgid "Custom Header/Footer Text"
-msgstr "Заглавие"
+msgstr "Колинтитули"
 
 #: lib/layouts/customHeadersFooters.module:8
 msgid ""
@@ -13057,12 +12837,14 @@ msgid ""
 "module you must set the 'Page style' in the menu Document Settings -> Page "
 "Layout to 'fancy'!"
 msgstr ""
+"Добавя среди за редове в горен и долен колинтитул. ЗАБЕЛЕЖКА: За да "
+"използвате този модул трябва да нагласите „Оформление на страниците“ от "
+"менюто Документ->Настройки->Оформление на „декоративни“."
 
 # src/ext_l10n.h:337
 #: lib/layouts/customHeadersFooters.module:13
-#, fuzzy
 msgid "Header/Footer"
-msgstr "Заглавие"
+msgstr "Колинтитул"
 
 # src/ext_l10n.h:270
 #: lib/layouts/customHeadersFooters.module:21
@@ -13076,61 +12858,51 @@ msgstr ""
 
 # src/ext_l10n.h:270
 #: lib/layouts/customHeadersFooters.module:34
-#, fuzzy
 msgid "Center Header"
-msgstr "Заглавие"
+msgstr "Надпис горе посредата"
 
 # src/ext_l10n.h:270
 #: lib/layouts/customHeadersFooters.module:37
-#, fuzzy
 msgid "Center Header:"
-msgstr "Заглавие"
+msgstr "Надпис горе посредата:"
 
 # src/ext_l10n.h:362
 #: lib/layouts/customHeadersFooters.module:46
-#, fuzzy
 msgid "Left Footer"
-msgstr "Държава"
+msgstr "Наспис долу вляво"
 
 # src/LyXAction.C:225 src/LyXAction.C:229
 #: lib/layouts/customHeadersFooters.module:49
-#, fuzzy
 msgid "Left Footer:"
-msgstr "Вмъкни бел. под линия"
+msgstr "Надпис долу вляво:"
 
 # src/ext_l10n.h:337
 #: lib/layouts/customHeadersFooters.module:52
-#, fuzzy
 msgid "Center Footer"
-msgstr "Заглавие"
+msgstr "Надпис долу посредата"
 
 # src/ext_l10n.h:246
 #: lib/layouts/customHeadersFooters.module:55
-#, fuzzy
 msgid "Center Footer:"
-msgstr "Бел. под линия"
+msgstr "Надпис долу посредата:"
 
 # src/ext_l10n.h:337
 #: lib/layouts/customHeadersFooters.module:58 lib/layouts/foils.layout:231
-#, fuzzy
 msgid "Right Footer"
-msgstr "Заглавие"
+msgstr "Надпис долу вдясно"
 
 # src/ext_l10n.h:337
 #: lib/layouts/customHeadersFooters.module:61 lib/layouts/foils.layout:235
-#, fuzzy
 msgid "Right Footer:"
-msgstr "Заглавие"
+msgstr "Надпис долу вдясно:"
 
 # src/lyxfunc.C:1132
 #: lib/layouts/db_stdcharstyles.inc:21 lib/layouts/db_stdcharstyles.inc:22
-#, fuzzy
 msgid "Directory"
-msgstr "Потребителска директория: "
+msgstr "Директория"
 
 # src/ext_l10n.h:242
 #: lib/layouts/db_stdcharstyles.inc:36 lib/layouts/db_stdcharstyles.inc:37
-#, fuzzy
 msgid "Firstname"
 msgstr "Малко име"
 
@@ -13144,7 +12916,7 @@ msgstr "Дословно"
 #: lib/layouts/db_stdcharstyles.inc:86 lib/layouts/db_stdcharstyles.inc:87
 #, fuzzy
 msgid "KeyCombo"
-msgstr "Ключова дума"
+msgstr "Ред падащо меню"
 
 # src/ext_l10n.h:191
 #: lib/layouts/db_stdcharstyles.inc:100 lib/layouts/db_stdcharstyles.inc:101
@@ -13154,37 +12926,34 @@ msgstr "Заглавие"
 
 #: lib/layouts/db_stdcharstyles.inc:114 lib/layouts/db_stdcharstyles.inc:115
 msgid "GuiMenu"
-msgstr ""
+msgstr "Мепю от ГПИ"
 
 #: lib/layouts/db_stdcharstyles.inc:128 lib/layouts/db_stdcharstyles.inc:129
 msgid "GuiMenuItem"
-msgstr ""
+msgstr "Ред на меню от ГПИ"
 
 #: lib/layouts/db_stdcharstyles.inc:142 lib/layouts/db_stdcharstyles.inc:143
 msgid "GuiButton"
-msgstr ""
+msgstr "Бутон от ГПИ"
 
 #: lib/layouts/db_stdcharstyles.inc:156 lib/layouts/db_stdcharstyles.inc:157
 msgid "MenuChoice"
-msgstr ""
+msgstr "Избор на меню"
 
 # src/ext_l10n.h:175
 #: lib/layouts/db_stdtitle.inc:13
-#, fuzzy
 msgid "Authorgroup"
-msgstr "Автор"
+msgstr "Авт. групиране"
 
 # src/ext_l10n.h:323
 #: lib/layouts/db_stdtitle.inc:27
-#, fuzzy
 msgid "RevisionHistory"
-msgstr "Въпрос"
+msgstr "История на промените"
 
 # src/ext_l10n.h:323
 #: lib/layouts/db_stdtitle.inc:42
-#, fuzzy
 msgid "Revision History"
-msgstr "Въпрос"
+msgstr "История на промените"
 
 # src/ext_l10n.h:323
 #: lib/layouts/db_stdtitle.inc:49
@@ -13711,9 +13480,8 @@ msgstr "Стартирам BibTeX."
 
 # src/LaTeX.C:223
 #: lib/layouts/ectaart.layout:32 lib/layouts/llncs.layout:172
-#, fuzzy
 msgid "Running Title:"
-msgstr "Стартирам BibTeX."
+msgstr "Повтарящо се заглавие:"
 
 # src/ext_l10n.h:175
 #: lib/layouts/ectaart.layout:42
@@ -13735,28 +13503,24 @@ msgstr "Опции"
 
 # src/insets/insetfloat.C:150
 #: lib/layouts/ectaart.layout:82 lib/layouts/elsart.layout:164
-#, fuzzy
 msgid "Optional argument for the address"
-msgstr "Отворен Float Inset"
+msgstr "Незадължителен аргумент за адреса"
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/layouts/ectaart.layout:94
-#, fuzzy
 msgid "E-Mail Option"
-msgstr "допълнителни опции"
+msgstr "Опции на ел. поща"
 
 # src/insets/insetfloat.C:150
 #: lib/layouts/ectaart.layout:95
-#, fuzzy
 msgid "Optional argument for the e-mail"
-msgstr "Отворен Float Inset"
+msgstr "Незадължителен аргумент за ел. поща"
 
 # src/layout_forms.C:23
 #: lib/layouts/ectaart.layout:100 lib/layouts/europasscv.layout:156
 #: lib/layouts/europecv.layout:102 lib/layouts/latex8.layout:81
-#, fuzzy
 msgid "E-mail:"
-msgstr "Семейство(F):|#F"
+msgstr "Ел. поща:"
 
 # src/ext_l10n.h:163
 #: lib/layouts/ectaart.layout:119
@@ -13792,52 +13556,45 @@ msgstr "Ключова дума"
 
 # src/ext_l10n.h:386
 #: lib/layouts/ectaart.layout:165
-#, fuzzy
 msgid "Thanks Text"
-msgstr "Благодаря"
+msgstr "Благодарствен текст"
 
 #: lib/layouts/ectaart.layout:172
 msgid "Thanks \\theThanks:"
-msgstr ""
+msgstr "Благодарности \\theThanks:"
 
 # src/ext_l10n.h:328 src/frontends/kde/refdlg.C:62
 # src/frontends/xforms/FormRef.C:36
 #: lib/layouts/ectaart.layout:191
-#, fuzzy
 msgid "Thanks Reference"
-msgstr "Препратка"
+msgstr "Препратка за благодарности"
 
 # src/ext_l10n.h:386
 #: lib/layouts/ectaart.layout:198
-#, fuzzy
 msgid "Thanks Ref"
-msgstr "Благодаря"
+msgstr "Препратка за благодарности"
 
 # src/LyXAction.C:361
 #: lib/layouts/ectaart.layout:204
-#, fuzzy
 msgid "Internet Address Reference"
-msgstr "Вмъкни препратка"
+msgstr "Препратка към итернет адрес"
 
 #: lib/layouts/ectaart.layout:207
 msgid "Internet Addess Ref"
-msgstr ""
+msgstr "Препратка към интернат адрес"
 
 # src/ext_l10n.h:242
 #: lib/layouts/ectaart.layout:224
-#, fuzzy
 msgid "Name (First Name)"
 msgstr "Малко име"
 
 # src/ext_l10n.h:242
 #: lib/layouts/ectaart.layout:227 lib/layouts/moderncv.layout:110
-#, fuzzy
 msgid "First Name"
 msgstr "Малко име"
 
 # src/ext_l10n.h:377
 #: lib/layouts/ectaart.layout:231
-#, fuzzy
 msgid "Name (Surname)"
 msgstr "Презиме"
 
@@ -13873,9 +13630,8 @@ msgstr "Стил TeX|X"
 
 # src/frontends/kde/paraextradlg.C:25 src/lyxfont.C:56
 #: lib/layouts/egs.layout:429
-#, fuzzy
 msgid "Journal:"
-msgstr "Нормален"
+msgstr "Списание:"
 
 # src/mathed/formula.C:929
 #: lib/layouts/egs.layout:438
@@ -13968,7 +13724,7 @@ msgstr "Теорема \\arabic{theorem}"
 
 #: lib/layouts/elsart.layout:359
 msgid "PROOF."
-msgstr ""
+msgstr "Доказателство."
 
 #: lib/layouts/elsart.layout:375
 msgid "Lemma \\arabic{theorem}"
@@ -13988,7 +13744,7 @@ msgstr "Признак \\arabic{theorem}"
 
 #: lib/layouts/elsart.layout:411
 msgid "Algorithm \\arabic{theorem}"
-msgstr ""
+msgstr "Алгоритъм \\arabic{theorem}"
 
 #: lib/layouts/elsart.layout:420
 msgid "Definition \\arabic{theorem}"
@@ -14129,9 +13885,8 @@ msgstr ""
 
 # src/ext_l10n.h:163
 #: lib/layouts/elsarticle.layout:229
-#, fuzzy
 msgid "Address Label"
-msgstr "Адреси"
+msgstr "Етикет с адрес"
 
 #: lib/layouts/elsarticle.layout:230
 msgid "Label of the author you refer to"
@@ -14139,26 +13894,23 @@ msgstr ""
 
 # src/LyXAction.C:388
 #: lib/layouts/elsarticle.layout:256
-#, fuzzy
 msgid "Internet"
-msgstr "Вмъкни таблица"
+msgstr "Интернет"
 
 #: lib/layouts/elsarticle.layout:257
 msgid "If content is 'url', email becomes an Internet address"
-msgstr ""
+msgstr "Ако съдържанието е „url“ ел. поща става „Интернет адрес“"
 
 # src/LColor.C:67
 #: lib/layouts/endnotes.module:2
-#, fuzzy
 msgid "Endnotes (Basic)"
-msgstr "бележка"
+msgstr "Бележки в края (обикновени)"
 
 # src/ext_l10n.h:82
 #: lib/layouts/endnotes.module:3 lib/layouts/enotez.module:3
 #: lib/layouts/foottoend.module:3 lib/layouts/foottoenotez.module:3
-#, fuzzy
 msgid "Foot- and Endnotes"
-msgstr "Бележки под линия"
+msgstr "Бележки в края и под линия"
 
 #: lib/layouts/endnotes.module:10
 msgid ""
@@ -14167,51 +13919,50 @@ msgid ""
 "as well. You will need to add an endnotes list (Insert > List/Contents/"
 "References > Endnotes) where you want the endnotes to appear."
 msgstr ""
+"Зарежда добавка за бележки в края в допълнение към бележките под линия. Използва "
+"се пакета „endnotes“, които има някои ограничения, но работи с по-стари "
+"версии на LaTeX. За да ги използвате трябва да добавите списък с бележки "
+"(Вмъкване->Списък, Съдържание, Препратки->Бележки в края) там, където искате "
+"да се появят."
 
 # src/LColor.C:67
 #: lib/layouts/endnotes.module:15 lib/layouts/endnotes.module:42
 #: lib/layouts/enotez.module:15 lib/layouts/enotez.module:36
 #: lib/layouts/foottoend.module:30 lib/layouts/foottoenotez.module:25
 #: lib/layouts/memoir.layout:300
-#, fuzzy
 msgid "Endnotes"
-msgstr "бележка"
+msgstr "Бележки в края"
 
 # src/LColor.C:67
 #: lib/layouts/endnotes.module:16 lib/layouts/enotez.module:16
 #: lib/layouts/memoir.layout:301
-#, fuzzy
 msgid "Endnote ##"
-msgstr "бележка"
+msgstr "Бележка вкрая ##"
 
 # src/LColor.C:67
 #: lib/layouts/endnotes.module:19 lib/layouts/enotez.module:19
 #: lib/layouts/foottoend.module:16 lib/layouts/foottoenotez.module:17
 #: lib/layouts/memoir.layout:304
-#, fuzzy
 msgid "Endnote"
-msgstr "бележка"
+msgstr "Бележка в края"
 
 # src/ext_l10n.h:252
 #: lib/layouts/endnotes.module:29 lib/layouts/enotez.module:29
 #: lib/layouts/memoir.layout:314
-#, fuzzy
 msgid "endnote"
-msgstr "Заглавие"
+msgstr "Бележка в края"
 
 # src/LColor.C:67
 #: lib/layouts/endnotes.module:32 lib/layouts/endnotes.module:35
 #: lib/layouts/foottoend.module:20 lib/layouts/foottoend.module:23
 #: lib/layouts/memoir.layout:319 lib/layouts/memoir.layout:322
-#, fuzzy
 msgid "Notes[[Endnotes]]"
-msgstr "бележка"
+msgstr "Бележки в края"
 
 # src/ext_l10n.h:438
 #: lib/layouts/enotez.module:2
-#, fuzzy
 msgid "Endnotes (Extended)"
-msgstr "Оператори (допълнителни)"
+msgstr "Бележки в края (разширени)"
 
 #: lib/layouts/enotez.module:10
 msgid ""
@@ -14221,16 +13972,21 @@ msgid ""
 "(with LaTeX3). You will need to add an endnotes list (Insert > List/Contents/"
 "References > Endnotes) where you want the endnotes to appear."
 msgstr ""
+"Добавка за бележки в края в допълнение към бележки под линия. Използва се "
+"пакетът „enotez“, който е по-мощен и конфигурируем от пакета „endnotes“ "
+"(модула „Бележки в края (основен)“), но изисква по-нова инсталация на "
+"LaTeX (с LaTeX 3). Необходимо е да добавите списък с бележки в края "
+"(Вмъкване->Списък, съдържание, препратки->Бележки в края) на мястото, "
+"където искате да се появят."
 
 #: lib/layouts/entcs.layout:3
 msgid "Electronic Notes in Theor. Comp. Sc. (ENTCS)"
-msgstr ""
+msgstr "Електронни бележки в теор. комп. изчисл. (ENTCS)"
 
 # src/ext_l10n.h:263
 #: lib/layouts/entcs.layout:116 lib/layouts/siamltex.layout:324
-#, fuzzy
 msgid "Key words:"
-msgstr "Ключови дума"
+msgstr "Ключови думи:"
 
 #: lib/layouts/enumitem.module:2
 msgid "Customisable Lists (enumitem)"
@@ -14240,9 +13996,8 @@ msgstr "Конфигурируеми списъци (enumitem)"
 # src/frontends/kde/FormToc.C:177 src/frontends/kde/FormToc.C:178
 # src/frontends/kde/tocdlg.C:30 src/insets/insettoc.C:28
 #: lib/layouts/enumitem.module:3 lib/layouts/paralist.module:3
-#, fuzzy
 msgid "List Enhancements"
-msgstr "Списък на таблици"
+msgstr "Подобрени списъци"
 
 #: lib/layouts/enumitem.module:7
 msgid ""
@@ -14250,7 +14005,7 @@ msgid ""
 "See section Customized Lists of the User's Guide for a detailed description."
 msgstr ""
 "Настройва оформлението на номерираните, изброените, описателните списъци "
-"етикетите на отделните им точки. Проверете Ръководството на потребителя, "
+"и етикетите на отделните им точки. Проверете Ръководството на потребителя, "
 "раздел Конфигурируеми списъци за повече информация."
 
 # src/LyXAction.C:251
@@ -14288,13 +14043,12 @@ msgstr "Eтикети"
 
 # src/ext_l10n.h:231
 #: lib/layouts/enumitem.module:109
-#, fuzzy
 msgid "Enumerate-Resume"
-msgstr "Номерация"
+msgstr "Иброяване-резюме"
 
 #: lib/layouts/eqs-within-sections.module:2
 msgid "Number Equations by Section"
-msgstr ""
+msgstr "Номериране на уравнения по раздели"
 
 # src/frontends/xforms/FormPreferences.C:261
 #: lib/layouts/eqs-within-sections.module:3 lib/layouts/subequations.module:3
@@ -14309,30 +14063,31 @@ msgstr ""
 #: lib/layouts/theorems-sec.module:3 lib/layouts/theorems-starred.module:3
 #: lib/layouts/theorems-std.module:3 src/frontends/qt/BulletsModule.cpp:52
 msgid "Maths"
-msgstr "математически"
+msgstr "Математически"
 
 #: lib/layouts/eqs-within-sections.module:7
 msgid ""
 "Resets the equation number at section start and prepends the section number "
 "to the equation number, as in '(2.1)'."
 msgstr ""
+"Рестартира номера на уравнението в началото на всеки раздел и поставя пред "
+"него номера на раздела като напр. (2.1)"
 
 # src/ext_l10n.h:191
 #: lib/layouts/eqs-within-sections.module:17 lib/layouts/scrbook.layout:29
-#: lib/layouts/stdcounters.inc:81 src/insets/InsetRef.cpp:596
-#: src/mathed/InsetMathRef.cpp:349
+#: lib/layouts/stdcounters.inc:81 src/insets/InsetRef.cpp:598
+#: src/mathed/InsetMathRef.cpp:372
 msgid "Equation"
 msgstr "Уравнение"
 
 # src/ext_l10n.h:373
 #: lib/layouts/eqs-within-sections.module:19
-#, fuzzy
 msgid "\\thesection.\\arabic{equation}"
-msgstr "Под-подраздел"
+msgstr "\\thesection.\\arabic{equation}"
 
 #: lib/layouts/europasscv.layout:3 lib/examples/Articles:0
 msgid "Europass CV (2013)"
-msgstr ""
+msgstr "Автобиография Европас (2003)"
 
 #: lib/layouts/europasscv.layout:4 lib/layouts/europecv.layout:4
 #: lib/layouts/moderncv.layout:4 lib/layouts/simplecv.layout:4
@@ -14361,9 +14116,8 @@ msgstr "Вмъкни бел. под линия"
 
 # src/frontends/kde/dlg/printdlgdata.C:246
 #: lib/layouts/europasscv.layout:128 lib/layouts/moderncv.layout:206
-#, fuzzy
 msgid "Mobile:"
-msgstr "(&F)Файл"
+msgstr "Мобилен:"
 
 # src/mathed/formula.C:929
 #: lib/layouts/europasscv.layout:129 lib/layouts/europecv.layout:117
@@ -14373,35 +14127,33 @@ msgstr "Мобилен телефонен номер"
 # src/frontends/kde/paraextradlg.C:27
 #: lib/layouts/europasscv.layout:165 lib/layouts/jasatex.layout:155
 #: lib/layouts/moderncv.layout:229
-#, fuzzy
 msgid "Homepage"
-msgstr "Министраница"
+msgstr "Начална страница"
 
 #: lib/layouts/europasscv.layout:168 lib/layouts/moderncv.layout:232
 msgid "Homepage:"
-msgstr ""
+msgstr "Начална страница:"
 
 #: lib/layouts/europasscv.layout:178
 msgid "InstantMessaging"
-msgstr ""
+msgstr "Незабавни съобщения"
 
 #: lib/layouts/europasscv.layout:181
 msgid "Instant Messaging:"
-msgstr ""
+msgstr "Незабавни съобщения:"
 
 # src/frontends/xforms/form_toc.C:40
 #: lib/layouts/europasscv.layout:185
-#, fuzzy
 msgid "IM Type:"
-msgstr "Тип(T):|#T"
+msgstr "Име:"
 
 #: lib/layouts/europasscv.layout:186
 msgid "IM Type (e.g., AOL Messenger)"
-msgstr ""
+msgstr "Име на системата за незабавни съобщения (напр. AOL Messemger)"
 
 #: lib/layouts/europasscv.layout:199 lib/layouts/europecv.layout:77
 msgid "Birthday"
-msgstr ""
+msgstr "Рожденна дата"
 
 # src/frontends/xforms/form_preferences.C:354
 #: lib/layouts/europasscv.layout:202 lib/layouts/europecv.layout:80
@@ -14431,19 +14183,17 @@ msgstr "Пол:"
 # src/frontends/xforms/FormPreferences.C:226
 # src/frontends/xforms/FormPreferences.C:255
 #: lib/layouts/europasscv.layout:232 lib/layouts/europecv.layout:152
-#, fuzzy
 msgid "BeforePicture"
-msgstr "Конвертори"
+msgstr "Преди снимка"
 
 #: lib/layouts/europasscv.layout:235 lib/layouts/europecv.layout:155
 msgid "Space before picture:"
-msgstr ""
+msgstr "Разстояние преди снимката:"
 
 # src/ext_l10n.h:351
 #: lib/layouts/europasscv.layout:240 lib/layouts/europecv.layout:160
-#, fuzzy
 msgid "Picture"
-msgstr "Подпис"
+msgstr "Снимка"
 
 # src/ext_l10n.h:351
 #: lib/layouts/europasscv.layout:244 lib/layouts/europecv.layout:164
@@ -14452,18 +14202,17 @@ msgstr "Снимка:"
 
 #: lib/layouts/europasscv.layout:247
 msgid "Resize photo to this width"
-msgstr ""
+msgstr "Оразмеряване на снимката до тази ширина"
 
 # src/frontends/xforms/FormPreferences.C:226
 # src/frontends/xforms/FormPreferences.C:255
 #: lib/layouts/europasscv.layout:256 lib/layouts/europecv.layout:177
-#, fuzzy
 msgid "AfterPicture"
-msgstr "Конвертори"
+msgstr "След снимката"
 
 #: lib/layouts/europasscv.layout:259 lib/layouts/europecv.layout:180
 msgid "Space after picture:"
-msgstr ""
+msgstr "Разстояние след снимката"
 
 # src/frontends/xforms/form_paragraph.C:153
 #: lib/layouts/europasscv.layout:272 lib/layouts/europasscv.layout:297
@@ -14504,19 +14253,17 @@ msgstr "Вмъкни индекс списък"
 
 #: lib/layouts/europasscv.layout:347
 msgid "Subitems"
-msgstr ""
+msgstr "Подточка"
 
 # src/ext_l10n.h:246
 #: lib/layouts/europasscv.layout:354
-#, fuzzy
 msgid "TitleItem"
-msgstr "Бел. под линия"
+msgstr "Заглавие на точка"
 
 # src/ext_l10n.h:395 src/frontends/gnome/FormCitation.C:529
 #: lib/layouts/europasscv.layout:358
-#, fuzzy
 msgid "Title item:"
-msgstr "Заглавие"
+msgstr "Заглавие на точка:"
 
 # src/ext_l10n.h:395 src/frontends/gnome/FormCitation.C:529
 #: lib/layouts/europasscv.layout:362
@@ -14538,15 +14285,13 @@ msgstr "Избор на следващ ред"
 
 # src/frontends/xforms/FormDocument.C:281
 #: lib/layouts/europasscv.layout:375
-#, fuzzy
 msgid "BlueItem"
-msgstr "Точки"
+msgstr "Синя точка"
 
 # src/LColor.C:65
 #: lib/layouts/europasscv.layout:378
-#, fuzzy
 msgid "Blue item:"
-msgstr "Latex"
+msgstr "Синя точка:"
 
 # src/ext_l10n.h:215
 #: lib/layouts/europasscv.layout:382
@@ -14556,19 +14301,17 @@ msgstr "Клиент"
 
 #: lib/layouts/europasscv.layout:385
 msgid "Blue subitems"
-msgstr ""
+msgstr "Синя подточка"
 
 # src/LyXAction.C:251
 #: lib/layouts/europasscv.layout:392
-#, fuzzy
 msgid "BigItem"
-msgstr "Вмъкни индекс списък"
+msgstr "Главна точка"
 
 # src/LyXAction.C:225 src/LyXAction.C:229
 #: lib/layouts/europasscv.layout:395
-#, fuzzy
 msgid "Big Item:"
-msgstr "Вмъкни бел. под линия"
+msgstr "Главна точка"
 
 # src/LyXAction.C:251
 #: lib/layouts/europasscv.layout:399
@@ -14578,11 +14321,11 @@ msgstr "Вмъкни индекс списък"
 
 #: lib/layouts/europasscv.layout:436 lib/layouts/europecv.layout:288
 msgid "MotherTongue"
-msgstr "Роден език"
+msgstr "Майчин език"
 
 #: lib/layouts/europasscv.layout:445 lib/layouts/europecv.layout:302
 msgid "Mother Tongue:"
-msgstr "Роден език:"
+msgstr "Майчин език:"
 
 # src/ext_l10n.h:252
 #: lib/layouts/europasscv.layout:457 lib/layouts/europecv.layout:314
@@ -14710,7 +14453,7 @@ msgstr "Размерът до който се мащабира снимката"
 
 # src/frontends/kde/dlg/printdlgdata.C:42
 #: lib/layouts/europecv.layout:185 src/frontends/qt/GuiDocument.cpp:136
-#: src/insets/InsetRef.cpp:597
+#: src/insets/InsetRef.cpp:599
 msgid "Page"
 msgstr "Страница"
 
@@ -14754,7 +14497,6 @@ msgstr "Лични данни"
 
 # src/frontends/xforms/form_paragraph.C:153
 #: lib/layouts/europecv.layout:394
-#, fuzzy
 msgid "VerticalSpace"
 msgstr "Вертикално разстояние"
 
@@ -14781,9 +14523,8 @@ msgstr "Доклад (стандартен клас с допълнителни
 
 # src/ext_l10n.h:387
 #: lib/layouts/figs-within-sections.module:2
-#, fuzzy
 msgid "Number Figures by Section"
-msgstr "Теорема"
+msgstr "Номериране на изображения по раздели"
 
 #: lib/layouts/figs-within-sections.module:7
 msgid ""
@@ -14792,9 +14533,8 @@ msgid ""
 msgstr ""
 
 #: lib/layouts/fix-cm.module:2
-#, fuzzy
 msgid "Fix Computer Modern Fonts"
-msgstr "Computer Modern Sans"
+msgstr "Поправка на шрифтове Computer Modern"
 
 #: lib/layouts/fix-cm.module:9
 msgid ""
@@ -14805,7 +14545,7 @@ msgstr ""
 
 #: lib/layouts/fixltx2e.module:2
 msgid "LaTeX Kernel Fixes (Obsolete)"
-msgstr ""
+msgstr "Поправки в ядрото на LaTeX (остарял)"
 
 #: lib/layouts/fixltx2e.module:11
 msgid ""
@@ -14820,15 +14560,14 @@ msgstr ""
 
 # src/ext_l10n.h:136
 #: lib/layouts/fixme.module:2
-#, fuzzy
 msgid "FiXme Notes"
-msgstr "Бележка(N)|N"
+msgstr "Бележки „Поправка“"
 
 #: lib/layouts/fixme.module:3 lib/layouts/pdfcomment.module:3
 #: lib/layouts/pdfform.module:3 lib/layouts/ruby.module:3
 #: lib/layouts/todonotes.module:3
 msgid "Annotation & Revision"
-msgstr ""
+msgstr "Анотации и ревизии"
 
 #: lib/layouts/fixme.module:12
 msgid ""
@@ -14844,43 +14583,39 @@ msgstr ""
 
 #: lib/layouts/fixme.module:18 lib/layouts/fixme.module:56
 msgid "Fixme"
-msgstr ""
+msgstr "Поправка"
 
 # src/frontends/gnome/FormToc.C:108 src/frontends/gnome/FormToc.C:185
 # src/frontends/kde/FormToc.C:177 src/frontends/kde/FormToc.C:178
 # src/frontends/kde/tocdlg.C:30 src/insets/insettoc.C:28
 #: lib/layouts/fixme.module:24
-#, fuzzy
 msgid "List of FIXMEs"
-msgstr "Списък на таблици"
+msgstr "Списък „Поправки“"
 
 # src/ext_l10n.h:244
 #: lib/layouts/fixme.module:38
-#, fuzzy
 msgid "[List of FIXMEs]"
-msgstr "Фигура"
+msgstr "[Списък „Поправки“]"
 
 # src/ext_l10n.h:136
 #: lib/layouts/fixme.module:54
-#, fuzzy
 msgid "Fixme Note"
-msgstr "Бележка(N)|N"
+msgstr "Бележки „Поправка“"
 
 #: lib/layouts/fixme.module:69 lib/layouts/fixme.module:104
 #: lib/layouts/fixme.module:147 lib/layouts/fixme.module:189
 msgid "Fixme Note Options|s"
-msgstr ""
+msgstr "Опции на белжка „Поправка“|О"
 
 #: lib/layouts/fixme.module:70 lib/layouts/fixme.module:105
 #: lib/layouts/fixme.module:148 lib/layouts/fixme.module:190
 msgid "Consult the fixme package documentation for options"
-msgstr ""
+msgstr "Проверете документацията на пакета „fixme“ за опции"
 
 # src/ext_l10n.h:298
 #: lib/layouts/fixme.module:75
-#, fuzzy
 msgid "Fixme Warning"
-msgstr "Отваряне"
+msgstr "Предупреждение на Поправка"
 
 # src/ext_l10n.h:298
 #: lib/layouts/fixme.module:77
@@ -14889,45 +14624,41 @@ msgstr "Предупреждение"
 
 # src/form1.C:245
 #: lib/layouts/fixme.module:81
-#, fuzzy
 msgid "Fixme Error"
-msgstr "Име на файл(F):|#F"
+msgstr "Грешка на Поправка"
 
 # src/LColor.C:92
 #: lib/layouts/fixme.module:83 src/frontends/qt/GuiCompare.cpp:199
-#: src/frontends/qt/GuiDocument.cpp:2847 src/frontends/qt/GuiDocument.cpp:2921
-#: src/frontends/qt/GuiDocument.cpp:4831
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2865 src/frontends/qt/GuiDocument.cpp:2939
+#: src/frontends/qt/GuiDocument.cpp:4846
 msgid "Error"
-msgstr "грешка"
+msgstr "Грешка"
 
 #: lib/layouts/fixme.module:87
 msgid "Fixme Fatal"
-msgstr ""
+msgstr "Поправка фатална"
 
 # src/ext_l10n.h:432
 #: lib/layouts/fixme.module:89
-#, fuzzy
 msgid "Fatal"
-msgstr "Каталонски"
+msgstr "Фатална"
 
 #: lib/layouts/fixme.module:98
 msgid "Fixme Note (Targeted)"
-msgstr ""
+msgstr "Бележка „Поправка“ (насочена)"
 
 #: lib/layouts/fixme.module:100
 msgid "Fixme (Targeted)"
-msgstr ""
+msgstr "Поправка (насочена)"
 
 # src/ext_l10n.h:136
 #: lib/layouts/fixme.module:110
-#, fuzzy
 msgid "Fixme Note|x"
-msgstr "Бележка(N)|N"
+msgstr "Бележка „Поправка“"
 
 #: lib/layouts/fixme.module:112
 msgid "Insert the FIXME note here"
-msgstr ""
+msgstr "Вмъкване на бележка „Поправка“ тук“"
 
 #: lib/layouts/fixme.module:117
 msgid "Fixme Warning (Targeted)"
@@ -15222,9 +14953,8 @@ msgstr "Определение*"
 
 # src/ext_l10n.h:246
 #: lib/layouts/foottoend.module:2
-#, fuzzy
 msgid "Footnotes as Endnotes (Basic)"
-msgstr "Бел. под линия"
+msgstr "Бeл. под линия като бел. в края (обикновени)"
 
 #: lib/layouts/foottoend.module:10
 msgid ""
@@ -15236,9 +14966,8 @@ msgstr ""
 
 # src/ext_l10n.h:246
 #: lib/layouts/foottoenotez.module:2
-#, fuzzy
 msgid "Footnotes as Endnotes (Extended)"
-msgstr "Бел. под линия"
+msgstr "Бeл. под линия като бел. в края (разширени)"
 
 #: lib/layouts/foottoenotez.module:11
 msgid ""
@@ -15259,9 +14988,8 @@ msgstr ""
 
 # src/ext_l10n.h:362
 #: lib/layouts/g-brief.layout:31 lib/layouts/g-brief2.layout:74
-#, fuzzy
 msgid "Letter:"
-msgstr "Държава"
+msgstr "Писмо:"
 
 # src/ext_l10n.h:364
 #: lib/layouts/g-brief.layout:71
@@ -15348,29 +15076,26 @@ msgstr "Телекс"
 
 # src/ext_l10n.h:385
 #: lib/layouts/g-brief.layout:144
-#, fuzzy
 msgid "Telex:"
-msgstr "Телекс"
+msgstr "Телекс:"
 
 # src/layout_forms.C:23
 #: lib/layouts/g-brief.layout:148
-#, fuzzy
 msgid "EMail"
-msgstr "Семейство(F):|#F"
+msgstr "Ел. поща"
 
 # src/layout_forms.C:23
 #: lib/layouts/g-brief.layout:151
-#, fuzzy
 msgid "EMail:"
-msgstr "Семейство(F):|#F"
+msgstr "Ел. поща:"
 
 #: lib/layouts/g-brief.layout:155
 msgid "HTTP"
-msgstr ""
+msgstr "HTTP"
 
 #: lib/layouts/g-brief.layout:158
 msgid "HTTP:"
-msgstr ""
+msgstr "HTTP:"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:94
 #: lib/layouts/g-brief.layout:162 lib/layouts/scrlttr2.layout:285
@@ -15782,103 +15507,92 @@ msgstr "Блок"
 # src/frontends/xforms/FormGraphics.C:36
 # src/frontends/xforms/FormGraphics.C:359
 #: lib/layouts/graphicboxes.module:2
-#, fuzzy
 msgid "GraphicBoxes"
-msgstr "Графика"
+msgstr "Рамки за изображения"
 
 # src/frontends/xforms/FormPreferences.C:244
 #: lib/layouts/graphicboxes.module:3 lib/layouts/sectionbox.module:3
 #: lib/layouts/tcolorbox.module:3 lib/layouts/varwidth.module:3
-#, fuzzy
 msgid "Boxes"
-msgstr "Цветни рамки"
+msgstr "Рамки"
 
 #: lib/layouts/graphicboxes.module:6
 msgid "Boxes to scale and rotate its contents"
-msgstr ""
+msgstr "Рамки, които мащабират и въртят съдържанието си"
 
 # src/LColor.C:64
 #: lib/layouts/graphicboxes.module:12 lib/layouts/graphicboxes.module:15
-#, fuzzy
 msgid "Reflectbox"
-msgstr "избор"
+msgstr "Отражение"
 
 # src/frontends/xforms/form_tabular.C:453
 #: lib/layouts/graphicboxes.module:27 lib/layouts/graphicboxes.module:29
-#, fuzzy
 msgid "Scalebox"
-msgstr "Специален"
+msgstr "Мащабииране"
 
 # src/ext_l10n.h:238
 #: lib/layouts/graphicboxes.module:32
-#, fuzzy
 msgid "H-Factor"
-msgstr "Факт"
+msgstr "Хоризонт. коефицент"
 
 #: lib/layouts/graphicboxes.module:33
 msgid "Insert horizontal scale factor (1 = 100%)"
-msgstr ""
+msgstr "Вмъкване на хоризонтален мащабиращ коефицент (1 = 100%)"
 
 # src/ext_l10n.h:238
 #: lib/layouts/graphicboxes.module:39
-#, fuzzy
 msgid "V-Factor"
-msgstr "Факт"
+msgstr "Верт. коефицент"
 
 #: lib/layouts/graphicboxes.module:40
 msgid "Insert vertical scale factor (1 = 100%)"
-msgstr ""
+msgstr "Вмъкване на верт. мащабиращ фактор (1 = 100%)"
 
 #: lib/layouts/graphicboxes.module:44 lib/layouts/graphicboxes.module:46
 msgid "Resizebox"
-msgstr ""
+msgstr "Преоразмеряване"
 
 #: lib/layouts/graphicboxes.module:50
 msgid "Width of the box"
-msgstr ""
+msgstr "Ширина на полето"
 
 #: lib/layouts/graphicboxes.module:57
 msgid "Height of the box, can also be '!' to keep aspect ratio"
-msgstr ""
+msgstr "Височината на рамката може също така да бъде „!“ за запазване на съотношението"
 
 # src/ext_l10n.h:362
 #: lib/layouts/graphicboxes.module:64 lib/layouts/graphicboxes.module:66
-#, fuzzy
 msgid "Rotatebox"
-msgstr "Държава"
+msgstr "Въртене"
 
 # src/ext_l10n.h:191
 #: lib/layouts/graphicboxes.module:69
-#, fuzzy
 msgid "Origin"
-msgstr "Заглавие"
+msgstr "Център на въртене"
 
 #: lib/layouts/graphicboxes.module:70
 msgid "Rotation origin; syntax: 'origin=lt' (for top left corner)"
-msgstr ""
+msgstr "Център на въртене; формат: „origin=lt“ (за горен ляв ъгъл)"
 
 # src/form1.C:133
 #: lib/layouts/graphicboxes.module:73
-#, fuzzy
 msgid "Angle"
-msgstr "Ъгъл(L):|#L"
+msgstr "Ъгъл"
 
 #: lib/layouts/graphicboxes.module:74
 msgid "Rotation angle in degrees (counterclockwise)"
-msgstr ""
+msgstr "Ъгъл на завъртане в градуси (обратно на час. стрелка)"
 
 # src/buffer.C:323
 #: lib/layouts/hanging.module:2
-#, fuzzy
 msgid "Hanging Paragraphs"
-msgstr "Един абзац назад"
+msgstr "Висящи абзаци"
 
 # src/insets/insetbib.C:219
 #: lib/layouts/hanging.module:3 lib/layouts/initials.module:3
 #: lib/layouts/shapepar.module:3
-#, fuzzy
 msgid "Paragraph Styles"
-msgstr "Библ. перо"
+msgstr "Абзаци"
 
 #: lib/layouts/hanging.module:7
 msgid ""
@@ -15886,6 +15600,8 @@ msgid ""
 "in which the first line is set to the left margin, but all subsequent lines "
 "are indented."
 msgstr ""
+"Добавя среда за висящи абзаци. Висящия абзац е абзац, чийто първи ред е започва "
+"до лявото поле, а всички следващи редове започват с отсъп от полето."
 
 # src/frontends/xforms/form_document.C:98
 #: lib/layouts/hanging.module:17
@@ -15923,7 +15639,7 @@ msgstr "Доказателство:"
 #: lib/layouts/heb-letter.layout:3
 #, fuzzy
 msgid "Hebrew Letter"
-msgstr "Държава"
+msgstr "Еврейска буква"
 
 #: lib/layouts/hollywood.layout:3 lib/examples/Articles:0
 msgid "Hollywood"
@@ -15997,12 +15713,12 @@ msgstr "Словенски"
 
 #: lib/layouts/hpstatement.module:2
 msgid "Chemistry: Hazard and Precautionary Statements"
-msgstr ""
+msgstr "Химия: Надписи за опасност и предпазни мерки"
 
 #: lib/layouts/hpstatement.module:3 lib/layouts/linguistics.module:3
 #: lib/layouts/rsphrase.module:3
 msgid "Academic Field Specifics"
-msgstr ""
+msgstr "Научни в специфична област"
 
 #: lib/layouts/hpstatement.module:8
 msgid ""
@@ -16010,42 +15726,41 @@ msgid ""
 "precautionary statements. For a description see the file H-P-statements.lyx "
 "in LyX's examples folder."
 msgstr ""
+"Предоставя две добавки за набор от кодове и фрази за химическа опасност и "
+"предпазни мерки. За описание погледнете файла „H-P-statements.lyx“ в "
+"директорията на LyX за примерни документи."
 
 # src/mathed/formula.C:929
 #: lib/layouts/hpstatement.module:12 lib/layouts/hpstatement.module:17
-#, fuzzy
 msgid "H-P number"
-msgstr "Номериране"
+msgstr "Код за опасност"
 
 # src/LColor.C:75
 #: lib/layouts/hpstatement.module:36 lib/layouts/hpstatement.module:39
-#, fuzzy
 msgid "H-P statement"
-msgstr "акцент"
+msgstr "Код за опасност"
 
 # src/ext_l10n.h:285
 #: lib/layouts/hpstatement.module:41
-#, fuzzy
 msgid "Statement Text"
-msgstr "Препратка"
+msgstr "Описание"
 
 #: lib/layouts/hpstatement.module:42
 msgid "Text for statements that require some information"
-msgstr ""
+msgstr "Текст на описание, което изисква някаква информация"
 
 #: lib/layouts/ijmpc.layout:3 lib/examples/Articles:0
 msgid "Int. Journal of Modern Physics C"
-msgstr ""
+msgstr "Междун. журнал за модерна физика"
 
 # src/ext_l10n.h:175
 #: lib/layouts/ijmpc.layout:75 lib/layouts/ijmpd.layout:80
-#, fuzzy
 msgid "Author Names"
-msgstr "Автор"
+msgstr "Имена на автор"
 
 #: lib/layouts/ijmpc.layout:76 lib/layouts/ijmpd.layout:81
 msgid "Author names that will appear in the header line"
-msgstr ""
+msgstr "Имена на автора, които ще се появят в заглавния ред"
 
 # src/LColor.C:84
 #: lib/layouts/ijmpc.layout:92 lib/layouts/ijmpc.layout:96
@@ -16192,19 +15907,17 @@ msgstr "Предположение \\theconjecture."
 
 # src/BufferView2.C:581 src/LyXAction.C:169 src/MenuBackend.C:432
 #: lib/layouts/ijmpc.layout:489 lib/layouts/theorems-without-preamble.inc:142
-#, fuzzy
 msgid "Prop"
-msgstr "Копирай"
+msgstr "Твърдение"
 
 # src/LColor.C:64
 #: lib/layouts/ijmpc.layout:509 lib/layouts/ijmpd.layout:533
-#, fuzzy
 msgid "Appendix \\Alph{appendix}."
-msgstr "избор"
+msgstr "Приложение \\Alph{appendix}."
 
 #: lib/layouts/ijmpd.layout:3 lib/examples/Articles:0
 msgid "Int. Journal of Modern Physics D"
-msgstr ""
+msgstr "Междун. журнал за модерна физика D"
 
 # src/ext_l10n.h:262 src/frontends/gnome/FormIndex.C:89
 # src/frontends/xforms/form_index.C:28
@@ -16215,35 +15928,35 @@ msgstr "Ключова дума"
 
 # src/ext_l10n.h:320
 #: lib/layouts/ijmpd.layout:515 lib/layouts/theorems-without-preamble.inc:140
-#, fuzzy
 msgid "Prop(osition)"
 msgstr "Твърдение"
 
 #: lib/layouts/initials.module:2
 msgid "Initials (Drop Caps)"
-msgstr ""
+msgstr "Начални букви (заглавки)"
 
 #: lib/layouts/initials.module:7
 msgid ""
 "Defines a style for paragraphs with an enlarged initial letter (drop cap). "
 "See the EmbeddedObjects manual for a detailed description."
 msgstr ""
+"Дефинира стил за абзаци с уголемена начална буква - заглавка. Обърнете се "
+"към ръководството за вградени обекти за пълно описание." 
 
 # src/lyxfont.C:51
 #: lib/layouts/initials.module:15 lib/layouts/initials.module:17
 #: lib/layouts/initials.module:27 lib/layouts/initials.module:33
 #: lib/layouts/initials.module:40
-#, fuzzy
 msgid "Initial"
-msgstr "Курсив"
+msgstr "Заглавка"
 
 #: lib/layouts/initials.module:36
 msgid "Option(s) for the initial"
-msgstr ""
+msgstr "Опции на заглавка"
 
 #: lib/layouts/initials.module:41
 msgid "Initial letter(s)"
-msgstr ""
+msgstr "Начални букви"
 
 # src/lyxfont.C:51
 #: lib/layouts/initials.module:45
@@ -16257,7 +15970,7 @@ msgstr ""
 
 #: lib/layouts/iopart.layout:3 lib/examples/Articles:0
 msgid "Institute of Physics (IOP)"
-msgstr ""
+msgstr "Институт по физика"
 
 #: lib/layouts/iopart.layout:68 lib/layouts/jasatex.layout:76
 msgid "Short title that will appear in header line"
@@ -16495,23 +16208,21 @@ msgstr "Статия на япоски (стандартен вид)"
 
 #: lib/layouts/jasatex.layout:3 lib/examples/Articles:0
 msgid "Journal of the Acoustical Society of America (JASA)"
-msgstr ""
+msgstr "Журнал на акустичното общество в Америка (JASA)"
 
 # src/frontends/xforms/form_preferences.C:278
 #: lib/layouts/jasatex.layout:137
-#, fuzzy
 msgid "Alternative Affiliation"
-msgstr "Използвай алтернативен език"
+msgstr "Алтернативна принадлежност"
 
 # src/ext_l10n.h:221
 #: lib/layouts/jasatex.layout:142
-#, fuzzy
 msgid "Affiliation Prefix"
-msgstr "Дефиниция"
+msgstr "Префикс на принадлежност"
 
 #: lib/layouts/jasatex.layout:143
 msgid "A prefix like 'Also at '"
-msgstr ""
+msgstr "Префикс като „Също и към “"
 
 # src/mathed/formula.C:929
 #: lib/layouts/jasatex.layout:264 lib/layouts/revtex4-x.inc:200
@@ -16521,21 +16232,18 @@ msgstr "Номериране"
 
 # src/frontends/kde/dlg/printdlgdata.C:116
 #: lib/layouts/jasatex.layout:277
-#, fuzzy
 msgid "Preprint number"
-msgstr "(&P)Печат"
+msgstr "Предпечатен номер"
 
 # src/frontends/kde/dlg/printdlgdata.C:116
 #: lib/layouts/jasatex.layout:280
-#, fuzzy
 msgid "Preprint number:"
-msgstr "(&P)Печат"
+msgstr "Предпечатен номер:"
 
 # src/LyXAction.C:164
-#: lib/layouts/jasatex.layout:305 lib/layouts/jasatex.layout:309
-#, fuzzy
+#: lib/layouts/jasatex.layout:305 lib/layouts/jasatex.layout:309ѝ 
 msgid "Online citation"
-msgstr "Вмъкни цитат"
+msgstr "Цитат в реда"
 
 #: lib/layouts/jbook.layout:3
 msgid "Japanese Book (Standard Class)"
@@ -16543,7 +16251,7 @@ msgstr "Книга на японски (стандартен вид)"
 
 #: lib/layouts/jgrga.layout:3
 msgid "American Geophysical Union (AGUPLUS JGR)"
-msgstr ""
+msgstr "Американски геофизически съюз (AGUPLUS JGR)"
 
 #: lib/layouts/jreport.layout:3
 msgid "Japanese Report (Standard Class)"
@@ -16559,19 +16267,17 @@ msgstr "Книга на японски (JS клас)"
 
 #: lib/layouts/jss.layout:3 lib/examples/Articles:0
 msgid "Journal of Statistical Software (JSS) version 2"
-msgstr ""
+msgstr "Журнал за статистически софтуер (JSS) версия 2"
 
 # src/ext_l10n.h:263
 #: lib/layouts/jss.layout:111
-#, fuzzy
 msgid "Plain Keywords"
-msgstr "Ключови дума"
+msgstr "Клучови думи"
 
 # src/ext_l10n.h:263
 #: lib/layouts/jss.layout:114
-#, fuzzy
 msgid "Plain Keywords:"
-msgstr "Ключови дума"
+msgstr "Ключови думи:"
 
 # src/ext_l10n.h:375
 #: lib/layouts/jss.layout:117
@@ -16633,9 +16339,8 @@ msgstr "Код"
 
 # src/ext_l10n.h:201
 #: lib/layouts/jss.layout:178 lib/layouts/logicalmkup.module:75
-#, fuzzy
 msgid "code"
-msgstr "Код"
+msgstr "код"
 
 #: lib/layouts/jss.layout:190 lib/layouts/jss.layout:200
 msgid "Code Chunk"
@@ -16682,9 +16387,8 @@ msgstr "Rnw (knitr)"
 # src/LaTeXLog.C:59 src/LaTeXLog.C:62
 #: lib/layouts/knitr.module:3 lib/layouts/noweb.module:3
 #: lib/layouts/sweave.module:3
-#, fuzzy
 msgid "Literate Programming"
-msgstr "Не е намерен LaTeX файл-протокол"
+msgstr "Дословно програмиране"
 
 #: lib/layouts/knitr.module:7
 msgid ""
@@ -16692,6 +16396,9 @@ msgid ""
 "has to be installed for this module to work: install.packages('knitr'). Note "
 "it depends on R >= 2.14.1. For more info see http://yihui.name/knitr"
 msgstr ""
+"Използване на пакета „knitr“ на R зе динамично генериране на доклади. За да "
+"работи този модул R пакета трябва да бъде инсталиран: install.package('knitr'). "
+"Версията на R трябва да е >= 2.14.1. За повече информация http://yihui.name/knitr"
 
 #: lib/layouts/knitr.module:14 lib/layouts/litinsets.inc:12
 #: lib/layouts/sweave.module:14
@@ -16724,35 +16431,31 @@ msgstr "текст"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
 #: lib/layouts/landscape.module:2
-#, fuzzy
 msgid "Landscape Document Parts"
-msgstr "Запазване на документа?"
+msgstr "Пейзажни части от документа"
 
 #: lib/layouts/landscape.module:6
 msgid "Output parts of the document in landscape mode."
-msgstr ""
+msgstr "Представя части от документа в пейзажен режим."
 
 # src/frontends/xforms/form_preferences.C:920
 #: lib/layouts/landscape.module:11 lib/layouts/landscape.module:16
-#, fuzzy
 msgid "Landscape"
-msgstr "Пей&заж"
+msgstr "Пейзаж"
 
 # src/frontends/xforms/form_preferences.C:920
 #: lib/layouts/landscape.module:26
-#, fuzzy
 msgid "Landscape (Floating)"
-msgstr "пейзаж"
+msgstr "Пейзаж плаващ"
 
 # src/frontends/xforms/form_preferences.C:920
 #: lib/layouts/landscape.module:29
-#, fuzzy
 msgid "Landscape (floating)"
-msgstr "пейзаж"
+msgstr "Пейзаж плаващ"
 
 #: lib/layouts/latex8.layout:3 lib/examples/Articles:0
 msgid "Latex8 Article (Obsolete)"
-msgstr ""
+msgstr "Статия Latex8 (остарял)"
 
 #: lib/layouts/letter.layout:3 lib/examples/Articles:0
 msgid "Letter (Standard Class)"
@@ -16764,44 +16467,39 @@ msgstr "Френско писмо (lettre)"
 
 # src/ext_l10n.h:384
 #: lib/layouts/lettre.layout:46 lib/layouts/lettre.layout:351
-#, fuzzy
 msgid "NoTelephone"
-msgstr "Телефон"
+msgstr "Без телефон"
 
 #: lib/layouts/lettre.layout:50 lib/layouts/lettre.layout:416
 #: lib/layouts/lettre.layout:424
 msgid "NoFax"
-msgstr ""
+msgstr "Без факс"
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
 #: lib/layouts/lettre.layout:56 lib/layouts/lettre.layout:205
 #: lib/layouts/lettre.layout:212
-#, fuzzy
 msgid "NoPlace"
-msgstr "Залепи"
+msgstr "Без място"
 
 # src/ext_l10n.h:217
 #: lib/layouts/lettre.layout:60 lib/layouts/lettre.layout:263
 #: lib/layouts/lettre.layout:271
-#, fuzzy
 msgid "NoDate"
-msgstr "Дата"
+msgstr "Без дата"
 
 # src/frontends/xforms/form_document.C:120
 #: lib/layouts/lettre.layout:80 lib/layouts/lettre.layout:721
-#, fuzzy
 msgid "Post Scriptum"
-msgstr "Postscript"
+msgstr "Послеслов"
 
 #: lib/layouts/lettre.layout:82 lib/layouts/lettre.layout:585
 msgid "EndOfMessage"
-msgstr ""
+msgstr "Край на съобщение"
 
 # src/layout_forms.C:28
 #: lib/layouts/lettre.layout:84 lib/layouts/lettre.layout:606
-#, fuzzy
 msgid "EndOfFile"
-msgstr "Серия(S):|#S"
+msgstr "Край на файл"
 
 # src/buffer.C:329
 #: lib/layouts/lettre.layout:171 lib/layouts/lettre.layout:206
@@ -16815,27 +16513,23 @@ msgstr "Грешка при ченете от "
 
 # src/lyxfont.C:56
 #: lib/layouts/lettre.layout:182
-#, fuzzy
 msgid "City:"
-msgstr "Дребен"
+msgstr "Град:"
 
 # src/lyxfont.C:62
 #: lib/layouts/lettre.layout:291
-#, fuzzy
 msgid "Office:"
-msgstr "Изкл."
+msgstr "Офис:"
 
 # src/ext_l10n.h:385
 #: lib/layouts/lettre.layout:324
-#, fuzzy
 msgid "Tel:"
-msgstr "Телекс"
+msgstr "Тел.:"
 
 # src/frontends/kde/parageneraldlg.C:37 src/frontends/kde/parageneraldlg.C:44
 #: lib/layouts/lettre.layout:359
-#, fuzzy
 msgid "NoTel"
-msgstr "Няма"
+msgstr "Без тел."
 
 #: lib/layouts/lettre.layout:595
 msgid "EndOfMessage."
@@ -17104,235 +16798,235 @@ msgstr ""
 msgid "Tree"
 msgstr ""
 
-#: lib/layouts/linguistics.module:286 lib/layouts/linguistics.module:288
+#: lib/layouts/linguistics.module:287 lib/layouts/linguistics.module:289
 msgid "DRS"
 msgstr ""
 
-#: lib/layouts/linguistics.module:289
+#: lib/layouts/linguistics.module:290
 msgid "Discourse Representation Structure|D"
 msgstr ""
 
 # src/ext_l10n.h:329
-#: lib/layouts/linguistics.module:301 lib/layouts/linguistics.module:448
+#: lib/layouts/linguistics.module:302 lib/layouts/linguistics.module:449
 #, fuzzy
 msgid "Referents"
 msgstr "Препратки"
 
 # src/ext_l10n.h:329
-#: lib/layouts/linguistics.module:302 lib/layouts/linguistics.module:449
+#: lib/layouts/linguistics.module:303 lib/layouts/linguistics.module:450
 #, fuzzy
 msgid "DRS Referents"
 msgstr "Препратки"
 
-#: lib/layouts/linguistics.module:303 lib/layouts/linguistics.module:450
+#: lib/layouts/linguistics.module:304 lib/layouts/linguistics.module:451
 msgid "Add the DRS referents (universe) here"
 msgstr ""
 
-#: lib/layouts/linguistics.module:310 lib/layouts/linguistics.module:312
+#: lib/layouts/linguistics.module:311 lib/layouts/linguistics.module:313
 msgid "DRS*"
 msgstr ""
 
-#: lib/layouts/linguistics.module:313
+#: lib/layouts/linguistics.module:314
 msgid "Discourse Representation Structure (unspaced)|u"
 msgstr ""
 
-#: lib/layouts/linguistics.module:318
+#: lib/layouts/linguistics.module:319
 msgid "IfThen-DRS"
 msgstr ""
 
-#: lib/layouts/linguistics.module:320 lib/layouts/linguistics.module:321
+#: lib/layouts/linguistics.module:321 lib/layouts/linguistics.module:322
 msgid "If-Then DRS"
 msgstr ""
 
 # src/ext_l10n.h:329
-#: lib/layouts/linguistics.module:325 lib/layouts/linguistics.module:360
-#: lib/layouts/linguistics.module:404
+#: lib/layouts/linguistics.module:326 lib/layouts/linguistics.module:361
+#: lib/layouts/linguistics.module:405
 #, fuzzy
 msgid "Then-Referents"
 msgstr "Препратки"
 
-#: lib/layouts/linguistics.module:326 lib/layouts/linguistics.module:335
-#: lib/layouts/linguistics.module:361 lib/layouts/linguistics.module:370
-#: lib/layouts/linguistics.module:405 lib/layouts/linguistics.module:414
+#: lib/layouts/linguistics.module:327 lib/layouts/linguistics.module:336
+#: lib/layouts/linguistics.module:362 lib/layouts/linguistics.module:371
+#: lib/layouts/linguistics.module:406 lib/layouts/linguistics.module:415
 msgid "DRS Then-Referents"
 msgstr ""
 
-#: lib/layouts/linguistics.module:327 lib/layouts/linguistics.module:362
-#: lib/layouts/linguistics.module:406
+#: lib/layouts/linguistics.module:328 lib/layouts/linguistics.module:363
+#: lib/layouts/linguistics.module:407
 msgid "Add the DRS then-referents (universe) here"
 msgstr ""
 
 # src/ext_l10n.h:205
-#: lib/layouts/linguistics.module:334 lib/layouts/linguistics.module:369
-#: lib/layouts/linguistics.module:413
+#: lib/layouts/linguistics.module:335 lib/layouts/linguistics.module:370
+#: lib/layouts/linguistics.module:414
 #, fuzzy
 msgid "Then-Conditions"
 msgstr "Условие"
 
-#: lib/layouts/linguistics.module:336 lib/layouts/linguistics.module:371
-#: lib/layouts/linguistics.module:415
+#: lib/layouts/linguistics.module:337 lib/layouts/linguistics.module:372
+#: lib/layouts/linguistics.module:416
 msgid "Add the DRS then-conditions here"
 msgstr ""
 
-#: lib/layouts/linguistics.module:344
+#: lib/layouts/linguistics.module:345
 msgid "Cond-DRS"
 msgstr ""
 
-#: lib/layouts/linguistics.module:346
+#: lib/layouts/linguistics.module:347
 msgid "Cond. DRS"
 msgstr ""
 
 # src/ext_l10n.h:205
-#: lib/layouts/linguistics.module:347
+#: lib/layouts/linguistics.module:348
 #, fuzzy
 msgid "Conditional DRS"
 msgstr "Условие"
 
 # src/ext_l10n.h:205
-#: lib/layouts/linguistics.module:351
+#: lib/layouts/linguistics.module:352
 #, fuzzy
 msgid "Cond."
 msgstr "Условие"
 
 # src/ext_l10n.h:205
-#: lib/layouts/linguistics.module:352
+#: lib/layouts/linguistics.module:353
 #, fuzzy
 msgid "DRS Condition"
 msgstr "Условие"
 
 # src/LyXAction.C:250
-#: lib/layouts/linguistics.module:353
+#: lib/layouts/linguistics.module:354
 #, fuzzy
 msgid "Add the DRS condition here"
 msgstr "Вмъкване на опциите тук"
 
-#: lib/layouts/linguistics.module:379
+#: lib/layouts/linguistics.module:380
 msgid "QDRS"
 msgstr ""
 
-#: lib/layouts/linguistics.module:381
+#: lib/layouts/linguistics.module:382
 msgid "Dupl. Cond. DRS"
 msgstr ""
 
 # src/ext_l10n.h:205
-#: lib/layouts/linguistics.module:382
+#: lib/layouts/linguistics.module:383
 #, fuzzy
 msgid "Duplex Condition DRS"
 msgstr "Условие"
 
-#: lib/layouts/linguistics.module:386
+#: lib/layouts/linguistics.module:387
 msgid "Quant."
 msgstr ""
 
-#: lib/layouts/linguistics.module:387
+#: lib/layouts/linguistics.module:388
 msgid "DRS Quantifier"
 msgstr ""
 
-#: lib/layouts/linguistics.module:388
+#: lib/layouts/linguistics.module:389
 msgid "Add the DRS duplex quantifier here"
 msgstr ""
 
-#: lib/layouts/linguistics.module:395
+#: lib/layouts/linguistics.module:396
 msgid "Quant. Var."
 msgstr ""
 
-#: lib/layouts/linguistics.module:396
+#: lib/layouts/linguistics.module:397
 msgid "DRS Quantifier Variable"
 msgstr ""
 
-#: lib/layouts/linguistics.module:397
+#: lib/layouts/linguistics.module:398
 msgid "Add the DRS duplex quantifier variables here"
 msgstr ""
 
-#: lib/layouts/linguistics.module:424
+#: lib/layouts/linguistics.module:425
 msgid "NegDRS"
 msgstr ""
 
-#: lib/layouts/linguistics.module:426
+#: lib/layouts/linguistics.module:427
 msgid "Neg. DRS"
 msgstr ""
 
-#: lib/layouts/linguistics.module:427
+#: lib/layouts/linguistics.module:428
 msgid "Negated DRS"
 msgstr ""
 
-#: lib/layouts/linguistics.module:432
+#: lib/layouts/linguistics.module:433
 msgid "SDRS"
 msgstr ""
 
-#: lib/layouts/linguistics.module:434
+#: lib/layouts/linguistics.module:435
 msgid "Sent. DRS"
 msgstr ""
 
-#: lib/layouts/linguistics.module:435
+#: lib/layouts/linguistics.module:436
 msgid "DRS with Sentence above"
 msgstr ""
 
 # src/ext_l10n.h:102
-#: lib/layouts/linguistics.module:439
+#: lib/layouts/linguistics.module:440
 #, fuzzy
 msgid "Sentence"
 msgstr "Край на изречение|з"
 
 # src/ext_l10n.h:102
-#: lib/layouts/linguistics.module:440
+#: lib/layouts/linguistics.module:441
 #, fuzzy
 msgid "DRS Sentence"
 msgstr "Край на изречение|з"
 
 # src/frontends/gnome/FormCitation.C:560
-#: lib/layouts/linguistics.module:441
+#: lib/layouts/linguistics.module:442
 #, fuzzy
 msgid "Add the sentence here"
 msgstr "Добавяна на избраните разклонения към списъка."
 
 # src/lyxfunc.C:1125
-#: lib/layouts/linguistics.module:462
+#: lib/layouts/linguistics.module:463
 msgid "Expression"
 msgstr "Израз"
 
 # src/LColor.C:63
-#: lib/layouts/linguistics.module:464
+#: lib/layouts/linguistics.module:465
 #, fuzzy
 msgid "expr."
 msgstr "текст"
 
 # src/LColor.C:75
-#: lib/layouts/linguistics.module:476
+#: lib/layouts/linguistics.module:477
 msgid "Concepts"
 msgstr "Коцепции"
 
 # src/LColor.C:75
-#: lib/layouts/linguistics.module:478
+#: lib/layouts/linguistics.module:479
 #, fuzzy
 msgid "concept"
 msgstr "акцент"
 
 # src/ext_l10n.h:298
-#: lib/layouts/linguistics.module:490
+#: lib/layouts/linguistics.module:491
 msgid "Meaning"
 msgstr "Значение"
 
 # src/ext_l10n.h:298
-#: lib/layouts/linguistics.module:492
+#: lib/layouts/linguistics.module:493
 #, fuzzy
 msgid "meaning"
 msgstr "Отваряне"
 
 # src/frontends/xforms/FormTabular.C:133
-#: lib/layouts/linguistics.module:505
+#: lib/layouts/linguistics.module:506
 msgid "Tableaux"
 msgstr "Таблици"
 
 # src/frontends/xforms/FormTabular.C:133
-#: lib/layouts/linguistics.module:509
+#: lib/layouts/linguistics.module:510
 msgid "Tableau"
 msgstr "Таблица"
 
 # src/frontends/gnome/FormToc.C:108 src/frontends/gnome/FormToc.C:185
 # src/frontends/kde/FormToc.C:177 src/frontends/kde/FormToc.C:178
 # src/frontends/kde/tocdlg.C:30 src/insets/insettoc.C:28
-#: lib/layouts/linguistics.module:514
+#: lib/layouts/linguistics.module:515
 msgid "List of Tableaux"
 msgstr "Списък на таблиците"
 
@@ -17366,9 +17060,8 @@ msgstr "Глава"
 
 # src/LaTeX.C:223
 #: lib/layouts/llncs.layout:158
-#, fuzzy
 msgid "Running LaTeX Title"
-msgstr "Стартирам BibTeX."
+msgstr "Повтарящо се заглавие на LaTeX"
 
 # src/ext_l10n.h:395 src/frontends/gnome/FormCitation.C:529
 #: lib/layouts/llncs.layout:181 lib/layouts/svcommon.inc:413
@@ -17472,58 +17165,51 @@ msgstr "Решение #."
 
 # src/frontends/gnome/FormRef.C:49 src/frontends/xforms/FormRef.C:214
 #: lib/layouts/logicalmkup.module:2
-#, fuzzy
 msgid "Logical Markup"
-msgstr "Обратно"
+msgstr "Логическо открояване"
 
 # src/frontends/gnome/FormCitation.C:549
 # src/frontends/gnome/FormCitation.C:639 src/frontends/kde/citationdlg.C:54
 #: lib/layouts/logicalmkup.module:3 lib/layouts/soul.module:3
-#, fuzzy
 msgid "Text Markup"
-msgstr "Текст след"
+msgstr "Открояване текст"
 
 #: lib/layouts/logicalmkup.module:6
 msgid ""
 "Defines some character styles for logical markup: noun, emph, strong, and "
 "code."
 msgstr ""
+"Дефинира няколко стила за открояване на текст: „noun“, „emph“, „strong“ и „code“."
 
 # src/lyxfont.C:407
 #: lib/layouts/logicalmkup.module:11
-#, fuzzy
 msgid "Noun"
-msgstr "Съществително "
+msgstr "Съществително"
 
 # src/LColor.C:52
 #: lib/layouts/logicalmkup.module:13
-#, fuzzy
 msgid "noun"
-msgstr "няма"
+msgstr "същ."
 
 # src/lyxfont.C:401
 #: lib/layouts/logicalmkup.module:35
-#, fuzzy
 msgid "Emph"
-msgstr "Наблягане "
+msgstr "Наблягане"
 
 # src/lyxfont.C:401
 #: lib/layouts/logicalmkup.module:37
-#, fuzzy
 msgid "emph"
-msgstr "Наблягане "
+msgstr "наблягане"
 
 # src/ext_l10n.h:274
 #: lib/layouts/logicalmkup.module:52
-#, fuzzy
 msgid "Strong"
-msgstr "Списък"
+msgstr "Усилване"
 
 # src/ext_l10n.h:274
 #: lib/layouts/logicalmkup.module:54
-#, fuzzy
 msgid "strong"
-msgstr "Списък"
+msgstr "усилване"
 
 #: lib/layouts/ltugboat.layout:3
 msgid "TUGboat"
@@ -17536,15 +17222,13 @@ msgstr "Статия на Американското Математическо
 
 # src/frontends/xforms/form_document.C:244
 #: lib/layouts/maa-monthly.layout:67
-#, fuzzy
 msgid "Abbreviated Title"
-msgstr "Абзац разделяне"
+msgstr "Съкратено заглавие"
 
 # src/ext_l10n.h:187
 #: lib/layouts/maa-monthly.layout:78 lib/layouts/maa-monthly.layout:81
-#, fuzzy
 msgid "Biographies"
-msgstr "Биография"
+msgstr "Биографии"
 
 # src/ext_l10n.h:187
 #: lib/layouts/maa-monthly.layout:99 lib/layouts/maa-monthly.layout:108
@@ -17729,25 +17413,23 @@ msgstr ""
 
 # src/LColor.C:67
 #: lib/layouts/memoir.layout:329
-#, fuzzy
 msgid "Endnotes (all)"
-msgstr "бележка"
+msgstr "Бележки в края (всички)"
 
 #: lib/layouts/memoir.layout:337
 msgid "Endnotes (sectioned)"
-msgstr ""
+msgstr "Бележки в края (по раздели)"
 
 # src/frontends/xforms/FormPreferences.C:247
 # src/frontends/xforms/FormPreferences.C:264
 # src/frontends/xforms/FormPreferences.C:272 src/mathed/math_forms.C:46
 #: lib/layouts/minimalistic.module:2
-#, fuzzy
 msgid "Minimalistic Insets"
-msgstr "Различни"
+msgstr "Минималистични добавки"
 
 #: lib/layouts/minimalistic.module:6
 msgid "Redefines several insets (Index, Branch, URL) as being Minimalistic."
-msgstr ""
+msgstr "Предефинират се някои добавки (индекс, разклонение, URL) да са „минималистични“."
 
 #: lib/layouts/moderncv.layout:3 lib/examples/Articles:0
 msgid "Modern CV"
@@ -17755,15 +17437,13 @@ msgstr "Модерна автобиография"
 
 # src/insets/insetbib.C:340
 #: lib/layouts/moderncv.layout:39
-#, fuzzy
 msgid "CVStyle"
-msgstr "Стил: "
+msgstr "Стил автобиография"
 
 # src/insets/insetbib.C:340
 #: lib/layouts/moderncv.layout:48
-#, fuzzy
 msgid "CV Style:"
-msgstr "Стил: "
+msgstr "Стил на автобиография: "
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/layouts/moderncv.layout:54
@@ -17804,9 +17484,8 @@ msgstr "Колони "
 
 # src/mathed/math_forms.C:140
 #: lib/layouts/moderncv.layout:83
-#, fuzzy
 msgid "Column Width:"
-msgstr "Колони "
+msgstr "Ширина на колона:"
 
 # src/frontends/kde/dlg/printdlgdata.C:42
 #: lib/layouts/moderncv.layout:89
@@ -17866,42 +17545,37 @@ msgstr ""
 
 # src/ext_l10n.h:78
 #: lib/layouts/moderncv.layout:242
-#, fuzzy
 msgid "Social"
-msgstr "Специален символ(S)|S"
+msgstr "Социална мрежа"
 
 # src/ext_l10n.h:78
 #: lib/layouts/moderncv.layout:245
-#, fuzzy
 msgid "Social:"
-msgstr "Специален символ(S)|S"
+msgstr "Социална мрежа:"
 
 # src/lyxrc.C:1838
 #: lib/layouts/moderncv.layout:248
-#, fuzzy
 msgid "Name of the social network"
-msgstr "Укажете стандартния размер на хартията."
+msgstr "Име на социалната мрежа"
 
 # src/frontends/xforms/FormDocument.C:279
 # src/frontends/xforms/FormParagraph.C:133
 #: lib/layouts/moderncv.layout:262
-#, fuzzy
 msgid "ExtraInfo"
-msgstr "Екстри"
+msgstr "Доп. информация"
 
 # src/lyx.C:90
 #: lib/layouts/moderncv.layout:265
-#, fuzzy
 msgid "Extra Info:"
-msgstr "Редактирай файл(E)|#E"
+msgstr "Доп. информация:"
 
 #: lib/layouts/moderncv.layout:286
 msgid "Photo:"
-msgstr ""
+msgstr "Снимка:"
 
 #: lib/layouts/moderncv.layout:289
 msgid "Height the photo is resized to"
-msgstr ""
+msgstr "Височина до която се преоразмерява снимката"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
 #: lib/layouts/moderncv.layout:293
@@ -17915,15 +17589,13 @@ msgstr ""
 
 # src/ext_l10n.h:344
 #: lib/layouts/moderncv.layout:344
-#, fuzzy
 msgid "EmptySection"
-msgstr "Раздел"
+msgstr "Празен раздел"
 
 # src/ext_l10n.h:344
 #: lib/layouts/moderncv.layout:350
-#, fuzzy
 msgid "Empty Section"
-msgstr "Раздел"
+msgstr "Празен раздел"
 
 # src/LColor.C:64
 #: lib/layouts/moderncv.layout:369
@@ -18180,9 +17852,8 @@ msgstr "Затваряне"
 
 # src/frontends/xforms/form_preferences.C:278
 #: lib/layouts/moderncv.layout:706 lib/layouts/svcommon.inc:593
-#, fuzzy
 msgid "Alternative Name"
-msgstr "Използвай алтернативен език"
+msgstr "Алтернативно име"
 
 #: lib/layouts/moderncv.layout:707
 msgid "Alternative instead of 'Enclosure'"
@@ -18196,9 +17867,8 @@ msgstr "Затваряне"
 
 # src/ext_l10n.h:61
 #: lib/layouts/multicol.module:2 lib/layouts/multicol.module:12
-#, fuzzy
 msgid "Multiple Columns"
-msgstr "Многоколонно(M)|M"
+msgstr "Множество колони"
 
 #: lib/layouts/multicol.module:8
 msgid ""
@@ -18214,9 +17884,8 @@ msgstr "Брой колони"
 
 # src/frontends/kde/paraextradlg.C:41
 #: lib/layouts/multicol.module:21
-#, fuzzy
 msgid "Insert the number of columns here"
-msgstr "Процент от колона"
+msgstr "Въведете броя колони тук"
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
 #: lib/layouts/multicol.module:28 lib/layouts/svcommon.inc:606
@@ -18242,10 +17911,11 @@ msgid ""
 "Free space that needs to be on the page to start the multiple columns on "
 "this page"
 msgstr ""
+"Свободно място, което е нужно на тази страница за да започнат много колони"
 
 #: lib/layouts/mwart.layout:3
 msgid "Polish Article (MW Bundle)"
-msgstr ""
+msgstr "Статия на полски (MW Bundle)"
 
 #: lib/layouts/mwbk.layout:3
 msgid "Polish Book (MW Bundle)"
@@ -18273,7 +17943,7 @@ msgstr "Noweb"
 
 #: lib/layouts/noweb.module:6
 msgid "Allows to use Noweb as a literate programming tool."
-msgstr ""
+msgstr "Позволява да се използва Noweb като инструмент за дословно програмиране"
 
 # src/ext_l10n.h:373
 #: lib/layouts/numarticle.inc:10 lib/layouts/powerdot.layout:249
@@ -18301,9 +17971,8 @@ msgstr "\\Roman{section}."
 
 # src/LColor.C:64
 #: lib/layouts/numrevtex.inc:10
-#, fuzzy
 msgid "Appendix \\Alph{section}:"
-msgstr "избор"
+msgstr "Приложение \\Alph{section}:"
 
 # src/LColor.C:64
 #: lib/layouts/numrevtex.inc:18
@@ -18341,9 +18010,8 @@ msgstr "Подзаглавие"
 
 # src/insets/insetbib.C:219
 #: lib/layouts/paralist.module:2 lib/examples/Articles:0
-#, fuzzy
 msgid "Paragraph Lists (paralist)"
-msgstr "Библ. перо"
+msgstr "Списъци с абзаци (paralist)"
 
 #: lib/layouts/paralist.module:11
 msgid ""
@@ -18354,6 +18022,12 @@ msgid ""
 "extended to use a similar optional argument. For details see Paralist in "
 "Specific Manuals."
 msgstr ""
+"Пакетът „paralist“ предоставя няколко нови среди за изготвяне на списък. "
+"Списъци с номера и водещи знаци могат да се разположат в абзац, като "
+"отделен абзаци или по сбит начин. Повечето среди имат незадължителни аргументи "
+"за форматиране на етикетите. Допълнително са разширени средите на LaTeX "
+"за номериране и изброяване да използват тези параметри. За повече "
+"информация вижте „Paralist“ в специализираните ръководства."
 
 # src/insets/insetfloat.C:150
 #: lib/layouts/paralist.module:32 lib/layouts/paralist.module:39
@@ -18362,9 +18036,8 @@ msgstr ""
 #: lib/layouts/paralist.module:93 lib/layouts/paralist.module:105
 #: lib/layouts/paralist.module:114 lib/layouts/paralist.module:123
 #: lib/layouts/paralist.module:135
-#, fuzzy
 msgid "Optional arguments for this list (see paralist manual)"
-msgstr "Отворен Float Inset"
+msgstr "Незадължителни аргументи за този списък (виж ръководството на paralist)"
 
 # src/ext_l10n.h:303
 #: lib/layouts/paralist.module:49
@@ -18508,43 +18181,39 @@ msgstr "Име на аватара"
 
 #: lib/layouts/pdfcomment.module:42
 msgid "Define PDF-Comment Style"
-msgstr ""
+msgstr "Дефинира стил с PDF коментари"
 
 # src/frontends/xforms/form_document.C:262
 #: lib/layouts/pdfcomment.module:45
-#, fuzzy
 msgid "PDF-comment style:"
-msgstr "Шрифт размер(O):|#O"
+msgstr "Стил за PDF коментари:"
 
 # src/lyxrc.C:1838
 #: lib/layouts/pdfcomment.module:48
-#, fuzzy
 msgid "Name of the style"
-msgstr "Укажете стандартния размер на хартията."
+msgstr "Име на стила"
 
 #: lib/layouts/pdfcomment.module:53
 msgid "Define PDF-Comment List Style"
-msgstr ""
+msgstr "Дефиниране на стил за PDF-коментари"
 
 #: lib/layouts/pdfcomment.module:56
 msgid "Definition of PDF-comment list style:"
-msgstr ""
+msgstr "Дефиниране на стил за PDF-коментари:"
 
 # src/lyxrc.C:1838
 #: lib/layouts/pdfcomment.module:59
-#, fuzzy
 msgid "Name of the list style"
-msgstr "Укажете стандартния размер на хартията."
+msgstr "Име на стила за списък"
 
 #: lib/layouts/pdfcomment.module:64
 msgid "Set PDF-Comment List Style"
-msgstr ""
+msgstr "Настройки на списъка с PDF-коментари"
 
 # src/frontends/xforms/form_document.C:262
 #: lib/layouts/pdfcomment.module:67
-#, fuzzy
 msgid "PDF-comment list style:"
-msgstr "Шрифт размер(O):|#O"
+msgstr "Стил на списък с PDF-коментари: "
 
 #: lib/layouts/pdfcomment.module:71
 msgid "PDF-Comment-Setup"
@@ -18703,13 +18372,12 @@ msgstr "[Списък с PDF коментари]"
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/layouts/pdfcomment.module:236
-#, fuzzy
 msgid "List Options|s"
-msgstr "допълнителни опции"
+msgstr "Опции на списък"
 
 #: lib/layouts/pdfcomment.module:237
 msgid "Insert list options here (see pdfcomment manual)"
-msgstr ""
+msgstr "Вмъкване на опции за списък тук (виж ръководството за PDF-коментари)"
 
 # src/frontends/xforms/FormPreferences.C:252
 #: lib/layouts/pdfform.module:2 lib/examples/Articles:0
@@ -18776,15 +18444,14 @@ msgstr "изборно меню"
 
 # src/insets/insetbib.C:69 src/insets/insetbib.C:70 src/insets/insetbib.C:210
 # src/insets/insetbib.C:211
-#: lib/layouts/pdfform.module:90 src/insets/InsetRef.cpp:602
+#: lib/layouts/pdfform.module:90 src/insets/InsetRef.cpp:604
 msgid "Label"
 msgstr "eтикет"
 
 # src/LyXAction.C:250
 #: lib/layouts/pdfform.module:93
-#, fuzzy
 msgid "Insert the label here"
-msgstr "Вмъкни последно индеск перо"
+msgstr "Вмъкване на етикет тук"
 
 #: lib/layouts/pdfform.module:97 lib/layouts/pdfform.module:100
 msgid "PushButton"
@@ -18964,9 +18631,8 @@ msgstr "Серия(S):|#S"
 
 # src/frontends/kde/tocdlg.C:57
 #: lib/layouts/powerdot.layout:204
-#, fuzzy
 msgid "Empty slide:"
-msgstr "Дълбочина"
+msgstr "Празен кадър:"
 
 # src/ext_l10n.h:344
 #: lib/layouts/powerdot.layout:256
@@ -19194,7 +18860,7 @@ msgstr "Дефиниция"
 #: lib/layouts/revtex4-x.inc:128 lib/layouts/revtex4.layout:236
 #, fuzzy
 msgid "Electronic Address:"
-msgstr "Адреси"
+msgstr "Ел. адрес:"
 
 # src/ext_l10n.h:163
 #: lib/layouts/revtex4-x.inc:130 lib/layouts/revtex4.layout:233
@@ -19293,15 +18959,13 @@ msgstr "overset"
 
 # src/mathed/math_panel.C:128
 #: lib/layouts/revtex4-x.inc:366
-#, fuzzy
 msgid "Online cite"
-msgstr "Разстояние"
+msgstr "Цитиране в реда"
 
 # src/mathed/math_panel.C:128
 #: lib/layouts/revtex4-x.inc:370
-#, fuzzy
 msgid "online cite"
-msgstr "Разстояние"
+msgstr "цитиране в реда"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:151
 #: lib/layouts/revtex4-x.inc:372
@@ -19315,13 +18979,12 @@ msgstr ""
 
 #: lib/layouts/revtex4.layout:3 lib/examples/Articles:0
 msgid "REVTeX (V. 4)"
-msgstr ""
+msgstr "REVTeX (V. 4)"
 
 # src/ext_l10n.h:221
 #: lib/layouts/revtex4.layout:192
-#, fuzzy
 msgid "AltAffiliation"
-msgstr "Дефиниция"
+msgstr "Принадлежност"
 
 # src/mathed/formula.C:929
 #: lib/layouts/revtex4.layout:308
@@ -19331,7 +18994,7 @@ msgstr "Номериране"
 
 #: lib/layouts/rsphrase.module:2
 msgid "Chemistry: Risk and Safety Statements"
-msgstr ""
+msgstr "Химия: Надписи за риск и безопасност"
 
 #: lib/layouts/rsphrase.module:8
 msgid ""
@@ -19339,38 +19002,39 @@ msgid ""
 "chemical risk and safety statements. For a description see the file R-S-"
 "statements.lyx in LyX's examples folder."
 msgstr ""
+"Предоставя две добавки и среда за набор от кодове и фрази за химически "
+"рискове и безопасност. За описание погледнете файла „R-S-statements.lyx“"
+"в директорията на LyX за примерни документи."
 
 # src/mathed/formula.C:929
 #: lib/layouts/rsphrase.module:12 lib/layouts/rsphrase.module:17
-#, fuzzy
 msgid "R-S number"
-msgstr "Номериране"
+msgstr "Код за риск"
 
 #: lib/layouts/rsphrase.module:34 lib/layouts/rsphrase.module:37
 msgid "R-S phrase"
-msgstr ""
+msgstr "Фраза за риск"
 
 #: lib/layouts/rsphrase.module:40
 msgid "Safety phrase"
-msgstr ""
+msgstr "Фраза за безопасност"
 
 # src/ext_l10n.h:386
 #: lib/layouts/rsphrase.module:47
-#, fuzzy
 msgid "Phrase Text"
-msgstr "Благодаря"
+msgstr "Текст на фраза"
 
 #: lib/layouts/rsphrase.module:48
 msgid "Argument for statements that requires to specify additional information"
-msgstr ""
+msgstr "Аргумент на надписи, които изискват да уточните дапълнителна информация"
 
 #: lib/layouts/rsphrase.module:61
 msgid "S phrase:"
-msgstr ""
+msgstr "Фраза за безопасност:"
 
 #: lib/layouts/ruby.module:2
 msgid "Ruby (Furigana)"
-msgstr ""
+msgstr "Руби (Фуригама)"
 
 #: lib/layouts/ruby.module:8
 msgid ""
@@ -19378,26 +19042,27 @@ msgid ""
 "characters. Uses the okumakro, luatexja-ruby, or ruby package (depending on "
 "the TeX engine) or a fallback definition."
 msgstr ""
+"Дефинира добавка за двe фонетични подсказки - руби и фуригама за китайски "
+"символи. Използва пакетите okumakro, luatexja-ruby или ruby в зависимост от "
+"TeX програмата или дефиниции в краен случай."
 
 #: lib/layouts/ruby.module:26 lib/layouts/ruby.module:35
 msgid "Ruby"
-msgstr ""
+msgstr "Руби"
 
 # src/lyx_gui_misc.C:430
 #: lib/layouts/ruby.module:49
-#, fuzzy
 msgid "ruby text"
-msgstr "Изтрий(e)|#e"
+msgstr "руби текст"
 
 # src/ext_l10n.h:41
 #: lib/layouts/ruby.module:50
-#, fuzzy
 msgid "Ruby Text|R"
-msgstr "Копирай(o)|o"
+msgstr "Руби текст|Р"
 
 #: lib/layouts/ruby.module:51
 msgid "Reading aid (ruby, furigana) for Chinese characters."
-msgstr ""
+msgstr "Помощник при четене (руби, фуригана) за китайски знаци."
 
 # src/frontends/xforms/FormPreferences.C:226
 # src/frontends/xforms/FormPreferences.C:255
@@ -19409,49 +19074,42 @@ msgstr "Конвертори"
 # src/ext_l10n.h:328 src/frontends/kde/refdlg.C:62
 # src/frontends/xforms/FormRef.C:36
 #: lib/layouts/sciposter.layout:34 lib/layouts/sigplanconf.layout:73
-#, fuzzy
 msgid "Conference"
-msgstr "Препратка"
+msgstr "Конференция"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:120
 #: lib/layouts/sciposter.layout:40
-#, fuzzy
 msgid "LeftLogo"
-msgstr "Ляв"
+msgstr "Лого вляво"
 
 # src/LyXAction.C:225 src/LyXAction.C:229
 #: lib/layouts/sciposter.layout:46
-#, fuzzy
 msgid "Left logo:"
-msgstr "Вмъкни бел. под линия"
+msgstr "Лого вляво:"
 
 # src/frontends/xforms/form_document.C:262
 #: lib/layouts/sciposter.layout:60
-#, fuzzy
 msgid "Logo Size"
-msgstr "Шрифт размер(O):|#O"
+msgstr "Размер на лого"
 
 #: lib/layouts/sciposter.layout:61
 msgid "Relative logo size (0 through 1)"
-msgstr ""
+msgstr "Относителен размер на лого (0, 1)"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:133
 #: lib/layouts/sciposter.layout:65
-#, fuzzy
 msgid "RightLogo"
-msgstr "Десен"
+msgstr "Лого вдясно"
 
 # src/ext_l10n.h:337
 #: lib/layouts/sciposter.layout:68
-#, fuzzy
 msgid "Right logo:"
-msgstr "Заглавие"
+msgstr "Лого вдясно:"
 
 # src/ext_l10n.h:191
 #: lib/layouts/sciposter.layout:80
-#, fuzzy
 msgid "Caption Width"
-msgstr "Заглавие"
+msgstr "Ширина на надпис"
 
 #: lib/layouts/sciposter.layout:81
 msgid "The caption width relative to the column (0 through 1)"
@@ -19471,61 +19129,53 @@ msgstr "Книга KOMA-скрипт"
 
 # src/ext_l10n.h:373
 #: lib/layouts/scrbook.layout:31
-#, fuzzy
 msgid "\\thechapter.\\arabic{equation}"
-msgstr "Под-подраздел"
+msgstr "\\thechapter.\\arabic{equation}"
 
 #: lib/layouts/scrclass.inc:51
-#, fuzzy
 msgid "\\alph{enumii})"
-msgstr "(\\alph{enumii})"
+msgstr "\\alph{enumii}"
 
 # src/frontends/xforms/FormPreferences.C:1016
 # src/frontends/xforms/FormPreferences.C:1288
 #: lib/layouts/scrclass.inc:138
-#, fuzzy
 msgid "Addpart"
-msgstr "Добави"
+msgstr "Добавяне на част"
 
 # src/frontends/xforms/FormPreferences.C:1016
 # src/frontends/xforms/FormPreferences.C:1288
 #: lib/layouts/scrclass.inc:151
-#, fuzzy
 msgid "Addchap"
-msgstr "Добави"
+msgstr "Добавяне на глава"
 
 # src/frontends/xforms/FormPreferences.C:1278
 #: lib/layouts/scrclass.inc:156 lib/layouts/stdsections.inc:77
 #: lib/layouts/tufte-book.layout:99
-#, fuzzy
 msgid "The chapter as it appears in the table of contents/running headers"
-msgstr "Името на формата, както ще се вижда в менютата."
+msgstr "Главата така както ще си появи в съдържанието и/или подвижното зоглавие"
 
 # src/frontends/xforms/FormPreferences.C:1016
 # src/frontends/xforms/FormPreferences.C:1288
 #: lib/layouts/scrclass.inc:164
-#, fuzzy
 msgid "Addsec"
-msgstr "Добави"
+msgstr "Добавяне на раздел"
 
 #: lib/layouts/scrclass.inc:177
 msgid "Addchap*"
-msgstr ""
+msgstr "Добавяне на глава*"
 
 # src/frontends/xforms/FormPreferences.C:1016
 # src/frontends/xforms/FormPreferences.C:1288
 #: lib/layouts/scrclass.inc:183
-#, fuzzy
 msgid "Addsec*"
-msgstr "Добави"
+msgstr "Добавяне на раздел*"
 
 # src/frontends/xforms/FormPreferences.C:247
 # src/frontends/xforms/FormPreferences.C:264
 # src/frontends/xforms/FormPreferences.C:272 src/mathed/math_forms.C:46
 #: lib/layouts/scrclass.inc:189
-#, fuzzy
 msgid "Minisec"
-msgstr "Различни"
+msgstr "Минираздел"
 
 # src/ext_l10n.h:453
 #: lib/layouts/scrclass.inc:257
@@ -19568,19 +19218,19 @@ msgstr ""
 
 #: lib/layouts/scrclass.inc:317
 msgid "Above"
-msgstr ""
+msgstr "Огоре"
 
 #: lib/layouts/scrclass.inc:318
 msgid "above"
-msgstr ""
+msgstr "отгоре"
 
 #: lib/layouts/scrclass.inc:342
 msgid "Below"
-msgstr ""
+msgstr "Отдолу"
 
 #: lib/layouts/scrclass.inc:343
 msgid "below"
-msgstr ""
+msgstr "отдолу"
 
 # src/ext_l10n.h:217
 #: lib/layouts/scrclass.inc:367
@@ -19617,9 +19267,8 @@ msgstr "Вкл."
 # src/frontends/xforms/FormBase.h:153 src/frontends/xforms/FormInset.h:31
 # src/frontends/xforms/FormInset.h:55 src/lyxfunc.C:744
 #: lib/layouts/scrlettr.layout:120 lib/layouts/scrlttr2.layout:164
-#, fuzzy
 msgid "Encl"
-msgstr "Отказ"
+msgstr "Прил."
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
 #: lib/layouts/scrlettr.layout:193 lib/layouts/scrlttr2.layout:312
@@ -19640,9 +19289,8 @@ msgstr "Специален символ(S)|S"
 
 # src/ext_l10n.h:395 src/frontends/gnome/FormCitation.C:529
 #: lib/layouts/scrlettr.layout:246 lib/layouts/scrlttr2.layout:370
-#, fuzzy
 msgid "Title:"
-msgstr "Заглавие"
+msgstr "Заглавие:"
 
 # src/ext_l10n.h:377
 #: lib/layouts/scrlettr.layout:268 lib/layouts/scrlttr2.layout:393
@@ -19682,13 +19330,12 @@ msgstr "Клиент"
 # src/ext_l10n.h:259
 #: lib/layouts/scrlettr.layout:303 lib/layouts/scrlttr2.layout:433
 msgid "Invoice"
-msgstr "Игнорирай"
+msgstr "Фактура"
 
 # src/ext_l10n.h:259
 #: lib/layouts/scrlettr.layout:306 lib/layouts/scrlttr2.layout:437
-#, fuzzy
 msgid "Invoice no.:"
-msgstr "Игнорирай"
+msgstr "Фактура №"
 
 #: lib/layouts/scrlttr2.layout:3 lib/examples/Articles:0
 msgid "KOMA-Script Letter (V. 2)"
@@ -19729,7 +19376,7 @@ msgstr "Ел. поща на изпращача:"
 # src/LyXAction.C:261
 #: lib/layouts/scrlttr2.layout:275
 msgid "Sender URL:"
-msgstr "Ел. адрес (URL) на изпращача:"
+msgstr "URL на изпращача:"
 
 #: lib/layouts/scrlttr2.layout:300
 msgid "Logo"
@@ -19756,36 +19403,33 @@ msgstr "Доклад KOMA-скрипт"
 
 # src/ext_l10n.h:344
 #: lib/layouts/sectionbox.module:2
-#, fuzzy
 msgid "Section Boxes"
-msgstr "Раздел"
+msgstr "Раздели с рамки"
 
 #: lib/layouts/sectionbox.module:7
 msgid ""
 "Defines Boxes with section header. Mainly intended for the SciPoster class."
 msgstr ""
+"Дефинира заглави на раздел в рамка. Основно е замислен за класа SciPoster"
 
 # src/ext_l10n.h:344
 #: lib/layouts/sectionbox.module:12
-#, fuzzy
 msgid "SectionBox"
-msgstr "Раздел"
+msgstr "Раздел с рамка"
 
 # src/ext_l10n.h:344
 #: lib/layouts/sectionbox.module:14
-#, fuzzy
 msgid "Section Box"
-msgstr "Раздел"
+msgstr "Раздел с рамка"
 
 # src/LColor.C:64
 #: lib/layouts/sectionbox.module:23
-#, fuzzy
 msgid "Section Box Width|S"
-msgstr "избор"
+msgstr "Ширина на раздела с рамка"
 
 #: lib/layouts/sectionbox.module:24
 msgid "Width of the section Box"
-msgstr ""
+msgstr "Ширина на раздела с рамка"
 
 # src/buffer.C:329
 #: lib/layouts/sectionbox.module:28 lib/layouts/todonotes.module:47
@@ -19794,66 +19438,57 @@ msgstr "Заглавие"
 
 # src/buffer.C:329
 #: lib/layouts/sectionbox.module:29
-#, fuzzy
 msgid "Section Box Heading"
-msgstr "Грешка при ченете от "
+msgstr "Заглавие на раздела с рамка"
 
 # src/LyXAction.C:197 src/lyx_cb.C:878
 #: lib/layouts/sectionbox.module:33
-#, fuzzy
 msgid "Insert the section box header here"
-msgstr "Вмъкни фигура"
+msgstr "Поставяне заглавието на раздела с рамка тук"
 
 # src/ext_l10n.h:371
 #: lib/layouts/sectionbox.module:47
-#, fuzzy
 msgid "SubsectionBox"
-msgstr "Подраздел"
+msgstr "Подраздел с рамка"
 
 # src/ext_l10n.h:371
 #: lib/layouts/sectionbox.module:49
-#, fuzzy
 msgid "Subsection Box"
-msgstr "Подраздел"
+msgstr "Подраздел с рамка"
 
 # src/ext_l10n.h:373
 #: lib/layouts/sectionbox.module:53
-#, fuzzy
 msgid "SubsubsectionBox"
-msgstr "Под-подраздел"
+msgstr "Под-подраздел с рамка"
 
 # src/ext_l10n.h:373
 #: lib/layouts/sectionbox.module:55
-#, fuzzy
 msgid "Subsubsection Box"
-msgstr "Под-подраздел"
+msgstr "Под-подраздел с рамка"
 
 #: lib/layouts/seminar.layout:3 lib/examples/Articles:0
 msgid "Seminar"
-msgstr ""
+msgstr "Семинар"
 
 # src/frontends/xforms/form_preferences.C:920
 #: lib/layouts/seminar.layout:26 lib/layouts/seminar.layout:89
-#, fuzzy
 msgid "LandscapeSlide"
-msgstr "пейзаж"
+msgstr "Пейзажен кадър"
 
 # src/frontends/xforms/form_preferences.C:920
 #: lib/layouts/seminar.layout:27
-#, fuzzy
 msgid "Landscape Slide"
-msgstr "пейзаж"
+msgstr "Пейзажен кадър"
 
 # src/ext_l10n.h:312
 #: lib/layouts/seminar.layout:40 lib/layouts/seminar.layout:115
 msgid "PortraitSlide"
-msgstr "Портрет"
+msgstr "Портретен кадър"
 
 # src/ext_l10n.h:312
 #: lib/layouts/seminar.layout:42
-#, fuzzy
 msgid "Portrait Slide"
-msgstr "Портрет"
+msgstr "Портретен кадър"
 
 # src/buffer.C:329
 #: lib/layouts/seminar.layout:47
@@ -19872,9 +19507,8 @@ msgstr "Списък на таблиците"
 
 # src/ext_l10n.h:275
 #: lib/layouts/seminar.layout:63
-#, fuzzy
 msgid "List of Slides"
-msgstr "Списък на таблиците"
+msgstr "Списък на кадрите"
 
 # src/frontends/gnome/FormToc.C:100 src/frontends/gnome/FormToc.C:167
 # src/frontends/kde/FormToc.C:167 src/frontends/kde/FormToc.C:168
@@ -19890,9 +19524,8 @@ msgstr "Съдържание"
 # src/frontends/kde/tocdlg.C:28 src/frontends/xforms/FormToc.C:35
 # src/insets/insettoc.C:22
 #: lib/layouts/seminar.layout:74
-#, fuzzy
 msgid "Slide Contents"
-msgstr "Съдържание"
+msgstr "Кадър „съдържание“"
 
 # src/frontends/xforms/FormPreferences.C:226
 # src/frontends/xforms/FormPreferences.C:255
@@ -19910,21 +19543,18 @@ msgstr "Конвертори"
 
 # src/frontends/xforms/form_preferences.C:920
 #: lib/layouts/seminar.layout:101
-#, fuzzy
 msgid "Landscape Slide:"
-msgstr "пейзаж"
+msgstr "Пейзажен кадър:"
 
 # src/ext_l10n.h:312
 #: lib/layouts/seminar.layout:118
-#, fuzzy
 msgid "Portrait Slide:"
-msgstr "Портрет"
+msgstr "Портретен кадър:"
 
 # src/layout_forms.C:28
 #: lib/layouts/seminar.layout:120
-#, fuzzy
 msgid "Slide*"
-msgstr "Серия(S):|#S"
+msgstr "Кадър*"
 
 # src/ext_l10n.h:88
 #: lib/layouts/seminar.layout:125
@@ -19933,9 +19563,8 @@ msgstr "Спъсъциа и Съдържание(O)|O"
 
 # src/ext_l10n.h:275
 #: lib/layouts/seminar.layout:135
-#, fuzzy
 msgid "[List Of Slides]"
-msgstr "Списък на таблиците"
+msgstr "Списък на кадрите"
 
 # src/frontends/gnome/FormToc.C:100 src/frontends/gnome/FormToc.C:167
 # src/frontends/kde/FormToc.C:167 src/frontends/kde/FormToc.C:168
@@ -19956,7 +19585,7 @@ msgstr "Конвертори"
 # src/insets/insetbib.C:219
 #: lib/layouts/shapepar.module:2
 msgid "Custom Paragraph Shapes"
-msgstr "Потребителки оформени абзаци"
+msgstr "Абзаци оформени от потребителя"
 
 #: lib/layouts/shapepar.module:8
 msgid ""
@@ -20233,11 +19862,11 @@ msgstr ""
 
 #: lib/layouts/slides.layout:241
 msgid "<Visible Text Follows>"
-msgstr ""
+msgstr "<Следва видим текст>"
 
 #: lib/layouts/soul.module:2
 msgid "Hyphenatable Text Markup (Soul)"
-msgstr ""
+msgstr "Открояване на текст с тирета „soul“"
 
 #: lib/layouts/soul.module:9
 msgid ""
@@ -20246,6 +19875,10 @@ msgid ""
 "markup provided by the Text Properties dialog, words marked-up with soul are "
 "hyphenated."
 msgstr ""
+"Дефинира стилове от пакета „soul“ за работа с текст - открояване, зачертаване," 
+"подчертаване, изписване с главни или по-малки главни букви. За разлика от "
+"използването на настройките на текст от диалога, думите от пакета „soul“ "
+"се свързват с тирета."
 
 # src/ext_l10n.h:362
 #: lib/layouts/soul.module:17
@@ -20261,34 +19894,31 @@ msgstr "Замести"
 
 # src/ext_l10n.h:364
 #: lib/layouts/soul.module:33
-#, fuzzy
 msgid "Strikethrough"
-msgstr "Улица"
+msgstr "Зачеркване"
 
 # src/ext_l10n.h:364
 #: lib/layouts/soul.module:35
-#, fuzzy
 msgid "strike"
-msgstr "Улица"
+msgstr "Зачертавене"
 
 # src/lyxfont.C:404
 #: lib/layouts/soul.module:42
 msgid "Underline"
-msgstr "Underline"
+msgstr "Подчертаване"
 
 #: lib/layouts/soul.module:44
 msgid "ul"
-msgstr ""
+msgstr "ul"
 
 #: lib/layouts/soul.module:53
 msgid "hl"
-msgstr ""
+msgstr "hl"
 
 # src/ext_l10n.h:432
 #: lib/layouts/soul.module:59
-#, fuzzy
 msgid "Capitalize"
-msgstr "Каталонски"
+msgstr "Главни букни"
 
 # src/lyxfont.C:51
 #: lib/layouts/soul.module:61
@@ -20412,12 +20042,12 @@ msgid "\\fnsymbol{thanks}"
 msgstr ""
 
 # src/frontends/xforms/FormTabular.C:133
-#: lib/layouts/stdfloatnames.inc:5 lib/layouts/stdinsets.inc:558
+#: lib/layouts/stdfloatnames.inc:5 lib/layouts/stdinsets.inc:559
 msgid "Tables"
 msgstr "Таблици"
 
 # src/ext_l10n.h:244
-#: lib/layouts/stdfloatnames.inc:6 lib/layouts/stdinsets.inc:559
+#: lib/layouts/stdfloatnames.inc:6 lib/layouts/stdinsets.inc:560
 msgid "Figures"
 msgstr "Изображения"
 
@@ -20453,7 +20083,7 @@ msgid "Notes"
 msgstr "Бележки"
 
 # src/ext_l10n.h:441
-#: lib/layouts/stdinsets.inc:14 src/frontends/qt/GuiDocument.cpp:1778
+#: lib/layouts/stdinsets.inc:14 src/frontends/qt/GuiDocument.cpp:1792
 msgid "Branches"
 msgstr "Разклонения"
 
@@ -20484,29 +20114,29 @@ msgid "Greyedout"
 msgstr "цветна бележка"
 
 # src/insets/insetert.C:28
-#: lib/layouts/stdinsets.inc:207 src/insets/InsetERT.cpp:189
-#: src/insets/InsetERT.cpp:190
+#: lib/layouts/stdinsets.inc:208 src/insets/InsetERT.cpp:251
+#: src/insets/InsetERT.cpp:252
 msgid "ERT"
 msgstr "Код на LaTeX"
 
 # src/ext_l10n.h:244
-#: lib/layouts/stdinsets.inc:293 lib/layouts/stdinsets.inc:299
+#: lib/layouts/stdinsets.inc:294 lib/layouts/stdinsets.inc:300
 msgid "Listings[[List of Listings]]"
 msgstr "Списъци"
 
 # src/ext_l10n.h:244
-#: lib/layouts/stdinsets.inc:316 lib/layouts/stdinsets.inc:322
+#: lib/layouts/stdinsets.inc:317 lib/layouts/stdinsets.inc:323
 #: src/insets/InsetTOC.cpp:77
 msgid "List of Listings"
 msgstr "Списък на списъците"
 
 # src/frontends/xforms/FormPreferences.C:223
-#: lib/layouts/stdinsets.inc:350 src/frontends/qt/GuiDocument.cpp:1776
+#: lib/layouts/stdinsets.inc:351 src/frontends/qt/GuiDocument.cpp:1790
 msgid "Listings[[inset]]"
 msgstr "Списъци"
 
 # src/insets/insetindex.C:20
-#: lib/layouts/stdinsets.inc:417
+#: lib/layouts/stdinsets.inc:418
 msgid "Idx"
 msgstr "указател"
 
@@ -20514,38 +20144,38 @@ msgstr "указател"
 # src/frontends/kde/dlg/parageneraldlgdata.C:43
 # src/frontends/xforms/form_paragraph.C:149
 # src/frontends/xforms/form_paragraph.C:223
-#: lib/layouts/stdinsets.inc:608
+#: lib/layouts/stdinsets.inc:609
 #, fuzzy
 msgid "Argument"
 msgstr "Подравняване"
 
 # src/ext_l10n.h:246
-#: lib/layouts/stdinsets.inc:714
+#: lib/layouts/stdinsets.inc:715
 #, fuzzy
 msgid "unlabelled"
 msgstr "Бел. под линия"
 
 # src/frontends/kde/dlg/printdlgdata.C:246
-#: lib/layouts/stdinsets.inc:721
+#: lib/layouts/stdinsets.inc:722
 msgid "Preview"
 msgstr "Предварителен изглед"
 
-#: lib/layouts/stdinsets.inc:755 lib/layouts/stdinsets.inc:763
+#: lib/layouts/stdinsets.inc:756 lib/layouts/stdinsets.inc:764
 msgid "see equation[[nomencl]]"
 msgstr "виж"
 
-#: lib/layouts/stdinsets.inc:756 lib/layouts/stdinsets.inc:764
+#: lib/layouts/stdinsets.inc:757 lib/layouts/stdinsets.inc:765
 msgid "page[[nomencl]]"
 msgstr "стр."
 
-#: lib/layouts/stdinsets.inc:757 lib/layouts/stdinsets.inc:765
+#: lib/layouts/stdinsets.inc:758 lib/layouts/stdinsets.inc:766
 msgid "Nomenclature[[output]]"
 msgstr "Речник на означенията"
 
 # src/insets/insetinclude.C:316
 #: lib/layouts/stdlayouts.inc:109 src/insets/InsetInclude.cpp:414
 msgid "Verbatim*"
-msgstr "Дословен*"
+msgstr "Дословно*"
 
 #: lib/layouts/stdsections.inc:15 lib/layouts/svcommon.inc:128
 msgid "Part \\thepart"
@@ -20569,43 +20199,42 @@ msgstr "Подабзац*"
 # src/ext_l10n.h:191
 #: lib/layouts/subequations.module:2 lib/layouts/subequations.module:11
 #: lib/layouts/subequations.module:14
-#, fuzzy
 msgid "Subequations"
-msgstr "Уравнения"
+msgstr "Подуравнения"
 
 #: lib/layouts/subequations.module:6
 msgid ""
-"Provide a straightforward way to segregate subequations in LyX. See the "
-"subequations.lyx example file."
+"Provide a straightforward way to segregate subequations in LyX. See the Math "
+"manual."
 msgstr ""
+"Осигурява лесен начин за отделяне на подуравнения в LyX. Виж математическото "
+"ръководство."
 
 # src/bufferview_funcs.C:267
 #: lib/layouts/svcommon.inc:72
-#, fuzzy
 msgid "Front Matter"
-msgstr "Шрифт:"
+msgstr "Предна част"
 
 #: lib/layouts/svcommon.inc:88
 msgid "--- Front Matter ---"
-msgstr ""
+msgstr "--- Предна част  ---"
 
 # src/mathed/math_panel.C:134
 #: lib/layouts/svcommon.inc:98
-#, fuzzy
 msgid "Main Matter"
-msgstr "Матрица"
+msgstr "Главна част"
 
 #: lib/layouts/svcommon.inc:102
 msgid "--- Main Matter ---"
-msgstr ""
+msgstr "--- Главна част ---"
 
 #: lib/layouts/svcommon.inc:105
 msgid "Back Matter"
-msgstr ""
+msgstr "Задна част"
 
 #: lib/layouts/svcommon.inc:109
 msgid "--- Back Matter ---"
-msgstr ""
+msgstr "--- Задна част  ---"
 
 #: lib/layouts/svcommon.inc:125 lib/layouts/svmult.layout:117
 msgid "PartBacktext"
@@ -20672,7 +20301,7 @@ msgstr "Автор"
 #: lib/layouts/svcommon.inc:424
 #, fuzzy
 msgid "TOC title:"
-msgstr "във файл"
+msgstr "Заглавие за съдържание:"
 
 # src/ext_l10n.h:175
 #: lib/layouts/svcommon.inc:434
@@ -20722,27 +20351,23 @@ msgstr "Резюме* (не се печата)"
 # src/frontends/xforms/form_index.C:28
 #: lib/layouts/svcommon.inc:576 lib/layouts/svcommon.inc:580
 #: lib/layouts/svmult.layout:149
-#, fuzzy
 msgid "Foreword"
-msgstr "Ключова дума"
+msgstr "Предговор"
 
 # src/frontends/xforms/form_preferences.C:278
 #: lib/layouts/svcommon.inc:594
-#, fuzzy
 msgid "Alternative name"
-msgstr "Използвай алтернативен език"
+msgstr "Алтернативно име"
 
 # src/ext_l10n.h:223
 #: lib/layouts/svcommon.inc:694
-#, fuzzy
 msgid "Longest Description Label"
-msgstr "Описание"
+msgstr "Най-дългия описан етикет"
 
 # src/frontends/xforms/form_tabular.C:113
 #: lib/layouts/svcommon.inc:695
-#, fuzzy
 msgid "Longest description label"
-msgstr " Дълга таблица(L)|#L"
+msgstr "Най-дългия описателен етикет"
 
 # src/ext_l10n.h:312
 #: lib/layouts/svcommon.inc:708
@@ -20783,9 +20408,8 @@ msgstr ""
 #: lib/layouts/svglobal.layout:91 lib/layouts/svglobal.layout:93
 #: lib/layouts/svjog.layout:95 lib/layouts/svjog.layout:97
 #: lib/layouts/svprobth.layout:124 lib/layouts/svprobth.layout:126
-#, fuzzy
 msgid "thanks"
-msgstr "Благодаря"
+msgstr "Благодарности"
 
 # src/ext_l10n.h:6
 #: lib/layouts/svglobal.layout:104 lib/layouts/svjog.layout:108
@@ -20797,9 +20421,8 @@ msgstr "Вмъкни(I)|I"
 # src/LyXAction.C:354
 #: lib/layouts/svglobal.layout:107 lib/layouts/svjog.layout:111
 #: lib/layouts/svprobth.layout:140
-#, fuzzy
 msgid "Institute #"
-msgstr "Вмъкни кавички"
+msgstr "Институт #"
 
 # src/ext_l10n.h:175
 #: lib/layouts/svglobal.layout:140 lib/layouts/svjog.layout:144
@@ -20867,39 +20490,34 @@ msgstr ""
 
 # src/ext_l10n.h:395 src/frontends/gnome/FormCitation.C:529
 #: lib/layouts/svmult.layout:37
-#, fuzzy
 msgid "Title*"
-msgstr "Заглавие"
+msgstr "Заглавие*"
 
 # src/ext_l10n.h:395 src/frontends/gnome/FormCitation.C:529
 #: lib/layouts/svmult.layout:40
-#, fuzzy
 msgid "Title*:"
-msgstr "Заглавие"
+msgstr "Заглавие*:"
 
 # src/frontends/gnome/FormToc.C:108 src/frontends/gnome/FormToc.C:185
 # src/frontends/kde/FormToc.C:177 src/frontends/kde/FormToc.C:178
 # src/frontends/kde/tocdlg.C:30 src/insets/insettoc.C:28
 #: lib/layouts/svmult.layout:71 lib/layouts/svmult.layout:161
-#, fuzzy
 msgid "Contributors"
-msgstr "Списък на таблици"
+msgstr "Сътрудници"
 
 # src/frontends/gnome/FormToc.C:108 src/frontends/gnome/FormToc.C:185
 # src/frontends/kde/FormToc.C:177 src/frontends/kde/FormToc.C:178
 # src/frontends/kde/tocdlg.C:30 src/insets/insettoc.C:28
 #: lib/layouts/svmult.layout:73
-#, fuzzy
 msgid "List of Contributors"
-msgstr "Списък на таблици"
+msgstr "Списък със сътрудници"
 
 # src/frontends/gnome/FormToc.C:108 src/frontends/gnome/FormToc.C:185
 # src/frontends/kde/FormToc.C:177 src/frontends/kde/FormToc.C:178
 # src/frontends/kde/tocdlg.C:30 src/insets/insettoc.C:28
 #: lib/layouts/svmult.layout:81
-#, fuzzy
 msgid "Contributor List"
-msgstr "Списък на таблици"
+msgstr "Списък сътрудници"
 
 # src/credits.C:72
 #: lib/layouts/svmult.layout:114 lib/layouts/svmult.layout:118
@@ -20909,9 +20527,8 @@ msgstr "Списък на таблици"
 #: lib/layouts/svmult.layout:146 lib/layouts/svmult.layout:150
 #: lib/layouts/svmult.layout:154 lib/layouts/svmult.layout:158
 #: lib/layouts/svmult.layout:162 lib/layouts/svmult.layout:166
-#, fuzzy
 msgid "For editors"
-msgstr "Credits"
+msgstr "За редактори"
 
 #: lib/layouts/svprobth.layout:3
 msgid "Probability Theory and Related Fields (Springer svprobth)"
@@ -20927,42 +20544,46 @@ msgid ""
 "Allows to use the statistical language S/R as a literate programming tool "
 "via the Sweave() function. For more info see the LyX example file sweave.lyx."
 msgstr ""
+"Позволява използването на статистически език S/R като инструмент за дословно "
+"програмиране чрез Sweave() функцията. За повече информация вижте примерния "
+"файл на LyX sweave.lyx."
 
 #: lib/layouts/sweave.module:77 lib/layouts/sweave.module:78
 msgid "Sweave Input File"
-msgstr ""
+msgstr "Входе файл Sweave"
 
 # src/ext_l10n.h:387
 #: lib/layouts/tabs-within-sections.module:2
-#, fuzzy
 msgid "Number Tables by Section"
-msgstr "Теорема"
+msgstr "номериране на таблици по раздели"
 
 #: lib/layouts/tabs-within-sections.module:7
 msgid ""
 "Resets the table number at section start and prepends the section number to "
 "the table number, as in 'Table 2.1'."
 msgstr ""
+"Рестартира номерирането на таблици в началото на раздела поставяйки номера на "
+"раздела като префикс пред номера на таблицата, напр. „Таблица 2.1“."
 
 #: lib/layouts/tarticle.layout:3
-#, fuzzy
 msgid "Japanese Article (Standard Class: Vertical Writing)"
-msgstr "Статия на японски (вертикално написана)"
+msgstr "Статия на японски (стандяртен клас: вертикално написана)"
 
 #: lib/layouts/tbook.layout:3
-#, fuzzy
 msgid "Japanese Book (Standard Class: Vertical Writing)"
-msgstr "Книга на япоски (вертикално написана)"
+msgstr "Книга на япоски (стандартен клас, вертикално написана)"
 
 #: lib/layouts/tcolorbox.module:2 lib/examples/Articles:0
 msgid "Fancy Colored Boxes"
-msgstr ""
+msgstr "Рамки оцветени декоративно"
 
 #: lib/layouts/tcolorbox.module:7
 msgid ""
 "Adds custom insets that support colored boxes via the tcolorbox package. See "
 "the tcolorbox documentation for details."
 msgstr ""
+"Добавка, която поддържа цветни рамки с пакета „tcolorbox“. Вижте документацията на "
+"панета за повече информация."
 
 # src/frontends/xforms/FormPreferences.C:244
 #: lib/layouts/tcolorbox.module:12 lib/layouts/tcolorbox.module:15
@@ -21152,9 +20773,8 @@ msgstr "Упражнение \\theexercise."
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-ams-bytype.module:2
-#, fuzzy
 msgid "AMS Theorems (Numbered by Type)"
-msgstr "Теореми (номерирани по тип)"
+msgstr "Теореми AMS (номерирани по тип)"
 
 #: lib/layouts/theorems-ams-bytype.module:12
 msgid ""
@@ -21167,12 +20787,18 @@ msgid ""
 "chapter- and section-wide numbering, use one of the 'within "
 "Sections'/'within Chapters' modules, respectively."
 msgstr ""
+"Дефинира среди за теореми и доказателства използвайки разширени добавки от "
+"AMS инструментите. Достъпни са номерирани и неномерирани стилове. Противно "
+"на обикновения AMS модул, различните типове теореми тук имат отделен брояч "
+"(напр. теорема 1, теорема 2, лема 1, твърдение 1, теорема 3, лема 2, и т.н..., "
+"за разлика от теорема 1, теорема 2, лема 3, твърдение 4 и т.н.). Обхвата на "
+"номериране е целия документ. За номериране по глави и раздели се използват "
+"съответно модули „по глави“ или „по раздели“."
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-ams-chap-bytype.module:2
-#, fuzzy
 msgid "AMS Theorems (Numbered by Type within Chapters)"
-msgstr "Теорема"
+msgstr "Теореми AMS (номерирани по тип в главите)"
 
 #: lib/layouts/theorems-ams-chap-bytype.module:12
 msgid ""
@@ -21187,9 +20813,8 @@ msgstr ""
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-ams-extended-bytype.module:2
-#, fuzzy
 msgid "AMS Theorems (Extended, Numbered by Type)"
-msgstr "Теорема (AMS, Номериран по тип)"
+msgstr "Теореми AMS (разширени, номерирани по тип)"
 
 #: lib/layouts/theorems-ams-extended-bytype.module:13
 msgid ""
@@ -21338,13 +20963,13 @@ msgstr "Обобщение."
 #: lib/layouts/theorems-ams-extended-bytype.module:328
 #: lib/layouts/theorems-ams-extended-chap-bytype.module:395
 msgid "Acknowledgement \\theacknowledgement."
-msgstr ""
+msgstr "Приднателност \\theacknowledgement."
 
 #: lib/layouts/theorems-ams-extended-bytype.module:346
 #: lib/layouts/theorems-ams-extended-chap-bytype.module:417
 #: lib/layouts/theorems-ams-extended.module:336
 msgid "Acknowledgement*"
-msgstr ""
+msgstr "Признателност*"
 
 # src/ext_l10n.h:203
 #: lib/layouts/theorems-ams-extended-bytype.module:369
@@ -21420,9 +21045,8 @@ msgstr "Въпрос."
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-ams-extended-chap-bytype.module:2
-#, fuzzy
 msgid "AMS Theorems (Extended, Numbered by Type within Chapters)"
-msgstr "Теорема"
+msgstr "Теореми AMS (разширени, номерирани по тип в главите)"
 
 #: lib/layouts/theorems-ams-extended-chap-bytype.module:13
 msgid ""
@@ -21438,9 +21062,8 @@ msgstr ""
 
 # src/ext_l10n.h:438
 #: lib/layouts/theorems-ams-extended.module:2
-#, fuzzy
 msgid "AMS Theorems (Extended)"
-msgstr "Оператори (допълнителни)"
+msgstr "Теореми AMS (разширени)"
 
 #: lib/layouts/theorems-ams-extended.module:10
 msgid ""
@@ -21457,9 +21080,8 @@ msgstr "Признак \\thetheorem."
 
 # src/ext_l10n.h:169
 #: lib/layouts/theorems-ams-extended.module:80
-#, fuzzy
 msgid "Algorithm \\thetheorem."
-msgstr "Aлгоритъм"
+msgstr "Aлгоритъм \\thetheorem."
 
 #: lib/layouts/theorems-ams-extended.module:121
 msgid "Axiom \\thetheorem."
@@ -21486,7 +21108,7 @@ msgstr "Обобщение \\thetheorem."
 
 #: lib/layouts/theorems-ams-extended.module:319
 msgid "Acknowledgement \\thetheorem."
-msgstr ""
+msgstr "Признателности \\thetheorem."
 
 # src/ext_l10n.h:203
 #: lib/layouts/theorems-ams-extended.module:359
@@ -21532,9 +21154,8 @@ msgstr "Твърдение \\thetheorem."
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-ams.module:2
-#, fuzzy
 msgid "AMS Theorems"
-msgstr "Теорема"
+msgstr "Теореми AMS"
 
 #: lib/layouts/theorems-ams.module:9
 msgid ""
@@ -21546,9 +21167,8 @@ msgstr ""
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-bytype.module:2
-#, fuzzy
 msgid "Standard Theorems (Numbered by Type)"
-msgstr "Теореми (номерирани по тип)"
+msgstr "Стандартни теореми (номерирани по тип)"
 
 #: lib/layouts/theorems-bytype.module:11
 msgid ""
@@ -21563,7 +21183,7 @@ msgstr ""
 
 #: lib/layouts/theorems-case.inc:12
 msgid "Case (Level 1)"
-msgstr ""
+msgstr "Случай (ниво 1)"
 
 # src/ext_l10n.h:371
 #: lib/layouts/theorems-case.inc:13
@@ -21572,7 +21192,7 @@ msgstr "Случай \\arabic{casei}."
 
 #: lib/layouts/theorems-case.inc:16
 msgid "Case (Level 2)"
-msgstr ""
+msgstr "Случай (ниво 2)"
 
 # src/ext_l10n.h:371
 #: lib/layouts/theorems-case.inc:18
@@ -21581,7 +21201,7 @@ msgstr "Случай \\roman{caseii}."
 
 #: lib/layouts/theorems-case.inc:21
 msgid "Case (Level 3)"
-msgstr ""
+msgstr "Случай (ниво 3)"
 
 # src/ext_l10n.h:371
 #: lib/layouts/theorems-case.inc:23
@@ -21590,7 +21210,7 @@ msgstr "Случай \\alph{caseiii}."
 
 #: lib/layouts/theorems-case.inc:26
 msgid "Case (Level 4)"
-msgstr ""
+msgstr "Случай (ниво 4)"
 
 # src/ext_l10n.h:371
 #: lib/layouts/theorems-case.inc:28
@@ -21599,9 +21219,8 @@ msgstr "Случай \\arabic{caseiv}."
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-chap-bytype.module:2
-#, fuzzy
 msgid "Standard Theorems (Numbered by Type within Chapters)"
-msgstr "Теорема"
+msgstr "Стандартни теореми (номерирани по тип в главите)"
 
 #: lib/layouts/theorems-chap-bytype.module:10
 msgid ""
@@ -21614,9 +21233,8 @@ msgstr ""
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-chap.module:2
-#, fuzzy
 msgid "Standard Theorems (Numbered by Chapter)"
-msgstr "Теорема"
+msgstr "Стандартни теореми (номерирани по глави)"
 
 #: lib/layouts/theorems-chap.module:8
 msgid ""
@@ -21627,7 +21245,7 @@ msgstr ""
 
 #: lib/layouts/theorems-named.module:3
 msgid "Standard Theorems (Nameable)"
-msgstr ""
+msgstr "Стандарнти теореми (именовани)"
 
 #: lib/layouts/theorems-named.module:8
 msgid ""
@@ -21637,15 +21255,13 @@ msgstr ""
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-named.module:56
-#, fuzzy
 msgid "Named Theorem"
-msgstr "Теорема"
+msgstr "Именовани теореми"
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-named.module:59
-#, fuzzy
 msgid "Named Theorem."
-msgstr "Теорема"
+msgstr "Именована теорема"
 
 # src/ext_l10n.h:233
 #: lib/layouts/theorems-order.inc:46 lib/layouts/theorems-starred.inc:197
@@ -21673,15 +21289,13 @@ msgstr "Твърдение*"
 
 # src/frontends/xforms/form_preferences.C:278
 #: lib/layouts/theorems-proof.inc:22
-#, fuzzy
 msgid "Alternative proof string"
-msgstr "Използвай алтернативен език"
+msgstr "Текст за алтернативно доказателство"
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-sec-bytype.module:2
-#, fuzzy
 msgid "Standard Theorems (Numbered by Type within Sections)"
-msgstr "Теорема"
+msgstr "Стандартни теореми (номерирани по тип в разделите)"
 
 #: lib/layouts/theorems-sec-bytype.module:10
 msgid ""
@@ -21691,18 +21305,24 @@ msgid ""
 "theorem 3, lemma 2, ..., as opposed to theorem 1, theorem 2, lemma 3, "
 "proposition 4, ...). The numbering is reset at each section start."
 msgstr ""
+"Дефинира няколко среди за барота с класове. Обратно на обикновения модул "
+"„теореми“, различните различните типове теореми имат отделни броячи. Например "
+"теорема 1, теорема 2, лема 1, твърдение 1, теорема 3, лема 2, и т.н., а не "
+"теорема 1, теорема 2, лема 3, твърдение 4,... Номерацията се нулира след "
+"всяко начало на раздел."
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-sec.module:2
-#, fuzzy
 msgid "Standard Theorems (Numbered by Section)"
-msgstr "Теорема"
+msgstr "Стандартни теореми (номерирани по раздели)"
 
 #: lib/layouts/theorems-sec.module:7
 msgid ""
 "Numbers theorems and the like by section (i.e., the counter is reset at each "
 "section start)."
 msgstr ""
+"Номерирани теореми и др. подобни по раздели (брояча се нулира в началото на "
+"всеки раздел)."
 
 #: lib/layouts/theorems-starred.inc:135
 msgid "Conjecture."
@@ -21735,21 +21355,21 @@ msgstr "Забележка."
 
 # src/mathed/formula.C:929
 #: lib/layouts/theorems-starred.module:2
-#, fuzzy
 msgid "Standard Theorems (Unnumbered)"
-msgstr "Номериране"
+msgstr "Стандартни теореми (неномерирани)"
 
 #: lib/layouts/theorems-starred.module:7
 msgid ""
 "Defines only unnumbered theorem environments, and the proof environment, "
 "using the extended AMS machinery."
 msgstr ""
+"Дефинира среди само за неномерирани теореми и доказателства, използвайки "
+"разширени инструменти на AMS."
 
 # src/ext_l10n.h:387
 #: lib/layouts/theorems-std.module:2
-#, fuzzy
 msgid "Standard Theorems"
-msgstr "Теорема"
+msgstr "Стандартни теореми"
 
 #: lib/layouts/theorems-std.module:8
 msgid ""
@@ -21760,37 +21380,32 @@ msgstr ""
 
 # src/ext_l10n.h:395 src/frontends/gnome/FormCitation.C:529
 #: lib/layouts/theorems-without-preamble.inc:47
-#, fuzzy
 msgid "Name/Title"
-msgstr "Заглавие"
+msgstr "Име/Заглавие"
 
 #: lib/layouts/theorems-without-preamble.inc:48
 msgid "Alternative optional name or title"
-msgstr ""
+msgstr "Алтернативно незадължително име или заглавие"
 
 # src/ext_l10n.h:371
 #: lib/layouts/theorems-without-preamble.inc:146
-#, fuzzy
 msgid "Prop \\theprop."
-msgstr "Подраздел"
+msgstr "Своиство \\theprop."
 
 # src/ext_l10n.h:316
 #: lib/layouts/theorems-without-preamble.inc:273
-#, fuzzy
 msgid "Prob(lem)"
 msgstr "Задача"
 
 # src/ext_l10n.h:316
 #: lib/layouts/theorems-without-preamble.inc:277
-#, fuzzy
 msgid "Prob"
-msgstr "Проблем"
+msgstr "Задача"
 
 # src/ext_l10n.h:371
 #: lib/layouts/theorems-without-preamble.inc:284
-#, fuzzy
 msgid "\\theprob."
-msgstr "Подраздел"
+msgstr "\\theprob."
 
 # src/lyxfont.C:42
 #: lib/layouts/theorems-without-preamble.inc:327
@@ -21800,9 +21415,8 @@ msgstr "Символ"
 
 # src/frontends/kde/printdlg.C:31
 #: lib/layouts/theorems-without-preamble.inc:331
-#, fuzzy
 msgid "# [number of Prob]"
-msgstr "Брой копия за печат"
+msgstr "# [брой задачи]"
 
 # src/ext_l10n.h:316
 #: lib/layouts/theorems-without-preamble.inc:334
@@ -21811,7 +21425,7 @@ msgstr "Етикет на задача"
 
 #: lib/layouts/theorems-without-preamble.inc:335
 msgid "Label of the corresponding problem"
-msgstr ""
+msgstr "Етикет на съответна задача"
 
 # src/ext_l10n.h:371
 #: lib/layouts/theorems-without-preamble.inc:426
@@ -21897,21 +21511,18 @@ msgstr "Опции на липсващо изображение|О"
 
 # src/ext_l10n.h:6
 #: lib/layouts/todonotes.module:124
-#, fuzzy
 msgid "Todo[Inline]"
-msgstr "Вмъкни(I)|I"
+msgstr "Поправка[в реда]"
 
 # src/frontends/xforms/form_document.C:98
 #: lib/layouts/todonotes.module:128
-#, fuzzy
 msgid "Todo[margin]"
-msgstr "Полета"
+msgstr "Поправка[в полето]"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
 #: lib/layouts/todonotes.module:132
-#, fuzzy
 msgid "MissingFigure"
-msgstr "Липсващ аргумент"
+msgstr "Липсващо изображение"
 
 #: lib/layouts/treport.layout:3
 msgid "Japanese Report (Vertical Writing)"
@@ -21919,7 +21530,7 @@ msgstr "Доклад на японски (вертикално написан)"
 
 #: lib/layouts/tufte-book.layout:3 lib/examples/Articles:0
 msgid "Tufte Book"
-msgstr ""
+msgstr "Книга Tufte"
 
 # src/LColor.C:67
 #: lib/layouts/tufte-book.layout:27 lib/layouts/tufte-book.layout:156
@@ -21935,89 +21546,84 @@ msgstr "странична бел."
 #: lib/layouts/tufte-book.layout:29
 #, fuzzy
 msgid "bibl. entry"
-msgstr "Автор"
+msgstr "библиог. запис"
 
 # src/ext_l10n.h:83
-#: lib/layouts/tufte-book.layout:176
+#: lib/layouts/tufte-book.layout:180
 msgid "Marginnote"
 msgstr "Бележка в полето (Tufte)"
 
 # src/frontends/xforms/form_document.C:98
-#: lib/layouts/tufte-book.layout:180
+#: lib/layouts/tufte-book.layout:184
 msgid "marginnote"
 msgstr "бел. в полето (Tufte)"
 
-#: lib/layouts/tufte-book.layout:189
+#: lib/layouts/tufte-book.layout:194
 msgid "NewThought"
-msgstr "Нова мисъл"
+msgstr ""
 
-#: lib/layouts/tufte-book.layout:193
+#: lib/layouts/tufte-book.layout:198
 msgid "new thought"
-msgstr "нова мисъл"
+msgstr "главни букви (Tufte)"
 
 # src/lyxfont.C:51
-#: lib/layouts/tufte-book.layout:206
+#: lib/layouts/tufte-book.layout:212
 msgid "AllCaps"
-msgstr "Само главни букви"
+msgstr "Главни букви (Tufte)"
 
 # src/lyxfont.C:51
-#: lib/layouts/tufte-book.layout:209
+#: lib/layouts/tufte-book.layout:215
 msgid "allcaps"
-msgstr "само главни"
+msgstr "главни букви"
 
 # src/lyxfont.C:51
-#: lib/layouts/tufte-book.layout:221
+#: lib/layouts/tufte-book.layout:227
 msgid "SmallCaps"
-msgstr "Само по-малки главни букви"
+msgstr "По-малки главни букви"
 
 # src/lyxfont.C:51
-#: lib/layouts/tufte-book.layout:224
+#: lib/layouts/tufte-book.layout:230
 msgid "smallcaps"
 msgstr "по-малки главни"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:151
-#: lib/layouts/tufte-book.layout:232
-#, fuzzy
+#: lib/layouts/tufte-book.layout:238
 msgid "Full Width"
-msgstr "Ширина на етикет"
+msgstr "Пълна ширина"
 
 # src/ext_l10n.h:244
-#: lib/layouts/tufte-book.layout:252
-#, fuzzy
+#: lib/layouts/tufte-book.layout:258
 msgid "Margin Figure"
 msgstr "Изображение в полето"
 
 # src/frontends/xforms/form_document.C:98
-#: lib/layouts/tufte-book.layout:256
-#, fuzzy
+#: lib/layouts/tufte-book.layout:262
 msgid "Margin Table"
 msgstr "Таблица в полето"
 
 # src/frontends/xforms/form_document.C:98
-#: lib/layouts/tufte-book.layout:262
-#, fuzzy
+#: lib/layouts/tufte-book.layout:268
 msgid "MarginTable"
-msgstr "Полета"
+msgstr "Таблица в полета"
 
 # src/ext_l10n.h:244
-#: lib/layouts/tufte-book.layout:278
+#: lib/layouts/tufte-book.layout:284
 #, fuzzy
 msgid "MarginFigure"
 msgstr "Фигура"
 
 #: lib/layouts/tufte-handout.layout:3 lib/examples/Articles:0
 msgid "Tufte Handout"
-msgstr ""
+msgstr "Брошура Tufte"
 
 #: lib/layouts/tufte-handout.layout:4 lib/examples/Articles:0
 msgid "Handouts"
-msgstr ""
+msgstr "Брошури"
 
 # src/LColor.C:78
 #: lib/layouts/varwidth.module:2 lib/examples/Articles:0
-#, fuzzy
 msgid "Variable-width Minipages"
-msgstr "ред на министраница"
+msgstr "Министраници с променлива ширина"
 
 #: lib/layouts/varwidth.module:14
 msgid ""
@@ -22031,33 +21637,30 @@ msgstr ""
 
 #: lib/layouts/varwidth.module:20
 msgid "Minipage (Var. Width)"
-msgstr ""
+msgstr "Министраница (пром. ширина)"
 
 # src/frontends/kde/paraextradlg.C:27
 #: lib/layouts/varwidth.module:22
-#, fuzzy
 msgid "Minipage (var.)"
-msgstr "Министраница"
+msgstr "Министраница (пром.)"
 
 # src/LyXAction.C:136
 #: lib/layouts/varwidth.module:34
-#, fuzzy
 msgid "Vert. Adjustment"
-msgstr "Импортирай документ"
+msgstr "Верт. подравняване"
 
 #: lib/layouts/varwidth.module:35
 msgid "Vertical adjustment: c (center), t (top) or b (bottom)"
-msgstr ""
+msgstr "Вертикално подравняване: с (център), t (горе) или b (долу)"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:151
 #: lib/layouts/varwidth.module:39
-#, fuzzy
 msgid "Max. Width"
-msgstr "Ширина на етикет"
+msgstr "Макс. ширина"
 
 #: lib/layouts/varwidth.module:40
 msgid "Maximum width (default: \\linewidth)"
-msgstr ""
+msgstr "Максимална ширина (по подразбиране: \\linewidth)"
 
 # src/lyxfont.C:43 src/lyxfont.C:47 src/lyxfont.C:52 src/lyxfont.C:58
 # src/lyxfont.C:62
@@ -22123,7 +21726,7 @@ msgstr "немски (Австрия)"
 
 #: lib/languages:340
 msgid "Azerbaijani"
-msgstr ""
+msgstr "азербайджански"
 
 #: lib/languages:356
 msgid "Indonesian"
@@ -22196,7 +21799,7 @@ msgstr "китайски (традиционен)"
 
 #: lib/languages:545
 msgid "Church Slavonic"
-msgstr ""
+msgstr "църковно-славянски"
 
 #: lib/languages:558
 msgid "Coptic"
@@ -22353,9 +21956,8 @@ msgstr "корейски"
 
 # src/frontends/kde/paraextradlg.C:25 src/lyxfont.C:56
 #: lib/languages:1019
-#, fuzzy
 msgid "Kurdish (Kurmanji)"
-msgstr "курманджи"
+msgstr "Кюрдски (курманджи)"
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1260
 #: lib/languages:1032 src/frontends/qt/GuiSymbols.cpp:77
@@ -22419,7 +22021,7 @@ msgstr "окситански"
 
 #: lib/languages:1242
 msgid "Russian (Petrine orthography)"
-msgstr ""
+msgstr "руски (реформата на Петър I)"
 
 #: lib/languages:1252
 msgid "Piedmontese"
@@ -22561,15 +22163,13 @@ msgstr "ПЕ (почти европейски)"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:102 lib/latexfonts:110
-#, fuzzy
 msgid "Bera Serif"
-msgstr "Sans Serif"
+msgstr "Bera Serif"
 
 # src/frontends/xforms/form_preferences.C:105 src/lyxfont.C:42
 #: lib/latexfonts:116
-#, fuzzy
 msgid "Bookman"
-msgstr "Roman"
+msgstr "Bookman"
 
 #: lib/latexfonts:122
 msgid "Concrete Roman"
@@ -22590,7 +22190,7 @@ msgstr ""
 
 #: lib/latexfonts:150
 msgid "Crimson"
-msgstr ""
+msgstr "Crimson"
 
 #: lib/latexfonts:156
 msgid "Computer Modern Roman"
@@ -22598,182 +22198,162 @@ msgstr "Computer Modern Roman"
 
 #: lib/latexfonts:164
 msgid "Crimson Pro"
-msgstr ""
+msgstr "Crimson Pro"
 
 # src/frontends/xforms/form_preferences.C:105 src/lyxfont.C:42
 #: lib/latexfonts:175
-#, fuzzy
 msgid "Crimson Pro (Medium)"
-msgstr "Roman"
+msgstr "Crimson Pro (средно тежък)"
 
 # src/frontends/xforms/form_preferences.C:111 src/lyxfont.C:42
 #: lib/latexfonts:186
-#, fuzzy
 msgid "Crimson Pro (Light)"
-msgstr "Машинопис"
+msgstr "Crimson Pro (лек)"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:197
-#, fuzzy
 msgid "Crimson Pro (Extralight)"
-msgstr "Sans Serif"
+msgstr "Crimson Pro (свръхсветъл)"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:208
-#, fuzzy
 msgid "DejaVu Serif"
-msgstr "Sans Serif"
+msgstr "DejaVu Serif"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:214
-#, fuzzy
 msgid "DejaVu Serif (Condensed)"
-msgstr "Sans Serif"
+msgstr "DejaVu Serif (Condensed)"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:225
-#, fuzzy
 msgid "IBM Plex Serif"
-msgstr "Sans Serif"
+msgstr "IBM Plex Serif"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:232
-#, fuzzy
 msgid "IBM Plex Serif (Thin)"
-msgstr "Sans Serif"
+msgstr "IBM Plex Serif (Thin)"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:240
-#, fuzzy
 msgid "IBM Plex Serif (Extra Light)"
-msgstr "Sans Serif"
+msgstr "IBM Plex Serif (Extra Light)"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:248
-#, fuzzy
 msgid "IBM Plex Serif (Light)"
-msgstr "Sans Serif"
+msgstr "IBM Plex Serif (лек)"
 
 #: lib/latexfonts:256
 msgid "Source Serif Pro"
-msgstr ""
+msgstr "Source Serif Pro"
 
 #: lib/latexfonts:264 lib/latexfonts:274
 msgid "URW Garamond"
-msgstr ""
+msgstr "URW Garamond"
 
 #: lib/latexfonts:281 lib/latexfonts:291 lib/latexfonts:299 lib/latexfonts:307
 #: lib/latexfonts:315
 msgid "Libertine"
-msgstr ""
+msgstr "Libertine"
 
 #: lib/latexfonts:322 lib/latexfonts:333
-#, fuzzy
 msgid "Libertinus"
-msgstr "Bera Mono"
+msgstr "Libertinus"
 
 #: lib/latexfonts:341 lib/latexfonts:349
 msgid "Latin Modern Roman"
 msgstr "Latin Modern Roman"
 
 #: lib/latexfonts:356 lib/latexfonts:369
-#, fuzzy
 msgid "Bitstream Charter (Mathdesign)"
-msgstr "Bitstream Charter"
+msgstr "Bitstream Charter (матем.)"
 
 #: lib/latexfonts:376 lib/latexfonts:389
 msgid "Utopia (Mathdesign)"
-msgstr ""
+msgstr "Utopia (Mathdesign)"
 
 #: lib/latexfonts:396 lib/latexfonts:409
 msgid "URW Garamond (Mathdesign)"
-msgstr ""
+msgstr "URW Garamond (Mathdesign)"
 
 #: lib/latexfonts:416 lib/latexfonts:427
 msgid "Minion Pro"
-msgstr ""
+msgstr "Minion Pro"
 
 #: lib/latexfonts:436
 msgid "New Century Schoolbook"
-msgstr ""
+msgstr "New Century Schoolbook"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:442 lib/latexfonts:451
-#, fuzzy
 msgid "Noto Serif"
-msgstr "Sans Serif"
+msgstr "Noto Serif"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:459
-#, fuzzy
 msgid "Noto Serif (Medium)"
-msgstr "Sans Serif"
+msgstr "Noto Serif (средно дебел)"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:469
-#, fuzzy
 msgid "Noto Serif (Thin)"
-msgstr "Sans Serif"
+msgstr "Noto Serif (тънък)"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:479
-#, fuzzy
 msgid "Noto Serif (Light)"
-msgstr "Sans Serif"
+msgstr "Sans Serif (лек)"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:489
-#, fuzzy
 msgid "Noto Serif (Extralight)"
-msgstr "Sans Serif"
+msgstr "Noto Serif (свръхсветъл)"
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
 #: lib/latexfonts:499 lib/latexfonts:512 lib/latexfonts:519 lib/latexfonts:525
 #: lib/latexfonts:533
-#, fuzzy
 msgid "Palatino"
-msgstr "Залепи"
+msgstr "Palatino"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:539
-#, fuzzy
 msgid "PT Serif"
-msgstr "Sans Serif"
+msgstr "PT Serif"
 
 # src/frontends/xforms/form_preferences.C:105 src/lyxfont.C:42
 #: lib/latexfonts:546 lib/latexfonts:556 lib/latexfonts:563 lib/latexfonts:569
-#, fuzzy
 msgid "Times Roman"
-msgstr "Roman"
+msgstr "Times Roman"
 
 #: lib/latexfonts:575
 msgid "TeX Gyre Bonum"
-msgstr ""
+msgstr "TeX Gyre Bonum"
 
 #: lib/latexfonts:581
 msgid "TeX Gyre Chorus"
-msgstr ""
+msgstr "TeX Gyre Chorus"
 
 #: lib/latexfonts:587
 msgid "TeX Gyre Pagella"
-msgstr ""
+msgstr "TeX Gyre Pagella"
 
 #: lib/latexfonts:593
 msgid "TeX Gyre Schola"
-msgstr ""
+msgstr "TeX Gyre Schola"
 
 #: lib/latexfonts:599
 msgid "TeX Gyre Termes"
-msgstr ""
+msgstr "TeX Gyre Termes"
 
 #: lib/latexfonts:607 lib/latexfonts:619 lib/latexfonts:625 lib/latexfonts:633
 msgid "Utopia (Fourier)"
-msgstr ""
+msgstr "Utopia (Fourier)"
 
 #: lib/latexfonts:639
-#, fuzzy
 msgid "Bitstream Charter (XCharter)"
-msgstr "Bitstream Charter"
+msgstr "Bitstream Charter (XCharter)"
 
 #: lib/latexfonts:651
 msgid "Avant Garde"
@@ -22785,31 +22365,29 @@ msgstr "Bera Sans"
 
 #: lib/latexfonts:665 lib/latexfonts:675 lib/latexfonts:685
 msgid "Biolinum"
-msgstr ""
+msgstr "Biolinum"
 
 #: lib/latexfonts:694
 msgid "Cantarell"
-msgstr ""
+msgstr "Cantarell"
 
 #: lib/latexfonts:705
 msgid "Chivo (Thin)"
-msgstr ""
+msgstr "Chivo (Thin)"
 
 # src/frontends/xforms/form_preferences.C:111 src/lyxfont.C:42
 #: lib/latexfonts:716
-#, fuzzy
 msgid "Chivo (Light)"
-msgstr "Машинопис"
+msgstr "Chivo (Light)"
 
 #: lib/latexfonts:727
 msgid "Chivo"
-msgstr ""
+msgstr "Chivo"
 
 # src/lyxfont.C:47
 #: lib/latexfonts:737
-#, fuzzy
 msgid "Chivo (Medium)"
-msgstr "Средно"
+msgstr "Chivo (Medium)"
 
 # src/ext_l10n.h:209
 #: lib/latexfonts:748
@@ -22822,72 +22400,62 @@ msgid "Computer Modern Sans"
 msgstr "Computer Modern Sans"
 
 #: lib/latexfonts:762
-#, fuzzy
 msgid "DejaVu Sans"
-msgstr "Bera Sans"
+msgstr "DejaVu Sans"
 
 #: lib/latexfonts:769
-#, fuzzy
 msgid "DejaVu Sans (Condensed)"
-msgstr "Bera Sans"
+msgstr "DejaVu Sans (Condensed)"
 
 #: lib/latexfonts:776
-#, fuzzy
 msgid "Fira Sans"
-msgstr "Bera Sans"
+msgstr "Fira Sans"
 
 #: lib/latexfonts:787
 msgid "Fira Sans (Book)"
-msgstr ""
+msgstr "Fira Sans (Book)"
 
 # src/frontends/xforms/form_preferences.C:111 src/lyxfont.C:42
 #: lib/latexfonts:799
-#, fuzzy
-msgid "Fira Sans (Light)"
-msgstr "Машинопис"
+msgid "Fira Sans (светъл)"
+msgstr "Fira Sans (светъл)"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:811
-#, fuzzy
 msgid "Fira Sans (Extralight)"
-msgstr "Sans Serif"
+msgstr "Fira Sans (много светъл)"
 
 #: lib/latexfonts:823
 msgid "Fira Sans (Ultralight)"
-msgstr ""
+msgstr "Fira Sans (свръхсветъл)"
 
 #: lib/latexfonts:835
 msgid "Fira Sans (Thin)"
-msgstr ""
+msgstr "Fira Sans (светъл)"
 
 #: lib/latexfonts:847
-#, fuzzy
 msgid "IBM Plex Sans"
-msgstr "Bera Sans"
+msgstr "IBM Plex Sans"
 
 #: lib/latexfonts:855
-#, fuzzy
 msgid "IBM Plex Sans (Condensed)"
-msgstr "Bera Sans"
+msgstr "IBM Plex Sans (сбит)"
 
 #: lib/latexfonts:864
-#, fuzzy
 msgid "IBM Plex Sans (Thin)"
-msgstr "Bera Sans"
+msgstr "IBM Plex Sans (светъл)"
 
 #: lib/latexfonts:873
-#, fuzzy
 msgid "IBM Plex Sans (Extra Light)"
-msgstr "Bera Sans"
+msgstr "IBM Plex Sans (много светъл)"
 
 #: lib/latexfonts:882
-#, fuzzy
 msgid "IBM Plex Sans (Light)"
-msgstr "Bera Sans"
+msgstr "IBM Plex Sans (светъл)"
 
 #: lib/latexfonts:891
 msgid "Source Sans Pro"
-msgstr ""
+msgstr "Source Sans Pro"
 
 #: lib/latexfonts:900
 msgid "Helvetica"
@@ -22895,19 +22463,19 @@ msgstr "Helvetica"
 
 #: lib/latexfonts:908
 msgid "Iwona"
-msgstr ""
+msgstr "Iwona"
 
 #: lib/latexfonts:915
 msgid "Iwona (Light)"
-msgstr ""
+msgstr "Iwona (светъл)"
 
 #: lib/latexfonts:922
 msgid "Iwona (Condensed)"
-msgstr ""
+msgstr "Iwona (сбит)"
 
 #: lib/latexfonts:929
 msgid "Iwona (Light Condensed)"
-msgstr ""
+msgstr "Iwona (леко сбит)"
 
 # src/frontends/kde/dlg/printdlgdata.C:73
 # src/frontends/xforms/form_print.C:135
@@ -22924,11 +22492,11 @@ msgstr "Машинопис"
 
 #: lib/latexfonts:950
 msgid "Kurier (Condensed)"
-msgstr ""
+msgstr "Kurier (сбит)"
 
 #: lib/latexfonts:957
 msgid "Kurier (Light Condensed)"
-msgstr ""
+msgstr "Kurier (леко сбит)"
 
 #: lib/latexfonts:964 lib/latexfonts:974
 #, fuzzy
@@ -22944,10 +22512,9 @@ msgid "Noto Sans"
 msgstr ""
 
 # src/frontends/xforms/form_preferences.C:108
-#: lib/latexfonts:999
-#, fuzzy
+#: lib/latexfonts:99
 msgid "Noto Sans (Medium)"
-msgstr "Sans Serif"
+msgstr "Noto Sans (обикновен)"
 
 # src/frontends/xforms/form_preferences.C:108
 #: lib/latexfonts:1010
@@ -23310,15 +22877,13 @@ msgstr "Японско pLaTeX (SJIS)"
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/encodings:236
-#, fuzzy
 msgid "Extended [pLaTeX] (Japanese)"
-msgstr "допълнителни опции"
+msgstr "Разширен [pLaTeX] (японски)"
 
 # src/lyxfunc.C:1132
 #: lib/encodings:242
-#, fuzzy
 msgid "Direct"
-msgstr "Потребителска директория: "
+msgstr "Директория"
 
 #: lib/encodings:246
 msgid "ASCII"
@@ -23375,31 +22940,31 @@ msgstr "Макрос"
 # src/frontends/xforms/form_tabular.C:365
 #: lib/ui/stdcontext.inc:43 lib/ui/stdmenus.inc:327 lib/ui/stdmenus.inc:481
 msgid "AMS align Environment|a"
-msgstr "AMS подравняване (align)"
+msgstr "Подравняване AMS (align)"
 
 # src/frontends/xforms/form_tabular.C:241
 # src/frontends/xforms/form_tabular.C:365
 #: lib/ui/stdcontext.inc:44 lib/ui/stdmenus.inc:328 lib/ui/stdmenus.inc:482
 msgid "AMS alignat Environment|t"
-msgstr "AMS точно подравняване (alignat)"
+msgstr "Точно подравняване AMS (alignat)"
 
 # src/frontends/xforms/form_tabular.C:241
 # src/frontends/xforms/form_tabular.C:365
 #: lib/ui/stdcontext.inc:45 lib/ui/stdmenus.inc:329 lib/ui/stdmenus.inc:483
 msgid "AMS flalign Environment|f"
-msgstr "AMS ляво подравняване (flalign)"
+msgstr "Ляво подравняване AMS (flalign)"
 
 # src/frontends/xforms/form_tabular.C:241
 # src/frontends/xforms/form_tabular.C:365
 #: lib/ui/stdcontext.inc:46 lib/ui/stdmenus.inc:330 lib/ui/stdmenus.inc:484
 msgid "AMS gather Environment|g"
-msgstr "AMS групиране (gather)"
+msgstr "Групиране AMS (gather)"
 
 # src/frontends/xforms/form_tabular.C:241
 # src/frontends/xforms/form_tabular.C:365
 #: lib/ui/stdcontext.inc:47 lib/ui/stdmenus.inc:331 lib/ui/stdmenus.inc:485
 msgid "AMS multline Environment|m"
-msgstr "AMS редове с пренасяне (multiline)"
+msgstr "Редове с пренасяне AMS (multiline)"
 
 # src/ext_l10n.h:77
 #: lib/ui/stdcontext.inc:51 lib/ui/stdmenus.inc:324 lib/ui/stdmenus.inc:477
@@ -23420,7 +22985,7 @@ msgstr "Уравнение (eqnarray*)|У"
 # src/frontends/xforms/form_tabular.C:365
 #: lib/ui/stdcontext.inc:54
 msgid "AMS Environment|A"
-msgstr "AMS среда"
+msgstr "Среда AMS"
 
 # src/lyxfont.C:415
 #: lib/ui/stdcontext.inc:56 lib/ui/stdmenus.inc:242
@@ -23440,33 +23005,32 @@ msgstr "Етикет на уравнението|Е"
 
 # src/frontends/kde/FormRef.C:249
 #: lib/ui/stdcontext.inc:59
-#, fuzzy
 msgid "Copy as Reference|R"
-msgstr "LyX: Препратка"
+msgstr "Копиране като препратка"
 
 # src/BufferView2.C:592 src/LyXAction.C:170 src/MenuBackend.C:431
-#: lib/ui/stdcontext.inc:61 lib/ui/stdcontext.inc:355 lib/ui/stdmenus.inc:108
-#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1548
+#: lib/ui/stdcontext.inc:61 lib/ui/stdcontext.inc:375 lib/ui/stdmenus.inc:108
+#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1576
 #: src/mathed/InsetMathNest.cpp:555
 msgid "Cut"
 msgstr "Изрязване"
 
 # src/BufferView2.C:581 src/LyXAction.C:169 src/MenuBackend.C:432
-#: lib/ui/stdcontext.inc:62 lib/ui/stdcontext.inc:356 lib/ui/stdmenus.inc:109
-#: lib/ui/stdtoolbars.inc:87 src/BufferView.cpp:2220
+#: lib/ui/stdcontext.inc:62 lib/ui/stdcontext.inc:376 lib/ui/stdmenus.inc:109
+#: lib/ui/stdtoolbars.inc:87 src/BufferView.cpp:2269
 msgid "Copy"
 msgstr "Копиране"
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
-#: lib/ui/stdcontext.inc:63 lib/ui/stdcontext.inc:357 lib/ui/stdmenus.inc:110
-#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1493
-#: src/frontends/qt/GuiToolbar.cpp:428 src/mathed/InsetMathGrid.cpp:1560
+#: lib/ui/stdcontext.inc:63 lib/ui/stdcontext.inc:377 lib/ui/stdmenus.inc:110
+#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1520
+#: src/frontends/qt/GuiToolbar.cpp:441 src/mathed/InsetMathGrid.cpp:1565
 #: src/mathed/InsetMathNest.cpp:533
 msgid "Paste"
 msgstr "Поставяне"
 
 # src/ext_l10n.h:67
-#: lib/ui/stdcontext.inc:64 lib/ui/stdcontext.inc:358 lib/ui/stdmenus.inc:111
+#: lib/ui/stdcontext.inc:64 lib/ui/stdcontext.inc:378 lib/ui/stdmenus.inc:111
 msgid "Paste Recent|e"
 msgstr "Последно поставени|с"
 
@@ -23483,9 +23047,8 @@ msgstr "Разделяне на клетката"
 # src/frontends/kde/dlg/tabcreatedlgdata.C:107
 # src/frontends/xforms/form_tabular_create.C:45
 #: lib/ui/stdcontext.inc:69
-#, fuzzy
 msgid "Rows & Columns| "
-msgstr "Колони"
+msgstr "Редове и колони"
 
 # src/frontends/xforms/form_tabular.C:223
 # src/frontends/xforms/form_tabular.C:349
@@ -23549,772 +23112,728 @@ msgid "Use Computer Algebra System|m"
 msgstr "Използване на алгебрична изчисл. система"
 
 # src/frontends/kde/FormRef.C:249
-#: lib/ui/stdcontext.inc:92 lib/ui/stdcontext.inc:115
+#: lib/ui/stdcontext.inc:92 lib/ui/stdcontext.inc:112 lib/ui/stdcontext.inc:135
 msgid "Next Cross-Reference|N"
 msgstr "Следваща препратка|С"
 
 # src/insets/insetbib.C:69 src/insets/insetbib.C:70 src/insets/insetbib.C:210
 # src/insets/insetbib.C:211
-#: lib/ui/stdcontext.inc:93
-#, fuzzy
+#: lib/ui/stdcontext.inc:93 lib/ui/stdcontext.inc:113
 msgid "Go to Label|G"
-msgstr "Етикет(L):|#L"
+msgstr "Отиване до етикет"
 
 # src/frontends/xforms/FormPreferences.C:68
-#: lib/ui/stdcontext.inc:95
+#: lib/ui/stdcontext.inc:95 lib/ui/stdcontext.inc:115
 #, fuzzy
 msgid "<Reference>|R"
 msgstr "Настройки"
 
 # src/frontends/xforms/FormPreferences.C:68
-#: lib/ui/stdcontext.inc:96
+#: lib/ui/stdcontext.inc:96 lib/ui/stdcontext.inc:116
 #, fuzzy
 msgid "(<Reference>)|e"
 msgstr "Настройки"
 
 # src/frontends/kde/paraextradlg.C:27
-#: lib/ui/stdcontext.inc:97
+#: lib/ui/stdcontext.inc:97 lib/ui/stdcontext.inc:117
 #, fuzzy
 msgid "<Page>|P"
 msgstr "Министраница"
 
-#: lib/ui/stdcontext.inc:98
+#: lib/ui/stdcontext.inc:98 lib/ui/stdcontext.inc:118
 msgid "On Page <Page>|O"
-msgstr ""
+msgstr "На страница <Page>"
 
-#: lib/ui/stdcontext.inc:99
+#: lib/ui/stdcontext.inc:99 lib/ui/stdcontext.inc:119
 msgid "<Reference> on Page <Page>|f"
 msgstr ""
 
 # src/frontends/kde/refdlg.C:66
-#: lib/ui/stdcontext.inc:100
-#, fuzzy
+#: lib/ui/stdcontext.inc:100 lib/ui/stdcontext.inc:120
 msgid "Formatted Reference|t"
-msgstr "\"Хубава\" препратка"
+msgstr "Форматирана препратка"
 
 # src/frontends/kde/FormRef.C:249
-#: lib/ui/stdcontext.inc:101
-#, fuzzy
+#: lib/ui/stdcontext.inc:101 lib/ui/stdcontext.inc:121
 msgid "Textual Reference|x"
-msgstr "LyX: Препратка"
+msgstr "Текстова препратка"
 
 # src/frontends/xforms/FormPreferences.C:244
-#: lib/ui/stdcontext.inc:102
-#, fuzzy
+#: lib/ui/stdcontext.inc:102 lib/ui/stdcontext.inc:122
 msgid "Label Only|L"
-msgstr "Цветове"
+msgstr "Само етикет"
+
+# src/ext_l10n.h:344
+#: lib/ui/stdcontext.inc:104 lib/ui/stdcontext.inc:128
+#: lib/ui/stdcontext.inc:140 lib/ui/stdcontext.inc:150
+#: lib/ui/stdcontext.inc:159 lib/ui/stdcontext.inc:168
+#: lib/ui/stdcontext.inc:179 lib/ui/stdcontext.inc:186
+#: lib/ui/stdcontext.inc:287 lib/ui/stdcontext.inc:305
+#: lib/ui/stdcontext.inc:334 lib/ui/stdcontext.inc:446
+#: lib/ui/stdcontext.inc:459 lib/ui/stdcontext.inc:512
+#: lib/ui/stdcontext.inc:524 lib/ui/stdcontext.inc:548
+#: lib/ui/stdcontext.inc:559 lib/ui/stdcontext.inc:567
+#: lib/ui/stdcontext.inc:577 lib/ui/stdcontext.inc:585
+#: lib/ui/stdcontext.inc:593 lib/ui/stdcontext.inc:601
+#: lib/ui/stdcontext.inc:614 lib/ui/stdcontext.inc:624
+#: lib/ui/stdcontext.inc:645 lib/ui/stdcontext.inc:653
+#: lib/ui/stdcontext.inc:699 lib/ui/stdcontext.inc:708 lib/ui/stdmenus.inc:576
+msgid "Settings...|S"
+msgstr "Настройки|й"
 
 # src/ext_l10n.h:351
-#: lib/ui/stdcontext.inc:104
-#, fuzzy
+#: lib/ui/stdcontext.inc:124
 msgid "Plural|a"
-msgstr "natural"
+msgstr "Мн. число"
 
 # src/ext_l10n.h:432
-#: lib/ui/stdcontext.inc:105
-#, fuzzy
+#: lib/ui/stdcontext.inc:125
 msgid "Capitalize|C"
 msgstr "Начална главна буква|Н"
 
-# src/ext_l10n.h:344
-#: lib/ui/stdcontext.inc:108 lib/ui/stdcontext.inc:120
-#: lib/ui/stdcontext.inc:130 lib/ui/stdcontext.inc:139
-#: lib/ui/stdcontext.inc:148 lib/ui/stdcontext.inc:159
-#: lib/ui/stdcontext.inc:166 lib/ui/stdcontext.inc:267
-#: lib/ui/stdcontext.inc:285 lib/ui/stdcontext.inc:314
-#: lib/ui/stdcontext.inc:426 lib/ui/stdcontext.inc:439
-#: lib/ui/stdcontext.inc:492 lib/ui/stdcontext.inc:504
-#: lib/ui/stdcontext.inc:528 lib/ui/stdcontext.inc:539
-#: lib/ui/stdcontext.inc:547 lib/ui/stdcontext.inc:557
-#: lib/ui/stdcontext.inc:565 lib/ui/stdcontext.inc:573
-#: lib/ui/stdcontext.inc:581 lib/ui/stdcontext.inc:594
-#: lib/ui/stdcontext.inc:604 lib/ui/stdcontext.inc:625
-#: lib/ui/stdcontext.inc:633 lib/ui/stdcontext.inc:679
-#: lib/ui/stdcontext.inc:688 lib/ui/stdmenus.inc:576
-msgid "Settings...|S"
-msgstr "Настройки|й"
-
 # src/frontends/kde/FormRef.C:103
-#: lib/ui/stdcontext.inc:116
+#: lib/ui/stdcontext.inc:136
 msgid "Go Back|G"
 msgstr "Назад|Н"
 
 # src/frontends/kde/FormRef.C:249
-#: lib/ui/stdcontext.inc:118 lib/ui/stdcontext.inc:525
+#: lib/ui/stdcontext.inc:138 lib/ui/stdcontext.inc:545
 msgid "Copy as Reference|C"
 msgstr "Копиране като препратка|К"
 
 # src/frontends/xforms/FormCitation.C:37
-#: lib/ui/stdcontext.inc:131
-#, fuzzy
+#: lib/ui/stdcontext.inc:151
 msgid "Try to Open Citation Content...|O"
-msgstr "Цитиране...|Ц"
+msgstr "Опит за отваряне съдържанието на цитата..."
 
 # src/ext_l10n.h:94
-#: lib/ui/stdcontext.inc:141
-#, fuzzy
+#: lib/ui/stdcontext.inc:161
 msgid "Edit Database(s) Externally...|x"
-msgstr "Външен материал(x)...|x"
+msgstr "Редакция на БД с външна програма..."
 
 # src/insets/insetfloat.C:150
-#: lib/ui/stdcontext.inc:155
+#: lib/ui/stdcontext.inc:175
 msgid "Open Inset|O"
 msgstr "Отваряне на добавката|О"
 
 # src/ext_l10n.h:20
-#: lib/ui/stdcontext.inc:156
+#: lib/ui/stdcontext.inc:176
 msgid "Close Inset|C"
 msgstr "Затваряне на добавката"
 
-#: lib/ui/stdcontext.inc:158 lib/ui/stdcontext.inc:164
-#: lib/ui/stdcontext.inc:180 lib/ui/stdcontext.inc:641
+#: lib/ui/stdcontext.inc:178 lib/ui/stdcontext.inc:184
+#: lib/ui/stdcontext.inc:200 lib/ui/stdcontext.inc:661
 msgid "Dissolve Inset|D"
 msgstr "Разтваряне на добавката"
 
 # src/insets/insetbib.C:69 src/insets/insetbib.C:70 src/insets/insetbib.C:210
 # src/insets/insetbib.C:211
-#: lib/ui/stdcontext.inc:163 lib/ui/stdcontext.inc:179
+#: lib/ui/stdcontext.inc:183 lib/ui/stdcontext.inc:199
 msgid "Show Label|L"
 msgstr "Показване на етикета|П"
 
 # src/lyx.C:87
-#: lib/ui/stdcontext.inc:190 lib/ui/stdmenus.inc:526
+#: lib/ui/stdcontext.inc:210 lib/ui/stdmenus.inc:526
 msgid "Frameless|l"
-msgstr "Без контур|Б"
+msgstr "без контур|б"
 
 # src/LColor.C:91
-#: lib/ui/stdcontext.inc:191 lib/ui/stdmenus.inc:527
+#: lib/ui/stdcontext.inc:211 lib/ui/stdmenus.inc:527
 msgid "Simple Frame|F"
-msgstr "Обикновен контур|О"
+msgstr "обикновен контур|о"
 
-#: lib/ui/stdcontext.inc:192
+#: lib/ui/stdcontext.inc:212
 msgid "Simple Frame, Page Breaks|P"
-msgstr ""
+msgstr "обикновен контур и край на страница"
 
-#: lib/ui/stdcontext.inc:193 lib/ui/stdmenus.inc:528
+#: lib/ui/stdcontext.inc:213 lib/ui/stdmenus.inc:528
 msgid "Oval, Thin|a"
-msgstr "Овални, тънък контур|т"
+msgstr "овална с тънък контур|т"
 
-#: lib/ui/stdcontext.inc:194 lib/ui/stdmenus.inc:529
+#: lib/ui/stdcontext.inc:214 lib/ui/stdmenus.inc:529
 msgid "Oval, Thick|v"
-msgstr "Овален, дебел контур|д"
+msgstr "овалена с дебел контур|д"
 
-#: lib/ui/stdcontext.inc:195 lib/ui/stdmenus.inc:530
+#: lib/ui/stdcontext.inc:215 lib/ui/stdmenus.inc:530
 msgid "Drop Shadow|w"
-msgstr "Хвърляща сянка|Х"
+msgstr "хвърляща сянка|х"
 
 # src/LColor.C:68
-#: lib/ui/stdcontext.inc:196 lib/ui/stdmenus.inc:531
+#: lib/ui/stdcontext.inc:216 lib/ui/stdmenus.inc:531
 msgid "Shaded Background|B"
-msgstr "Цветен фон|Ц"
+msgstr "цветен фон|ц"
 
 # src/bufferview_funcs.C:286
-#: lib/ui/stdcontext.inc:197 lib/ui/stdmenus.inc:532
+#: lib/ui/stdcontext.inc:217 lib/ui/stdmenus.inc:532
 msgid "Double Frame|u"
-msgstr "Двойна рамка|р"
+msgstr "двойна рамка|р"
 
 # src/ext_l10n.h:136
-#: lib/ui/stdcontext.inc:214 lib/ui/stdmenus.inc:536
+#: lib/ui/stdcontext.inc:234 lib/ui/stdmenus.inc:536
 msgid "LyX Note|N"
 msgstr "LyX Бележка|Б"
 
 # src/ext_l10n.h:202
-#: lib/ui/stdcontext.inc:215
+#: lib/ui/stdcontext.inc:235
 msgid "Comment|m"
 msgstr "Коментар|К"
 
-#: lib/ui/stdcontext.inc:216 lib/ui/stdmenus.inc:538
+#: lib/ui/stdcontext.inc:236 lib/ui/stdmenus.inc:538
 msgid "Greyed Out|G"
 msgstr "Цветна бележка|Ц"
 
 # src/insets/insetfloat.C:150
-#: lib/ui/stdcontext.inc:218
-#, fuzzy
+#: lib/ui/stdcontext.inc:238
 msgid "Open All Notes|A"
-msgstr "Отворен Float Inset"
+msgstr "Отваряне на всички бележки|О"
 
-#: lib/ui/stdcontext.inc:219
+#: lib/ui/stdcontext.inc:239
 msgid "Close All Notes|l"
-msgstr ""
+msgstr "Затваряне на всички бележки|З"
 
 # src/ext_l10n.h:438
-#: lib/ui/stdcontext.inc:227 lib/ui/stdmenus.inc:548
+#: lib/ui/stdcontext.inc:247 lib/ui/stdmenus.inc:548
 msgid "Phantom|P"
 msgstr "Фантом"
 
 # src/mathed/math_forms.C:152
-#: lib/ui/stdcontext.inc:228 lib/ui/stdmenus.inc:549
+#: lib/ui/stdcontext.inc:248 lib/ui/stdmenus.inc:549
 msgid "Horizontal Phantom|H"
 msgstr "Хоризонтален фантом|Х"
 
 # src/mathed/math_forms.C:147
-#: lib/ui/stdcontext.inc:229 lib/ui/stdmenus.inc:550
+#: lib/ui/stdcontext.inc:249 lib/ui/stdmenus.inc:550
 msgid "Vertical Phantom|V"
 msgstr "Вертикален фантом|В"
 
 # src/frontends/kde/paraextradlg.C:27
-#: lib/ui/stdcontext.inc:244 lib/ui/stdmenus.inc:455
+#: lib/ui/stdcontext.inc:264 lib/ui/stdmenus.inc:455
 msgid "Interword Space|w"
 msgstr "Интервал между думи"
 
 # src/ext_l10n.h:99
-#: lib/ui/stdcontext.inc:245
-#, fuzzy
+#: lib/ui/stdcontext.inc:265
 msgid "Protected Space|o"
-msgstr "Защитен интервал|B"
+msgstr "Защитен интервал|З"
 
 # src/frontends/xforms/form_paragraph.C:153
-#: lib/ui/stdcontext.inc:246
+#: lib/ui/stdcontext.inc:266
 msgid "Visible Space|a"
 msgstr "Видим интервал|В"
 
-#: lib/ui/stdcontext.inc:247 lib/ui/stdcontext.inc:274 lib/ui/stdmenus.inc:456
+#: lib/ui/stdcontext.inc:267 lib/ui/stdcontext.inc:294 lib/ui/stdmenus.inc:456
 msgid "Thin Space|T"
 msgstr "Полуинтервал"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
-#: lib/ui/stdcontext.inc:248 lib/ui/stdcontext.inc:275
-#, fuzzy
+#: lib/ui/stdcontext.inc:268 lib/ui/stdcontext.inc:295
 msgid "Medium Space|M"
 msgstr "Средно разстояние"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
-#: lib/ui/stdcontext.inc:249 lib/ui/stdcontext.inc:276
-#, fuzzy
+#: lib/ui/stdcontext.inc:269 lib/ui/stdcontext.inc:296
 msgid "Thick Space|i"
-msgstr "Средно разстояние"
+msgstr "Голямо разстояние"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
-#: lib/ui/stdcontext.inc:250 lib/ui/stdcontext.inc:277
+#: lib/ui/stdcontext.inc:270 lib/ui/stdcontext.inc:297
 msgid "Negative Thin Space|N"
 msgstr "Отрицателен полуинтервал"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
-#: lib/ui/stdcontext.inc:251 lib/ui/stdcontext.inc:278
-#, fuzzy
+#: lib/ui/stdcontext.inc:271 lib/ui/stdcontext.inc:298
 msgid "Negative Medium Space|v"
-msgstr "Средно разстояние"
+msgstr "Отрицателено средно разстояние"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
-#: lib/ui/stdcontext.inc:252 lib/ui/stdcontext.inc:279
-#, fuzzy
+#: lib/ui/stdcontext.inc:272 lib/ui/stdcontext.inc:299
 msgid "Negative Thick Space|h"
-msgstr "Средно разстояние"
+msgstr "Отрицателно голямо разстояние"
 
-#: lib/ui/stdcontext.inc:253 lib/ui/stdcontext.inc:280
+#: lib/ui/stdcontext.inc:273 lib/ui/stdcontext.inc:300
 msgid "Half Quad Space (Enskip)|k"
 msgstr ""
 
 # src/ext_l10n.h:99
-#: lib/ui/stdcontext.inc:254
+#: lib/ui/stdcontext.inc:274
 #, fuzzy
 msgid "Protected Half Quad Space (Enspace)|E"
 msgstr "Защитен интервал(B)|B"
 
 # src/sp_form.C:86
-#: lib/ui/stdcontext.inc:255 lib/ui/stdcontext.inc:281
+#: lib/ui/stdcontext.inc:275 lib/ui/stdcontext.inc:301
 #, fuzzy
 msgid "Quad Space|Q"
 msgstr "Замести"
 
 # src/sp_form.C:86
-#: lib/ui/stdcontext.inc:256 lib/ui/stdcontext.inc:282
+#: lib/ui/stdcontext.inc:276 lib/ui/stdcontext.inc:302
 #, fuzzy
 msgid "Double Quad Space|u"
 msgstr "Замести"
 
 # src/mathed/math_forms.C:152
-#: lib/ui/stdcontext.inc:257
-#, fuzzy
+#: lib/ui/stdcontext.inc:277
 msgid "Horizontal Fill|F"
-msgstr "Хориз. Подравняване(H)|#H"
+msgstr "Хориз. запълване"
 
 # src/mathed/math_forms.C:152
-#: lib/ui/stdcontext.inc:258
-#, fuzzy
+#: lib/ui/stdcontext.inc:278
 msgid "Protected Horizontal Fill|z"
-msgstr "Хориз. Подравняване(H)|#H"
+msgstr "Защитено хориз. запълване"
 
 # src/mathed/math_forms.C:152
-#: lib/ui/stdcontext.inc:259
-#, fuzzy
+#: lib/ui/stdcontext.inc:279
 msgid "Horizontal Fill (Dots)|D"
-msgstr "Хориз. Подравняване(H)|#H"
+msgstr "Хориз. запълване (с точки)"
 
 # src/mathed/math_forms.C:152
-#: lib/ui/stdcontext.inc:260
+#: lib/ui/stdcontext.inc:280
 #, fuzzy
 msgid "Horizontal Fill (Rule)|R"
 msgstr "Хориз. Подравняване(H)|#H"
 
 # src/mathed/math_forms.C:152
-#: lib/ui/stdcontext.inc:261
-#, fuzzy
+#: lib/ui/stdcontext.inc:281
 msgid "Horizontal Fill (Left Arrow)|L"
-msgstr "Хориз. Подравняване(H)|#H"
+msgstr "Хориз. запълване (леви стрелки)"
 
 # src/mathed/math_forms.C:152
-#: lib/ui/stdcontext.inc:262
-#, fuzzy
+#: lib/ui/stdcontext.inc:282
 msgid "Horizontal Fill (Right Arrow)|g"
-msgstr "Хориз. Подравняване(H)|#H"
+msgstr "Хориз. запълване (десни стрелки)"
 
 # src/mathed/math_forms.C:152
-#: lib/ui/stdcontext.inc:263
-#, fuzzy
+#: lib/ui/stdcontext.inc:283
 msgid "Horizontal Fill (Up Brace)|p"
-msgstr "Хориз. Подравняване(H)|#H"
+msgstr "Хориз. запълване (горна скоба)"
 
 # src/mathed/math_forms.C:152
-#: lib/ui/stdcontext.inc:264
-#, fuzzy
+#: lib/ui/stdcontext.inc:284
 msgid "Horizontal Fill (Down Brace)|B"
-msgstr "Хориз. Подравняване(H)|#H"
+msgstr "Хориз. запълване (долна скоба)"
 
 # src/ext_l10n.h:202
-#: lib/ui/stdcontext.inc:265 lib/ui/stdcontext.inc:283
-#, fuzzy
+#: lib/ui/stdcontext.inc:285 lib/ui/stdcontext.inc:303
 msgid "Custom Length|C"
-msgstr "Коментар"
+msgstr "Дължина от потребителя"
 
 # src/frontends/kde/parageneraldlg.C:38 src/frontends/kde/parageneraldlg.C:45
-#: lib/ui/stdcontext.inc:292
+#: lib/ui/stdcontext.inc:312
 #, fuzzy
 msgid "DefSkip|D"
 msgstr "Нормално разстояние"
 
 # src/frontends/kde/parageneraldlg.C:39 src/frontends/kde/parageneraldlg.C:46
-#: lib/ui/stdcontext.inc:293
-#, fuzzy
+#: lib/ui/stdcontext.inc:313
 msgid "SmallSkip|S"
 msgstr "Малко разстояние"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
-#: lib/ui/stdcontext.inc:294
-#, fuzzy
+#: lib/ui/stdcontext.inc:314
 msgid "MedSkip|M"
 msgstr "Средно разстояние"
 
 # src/frontends/kde/parageneraldlg.C:41 src/frontends/kde/parageneraldlg.C:48
-#: lib/ui/stdcontext.inc:295
-#, fuzzy
+#: lib/ui/stdcontext.inc:315
 msgid "BigSkip|B"
 msgstr "Голямо разстояние"
 
 # src/ext_l10n.h:65
-#: lib/ui/stdcontext.inc:296
-#, fuzzy
+#: lib/ui/stdcontext.inc:316
 msgid "Half line height|H"
-msgstr "основата вдясно"
+msgstr "Половин височина на ред"
 
 # src/form1.C:157 src/frontends/xforms/form_graphics.C:46
-#: lib/ui/stdcontext.inc:297
-#, fuzzy
+#: lib/ui/stdcontext.inc:317
 msgid "Line height|L"
-msgstr "&Височина"
+msgstr "Височина на ред"
 
 # src/MenuBackend.C:443 src/MenuBackend.C:450 src/ext_l10n.h:1
 # src/ext_l10n.h:4
-#: lib/ui/stdcontext.inc:298
+#: lib/ui/stdcontext.inc:318
 #, fuzzy
 msgid "VFill|F"
 msgstr "Файл(F)|F"
 
 # src/ext_l10n.h:215
-#: lib/ui/stdcontext.inc:299
+#: lib/ui/stdcontext.inc:319
 #, fuzzy
 msgid "Custom|C"
 msgstr "Клиент"
 
 # src/ext_l10n.h:344
-#: lib/ui/stdcontext.inc:301
+#: lib/ui/stdcontext.inc:321
 #, fuzzy
 msgid "Settings...|e"
 msgstr "Раздел"
 
 # src/insets/insetinclude.C:277 src/insets/insetinclude.C:318
-#: lib/ui/stdcontext.inc:308 lib/ui/stdcontext.inc:588
+#: lib/ui/stdcontext.inc:328 lib/ui/stdcontext.inc:608
 #, fuzzy
 msgid "Include|c"
 msgstr "Включи"
 
 # src/insets/insetinclude.C:314
-#: lib/ui/stdcontext.inc:309 lib/ui/stdcontext.inc:589
+#: lib/ui/stdcontext.inc:329 lib/ui/stdcontext.inc:609
 #, fuzzy
 msgid "Input|p"
 msgstr "Вход"
 
 # src/insets/insetinclude.C:316
-#: lib/ui/stdcontext.inc:310 lib/ui/stdcontext.inc:590
+#: lib/ui/stdcontext.inc:330 lib/ui/stdcontext.inc:610
 #, fuzzy
 msgid "Verbatim|V"
 msgstr "Неформатиран вход"
 
-#: lib/ui/stdcontext.inc:311 lib/ui/stdcontext.inc:591
+#: lib/ui/stdcontext.inc:331 lib/ui/stdcontext.inc:611
 msgid "Verbatim (marked blanks)|b"
 msgstr ""
 
 # src/ext_l10n.h:274
-#: lib/ui/stdcontext.inc:312 lib/ui/stdcontext.inc:592
+#: lib/ui/stdcontext.inc:332 lib/ui/stdcontext.inc:612
 msgid "Listing|L"
 msgstr "Списък"
 
 # src/ext_l10n.h:92
-#: lib/ui/stdcontext.inc:316 lib/ui/stdcontext.inc:596
-#, fuzzy
+#: lib/ui/stdcontext.inc:336 lib/ui/stdcontext.inc:616
 msgid "Edit Included File...|E"
-msgstr "Включи файл(e)|e"
+msgstr "Редактиране на включен файл..."
 
 # src/MenuBackend.C:413 src/ext_l10n.h:12 src/ext_l10n.h:17
-#: lib/ui/stdcontext.inc:323 lib/ui/stdmenus.inc:468
+#: lib/ui/stdcontext.inc:343 lib/ui/stdmenus.inc:468
 msgid "New Page|N"
 msgstr "Нова страница|Н"
 
 # src/frontends/xforms/form_paragraph.C:141
-#: lib/ui/stdcontext.inc:324 lib/ui/stdmenus.inc:469
+#: lib/ui/stdcontext.inc:344 lib/ui/stdmenus.inc:469
 msgid "Page Break|a"
 msgstr "Край на страница|К"
 
 # src/frontends/xforms/form_paragraph.C:141
-#: lib/ui/stdcontext.inc:325 lib/ui/stdmenus.inc:470
-#, fuzzy
+#: lib/ui/stdcontext.inc:345 lib/ui/stdmenus.inc:470
 msgid "No Page Break|g"
-msgstr "Край на страница|К"
+msgstr "Без край на страница"
 
 # src/frontends/xforms/form_paragraph.C:244
-#: lib/ui/stdcontext.inc:326 lib/ui/stdmenus.inc:471
+#: lib/ui/stdcontext.inc:346 lib/ui/stdmenus.inc:471
 msgid "Clear Page|C"
 msgstr "Завършване на страница|З"
 
-#: lib/ui/stdcontext.inc:327 lib/ui/stdmenus.inc:472
+#: lib/ui/stdcontext.inc:347 lib/ui/stdmenus.inc:472
 msgid "Clear Double Page|D"
 msgstr "Завършване с празна страница"
 
 # src/ext_l10n.h:100
-#: lib/ui/stdcontext.inc:334 lib/ui/stdmenus.inc:465
+#: lib/ui/stdcontext.inc:354 lib/ui/stdmenus.inc:465
 msgid "Ragged Line Break|R"
 msgstr "Нов ред"
 
 # src/ext_l10n.h:100
-#: lib/ui/stdcontext.inc:335 lib/ui/stdmenus.inc:466
+#: lib/ui/stdcontext.inc:355 lib/ui/stdmenus.inc:466
 msgid "Justified Line Break|J"
 msgstr "Подравнен нов ред|П"
 
 # src/ext_l10n.h:104
-#: lib/ui/stdcontext.inc:342
-#, fuzzy
+#: lib/ui/stdcontext.inc:362
 msgid "Plain Separator|P"
-msgstr "Меню разделител(M)|M"
+msgstr "Обикновен разделител"
 
 # src/ext_l10n.h:303
-#: lib/ui/stdcontext.inc:343
-#, fuzzy
+#: lib/ui/stdcontext.inc:363
 msgid "Paragraph Break|B"
-msgstr "Абзац"
+msgstr "Прекъсване на абзац"
 
 # src/ext_l10n.h:94
-#: lib/ui/stdcontext.inc:352
+#: lib/ui/stdcontext.inc:372
 msgid "Edit Externally..."
 msgstr "Редактиране с друга програма...|Р"
 
 # src/ext_l10n.h:94
-#: lib/ui/stdcontext.inc:353
-#, fuzzy
+#: lib/ui/stdcontext.inc:373
 msgid "End Editing Externally..."
-msgstr "Редактиране с друга програма...|Р"
+msgstr "Край на редактиране с външна програма"
 
 # src/insets/insetfloat.C:150
-#: lib/ui/stdcontext.inc:360
-#, fuzzy
+#: lib/ui/stdcontext.inc:380
 msgid "Split Inset|t"
-msgstr "Отваряне на добавката|О"
+msgstr "Раздвояване на добавката от курсора"
 
 # src/frontends/xforms/form_paragraph.C:244
-#: lib/ui/stdcontext.inc:362
+#: lib/ui/stdcontext.inc:382
 msgid "Jump Back to Saved Bookmark|B"
 msgstr "Връщане кам последно записания показалец|В"
 
-#: lib/ui/stdcontext.inc:363 lib/ui/stdmenus.inc:600
+#: lib/ui/stdcontext.inc:383 lib/ui/stdmenus.inc:600
 msgid "Forward Search|F"
 msgstr "Търсене напред|Т"
 
 # src/ext_l10n.h:303
-#: lib/ui/stdcontext.inc:365 lib/ui/stdmenus.inc:120
+#: lib/ui/stdcontext.inc:385 lib/ui/stdmenus.inc:120
 msgid "Move Paragraph Up|o"
 msgstr "Преместване на абзаца нагоре|г"
 
 # src/ext_l10n.h:303
-#: lib/ui/stdcontext.inc:366 lib/ui/stdmenus.inc:121
+#: lib/ui/stdcontext.inc:386 lib/ui/stdmenus.inc:121
 msgid "Move Paragraph Down|v"
 msgstr "Преместване на абзаца надолу|д"
 
 # src/ext_l10n.h:344
-#: lib/ui/stdcontext.inc:370
+#: lib/ui/stdcontext.inc:390
 msgid "Promote Section|r"
 msgstr "Повишаване на раздела"
 
 # src/ext_l10n.h:344
-#: lib/ui/stdcontext.inc:371
+#: lib/ui/stdcontext.inc:391
 msgid "Demote Section|m"
 msgstr "Понижаване на радела"
 
 # src/LColor.C:64
-#: lib/ui/stdcontext.inc:372
+#: lib/ui/stdcontext.inc:392
 msgid "Move Section Down|D"
 msgstr "Преместване раздела надолу"
 
 # src/LColor.C:64
-#: lib/ui/stdcontext.inc:373 lib/ui/stdcontext.inc:661
+#: lib/ui/stdcontext.inc:393 lib/ui/stdcontext.inc:681
 msgid "Move Section Up|U"
 msgstr "Преместване раздела нагоре"
 
 # src/LyXAction.C:248
-#: lib/ui/stdcontext.inc:375
+#: lib/ui/stdcontext.inc:395
 msgid "Insert Regular Expression"
 msgstr "Вмъкване на регулярен израз"
 
 # src/LColor.C:75
-#: lib/ui/stdcontext.inc:377 lib/ui/stdcontext.inc:650
+#: lib/ui/stdcontext.inc:397 lib/ui/stdcontext.inc:670
 msgid "Accept Change|c"
 msgstr "Приемане на промяна|П"
 
 # src/form1.C:249
-#: lib/ui/stdcontext.inc:378
+#: lib/ui/stdcontext.inc:398
 msgid "Reject Change|j"
 msgstr "Отхвърляне на промяна|О"
 
-#: lib/ui/stdcontext.inc:380 lib/ui/stdmenus.inc:124
+#: lib/ui/stdcontext.inc:400 lib/ui/stdmenus.inc:124
 msgid "Text Properties|x"
-msgstr "Настройки на текста|т"
+msgstr "Текст|Т"
 
-#: lib/ui/stdcontext.inc:381 lib/ui/stdmenus.inc:125
+#: lib/ui/stdcontext.inc:401 lib/ui/stdmenus.inc:125
 msgid "Custom Text Styles|S"
 msgstr "Текстови стилове зададени от потребителя"
 
 # src/ext_l10n.h:303
-#: lib/ui/stdcontext.inc:382 lib/ui/stdmenus.inc:123
+#: lib/ui/stdcontext.inc:402 lib/ui/stdmenus.inc:123
 msgid "Paragraph Settings...|P"
 msgstr "Настройки на абзаца...|а"
 
 # src/frontends/xforms/FormGraphics.C:36
 # src/frontends/xforms/FormGraphics.C:359
-#: lib/ui/stdcontext.inc:383
-#, fuzzy
+#: lib/ui/stdcontext.inc:403
 msgid "Unify Graphics Groups|U"
-msgstr "Графика"
+msgstr "Обединяване на графични групи"
 
-#: lib/ui/stdcontext.inc:386
+#: lib/ui/stdcontext.inc:406
 msgid "Fullscreen Mode"
 msgstr "Режим пълен екран"
 
 # src/LyXAction.C:141
-#: lib/ui/stdcontext.inc:387
-#, fuzzy
+#: lib/ui/stdcontext.inc:407
 msgid "Close Current View"
-msgstr "Нов документ"
+msgstr "Затваряне на текущия изглед"
 
-#: lib/ui/stdcontext.inc:395
-#, fuzzy
+#: lib/ui/stdcontext.inc:415
 msgid "Anything|A"
-msgstr "varnothing"
+msgstr "Всичко"
 
-#: lib/ui/stdcontext.inc:396
+#: lib/ui/stdcontext.inc:416
 msgid "Anything Non-Empty|o"
-msgstr ""
+msgstr "Всичко не празно"
 
-#: lib/ui/stdcontext.inc:397
-#, fuzzy
+#: lib/ui/stdcontext.inc:417
 msgid "Any Word|W"
-msgstr "MS Word|W"
+msgstr "Всяка дума"
 
 # src/mathed/formula.C:929
-#: lib/ui/stdcontext.inc:398
-#, fuzzy
+#: lib/ui/stdcontext.inc:418
 msgid "Any Number|N"
-msgstr "Номериране"
+msgstr "Всеки номер"
 
 # src/frontends/xforms/FormPreferences.C:269
-#: lib/ui/stdcontext.inc:399
-#, fuzzy
+#: lib/ui/stdcontext.inc:419
 msgid "User Defined|U"
-msgstr "Принтер"
+msgstr "Дефиниран от потребителя"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
-#: lib/ui/stdcontext.inc:408 lib/ui/stdmenus.inc:267
+#: lib/ui/stdcontext.inc:428 lib/ui/stdmenus.inc:267
 msgid "Append Argument"
 msgstr "Добавяне на аргумент"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
-#: lib/ui/stdcontext.inc:409 lib/ui/stdmenus.inc:268
+#: lib/ui/stdcontext.inc:429 lib/ui/stdmenus.inc:268
 msgid "Remove Last Argument"
 msgstr "Изтриване на последния аргумент"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
-#: lib/ui/stdcontext.inc:411
+#: lib/ui/stdcontext.inc:431
 msgid "Make First Non-Optional Into Optional Argument"
 msgstr "Промяна на първия обикновен аргумнт на аргумент по подразбиране"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
-#: lib/ui/stdcontext.inc:412
+#: lib/ui/stdcontext.inc:432
 msgid "Make Last Optional Into Non-Optional Argument"
 msgstr "Промяна на последния агумент по подразбиране на обикновен"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
-#: lib/ui/stdcontext.inc:413 lib/ui/stdmenus.inc:272
+#: lib/ui/stdcontext.inc:433 lib/ui/stdmenus.inc:272
 msgid "Insert Optional Argument"
 msgstr "Добавяне на аргемент по подразбиране"
 
 # src/insets/insetfloat.C:150
-#: lib/ui/stdcontext.inc:414 lib/ui/stdmenus.inc:273
+#: lib/ui/stdcontext.inc:434 lib/ui/stdmenus.inc:273
 msgid "Remove Optional Argument"
 msgstr "Изтриване на алгумент по подразбиране"
 
 # src/insets/insetfloat.C:150
-#: lib/ui/stdcontext.inc:416 lib/ui/stdmenus.inc:275
-#, fuzzy
+#: lib/ui/stdcontext.inc:436 lib/ui/stdmenus.inc:275
 msgid "Append Argument Eating From the Right"
-msgstr "Отворен Float Inset"
+msgstr "Добавяне на аргумент отдясно"
 
 # src/insets/insetfloat.C:150
-#: lib/ui/stdcontext.inc:417 lib/ui/stdmenus.inc:276
-#, fuzzy
+#: lib/ui/stdcontext.inc:437 lib/ui/stdmenus.inc:276
 msgid "Append Optional Argument Eating From the Right"
-msgstr "Отворен Float Inset"
+msgstr "Добавяне на незадължителен аргумент отдясно"
 
 # src/insets/insetfloat.C:150
-#: lib/ui/stdcontext.inc:418 lib/ui/stdmenus.inc:277
-#, fuzzy
+#: lib/ui/stdcontext.inc:438 lib/ui/stdmenus.inc:277
 msgid "Remove Last Argument Spitting Out to the Right"
-msgstr "Отворен Float Inset"
+msgstr "Премахване на последния аргумент отдясно"
 
 # src/sp_form.C:86
-#: lib/ui/stdcontext.inc:427
+#: lib/ui/stdcontext.inc:447
 msgid "Reload|R"
 msgstr "Презапеждане"
 
 # src/ext_l10n.h:94
-#: lib/ui/stdcontext.inc:429 lib/ui/stdcontext.inc:441
-#: lib/ui/stdcontext.inc:549
+#: lib/ui/stdcontext.inc:449 lib/ui/stdcontext.inc:461
+#: lib/ui/stdcontext.inc:569
 msgid "Edit Externally...|x"
 msgstr "Редактиране с външна програма|Р"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:142
-#: lib/ui/stdcontext.inc:449 lib/ui/stdmenus.inc:222
+#: lib/ui/stdcontext.inc:469 lib/ui/stdmenus.inc:222
 msgid "Top|T"
-msgstr "Отгоре"
+msgstr "Горе"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:168
-#: lib/ui/stdcontext.inc:450 lib/ui/stdmenus.inc:224
+#: lib/ui/stdcontext.inc:470 lib/ui/stdmenus.inc:224
 msgid "Bottom|B"
-msgstr "Отдолу"
+msgstr "Долу"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:120
-#: lib/ui/stdcontext.inc:451 lib/ui/stdmenus.inc:218
+#: lib/ui/stdcontext.inc:471 lib/ui/stdmenus.inc:218
 msgid "Left|L"
-msgstr "Отляво"
+msgstr "Ляво"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:133
-#: lib/ui/stdcontext.inc:452 lib/ui/stdmenus.inc:220
+#: lib/ui/stdcontext.inc:472 lib/ui/stdmenus.inc:220
 msgid "Right|R"
-msgstr "Отдесено"
+msgstr "Дясно"
 
-#: lib/ui/stdcontext.inc:453
-#, fuzzy
+#: lib/ui/stdcontext.inc:473
 msgid "Reset Formal Defaults|F"
-msgstr "Възстановяване"
+msgstr "Възстановяване по подразбиране"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:120
-#: lib/ui/stdcontext.inc:457
+#: lib/ui/stdcontext.inc:477
 msgid "Left|f"
-msgstr "Отляво"
+msgstr "Ляво"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:107
-#: lib/ui/stdcontext.inc:458 lib/ui/stdmenus.inc:219
+#: lib/ui/stdcontext.inc:478 lib/ui/stdmenus.inc:219
 msgid "Center|C"
-msgstr "Центриране"
+msgstr "Център"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:133
-#: lib/ui/stdcontext.inc:459
+#: lib/ui/stdcontext.inc:479
 msgid "Right|h"
-msgstr "Отдясно"
+msgstr "Дясно"
 
 # src/layout_forms.C:23
-#: lib/ui/stdcontext.inc:460
-#, fuzzy
+#: lib/ui/stdcontext.inc:480
 msgid "Decimal"
-msgstr "Семейство(F):|#F"
+msgstr "Десетично"
 
 # src/ext_l10n.h:61
-#: lib/ui/stdcontext.inc:468
+#: lib/ui/stdcontext.inc:488
 msgid "Multicolumn|u"
 msgstr "Обединяване на колони"
 
 # src/ext_l10n.h:61
-#: lib/ui/stdcontext.inc:469
+#: lib/ui/stdcontext.inc:489
 msgid "Multirow|w"
 msgstr "Обединяване на редове"
 
 # src/ext_l10n.h:72
-#: lib/ui/stdcontext.inc:471
+#: lib/ui/stdcontext.inc:491
 msgid "Append Row|A"
 msgstr "Добавяне на ред"
 
 # src/ext_l10n.h:74
-#: lib/ui/stdcontext.inc:472 lib/ui/stdmenus.inc:227
+#: lib/ui/stdcontext.inc:492 lib/ui/stdmenus.inc:227
 msgid "Delete Row|D"
 msgstr "Изтриване на ред"
 
 # src/ext_l10n.h:41
-#: lib/ui/stdcontext.inc:473 lib/ui/stdmenus.inc:228
+#: lib/ui/stdcontext.inc:493 lib/ui/stdmenus.inc:228
 msgid "Copy Row|o"
 msgstr "Копиране на ред"
 
 # src/LColor.C:64
-#: lib/ui/stdcontext.inc:474 lib/ui/stdmenus.inc:229
+#: lib/ui/stdcontext.inc:494 lib/ui/stdmenus.inc:229
 msgid "Move Row Up"
 msgstr "Преместване на реда нагоре"
 
 # src/LColor.C:64
-#: lib/ui/stdcontext.inc:475 lib/ui/stdmenus.inc:230
+#: lib/ui/stdcontext.inc:495 lib/ui/stdmenus.inc:230
 msgid "Move Row Down"
 msgstr "Преместване на реда надолу"
 
 # src/ext_l10n.h:73
-#: lib/ui/stdcontext.inc:477
+#: lib/ui/stdcontext.inc:497
 msgid "Append Column|p"
 msgstr "Добавяне на колона"
 
 # src/ext_l10n.h:75
-#: lib/ui/stdcontext.inc:478 lib/ui/stdmenus.inc:234
+#: lib/ui/stdcontext.inc:498 lib/ui/stdmenus.inc:234
 msgid "Delete Column|e"
 msgstr "Изтриване на колона"
 
 # src/ext_l10n.h:73
-#: lib/ui/stdcontext.inc:479
+#: lib/ui/stdcontext.inc:499
 msgid "Copy Column|y"
 msgstr "Копиране на колона"
 
-#: lib/ui/stdcontext.inc:480 lib/ui/stdmenus.inc:236
+#: lib/ui/stdcontext.inc:500 lib/ui/stdmenus.inc:236
 msgid "Move Column Right|v"
 msgstr "Преместване на колоната надясно"
 
-#: lib/ui/stdcontext.inc:481 lib/ui/stdmenus.inc:237
+#: lib/ui/stdcontext.inc:501 lib/ui/stdmenus.inc:237
 msgid "Move Column Left"
 msgstr "Преместване на колоната наляво"
 
 # src/ext_l10n.h:311
-#: lib/ui/stdcontext.inc:485 lib/ui/stdmenus.inc:201
+#: lib/ui/stdcontext.inc:505 lib/ui/stdmenus.inc:201
 msgid "Multi-page Table|g"
 msgstr "Таблица на повече страници"
 
 # src/ext_l10n.h:125
-#: lib/ui/stdcontext.inc:486
+#: lib/ui/stdcontext.inc:506
 msgid "Formal Style|m"
 msgstr "Официален стил (без верт. кантове)"
 
 # src/frontends/xforms/form_tabular.C:223
 # src/frontends/xforms/form_tabular.C:349
-#: lib/ui/stdcontext.inc:488
+#: lib/ui/stdcontext.inc:508
 msgid "Borders|d"
 msgstr "Контури"
 
@@ -24322,134 +23841,137 @@ msgstr "Контури"
 # src/frontends/kde/dlg/parageneraldlgdata.C:43
 # src/frontends/xforms/form_paragraph.C:149
 # src/frontends/xforms/form_paragraph.C:223
-#: lib/ui/stdcontext.inc:489
+#: lib/ui/stdcontext.inc:509
 msgid "Alignment|i"
 msgstr "Подравняване"
 
 # src/frontends/kde/dlg/tabcreatedlgdata.C:107
 # src/frontends/xforms/form_tabular_create.C:45
-#: lib/ui/stdcontext.inc:490
+#: lib/ui/stdcontext.inc:510
 msgid "Columns/Rows|C"
 msgstr "Редове и колони"
 
-#: lib/ui/stdcontext.inc:502
+#: lib/ui/stdcontext.inc:522
 msgid "Transform Field to Static Text|T"
-msgstr ""
+msgstr "Преобразуване на поле в статичен текст|Т"
 
 # src/ext_l10n.h:41
-#: lib/ui/stdcontext.inc:503
-#, fuzzy
+#: lib/ui/stdcontext.inc:523
 msgid "Copy Text|o"
-msgstr "Копирай(o)|o"
+msgstr "Копиране на текст|К"
 
-#: lib/ui/stdcontext.inc:512 lib/ui/stdcontext.inc:536
+#: lib/ui/stdcontext.inc:532 lib/ui/stdcontext.inc:556
 msgid "Activate Branch|A"
-msgstr ""
+msgstr "Активиране на разклонение|р"
 
 # src/frontends/kde/refdlg.C:30
-#: lib/ui/stdcontext.inc:513 lib/ui/stdcontext.inc:537
-#, fuzzy
+#: lib/ui/stdcontext.inc:533 lib/ui/stdcontext.inc:557
 msgid "Deactivate Branch|e"
-msgstr "Достъпни препратки"
+msgstr "Деактивиране на разклонение|Д"
 
 # src/frontends/kde/refdlg.C:30
-#: lib/ui/stdcontext.inc:514
-#, fuzzy
+#: lib/ui/stdcontext.inc:534
 msgid "Activate Branch in Master|M"
-msgstr "Достъпни препратки"
+msgstr "Акт. на разклонение в главния докум.|г"
 
 # src/frontends/kde/refdlg.C:30
-#: lib/ui/stdcontext.inc:515
-#, fuzzy
+#: lib/ui/stdcontext.inc:535
 msgid "Deactivate Branch in Master|v"
-msgstr "Достъпни препратки"
+msgstr "Деакт. на разклонение в главния докум.|д"
 
 # src/LyXAction.C:354
-#: lib/ui/stdcontext.inc:516
+#: lib/ui/stdcontext.inc:536
 msgid "Invert Inset|I"
 msgstr "Превключване на добавката|П"
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
-#: lib/ui/stdcontext.inc:517
+#: lib/ui/stdcontext.inc:537
 msgid "Add Unknown Branch|w"
-msgstr "Добавяна на неопределено разклонение|р`"
+msgstr "Добавяна на неопределено разклонение|р"
 
-#: lib/ui/stdcontext.inc:526
+#: lib/ui/stdcontext.inc:546
 msgid "Insert Reference at Cursor Position|I"
-msgstr ""
+msgstr "Вмъкване на препратка в позицията на курсора|к"
 
 # src/insets/insetfloat.C:150
-#: lib/ui/stdcontext.inc:620
-#, fuzzy
+#: lib/ui/stdcontext.inc:640
 msgid "All Indexes|A"
-msgstr "Отворен Float Inset"
+msgstr "Всички индекси|В"
 
-#: lib/ui/stdcontext.inc:623
+#: lib/ui/stdcontext.inc:643
 msgid "Subindex|b"
-msgstr ""
+msgstr "Подиндекс|и"
 
 # src/form1.C:249
-#: lib/ui/stdcontext.inc:651 lib/ui/stdmenus.inc:583
+#: lib/ui/stdcontext.inc:671 lib/ui/stdmenus.inc:583
 msgid "Reject Change|R"
-msgstr "Отхвърляне на избраната промяна|О"
+msgstr "Отхвърляне на избраната промяна"
 
 # src/ext_l10n.h:344
-#: lib/ui/stdcontext.inc:659
+#: lib/ui/stdcontext.inc:679
 msgid "Promote Section|P"
 msgstr "Повишаване на раздела"
 
 # src/ext_l10n.h:344
-#: lib/ui/stdcontext.inc:660
+#: lib/ui/stdcontext.inc:680
 msgid "Demote Section|D"
 msgstr "Понижаване на раздела"
 
 # src/LColor.C:64
-#: lib/ui/stdcontext.inc:662
+#: lib/ui/stdcontext.inc:682
 msgid "Move Section Down|w"
-msgstr "Преместване на радела надолу"
+msgstr "Преместване на раздела надолу|д"
 
 # src/LColor.C:64
-#: lib/ui/stdcontext.inc:664
+#: lib/ui/stdcontext.inc:684
 msgid "Select Section|S"
-msgstr "Избиране на раздел"
+msgstr "Избиране на раздел|р"
 
 # src/frontends/kde/dlg/printdlgdata.C:246
-#: lib/ui/stdcontext.inc:672
-#, fuzzy
+#: lib/ui/stdcontext.inc:692
 msgid "Wrap by Preview|y"
-msgstr "(&F)Файл"
+msgstr "Показване в предвар. изглед|и"
 
 # src/MenuBackend.C:414 src/ext_l10n.h:14 src/ext_l10n.h:19
-#: lib/ui/stdcontext.inc:681
-#, fuzzy
+#: lib/ui/stdcontext.inc:701
 msgid "Open Target...|O"
-msgstr "Отваряне...|О"
+msgstr "Отваряне на цел...|О"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:142
-#: lib/ui/stdcontext.inc:697 lib/ui/stdmenus.inc:361
+#: lib/ui/stdcontext.inc:717 lib/ui/stdmenus.inc:361
 msgid "Lock Toolbars|L"
 msgstr "Заключване на лентите"
 
-#: lib/ui/stdcontext.inc:699 lib/ui/stdmenus.inc:363
+#: lib/ui/stdcontext.inc:719 lib/ui/stdmenus.inc:363
 msgid "Small-sized Icons"
 msgstr "Малки икони"
 
-#: lib/ui/stdcontext.inc:700 lib/ui/stdmenus.inc:364
+#: lib/ui/stdcontext.inc:720 lib/ui/stdmenus.inc:364
 msgid "Normal-sized Icons"
 msgstr "Нолмални икони"
 
-#: lib/ui/stdcontext.inc:701 lib/ui/stdmenus.inc:365
+#: lib/ui/stdcontext.inc:721 lib/ui/stdmenus.inc:365
 msgid "Big-sized Icons"
 msgstr "Големи икони"
 
-#: lib/ui/stdcontext.inc:702 lib/ui/stdmenus.inc:366
+#: lib/ui/stdcontext.inc:722 lib/ui/stdmenus.inc:366
 msgid "Huge-sized Icons"
 msgstr "Огромни икони"
 
-#: lib/ui/stdcontext.inc:703 lib/ui/stdmenus.inc:367
+#: lib/ui/stdcontext.inc:723 lib/ui/stdmenus.inc:367
 msgid "Giant-sized Icons"
 msgstr "Гигантски икони"
 
+# src/insets/insetbib.C:69 src/insets/insetbib.C:70 src/insets/insetbib.C:210
+# src/insets/insetbib.C:211
+#: lib/ui/stdcontext.inc:732
+msgid "Show Zoom Level|Z"
+msgstr "Показване на мащаб|П"
+
+#: lib/ui/stdcontext.inc:733
+msgid "Show Zoom Slider|S"
+msgstr "Показване на плъзгач за мащаб"
+
 # src/MenuBackend.C:443 src/MenuBackend.C:450 src/ext_l10n.h:1
 # src/ext_l10n.h:4
 #: lib/ui/stdmenus.inc:30
@@ -24594,9 +24116,8 @@ msgstr "Регистриране|Р"
 
 # src/ext_l10n.h:31
 #: lib/ui/stdmenus.inc:76
-#, fuzzy
 msgid "Check In Changes...|I"
-msgstr "Вкарай промените(I)|I"
+msgstr "Вкарване на промените..."
 
 # src/ext_l10n.h:32
 #: lib/ui/stdmenus.inc:77
@@ -24605,25 +24126,22 @@ msgstr "Изтегли за редактиране(O)|O"
 
 # src/ext_l10n.h:41
 #: lib/ui/stdmenus.inc:78
-#, fuzzy
 msgid "Copy|p"
-msgstr "Копирай(o)|o"
+msgstr "Копиране"
 
 # src/ext_l10n.h:288 src/frontends/gnome/FormUrl.C:119
 #: lib/ui/stdmenus.inc:79
-#, fuzzy
 msgid "Rename|R"
-msgstr "Име"
+msgstr "Преименуване"
 
 #: lib/ui/stdmenus.inc:80
 msgid "Update Local Directory From Repository|d"
-msgstr ""
+msgstr "Опресняване на локалната директория от хранилището"
 
 # src/ext_l10n.h:33
 #: lib/ui/stdmenus.inc:81
-#, fuzzy
 msgid "Revert to Repository Version|v"
-msgstr "Върни към последната версия(L)|L"
+msgstr "Връщане към версията от хранилището"
 
 # src/ext_l10n.h:34
 #: lib/ui/stdmenus.inc:82
@@ -24632,13 +24150,12 @@ msgstr "Отмени последното вкарване(U)|U"
 
 #: lib/ui/stdmenus.inc:83
 msgid "Compare with Older Revision...|C"
-msgstr ""
+msgstr "Сравняване с по-стара версия..."
 
 # src/ext_l10n.h:35
 #: lib/ui/stdmenus.inc:84
-#, fuzzy
 msgid "Show History...|H"
-msgstr "История(H)|H"
+msgstr "Показване на историята..."
 
 #: lib/ui/stdmenus.inc:85
 msgid "Use Locking Property|L"
@@ -24691,7 +24208,7 @@ msgstr "Търсене и замяна - разширено...|р"
 
 #: lib/ui/stdmenus.inc:126
 msgid "Manage Counter Values..."
-msgstr ""
+msgstr "Управление на броячите.."
 
 # src/frontends/xforms/FormTabular.C:133
 #: lib/ui/stdmenus.inc:130
@@ -24706,21 +24223,18 @@ msgstr "Математическа среда|М"
 # src/frontends/kde/dlg/tabcreatedlgdata.C:107
 # src/frontends/xforms/form_tabular_create.C:45
 #: lib/ui/stdmenus.inc:132
-#, fuzzy
 msgid "Rows & Columns|C"
-msgstr "Колони"
+msgstr "Редове и колони|Р"
 
 # src/ext_l10n.h:127
 #: lib/ui/stdmenus.inc:139
-#, fuzzy
 msgid "Increase List Depth|I"
-msgstr "Промени дълбочината на средата(v)|v"
+msgstr "Увеличаване дълбочината на списъка|у"
 
 # src/ext_l10n.h:127
 #: lib/ui/stdmenus.inc:140
-#, fuzzy
 msgid "Decrease List Depth|D"
-msgstr "Промени дълбочината на средата(v)|v"
+msgstr "Намаляване дълбочината на списъка|н"
 
 # src/frontends/xforms/form_print.C:112
 #: lib/ui/stdmenus.inc:141
@@ -24729,71 +24243,62 @@ msgstr "Разтваряне на добавката"
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/ui/stdmenus.inc:142
-#, fuzzy
 msgid "TeX Code Settings...|C"
-msgstr "допълнителни опции"
+msgstr "Настройки на TeX кода..."
 
 # src/form1.C:129 src/sp_form.C:58
 #: lib/ui/stdmenus.inc:144
-#, fuzzy
 msgid "Float Settings...|a"
-msgstr "Опции"
+msgstr "Настройки на плаващ обект..."
 
 #: lib/ui/stdmenus.inc:145
 msgid "Text Wrap Settings...|W"
-msgstr ""
+msgstr "Настройки за обхващане на текст.."
 
 # src/form1.C:129 src/sp_form.C:58
 #: lib/ui/stdmenus.inc:146
 msgid "Note Settings...|N"
-msgstr "Настройки на бележка"
+msgstr "Настройки на бележка..."
 
 # src/form1.C:129 src/sp_form.C:58
 #: lib/ui/stdmenus.inc:147
-#, fuzzy
 msgid "Phantom Settings...|h"
-msgstr "Опции"
+msgstr "Настройки на фантомно поле..."
 
 # src/insets/insetbib.C:219
 #: lib/ui/stdmenus.inc:148
-#, fuzzy
 msgid "Branch Settings...|B"
-msgstr "Библ. перо"
+msgstr "Настройки на разклонение..."
 
 # src/form1.C:129 src/sp_form.C:58
 #: lib/ui/stdmenus.inc:149
-#, fuzzy
 msgid "Box Settings...|S"
-msgstr "Опции"
+msgstr "Настройки на рамка..."
 
 # src/form1.C:129 src/sp_form.C:58
 #: lib/ui/stdmenus.inc:150
-#, fuzzy
 msgid "Index Entry Settings...|y"
-msgstr "Опции"
+msgstr "Настройки на индексен запис..."
 
 # src/form1.C:129 src/sp_form.C:58
 #: lib/ui/stdmenus.inc:151
-#, fuzzy
 msgid "Index Settings...|S"
-msgstr "Опции"
+msgstr "Настройки на индекс..."
 
 # src/form1.C:129 src/sp_form.C:58
 #: lib/ui/stdmenus.inc:152
-#, fuzzy
 msgid "Info Settings...|n"
-msgstr "Опции"
+msgstr "Настройки на информ. поле..."
 
 # src/frontends/xforms/FormPreferences.C:223
 #: lib/ui/stdmenus.inc:153
 msgid "Listings Settings...|g"
-msgstr "Настройки на списъците"
+msgstr "Настройки на списъци..."
 
 # src/LColor.C:78
 #: lib/ui/stdmenus.inc:157
-#, fuzzy
 msgid "Table Settings...|a"
-msgstr "ред на министраница"
+msgstr "Настройки на таблица..."
 
 #: lib/ui/stdmenus.inc:161
 msgid "Paste from HTML|H"
@@ -24805,30 +24310,27 @@ msgstr "LaTeX текст|е"
 
 #: lib/ui/stdmenus.inc:163
 msgid "Paste as LinkBack PDF"
-msgstr ""
+msgstr "Поставяне като връзка към PDF"
 
 # src/ext_l10n.h:42
 #: lib/ui/stdmenus.inc:164
-#, fuzzy
 msgid "Paste as PDF"
-msgstr "Залепи(a)|a"
+msgstr "Поставяне като PDF"
 
 # src/ext_l10n.h:42
 #: lib/ui/stdmenus.inc:165
-#, fuzzy
 msgid "Paste as PNG"
-msgstr "Залепи(a)|a"
+msgstr "Поставяне като PNG"
 
 # src/ext_l10n.h:42
 #: lib/ui/stdmenus.inc:166
 msgid "Paste as JPEG"
-msgstr "Поставяне като JPEG|П"
+msgstr "Поставяне като JPEG"
 
 # src/ext_l10n.h:42
 #: lib/ui/stdmenus.inc:167
-#, fuzzy
 msgid "Paste as EMF"
-msgstr "Залепи(a)|a"
+msgstr "Поставяне като EMF"
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
 #: lib/ui/stdmenus.inc:169
@@ -24853,7 +24355,7 @@ msgstr "Избраните елементи като редове|з"
 # src/ext_l10n.h:215
 #: lib/ui/stdmenus.inc:186
 msgid "Customize...|C"
-msgstr "Конфигуриране...|К"
+msgstr "Настройки...|Н"
 
 #: lib/ui/stdmenus.inc:187
 msgid "Apply Last Settings|A"
@@ -24862,7 +24364,7 @@ msgstr "Прилагане на последните настройки|р"
 # src/ext_l10n.h:432
 #: lib/ui/stdmenus.inc:189
 msgid "Capitalize|p"
-msgstr "Начална главна буква|Н"
+msgstr "Начална главна буква|ч"
 
 # src/ext_l10n.h:132
 #: lib/ui/stdmenus.inc:190
@@ -24875,50 +24377,43 @@ msgstr "Малки букви|М"
 
 # src/frontends/xforms/form_print.C:112
 #: lib/ui/stdmenus.inc:195
-#, fuzzy
 msgid "Dissolve Text Style"
-msgstr "Страници:"
+msgstr "Разтваряне на текстов стил"
 
 # src/ext_l10n.h:125
 #: lib/ui/stdmenus.inc:202
-#, fuzzy
 msgid "Formal Style|F"
-msgstr "Удебелен(B)|B"
+msgstr "Формален стил"
 
 # src/ext_l10n.h:61
 #: lib/ui/stdmenus.inc:204
 msgid "Multicolumn|M"
-msgstr "Многоколонно(M)|M"
+msgstr "Многоколонно|к"
 
 # src/ext_l10n.h:61
 #: lib/ui/stdmenus.inc:205
-#, fuzzy
 msgid "Multirow|u"
-msgstr "Многоколонно(M)|M"
+msgstr "Многоредово|р"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:142
 #: lib/ui/stdmenus.inc:207
-#, fuzzy
 msgid "Top Line|T"
-msgstr "(&T)Отгоре"
+msgstr "Горен ред"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:168
 #: lib/ui/stdmenus.inc:208
-#, fuzzy
 msgid "Bottom Line|B"
-msgstr "(&B)Отдолу"
+msgstr "Долен ред"
 
 # src/LColor.C:97
 #: lib/ui/stdmenus.inc:209
-#, fuzzy
 msgid "Left Line|L"
-msgstr "ред на таблица"
+msgstr "Ред вляво"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:133
 #: lib/ui/stdmenus.inc:210
-#, fuzzy
 msgid "Right Line|R"
-msgstr "Десен"
+msgstr "Ред вдясно"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:142
 #: lib/ui/stdmenus.inc:212
@@ -24927,39 +24422,33 @@ msgstr "Отгоре"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:155
 #: lib/ui/stdmenus.inc:213
-#, fuzzy
 msgid "Middle|i"
-msgstr "(&M)В средата"
+msgstr "В средата"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:168
 #: lib/ui/stdmenus.inc:214
-#, fuzzy
 msgid "Bottom|o"
-msgstr "(&B)Отдолу"
+msgstr "Отдолу"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:155
 #: lib/ui/stdmenus.inc:223
-#, fuzzy
 msgid "Middle|M"
-msgstr "(&M)В средата"
+msgstr "В средата"
 
 # src/ext_l10n.h:72
 #: lib/ui/stdmenus.inc:226
-#, fuzzy
 msgid "Add Row|A"
-msgstr "Добави ред(A)|A"
+msgstr "Добавяне на ред"
 
 # src/ext_l10n.h:73
 #: lib/ui/stdmenus.inc:233
-#, fuzzy
 msgid "Add Column|u"
-msgstr "Добави колона(u)|u"
+msgstr "Добавяне на колона"
 
 # src/ext_l10n.h:73
 #: lib/ui/stdmenus.inc:235
-#, fuzzy
 msgid "Copy Column|p"
-msgstr "Добави колона(u)|u"
+msgstr "Копиране на колона"
 
 #: lib/ui/stdmenus.inc:244
 msgid "Change Limits Type|L"
@@ -24967,18 +24456,16 @@ msgstr ""
 
 # src/ext_l10n.h:221
 #: lib/ui/stdmenus.inc:245
-#, fuzzy
 msgid "Macro Definition"
-msgstr "Дефиниция"
+msgstr "Дефиниция на макрос"
 
 #: lib/ui/stdmenus.inc:247
 msgid "Change Formula Type|F"
-msgstr ""
+msgstr "Промяна типа на формула"
 
 #: lib/ui/stdmenus.inc:249
-#, fuzzy
 msgid "Text Properties|T"
-msgstr "Настройки на текста|т"
+msgstr "Текст|Т"
 
 #: lib/ui/stdmenus.inc:251
 msgid "Use Computer Algebra System|S"
@@ -24987,21 +24474,18 @@ msgstr ""
 # src/frontends/xforms/form_tabular.C:223
 # src/frontends/xforms/form_tabular.C:349
 #: lib/ui/stdmenus.inc:255
-#, fuzzy
 msgid "Add Line Above|A"
-msgstr "Рамки"
+msgstr "Добавяне на ред отгоре"
 
 # src/lyxfunc.C:3291
 #: lib/ui/stdmenus.inc:257
-#, fuzzy
 msgid "Delete Line Above|D"
-msgstr "Изберете документ за вмъкване"
+msgstr "Изтриване на ред отгоре"
 
 # src/ext_l10n.h:74
 #: lib/ui/stdmenus.inc:258
-#, fuzzy
 msgid "Delete Line Below|e"
-msgstr "Изтрий ред(w)|w"
+msgstr "Изтриване на ред отдолу"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
 #: lib/ui/stdmenus.inc:270
@@ -25018,9 +24502,8 @@ msgstr "Липсващ аргумент"
 # src/frontends/xforms/form_graphics.C:61
 # src/frontends/xforms/form_graphics.C:82 src/lyxfont.C:411
 #: lib/ui/stdmenus.inc:281
-#, fuzzy
 msgid "Default|t"
-msgstr "Стандартно"
+msgstr "По подразбиране"
 
 # src/frontends/xforms/form_graphics.C:106
 #: lib/ui/stdmenus.inc:282
@@ -25072,32 +24555,28 @@ msgstr "Sans Serif"
 
 # src/LyXAction.C:321
 #: lib/ui/stdmenus.inc:295
-#, fuzzy
 msgid "Math Bold Series|B"
-msgstr "Матем. режим"
+msgstr "Мат. получер"
 
 # src/frontends/gnome/FormCitation.C:549
 # src/frontends/gnome/FormCitation.C:639 src/frontends/kde/citationdlg.C:54
 #: lib/ui/stdmenus.inc:297
-#, fuzzy
 msgid "Text Normal Font|T"
-msgstr "Текст след"
+msgstr "Текст обикновен шрифт"
 
 #: lib/ui/stdmenus.inc:299
 msgid "Text Roman Family"
-msgstr ""
+msgstr "Текст изправени"
 
 # src/frontends/xforms/form_preferences.C:111 src/lyxfont.C:42
 #: lib/ui/stdmenus.inc:300
-#, fuzzy
 msgid "Text Sans Serif Family"
-msgstr "Машинопис"
+msgstr "Текст без серифни"
 
 # src/frontends/xforms/form_preferences.C:111 src/lyxfont.C:42
 #: lib/ui/stdmenus.inc:301
-#, fuzzy
 msgid "Text Typewriter Family"
-msgstr "Машинопис"
+msgstr "Текст машинописни"
 
 #: lib/ui/stdmenus.inc:303
 #, fuzzy
@@ -25159,7 +24638,6 @@ msgstr "Maple, Evalf|v"
 
 # src/bufferview_funcs.C:289
 #: lib/ui/stdmenus.inc:339
-#, fuzzy
 msgid "Outline Pane|O"
 msgstr "Панел със структурата|у"
 
@@ -25169,13 +24647,11 @@ msgid "Code Preview Pane|P"
 msgstr "Панел с изходния код|к"
 
 #: lib/ui/stdmenus.inc:341
-#, fuzzy
 msgid "Messages Pane|M"
 msgstr "Панел със съобщенията (терминал)|щ"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:142
 #: lib/ui/stdmenus.inc:342
-#, fuzzy
 msgid "Toolbars|T"
 msgstr "Ленти с инструменти|и"
 
@@ -25190,12 +24666,10 @@ msgid "Fold Math Macro|d"
 msgstr "Връщане на математически макрос|В"
 
 #: lib/ui/stdmenus.inc:347
-#, fuzzy
 msgid "Split View Into Left and Right Half|L"
 msgstr "Разделяне на лява и дясна половина|л"
 
 #: lib/ui/stdmenus.inc:348
-#, fuzzy
 msgid "Split View Into Upper and Lower Half|U"
 msgstr "Разделяне на горна и долна половина|г"
 
@@ -25204,13 +24678,11 @@ msgid "Close Current View|w"
 msgstr "Затваряне на текущия изглед|З"
 
 #: lib/ui/stdmenus.inc:350
-#, fuzzy
 msgid "Fullscreen|F"
 msgstr "Пълен екран|П"
 
 # src/insets/insetfloat.C:150
 #: lib/ui/stdmenus.inc:352
-#, fuzzy
 msgid "Open All Insets|I"
 msgstr "Отваряне на всички елементи|О"
 
@@ -25226,7 +24698,7 @@ msgstr "Математическа среда|М"
 # src/ext_l10n.h:78
 #: lib/ui/stdmenus.inc:377
 msgid "Special Character|p"
-msgstr "Специалиен символ|С"
+msgstr "Специален символ"
 
 # src/frontends/xforms/FormPreferences.C:252
 #: lib/ui/stdmenus.inc:378
@@ -25235,16 +24707,16 @@ msgstr "Форматиращ елемент|Ф"
 
 #: lib/ui/stdmenus.inc:379
 msgid "Field|i"
-msgstr "Поле|л"
+msgstr "Информационно поле|л"
 
 #: lib/ui/stdmenus.inc:380
 msgid "List/Contents/References|/"
-msgstr ""
+msgstr "Списък, съдържание, препратки|с"
 
 # src/frontends/xforms/FormPreferences.C:252
 #: lib/ui/stdmenus.inc:381
 msgid "Float|a"
-msgstr "Плаващ елемент|П"
+msgstr "Плаващ елемент|щ"
 
 # src/ext_l10n.h:136
 #: lib/ui/stdmenus.inc:382
@@ -25257,9 +24729,8 @@ msgstr "Разклонение в документа|Р"
 
 # src/ext_l10n.h:215
 #: lib/ui/stdmenus.inc:384
-#, fuzzy
 msgid "Custom Inset|s"
-msgstr "Добавки от включените модули"
+msgstr "Добавки от потребителя|Д"
 
 # src/MenuBackend.C:443 src/MenuBackend.C:450 src/ext_l10n.h:1
 # src/ext_l10n.h:4
@@ -25272,9 +24743,8 @@ msgid "Box[[Menu]]|x"
 msgstr "Рамка|к"
 
 #: lib/ui/stdmenus.inc:387
-#, fuzzy
 msgid "Regular Expression"
-msgstr "&Регулярни изрази"
+msgstr "Регулярен израз"
 
 # src/frontends/xforms/FormCitation.C:37
 #: lib/ui/stdmenus.inc:389
@@ -25294,7 +24764,7 @@ msgstr "Етикет...|Е"
 # src/frontends/kde/FormRef.C:103
 #: lib/ui/stdmenus.inc:394
 msgid "Nomenclature Entry...|y"
-msgstr "Запис в речника на съкръщенията|З"
+msgstr "Запис в речника на съкръщенията"
 
 # src/ext_l10n.h:45
 #: lib/ui/stdmenus.inc:396
@@ -25310,7 +24780,7 @@ msgstr "Изображение...|И"
 # src/ext_l10n.h:86
 #: lib/ui/stdmenus.inc:398
 msgid "URL|U"
-msgstr "Универсален Указател на Ресурси (URL)"
+msgstr "Унифициран ресурсен локатор (URL)"
 
 # src/frontends/kde/urldlg.C:45
 #: lib/ui/stdmenus.inc:399
@@ -25340,7 +24810,7 @@ msgstr "Изходен код на (La)TeX"
 # src/frontends/kde/dlg/printdlgdata.C:246
 #: lib/ui/stdmenus.inc:409
 msgid "Preview|w"
-msgstr "Предварителен изглед|д"
+msgstr "Предварителен изглед|з"
 
 # src/lyxfont.C:42
 #: lib/ui/stdmenus.inc:413
@@ -25402,7 +24872,6 @@ msgid "Date (Last Modification)|L"
 msgstr "Дата (на последна промяна)|п"
 
 #: lib/ui/stdmenus.inc:429
-#, fuzzy
 msgid "Date (Fixed)|F"
 msgstr "Дата (точна)|Д"
 
@@ -25415,7 +24884,6 @@ msgid "Time (Last Modification)|M"
 msgstr "Час (на последна промяна)"
 
 #: lib/ui/stdmenus.inc:433
-#, fuzzy
 msgid "Time (Fixed)|x"
 msgstr "Час (точен)|Ч"
 
@@ -25588,14 +25056,13 @@ msgstr "Ново разклонение...|Н"
 
 # src/LColor.C:68
 #: lib/ui/stdmenus.inc:562
-#, fuzzy
 msgid "Cancel Background Process|P"
-msgstr "Цветен фон|Ц"
+msgstr "Спиране на активен процес|С"
 
 # src/LyXAction.C:263
 #: lib/ui/stdmenus.inc:564
 msgid "Change Tracking|C"
-msgstr "Проследяване на промените|П"
+msgstr "Проследяване на промените"
 
 # src/ext_l10n.h:131
 #: lib/ui/stdmenus.inc:565
@@ -25639,12 +25106,12 @@ msgstr "Активиране|А"
 # src/ext_l10n.h:31
 #: lib/ui/stdmenus.inc:581
 msgid "Merge Changes...|M"
-msgstr "Обхождане на промените|х"
+msgstr "Приемане на промените|м"
 
 # src/LColor.C:75
 #: lib/ui/stdmenus.inc:582
 msgid "Accept Change|A"
-msgstr "Приемане на избраната промяна|П"
+msgstr "Приемане на избраната промяна|и"
 
 # src/LColor.C:75
 #: lib/ui/stdmenus.inc:584
@@ -25658,15 +25125,15 @@ msgstr "Отхвърляне на всички промени|т"
 
 #: lib/ui/stdmenus.inc:586
 msgid "Accept All Changes (incl. Master/Children/Siblings)|p"
-msgstr ""
+msgstr "Приемане на всички промени (вкл. главен и поддокументи)|П"
 
 #: lib/ui/stdmenus.inc:587
 msgid "Reject All Changes (incl. Master/Children/Siblings)|j"
-msgstr ""
+msgstr "Отхвърляне на всички промени (вкл. главен и поддокументи|О"
 
 #: lib/ui/stdmenus.inc:588
 msgid "Show Changes in Output|S"
-msgstr "Показване на промените в крайния документ"
+msgstr "Показване на промените в крайния документ|к"
 
 # src/frontends/xforms/form_paragraph.C:244
 #: lib/ui/stdmenus.inc:595
@@ -25843,35 +25310,31 @@ msgid "Knitr|K"
 msgstr "Knitr"
 
 #: lib/ui/stdmenus.inc:661
-#, fuzzy
 msgid "LilyPond|P"
-msgstr "LilyPond"
+msgstr "Лилипонд (LilyPond)|P"
 
 # src/ext_l10n.h:274
 #: lib/ui/stdmenus.inc:662
-#, fuzzy
 msgid "Linguistics|L"
-msgstr "Списък"
+msgstr "Лингвистика"
 
 #: lib/ui/stdmenus.inc:663
 msgid "Multilingual Captions|C"
-msgstr ""
+msgstr "Многоезични надписи"
 
 #: lib/ui/stdmenus.inc:664
 msgid "Paralist|t"
-msgstr ""
+msgstr "Paralist"
 
 # src/ext_l10n.h:202
 #: lib/ui/stdmenus.inc:665
-#, fuzzy
 msgid "PDF comments|D"
-msgstr "Коментар"
+msgstr "PDF коментари|D"
 
 # src/ext_l10n.h:202
 #: lib/ui/stdmenus.inc:666
-#, fuzzy
 msgid "PDF forms|o"
-msgstr "Коментар"
+msgstr "PDF форми"
 
 #: lib/ui/stdmenus.inc:667
 msgid "Hazard and Precautionary Statements|H"
@@ -25884,12 +25347,11 @@ msgstr "Sweave|S"
 
 #: lib/ui/stdmenus.inc:669
 msgid "XY-pic|X"
-msgstr ""
+msgstr "XY-изображение|X"
 
 #: lib/ui/stdtoolbars.inc:75
-#, fuzzy
 msgid "Standard[[toolbar]]"
-msgstr "стандартни"
+msgstr "Стандартен"
 
 # подсказка
 # src/LyXAction.C:141
@@ -25918,13 +25380,13 @@ msgid "Spellcheck continuously"
 msgstr "Постоянна проверка на правописа"
 
 # src/BufferView2.C:435 src/LyXAction.C:406
-#: lib/ui/stdtoolbars.inc:84 src/BufferView.cpp:1433
+#: lib/ui/stdtoolbars.inc:84 src/BufferView.cpp:1472
 msgid "Undo"
 msgstr "Отмяна"
 
 # подсказка
 # src/BufferView2.C:456 src/LyXAction.C:357
-#: lib/ui/stdtoolbars.inc:85 src/BufferView.cpp:1453
+#: lib/ui/stdtoolbars.inc:85 src/BufferView.cpp:1493
 msgid "Redo"
 msgstr "Повторение"
 
@@ -25955,7 +25417,7 @@ msgstr "Открояване като съществително име"
 
 #: lib/ui/stdtoolbars.inc:95
 msgid "Custom text styles"
-msgstr "Потребителски дефинирани текстови стилове"
+msgstr "Текстови стилове дефинирани от потребителя"
 
 # src/LyXAction.C:98
 #: lib/ui/stdtoolbars.inc:97
@@ -25983,21 +25445,18 @@ msgstr "Превключване на панела със структурата
 
 # src/LyXAction.C:208
 #: lib/ui/stdtoolbars.inc:103 lib/ui/stdtoolbars.inc:300
-#, fuzzy
 msgid "Show math toolbar"
 msgstr "Показване на мат. инструменти"
 
 # src/LyXAction.C:208
 #: lib/ui/stdtoolbars.inc:104 lib/ui/stdtoolbars.inc:312
-#, fuzzy
 msgid "Show table toolbar"
-msgstr "Показване на табличните инструменти"
+msgstr "Показване на инструменти за таблици"
 
 # src/LyXAction.C:208
 #: lib/ui/stdtoolbars.inc:105 lib/ui/stdtoolbars.inc:318
-#, fuzzy
 msgid "Show review toolbar"
-msgstr "Превключване на лентата с инструменти за проследяване на промените"
+msgstr "Показване на инструменти за преглед"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
 #: lib/ui/stdtoolbars.inc:108
@@ -26057,9 +25516,8 @@ msgstr "Изброяване с водещи знаци"
 
 # src/frontends/kde/dlg/parageneraldlgdata.C:151
 #: lib/ui/stdtoolbars.inc:124
-#, fuzzy
 msgid "Labeled List"
-msgstr "Ширина на етикет"
+msgstr "Списък с етикети"
 
 # src/lyxfont.C:57
 #: lib/ui/stdtoolbars.inc:127
@@ -26238,9 +25696,8 @@ msgstr "Премахване на всички кантове на избран
 
 # src/frontends/xforms/form_tabular.C:106
 #: lib/ui/stdtoolbars.inc:171
-#, fuzzy
 msgid "Reset formal default lines"
-msgstr "Премахване на всички кантове на избраните клетки"
+msgstr "Възстановяване на формални редове по подразбиране"
 
 # src/ext_l10n.h:66
 #: lib/ui/stdtoolbars.inc:173
@@ -26306,7 +25763,7 @@ msgstr "Математически"
 # src/insets/figinset.C:1045
 #: lib/ui/stdtoolbars.inc:189
 msgid "Set display mode"
-msgstr "Превключване стила на изобразяване"
+msgstr "Превключване средата на изобразяване"
 
 # src/ext_l10n.h:96
 #: lib/ui/stdtoolbars.inc:191 src/insets/InsetScript.cpp:63
@@ -26375,9 +25832,8 @@ msgstr "Вмъкване на фигурна скоба за изброяван
 
 # src/mathed/math_panel.C:383
 #: lib/ui/stdtoolbars.inc:212 lib/ui/stdtoolbars.inc:306
-#, fuzzy
 msgid "Show math panels"
-msgstr "Превключване на мат. панели"
+msgstr "Показване на мат. панели"
 
 # src/mathed/math_panel.C:383
 #: lib/ui/stdtoolbars.inc:215
@@ -26400,7 +25856,7 @@ msgstr "Дроби"
 
 # src/bufferview_funcs.C:267
 #: lib/ui/stdtoolbars.inc:219 lib/ui/stdtoolbars.inc:442
-#: src/frontends/qt/GuiDocument.cpp:1763
+#: src/frontends/qt/GuiDocument.cpp:1777
 msgid "Fonts"
 msgstr "Шрифтове"
 
@@ -26412,7 +25868,7 @@ msgstr "Функции"
 # src/ext_l10n.h:219
 #: lib/ui/stdtoolbars.inc:221
 msgid "Frame decorations"
-msgstr "Украса на контура"
+msgstr "Форма на контура"
 
 # src/ext_l10n.h:438
 #: lib/ui/stdtoolbars.inc:222
@@ -26420,7 +25876,7 @@ msgid "Big operators"
 msgstr "Големи оператори"
 
 #: lib/ui/stdtoolbars.inc:223 lib/ui/stdtoolbars.inc:690
-#: src/frontends/qt/GuiDocument.cpp:5163
+#: src/frontends/qt/GuiDocument.cpp:5183
 msgid "Miscellaneous"
 msgstr "Разни символи"
 
@@ -26489,29 +25945,26 @@ msgstr "Изтриване на последния аргумент"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
 #: lib/ui/stdtoolbars.inc:239
-#, fuzzy
 msgid "Append argument"
-msgstr "Липсващ аргумент"
+msgstr "Добавяне на аргумент"
 
 #: lib/ui/stdtoolbars.inc:241
 msgid "Make first non-optional into optional argument"
-msgstr ""
+msgstr "Превръщане на първия задължителен аргумент в незадължителен"
 
 #: lib/ui/stdtoolbars.inc:242
 msgid "Make last optional into non-optional argument"
-msgstr ""
+msgstr "Превръщане на последния незадължителен аргумент в задължителен"
 
 # src/insets/insetfloat.C:150
 #: lib/ui/stdtoolbars.inc:244
-#, fuzzy
 msgid "Remove optional argument"
-msgstr "Отворен Float Inset"
+msgstr "Премахване на незадължителен аргумент"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
 #: lib/ui/stdtoolbars.inc:245
-#, fuzzy
 msgid "Insert optional argument"
-msgstr "Липсващ аргумент"
+msgstr "Вмъкване на незадължителен аргумент"
 
 #: lib/ui/stdtoolbars.inc:247
 msgid "Remove last argument spitting out to the right"
@@ -26519,15 +25972,13 @@ msgstr ""
 
 # src/insets/insetfloat.C:150
 #: lib/ui/stdtoolbars.inc:248
-#, fuzzy
 msgid "Append argument eating from the right"
-msgstr "Отворен Float Inset"
+msgstr "Добавяне на аргумент отдясно"
 
 # src/insets/insetfloat.C:150
 #: lib/ui/stdtoolbars.inc:249
-#, fuzzy
 msgid "Append optional argument eating from the right"
-msgstr "Отворен Float Inset"
+msgstr "Добавяне на незъдължителен аргумент отдясно"
 
 # src/mathed/math_panel.C:134
 #: lib/ui/stdtoolbars.inc:252
@@ -26627,15 +26078,13 @@ msgstr "Инструменти за документация на LyX"
 
 # src/BufferView2.C:435 src/LyXAction.C:406
 #: lib/ui/stdtoolbars.inc:283 src/insets/Inset.cpp:122
-#, fuzzy
 msgid "Info"
-msgstr "Отмени"
+msgstr "Информационно поле"
 
 # src/ext_l10n.h:104
 #: lib/ui/stdtoolbars.inc:284
-#, fuzzy
 msgid "Menu Separator"
-msgstr "Меню разделител(M)|M"
+msgstr "Разделител на меню"
 
 # src/LaTeXLog.C:69
 #: lib/ui/stdtoolbars.inc:286
@@ -26670,24 +26119,21 @@ msgstr "Опресни други формати"
 
 #: lib/ui/stdtoolbars.inc:301 lib/ui/stdtoolbars.inc:307
 #: lib/ui/stdtoolbars.inc:313 lib/ui/stdtoolbars.inc:319
-#, fuzzy
 msgid "[[Toolbar]]On"
-msgstr "Преглед"
+msgstr "Вкл."
 
 #: lib/ui/stdtoolbars.inc:302 lib/ui/stdtoolbars.inc:308
 #: lib/ui/stdtoolbars.inc:314 lib/ui/stdtoolbars.inc:320
-#, fuzzy
 msgid "[[Toolbar]]Off"
-msgstr "Преглед"
+msgstr "Изкл."
 
 #: lib/ui/stdtoolbars.inc:303 lib/ui/stdtoolbars.inc:309
 #: lib/ui/stdtoolbars.inc:315 lib/ui/stdtoolbars.inc:321
-#, fuzzy
 msgid "[[Toolbar]]Automatic"
-msgstr "Преглед"
+msgstr "Авт."
 
 # src/ext_l10n.h:24
-#: lib/ui/stdtoolbars.inc:340 src/frontends/qt/GuiLog.cpp:256
+#: lib/ui/stdtoolbars.inc:340 src/frontends/qt/GuiLog.cpp:303
 msgid "Version Control"
 msgstr "Управление на ревизиите"
 
@@ -26699,9 +26145,8 @@ msgstr "Регистрирай(R)|R"
 
 # src/ext_l10n.h:32
 #: lib/ui/stdtoolbars.inc:342
-#, fuzzy
 msgid "Check-out for edit"
-msgstr "Изтегли за редактиране(O)|O"
+msgstr "Изтегляне за редактиране"
 
 # src/ext_l10n.h:31
 #: lib/ui/stdtoolbars.inc:343
@@ -26711,29 +26156,26 @@ msgstr "Вкарай промените(I)|I"
 
 # src/ext_l10n.h:24
 #: lib/ui/stdtoolbars.inc:344
-#, fuzzy
 msgid "View revision log"
-msgstr "Контрол на версията(V)|V"
+msgstr "Преглед на журнала на промените"
 
 # src/form1.C:249
 #: lib/ui/stdtoolbars.inc:345
-#, fuzzy
 msgid "Revert changes"
-msgstr "Нов прочит"
+msgstr "Връщане на промените"
 
 #: lib/ui/stdtoolbars.inc:346
 msgid "Compare with older revision"
-msgstr ""
+msgstr "Сравняване с по-стара версия"
 
 #: lib/ui/stdtoolbars.inc:347
 msgid "Compare with last revision"
-msgstr ""
+msgstr "Сравнение с последната версия"
 
 # src/LyXAction.C:303
 #: lib/ui/stdtoolbars.inc:348
-#, fuzzy
 msgid "Insert Version Info"
-msgstr "Вмъкни бел. в поле"
+msgstr "Вмъкване на информация за версията"
 
 #: lib/ui/stdtoolbars.inc:350
 msgid "Use SVN file locking property"
@@ -26906,69 +26348,69 @@ msgstr "Интервали"
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
 #: lib/ui/stdtoolbars.inc:392
 msgid "Thin space\t\\,"
-msgstr "Малък интервал\t\\,"
+msgstr "Малък интервал\t„\\,“"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
 #: lib/ui/stdtoolbars.inc:393
 msgid "Medium space\t\\:"
-msgstr "Обикновен интервал\t\\:"
+msgstr "Обикновен интервал\t„\\:“"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
 #: lib/ui/stdtoolbars.inc:394
 msgid "Thick space\t\\;"
-msgstr "Голям интервал\t\\;"
+msgstr "Голям интервал\t„\\;“"
 
 #: lib/ui/stdtoolbars.inc:395
 msgid "Quadratin space\t\\quad"
-msgstr "Цял интервал\t\\quad"
+msgstr "Цял интервал\t„\\quad“"
 
 #: lib/ui/stdtoolbars.inc:396
 msgid "Double quadratin space\t\\qquad"
-msgstr "Двоен интервал\t\\qquad"
+msgstr "Двоен интервал\t„\\qquad“"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
 #: lib/ui/stdtoolbars.inc:397
 msgid "Negative space\t\\!"
-msgstr "Отрицателен интервал\t\\!"
+msgstr "Отрицателен интервал\t„\\!“"
 
 # src/ext_l10n.h:438
 #: lib/ui/stdtoolbars.inc:398
 msgid "Phantom\t\\phantom"
-msgstr "Фантом\t\\phantom"
+msgstr "Фантом\t„\\phantom“"
 
 # src/mathed/math_forms.C:152
 #: lib/ui/stdtoolbars.inc:399
 msgid "Horizontal phantom\t\\hphantom"
-msgstr "Хоризонтален фантом\t\\hphantom"
+msgstr "Хоризонтален фантом\t„\\hphantom“"
 
 # src/mathed/math_forms.C:147
 #: lib/ui/stdtoolbars.inc:400
 msgid "Vertical phantom\t\\vphantom"
-msgstr "Вертикален фантом\t\\vphantom"
+msgstr "Вертикален фантом\t„\\vphantom“"
 
 #: lib/ui/stdtoolbars.inc:401
 msgid "Smash\t\\smash"
-msgstr "Смачкване\t\\smash"
+msgstr "Смачкване\t„\\smash“"
 
 #: lib/ui/stdtoolbars.inc:402
 msgid "Top smash\t\\smasht"
-msgstr "Смачкване отгоре\t\\smasht"
+msgstr "Смачкване отгоре\t„\\smasht“"
 
 #: lib/ui/stdtoolbars.inc:403
 msgid "Bottom smash\t\\smashb"
-msgstr "Смачкване отдолу\t\\smashb"
+msgstr "Смачкване отдолу\t„\\smashb“"
 
 #: lib/ui/stdtoolbars.inc:404
 msgid "Left overlap\t\\mathllap"
-msgstr "Презастъпване отляво\t\\mathllap"
+msgstr "Презастъпване отляво\t„\\mathllap“"
 
 #: lib/ui/stdtoolbars.inc:405
 msgid "Center overlap\t\\mathclap"
-msgstr "Презастъпване двустранно\t\\mathclap"
+msgstr "Презастъпване двустранно\t„\\mathclap“"
 
 #: lib/ui/stdtoolbars.inc:406
 msgid "Right overlap\t\\mathrlap"
-msgstr "Презастъпване отдясно\t\\mathrlap"
+msgstr "Презастъпване отдясно\t„\\mathrlap“"
 
 # src/insets/insetfoot.C:32
 #: lib/ui/stdtoolbars.inc:409
@@ -26977,101 +26419,101 @@ msgstr "Корени"
 
 #: lib/ui/stdtoolbars.inc:410
 msgid "Square root\t\\sqrt"
-msgstr ""
+msgstr "Корен квадратен\t„\\sqrt“"
 
 #: lib/ui/stdtoolbars.inc:411
 msgid "Other root\t\\root"
-msgstr ""
+msgstr "Друг корен\t„\\root“"
 
 #: lib/ui/stdtoolbars.inc:414
 msgid "Styles & Classes"
-msgstr "Режими на показване и класове мат. символи"
+msgstr "Среди и класове мат. символи"
 
 #: lib/ui/stdtoolbars.inc:415
+# като изображение
 msgid "Display style\t\\displaystyle"
-msgstr "Графичен стил\t\\displaystyle"
+msgstr "Графична среда"
 
 #: lib/ui/stdtoolbars.inc:416
+# текст, вложен в реда,
 msgid "Normal text style\t\\textstyle"
-msgstr "Текстов стил\t\\textstyle"
+msgstr "Текстова среда"
 
 #: lib/ui/stdtoolbars.inc:417
 msgid "Script (small) style\t\\scriptstyle"
-msgstr "По-малък шрифт\t\\scriptstyle"
+msgstr "По-малък шрифт"
 
 #: lib/ui/stdtoolbars.inc:418
 msgid "Scriptscript (smaller) style\t\\scriptscriptstyle"
-msgstr "Още по-малък шрифт\t\\scriptscriptstyle"
+msgstr "Още по-малък шрифт"
 
 #: lib/ui/stdtoolbars.inc:419
 msgid "Relation class\t\\mathrel"
-msgstr "Знаци с клас „отношение“\t\\mathrel"
+msgstr "Знаци с клас „отношение“\t„\\mathrel“"
 
 #: lib/ui/stdtoolbars.inc:420
 msgid "Binary operator class\t\\mathbin"
-msgstr "Знаци с клас „двоичен оператор“\t\\mathbin"
+msgstr "Знаци с клас „двоичен оператор“\t„\\mathbin“"
 
 #: lib/ui/stdtoolbars.inc:421
 msgid "Large operator class\t\\mathop"
-msgstr "Знаци с клас „голям оператор“\t\\mathop"
+msgstr "Знаци с клас „голям оператор“\t„\\mathop“"
 
 #: lib/ui/stdtoolbars.inc:422
 msgid "Ordinary class\t\\mathord"
-msgstr "Знаци с обикновен клас\t\\mathord"
+msgstr "Знаци с обикновен клас\t„\\mathord“"
 
 # src/ext_l10n.h:361
 #: lib/ui/stdtoolbars.inc:426
 msgid "Standard\t\\frac"
-msgstr "Стандартна дроб\t\\frac"
+msgstr "Стандартна дроб\t„\\frac“"
 
 #: lib/ui/stdtoolbars.inc:427
 msgid "Nice fraction (3/4)\t\\nicefrac"
-msgstr ""
+msgstr "Правилна дроб (3/4)\t„\\nicefrac“"
 
 #: lib/ui/stdtoolbars.inc:428
 msgid "Unit (km)\t\\unitone"
-msgstr ""
+msgstr "Мерна ед. (км)\t„\\unitone“"
 
 #: lib/ui/stdtoolbars.inc:429
 msgid "Unit (864 m)\t\\unittwo"
-msgstr ""
+msgstr "Мерна ед. (864 м)\t„\\unittwo“"
 
 #: lib/ui/stdtoolbars.inc:430
 msgid "Unit fraction (km/h)\t\\unitfrac"
-msgstr ""
+msgstr "Дробна мерна ед. (км/ч)\t„\\unitfrac“"
 
 #: lib/ui/stdtoolbars.inc:431
 msgid "Unit fraction (20 km/h)\t\\unitfracthree"
-msgstr ""
+msgstr "Дробни мерни ед. (20 km/h)\t„\\unitfracthree“"
 
 # src/LyXAction.C:164
 #: lib/ui/stdtoolbars.inc:432
-#, fuzzy
 msgid "Text fraction\t\\tfrac"
-msgstr "Вмъкни цитат"
+msgstr "Текстова дроб\t„\\tfrac“"
 
 # src/frontends/xforms/FormGraphics.C:36
 # src/frontends/xforms/FormGraphics.C:359
 #: lib/ui/stdtoolbars.inc:433
-#, fuzzy
 msgid "Display fraction\t\\dfrac"
-msgstr "Графика"
+msgstr "Графична дроб\t„\\dfrac“"
 
 #: lib/ui/stdtoolbars.inc:434
 msgid "Continued fraction\t\\cfrac"
-msgstr "Верижна дроб\t\\cfrac"
+msgstr "Верижна дроб\t„\\cfrac“"
 
 #: lib/ui/stdtoolbars.inc:435
 msgid "Continued fraction (left)\t\\cfracleft"
-msgstr "Верижна дроб (лява)\t\\cfracleft"
+msgstr "Верижна дроб (лява)\t„\\cfracleft“"
 
 #: lib/ui/stdtoolbars.inc:436
 msgid "Continued fraction (right)\t\\cfracright"
-msgstr "Верижна дроб (дясна)\t\\cfracright"
+msgstr "Верижна дроб (дясна)\t„\\cfracright“"
 
 #: lib/ui/stdtoolbars.inc:437
 msgid "Binomial\t\\binom"
-msgstr ""
+msgstr "Биномиал\t„\\binom“"
 
 #: lib/ui/stdtoolbars.inc:438
 msgid "Text binomial\t\\tbinom"
@@ -27079,11 +26521,11 @@ msgstr ""
 
 #: lib/ui/stdtoolbars.inc:439
 msgid "Display binomial\t\\dbinom"
-msgstr ""
+msgstr "Графичен биномиал\t„\\dbinom“"
 
 #: lib/ui/stdtoolbars.inc:443
 msgid "Roman\t\\mathrm"
-msgstr "Серифен\t\\mathrm"
+msgstr "Серифен\t„\\mathrm“"
 
 #: lib/ui/stdtoolbars.inc:444
 msgid "Bold\t\\mathbf"
@@ -27167,7 +26609,7 @@ msgstr "iddots"
 # src/ext_l10n.h:219
 #: lib/ui/stdtoolbars.inc:472
 msgid "Frame Decorations"
-msgstr "Украса на рамки"
+msgstr "Матем. изрази"
 
 # src/ext_l10n.h:194
 #: lib/ui/stdtoolbars.inc:473
@@ -27177,21 +26619,21 @@ msgstr "hat"
 # src/frontends/kde/dlg/printdlgdata.C:246
 #: lib/ui/stdtoolbars.inc:474
 msgid "tilde"
-msgstr "tilde"
+msgstr "тилда"
 
 #: lib/ui/stdtoolbars.inc:475
 msgid "bar"
-msgstr "bar"
+msgstr "черта"
 
 # src/LColor.C:56
 #: lib/ui/stdtoolbars.inc:476
 msgid "grave"
-msgstr "grave"
+msgstr "гравис/ударение"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:142
 #: lib/ui/stdtoolbars.inc:477
 msgid "dot"
-msgstr "dot"
+msgstr "точка"
 
 #: lib/ui/stdtoolbars.inc:478
 msgid "check"
@@ -27291,7 +26733,7 @@ msgstr "underleftrightarrow"
 # src/frontends/xforms/FormInset.h:55 src/lyxfunc.C:744
 #: lib/ui/stdtoolbars.inc:501
 msgid "cancel"
-msgstr "cancel"
+msgstr "съкращение"
 
 # src/LyXAction.C:157 src/frontends/kde/FormUrl.C:93
 # src/frontends/kde/paradlg.C:89 src/frontends/xforms/FormBase.h:138
@@ -27299,7 +26741,7 @@ msgstr "cancel"
 # src/frontends/xforms/FormInset.h:55 src/lyxfunc.C:744
 #: lib/ui/stdtoolbars.inc:502
 msgid "bcancel"
-msgstr "bcancel"
+msgstr "обратно съкращение"
 
 # src/LyXAction.C:157 src/frontends/kde/FormUrl.C:93
 # src/frontends/kde/paradlg.C:89 src/frontends/xforms/FormBase.h:138
@@ -27307,7 +26749,7 @@ msgstr "bcancel"
 # src/frontends/xforms/FormInset.h:55 src/lyxfunc.C:744
 #: lib/ui/stdtoolbars.inc:503
 msgid "xcancel"
-msgstr "xcancel"
+msgstr "зачеркване на кръст"
 
 # src/LyXAction.C:157 src/frontends/kde/FormUrl.C:93
 # src/frontends/kde/paradlg.C:89 src/frontends/xforms/FormBase.h:138
@@ -27315,7 +26757,7 @@ msgstr "xcancel"
 # src/frontends/xforms/FormInset.h:55 src/lyxfunc.C:744
 #: lib/ui/stdtoolbars.inc:504
 msgid "cancelto"
-msgstr "cancelto"
+msgstr "съкращение към"
 
 #: lib/ui/stdtoolbars.inc:505
 msgid "Insert left/right side scripts (sideset)"
@@ -27652,7 +27094,7 @@ msgstr "geq"
 
 #: lib/ui/stdtoolbars.inc:594
 msgid "equiv"
-msgstr "equiv"
+msgstr "еквивалентно"
 
 # src/ext_l10n.h:201
 #: lib/ui/stdtoolbars.inc:595
@@ -27820,232 +27262,232 @@ msgstr "lnot"
 
 #: lib/ui/stdtoolbars.inc:637
 msgid "alpha"
-msgstr "alpha"
+msgstr "алфа"
 
 #: lib/ui/stdtoolbars.inc:638
 msgid "beta"
-msgstr "beta"
+msgstr "бета"
 
 # src/ext_l10n.h:271
 #: lib/ui/stdtoolbars.inc:639
 msgid "gamma"
-msgstr "gamma"
+msgstr "гама"
 
 # src/frontends/xforms/form_graphics.C:61
 # src/frontends/xforms/form_graphics.C:82 src/lyxfont.C:411
 #: lib/ui/stdtoolbars.inc:640
 msgid "delta"
-msgstr "delta"
+msgstr "делта"
 
 # src/lyxfunc.C:1125
 #: lib/ui/stdtoolbars.inc:641
 msgid "epsilon"
-msgstr "epsilon"
+msgstr "епсилон"
 
 #: lib/ui/stdtoolbars.inc:642
 msgid "varepsilon"
-msgstr "varepsilon"
+msgstr "епсилон сърповиден"
 
 #: lib/ui/stdtoolbars.inc:643
 msgid "zeta"
-msgstr "zeta"
+msgstr "зета"
 
 # src/ext_l10n.h:451
 #: lib/ui/stdtoolbars.inc:644
 msgid "eta"
-msgstr "eta"
+msgstr "ета"
 
 # src/LColor.C:63
 #: lib/ui/stdtoolbars.inc:645
 msgid "theta"
-msgstr "theta"
+msgstr "тета"
 
 # src/mathed/math_panel.C:134
 #: lib/ui/stdtoolbars.inc:646
 msgid "vartheta"
-msgstr "vartheta"
+msgstr "тета символ"
 
 # src/ext_l10n.h:362
 #: lib/ui/stdtoolbars.inc:647
 msgid "iota"
-msgstr "iota"
+msgstr "йота"
 
 #: lib/ui/stdtoolbars.inc:648
 msgid "kappa"
-msgstr "kappa"
+msgstr "капа"
 
 #: lib/ui/stdtoolbars.inc:649
 msgid "lambda"
-msgstr "lambda"
+msgstr "ламбда"
 
 #: lib/ui/stdtoolbars.inc:650
 msgid "mu"
-msgstr "mu"
+msgstr "мю"
 
 #: lib/ui/stdtoolbars.inc:651
 msgid "nu"
-msgstr "nu"
+msgstr "ню"
 
 # src/LColor.C:63
 #: lib/ui/stdtoolbars.inc:652
 msgid "xi"
-msgstr "xi"
+msgstr "кси"
 
 #: lib/ui/stdtoolbars.inc:653
 msgid "pi"
-msgstr "pi"
+msgstr "пи"
 
 #: lib/ui/stdtoolbars.inc:654
 msgid "varpi"
-msgstr "varpi"
+msgstr "пи символ"
 
 #: lib/ui/stdtoolbars.inc:655
 msgid "rho"
-msgstr "rho"
+msgstr "ро"
 
 # src/LColor.C:92
 #: lib/ui/stdtoolbars.inc:656
 msgid "varrho"
-msgstr "varrho"
+msgstr "ро символ"
 
 #: lib/ui/stdtoolbars.inc:657
 msgid "sigma"
-msgstr "sigma"
+msgstr "сигма"
 
 #: lib/ui/stdtoolbars.inc:658
 msgid "varsigma"
-msgstr "varsigma"
+msgstr "сигма в края"
 
 # src/ext_l10n.h:362
 #: lib/ui/stdtoolbars.inc:659
 msgid "tau"
-msgstr "tau"
+msgstr "тав"
 
 # src/ext_l10n.h:323
 #: lib/ui/stdtoolbars.inc:660
 msgid "upsilon"
-msgstr "upsilon"
+msgstr "ипсилон"
 
 #: lib/ui/stdtoolbars.inc:661
 msgid "phi"
-msgstr "phi"
+msgstr "фи"
 
 #: lib/ui/stdtoolbars.inc:662
 msgid "varphi"
-msgstr "varphi"
+msgstr "фи символ"
 
 #: lib/ui/stdtoolbars.inc:663
 msgid "chi"
-msgstr "chi"
+msgstr "хи"
 
 #: lib/ui/stdtoolbars.inc:664
 msgid "psi"
-msgstr "psi"
+msgstr "пси"
 
 # src/frontends/xforms/form_preferences.C:105 src/lyxfont.C:42
 #: lib/ui/stdtoolbars.inc:665
 msgid "omega"
-msgstr "omega"
+msgstr "омега"
 
 # src/ext_l10n.h:271
 #: lib/ui/stdtoolbars.inc:666
 msgid "Gamma"
-msgstr "Gamma"
+msgstr "Гама"
 
 # src/frontends/xforms/form_preferences.C:600
 # src/frontends/xforms/form_preferences.C:687
 #: lib/ui/stdtoolbars.inc:667
 msgid "Delta"
-msgstr "Delta"
+msgstr "Делта"
 
 # src/LColor.C:63
 #: lib/ui/stdtoolbars.inc:668
 msgid "Theta"
-msgstr "Theta"
+msgstr "Тета"
 
 # src/frontends/xforms/form_preferences.C:920
 #: lib/ui/stdtoolbars.inc:669
 msgid "Lambda"
-msgstr "Lambda"
+msgstr "Ламбда"
 
 #: lib/ui/stdtoolbars.inc:670
 msgid "Xi"
-msgstr "Xi"
+msgstr "Хи"
 
 #: lib/ui/stdtoolbars.inc:671
 msgid "Pi"
-msgstr "Pi"
+msgstr "Пи"
 
 # src/lyxfont.C:56
 #: lib/ui/stdtoolbars.inc:672
 msgid "Sigma"
-msgstr "Sigma"
+msgstr "Сигма"
 
 #: lib/ui/stdtoolbars.inc:673
 msgid "Upsilon"
-msgstr "Upsilon"
+msgstr "Ипсилон"
 
 #: lib/ui/stdtoolbars.inc:674
 msgid "Phi"
-msgstr "Phi"
+msgstr "Фи"
 
 #: lib/ui/stdtoolbars.inc:675
 msgid "Psi"
-msgstr "Psi"
+msgstr "Пси"
 
 #: lib/ui/stdtoolbars.inc:676
 msgid "Omega"
-msgstr "Omega"
+msgstr "Омега"
 
 # src/ext_l10n.h:271
 #: lib/ui/stdtoolbars.inc:677
 msgid "varGamma"
-msgstr "varGamma"
+msgstr "Гама символ"
 
 # src/frontends/xforms/form_preferences.C:600
 # src/frontends/xforms/form_preferences.C:687
 #: lib/ui/stdtoolbars.inc:678
 msgid "varDelta"
-msgstr "varDelta"
+msgstr "Делта символ"
 
 # src/mathed/math_panel.C:134
 #: lib/ui/stdtoolbars.inc:679
 msgid "varTheta"
-msgstr "varTheta"
+msgstr "Тета символ"
 
 # src/frontends/xforms/form_preferences.C:920
 #: lib/ui/stdtoolbars.inc:680
 msgid "varLambda"
-msgstr "varLambda"
+msgstr "Ламбда символ"
 
 #: lib/ui/stdtoolbars.inc:681
 msgid "varXi"
-msgstr "varXi"
+msgstr "Хи символ"
 
 #: lib/ui/stdtoolbars.inc:682
 msgid "varPi"
-msgstr "varpi"
+msgstr "Пи символ"
 
 #: lib/ui/stdtoolbars.inc:683
 msgid "varSigma"
-msgstr "varsigma"
+msgstr "Сигма символ"
 
 #: lib/ui/stdtoolbars.inc:684
 msgid "varUpsilon"
-msgstr "varepsilon"
+msgstr "Епсилон символ"
 
 #: lib/ui/stdtoolbars.inc:685
 msgid "varPhi"
-msgstr "varphi"
+msgstr "Фи символ"
 
 # src/frontends/xforms/form_document.C:98
 #: lib/ui/stdtoolbars.inc:686
 msgid "varPsi"
-msgstr "varPsi"
+msgstr "Пси символ"
 
 #: lib/ui/stdtoolbars.inc:687
 msgid "varOmega"
-msgstr "varOmega"
+msgstr "Омега символ"
 
 # src/frontends/xforms/FormTabular.C:133
 #: lib/ui/stdtoolbars.inc:691
@@ -28060,11 +27502,11 @@ msgstr "partial"
 # src/lyxfont.C:56
 #: lib/ui/stdtoolbars.inc:693
 msgid "infty"
-msgstr "infty"
+msgstr "безкрайност"
 
 #: lib/ui/stdtoolbars.inc:694
 msgid "prime"
-msgstr "prime"
+msgstr "просто"
 
 # src/frontends/xforms/FormTabular.C:131
 #: lib/ui/stdtoolbars.inc:695
@@ -28898,11 +28340,11 @@ msgstr "бележка"
 
 #: lib/ui/stdtoolbars.inc:895
 msgid "female"
-msgstr ""
+msgstr "мъж"
 
 #: lib/ui/stdtoolbars.inc:896
 msgid "male"
-msgstr ""
+msgstr "жена"
 
 # src/frontends/kde/paraextradlg.C:25 src/lyxfont.C:56
 #: lib/ui/stdtoolbars.inc:897
@@ -28920,20 +28362,19 @@ msgstr ""
 
 #: lib/ui/stdtoolbars.inc:900
 msgid "fullmoon"
-msgstr ""
+msgstr "пълнолуние"
 
 #: lib/ui/stdtoolbars.inc:901
 msgid "newmoon"
-msgstr ""
+msgstr "новолуние"
 
 #: lib/ui/stdtoolbars.inc:902
-#, fuzzy
 msgid "leftmoon"
-msgstr "leftharpoonup"
+msgstr "луна наляво"
 
 #: lib/ui/stdtoolbars.inc:903
 msgid "rightmoon"
-msgstr "rightmoon"
+msgstr "луна надясно"
 
 # src/ext_l10n.h:274
 #: lib/ui/stdtoolbars.inc:904
@@ -28943,101 +28384,96 @@ msgstr "Списък"
 
 #: lib/ui/stdtoolbars.inc:905
 msgid "mercury"
-msgstr ""
+msgstr "Меркурий"
 
 #: lib/ui/stdtoolbars.inc:906
 msgid "venus"
-msgstr ""
+msgstr "Венера"
 
 # src/mathed/math_panel.C:134
 #: lib/ui/stdtoolbars.inc:907
 msgid "earth"
-msgstr "earth"
+msgstr "Земя"
 
 #: lib/ui/stdtoolbars.inc:908
 msgid "mars"
-msgstr ""
+msgstr "Марс"
 
 # src/frontends/xforms/FormPreferences.C:269
 #: lib/ui/stdtoolbars.inc:909
-#, fuzzy
 msgid "jupiter"
-msgstr "Принтер"
+msgstr "Юпитер"
 
 # src/ext_l10n.h:351
 #: lib/ui/stdtoolbars.inc:910
-#, fuzzy
 msgid "saturn"
-msgstr "natural"
+msgstr "Сатурн"
 
 #: lib/ui/stdtoolbars.inc:911
 msgid "uranus"
-msgstr ""
+msgstr "Уран"
 
 #: lib/ui/stdtoolbars.inc:912
 msgid "neptune"
-msgstr ""
+msgstr "Нептун"
 
 #: lib/ui/stdtoolbars.inc:913
 msgid "pluto"
-msgstr ""
+msgstr "Плутон"
 
 # src/layout_forms.C:28
 #: lib/ui/stdtoolbars.inc:914
-#, fuzzy
 msgid "aries"
-msgstr "Серия(S):|#S"
+msgstr "Овен"
 
 #: lib/ui/stdtoolbars.inc:915
 msgid "taurus"
-msgstr ""
+msgstr "Телец"
 
 #: lib/ui/stdtoolbars.inc:916
 msgid "gemini"
-msgstr ""
+msgstr "Близнаци"
 
 # src/LyXAction.C:157 src/frontends/kde/FormUrl.C:93
 # src/frontends/kde/paradlg.C:89 src/frontends/xforms/FormBase.h:138
 # src/frontends/xforms/FormBase.h:153 src/frontends/xforms/FormInset.h:31
 # src/frontends/xforms/FormInset.h:55 src/lyxfunc.C:744
 #: lib/ui/stdtoolbars.inc:917
-#, fuzzy
 msgid "cancer"
-msgstr "Отказ"
+msgstr "Рак"
 
 # src/frontends/kde/FormRef.C:103
 #: lib/ui/stdtoolbars.inc:918
-#, fuzzy
 msgid "leo"
-msgstr "log"
+msgstr "Лъв"
 
 #: lib/ui/stdtoolbars.inc:919
 msgid "virgo"
-msgstr ""
+msgstr "Дева"
 
 #: lib/ui/stdtoolbars.inc:920
 msgid "libra"
-msgstr ""
+msgstr "Везни"
 
 #: lib/ui/stdtoolbars.inc:921
 msgid "scorpio"
-msgstr ""
+msgstr "Скорпион"
 
 #: lib/ui/stdtoolbars.inc:922
 msgid "sagittarius"
-msgstr ""
+msgstr "Стрелец"
 
 #: lib/ui/stdtoolbars.inc:923
 msgid "capricornus"
-msgstr ""
+msgstr "Козирог"
 
 #: lib/ui/stdtoolbars.inc:924
 msgid "aquarius"
-msgstr ""
+msgstr "Водолей"
 
 #: lib/ui/stdtoolbars.inc:925
 msgid "pisces"
-msgstr ""
+msgstr "Риби"
 
 #: lib/ui/stdtoolbars.inc:928
 msgid "APLbox"
@@ -29251,21 +28687,20 @@ msgstr "multimap"
 # src/ext_l10n.h:74
 #: lib/ui/stdtoolbars.inc:982
 msgid "shortleftarrow"
-msgstr "shortleftarrow"
+msgstr "къса стрелка наляво"
 
 #: lib/ui/stdtoolbars.inc:983
 msgid "shortrightarrow"
-msgstr "shortrightarrow"
+msgstr "къса стрелка надясно"
 
 # src/LColor.C:92
 #: lib/ui/stdtoolbars.inc:984
 msgid "shortuparrow"
-msgstr "shortuparrow"
+msgstr "къса стрелка нагоре"
 
 #: lib/ui/stdtoolbars.inc:985
-#, fuzzy
 msgid "shortdownarrow"
-msgstr "downarrow"
+msgstr "къса стрелка надолу"
 
 #: lib/ui/stdtoolbars.inc:986
 #, fuzzy
@@ -31041,7 +30476,7 @@ msgstr ""
 #: lib/ui/stdtoolbars.inc:1453
 #, fuzzy
 msgid "Advanced"
-msgstr "(&C)Отказ"
+msgstr "Отказ"
 
 #: lib/ui/stdtoolbars.inc:1454
 msgid "Retracted"
@@ -31187,9 +30622,8 @@ msgstr ""
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
 #: lib/ui/stdtoolbars.inc:1488
-#, fuzzy
 msgid "Rising (accent)"
-msgstr "Липсващ аргумент"
+msgstr "Повишаващ (аксант)"
 
 # src/ext_l10n.h:102
 #: lib/ui/stdtoolbars.inc:1489
@@ -31344,9 +30778,8 @@ msgstr ""
 
 # src/frontends/kde/dlg/printdlgdata.C:42
 #: lib/xtemplates/pdfpages.xtemplate:13
-#, fuzzy
 msgid "PDFPages"
-msgstr "Страници"
+msgstr "Страници от PDF"
 
 # src/frontends/kde/dlg/printdlgdata.C:42
 #: lib/xtemplates/pdfpages.xtemplate:14 lib/xtemplates/pdfpages.xtemplate:28
@@ -31354,7 +30787,6 @@ msgid "PDF pages"
 msgstr "Страница от PDF"
 
 #: lib/xtemplates/pdfpages.xtemplate:16
-#, fuzzy
 msgid ""
 "Includes PDF documents, using the 'pdfpages' package.\n"
 "To include multiple pages, use the 'pages'-option,\n"
@@ -31368,11 +30800,23 @@ msgid ""
 "inserted in their original size.\n"
 "Read the documentation of the pdfpages package\n"
 "for further options and details.\n"
-msgstr "Импортира PDF документ използвайки „pdfpages“ пакета."
+msgstr ""
+"Включва PDF документи използвайки пакета „pdfpages“\n."
+"За вмъкване на повече страници се използва опцията „pages“,"
+"която трябва се зазаде в „Опции“.\n"
+"Пример:\n"
+"* pages={x,y}   - за поредни страници\n"
+"* pages={x,y,z} - за единични страници\n"
+"* pages=-       - включва всички страници\n"
+"* pages=last-1  - включва всички страници в обратен ред\n"
+"С опцията „noautoscale“ страниците се включват с технитe\n"
+"първоначални размери\n"
+"За повече информация и настройки се обърнете към документацията "
+"на пакета pdfpages.\n"
 
 #: lib/xtemplates/raster_image.xtemplate:14
 msgid "RasterImage"
-msgstr ""
+msgstr "Растерно изображение"
 
 # src/lyx_gui_misc.C:430
 #: lib/xtemplates/raster_image.xtemplate:17
@@ -31385,13 +30829,14 @@ msgid ""
 "A bitmap file.\n"
 "Use this template to include bitmap images of any kind.\n"
 msgstr ""
+"Файл с растерно изображение.\n"
+"Този шаблон се използва за вмъкване на растерни графики от произволен тип.\n"
 
 # src/frontends/xforms/FormGraphics.C:36
 # src/frontends/xforms/FormGraphics.C:359
 #: lib/xtemplates/vector_graphics.xtemplate:14
-#, fuzzy
 msgid "VectorGraphics"
-msgstr "Графика"
+msgstr "Векторна графика"
 
 # src/frontends/kde/printdlg.C:35
 #: lib/xtemplates/vector_graphics.xtemplate:15
@@ -31409,6 +30854,13 @@ msgid ""
 "The specialized templates allow to automatically use the document font in\n"
 "the figures, which is not possible with this general template.\n"
 msgstr ""
+"Файл с векторно изображение.\n"
+"Този шаблон се използва за вмъкване на векторна графика от произволен\n"
+"вид, като LyX ще се опита за запази качествата на изображението в\n"
+"изходния резултат. Напомняме, че съществуват специални шаблони за\n"
+"изображения на Xfig и диаграми Dia. Специализираните шаблони позволяват\n"
+"автоматично използване на шрифтове от документа във фигурите, което не е\n"
+"възможно с този общ шаблон.\n"
 
 # src/ext_l10n.h:244
 #: lib/xtemplates/xfig.xtemplate:33
@@ -31422,9 +30874,8 @@ msgstr "Изображение на Xfig"
 
 # src/lyx_cb.C:977
 #: lib/xtemplates/xfig.xtemplate:36
-#, fuzzy
 msgid "An Xfig figure.\n"
-msgstr "Стартирам конфигуриране..."
+msgstr "Изображение на Xfig.\n"
 
 # src/frontends/kde/dlg/paraextradlgdata.C:142
 #: lib/configure.py:710
@@ -31432,9 +30883,8 @@ msgid "tgo"
 msgstr "tgo"
 
 #: lib/configure.py:710
-#, fuzzy
 msgid "tgo|Tgif"
-msgstr "Tgif"
+msgstr "tgo|Tgif"
 
 #: lib/configure.py:713
 msgid "FIG"
@@ -31446,13 +30896,12 @@ msgstr "DIA"
 
 #: lib/configure.py:719
 msgid "sxd"
-msgstr ""
+msgstr "sxd"
 
 # src/lyxfunc.C:2761
 #: lib/configure.py:719
-#, fuzzy
 msgid "sxd|OpenDocument"
-msgstr "OpenDocument"
+msgstr "sxd|OpenDocument"
 
 # src/frontends/xforms/form_graphics.C:96
 #: lib/configure.py:722
@@ -31465,11 +30914,11 @@ msgstr "FEN"
 
 #: lib/configure.py:728
 msgid "SVG"
-msgstr ""
+msgstr "SVG"
 
 #: lib/configure.py:729
 msgid "SVG (compressed)"
-msgstr ""
+msgstr "SVG (компресиран)"
 
 #: lib/configure.py:732
 msgid "BMP"
@@ -31481,12 +30930,11 @@ msgstr "GIF"
 
 #: lib/configure.py:734
 msgid "jpeg"
-msgstr ""
+msgstr "jpeg"
 
 #: lib/configure.py:734
-#, fuzzy
 msgid "jpeg|JPEG"
-msgstr "JPEG"
+msgstr "jpeg|JPEG"
 
 #: lib/configure.py:735
 msgid "PBM"
@@ -31521,9 +30969,8 @@ msgid "Plain text (chess output)"
 msgstr ""
 
 #: lib/configure.py:753
-#, fuzzy
 msgid "DocBook 5"
-msgstr "DocBook"
+msgstr "DocBook 5"
 
 # src/frontends/xforms/FormGraphics.C:36
 # src/frontends/xforms/FormGraphics.C:359
@@ -31538,7 +30985,7 @@ msgstr "LaTeX (dviluatex)"
 
 #: lib/configure.py:756
 msgid "ePub"
-msgstr ""
+msgstr "ePub"
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/configure.py:757
@@ -31557,35 +31004,30 @@ msgstr "NoWeb|N"
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/configure.py:760
-#, fuzzy
 msgid "Sweave (Japanese)"
-msgstr "допълнителни опции"
+msgstr "Sweave (японски)"
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/configure.py:760
-#, fuzzy
 msgid "Sweave (Japanese)|S"
-msgstr "допълнителни опции"
+msgstr "Sweave (японски)"
 
 # src/ext_l10n.h:201
 #: lib/configure.py:761
-#, fuzzy
 msgid "R/S code"
-msgstr "Код"
+msgstr "R/S код"
 
 #: lib/configure.py:763
-#, fuzzy
 msgid "Rnw (knitr, Japanese)"
-msgstr "Rnw (knitr)"
+msgstr "Rnw (knitr, японски)"
 
 #: lib/configure.py:764
 msgid "LilyPond book (LaTeX)"
-msgstr ""
+msgstr "Книга LilyPond (LaTeX)"
 
 #: lib/configure.py:765
-#, fuzzy
 msgid "LilyPond book (pLaTeX)"
-msgstr "LilyPond"
+msgstr "Книга LilyPond (pLaTeX)"
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/configure.py:766
@@ -31693,7 +31135,7 @@ msgid "LyXHTML|y"
 msgstr "LyXHTML"
 
 # src/ext_l10n.h:126
-#: lib/configure.py:797 src/frontends/qt/GuiLog.cpp:242
+#: lib/configure.py:797 src/frontends/qt/GuiLog.cpp:289
 #: src/insets/InsetBibtex.cpp:148
 msgid "BibTeX"
 msgstr "BibTeX"
@@ -31874,7 +31316,7 @@ msgid "Table (CSV)"
 msgstr "Таблица (CSV)"
 
 # src/frontends/kde/FormPrint.C:118
-#: lib/configure.py:856 src/frontends/qt/GuiView.cpp:1486
+#: lib/configure.py:856 src/frontends/qt/GuiView.cpp:1655
 #: src/mathed/InsetMathMacroTemplate.cpp:538
 msgid "LyX"
 msgstr "LyX"
@@ -31965,39 +31407,37 @@ msgstr ""
 msgid "LyXBlogger"
 msgstr ""
 
-#: lib/configure.py:1248
+#: lib/configure.py:1250
 msgid "gnuplot"
-msgstr ""
+msgstr "gnuplot"
 
-#: lib/configure.py:1248
+#: lib/configure.py:1250
 msgid "gnuplot|Gnuplot"
-msgstr ""
+msgstr "gnuplot|Gnuplot"
 
-#: lib/configure.py:1325
+#: lib/configure.py:1350
 msgid "LyX Archive (zip)"
-msgstr ""
+msgstr "LyX архив (zip)"
 
-#: lib/configure.py:1328
+#: lib/configure.py:1353
 msgid "LyX Archive (tar.gz)"
-msgstr "LyX Archive (tar.gz)"
+msgstr "LyX архив (tar.gz)"
 
 # src/ext_l10n.h:288 src/frontends/gnome/FormUrl.C:119
 #: lib/examples/Articles:0
-#, fuzzy
-msgid "Game 2"
-msgstr "Game"
+msgid "Game 1"
+msgstr "Игра 1"
 
 # src/ext_l10n.h:288 src/frontends/gnome/FormUrl.C:119
 #: lib/examples/Articles:0
-#, fuzzy
-msgid "Game 1"
-msgstr "Game"
+msgid "Game 2"
+msgstr "Игра 2"
 
 # src/ext_l10n.h:232
 #: lib/examples/Articles:0
 #, fuzzy
 msgid "Example (LyXified)"
-msgstr "&Примерни файлове:"
+msgstr ""
 
 # src/ext_l10n.h:232
 #: lib/examples/Articles:0
@@ -32007,7 +31447,7 @@ msgstr "Пример"
 
 #: lib/examples/Articles:0
 msgid "Gnuplot"
-msgstr ""
+msgstr "Gnuplot"
 
 # src/ext_l10n.h:94
 #: lib/examples/Articles:0 src/TocBackend.cpp:299
@@ -32015,6 +31455,15 @@ msgstr ""
 msgid "External Material"
 msgstr "Материал външен формат"
 
+#: lib/examples/Articles:0
+msgid "Feynman Diagrams"
+msgstr "Файнман диаграми"
+
+#: lib/examples/Articles:0
+#, fuzzy
+msgid "Instant Preview"
+msgstr "Непосредствен прадварителен преглед"
+
 # src/LyXAction.C:251
 #: lib/examples/Articles:0
 #, fuzzy
@@ -32027,16 +31476,6 @@ msgstr "Изброяване с водещи знаци"
 msgid "Minted File Listing"
 msgstr "&В реда"
 
-#: lib/examples/Articles:0
-#, fuzzy
-msgid "Feynman Diagrams"
-msgstr "Файнман диаграма|Ф"
-
-#: lib/examples/Articles:0
-#, fuzzy
-msgid "Instant Preview"
-msgstr "Непосредствен прадварителен преглед:"
-
 # src/ext_l10n.h:244
 #: lib/examples/Articles:0
 #, fuzzy
@@ -32063,19 +31502,19 @@ msgstr "&Графичен драйвер"
 # src/ext_l10n.h:362
 #: lib/examples/Articles:0
 #, fuzzy
-msgid "Serial Letter 3"
+msgid "Serial Letter 1"
 msgstr "Държава"
 
 # src/ext_l10n.h:362
 #: lib/examples/Articles:0
 #, fuzzy
-msgid "Serial Letter 1"
+msgid "Serial Letter 2"
 msgstr "Държава"
 
 # src/ext_l10n.h:362
 #: lib/examples/Articles:0
 #, fuzzy
-msgid "Serial Letter 2"
+msgid "Serial Letter 3"
 msgstr "Държава"
 
 # src/form1.C:165
@@ -32085,9 +31524,14 @@ msgid "Localization Test"
 msgstr "Ротация"
 
 #: lib/examples/Articles:0
-msgid "Noweb Listerrors"
+msgid "Hazard and Precautionary Statements"
 msgstr ""
 
+#: lib/examples/Articles:0
+#, fuzzy
+msgid "LilyPond Book"
+msgstr "LilyPond"
+
 # src/frontends/xforms/form_preferences.C:926
 #: lib/examples/Articles:0
 #, fuzzy
@@ -32101,36 +31545,30 @@ msgid "Noweb2LyX"
 msgstr "NoWeb"
 
 #: lib/examples/Articles:0
-msgid "Hazard and Precautionary Statements"
+msgid "Noweb Listerrors"
 msgstr ""
 
-#: lib/examples/Articles:0
-#, fuzzy
-msgid "LilyPond Book"
-msgstr "LilyPond"
-
 # src/frontends/kde/dlg/paraextradlgdata.C:155
-#: lib/examples/Articles:0 src/frontends/qt/GuiDocument.cpp:1761
+#: lib/examples/Articles:0 src/frontends/qt/GuiDocument.cpp:1775
 msgid "Modules"
 msgstr "Модули"
 
-# src/frontends/xforms/form_preferences.C:920
+# src/ext_l10n.h:136
 #: lib/examples/Articles:0
 #, fuzzy
-msgid "Foils Landslide"
-msgstr "пейзаж"
+msgid "Beamer (Complex)"
+msgstr "Бележка(N)|N"
 
 # src/frontends/kde/dlg/printdlgdata.C:246
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "Foils"
-msgstr "(&F)Файл"
+msgstr "Обтекаеми профили"
 
-# src/ext_l10n.h:136
+# src/frontends/xforms/form_preferences.C:920
 #: lib/examples/Articles:0
 #, fuzzy
-msgid "Beamer (Complex)"
-msgstr "Бележка(N)|N"
+msgid "Foils Landslide"
+msgstr "пейзаж"
 
 # src/minibuffer.C:46 src/minibuffer.C:244
 #: lib/examples/Articles:0
@@ -32141,25 +31579,31 @@ msgstr "Добре дошли в LyX!"
 # src/frontends/xforms/form_preferences.C:926
 #: lib/examples/Articles:0
 #, fuzzy
-msgid "Multilingual Typesetting with platex"
+msgid "Multilingual Typesetting with CJKutf8"
 msgstr "допълнителни опции"
 
 # src/frontends/xforms/form_preferences.C:926
 #: lib/examples/Articles:0
 #, fuzzy
-msgid "Multilingual Typesetting with CJKutf8"
+msgid "Multilingual Typesetting with platex"
 msgstr "допълнителни опции"
 
+#: lib/examples/Articles:0
+#, fuzzy
+msgid "Hebrew Article (KOMA-Script)"
+msgstr "Статия за прожектор KOMA-скрипт"
+
 # src/ext_l10n.h:400
 #: lib/examples/Articles:0
 #, fuzzy
 msgid "IEEE Transactions Conference"
 msgstr "Преход"
 
+# src/ext_l10n.h:400
 #: lib/examples/Articles:0
 #, fuzzy
-msgid "Hebrew Article (KOMA-Script)"
-msgstr "Статия за прожектор KOMA-скрипт"
+msgid "IEEE Transactions Journal"
+msgstr "Преход"
 
 # src/mathed/math_panel.C:134
 #: lib/examples/Articles:0
@@ -32171,165 +31615,138 @@ msgstr "Матрица"
 msgid "Springers Global Journal Template (V. 3)"
 msgstr ""
 
-# src/ext_l10n.h:400
+# src/lyxfunc.C:1105 src/lyxfunc.C:2550
 #: lib/examples/Articles:0
-#, fuzzy
-msgid "IEEE Transactions Journal"
-msgstr "Преход"
+msgid "00 Main File"
+msgstr "00 Главен файл"
 
-# src/ext_l10n.h:329
+# src/ext_l10n.h:219
 #: lib/examples/Articles:0
-#, fuzzy
-msgid "11 References"
-msgstr "Препратки"
+msgid "01 Dedication"
+msgstr "01 Посвещение"
 
 # src/ext_l10n.h:262 src/frontends/gnome/FormIndex.C:89
 # src/frontends/xforms/form_index.C:28
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "02 Foreword"
-msgstr "Ключова дума"
-
-# src/frontends/gnome/FormToc.C:108 src/frontends/gnome/FormToc.C:185
-# src/frontends/kde/FormToc.C:177 src/frontends/kde/FormToc.C:178
-# src/frontends/kde/tocdlg.C:30 src/insets/insettoc.C:28
-#: lib/examples/Articles:0
-#, fuzzy
-msgid "05 Contributor List"
-msgstr "Списък на таблици"
+msgstr "02 Предговор"
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
 #: lib/examples/Articles:0
-#, fuzzy
-msgid "07 Part"
-msgstr "Част"
+msgid "03 Preface"
+msgstr "03 Корица"
 
 # src/ext_l10n.h:202
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "04 Acknowledgements"
-msgstr "complement"
+msgstr "04 Благодарности"
+
+# src/frontends/gnome/FormToc.C:108 src/frontends/gnome/FormToc.C:185
+# src/frontends/kde/FormToc.C:177 src/frontends/kde/FormToc.C:178
+# src/frontends/kde/tocdlg.C:30 src/insets/insettoc.C:28
+#: lib/examples/Articles:0
+msgid "05 Contributor List"
+msgstr "05 Списък със сътрудници"
 
 #: lib/examples/Articles:0
 msgid "06 Acronym"
-msgstr ""
+msgstr "06 Съкращения"
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
 #: lib/examples/Articles:0
-#, fuzzy
-msgid "03 Preface"
-msgstr "Залепи"
+msgid "07 Part"
+msgstr "07 Част"
 
 # src/ext_l10n.h:175
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "08 Author"
-msgstr "Автор"
-
-# src/ext_l10n.h:219
-#: lib/examples/Articles:0
-#, fuzzy
-msgid "01 Dedication"
-msgstr "Посвещение"
+msgstr "08 Автор"
 
 # src/ext_l10n.h:174
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "09 Appendix"
-msgstr "приложение"
+msgstr "09 Приложение"
 
-# src/lyxfunc.C:1105 src/lyxfunc.C:2550
 #: lib/examples/Articles:0
-#, fuzzy
-msgid "00 Main File"
-msgstr "Липсващ аргумент"
+msgid "10 Glossary"
+msgstr "10 Речник"
 
+# src/ext_l10n.h:329
 #: lib/examples/Articles:0
-msgid "10 Glossary"
-msgstr ""
+msgid "11 References"
+msgstr "11 Препратки"
 
 #: lib/examples/Articles:0
-msgid "09 Glossary"
-msgstr ""
+msgid "05 Acronym"
+msgstr "05 Съкращения"
 
 # src/BufferView2.C:601 src/LyXAction.C:346 src/MenuBackend.C:433
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "06 Part"
-msgstr "Част"
-
-#: lib/examples/Articles:0
-msgid "05 Acronym"
-msgstr ""
+msgstr "06 Част"
 
-# src/ext_l10n.h:357
+# src/ext_l10n.h:194
 #: lib/examples/Articles:0
-msgid "10 Solutions"
-msgstr "10 Решения"
+msgid "07 Chapter"
+msgstr "07 Глава"
 
 # src/ext_l10n.h:174
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "08 Appendix"
-msgstr "приложение"
+msgstr "08 Приложение"
 
-# src/ext_l10n.h:194
 #: lib/examples/Articles:0
-#, fuzzy
-msgid "07 Chapter"
-msgstr "Глава"
+msgid "09 Glossary"
+msgstr "09 Речник"
+
+# src/ext_l10n.h:357
+#: lib/examples/Articles:0
+msgid "10 Solutions"
+msgstr "10 Решения"
 
 # src/frontends/xforms/FormPreferences.C:244
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "Colored"
-msgstr "Цвят"
+msgstr "Цветен"
 
 # src/LColor.C:91
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "Simple"
-msgstr "Обикновена автобиография"
-
-# src/lyxfunc.C:1105 src/lyxfunc.C:2550
-#: lib/examples/Articles:0
-#, fuzzy
-msgid "Main File"
-msgstr "Липсващ аргумент"
+msgstr "Обикновен"
 
 # src/ext_l10n.h:194
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "Chapter 1"
-msgstr "Глава"
+msgstr "Глава 1"
 
 # src/ext_l10n.h:194
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "Chapter 2"
-msgstr "Глава"
+msgstr "Глава 2"
+
+# src/lyxfunc.C:1105 src/lyxfunc.C:2550
+#: lib/examples/Articles:0
+msgid "Main File"
+msgstr "Главен файл"
 
 #: lib/examples/Articles:0
 msgid "PhD Thesis"
-msgstr ""
+msgstr "Докторска дисертация"
 
 # src/ext_l10n.h:390
 #: lib/examples/Articles:0
-#, fuzzy
 msgid "Theses"
-msgstr "Синонимен речник"
+msgstr "Дисертация"
 
 # src/LColor.C:84
 #: lib/tabletemplates/Formal_with_Footline.lyx:0
-#, fuzzy
 msgid "Formal with Footline"
-msgstr "ред на мат. израз"
+msgstr "формален, с горен и долен ред"
 
 # src/ext_l10n.h:187
 #: lib/tabletemplates/Formal_with_Footline.lyx:0
-#, fuzzy
 msgid "Formal without Footline"
-msgstr "Биография без снимка"
+msgstr "формален, само с горен ред"
 
 #: lib/tabletemplates/Formal_with_Footline.lyx:0
 msgid "Grid with Head"
@@ -32358,74 +31775,69 @@ msgstr "ГРЕШКА!"
 
 # src/mathed/formula.C:926
 #: src/BiblioInfo.cpp:1395
-#, fuzzy
 msgid "No year"
-msgstr "Без номериране"
+msgstr "Без година"
 
 # src/ext_l10n.h:186
 #: src/BiblioInfo.cpp:1405
-#, fuzzy
 msgid "Bibliography entry not found!"
-msgstr "Запис от лит. списък не е намерен!"
+msgstr "Запис от лит. списък не е открит!"
 
 #: src/Buffer.cpp:447
 msgid "Disk Error: "
-msgstr ""
+msgstr "Дискова грешка: "
 
 # src/support/filetools.C:453
 #: src/Buffer.cpp:448
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "LyX could not create the temporary directory '%1$s' (Disk is full maybe?)"
-msgstr "Грешка! Не мога да създам временна директория: "
+msgstr "LyX не успя да създаде временна директория „%1$s“. Може да няма свободно пространство."
 
 #: src/Buffer.cpp:577
 msgid "LyX attempted to close a document that had unsaved changes!\n"
-msgstr ""
+msgstr "LyX опита да затвори документ, които има незапазени промени!\n"
 
 # src/bufferlist.C:332
-#: src/Buffer.cpp:581 src/Buffer.cpp:1665
-#, fuzzy
+#: src/Buffer.cpp:581 src/Buffer.cpp:1666
 msgid "Save failed! Document is lost."
-msgstr "  Записът пропадна! Документът е загубен."
+msgstr "Записът пропадна! Документът е загубен."
 
 # src/bufferlist.C:289
 #: src/Buffer.cpp:583
-#, fuzzy
 msgid "Attempting to close changed document!"
-msgstr "LyX: Опит за запазване на докумнета %s като..."
+msgstr "Опит за затваряне на променен документ!"
 
 # src/support/filetools.C:453
 #: src/Buffer.cpp:592
-#, fuzzy, c-format
+#, c-format
 msgid "Could not remove the temporary directory %1$s"
-msgstr "Грешка! Не мога да създам временна директория: "
+msgstr "Неуспех при премахване на временна директория %1$s"
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
-#: src/Buffer.cpp:998 src/Text.cpp:572
-#, fuzzy, c-format
+#: src/Buffer.cpp:999 src/Text.cpp:572
+#, c-format
 msgid "Unknown token: %1$s %2$s\n"
-msgstr "Непознато действие"
+msgstr "Непознато израз: %1$s %2$s\n"
 
 # src/frontends/xforms/FormError.C:26
-#: src/Buffer.cpp:1002 src/Buffer.cpp:1008 src/Buffer.cpp:1032
-#, fuzzy
+#: src/Buffer.cpp:1003 src/Buffer.cpp:1009 src/Buffer.cpp:1033
 msgid "Document header error"
-msgstr "LaTeX Грешка"
+msgstr "Грешка в заглавната част на документ"
 
-#: src/Buffer.cpp:1007
+#: src/Buffer.cpp:1008
 msgid "\\begin_header is missing"
-msgstr ""
+msgstr "липсва „\\begin_header“"
 
-#: src/Buffer.cpp:1031
+#: src/Buffer.cpp:1032
 msgid "\\begin_document is missing"
-msgstr ""
+msgstr "липсва „\\begin_document“"
 
-#: src/Buffer.cpp:1042 src/Buffer.cpp:3015
+#: src/Buffer.cpp:1043 src/Buffer.cpp:3026
 msgid "Changes not shown in LaTeX output"
-msgstr ""
+msgstr "Промените не се показват в крайния документ на LaTeX"
 
-#: src/Buffer.cpp:1043 src/Buffer.cpp:3016
+#: src/Buffer.cpp:1044 src/Buffer.cpp:3027
 msgid ""
 "Changes will not be highlighted in LaTeX output, because xcolor and ulem are "
 "not installed.\n"
@@ -32434,51 +31846,48 @@ msgid ""
 msgstr ""
 
 # src/frontends/xforms/FormIndex.C:29 src/insets/insetindex.C:36
-#: src/Buffer.cpp:1085 src/BufferParams.cpp:474 src/frontends/qt/GuiLog.cpp:246
-#: src/insets/InsetIndex.cpp:651
+#: src/Buffer.cpp:1086 src/BufferParams.cpp:475 src/frontends/qt/GuiLog.cpp:293
+#: src/insets/InsetIndex.cpp:676
 msgid "Index"
 msgstr "Списък с указатели"
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/Buffer.cpp:1191
-#, fuzzy
+#: src/Buffer.cpp:1192
 msgid "File Not Found"
-msgstr "Низът не е намерен!"
+msgstr "Файлът не е намерен!"
 
 # src/buffer.C:3331
-#: src/Buffer.cpp:1192
-#, fuzzy, c-format
+#: src/Buffer.cpp:1193
+#, c-format
 msgid "Unable to open file `%1$s'."
-msgstr "Недъзможна е работата с файл: "
+msgstr "Неwimen при отваряне на файл „%1$s“."
 
 # src/frontends/xforms/FormDocument.C:273 src/insets/figinset.C:1975
 # src/insets/insetexternal.C:143 src/lyxfunc.C:3105 src/lyxfunc.C:3181
 # src/lyxfunc.C:3313
-#: src/Buffer.cpp:1220 src/Buffer.cpp:1294
-#, fuzzy
+#: src/Buffer.cpp:1221 src/Buffer.cpp:1295
 msgid "Document format failure"
-msgstr "Документ"
+msgstr "Грешка във формата на документ"
 
-#: src/Buffer.cpp:1221
+#: src/Buffer.cpp:1222
 #, c-format
 msgid "%1$s ended unexpectedly, which means that it is probably corrupted."
-msgstr ""
+msgstr "%1$s прекъсна неочаквано, което означава, че вероятно е повреден."
 
 # src/lyxfunc.C:3185
-#: src/Buffer.cpp:1295
-#, fuzzy, c-format
+#: src/Buffer.cpp:1296
+#, c-format
 msgid "%1$s is not a readable LyX document."
-msgstr "Неуспех при отварянето"
+msgstr "%1$s не е четим LyX документ."
 
 # src/frontends/xforms/FormDocument.C:439
 # src/frontends/xforms/FormDocument.C:446
 # src/frontends/xforms/FormDocument.C:1108
-#: src/Buffer.cpp:1322
-#, fuzzy
+#: src/Buffer.cpp:1323
 msgid "Conversion failed"
-msgstr "Грешки при конвертиране!"
+msgstr "Грешка при конвертиране!"
 
-#: src/Buffer.cpp:1323
+#: src/Buffer.cpp:1324
 #, c-format
 msgid ""
 "%1$s is from a different version of LyX, but a temporary file for converting "
@@ -32486,93 +31895,93 @@ msgid ""
 msgstr ""
 
 # src/LaTeXLog.C:59 src/LaTeXLog.C:62
-#: src/Buffer.cpp:1333
-#, fuzzy
+#: src/Buffer.cpp:1334
 msgid "Conversion script not found"
-msgstr "Не е намерен LaTeX файл-протокол"
+msgstr "Не е открита команда за конвертиране"
 
-#: src/Buffer.cpp:1334
+#: src/Buffer.cpp:1335
 #, c-format
 msgid ""
 "%1$s is from a different version of LyX, but the conversion script lyx2lyx "
 "could not be found."
 msgstr ""
+"%1$s e с различна версия на LyX, но командата за конвертиране lyx2lyx не е "
+"открита"
 
 # src/frontends/xforms/FormDocument.C:439
 # src/frontends/xforms/FormDocument.C:446
 # src/frontends/xforms/FormDocument.C:1108
-#: src/Buffer.cpp:1357 src/Buffer.cpp:1364
-#, fuzzy
+#: src/Buffer.cpp:1358 src/Buffer.cpp:1365
 msgid "Conversion script failed"
-msgstr "Грешки при конвертиране!"
+msgstr "Грешка при конвертиране!"
 
-#: src/Buffer.cpp:1358
+#: src/Buffer.cpp:1359
 #, c-format
 msgid ""
 "%1$s is from an older version of LyX and the lyx2lyx script failed to "
 "convert it."
 msgstr ""
+"%1$s е от по-стара версия на LyX и програмата lyx2lyx не успя да го преобразува."
 
-#: src/Buffer.cpp:1365
+#: src/Buffer.cpp:1366
 #, c-format
 msgid ""
 "%1$s is from a newer version of LyX and the lyx2lyx script failed to convert "
 "it."
 msgstr ""
+"%1$s е от по-нова версия на LyX и програмата lyx2lyx не успя да го преобразува."
 
 # src/lyxfunc.C:342
-#: src/Buffer.cpp:1444 src/Buffer.cpp:4706 src/Buffer.cpp:4799
-#, fuzzy
+#: src/Buffer.cpp:1445 src/Buffer.cpp:4717 src/Buffer.cpp:4826
 msgid "File is read-only"
-msgstr "Документът е само за четене"
+msgstr "Файла е само за четене"
 
-#: src/Buffer.cpp:1445
+#: src/Buffer.cpp:1446
 #, c-format
 msgid "The file %1$s cannot be written because it is marked as read-only."
-msgstr ""
+msgstr "Файла %1$s не може да се запише, защото е само за четене."
 
 # src/buffer.C:534
-#: src/Buffer.cpp:1454
-#, fuzzy, c-format
+#: src/Buffer.cpp:1455
+#, c-format
 msgid ""
 "Document %1$s has been externally modified. Are you sure you want to "
 "overwrite this file?"
-msgstr "Документът използва непознат текстклас \""
+msgstr "Документът „%1$s“ е променен от външна програма. Сигурни ли сте, "
+"че искате да празпишете този файл?"
 
 # src/frontends/xforms/form_preferences.C:111 src/lyxfont.C:42
-#: src/Buffer.cpp:1456
-#, fuzzy
+#: src/Buffer.cpp:1457
 msgid "Overwrite modified file?"
-msgstr "Машинопис"
+msgstr "Презаписване на променен файл?"
 
 # src/frontends/xforms/form_preferences.C:111 src/lyxfont.C:42
-#: src/Buffer.cpp:1457 src/Exporter.cpp:50
-#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiView.cpp:2683
-#: src/frontends/qt/GuiView.cpp:2952 src/frontends/qt/GuiView.cpp:3055
-#, fuzzy
+#: src/Buffer.cpp:1458 src/Exporter.cpp:50
+#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiView.cpp:2875
+#: src/frontends/qt/GuiView.cpp:3144 src/frontends/qt/GuiView.cpp:3247
 msgid "&Overwrite"
-msgstr "Машинопис"
+msgstr "Презаписване"
 
 # src/frontends/xforms/FormPreferences.C:2252
-#: src/Buffer.cpp:1522
-#, fuzzy
+#: src/Buffer.cpp:1523
 msgid "Backup failure"
-msgstr "Път за архивни копия"
+msgstr "Грешка при архивиране"
 
-#: src/Buffer.cpp:1523
+#: src/Buffer.cpp:1524
 #, c-format
 msgid ""
 "Cannot create backup file %1$s.\n"
 "Please check whether the directory exists and is writable."
 msgstr ""
+"Архивния файл %1$s не може да бъде създаден.\n"
+"Уверете се, че директорията съществува и имате права за писане в нея."
 
 # src/frontends/xforms/FormPreferences.C:2252
-#: src/Buffer.cpp:1558 src/Buffer.cpp:1569
-#, fuzzy
+#: src/Buffer.cpp:1559 src/Buffer.cpp:1570
 msgid "Write failure"
-msgstr "Път за архивни копия"
+msgstr "Грешка при запис"
 
-#: src/Buffer.cpp:1559
+#: src/Buffer.cpp:1560
 #, c-format
 msgid ""
 "The file has successfully been saved as:\n"
@@ -32582,8 +31991,15 @@ msgid ""
 "Your original file has been backed up to:\n"
 "  %3$s"
 msgstr ""
+"Файлът успешно беше запазен като\n"
+"„%1$s“,\n"
+"но LyX не може да го премести в"
+"„%2$s“.\n"
+"Вашия първоначален файл беше архивиран в"
+"„%3$s“."
+
 
-#: src/Buffer.cpp:1570
+#: src/Buffer.cpp:1571
 #, c-format
 msgid ""
 "Cannot move saved file to:\n"
@@ -32591,109 +32007,115 @@ msgid ""
 "But the file has successfully been saved as:\n"
 "  %2$s."
 msgstr ""
+"Записания файл не може да се премести в\n"
+"„%1$s“,\n"
+"но успешно беше запазен като"
+"„%2$s“."
 
 # src/lyxfunc.C:795
-#: src/Buffer.cpp:1586
-#, fuzzy, c-format
+#: src/Buffer.cpp:1587
+#, c-format
 msgid "Saving document %1$s..."
-msgstr "Записвам документа"
+msgstr "Запазване на документ %1$s..."
 
 # src/buffer.C:3331
-#: src/Buffer.cpp:1601
-#, fuzzy
+#: src/Buffer.cpp:1602
 msgid " could not write file!"
-msgstr "Недъзможна е работата с файл: "
+msgstr " неуспех при запис на файл!"
 
 # src/LyXAction.C:183
-#: src/Buffer.cpp:1609
-#, fuzzy
+#: src/Buffer.cpp:1610
 msgid " done."
-msgstr "Надолу"
+msgstr "готово."
 
 # src/bufferlist.C:289
-#: src/Buffer.cpp:1624
-#, fuzzy, c-format
+#: src/Buffer.cpp:1625
+#, c-format
 msgid "LyX: Attempting to save document %1$s\n"
-msgstr "LyX: Опит за запазване на докумнета %s като..."
+msgstr "LyX: Опит за запазване на докумнет %1$s\n"
 
 # src/bufferlist.C:302 src/bufferlist.C:315 src/bufferlist.C:329
-#: src/Buffer.cpp:1634 src/Buffer.cpp:1647 src/Buffer.cpp:1661
-#, fuzzy, c-format
+#: src/Buffer.cpp:1635 src/Buffer.cpp:1648 src/Buffer.cpp:1662
+#, c-format
 msgid "Saved to %1$s. Phew.\n"
-msgstr "  Записът изглежда е успешен. Какъв късмет!"
+msgstr "Запис в %1$s. Какъв късмет!\n"
 
 # src/bufferlist.C:305 src/bufferlist.C:319
-#: src/Buffer.cpp:1637
-#, fuzzy
+#: src/Buffer.cpp:1638
 msgid "Save failed! Trying again...\n"
-msgstr "  Записът пропадна! Опитвам..."
+msgstr "Записът пропадна! Нов опит...\n"
 
 # src/bufferlist.C:305 src/bufferlist.C:319
-#: src/Buffer.cpp:1651
-#, fuzzy
+#: src/Buffer.cpp:1652
 msgid "Save failed! Trying yet again...\n"
-msgstr "  Записът пропадна! Опитвам..."
+msgstr "Записът пропадна! Още един опит...\n"
 
-#: src/Buffer.cpp:1747
+#: src/Buffer.cpp:1748
 msgid "Iconv software exception Detected"
-msgstr ""
+msgstr "Прихванато изключение от програмата „Iconv“"
 
-#: src/Buffer.cpp:1748
+#: src/Buffer.cpp:1749
 #, c-format
 msgid ""
 "Please verify that the `iconv' support software is properly installed and "
 "supports the selected encoding (%1$s), or change the encoding in "
 "Document>Settings>Language."
 msgstr ""
+"Моля, уверете се, че съпътстващата програмата „iconv“ е правилна инсталирана "
+"и поддържа избраното кодиране %1$s, или променете кодирането в менюто "
+"Докумунт->Настройки->Език."
 
 # src/ext_l10n.h:78
-#: src/Buffer.cpp:1780
-#, fuzzy, c-format
+#: src/Buffer.cpp:1781
+#, c-format
 msgid "Uncodable character '%1$s' (code point %2$s)"
-msgstr "Специален символ(S)|S"
+msgstr "Символ, които не може да се кодира „%1$s“ (на позиция %2$s)."
 
-#: src/Buffer.cpp:1783
+#: src/Buffer.cpp:1784
 msgid ""
 "Some characters of your document are not representable in specific verbatim "
 "contexts.\n"
 "Changing the document encoding to utf8 could help."
 msgstr ""
+"Някои символи от вашия документ нямат представяне в контекста на дословен текст.\n "
+"Промяна на кодовата таблица на документа на „utf8“ може да помогне."
 
-#: src/Buffer.cpp:1788
+#: src/Buffer.cpp:1789
 #, c-format
 msgid "Could not find LaTeX command for character '%1$s' (code point %2$s)"
 msgstr ""
+"Не може да се открия команда на LaTeX за символа „%1$s“ (позиция %2$s)."
 
-#: src/Buffer.cpp:1791
+#: src/Buffer.cpp:1792
 msgid ""
 "Some characters of your document are probably not representable in the "
 "chosen encoding.\n"
 "Changing the document encoding to utf8 could help."
 msgstr ""
+"Някои символи от вашия документ вероятно нямат представяне в избраното "
+"кодиране.\n"
+"Промяна на кодовата таблица на документа на „utf8“ може да помогне."
 
 # src/frontends/xforms/FormDocument.C:439
 # src/frontends/xforms/FormDocument.C:446
 # src/frontends/xforms/FormDocument.C:1108
-#: src/Buffer.cpp:1799
-#, fuzzy
+#: src/Buffer.cpp:1800
 msgid "iconv conversion failed"
-msgstr "Грешки при конвертиране!"
+msgstr "Фатална грешка при конвертиране с „iconv“!"
 
 # src/frontends/xforms/FormDocument.C:439
 # src/frontends/xforms/FormDocument.C:446
 # src/frontends/xforms/FormDocument.C:1108
-#: src/Buffer.cpp:1804
-#, fuzzy
+#: src/Buffer.cpp:1805
 msgid "conversion failed"
-msgstr "Грешки при конвертиране!"
+msgstr "Фатална грешка при конвертиране!"
 
 # src/ext_l10n.h:78
-#: src/Buffer.cpp:1916 src/insets/InsetGraphics.cpp:905
-#, fuzzy
+#: src/Buffer.cpp:1917 src/insets/InsetGraphics.cpp:905
 msgid "Uncodable character in file path"
-msgstr "Специален символ(S)|S"
+msgstr "Символ, които не може да се кодира в пътя на файла."
 
-#: src/Buffer.cpp:1918
+#: src/Buffer.cpp:1919
 #, c-format
 msgid ""
 "The path of your document\n"
@@ -32706,188 +32128,197 @@ msgid ""
 "In case of problems, choose an appropriate document encoding\n"
 "(such as utf8) or change the file path name."
 msgstr ""
+"Пътят до вашия докумнт „%1$s“\n"
+"съдържа символите „%2$s“, които са непознати в текущото кодиране на документа. "
+"Това може да причини непълен краен документ, освен ако TEXINPUTS не съдържа "
+"директорията на документа и вие не използвате относителни пътища т.е. "
+"пътища започващи с „./“ или „../“ в заглавната част или в изходен код на LaTeX.\n"
+"В случай на пробелми, изберете подходяща кодова таблица на документа като "
+"„utf8“ или променете името на пътя до документа."
+
 
-#: src/Buffer.cpp:2009
+#: src/Buffer.cpp:2010
 #, c-format
 msgid "The languages %1$s are only supported by Babel."
-msgstr ""
+msgstr "Езиците %1$s се поддържат само от Бабел (babel)."
 
-#: src/Buffer.cpp:2010
+#: src/Buffer.cpp:2011
 #, c-format
 msgid "The language %1$s is only supported by Babel."
-msgstr ""
+msgstr "Езикът %1$s се поддържа само от Бабел (babel)."
 
-#: src/Buffer.cpp:2020
+#: src/Buffer.cpp:2021
 #, c-format
 msgid "The languages %1$s are only supported by Polyglossia."
-msgstr ""
+msgstr "Езиците %1$s се поддържат само от Полиглосия (polyglossia)."
 
-#: src/Buffer.cpp:2021
+#: src/Buffer.cpp:2022
 #, c-format
 msgid "The language %1$s is only supported by Polyglossia."
-msgstr ""
+msgstr "Езикът %1$s се поддържа само от Полиглосия (polyglossia)."
 
 # src/LyXAction.C:167
-#: src/Buffer.cpp:2027
-#, fuzzy
+#: src/Buffer.cpp:2028
 msgid "Incompatible Languages!"
-msgstr "Изпълни команда"
+msgstr "Несъвместими езици!"
 
-#: src/Buffer.cpp:2029
+#: src/Buffer.cpp:2030
 #, c-format
 msgid ""
 "You cannot use the following languages together in one LaTeX document "
 "because they require conflicting language packages:\n"
 "%1$s%2$s"
 msgstr ""
+"Не можете да използвате следните езици едновременно в един документ на "
+"LaTeX, защото те изискват несъвместими пакети за език:\n"
+"%1$s%2$s"
 
 # src/buffer.C:3317
-#: src/Buffer.cpp:2323
+#: src/Buffer.cpp:2334
 msgid "Running chktex..."
-msgstr "Стартирам chktex..."
+msgstr "Стартиране на chktex..."
 
-#: src/Buffer.cpp:2342
+#: src/Buffer.cpp:2353
 msgid "chktex failure"
-msgstr ""
+msgstr "Грешка в chktex"
 
 # src/lyx_cb.C:296
-#: src/Buffer.cpp:2343
-#, fuzzy
+#: src/Buffer.cpp:2354
 msgid "Could not run chktex successfully."
-msgstr "Chktex премина успешно"
+msgstr "Грешка при стартиране на chktex."
 
 # src/importer.C:58
-#: src/Buffer.cpp:2718
-#, fuzzy, c-format
+#: src/Buffer.cpp:2729
+#, c-format
 msgid "Don't know how to export to format: %1$s"
-msgstr "Няма информация за импортиране от "
+msgstr "Не е извесно как се преобразува до формат: %1$s"
 
 # src/importer.C:58
-#: src/Buffer.cpp:2822
+#: src/Buffer.cpp:2833
 #, fuzzy, c-format
 msgid "Error exporting to format: %1$s."
 msgstr "Няма информация за импортиране от "
 
 # src/LaTeXLog.C:59 src/LaTeXLog.C:62
-#: src/Buffer.cpp:2831
+#: src/Buffer.cpp:2842
 #, fuzzy
 msgid "Error generating literate programming code."
 msgstr "Не е намерен LaTeX файл-протокол"
 
-#: src/Buffer.cpp:2907
+#: src/Buffer.cpp:2918
 #, c-format
 msgid "Branch \"%1$s\" does not exist."
-msgstr ""
+msgstr "Разклонение „%1$s“ не съществува."
 
-#: src/Buffer.cpp:2940
+#: src/Buffer.cpp:2951
 #, c-format
 msgid "Branch \"%1$s\" already exists."
 msgstr ""
 
 # src/ext_l10n.h:61
-#: src/Buffer.cpp:2997
+#: src/Buffer.cpp:3008
 #, fuzzy
 msgid "Error viewing the output file."
 msgstr "Многоколонно(M)|M"
 
 # src/ext_l10n.h:92
-#: src/Buffer.cpp:3359 src/frontends/qt/GuiView.cpp:2514
-#: src/frontends/qt/Validator.cpp:237 src/insets/ExternalSupport.cpp:394
+#: src/Buffer.cpp:3370 src/frontends/qt/GuiView.cpp:2706
+#: src/frontends/qt/Validator.cpp:241 src/insets/ExternalSupport.cpp:394
 #: src/insets/InsetGraphics.cpp:692 src/insets/InsetInclude.cpp:606
 #, fuzzy
 msgid "Invalid filename"
 msgstr "Включи файл(e)|e"
 
-#: src/Buffer.cpp:3360 src/insets/ExternalSupport.cpp:395
+#: src/Buffer.cpp:3371 src/insets/ExternalSupport.cpp:395
 #: src/insets/InsetGraphics.cpp:693 src/insets/InsetInclude.cpp:607
 msgid ""
 "The following filename will cause troubles when running the exported file "
 "through LaTeX: "
 msgstr ""
 
-#: src/Buffer.cpp:3365 src/insets/ExternalSupport.cpp:400
+#: src/Buffer.cpp:3376 src/insets/ExternalSupport.cpp:400
 #: src/insets/InsetGraphics.cpp:700 src/insets/InsetInclude.cpp:611
 msgid "Problematic filename for DVI"
 msgstr ""
 
-#: src/Buffer.cpp:3366 src/insets/ExternalSupport.cpp:401
+#: src/Buffer.cpp:3377 src/insets/ExternalSupport.cpp:401
 #: src/insets/InsetGraphics.cpp:701 src/insets/InsetInclude.cpp:612
 msgid ""
 "The following filename can cause troubles when running the exported file "
 "through LaTeX and opening the resulting DVI: "
 msgstr ""
 
-#: src/Buffer.cpp:3405 src/insets/InsetBibtex.cpp:349
+#: src/Buffer.cpp:3416 src/insets/InsetBibtex.cpp:349
 msgid "Export Warning!"
 msgstr ""
 
-#: src/Buffer.cpp:3406
+#: src/Buffer.cpp:3417
 msgid ""
 "There are spaces in the paths to your BibTeX databases.\n"
 "BibTeX will be unable to find them."
 msgstr ""
 
 # src/frontends/xforms/form_preferences.C:896
-#: src/Buffer.cpp:4080
+#: src/Buffer.cpp:4088
 #, fuzzy, c-format
 msgid "Preview source code for paragraph %1$d"
 msgstr "обърнато"
 
-#: src/Buffer.cpp:4085
+#: src/Buffer.cpp:4093
 #, c-format
 msgid "Preview source code from paragraph %1$s to %2$s"
 msgstr ""
 
 # src/frontends/xforms/form_preferences.C:896
-#: src/Buffer.cpp:4140
+#: src/Buffer.cpp:4148
 #, fuzzy
 msgid "Preview source code"
 msgstr "обърнато"
 
 # src/frontends/xforms/form_preferences.C:896
-#: src/Buffer.cpp:4142
+#: src/Buffer.cpp:4150
 #, fuzzy
 msgid "Preview preamble"
 msgstr "обърнато"
 
 # src/frontends/xforms/form_preferences.C:896
-#: src/Buffer.cpp:4144
+#: src/Buffer.cpp:4152
 #, fuzzy
 msgid "Preview body"
 msgstr "обърнато"
 
-#: src/Buffer.cpp:4160
+#: src/Buffer.cpp:4168
 msgid "Plain text does not have a preamble."
 msgstr ""
 
 # src/lyx_cb.C:371
-#: src/Buffer.cpp:4297
+#: src/Buffer.cpp:4305
 msgid "Autosaving current document..."
 msgstr "Автозапис на текущия документ..."
 
 # src/importer.C:58
-#: src/Buffer.cpp:4419
+#: src/Buffer.cpp:4430
 #, fuzzy, c-format
 msgid "No information for exporting the format %1$s."
 msgstr "Няма информация за импортиране от "
 
-#: src/Buffer.cpp:4423
+#: src/Buffer.cpp:4434
 #, c-format
 msgid "Hint: use non-TeX fonts or set input encoding  to '%1$s'"
 msgstr ""
 
 # src/exporter.C:47
-#: src/Buffer.cpp:4425
+#: src/Buffer.cpp:4436
 #, fuzzy
 msgid "Couldn't export file"
 msgstr "Невъзможно е да бъде експортиран файла"
 
 # src/form1.C:245
-#: src/Buffer.cpp:4493 src/frontends/qt/GuiView.cpp:2656
+#: src/Buffer.cpp:4504 src/frontends/qt/GuiView.cpp:2848
 msgid "File name error"
 msgstr "Грешка в името на файла"
 
-#: src/Buffer.cpp:4494
+#: src/Buffer.cpp:4505
 #, c-format
 msgid ""
 "The directory path to the document\n"
@@ -32897,25 +32328,25 @@ msgid ""
 msgstr ""
 
 # src/exporter.C:89
-#: src/Buffer.cpp:4583 src/Buffer.cpp:4613 src/frontends/qt/GuiView.cpp:752
+#: src/Buffer.cpp:4594 src/Buffer.cpp:4624 src/frontends/qt/GuiView.cpp:872
 #, fuzzy
 msgid "Document export cancelled."
 msgstr "Документът ще бъде експортиран във формат "
 
 # src/exporter.C:89
-#: src/Buffer.cpp:4616
-#, fuzzy, c-format
+#: src/Buffer.cpp:4627
+#, c-format
 msgid "Document exported as %1$s to file `%2$s'"
-msgstr "Документът ще бъде експортиран във формат "
+msgstr "Документът е експортиран като „%1$s“ във файл „%2$s“."
 
 # src/exporter.C:89
-#: src/Buffer.cpp:4623
-#, fuzzy, c-format
+#: src/Buffer.cpp:4634
+#, c-format
 msgid "Document exported as %1$s"
-msgstr "Документът ще бъде експортиран във формат "
+msgstr "Документът e експортиран като „%1$s“."
 
 # src/bufferlist.C:356
-#: src/Buffer.cpp:4692
+#: src/Buffer.cpp:4703
 #, c-format
 msgid ""
 "An emergency save of the document %1$s exists.\n"
@@ -32927,36 +32358,42 @@ msgstr ""
 "Желаете ли да възстановите документа от аварийното копие?"
 
 # заглавие на диалог
-#: src/Buffer.cpp:4695
+#: src/Buffer.cpp:4706
 msgid "Load emergency save?"
 msgstr "Възстановяване на документ"
 
 # src/frontends/kde/dlg/paradlgdata.C:82
-#: src/Buffer.cpp:4696
+#: src/Buffer.cpp:4707
 msgid "&Recover"
 msgstr "Зареждане на &аварийното копие"
 
-#: src/Buffer.cpp:4696
+#: src/Buffer.cpp:4707
 msgid "&Load Original"
 msgstr "Зареждане на &първоначалния файл"
 
+# src/ext_l10n.h:329
 #: src/Buffer.cpp:4707
+#, fuzzy
+msgid "&Only show difference"
+msgstr "Препратки"
+
+#: src/Buffer.cpp:4718
 #, c-format
 msgid ""
 "An emergency file is successfully loaded, but the original file %1$s is "
 "marked read-only. Please make sure to save the document as a different file."
 msgstr ""
 
-#: src/Buffer.cpp:4714
+#: src/Buffer.cpp:4725
 msgid "Document was successfully recovered."
 msgstr "Документа беше успешно възстановен."
 
-#: src/Buffer.cpp:4716
+#: src/Buffer.cpp:4727
 msgid "Document was NOT successfully recovered."
 msgstr "Документа НЕ беше успешно възстановен."
 
 # src/LyXAction.C:185
-#: src/Buffer.cpp:4717
+#: src/Buffer.cpp:4728
 #, c-format
 msgid ""
 "Remove emergency file now?\n"
@@ -32967,36 +32404,36 @@ msgstr ""
 
 # заглавие на диалог
 # src/LyXAction.C:185
-#: src/Buffer.cpp:4721 src/Buffer.cpp:4733
+#: src/Buffer.cpp:4732 src/Buffer.cpp:4744
 msgid "Delete emergency file?"
 msgstr "Изтриване на авариен файл"
 
 # src/ext_l10n.h:191
-#: src/Buffer.cpp:4722 src/Buffer.cpp:4735
+#: src/Buffer.cpp:4733 src/Buffer.cpp:4746
 msgid "&Keep"
 msgstr "&Запазване"
 
 # заглавие на диалог
-#: src/Buffer.cpp:4726
+#: src/Buffer.cpp:4737
 msgid "Emergency file deleted"
 msgstr "Откриване на наличен авариен файл"
 
-#: src/Buffer.cpp:4727
+#: src/Buffer.cpp:4738
 msgid "Do not forget to save your file now!"
 msgstr "Не забравяйте да запазите вашия файл!"
 
-#: src/Buffer.cpp:4734
+#: src/Buffer.cpp:4745
 msgid "Remove emergency file now?"
 msgstr "Да се премахне ли аварийния файл?"
 
 # заглавие на диалог
 # src/LyXAction.C:185
-#: src/Buffer.cpp:4757
+#: src/Buffer.cpp:4768
 #, fuzzy
 msgid "Can't rename emergency file!"
 msgstr "Изтриване на авариен файл"
 
-#: src/Buffer.cpp:4758
+#: src/Buffer.cpp:4769
 msgid ""
 "LyX was unable to rename the emergency file. You should do so manually. "
 "Otherwise, you will be asked about it again the next time you try to load "
@@ -33004,131 +32441,146 @@ msgid ""
 msgstr ""
 
 # заглавие на диалог
-#: src/Buffer.cpp:4763
+#: src/Buffer.cpp:4774
 #, fuzzy
 msgid "Emergency File Renames"
 msgstr "Откриване на наличен авариен файл"
 
 # заглавие на диалог
-#: src/Buffer.cpp:4764
+#: src/Buffer.cpp:4775
 #, fuzzy, c-format
 msgid ""
 "Emergency file renamed as:\n"
 " %1$s"
 msgstr "Откриване на наличен авариен файл"
 
-#: src/Buffer.cpp:4787
+#: src/Buffer.cpp:4814
 #, c-format
 msgid ""
 "The backup of the document %1$s is newer.\n"
 "\n"
 "Load the backup instead?"
 msgstr ""
-"Резервното копие на документа %1$s е по-ново от първоначалния файл\n"
+"Резервното копие на документа „%1$s“ е по-ново от работния файл.\n"
 "\n"
 "Желаете ли да се зареди резервното копие?"
 
 # src/frontends/gnome/FormRef.C:49 src/frontends/xforms/FormRef.C:214
-#: src/Buffer.cpp:4789
-#, fuzzy
+#: src/Buffer.cpp:4816
 msgid "Load backup?"
-msgstr "Обратно"
+msgstr "Да се зареди ли резервното копие?"
 
 # src/frontends/kde/FormRef.C:103
-#: src/Buffer.cpp:4790
+#: src/Buffer.cpp:4817
 msgid "&Load backup"
-msgstr "Зареждане на &резервното копие"
+msgstr "Зареждане на резервното &копие"
 
-#: src/Buffer.cpp:4790
+#: src/Buffer.cpp:4817
 msgid "Load &original"
-msgstr "Зареждане на &първоначалния файл"
+msgstr "Зареждане на &работния файл"
 
-#: src/Buffer.cpp:4800
+#: src/Buffer.cpp:4827
 #, c-format
 msgid ""
 "A backup file is successfully loaded, but the original file %1$s is marked "
 "read-only. Please make sure to save the document as a different file."
 msgstr ""
+"Файла с резервното копие се зареди успешно, но първоначалния файл %1$s e "
+"отбелязан само за четене. Уверете се, че запазвате документа под друто име. "
 
 # src/ext_l10n.h:163
-#: src/Buffer.cpp:5195 src/insets/InsetCaption.cpp:408
-#, fuzzy
+#: src/Buffer.cpp:5206 src/insets/InsetCaption.cpp:404
 msgid "Senseless!!! "
-msgstr "Адреси"
+msgstr "Объркване!!!"
 
 # src/MenuBackend.C:263
-#: src/Buffer.cpp:5450
-#, fuzzy, c-format
+#: src/Buffer.cpp:5470
+#, c-format
 msgid "Document %1$s reloaded."
-msgstr "Няма отворени документи!"
+msgstr "Документът „%1$s“ е презареден!"
 
 # src/lyxfunc.C:3185
-#: src/Buffer.cpp:5453
-#, fuzzy, c-format
+#: src/Buffer.cpp:5473
+#, c-format
 msgid "Could not reload document %1$s."
-msgstr "Неуспех при отварянето"
+msgstr "Документът „%1$s“ не може да се презареди."
 
-#: src/BufferParams.cpp:529
+#: src/BufferParams.cpp:531
 msgid ""
 "The LaTeX package amsmath is only used if AMS formula types or symbols from "
 "the AMS math toolbars are inserted into formulas"
 msgstr ""
+"Пакетът на LaTeX „amsmath“ се използва само ако изразите са AMS или символите"
+"в изразите са заредени от лентата с инструменти на AMS."
 
-#: src/BufferParams.cpp:531
+#: src/BufferParams.cpp:533
 msgid ""
 "The LaTeX package amssymb is only used if symbols from the AMS math toolbars "
 "are inserted into formulas"
 msgstr ""
+"Пакетът на LaTeX „amssymb“ се използва само ако в изразите се вмъкват символи "
+"от лентата с инструменти на AMS."
 
-#: src/BufferParams.cpp:533
+#: src/BufferParams.cpp:535
 msgid ""
 "The LaTeX package cancel is only used if \\cancel commands are used in "
 "formulas"
 msgstr ""
+"Пакетът на LaTeX „cancel“ се използва само ако в изразите има команди „\\cancel“."
 
-#: src/BufferParams.cpp:535
+#: src/BufferParams.cpp:537
 msgid ""
 "The LaTeX package esint is only used if special integral symbols are "
 "inserted into formulas"
 msgstr ""
+"Пакетът на LaTeX „esint“ се използва само ако в изразите има знаци за интеграли."
 
-#: src/BufferParams.cpp:537
+#: src/BufferParams.cpp:539
 msgid ""
 "The LaTeX package mathdots is only used if the command \\iddots is inserted "
 "into formulas"
 msgstr ""
+"Пакетът на LaTeX „mathdots“ се използва само ако в изразите има команди „\\iddots“."
 
-#: src/BufferParams.cpp:539
+#: src/BufferParams.cpp:541
 msgid ""
 "The LaTeX package mathtools is only used if some mathematical relations are "
 "inserted into formulas"
 msgstr ""
+"Пакетът на LaTeX „mathtools“ се използва само ако в изразите са вмъкнати матеем. отношения."
 
-#: src/BufferParams.cpp:541
+#: src/BufferParams.cpp:543
 msgid ""
 "The LaTeX package mhchem is only used if either the command \\ce or \\cf is "
 "inserted into formulas"
 msgstr ""
+"Пакетът на LaTeX „mhchem“ се използва само ако в изразите са вмъкнати команди "
+"„\\ce“ или „\\cf“."
 
-#: src/BufferParams.cpp:543
+#: src/BufferParams.cpp:545
 msgid ""
 "The LaTeX package stackrel is only used if the command \\stackrel with "
 "subscript is inserted into formulas"
 msgstr ""
+"Пакетът на LaTeX „stackrel“ се използва само ако в изразите има команда "
+"„\\stackrel“ с долен индекс."
 
-#: src/BufferParams.cpp:545
+#: src/BufferParams.cpp:547
 msgid ""
 "The LaTeX package stmaryrd is only used if symbols from the St Mary's Road "
 "symbol font for theoretical computer science are inserted into formulas"
 msgstr ""
+"Пакетът на LaTeX „stmryrd“ се използва само ако в изразите има символен шрифт "
+"„St Mary's Road“ за теоретична изчислителна наука."
 
-#: src/BufferParams.cpp:547
+#: src/BufferParams.cpp:549
 msgid ""
 "The LaTeX package undertilde is only used if you use the math frame "
 "decoration 'utilde'"
 msgstr ""
+"Пакетът на LaTeX „undertilde“ се използва само ако има вмъкнати рамки с форма „utilde“."
 
-#: src/BufferParams.cpp:753
+#: src/BufferParams.cpp:784
 #, c-format
 msgid ""
 "The selected document class\n"
@@ -33151,46 +32603,68 @@ msgstr ""
 "за повече информация."
 
 # src/lyx_cb.C:263
-#: src/BufferParams.cpp:762
+#: src/BufferParams.cpp:793
 msgid "Document class not available"
 msgstr "Класа документи не е наличен!"
 
 # src/insets/inset.C:75
-#: src/BufferParams.cpp:1059 src/Color.cpp:281
-#: src/frontends/qt/GuiDocument.cpp:3527
-#, fuzzy
+#: src/BufferParams.cpp:1100 src/Color.cpp:281
+#: src/frontends/qt/GuiDocument.cpp:3542
 msgid "greyedout inset text"
-msgstr "Отворен inset"
+msgstr "Текст на цветна бележка"
 
 # src/lyxfunc.C:1125
-#: src/BufferParams.cpp:1761 src/BufferParams.cpp:2203 src/Encoding.cpp:253
-#: src/Paragraph.cpp:2960 src/frontends/qt/LaTeXHighlighter.cpp:122
+#: src/BufferParams.cpp:1718 src/BufferParams.cpp:1872
+#: src/BufferParams.cpp:2315 src/Encoding.cpp:253 src/Paragraph.cpp:3014
+#: src/frontends/qt/LaTeXHighlighter.cpp:143
+#: src/frontends/qt/LaTeXHighlighter.cpp:257
 #: src/insets/InsetCommandParams.cpp:508 src/insets/InsetCommandParams.cpp:516
 #: src/insets/InsetGraphics.cpp:886 src/insets/InsetGraphics.cpp:894
-#: src/insets/InsetListings.cpp:298 src/insets/InsetListings.cpp:306
-#: src/insets/InsetListings.cpp:331 src/mathed/MathExtern.cpp:1440
+#: src/insets/InsetListings.cpp:299 src/insets/InsetListings.cpp:307
+#: src/insets/InsetListings.cpp:332 src/mathed/MathExtern.cpp:1440
 #: src/mathed/MathExtern.cpp:1514
 msgid "LyX Warning: "
 msgstr "LyX Предупреждение:"
 
 # src/ext_l10n.h:78
-#: src/BufferParams.cpp:1762 src/BufferParams.cpp:2204 src/Encoding.cpp:254
-#: src/Paragraph.cpp:2961 src/insets/InsetCommandParams.cpp:509
-#: src/insets/InsetCommandParams.cpp:517 src/insets/InsetGraphics.cpp:887
-#: src/insets/InsetGraphics.cpp:895 src/insets/InsetListings.cpp:299
-#: src/insets/InsetListings.cpp:307 src/mathed/MathExtern.cpp:1441
-#: src/mathed/MathExtern.cpp:1515
-#, fuzzy
+#: src/BufferParams.cpp:1719 src/BufferParams.cpp:1873
+#: src/BufferParams.cpp:2316 src/Encoding.cpp:254 src/Paragraph.cpp:3015
+#: src/insets/InsetCommandParams.cpp:509 src/insets/InsetCommandParams.cpp:517
+#: src/insets/InsetGraphics.cpp:887 src/insets/InsetGraphics.cpp:895
+#: src/insets/InsetListings.cpp:300 src/insets/InsetListings.cpp:308
+#: src/mathed/MathExtern.cpp:1441 src/mathed/MathExtern.cpp:1515
 msgid "uncodable character"
-msgstr "Специален символ(S)|S"
+msgstr "символ, които не може да се кодира"
 
 # src/ext_l10n.h:78
-#: src/BufferParams.cpp:1775
-#, fuzzy
+#: src/BufferParams.cpp:1732
+msgid "Uncodable character in document metadata"
+msgstr "Докумена съдържа символи метаданните, които не могат да се кодират."
+
+#: src/BufferParams.cpp:1734
+#, c-format
+msgid ""
+"The metadata of your document contains glyphs that are unknown in the "
+"current document encoding (namely %1$s).\n"
+"These glyphs are omitted  from the output, which may result in incomplete "
+"output.\n"
+"\n"
+"Please select an appropriate document encoding\n"
+"(such as utf8) or change the preamble code accordingly."
+msgstr ""
+"Метаданните на вашия документ съдържат символи, които не съществуват\n"
+" в текущата кодиране (кодова таблица) на документа, а именно „%1$s“\n"
+"Тези символи се пропускат в крайния текст, което означава непълен краен документ.\n"
+"/n"
+"Моля изберете подходяща кодова таблица като utf-8 за документа\n"
+"или променете съответно преамбюла."
+
+# src/ext_l10n.h:78
+#: src/BufferParams.cpp:1886
 msgid "Uncodable character in class options"
-msgstr "Специален символ(S)|S"
+msgstr "Символ, които не може да се кодира в опциите за клас"
 
-#: src/BufferParams.cpp:1777
+#: src/BufferParams.cpp:1888
 #, c-format
 msgid ""
 "The class options of your document contain glyphs that are unknown in the "
@@ -33203,12 +32677,11 @@ msgid ""
 msgstr ""
 
 # src/ext_l10n.h:78
-#: src/BufferParams.cpp:2217
-#, fuzzy
+#: src/BufferParams.cpp:2329
 msgid "Uncodable character in user preamble"
-msgstr "Специален символ(S)|S"
+msgstr "Символ, които не може да се кодира в преамбюла от потребителя"
 
-#: src/BufferParams.cpp:2219
+#: src/BufferParams.cpp:2331
 #, c-format
 msgid ""
 "The user preamble of your document contains glyphs that are unknown in the "
@@ -33220,7 +32693,7 @@ msgid ""
 "(such as utf8) or change the preamble code accordingly."
 msgstr ""
 
-#: src/BufferParams.cpp:2534
+#: src/BufferParams.cpp:2646
 #, c-format
 msgid ""
 "The layout file:\n"
@@ -33231,12 +32704,11 @@ msgid ""
 msgstr ""
 
 # src/lyx_cb.C:263
-#: src/BufferParams.cpp:2540
-#, fuzzy
+#: src/BufferParams.cpp:2652
 msgid "Document class not found"
-msgstr "Документът не може да бъде записан!"
+msgstr "Не е открит клас документи"
 
-#: src/BufferParams.cpp:2547
+#: src/BufferParams.cpp:2659
 #, c-format
 msgid ""
 "Due to some error in it, the layout file:\n"
@@ -33245,187 +32717,225 @@ msgid ""
 "layouts will be used. LyX will not be able to produce\n"
 "correct output."
 msgstr ""
+"Поради грешка във файла с оформлението:\n"
+"„%1$s“\n"
+"не маже да се зареди. Ще се използва клас документи по\n"
+"и оформление по подразбиране. LyX няма да покаже\n"
+"правилен краен документ."
 
 # src/converter.C:552 src/converter.C:645
-#: src/BufferParams.cpp:2553 src/BufferView.cpp:1385 src/BufferView.cpp:1417
-#, fuzzy
+#: src/BufferParams.cpp:2665 src/BufferView.cpp:1424 src/BufferView.cpp:1456
 msgid "Could not load class"
-msgstr "Невъзможно е преобразуването на файла"
+msgstr "Ве може да се зареди клас."
 
 # src/debug.C:33
-#: src/BufferParams.cpp:2598
-#, fuzzy
+#: src/BufferParams.cpp:2710
 msgid "Error reading internal layout information"
-msgstr "Обща информация"
+msgstr "Грешка при четене на вътрешна информация за оформлението"
 
 # src/frontends/gnome/FormCitation.C:453
-#: src/BufferParams.cpp:2599 src/TextClass.cpp:1934 src/TextClass.cpp:1967
-#, fuzzy
+#: src/BufferParams.cpp:2711 src/TextClass.cpp:1952 src/TextClass.cpp:1985
 msgid "Read Error"
-msgstr "Търси"
+msgstr "Грешка при четене"
+
+# src/ext_l10n.h:186
+#: src/BufferParams.cpp:3726
+msgid "No bibliography processor found!"
+msgstr "Не е открита програма за библиографията!"
+
+#: src/BufferParams.cpp:3728
+#, c-format
+msgid ""
+"The bibliography processor requested by this document (%1$s) is not "
+"available and no appropriate alternative has been found. No bibliography and "
+"references will be generated.\n"
+"Please fix your installation!"
+msgstr ""
+"Избраната програма за обработка на библиографията на този документ „%1$s“ не "
+"е налична и не е открита подходяща алтернатива. Няма да се генерират "
+"библиография и препратки!\n"
+"Моля, поправете вашата инсталация!"
+
+# src/ext_l10n.h:186
+#: src/BufferParams.cpp:3736
+msgid "Requested bibliography processor not found!"
+msgstr "Програмата избрана за обработка на библиографията не е открита!"
+
+#: src/BufferParams.cpp:3738
+#, c-format
+msgid ""
+"The bibliography processor requested by this document (%1$s) is not "
+"available. As a fallback, '%2$s' will be used, options are omitted. This "
+"might result in errors or unwanted changes in the bibliography. Please check "
+"carefully!\n"
+"It is suggested to install the missing processor."
+msgstr ""
+"Избраната програма за обработка на библиографията на този документ „%1$s“ не " 
+"е налична. Като резерен вариант ще се използва „%2$s“ като опциите се пропускат."
+"Това може да доведе до грешки или нежелани промени в библиографията, която "
+"е желателно да се провери!\n"
+"Препоръчително е да се инсталира липсващата програма."
 
 # src/BufferView2.C:636 src/BufferView2.C:640
-#: src/BufferView.cpp:178
-#, fuzzy
+#: src/BufferView.cpp:179
 msgid "No more insets"
-msgstr "Няма повече бележки"
+msgstr "Няма повече добавки."
 
 # src/frontends/xforms/form_paragraph.C:244
-#: src/BufferView.cpp:834
+#: src/BufferView.cpp:879
 #, fuzzy
 msgid "Save bookmark"
 msgstr "Долу(B)|#B"
 
 # src/frontends/xforms/FormDocument.C:426
-#: src/BufferView.cpp:1054
+#: src/BufferView.cpp:1092
 msgid "Converting document to new document class..."
-msgstr "Документът се конвертира към нов документ клас..."
+msgstr "Документът се конвертира към нов клас документ..."
 
 # src/lyxfunc.C:342
-#: src/BufferView.cpp:1099
+#: src/BufferView.cpp:1137
 msgid "Document is read-only"
-msgstr "Документът е само за четене"
+msgstr "Документът е само за четене."
 
-#: src/BufferView.cpp:1101
+#: src/BufferView.cpp:1139
 msgid "Document has been modified externally"
-msgstr ""
+msgstr "Документа е бил променен от външна програма."
 
-#: src/BufferView.cpp:1110
+#: src/BufferView.cpp:1148
 msgid "This portion of the document is deleted."
-msgstr ""
+msgstr "Тази част от документа е изтрита."
 
-#: src/BufferView.cpp:1153 src/BufferView.cpp:2212
-#: src/frontends/qt/GuiView.cpp:4104 src/frontends/qt/GuiView.cpp:4192
+#: src/BufferView.cpp:1191 src/BufferView.cpp:2254
+#: src/frontends/qt/GuiView.cpp:4296 src/frontends/qt/GuiView.cpp:4384
 msgid "Absolute filename expected."
-msgstr ""
+msgstr "Очаква се абсолютен път на файл."
 
 # src/lyx_cb.C:263
-#: src/BufferView.cpp:1383 src/BufferView.cpp:1415
-#, fuzzy, c-format
+#: src/BufferView.cpp:1422 src/BufferView.cpp:1454
+#, c-format
 msgid "The document class `%1$s' could not be loaded."
-msgstr "Документът не може да бъде записан!"
+msgstr "Неуспешно зареждане на клас документи „%1$s“."
 
 # src/BufferView2.C:440
-#: src/BufferView.cpp:1441
+#: src/BufferView.cpp:1480
 msgid "No further undo information"
 msgstr "Няма нищо повече за отменяне"
 
 # src/BufferView2.C:461
-#: src/BufferView.cpp:1461
+#: src/BufferView.cpp:1501
 msgid "No further redo information"
 msgstr "Няма нищо повече за повтаряне"
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/BufferView.cpp:1652 src/BufferView.cpp:1667 src/BufferView.cpp:1698
-#, fuzzy
+#: src/BufferView.cpp:1693 src/BufferView.cpp:1708 src/BufferView.cpp:1739
 msgid "Search string not found!"
-msgstr "Низът не е намерен."
+msgstr "Търсеният низ не е намерен."
 
 # src/lyxfunc.C:1949
-#: src/BufferView.cpp:1719
+#: src/BufferView.cpp:1760
 msgid "Mark off"
 msgstr "Маркиране изкл."
 
 # src/lyxfunc.C:1962
-#: src/BufferView.cpp:1725
+#: src/BufferView.cpp:1766
 msgid "Mark on"
 msgstr "Маркиране вкл."
 
 # src/lyxfunc.C:1839
-#: src/BufferView.cpp:1732
+#: src/BufferView.cpp:1773
 msgid "Mark removed"
 msgstr "Маркиране премахнато"
 
 # src/lyxfunc.C:1844
-#: src/BufferView.cpp:1735
+#: src/BufferView.cpp:1776
 msgid "Mark set"
 msgstr "Маркиране установено"
 
-#: src/BufferView.cpp:1826
+#: src/BufferView.cpp:1867
 msgid "Statistics for the selection:"
 msgstr "Статистика на избрания текст"
 
 # src/LyXAction.C:149
-#: src/BufferView.cpp:1828
+#: src/BufferView.cpp:1869
 msgid "Statistics for the document:"
 msgstr "Статистика за документа:"
 
 # src/converter.C:783 src/converter.C:853
-#: src/BufferView.cpp:1831
+#: src/BufferView.cpp:1872
 #, c-format
 msgid "%1$d words"
 msgstr "%1$d думи"
 
 # src/ext_l10n.h:262 src/frontends/gnome/FormIndex.C:89
 # src/frontends/xforms/form_index.C:28
-#: src/BufferView.cpp:1833
+#: src/BufferView.cpp:1874
 msgid "One word"
 msgstr "Една дума"
 
-#: src/BufferView.cpp:1836
+#: src/BufferView.cpp:1877
 #, c-format
 msgid "%1$d characters (including blanks)"
 msgstr "%1$d букви (с празните символи)"
 
-#: src/BufferView.cpp:1839
+#: src/BufferView.cpp:1880
 msgid "One character (including blanks)"
-msgstr ""
+msgstr "Един знак (включително интервали)"
 
-#: src/BufferView.cpp:1842
+#: src/BufferView.cpp:1883
 #, c-format
 msgid "%1$d characters (excluding blanks)"
 msgstr "%1$d букве (без празните символи)"
 
-#: src/BufferView.cpp:1845
+#: src/BufferView.cpp:1886
 msgid "One character (excluding blanks)"
-msgstr ""
+msgstr "Един знак (без интервали)"
 
 # заглавие на диалогов прозорец
 # src/ext_l10n.h:362
-#: src/BufferView.cpp:1847
+#: src/BufferView.cpp:1888
 msgid "Statistics"
 msgstr "Статистика"
 
-#: src/BufferView.cpp:2070
+#: src/BufferView.cpp:2112
 #, c-format
 msgid ""
 "`inset-forall' interrupted because number of actions is larger than %1$d"
 msgstr ""
 
-#: src/BufferView.cpp:2072
+#: src/BufferView.cpp:2114
 #, c-format
 msgid "Applied \"%1$s\" to %2$d insets"
 msgstr ""
 
 # src/ext_l10n.h:441
-#: src/BufferView.cpp:2080
+#: src/BufferView.cpp:2122
 msgid "Branch name"
 msgstr "име на разклонение"
 
-#: src/BufferView.cpp:2087 src/frontends/qt/GuiBranches.cpp:225
+#: src/BufferView.cpp:2129 src/frontends/qt/GuiBranches.cpp:225
 msgid "Branch already exists"
 msgstr "Разклонението вече съществува"
 
 # src/lyxfunc.C:3309
-#: src/BufferView.cpp:2969
-#, fuzzy, c-format
+#: src/BufferView.cpp:3056
+#, c-format
 msgid "Inserting document %1$s..."
-msgstr "Вмъквам документ"
+msgstr "Вмъкване на документ %1$s..."
 
 # src/exporter.C:89
-#: src/BufferView.cpp:2985
-#, fuzzy, c-format
+#: src/BufferView.cpp:3072
+#, c-format
 msgid "Document %1$s inserted."
-msgstr "Документът ще бъде експортиран във формат "
+msgstr "Документът %1$s e включен."
 
 # src/lyxfunc.C:3317
-#: src/BufferView.cpp:2987
+#: src/BufferView.cpp:3074
 #, fuzzy, c-format
 msgid "Could not insert document %1$s"
 msgstr "Неуспех при вмъкването"
 
 # src/lyxfunc.C:3185
-#: src/BufferView.cpp:3483
+#: src/BufferView.cpp:3569
 #, fuzzy, c-format
 msgid ""
 "Could not read the specified document\n"
@@ -33434,13 +32944,13 @@ msgid ""
 msgstr "Неуспех при отварянето"
 
 # src/buffer.C:3331
-#: src/BufferView.cpp:3485
+#: src/BufferView.cpp:3571
 #, fuzzy
 msgid "Could not read file"
 msgstr "Недъзможна е работата с файл: "
 
 # src/frontends/xforms/FormDocument.C:437
-#: src/BufferView.cpp:3492
+#: src/BufferView.cpp:3578
 #, fuzzy, c-format
 msgid ""
 "%1$s\n"
@@ -33448,18 +32958,17 @@ msgid ""
 msgstr " абзаци не могат да бъдат конвертирани"
 
 # src/converter.C:165 src/converter.C:195
-#: src/BufferView.cpp:3493 src/frontends/qt/qt_helpers.cpp:311
+#: src/BufferView.cpp:3579 src/frontends/qt/qt_helpers.cpp:311
 #: src/frontends/qt/qt_helpers.cpp:314 src/frontends/qt/qt_helpers.cpp:320
 #: src/output.cpp:39
-#, fuzzy
 msgid "Could not open file"
-msgstr "Не мога да покажа файла."
+msgstr "Грешка при отваряне на файл."
 
-#: src/BufferView.cpp:3500
+#: src/BufferView.cpp:3586
 msgid "Reading not UTF-8 encoded file"
-msgstr ""
+msgstr "Четене на файл с различно от UTF-8 кодиране"
 
-#: src/BufferView.cpp:3501
+#: src/BufferView.cpp:3587
 msgid ""
 "The file is not UTF-8 encoded.\n"
 "It will be read as local 8Bit-encoded.\n"
@@ -33470,9 +32979,8 @@ msgstr ""
 
 # src/ext_l10n.h:78
 #: src/Changes.cpp:375
-#, fuzzy
 msgid "Uncodable character in author initials"
-msgstr "Специален символ(S)|S"
+msgstr "Символ, който не може да се кодира в инициалите на автора"
 
 #: src/Changes.cpp:376
 #, c-format
@@ -33488,9 +32996,8 @@ msgstr ""
 
 # src/ext_l10n.h:78
 #: src/Changes.cpp:405
-#, fuzzy
 msgid "Uncodable character in author name"
-msgstr "Специален символ(S)|S"
+msgstr "Символ, който не може да се кодира в името на автора"
 
 #: src/Changes.cpp:406
 #, c-format
@@ -33595,7 +33102,7 @@ msgstr "червен"
 
 #: src/Color.cpp:259
 msgid "teal"
-msgstr "синьозелено"
+msgstr "синьозелен"
 
 #: src/Color.cpp:260
 msgid "violet"
@@ -33633,37 +33140,32 @@ msgstr "избран текст"
 
 # src/ext_l10n.h:126
 #: src/Color.cpp:267
-#, fuzzy
 msgid "LaTeX text"
-msgstr "Стил TeX|X"
+msgstr "Текст на LaTeX"
 
 # src/LyXAction.C:261
 #: src/Color.cpp:268
-#, fuzzy
 msgid "Text label 1"
-msgstr "Вмъкни етикет"
+msgstr "текстов етикет"
 
 # src/LyXAction.C:261
 #: src/Color.cpp:269
-#, fuzzy
 msgid "Text label 2"
-msgstr "Вмъкни етикет"
+msgstr "текстов етикет 2"
 
 # src/LyXAction.C:261
 #: src/Color.cpp:270
-#, fuzzy
 msgid "Text label 3"
-msgstr "Вмъкни етикет"
+msgstr "текстов етикет 3"
 
 # src/mathed/math_panel.C:128
 #: src/Color.cpp:271
-#, fuzzy
 msgid "inline completion"
-msgstr "Разстояние"
+msgstr "дописване в реда"
 
 #: src/Color.cpp:273
 msgid "non-unique inline completion"
-msgstr ""
+msgstr "дописване в реда при повече възможности"
 
 #: src/Color.cpp:275
 msgid "previewed snippet"
@@ -33671,9 +33173,8 @@ msgstr "прегледен фрагмент"
 
 # src/ext_l10n.h:246
 #: src/Color.cpp:276
-#, fuzzy
 msgid "note label"
-msgstr "Бел. под линия"
+msgstr "етикет на бележка"
 
 # src/LColor.C:68
 #: src/Color.cpp:277
@@ -33682,81 +33183,69 @@ msgstr "фон на бележка"
 
 # src/ext_l10n.h:202
 #: src/Color.cpp:278
-#, fuzzy
 msgid "comment label"
-msgstr "Коментар"
+msgstr "коментар на етикет"
 
 # src/LColor.C:73
 #: src/Color.cpp:279
-#, fuzzy
 msgid "comment background"
-msgstr "фон на command-inset"
+msgstr "фон на коментар"
 
 # src/insets/inset.C:75
 #: src/Color.cpp:280
-#, fuzzy
 msgid "greyedout inset label"
-msgstr "Отворен inset"
+msgstr "етикет н ацветна бележка"
 
 # src/LColor.C:90
 #: src/Color.cpp:282
-#, fuzzy
 msgid "greyedout inset background"
-msgstr "фон на inset"
+msgstr "фон на цветна бележка "
 
 # src/LColor.C:74
 #: src/Color.cpp:283
-#, fuzzy
 msgid "phantom inset text"
-msgstr "рамка на command-inset"
+msgstr "текст на добавка „фантом“"
 
 #: src/Color.cpp:284
 msgid "shaded box"
-msgstr ""
+msgstr "сянка на рамка"
 
 # src/LColor.C:90
 #: src/Color.cpp:285
-#, fuzzy
 msgid "listings background"
-msgstr "фон на inset"
+msgstr "фон на списъци"
 
 # src/ext_l10n.h:441
 #: src/Color.cpp:286
-#, fuzzy
 msgid "branch label"
-msgstr "Френски"
+msgstr "етикет на разклонение"
 
 # src/ext_l10n.h:246
 #: src/Color.cpp:287
-#, fuzzy
 msgid "footnote label"
-msgstr "Бел. под линия"
+msgstr "етикет на бел. под линия"
 
 # src/LyXAction.C:261
 #: src/Color.cpp:288
-#, fuzzy
 msgid "index label"
-msgstr "Вмъкни етикет"
+msgstr "индексен етикет"
 
 # src/frontends/gnome/FormRef.C:48 src/frontends/xforms/FormRef.C:105
 # src/frontends/xforms/FormRef.C:222 src/frontends/xforms/FormRef.C:245
 #: src/Color.cpp:289
-#, fuzzy
 msgid "margin note label"
-msgstr "Към препратка"
+msgstr "етикен на бележка в полето"
 
 # src/insets/insetbib.C:69 src/insets/insetbib.C:70 src/insets/insetbib.C:210
 # src/insets/insetbib.C:211
 #: src/Color.cpp:290
-#, fuzzy
 msgid "URL label"
-msgstr "Етикет(L):|#L"
+msgstr "URL етикет"
 
 # src/LColor.C:63
 #: src/Color.cpp:291
-#, fuzzy
 msgid "URL text"
-msgstr "текст"
+msgstr "URL текст"
 
 #: src/Color.cpp:292
 msgid "depth bar"
@@ -33764,58 +33253,51 @@ msgstr ""
 
 #: src/Color.cpp:293
 msgid "scroll indicator"
-msgstr ""
+msgstr "индикатор за превъртане"
 
 # src/LColor.C:71
 #: src/Color.cpp:294
 msgid "language"
-msgstr "език"
+msgstr "Език"
 
 # src/LColor.C:74
 #: src/Color.cpp:295
-#, fuzzy
 msgid "command inset"
-msgstr "рамка на command-inset"
+msgstr "команда за добавка"
 
 # src/LColor.C:73
 #: src/Color.cpp:296
-#, fuzzy
 msgid "command inset background"
-msgstr "фон на command-inset"
+msgstr "фон на команда за добавка"
 
 # src/LColor.C:74
 #: src/Color.cpp:297
-#, fuzzy
 msgid "command inset frame"
-msgstr "рамка на command-inset"
+msgstr "рамка на команда за добавка"
 
 # src/LColor.C:74
 #: src/Color.cpp:298
-#, fuzzy
 msgid "command inset (broken reference)"
-msgstr "рамка на command-inset"
+msgstr "команда за добавка (прекъсната връзка)"
 
 # src/LColor.C:108
 #: src/Color.cpp:299
-#, fuzzy
 msgid "button background (broken reference)"
-msgstr "фон на бутон"
+msgstr "фон на бутон (невалидна връзка)"
 
 #: src/Color.cpp:300
 msgid "button frame (broken reference)"
-msgstr ""
+msgstr "рамка на бутон (невалидна връзка)"
 
 # src/LColor.C:108
 #: src/Color.cpp:301
-#, fuzzy
 msgid "button background (broken reference) under focus"
-msgstr "фон на бутон"
+msgstr "фон на бутон (невалидна връзка) на фокус"
 
 # src/ext_l10n.h:78
 #: src/Color.cpp:302
-#, fuzzy
 msgid "special character"
-msgstr "Специален символ(S)|S"
+msgstr "специален символ"
 
 # src/LColor.C:80
 #: src/Color.cpp:303
@@ -33914,20 +33396,18 @@ msgstr "добавка рамка"
 
 # src/frontends/xforms/FormError.C:26
 #: src/Color.cpp:321
-#, fuzzy
 msgid "LaTeX error"
-msgstr "LaTeX Грешка"
+msgstr "грешка на LaTeX"
 
 # src/LColor.C:93
 #: src/Color.cpp:322
 msgid "end-of-line marker"
-msgstr "маркер край-на-ред"
+msgstr "маркер за край на ред"
 
 # src/LColor.C:94
 #: src/Color.cpp:323
-#, fuzzy
 msgid "appendix marker"
-msgstr "ред на приложение"
+msgstr "маркер за приложение"
 
 # src/lyx_gui.C:347
 #: src/Color.cpp:324
@@ -33937,35 +33417,33 @@ msgstr "Без промяна"
 
 # src/LColor.C:65
 #: src/Color.cpp:325
-#, fuzzy
 msgid "deleted text (output)"
-msgstr "Latex"
+msgstr "изтрит текст (краен документ)"
 
 # src/LColor.C:65
 #: src/Color.cpp:326
-#, fuzzy
 msgid "added text (output)"
-msgstr "Latex"
+msgstr "добавен текст (краен документ)"
 
 #: src/Color.cpp:327
-msgid "added text (workarea, 1st author)"
-msgstr ""
+msgid "changed text (workarea, 1st author)"
+msgstr "променен текст (работна среда, 1-ви автор)"
 
 #: src/Color.cpp:328
-msgid "added text (workarea, 2nd author)"
-msgstr ""
+msgid "changed text (workarea, 2nd author)"
+msgstr "променен текст (работна среда, 2-ри автор)"
 
 #: src/Color.cpp:329
-msgid "added text (workarea, 3rd author)"
-msgstr ""
+msgid "changed text (workarea, 3rd author)"
+msgstr "променен текст (работна среда, 3-ти автор)"
 
 #: src/Color.cpp:330
-msgid "added text (workarea, 4th author)"
-msgstr ""
+msgid "changed text (workarea, 4th author)"
+msgstr "променен текст (работна среда, 4-ти автор)"
 
 #: src/Color.cpp:331
-msgid "added text (workarea, 5th author)"
-msgstr ""
+msgid "changed text (workarea, 5th author)"
+msgstr "променен текст (работна среда, 5-ти автор)"
 
 # src/LColor.C:65
 #: src/Color.cpp:332
@@ -33979,15 +33457,13 @@ msgstr ""
 
 # src/LColor.C:97
 #: src/Color.cpp:334
-#, fuzzy
 msgid "table line"
 msgstr "ред на таблица"
 
 # src/LColor.C:97
 #: src/Color.cpp:335
-#, fuzzy
 msgid "table on/off line"
-msgstr "ред на таблица"
+msgstr "ред на таблица вкл./изкл."
 
 # src/LColor.C:102
 #: src/Color.cpp:336
@@ -34055,7 +33531,7 @@ msgstr "наследяване"
 msgid "ignore"
 msgstr "игнориране"
 
-#: src/Converter.cpp:306
+#: src/Converter.cpp:312
 #, c-format
 msgid ""
 "<p>The following LaTeX backend has been configured to allow execution of "
@@ -34066,11 +33542,11 @@ msgid ""
 msgstr ""
 
 # src/lyx_gui.C:347
-#: src/Converter.cpp:315
+#: src/Converter.cpp:321
 msgid "Security Warning"
 msgstr "Предупреждение за сигурността"
 
-#: src/Converter.cpp:328
+#: src/Converter.cpp:334
 #, c-format
 msgid ""
 "<p>The following LaTeX backend has been requested to allow execution of "
@@ -34079,7 +33555,7 @@ msgid ""
 "ones, if instructed to do so by a maliciously crafted LyX document.</p>"
 msgstr ""
 
-#: src/Converter.cpp:335
+#: src/Converter.cpp:341
 #, c-format
 msgid ""
 "<p>The requested operation requires the use of a converter from %2$s to %3$s:"
@@ -34092,11 +33568,11 @@ msgstr ""
 "подаде зловредно написан LyX документ тази външна програма може да извърши "
 "произволни, включително и опасни, операции във вашата операционна система."
 
-#: src/Converter.cpp:345
+#: src/Converter.cpp:351
 msgid "An external converter is disabled for security reasons"
 msgstr "Външна конвертираща програма е изключена от съображения за сигурност"
 
-#: src/Converter.cpp:347
+#: src/Converter.cpp:353
 msgid ""
 "<p><b>Your current preference settings forbid its execution.</b></p><p>(To "
 "change this setting, go to <i>Preferences &#x25b9; File Handling &#x25b9; "
@@ -34108,21 +33584,21 @@ msgstr ""
 "<Работа с файлове &#x25b9; Конвертиране &#x25b9; </i> и в полето "
 "<i>Сигурност</i> премахнете <i>Забрани конвертори с „needauth“</i></p>"
 
-#: src/Converter.cpp:356
+#: src/Converter.cpp:362
 msgid "A LaTeX backend requires your authorization"
 msgstr ""
 
-#: src/Converter.cpp:357
+#: src/Converter.cpp:363
 msgid "An external converter requires your authorization"
 msgstr "Външна програма изисква вашето позволение"
 
-#: src/Converter.cpp:360
+#: src/Converter.cpp:366
 msgid ""
 "<p>Should LaTeX backends be allowed to run external programs?</p><p><b>Allow "
 "them only if you trust the origin/sender of the LyX document!</b></p>"
 msgstr ""
 
-#: src/Converter.cpp:363
+#: src/Converter.cpp:369
 msgid ""
 "<p>Would you like to run this converter?</p><p><b>Only run if you trust the "
 "origin/sender of the LyX document!</b></p>"
@@ -34131,69 +33607,70 @@ msgstr ""
 "знаете произхода документа."
 
 # src/lyx_cb.C:263
-#: src/Converter.cpp:367
+#: src/Converter.cpp:373
 #, fuzzy
 msgid "Do &not allow"
 msgstr "Не се зарежда"
 
 # src/lyx_cb.C:263
-#: src/Converter.cpp:367
+#: src/Converter.cpp:373
 msgid "Do &not run"
 msgstr "Забраняване"
 
 # src/LColor.C:60
-#: src/Converter.cpp:368
+#: src/Converter.cpp:374
 #, fuzzy
 msgid "A&llow"
 msgstr "жълт"
 
-#: src/Converter.cpp:368
+#: src/Converter.cpp:374
 msgid "&Run"
 msgstr "Позволяване"
 
 # src/LyXAction.C:141
-#: src/Converter.cpp:370
+#: src/Converter.cpp:376
 msgid "&Always allow for this document"
 msgstr "Позволяване винаги само за този документ"
 
 # src/LyXAction.C:141
-#: src/Converter.cpp:371
+#: src/Converter.cpp:377
 #, fuzzy
 msgid "&Always run for this document"
 msgstr "Нов документ"
 
 # src/ext_l10n.h:93
-#: src/Converter.cpp:441 src/Converter.cpp:686 src/Converter.cpp:715
+#: src/Converter.cpp:447 src/Converter.cpp:693 src/Converter.cpp:722
 #, fuzzy
 msgid "Converter killed"
 msgstr "Файлов кеш за конвертора"
 
-#: src/Converter.cpp:442 src/Converter.cpp:687 src/Converter.cpp:716
+#: src/Converter.cpp:448 src/Converter.cpp:694 src/Converter.cpp:723
 #, c-format
 msgid ""
 "The following converter was killed by the user.\n"
 " %1$s\n"
 msgstr ""
+"Следната програма беше прекъсната от потребителя.\n"
+" %1$s\n"
 
 # src/converter.C:552 src/converter.C:645
-#: src/Converter.cpp:461 src/Converter.cpp:744 src/Converter.cpp:767
-#: src/Converter.cpp:809
-#, fuzzy
+#: src/Converter.cpp:467 src/Converter.cpp:751 src/Converter.cpp:774
+#: src/Converter.cpp:816
 msgid "Cannot convert file"
-msgstr "Невъзможно е преобразуването на файла"
+msgstr "Неуспех при преобразуване на файл"
 
-#: src/Converter.cpp:462
+#: src/Converter.cpp:468
 #, c-format
 msgid ""
 "No information for converting %1$s format files to %2$s.\n"
 "Define a converter in the preferences."
 msgstr ""
 
-#: src/Converter.cpp:567 src/frontends/qt/GuiDocument.cpp:1990
+#: src/Converter.cpp:573 src/frontends/qt/GuiDocument.cpp:2004
 msgid "Pygments driver command not found!"
 msgstr ""
 
-#: src/Converter.cpp:568 src/frontends/qt/GuiDocument.cpp:1991
+#: src/Converter.cpp:574 src/frontends/qt/GuiDocument.cpp:2005
 msgid ""
 "The driver command necessary to use the minted package\n"
 "(pygmentize) has not been found. Make sure you have\n"
@@ -34207,26 +33684,26 @@ msgid ""
 msgstr ""
 
 # src/converter.C:188 src/converter.C:618
-#: src/Converter.cpp:662 src/Format.cpp:708 src/Format.cpp:778
+#: src/Converter.cpp:669 src/Format.cpp:708 src/Format.cpp:778
 msgid "Executing command: "
 msgstr "Изпълняване на команда:"
 
-#: src/Converter.cpp:727
+#: src/Converter.cpp:734
 msgid "Process Killed"
-msgstr ""
+msgstr "Прекъснат процес"
 
-#: src/Converter.cpp:728
+#: src/Converter.cpp:735
 #, c-format
 msgid ""
 "The conversion process was killed while running:\n"
 "%1$s"
 msgstr ""
 
-#: src/Converter.cpp:733
+#: src/Converter.cpp:740
 msgid "Process Timed Out"
-msgstr ""
+msgstr "Просрочено време на процес"
 
-#: src/Converter.cpp:734
+#: src/Converter.cpp:741
 #, c-format
 msgid ""
 "The conversion process:\n"
@@ -34235,17 +33712,17 @@ msgid ""
 msgstr ""
 
 # src/ext_l10n.h:131
-#: src/Converter.cpp:739
+#: src/Converter.cpp:746
 msgid "Build errors"
 msgstr "Грешки при компилация"
 
 # src/converter.C:642
-#: src/Converter.cpp:740
+#: src/Converter.cpp:747
 msgid "There were errors during the build process."
 msgstr "Имаше грешки по време на компилирането."
 
 # src/lyx_main.C:605
-#: src/Converter.cpp:745
+#: src/Converter.cpp:752
 #, c-format
 msgid ""
 "An error occurred while running:\n"
@@ -34253,51 +33730,50 @@ msgid ""
 msgstr ""
 
 # src/support/filetools.C:453
-#: src/Converter.cpp:768
+#: src/Converter.cpp:775
 #, c-format
 msgid "Could not move a temporary directory from %1$s to %2$s."
 msgstr "Не може да се премести временната директория от %1$s на %2$s."
 
 # src/support/filetools.C:453
-#: src/Converter.cpp:811
+#: src/Converter.cpp:818
 #, fuzzy, c-format
 msgid "Could not copy a temporary file from %1$s to %2$s."
 msgstr "Грешка! Не мога да създам временна директория: "
 
 # src/support/filetools.C:453
-#: src/Converter.cpp:812
+#: src/Converter.cpp:819
 #, fuzzy, c-format
 msgid "Could not move a temporary file from %1$s to %2$s."
 msgstr "Грешка! Не мога да създам временна директория: "
 
 # src/converter.C:816
-#: src/Converter.cpp:852
+#: src/Converter.cpp:859
 msgid "Running LaTeX..."
 msgstr "Стратирам LaTeX..."
 
 # src/exporter.C:89
-#: src/Converter.cpp:869
+#: src/Converter.cpp:876
 #, fuzzy
 msgid "Export canceled"
 msgstr "Документът ще бъде експортиран във формат "
 
-#: src/Converter.cpp:870
+#: src/Converter.cpp:877
 msgid "The export process was terminated by the user."
 msgstr ""
 
 # src/form1.C:33
-#: src/Converter.cpp:880
-#, fuzzy
+#: src/Converter.cpp:887
 msgid "Undefined reference"
-msgstr "&Неопределени разклонения"
+msgstr "Неопределена препратка"
 
-#: src/Converter.cpp:881
+#: src/Converter.cpp:888
 msgid ""
 "Undefined references or citations were found during the build.\n"
 "Please check the warnings in the LaTeX log (Document > LaTeX Log)."
 msgstr ""
 
-#: src/Converter.cpp:893
+#: src/Converter.cpp:900
 #, c-format
 msgid ""
 "LaTeX did not run successfully. Additionally, LyX could not locate the LaTeX "
@@ -34305,12 +33781,12 @@ msgid ""
 msgstr ""
 
 # src/ext_l10n.h:133
-#: src/Converter.cpp:896 src/Converter.cpp:903
+#: src/Converter.cpp:903 src/Converter.cpp:910
 #, fuzzy
 msgid "LaTeX failed"
 msgstr "LaTeX Протокол(L)|L"
 
-#: src/Converter.cpp:899
+#: src/Converter.cpp:906
 #, c-format
 msgid ""
 "The external program\n"
@@ -34322,28 +33798,27 @@ msgstr ""
 # "Външната програма\n"
 # ""
 # src/frontends/kde/tocdlg.C:57
-#: src/Converter.cpp:905
+#: src/Converter.cpp:912
 msgid "Output is empty"
 msgstr "Няма изходящи данни"
 
-#: src/Converter.cpp:906
+#: src/Converter.cpp:913
 msgid "No output file was generated."
 msgstr "Не беше съставен изходен файл."
 
 # src/bufferview_funcs.C:271
 #: src/Cursor.cpp:416 src/Text.cpp:2141
 msgid ", Inset: "
-msgstr ", Добавка: "
+msgstr ", добавка: "
 
 #: src/Cursor.cpp:417 src/Text.cpp:2143
 msgid ", Cell: "
-msgstr ", Клетка: "
+msgstr ", клетка: "
 
 # src/ext_l10n.h:320
 #: src/Cursor.cpp:418 src/Text.cpp:2146
-#, fuzzy
 msgid ", Position: "
-msgstr "Допускане"
+msgstr ", позиция: "
 
 #: src/CutAndPaste.cpp:206
 #, c-format
@@ -34361,9 +33836,8 @@ msgstr ""
 
 # src/ext_l10n.h:78
 #: src/CutAndPaste.cpp:247
-#, fuzzy
 msgid "Uncodable content"
-msgstr "Специален символ(S)|S"
+msgstr "Съдържание, които не може да се кодира"
 
 # src/buffer.C:534
 #: src/CutAndPaste.cpp:437
@@ -34372,6 +33846,9 @@ msgid ""
 "The pasted branch \"%1$s\" is undefined.\n"
 "Do you want to add it to the document's branch list?"
 msgstr ""
+"Поставеното разклонение „%1$s“ е недефинирано.\n"
+"Желаете ли да добавите разклонението към списъка "
+"с разклонения на документа?"
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
 #: src/CutAndPaste.cpp:440
@@ -34380,24 +33857,23 @@ msgstr "Неопределено разклонение"
 
 #: src/CutAndPaste.cpp:441
 msgid "&Don't Add"
-msgstr ""
+msgstr "&Не се добавя"
 
 # src/lyx_cb.C:263
 #: src/CutAndPaste.cpp:835 src/Text.cpp:411
-#, fuzzy, c-format
+#, c-format
 msgid "Layout `%1$s' was not found."
-msgstr "Документът не може да бъде записан!"
+msgstr "Не е открито оформление за „%1$s“."
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1261
 #: src/CutAndPaste.cpp:836 src/Text.cpp:412
-#, fuzzy
 msgid "Layout Not Found"
-msgstr " оформление"
+msgstr "Не е открито оформление на елемент"
 
 #: src/CutAndPaste.cpp:867
 #, c-format
 msgid "Flex inset %1$s is undefined after reloading `%2$s' layout."
-msgstr ""
+msgstr "Добавката %1$s не е дефинирана след презареждане на оформлението „%2$s“."
 
 #: src/CutAndPaste.cpp:870
 #, c-format
@@ -34408,36 +33884,35 @@ msgstr ""
 
 # src/insets/insettext.C:478
 #: src/CutAndPaste.cpp:875
-#, fuzzy
 msgid "Undefined flex inset"
-msgstr "Отворен Text Inset"
+msgstr "Недефинирана текстова добавка"
 
 # src/buffer.C:534
 #: src/Exporter.cpp:45
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The file %1$s already exists.\n"
 "\n"
 "Do you want to overwrite that file?"
-msgstr "Документът използва непознат текстклас \""
+msgstr ""
+"Файлът %1$s вече съществува.\n"
+"\n"
+"Желаете ли да го презапишете?"
 
 # src/frontends/xforms/form_preferences.C:111 src/lyxfont.C:42
 #: src/Exporter.cpp:48
-#, fuzzy
 msgid "Overwrite file?"
-msgstr "Машинопис"
+msgstr "Презаписване на файл?"
 
 # src/ext_l10n.h:191
 #: src/Exporter.cpp:50
-#, fuzzy
 msgid "&Keep file"
-msgstr "Заглавие"
+msgstr "Запазване на файл"
 
 # src/frontends/xforms/form_preferences.C:111 src/lyxfont.C:42
 #: src/Exporter.cpp:51
-#, fuzzy
 msgid "Overwrite &all"
-msgstr "Машинопис"
+msgstr "Презаписване на всички"
 
 # src/frontends/kde/FormCitation.C:166 src/frontends/kde/FormRef.C:203
 # src/frontends/kde/citationdlg.C:87 src/frontends/kde/dlg/indexdlgdata.C:85
@@ -34445,49 +33920,47 @@ msgstr "Машинопис"
 # src/frontends/kde/dlg/printdlgdata.C:133
 # src/frontends/kde/dlg/tabcreatedlgdata.C:60 src/frontends/kde/indexdlg.C:65
 # src/frontends/kde/refdlg.C:92 src/frontends/kde/urldlg.C:58
-#: src/Exporter.cpp:51 src/frontends/qt/GuiView.cpp:724
-#, fuzzy
+#: src/Exporter.cpp:51 src/frontends/qt/GuiView.cpp:792
 msgid "&Cancel export"
-msgstr "(&C)Отказ"
+msgstr "Оказване на експортиране"
 
 # src/converter.C:165 src/converter.C:195
 #: src/Exporter.cpp:97
-#, fuzzy
 msgid "Couldn't copy file"
-msgstr "Не мога да покажа файла."
+msgstr "Неуспех при копиране на файл"
 
 #: src/Exporter.cpp:98
 #, c-format
 msgid "Copying %1$s to %2$s failed."
-msgstr ""
+msgstr "Копирането от %1$s в %2$s пропадна."
 
 # src/lyxfont.C:413
 #: src/Font.cpp:141
-#, fuzzy, c-format
+#, c-format
 msgid "Language: %1$s, "
-msgstr "Език: "
+msgstr "Език: %1$s, "
 
 # src/lyxfont.C:415
 #: src/Font.cpp:146
-#, fuzzy, c-format
+#, c-format
 msgid "Number %1$s"
-msgstr " Номер "
+msgstr "Номер %1$s"
 
 # src/frontends/xforms/form_preferences.C:105 src/lyxfont.C:42
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:148
-#: src/frontends/qt/GuiDocument.cpp:4888 src/frontends/qt/GuiListings.cpp:163
+#: src/frontends/qt/GuiDocument.cpp:4908 src/frontends/qt/GuiListings.cpp:167
 msgid "Roman"
 msgstr "Серифна"
 
 # src/frontends/xforms/form_preferences.C:108
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:4888 src/frontends/qt/GuiListings.cpp:163
+#: src/frontends/qt/GuiDocument.cpp:4908 src/frontends/qt/GuiListings.cpp:167
 msgid "Sans Serif"
 msgstr "Безсерифна"
 
 # src/frontends/xforms/form_preferences.C:111 src/lyxfont.C:42
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:150
-#: src/frontends/qt/GuiDocument.cpp:4888 src/frontends/qt/GuiListings.cpp:163
+#: src/frontends/qt/GuiDocument.cpp:4908 src/frontends/qt/GuiListings.cpp:167
 msgid "Typewriter"
 msgstr "Равноширока"
 
@@ -34511,7 +33984,7 @@ msgstr "Средно"
 # src/lyxfont.C:51
 #: src/FontInfo.cpp:51 src/frontends/qt/GuiCharacter.cpp:52
 msgid "Upright"
-msgstr "Нормален"
+msgstr "Изправен"
 
 # src/lyxfont.C:51
 #: src/FontInfo.cpp:51 src/frontends/qt/GuiCharacter.cpp:53
@@ -34526,7 +33999,7 @@ msgstr "Наклонен"
 # src/lyxfont.C:51
 #: src/FontInfo.cpp:51
 msgid "Smallcaps"
-msgstr "Малки букви"
+msgstr "Малки главни букви"
 
 # src/lyxfont.C:57
 #: src/FontInfo.cpp:56 src/frontends/qt/GuiCharacter.cpp:75
@@ -34551,33 +34024,33 @@ msgstr "Открояване на текста %1$s, "
 
 # src/lyxfont.C:404
 #: src/FontInfo.cpp:620
-#, fuzzy, c-format
+#, c-format
 msgid "Underline %1$s, "
-msgstr "Подчертаване "
+msgstr "Подчертаване %1$s, "
 
 # src/lyxfont.C:404
 #: src/FontInfo.cpp:623
-#, fuzzy, c-format
+#, c-format
 msgid "Double underline %1$s, "
-msgstr "Подчертаване "
+msgstr "Двойно подчертаване %1$s, "
 
 # src/lyxfont.C:404
 #: src/FontInfo.cpp:626
-#, fuzzy, c-format
+#, c-format
 msgid "Wavy underline %1$s, "
-msgstr "Подчертаване "
+msgstr "Вълнообразно подчертаване %1$s, "
 
 # src/lyxfont.C:407
 #: src/FontInfo.cpp:629
-#, fuzzy, c-format
+#, c-format
 msgid "Strike out %1$s, "
-msgstr "Съществително "
+msgstr "Зачертаване %1$s, "
 
 # src/lyxfont.C:407
 #: src/FontInfo.cpp:632
-#, fuzzy, c-format
+#, c-format
 msgid "Cross out %1$s, "
-msgstr "Съществително "
+msgstr "Задраскване %1$s, "
 
 # src/lyxfont.C:407
 #: src/FontInfo.cpp:635
@@ -34592,7 +34065,7 @@ msgid "Cannot view file"
 msgstr "Не мога да покажа файла."
 
 # src/frontends/xforms/xform_helpers.C:347
-#: src/Format.cpp:633 src/frontends/qt/GuiView.cpp:3794
+#: src/Format.cpp:633 src/frontends/qt/GuiView.cpp:3986
 #, c-format
 msgid "File does not exist: %1$s"
 msgstr "Файлът %1$s не съществува!"
@@ -34728,15 +34201,13 @@ msgstr "Изгради програма(B)|B"
 
 # src/ext_l10n.h:131
 #: src/LaTeX.cpp:1665
-#, fuzzy
 msgid "Xindy error: "
-msgstr "Изгради програма(B)|B"
+msgstr "Грешка в xindy:"
 
 # src/lyx_cb.C:263
 #: src/LaTeXFonts.cpp:238 src/LaTeXFonts.cpp:315
-#, fuzzy
 msgid "Font not available"
-msgstr "Документът не може да бъде записан!"
+msgstr "Липсващ шрифт"
 
 #: src/LaTeXFonts.cpp:239 src/LaTeXFonts.cpp:316
 #, c-format
@@ -34747,9 +34218,8 @@ msgstr ""
 
 # src/buffer.C:3331
 #: src/LyX.cpp:145
-#, fuzzy
 msgid "Could not read configuration file"
-msgstr "Недъзможна е работата с файл: "
+msgstr "Неможе да се прочете конфигурационен файл"
 
 #: src/LyX.cpp:146
 #, c-format
@@ -34764,48 +34234,45 @@ msgstr ""
 
 # src/lyx_cb.C:263
 #: src/LyX.cpp:399
-#, fuzzy
 msgid "The following files could not be loaded:"
-msgstr "Документът не може да бъде записан!"
+msgstr "Следните файлове не могат да бъдат заредени:"
 
 # src/support/filetools.C:453
 #: src/LyX.cpp:440
-#, fuzzy, c-format
+#, c-format
 msgid "%1$s does not appear like a LyX created temporary directory."
-msgstr "Грешка! Не мога да създам временна директория: "
+msgstr "%1$s не се появява като LyX създаде временна директория."
 
 # src/support/filetools.C:453
 #: src/LyX.cpp:442
-#, fuzzy
 msgid "Cannot remove temporary directory"
-msgstr "Грешка! Не мога да създам временна директория: "
+msgstr "Неуспешно премахване на временна директория"
 
 # src/support/filetools.C:453
 #: src/LyX.cpp:446
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to remove the temporary directory %1$s"
-msgstr "Грешка! Не мога да създам временна директория: "
+msgstr "Неупешно премахване на временна директория „%1$s“"
 
 # src/lyx_main.C:95
 #: src/LyX.cpp:475
-#, fuzzy, c-format
+#, c-format
 msgid "Wrong command line option `%1$s'. Exiting."
-msgstr "Грешна опция от командния ред `"
+msgstr "Грешна опция от командния ред „%1s“. Излизане."
 
 # src/lyxfunc.C:3216
 #: src/LyX.cpp:493
-#, fuzzy
 msgid "Missing filename for this operation."
-msgstr " Файл за импортиране"
+msgstr "Липсва име на файл за тази операция."
 
 #: src/LyX.cpp:542
 #, c-format
 msgid "LyX failed to load the following file: %1$s"
-msgstr ""
+msgstr "Lyx неуспя да зареди следния файл: %1$s"
 
 #: src/LyX.cpp:589
 msgid "No textclass is found"
-msgstr ""
+msgstr "Не са открити класове документи"
 
 #: src/LyX.cpp:590
 msgid ""
@@ -34813,35 +34280,40 @@ msgid ""
 "found. You can either try to reconfigure LyX normally, try to reconfigure "
 "without checking your LaTeX installation, or continue."
 msgstr ""
+"LyX ще има само минимална функционалност тъй като не бяха открити класове "
+"с документи. Можете да преконфигурирате LyX автоматично, да го преконфигурирате"
+"без проверка на LaTeX инсталацията или да продължите."
 
 # src/ext_l10n.h:37 src/ext_l10n.h:52
 #: src/LyX.cpp:594
-#, fuzzy
 msgid "&Reconfigure"
-msgstr "Ново конфигуриране(R)|R"
+msgstr "&Преконфигуриране"
 
 # src/ext_l10n.h:265
 #: src/LyX.cpp:595
 msgid "&Without LaTeX"
-msgstr "Без LaTeX"
+msgstr "&Без LaTeX"
 
 # src/ext_l10n.h:205
-#: src/LyX.cpp:596 src/VCBackend.cpp:968 src/VCBackend.cpp:972
-#, fuzzy
+#: src/LyX.cpp:596 src/VCBackend.cpp:974 src/VCBackend.cpp:978
 msgid "&Continue"
-msgstr "Условие"
+msgstr "П&родължаване"
 
 #: src/LyX.cpp:699
 msgid ""
 "SIGHUP signal caught!\n"
 "Bye."
 msgstr ""
+"Прихванат сигнал SIGHUP!\n"
+"Довиждане."
 
 #: src/LyX.cpp:703
 msgid ""
 "SIGFPE signal caught!\n"
 "Bye."
 msgstr ""
+"Прихванат сигнал SIGFPE!\n"
+"Довиждане."
 
 #: src/LyX.cpp:706
 msgid ""
@@ -34854,7 +34326,7 @@ msgstr ""
 
 #: src/LyX.cpp:722
 msgid "LyX crashed!"
-msgstr ""
+msgstr "Lyx се срина!"
 
 # src/frontends/kde/FormPrint.C:118
 #: src/LyX.cpp:756
@@ -34863,9 +34335,8 @@ msgstr "LyX: "
 
 # src/support/filetools.C:453
 #: src/LyX.cpp:1024
-#, fuzzy
 msgid "Could not create temporary directory"
-msgstr "Грешка! Не мога да създам временна директория: "
+msgstr "Неуспешно създаване на временна директория"
 
 #: src/LyX.cpp:1025
 #, c-format
@@ -34877,9 +34348,8 @@ msgstr ""
 
 # src/lyx_main.C:575
 #: src/LyX.cpp:1089
-#, fuzzy
 msgid "Missing user LyX directory"
-msgstr "LyX: Създавам директория "
+msgstr "Липсваща потребителска LyX директория"
 
 #: src/LyX.cpp:1090
 #, c-format
@@ -34887,20 +34357,21 @@ msgid ""
 "You have specified a non-existent user LyX directory, %1$s.\n"
 "It is needed to keep your own configuration."
 msgstr ""
+"Посочена е несъществуваща потребителска LyX директория „%1$s“.\n"
+"Тя е необходима зя да се запази вашата лична конфигурация."
 
 # src/frontends/xforms/xform_helpers.C:252
 #: src/LyX.cpp:1095
-#, fuzzy
 msgid "&Create directory"
-msgstr "Невъзможност за четене на тази директория."
+msgstr "&Създаване на директория"
 
 #: src/LyX.cpp:1096
 msgid "&Exit LyX"
-msgstr "&(E)Изход LyX"
+msgstr "&Излизане от LyX"
 
 #: src/LyX.cpp:1097
 msgid "No user LyX directory. Exiting."
-msgstr ""
+msgstr "Няма потребителска LyX директория. Излизане."
 
 # src/lyx_main.C:576
 #: src/LyX.cpp:1101
@@ -34913,20 +34384,21 @@ msgid ""
 "Failed to create directory. Perhaps wrong -userdir option?\n"
 "Exiting."
 msgstr ""
+"Неуспешно създаване на директория. Вероятно грешна опция „-userdir“!\n"
+"Излизане."
 
 # src/lyx_main.C:749
 #: src/LyX.cpp:1179
 msgid "List of supported debug flags:"
 msgstr "Списък на поддържаните debug опции:"
 
-# src/lyx_main.C:704
-#: src/LyX.cpp:1183
-#, fuzzy, c-format
-msgid "Setting debug level to %1$s"
-msgstr "Установяване на ниво за съобщения за откриване на грешки на %1$s"
+#: src/LyX.cpp:1188
+#, c-format
+msgid "Bad debug value `%1$s'. Exiting."
+msgstr "Неправилна стойност за отстраняване на грешки „%1$s. Излизане.“"
 
 # src/lyx_main.C:716
-#: src/LyX.cpp:1194
+#: src/LyX.cpp:1199
 msgid ""
 "Usage: lyx [ command line switches ] [ name.lyx ... ]\n"
 "Command line switches (case sensitive):\n"
@@ -35034,77 +34506,67 @@ msgstr ""
 "\t-version           обобщение на версия и информация за компилирането.\n"
 "Вижте man страницата на LyX за повече информация."
 
-#: src/LyX.cpp:1247 src/frontends/qt/GuiAbout.cpp:213
+#: src/LyX.cpp:1252 src/frontends/qt/GuiAbout.cpp:222
 msgid "  Git commit hash "
 msgstr "  Хеш на Git за промяна "
 
 # src/lyxfunc.C:1132
-#: src/LyX.cpp:1258 src/support/Package.cpp:644
-#, fuzzy
+#: src/LyX.cpp:1263 src/support/Package.cpp:645
 msgid "No system directory"
-msgstr "Потребителска директория: "
+msgstr "Липсва системна директория"
 
 # src/lyx_main.C:761
-#: src/LyX.cpp:1259
-#, fuzzy
+#: src/LyX.cpp:1264
 msgid "Missing directory for -sysdir switch"
-msgstr "Липсваща директория за -sysdir опцията!"
+msgstr "Липсва директорията от опцията „-sysdir“!"
 
 # src/lyxfunc.C:1132
-#: src/LyX.cpp:1270
-#, fuzzy
+#: src/LyX.cpp:1275
 msgid "No user directory"
-msgstr "Потребителска директория: "
+msgstr "Липсва потребителска директория"
 
 # src/lyx_main.C:772
-#: src/LyX.cpp:1271
-#, fuzzy
+#: src/LyX.cpp:1276
 msgid "Missing directory for -userdir switch"
-msgstr "Липсваща директория за -userdir опцията!"
+msgstr "Липсва директорията от опцията „-userdir“!"
 
 # src/LyXAction.C:167
-#: src/LyX.cpp:1282
-#, fuzzy
+#: src/LyX.cpp:1287
 msgid "Incomplete command"
-msgstr "Изпълни команда"
+msgstr "Непълна команда"
 
 # src/lyx_main.C:795
-#: src/LyX.cpp:1283
-#, fuzzy
+#: src/LyX.cpp:1288
 msgid "Missing command string after --execute switch"
-msgstr "Липсваща команда след -x опцията!"
+msgstr "Липсващ низ за команда след опцията „--execute“."
 
 # src/lyx_main.C:808
-#: src/LyX.cpp:1294
-#, fuzzy
+#: src/LyX.cpp:1299
 msgid "Missing file type [eg latex, ps...] after --export-to switch"
-msgstr "Липсващ тип на файл [напр. latex, ps...] след "
+msgstr "Липсващ тип на файл (напр. latex, ps...) след опцията „--export-to“."
 
 # src/lyx_main.C:808
-#: src/LyX.cpp:1299
-#, fuzzy
+#: src/LyX.cpp:1304
 msgid "Missing destination filename after --export-to switch"
-msgstr "Липсващ тип на файл [напр. latex, ps...] след "
+msgstr "Липсващо име на файл за резултата след опцията „--export-to“."
 
 # src/lyx_main.C:808
-#: src/LyX.cpp:1312
-#, fuzzy
+#: src/LyX.cpp:1317
 msgid "Missing file type [eg latex, ps...] after --export switch"
-msgstr "Липсващ тип на файл [напр. latex, ps...] след "
+msgstr "Липсващ тип на файл [напр. latex, ps...] след опцията „--export“. "
 
 # src/lyx_main.C:808
-#: src/LyX.cpp:1325
-#, fuzzy
+#: src/LyX.cpp:1330
 msgid "Missing file type [eg latex, ps...] after --import switch"
-msgstr "Липсващ тип на файл [напр. latex, ps...] след "
+msgstr "Липсващ тип на файл [напр. latex, ps...] след опцията „--import“."
 
 # src/lyxfunc.C:3216
-#: src/LyX.cpp:1330
+#: src/LyX.cpp:1335
 msgid "Missing filename for --import"
-msgstr "Липсва има на файл за опцията „--import“ (импортиране)."
+msgstr "Липсващо име на файл за опцията „--import“ (импортиране)."
 
 # src/lyxrc.C:1845
-#: src/LyXRC.cpp:3034
+#: src/LyXRC.cpp:3106
 msgid ""
 "Consider run-together words, such as \"diskdrive\" for \"disk drive\", as "
 "legal words?"
@@ -35113,7 +34575,7 @@ msgstr ""
 "програма“ и „офисцентър“ за „офис център“)?"
 
 # src/lyxrc.C:1858
-#: src/LyXRC.cpp:3038
+#: src/LyXRC.cpp:3110
 msgid ""
 "Specify an alternate language. The default is to use the language of the "
 "document."
@@ -35121,7 +34583,7 @@ msgstr ""
 "Изберете алтернативен език. По подразбиране се използва езика на документа."
 
 # src/lyxrc.C:1782
-#: src/LyXRC.cpp:3046
+#: src/LyXRC.cpp:3118
 msgid ""
 "De-select if you don't want the current selection to be replaced "
 "automatically by what you type."
@@ -35130,7 +34592,7 @@ msgstr ""
 "от това, което пишете."
 
 # src/lyxrc.C:1782
-#: src/LyXRC.cpp:3050
+#: src/LyXRC.cpp:3122
 #, fuzzy
 msgid ""
 "De-select if you don't want the class options to be reset to defaults after "
@@ -35140,13 +34602,13 @@ msgstr ""
 "от това, което пишете."
 
 # src/lyxrc.C:1758
-#: src/LyXRC.cpp:3054
+#: src/LyXRC.cpp:3126
 msgid ""
 "The time interval between auto-saves (in seconds). 0 means no auto-save."
 msgstr "Интервалът между автозаписите (в секунди). 0 означава без автозапис."
 
 # src/lyxrc.C:1896
-#: src/LyXRC.cpp:3061
+#: src/LyXRC.cpp:3133
 msgid ""
 "The path for storing backup files. If it is an empty string, LyX will store "
 "the backup file in the same directory as the original file."
@@ -35154,18 +34616,18 @@ msgstr ""
 "Път за съхранение на резервните копия.  Ако е празен низ, LyX ще запазва "
 "резервното копие в същата директория, където е оригиналният файл."
 
-#: src/LyXRC.cpp:3065
+#: src/LyXRC.cpp:3137
 msgid ""
 "Define the options of bibtex (cf. man bibtex) or select an alternative "
 "compiler (e.g. mlbibtex or bibulus)."
 msgstr ""
 
-#: src/LyXRC.cpp:3069
+#: src/LyXRC.cpp:3141
 msgid "Define the options of the bibtex program for PLaTeX (Japanese LaTeX)."
 msgstr ""
 
 # src/lyxrc.C:1795
-#: src/LyXRC.cpp:3073
+#: src/LyXRC.cpp:3145
 msgid ""
 "Keybindings file. Can either specify an absolute path, or LyX will look in "
 "its global and local bind/ directories."
@@ -35174,12 +34636,12 @@ msgstr ""
 "ще търси в глобалната и локалната bind/ директории."
 
 # src/lyxrc.C:1831
-#: src/LyXRC.cpp:3077
+#: src/LyXRC.cpp:3149
 msgid "Select to check whether the lastfiles still exist."
 msgstr "Изберете за проверка дали последните файлове още съществуват."
 
 # src/lyxrc.C:1876
-#: src/LyXRC.cpp:3081
+#: src/LyXRC.cpp:3153
 msgid ""
 "Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -"
 "n38\" Refer to the ChkTeX documentation."
@@ -35187,20 +34649,20 @@ msgstr ""
 "Укажете как да бъде стартиран chktex, напр. \"chktex -n11 -n1 -n3 -n6 -n9 "
 "-22 -n25 -n30 -n38\".  Обърнете се към ChkTeX документацията."
 
-#: src/LyXRC.cpp:3088
+#: src/LyXRC.cpp:3160
 msgid ""
 "Forbid use of external converters with 'needauth' option to prevent "
 "undesired effects."
 msgstr ""
 
-#: src/LyXRC.cpp:3092
+#: src/LyXRC.cpp:3164
 msgid ""
 "Ask user before calling external converters with 'needauth' option to "
 "prevent undesired effects."
 msgstr ""
 
 # src/lyxrc.C:1880
-#: src/LyXRC.cpp:3099
+#: src/LyXRC.cpp:3171
 msgid ""
 "LyX normally doesn't update the cursor position if you move the scrollbar. "
 "Set to true if you'd prefer to always have the cursor on screen."
@@ -35210,7 +34672,7 @@ msgstr ""
 "екрана."
 
 # src/lyxrc.C:1880
-#: src/LyXRC.cpp:3107
+#: src/LyXRC.cpp:3179
 #, fuzzy
 msgid ""
 "LyX normally doesn't allow the user to scroll further than the bottom of the "
@@ -35220,22 +34682,22 @@ msgstr ""
 "Обикновено LyX не актуализира позицията на курсора, когато премествате "
 "скролбара. Изберете това, ако предпочитате курсорът винаги да е на екрана."
 
-#: src/LyXRC.cpp:3111
+#: src/LyXRC.cpp:3183
 msgid "Make Apple key act as Meta and Control key as Ctrl."
 msgstr ""
 
-#: src/LyXRC.cpp:3115
+#: src/LyXRC.cpp:3187
 msgid "Use the Mac OS X conventions for cursor movement"
 msgstr ""
 
-#: src/LyXRC.cpp:3119
+#: src/LyXRC.cpp:3191
 msgid ""
 "Show a small box around a Math Macro with the macro name when the cursor is "
 "inside."
 msgstr ""
 
 # src/lyxrc.C:1795
-#: src/LyXRC.cpp:3123
+#: src/LyXRC.cpp:3195
 #, fuzzy
 msgid ""
 "Command definition file. Can either specify an absolute path, or LyX will "
@@ -35244,27 +34706,27 @@ msgstr ""
 "Файл с клавишни комбинации.  Можете или да зададете абсолютен път, или LyX "
 "ще търси в глобалната и локалната bind/ директории."
 
-#: src/LyXRC.cpp:3127
+#: src/LyXRC.cpp:3199
 msgid ""
 "The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts."
 msgstr ""
 
-#: src/LyXRC.cpp:3131
+#: src/LyXRC.cpp:3203
 msgid "The default format used with LFUN_BUFFER_[VIEW|UPDATE]."
 msgstr ""
 
-#: src/LyXRC.cpp:3135
+#: src/LyXRC.cpp:3207
 msgid ""
 "Iconify the dialogs when the main window is iconified. (Affects only dialogs "
 "shown after the change has been made.)"
 msgstr ""
 
-#: src/LyXRC.cpp:3139
+#: src/LyXRC.cpp:3211
 msgid "Select how LyX will display any graphics."
 msgstr ""
 
 # src/lyxrc.C:1766
-#: src/LyXRC.cpp:3143
+#: src/LyXRC.cpp:3215
 #, fuzzy
 msgid ""
 "The default path for your documents. An empty value selects the directory "
@@ -35272,41 +34734,41 @@ msgid ""
 msgstr "Пътя, който LyX ще покаже, когато предлага избор на шаблон."
 
 # src/lyxrc.C:1868
-#: src/LyXRC.cpp:3147
+#: src/LyXRC.cpp:3219
 msgid "Specify additional chars that can be part of a word."
 msgstr "Укажете допълнителни символи, които могат да са част от дума."
 
 # src/lyxrc.C:1766
-#: src/LyXRC.cpp:3151
+#: src/LyXRC.cpp:3223
 #, fuzzy
 msgid ""
 "The path that LyX will set when offering to choose an example. An empty "
 "value selects the directory LyX was started from."
 msgstr "Пътя, който LyX ще покаже, когато предлага избор на шаблон."
 
-#: src/LyXRC.cpp:3158
+#: src/LyXRC.cpp:3230
 msgid ""
 "Define the options of makeindex (cf. man makeindex) or select an alternative "
 "compiler. E.g., using xindy/make-rules, the command string would be "
 "\"makeindex.sh -m $$lang\"."
 msgstr ""
 
-#: src/LyXRC.cpp:3162
+#: src/LyXRC.cpp:3234
 msgid "Define the options of the index program for PLaTeX (Japanese LaTeX)."
 msgstr ""
 
-#: src/LyXRC.cpp:3166
+#: src/LyXRC.cpp:3238
 msgid ""
 "Define the options of makeindex (cf. man makeindex) to be used for "
 "nomenclatures. This might differ from the index processing options."
 msgstr ""
 
-#: src/LyXRC.cpp:3170
+#: src/LyXRC.cpp:3242
 msgid "The command to run the python pygments syntax highlighter."
 msgstr ""
 
 # src/lyxrc.C:1805
-#: src/LyXRC.cpp:3179
+#: src/LyXRC.cpp:3251
 msgid ""
 "Use this to set the correct mapping file for your keyboard. You'll need this "
 "if you for instance want to type German documents on an American keyboard."
@@ -35316,7 +34778,7 @@ msgstr ""
 "американска подредба."
 
 # src/lyxrc.C:1920
-#: src/LyXRC.cpp:3183
+#: src/LyXRC.cpp:3255
 msgid ""
 "Select if a language switching command is needed at the beginning of the "
 "document."
@@ -35324,14 +34786,14 @@ msgstr ""
 "Изберете, ако е необходима команда за смяна на езика в началото на документа."
 
 # src/lyxrc.C:1924
-#: src/LyXRC.cpp:3187
+#: src/LyXRC.cpp:3259
 msgid ""
 "Select if a language switching command is needed at the end of the document."
 msgstr ""
 "Изберете, ако е необходима команда за смяна на езика в края на документа."
 
 # src/lyxrc.C:1928
-#: src/LyXRC.cpp:3191
+#: src/LyXRC.cpp:3263
 #, fuzzy
 msgid ""
 "The LaTeX command for changing from the language of the document to another "
@@ -35342,19 +34804,19 @@ msgstr ""
 "\\selectlanguage{$$lang}; където $$lang се замества и името на втория език."
 
 # src/lyxrc.C:1932
-#: src/LyXRC.cpp:3195
+#: src/LyXRC.cpp:3267
 #, fuzzy
 msgid "The LaTeX command for changing back to the language of the document."
 msgstr "LaTeX командата за връщане към езика на документа."
 
 # src/lyxrc.C:1936
-#: src/LyXRC.cpp:3199
+#: src/LyXRC.cpp:3271
 #, fuzzy
 msgid "The LaTeX command for local changing of the language."
 msgstr "LaTeX командата за локална смяна на езика."
 
 # src/lyxrc.C:1912
-#: src/LyXRC.cpp:3203
+#: src/LyXRC.cpp:3275
 #, fuzzy
 msgid ""
 "De-select if you don't want the language(s) used as an argument to "
@@ -35364,7 +34826,7 @@ msgstr ""
 "\\documentclass командата."
 
 # src/lyxrc.C:1908
-#: src/LyXRC.cpp:3207
+#: src/LyXRC.cpp:3279
 #, fuzzy
 msgid ""
 "The LaTeX command for loading the language package. E.g. "
@@ -35374,7 +34836,7 @@ msgstr ""
 "\"\\usepackage{babel}\", \"\\usepackage{omega}\"."
 
 # src/lyxrc.C:1916
-#: src/LyXRC.cpp:3211
+#: src/LyXRC.cpp:3283
 #, fuzzy
 msgid ""
 "De-select if you don't want babel to be used when the language of the "
@@ -35384,22 +34846,22 @@ msgstr ""
 "стандартния."
 
 # src/lyxrc.C:1892
-#: src/LyXRC.cpp:3215
+#: src/LyXRC.cpp:3287
 #, fuzzy
 msgid "De-select if you do not want LyX to scroll to saved position."
 msgstr "Изключете, ако не искате LyX да създава резервни (backup) копия."
 
-#: src/LyXRC.cpp:3219
+#: src/LyXRC.cpp:3291
 msgid "De-select to prevent loading files opened from the last LyX session."
 msgstr ""
 
 # src/lyxrc.C:1892
-#: src/LyXRC.cpp:3223
+#: src/LyXRC.cpp:3295
 msgid "De-select if you don't want LyX to create backup files."
 msgstr "Изключете, ако не искате LyX да създава резервни (backup) копия."
 
 # src/lyxrc.C:1904
-#: src/LyXRC.cpp:3227
+#: src/LyXRC.cpp:3299
 msgid ""
 "Select to control the highlighting of words with a language foreign to that "
 "of the document."
@@ -35407,107 +34869,111 @@ msgstr ""
 "Изберете за да контролирате открояването на думи с различен език от този на "
 "документа."
 
-#: src/LyXRC.cpp:3235
+#: src/LyXRC.cpp:3307
 msgid "The scrolling speed of the mouse wheel."
 msgstr ""
 
-#: src/LyXRC.cpp:3239
+#: src/LyXRC.cpp:3311
 msgid "The completion popup delay."
 msgstr ""
 
-#: src/LyXRC.cpp:3243
+#: src/LyXRC.cpp:3315
 msgid "Select to display the completion popup in math mode."
 msgstr ""
 
-#: src/LyXRC.cpp:3247
+#: src/LyXRC.cpp:3319
 msgid "Select to display the completion popup in text mode."
 msgstr ""
 
-#: src/LyXRC.cpp:3251
+#: src/LyXRC.cpp:3323
 msgid ""
 "Show the completion popup without delay after non-unique completion attempt."
 msgstr ""
+"Незабавно показване на изскачащ прозорец за избор след опит за дописване с повече от една възможност."
 
-#: src/LyXRC.cpp:3255
+#: src/LyXRC.cpp:3327
 msgid ""
 "Show a small triangle on the cursor to indicate that a completion is "
 "available."
 msgstr ""
+"Показване на малък триъгълник върху курсора като знак, че е възможно дописване."
 
-#: src/LyXRC.cpp:3259
+#: src/LyXRC.cpp:3331
 msgid "The inline completion delay."
-msgstr ""
+msgstr "Забавяне за автоматичното дописване."
 
-#: src/LyXRC.cpp:3263
+#: src/LyXRC.cpp:3335
 msgid "Select to display the inline completion in math mode."
-msgstr ""
+msgstr "Избор за показване на автоматично дописване в режим математика."
 
-#: src/LyXRC.cpp:3267
+#: src/LyXRC.cpp:3339
 msgid "Select to display the inline completion in text mode."
-msgstr ""
+msgstr "Избор за показване на автоматично дописване в режим текст."
 
-#: src/LyXRC.cpp:3271
+#: src/LyXRC.cpp:3343
 msgid "Use \"...\" to shorten long completions."
-msgstr ""
+msgstr "Използване на \"...\" за съкращавене на дълги дописвания."
 
-#: src/LyXRC.cpp:3275
+#: src/LyXRC.cpp:3347
 msgid "Allow TeXMacs shorthand, like => converting to \\Rightarrow."
 msgstr ""
 
 # src/lyxrc.C:1827
-#: src/LyXRC.cpp:3279
+#: src/LyXRC.cpp:3351
 #, fuzzy, c-format
 msgid "Maximal number of lastfiles. Up to %1$d can appear in the file menu."
 msgstr ""
-"Максимален брой последни файлове.  Във менюто Файл могат да се виждат до 9."
+"Максимален брой последно използвани файлове. Във менюто „Файл“ могат да се виждат до %1$d."
 
-#: src/LyXRC.cpp:3284
+#: src/LyXRC.cpp:3356
 msgid ""
 "Specify those directories which should be prepended to the PATH environment "
 "variable.\n"
 "Use the OS native format."
 msgstr ""
+"Посочване на директориите, които да се добавят отпред към променливата на средата „PATH“.\n"
+"Използва се формата на ОС."
 
-#: src/LyXRC.cpp:3290
+#: src/LyXRC.cpp:3362
 msgid "Shows a typeset preview of things such as math"
 msgstr ""
 
-#: src/LyXRC.cpp:3294
+#: src/LyXRC.cpp:3366
 msgid "Previewed equations will have \"(#)\" labels rather than numbered ones"
 msgstr ""
 
-#: src/LyXRC.cpp:3298
+#: src/LyXRC.cpp:3370
 msgid "Scale the preview size to suit."
 msgstr ""
 
 # src/lyxrc.C:1680
-#: src/LyXRC.cpp:3302
+#: src/LyXRC.cpp:3374
 msgid "The option to print out in landscape."
 msgstr "Опция за печат на пейзаж."
 
 # src/lyxrc.C:1688
-#: src/LyXRC.cpp:3306
+#: src/LyXRC.cpp:3378
 msgid "Option to specify the dimensions of the print paper."
 msgstr "Параметър за указване на размерите на хартията."
 
 # src/lyxrc.C:1684
-#: src/LyXRC.cpp:3310
+#: src/LyXRC.cpp:3382
 msgid "The option to specify paper type."
 msgstr "Параметър за указване на вида хартия."
 
-#: src/LyXRC.cpp:3314
+#: src/LyXRC.cpp:3386
 msgid ""
 "Select to have visual bidi cursor movement, unselect for logical movement."
 msgstr ""
 
-#: src/LyXRC.cpp:3318
+#: src/LyXRC.cpp:3390
 msgid ""
 "Specify whether, closing the last view of an open document, LyX should close "
 "the document (yes), hide it (no), or ask the user (ask)."
 msgstr ""
 
 # src/lyxrc.C:1720
-#: src/LyXRC.cpp:3322
+#: src/LyXRC.cpp:3394
 msgid ""
 "DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes "
 "wrong, override the setting here."
@@ -35516,11 +34982,11 @@ msgstr ""
 "от LyX.  Ако се определи неправилно, изберете стойността оттук."
 
 # src/lyxrc.C:1735
-#: src/LyXRC.cpp:3328
+#: src/LyXRC.cpp:3400
 msgid "The screen fonts used to display the text while editing."
 msgstr "Екранните шрифтове за изобразяване на текст по време на редактиране."
 
-#: src/LyXRC.cpp:3337
+#: src/LyXRC.cpp:3409
 msgid ""
 "Allow bitmap fonts to be resized. If you are using a bitmap font, selecting "
 "this option may make some fonts look blocky in LyX. Deselecting this option "
@@ -35528,13 +34994,13 @@ msgid ""
 msgstr ""
 
 # src/lyxrc.C:1729
-#: src/LyXRC.cpp:3341
+#: src/LyXRC.cpp:3413
 msgid "The font sizes used for calculating the scaling of the screen fonts."
 msgstr ""
 "Размерите на шрифтовете за изчисляване на мащабирането на екранните шрифтове."
 
 # src/lyxrc.C:1725
-#: src/LyXRC.cpp:3346
+#: src/LyXRC.cpp:3418
 #, no-c-format
 msgid ""
 "The zoom percentage for screen fonts. A setting of 100% will make the fonts "
@@ -35543,12 +35009,12 @@ msgstr ""
 "Процент на мащабиране на екранните шрифтове. Стойността 100% ще направи "
 "размерът приблизително както на хартията."
 
-#: src/LyXRC.cpp:3350
+#: src/LyXRC.cpp:3422
 msgid "Allow session manager to save and restore windows geometry."
 msgstr ""
 
 # src/lyxrc.C:1791
-#: src/LyXRC.cpp:3354
+#: src/LyXRC.cpp:3426
 msgid ""
 "This starts the lyxserver. The pipes get an additional extension \".in\" and "
 "\".out\". Only for advanced users."
@@ -35557,12 +35023,12 @@ msgstr ""
 "\" und \".out\".  Само за напреднали потребители."
 
 # src/lyxrc.C:1945
-#: src/LyXRC.cpp:3361
+#: src/LyXRC.cpp:3433
 msgid "De-select if you don't want the startup banner."
 msgstr "Изключете ако не искате началното лого"
 
 # src/lyxrc.C:1770
-#: src/LyXRC.cpp:3365
+#: src/LyXRC.cpp:3437
 msgid ""
 "LyX will place its temporary directories in this path. They will be deleted "
 "when you quit LyX."
@@ -35570,19 +35036,19 @@ msgstr ""
 "LyX ще разположи своите временни директории на този път.  Те ще бъдат "
 "изтрити, когато излезете от LyX."
 
-#: src/LyXRC.cpp:3369
+#: src/LyXRC.cpp:3441
 msgid "This is the place where the files of the thesaurus library reside."
 msgstr ""
 
 # src/lyxrc.C:1766
-#: src/LyXRC.cpp:3373
+#: src/LyXRC.cpp:3445
 #, fuzzy
 msgid ""
 "The path that LyX will set when offering to choose a template. An empty "
 "value selects the directory LyX was started from."
 msgstr "Пътя, който LyX ще покаже, когато предлага избор на шаблон."
 
-#: src/LyXRC.cpp:3383
+#: src/LyXRC.cpp:3455
 msgid ""
 "Specify those directories which should be prepended to the TEXINPUTS "
 "environment variable.\n"
@@ -35590,7 +35056,7 @@ msgid ""
 msgstr ""
 
 # src/lyxrc.C:1799
-#: src/LyXRC.cpp:3390
+#: src/LyXRC.cpp:3462
 #, fuzzy
 msgid ""
 "The UI (user interface) file. Can either specify an absolute path, or LyX "
@@ -35599,17 +35065,17 @@ msgstr ""
 "ПИ (Потребителски Интерфейс) файл. Можете или да зададете абсолютен път, или "
 "LyX ще търси в глобалната и локалната ui/ директории."
 
-#: src/LyXRC.cpp:3400
+#: src/LyXRC.cpp:3472
 msgid ""
 "Enable use the system colors for some things like main window background and "
 "selection."
 msgstr ""
 
-#: src/LyXRC.cpp:3404
+#: src/LyXRC.cpp:3476
 msgid "Enable the automatic appearance of tool tips in the work area."
 msgstr ""
 
-#: src/LyXRC.cpp:3408
+#: src/LyXRC.cpp:3480
 msgid "Specify the paper command to DVI viewer (leave empty or use \"-paper\")"
 msgstr ""
 
@@ -35670,7 +35136,7 @@ msgid "(no log message)"
 msgstr "(няма протоколно съобщение)"
 
 # src/lyxvc.C:139
-#: src/LyXVC.cpp:252 src/frontends/qt/GuiView.cpp:3657
+#: src/LyXVC.cpp:252 src/frontends/qt/GuiView.cpp:3849
 msgid "LyX VC: Log Message"
 msgstr "LyX СКВ: журнално съобщение"
 
@@ -35690,21 +35156,21 @@ msgid "Revert to stored version of document?"
 msgstr "Маркирай до края на документа"
 
 # src/ext_l10n.h:30
-#: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4241
+#: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4433
 #, fuzzy
 msgid "&Revert"
 msgstr "Регистрирай(R)|R"
 
 # src/frontends/kde/paradlg.C:95 src/paragraph.C:1957
-#: src/Paragraph.cpp:2139
+#: src/Paragraph.cpp:2152
 msgid "Senseless with this layout!"
 msgstr "Неизползваем с това оформление!"
 
-#: src/Paragraph.cpp:2193
+#: src/Paragraph.cpp:2206
 msgid "Alignment not permitted"
 msgstr ""
 
-#: src/Paragraph.cpp:2194
+#: src/Paragraph.cpp:2207
 msgid ""
 "The new layout does not permit the alignment previously used.\n"
 "Setting to default."
@@ -35717,12 +35183,12 @@ msgid "Unknown Inset"
 msgstr "Непознато действие"
 
 # src/LyXAction.C:263
-#: src/Text.cpp:554 src/insets/InsetTabular.cpp:472
+#: src/Text.cpp:554 src/insets/InsetTabular.cpp:473
 #, fuzzy
 msgid "Change tracking author index missing"
 msgstr "Смяна на език"
 
-#: src/Text.cpp:555 src/insets/InsetTabular.cpp:473
+#: src/Text.cpp:555 src/insets/InsetTabular.cpp:474
 #, c-format
 msgid ""
 "A change tracking author information for index %1$d is missing. This can "
@@ -35743,20 +35209,18 @@ msgid ""
 "You cannot insert a space at the beginning of a paragraph. Please read the "
 "Tutorial."
 msgstr ""
-"Не можете да поставяте интервали в началото на абзаца. Прочетете краткото "
-"обучение.Sie das Tutorium."
+"Не може да се поставят интервали в началото на абзаца. Проверете ръководството."
 
 # src/text.C:2005
 #: src/Text.cpp:966
 msgid "You cannot type two spaces this way. Please read the Tutorial."
 msgstr ""
-"Не можете да въвеждате последователно два или повече интервали! Прочетете "
+"Не може да се въвеждат последователно два или повече интервали! Проверете "
 "ръководството!"
 
 #: src/Text.cpp:977
-#, fuzzy
 msgid "Character is uncodable in this verbatim context."
-msgstr "Тази буква не може да се кодира в дословния контекст."
+msgstr "Има знак, който не може да се кодира в дословния контекст."
 
 # src/LyXAction.C:263
 #: src/Text.cpp:2086
@@ -35777,9 +35241,9 @@ msgstr "Шрифт: %1$s"
 
 # src/bufferview_funcs.C:271
 #: src/Text.cpp:2109
-#, fuzzy, c-format
+#, c-format
 msgid ", Depth: %1$d"
-msgstr ", Дълбочина: "
+msgstr ", Дълбочина: %1$d"
 
 # src/bufferview_funcs.C:277
 #: src/Text.cpp:2115
@@ -35787,7 +35251,7 @@ msgid ", Spacing: "
 msgstr ", Отместване: "
 
 # src/bufferview_funcs.C:283
-#: src/Text.cpp:2121 src/frontends/qt/GuiDocument.cpp:869
+#: src/Text.cpp:2121 src/frontends/qt/GuiDocument.cpp:877
 msgid "OneHalf"
 msgstr "eдна и половина"
 
@@ -35798,9 +35262,8 @@ msgstr "Друго ("
 
 # src/insets/insetbib.C:340
 #: src/Text.cpp:2138
-#, fuzzy
 msgid ", Style: "
-msgstr "Стил: "
+msgstr ", Стил: "
 
 # src/ext_l10n.h:303
 #: src/Text.cpp:2144
@@ -35809,17 +35272,16 @@ msgstr ", Абзац:"
 
 # src/bufferview_funcs.C:271
 #: src/Text.cpp:2145
-#, fuzzy
 msgid ", Id: "
-msgstr ", Дълбочина: "
+msgstr ", ИН: "
 
-#: src/Text.cpp:2152
+#: src/Text.cpp:2155
 msgid ", Char: 0x"
 msgstr ", Символ: 0x"
 
-#: src/Text.cpp:2154
+#: src/Text.cpp:2157
 msgid ", Boundary: "
-msgstr ""
+msgstr ", Граница: "
 
 # src/LyXAction.C:190
 #: src/Text2.cpp:406
@@ -35828,63 +35290,61 @@ msgid "No font change defined."
 msgstr "Към следваща грешка"
 
 # src/lyxfunc.C:2565 src/mathed/formula.C:486
-#: src/Text3.cpp:194
+#: src/Text3.cpp:200
 msgid "Math editor mode"
 msgstr "Матем. редактор"
 
-#: src/Text3.cpp:196
+#: src/Text3.cpp:202
 msgid "No valid math formula"
-msgstr ""
+msgstr "Няма валидна мат. формула"
 
-#: src/Text3.cpp:204 src/mathed/InsetMathNest.cpp:1024
+#: src/Text3.cpp:210 src/mathed/InsetMathNest.cpp:1032
 msgid "Already in regular expression mode"
-msgstr ""
+msgstr "Вече е в режим на регулярни изрази"
 
 # src/lyxfunc.C:2565 src/mathed/formula.C:486
-#: src/Text3.cpp:217
-#, fuzzy
+#: src/Text3.cpp:223
 msgid "Regexp editor mode"
-msgstr "Матем. редактор"
+msgstr "Режим на редактор за регулярни изрази"
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1260
-#: src/Text3.cpp:1582
+#: src/Text3.cpp:1610
 msgid "Layout "
-msgstr "Непознато "
+msgstr "Оформление "
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1261
-#: src/Text3.cpp:1583 src/Text3.cpp:2159
+#: src/Text3.cpp:1611 src/Text3.cpp:2182
 msgid " not known"
-msgstr " оформление"
+msgstr " непознато"
 
 # src/LColor.C:97
-#: src/Text3.cpp:2158
-#, fuzzy
+#: src/Text3.cpp:2181
 msgid "Table Style "
-msgstr "ред на таблица"
+msgstr "Стил на таблица"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
-#: src/Text3.cpp:2351 src/frontends/qt/GuiApplication.cpp:1826
+#: src/Text3.cpp:2374 src/frontends/qt/GuiApplication.cpp:1873
 msgid "Missing argument"
 msgstr "Липсващ аргумент"
 
-#: src/Text3.cpp:2520
+#: src/Text3.cpp:2539
 msgid "Invalid argument (number exceeds stack size)!"
-msgstr ""
+msgstr "Невалиден аргумент (броя превишава размера на стека!)"
 
-#: src/Text3.cpp:2524
+#: src/Text3.cpp:2543
 msgid "Invalid argument (must be a non-negative number)!"
-msgstr ""
+msgstr "Невалиден аргумент (трябва да е неотрицателно число!)"
 
-#: src/Text3.cpp:2529 src/Text3.cpp:2547
-#, fuzzy, c-format
+#: src/Text3.cpp:2548 src/Text3.cpp:2562
+#, c-format
 msgid "Text properties applied: %1$s"
-msgstr "Настройки на текста|т"
+msgstr "Приложени настройки на текста: %1$s"
 
-#: src/Text3.cpp:2706
+#: src/Text3.cpp:2721
 msgid "Path to thesaurus directory not set!"
 msgstr "Пътя до директорията със синонимния речник не е зададен!"
 
-#: src/Text3.cpp:2707
+#: src/Text3.cpp:2722
 msgid ""
 "The path to the thesaurus directory has not been specified.\n"
 "The thesaurus is not functional.\n"
@@ -35898,7 +35358,7 @@ msgstr ""
 
 # src/frontends/kde/FormParagraph.C:183
 # src/frontends/xforms/FormParagraph.C:148
-#: src/Text3.cpp:2774 src/Text3.cpp:2785
+#: src/Text3.cpp:2848 src/Text3.cpp:2859
 msgid "Paragraph layout set"
 msgstr "Оформяне на абзаци"
 
@@ -35909,36 +35369,34 @@ msgstr "По подразбиране"
 
 # src/lyxfunc.C:1105 src/lyxfunc.C:2550
 #: src/TextClass.cpp:943
-#, fuzzy
 msgid "Missing File"
-msgstr "Липсващ аргумент"
+msgstr "Липсващ файл"
 
 #: src/TextClass.cpp:944
 msgid "Could not find stdinsets.inc! This may lead to data loss!"
-msgstr ""
+msgstr "Файлът stdinsets.inc не е открит! Това може да доведе до загуба на данни!"
 
 # src/ext_l10n.h:375
 #: src/TextClass.cpp:947
-#, fuzzy
 msgid "Corrupt File"
-msgstr "Подзаглавие"
+msgstr "Повреден файл"
 
 #: src/TextClass.cpp:948
 msgid "Could not read stdinsets.inc! This may lead to data loss!"
-msgstr ""
+msgstr "Неуспешно прочитане на stdinsets.inc! Това може да доведе до загуба на данни!"
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1261
-#: src/TextClass.cpp:1609
-#, fuzzy, c-format
+#: src/TextClass.cpp:1627
+#, c-format
 msgid "%1$s (Float)"
-msgstr " оформление"
+msgstr "%1$s (плаващ)"
 
-#: src/TextClass.cpp:1614
-#, fuzzy, c-format
+#: src/TextClass.cpp:1632
+#, c-format
 msgid "Sub-%1$s (Float)"
-msgstr "Под-%1$s"
+msgstr "Под-%1$s (плаващ)"
 
-#: src/TextClass.cpp:1910
+#: src/TextClass.cpp:1928
 #, c-format
 msgid ""
 "The module %1$s has been requested by\n"
@@ -35952,11 +35410,11 @@ msgstr ""
 "преконфигурирате LyX.\n"
 
 # src/lyx_cb.C:263
-#: src/TextClass.cpp:1914
+#: src/TextClass.cpp:1932
 msgid "Module not available"
 msgstr "Неналичен модул"
 
-#: src/TextClass.cpp:1921
+#: src/TextClass.cpp:1939
 #, c-format
 msgid ""
 "The module %1$s requires a package that is not\n"
@@ -35975,16 +35433,16 @@ msgstr ""
 "информация."
 
 # src/lyx_cb.C:263
-#: src/TextClass.cpp:1928 src/TextClass.cpp:1961
+#: src/TextClass.cpp:1946 src/TextClass.cpp:1979
 msgid "Package not available"
 msgstr "Пакет не е наличен"
 
-#: src/TextClass.cpp:1933
+#: src/TextClass.cpp:1951
 #, c-format
 msgid "Error reading module %1$s\n"
-msgstr ""
+msgstr "Грешка при четене на модул %1$s\n"
 
-#: src/TextClass.cpp:1945
+#: src/TextClass.cpp:1963
 #, c-format
 msgid ""
 "The cite engine %1$s has been requested by\n"
@@ -35992,14 +35450,16 @@ msgid ""
 "available engines. If you recently installed it, you\n"
 "probably need to reconfigure LyX.\n"
 msgstr ""
+"Програмата за цитиране %1$s се изисква от този документ,\n"
+"но не е открита в списъка с налични програми. Ако сте я\n"
+"инсталирали наскоро вероятно трябва да преконфигурирате LyX.\n"
 
 # src/lyx_cb.C:263
-#: src/TextClass.cpp:1949
-#, fuzzy
+#: src/TextClass.cpp:1967
 msgid "Cite Engine not available"
-msgstr "Документът не може да бъде записан!"
+msgstr "Няма налична програма за цитиране!"
 
-#: src/TextClass.cpp:1954
+#: src/TextClass.cpp:1972
 #, c-format
 msgid ""
 "The cite engine %1$s requires a package that is not\n"
@@ -36010,23 +35470,22 @@ msgid ""
 "See section 3.1.2.3 (Modules) of the User's Guide for more information."
 msgstr ""
 
-#: src/TextClass.cpp:1966
+#: src/TextClass.cpp:1984
 #, c-format
 msgid "Error reading cite engine %1$s\n"
-msgstr ""
+msgstr "Грешка при четене на програма за цитиране %1$s\n"
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
-#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:477
-#: src/insets/InsetIndex.cpp:498
-#, fuzzy
+#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:502
+#: src/insets/InsetIndex.cpp:523
 msgid "unknown type!"
-msgstr "Непознато действие"
+msgstr "непознат тип!"
 
 # src/frontends/kde/indexdlg.C:27 src/frontends/kde/indexdlg.C:28
 #: src/TocBackend.cpp:273
-#, fuzzy, c-format
+#, c-format
 msgid "Index Entries (%1$s)"
-msgstr "Индекс запис"
+msgstr "Индексен запис (%1$s)"
 
 # src/frontends/gnome/FormToc.C:100 src/frontends/gnome/FormToc.C:167
 # src/frontends/kde/FormToc.C:167 src/frontends/kde/FormToc.C:168
@@ -36050,7 +35509,7 @@ msgstr "Адреси"
 # src/frontends/xforms/FormCitation.C:37
 #: src/TocBackend.cpp:292
 msgid "Citations"
-msgstr "Цитирания"
+msgstr "Препратки"
 
 # src/frontends/kde/refdlg.C:30
 #: src/TocBackend.cpp:293
@@ -36059,21 +35518,20 @@ msgstr "Етикети и препратки"
 
 #: src/TocBackend.cpp:294
 msgid "Broken References and Citations"
-msgstr ""
+msgstr "Невалидни указатели и препратки"
 
 # src/frontends/xforms/FormDocument.C:273 src/insets/figinset.C:1975
 # src/insets/insetexternal.C:143 src/lyxfunc.C:3105 src/lyxfunc.C:3181
 # src/lyxfunc.C:3313
-#: src/TocBackend.cpp:296 src/frontends/qt/GuiDocument.cpp:1760
+#: src/TocBackend.cpp:296 src/frontends/qt/GuiDocument.cpp:1774
 msgid "Child Documents"
 msgstr "Поддокумент"
 
 # src/frontends/xforms/FormGraphics.C:36
 # src/frontends/xforms/FormGraphics.C:359
 #: src/TocBackend.cpp:297
-#, fuzzy
 msgid "Graphics[[listof]]"
-msgstr "Изображение"
+msgstr "Изображения"
 
 # src/ext_l10n.h:191
 #: src/TocBackend.cpp:298
@@ -36086,15 +35544,15 @@ msgid "Nomenclature Entries"
 msgstr "Речник на съкращенията"
 
 #: src/VCBackend.cpp:64
-msgid "Perhaps the RCS package is not installed on your system?"
-msgstr ""
+msgid "Check whether the GNU RCS package is installed on your system."
+msgstr "Отбележете дали пакета GNU RCS е инсталиран на системата."
 
 # src/debug.C:44
-#: src/VCBackend.cpp:65 src/VCBackend.cpp:874 src/VCBackend.cpp:879
-#: src/VCBackend.cpp:928 src/VCBackend.cpp:987 src/VCBackend.cpp:1046
-#: src/VCBackend.cpp:1054 src/VCBackend.cpp:1342 src/VCBackend.cpp:1444
-#: src/VCBackend.cpp:1450 src/VCBackend.cpp:1473 src/VCBackend.cpp:1948
-#: src/frontends/qt/GuiView.cpp:3573 src/frontends/qt/GuiView.cpp:3616
+#: src/VCBackend.cpp:65 src/VCBackend.cpp:880 src/VCBackend.cpp:885
+#: src/VCBackend.cpp:934 src/VCBackend.cpp:993 src/VCBackend.cpp:1052
+#: src/VCBackend.cpp:1060 src/VCBackend.cpp:1348 src/VCBackend.cpp:1450
+#: src/VCBackend.cpp:1456 src/VCBackend.cpp:1479 src/VCBackend.cpp:1964
+#: src/frontends/qt/GuiView.cpp:3765 src/frontends/qt/GuiView.cpp:3808
 msgid "Revision control error."
 msgstr "Грешка в системата за контрол на ревизиите"
 
@@ -36109,44 +35567,44 @@ msgstr ""
 "'%1$s'"
 
 # src/frontends/kde/refdlg.C:81 src/frontends/kde/tocdlg.C:43
-#: src/VCBackend.cpp:635
+#: src/VCBackend.cpp:641
 #, fuzzy
 msgid "Up-to-date"
 msgstr "(&U)Актуализирай"
 
-#: src/VCBackend.cpp:637
+#: src/VCBackend.cpp:643
 msgid "Locally Modified"
 msgstr ""
 
-#: src/VCBackend.cpp:639
+#: src/VCBackend.cpp:645
 msgid "Locally Added"
 msgstr ""
 
-#: src/VCBackend.cpp:641
+#: src/VCBackend.cpp:647
 msgid "Needs Merge"
 msgstr ""
 
-#: src/VCBackend.cpp:643
+#: src/VCBackend.cpp:649
 msgid "Needs Checkout"
 msgstr ""
 
 # src/frontends/xforms/form_preferences.C:923
-#: src/VCBackend.cpp:645
+#: src/VCBackend.cpp:651
 #, fuzzy
 msgid "No CVS file"
 msgstr "във файл"
 
-#: src/VCBackend.cpp:647
+#: src/VCBackend.cpp:653
 msgid "Cannot retrieve CVS status"
 msgstr ""
 
-#: src/VCBackend.cpp:875
+#: src/VCBackend.cpp:881
 msgid ""
 "The repository version is newer then the current check out.\n"
 "You have to update from repository first or revert your changes."
 msgstr ""
 
-#: src/VCBackend.cpp:880
+#: src/VCBackend.cpp:886
 #, c-format
 msgid ""
 "Bad status when checking in changes.\n"
@@ -36155,7 +35613,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/VCBackend.cpp:929 src/VCBackend.cpp:1474
+#: src/VCBackend.cpp:935 src/VCBackend.cpp:1480
 #, c-format
 msgid ""
 "Error when updating from repository.\n"
@@ -36165,7 +35623,7 @@ msgid ""
 "After pressing OK, LyX will try to reopen the resolved document."
 msgstr ""
 
-#: src/VCBackend.cpp:963
+#: src/VCBackend.cpp:969
 #, c-format
 msgid ""
 "There were detected changes in the working directory:\n"
@@ -36174,23 +35632,27 @@ msgid ""
 "Possible file conflicts must be then resolved manually or you will need to "
 "revert back to the repository version."
 msgstr ""
+"Открити са промени в работната директория:\n"
+"%1$s\n"
+"\n"
+"Вероятно конфликтите между файловете трябва да се отстраняват ръчно или да "
+"се възстановят до версията от хранилището."
 
-#: src/VCBackend.cpp:967 src/VCBackend.cpp:971 src/VCBackend.cpp:1515
-#: src/VCBackend.cpp:1519
+#: src/VCBackend.cpp:973 src/VCBackend.cpp:977 src/VCBackend.cpp:1521
+#: src/VCBackend.cpp:1525
 msgid "Changes detected"
-msgstr ""
+msgstr "Открити промени"
 
 # src/importer.C:81
-#: src/VCBackend.cpp:968 src/VCBackend.cpp:972
-#, fuzzy
+#: src/VCBackend.cpp:974 src/VCBackend.cpp:978
 msgid "&Abort"
-msgstr "импортиран."
+msgstr "Прекъсване"
 
-#: src/VCBackend.cpp:968 src/VCBackend.cpp:1516
+#: src/VCBackend.cpp:974 src/VCBackend.cpp:1522
 msgid "View &Log ..."
-msgstr ""
+msgstr "Преглед на &журнал..."
 
-#: src/VCBackend.cpp:988
+#: src/VCBackend.cpp:994
 #, c-format
 msgid ""
 "Error when updating document %1$s from repository.\n"
@@ -36200,34 +35662,38 @@ msgid ""
 "After pressing OK, LyX will try to reopen the resolved document."
 msgstr ""
 
-#: src/VCBackend.cpp:1047
+#: src/VCBackend.cpp:1053
 #, c-format
 msgid ""
 "The document %1$s is not in repository.\n"
 "You have to check in the first revision before you can revert."
 msgstr ""
+"Документа %1$s не е в хранилището.\n"
+"Трябва да регистрирате първата ревизия преди да можете да я възстановите."
 
-#: src/VCBackend.cpp:1055
+#: src/VCBackend.cpp:1061
 #, c-format
 msgid ""
 "Cannot revert document %1$s to repository version.\n"
 "The status '%2$s' is unexpected."
 msgstr ""
+"Документа %1$s не може да се възстанови до версията\n"
+"на хранилището. Състоянието „%2$s“ е неочаквано."
 
 # src/buffer.C:3331
-#: src/VCBackend.cpp:1327 src/VCBackend.cpp:1463 src/VCBackend.cpp:1500
-#: src/VCBackend.cpp:1554 src/VCBackend.cpp:1933
+#: src/VCBackend.cpp:1333 src/VCBackend.cpp:1469 src/VCBackend.cpp:1506
+#: src/VCBackend.cpp:1560 src/VCBackend.cpp:1949
 msgid "Error: Could not generate logfile."
 msgstr "Грешка: Не може да се създаде журнален файл."
 
-#: src/VCBackend.cpp:1343 src/VCBackend.cpp:1949
+#: src/VCBackend.cpp:1349 src/VCBackend.cpp:1965
 msgid ""
 "Error when committing to repository.\n"
 "You have to manually resolve the problem.\n"
 "LyX will reopen the document after you press OK."
 msgstr ""
 
-#: src/VCBackend.cpp:1445
+#: src/VCBackend.cpp:1451
 #, fuzzy
 msgid ""
 "Error while acquiring write lock.\n"
@@ -36236,7 +35702,7 @@ msgid ""
 "Also check the access to the repository."
 msgstr "Грешка при заявка за "
 
-#: src/VCBackend.cpp:1451
+#: src/VCBackend.cpp:1457
 #, fuzzy
 msgid ""
 "Error while releasing write lock.\n"
@@ -36245,7 +35711,7 @@ msgstr ""
 "Грешка при освобождаване на запис за заключване при запис\n"
 "Проверете достъпа до БД"
 
-#: src/VCBackend.cpp:1510
+#: src/VCBackend.cpp:1516
 #, c-format
 msgid ""
 "There were detected changes in the working directory:\n"
@@ -36257,63 +35723,61 @@ msgid ""
 "Continue?"
 msgstr ""
 
-#: src/VCBackend.cpp:1516 src/VCBackend.cpp:1520
-#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1862
-#: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:350
-#: src/lyxfind.cpp:687 src/lyxfind.cpp:715
+#: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
+#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1895
+#: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
+#: src/lyxfind.cpp:694 src/lyxfind.cpp:722
 msgid "&Yes"
 msgstr "&Да"
 
 # src/lyxfont.C:407
-#: src/VCBackend.cpp:1516 src/VCBackend.cpp:1520
-#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1862
-#: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:350
-#: src/lyxfind.cpp:687 src/lyxfind.cpp:715
+#: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
+#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1895
+#: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
+#: src/lyxfind.cpp:694 src/lyxfind.cpp:722
 msgid "&No"
 msgstr "&Не"
 
-#: src/VCBackend.cpp:1579
+#: src/VCBackend.cpp:1585
 msgid "SVN File Locking"
 msgstr ""
 
-#: src/VCBackend.cpp:1580 src/VCBackend.cpp:1585
+#: src/VCBackend.cpp:1586 src/VCBackend.cpp:1591
 msgid "Locking property unset."
 msgstr ""
 
-#: src/VCBackend.cpp:1580 src/VCBackend.cpp:1585
+#: src/VCBackend.cpp:1586 src/VCBackend.cpp:1591
 msgid "Locking property set."
 msgstr ""
 
-#: src/VCBackend.cpp:1581
+#: src/VCBackend.cpp:1587
 msgid "Do not forget to commit the locking property into the repository."
 msgstr ""
 
 # src/frontends/xforms/FormPreferences.C:2231
 #: src/VSpace.cpp:189
 msgid "Default skip"
-msgstr "разстояние по подразбиране"
+msgstr "по подразбиране"
 
 # src/frontends/kde/parageneraldlg.C:39 src/frontends/kde/parageneraldlg.C:46
 #: src/VSpace.cpp:192
-#, fuzzy
 msgid "Small skip"
-msgstr "Малко разстояние"
+msgstr "малко"
 
 # src/frontends/kde/parageneraldlg.C:40 src/frontends/kde/parageneraldlg.C:47
 #: src/VSpace.cpp:195
 msgid "Medium skip"
-msgstr "средно разстояние"
+msgstr "средно"
 
 # src/frontends/kde/parageneraldlg.C:41 src/frontends/kde/parageneraldlg.C:48
 #: src/VSpace.cpp:198
 msgid "Big skip"
-msgstr "голямо разстояние"
+msgstr "голямо"
 
 # src/frontends/xforms/form_paragraph.C:153
 #: src/VSpace.cpp:207
-#, fuzzy
 msgid "Vertical fill"
-msgstr "Вертикално разстояние"
+msgstr "Вертикално запълване"
 
 # src/ext_l10n.h:99
 #: src/VSpace.cpp:214
@@ -36334,7 +35798,7 @@ msgstr ""
 
 # заглавие на диалог
 # src/LyXAction.C:147
-#: src/buffer_funcs.cpp:55 src/frontends/qt/GuiView.cpp:4232
+#: src/buffer_funcs.cpp:55 src/frontends/qt/GuiView.cpp:4424
 msgid "Reload saved document?"
 msgstr "Презареждане на записан документ"
 
@@ -36351,17 +35815,16 @@ msgstr "Не, &запази промените"
 #: src/buffer_funcs.cpp:78
 #, c-format
 msgid "The file %1$s exists but is not readable by the current user."
-msgstr ""
+msgstr "Файлът %1$s съществува, но не може да се прочете от текущия потребител."
 
 # src/buffer.C:3331
 #: src/buffer_funcs.cpp:81
-#, fuzzy
 msgid "File not readable!"
-msgstr "Недъзможна е работата с файл: "
+msgstr "Файлът не може да се прочете!"
 
 # src/buffer.C:534
 #: src/buffer_funcs.cpp:103
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The document %1$s does not yet exist.\n"
 "\n"
@@ -36369,7 +35832,7 @@ msgid ""
 msgstr ""
 "Документът %1$s все още не съществува.\n"
 "\n"
-"Желаете ли да се създаде нов документ?"
+"Желаете ли да създадете нов документ?"
 
 # src/bufferlist.C:522
 #: src/buffer_funcs.cpp:106
@@ -36428,7 +35891,7 @@ msgstr "пак неща"
 # src/frontends/xforms/FormBase.h:153 src/frontends/xforms/FormInset.h:31
 # src/frontends/xforms/FormInset.h:55 src/lyxfunc.C:744
 #: src/frontends/qt/ButtonController.cpp:222
-#: src/frontends/qt/GuiApplication.cpp:1950 src/frontends/qt/GuiCompare.cpp:193
+#: src/frontends/qt/GuiApplication.cpp:1997 src/frontends/qt/GuiCompare.cpp:193
 #: src/frontends/qt/GuiSymbols.cpp:346
 msgid "Cancel"
 msgstr "Отказване"
@@ -36439,47 +35902,45 @@ msgstr "Отказване"
 # src/frontends/xforms/FormInset.h:54 src/layout_forms.C:52 src/log_form.C:21
 # src/lyxvc.C:263 src/mathed/math_forms.C:177
 #: src/frontends/qt/ButtonController.cpp:224
-#: src/frontends/qt/GuiCompare.cpp:191 src/frontends/qt/GuiDelimiter.cpp:412
+#: src/frontends/qt/GuiCompare.cpp:191 src/frontends/qt/GuiDelimiter.cpp:413
 #: src/frontends/qt/GuiSymbols.cpp:348
 msgid "Close"
 msgstr "Затваряне"
 
 # src/frontends/kde/citationdlg.C:35
-#: src/frontends/qt/CategorizedCombo.cpp:189
+#: src/frontends/qt/CategorizedCombo.cpp:192
 #, fuzzy
 msgid "Unavailable:"
 msgstr "Достъпни клавиши"
 
 # src/frontends/kde/citationdlg.C:35
-#: src/frontends/qt/CategorizedCombo.cpp:469
+#: src/frontends/qt/CategorizedCombo.cpp:480
 #, c-format
 msgid "Unavailable: %1$s"
 msgstr "Неналичен: %1$s"
 
 # src/ext_l10n.h:191
-#: src/frontends/qt/CategorizedCombo.cpp:472
-#: src/frontends/qt/CategorizedCombo.cpp:497
-#: src/frontends/qt/CategorizedCombo.cpp:498
+#: src/frontends/qt/CategorizedCombo.cpp:483
+#: src/frontends/qt/CategorizedCombo.cpp:508
+#: src/frontends/qt/CategorizedCombo.cpp:509
 #, fuzzy
 msgid "Uncategorized"
 msgstr "Заглавие"
 
 # src/lyxfunc.C:1132
 #: src/frontends/qt/FileDialog.cpp:188
-#, fuzzy
 msgid "Directories"
-msgstr "Потребителска директория: "
+msgstr "Директории"
 
 # src/frontends/kde/dlg/printdlgdata.C:246
 #: src/frontends/qt/FindAndReplace.cpp:277
 msgid "File"
-msgstr "&Файл22"
+msgstr "&Файл"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
 #: src/frontends/qt/FindAndReplace.cpp:280
-#, fuzzy
 msgid "Master document"
-msgstr "Запазване на документа?"
+msgstr "Главен документ"
 
 # src/ext_l10n.h:232
 #: src/frontends/qt/FindAndReplace.cpp:283
@@ -36514,8 +35975,8 @@ msgstr ""
 msgid "Advanced search cancelled by user"
 msgstr ""
 
-#: src/frontends/qt/FindAndReplace.cpp:380 src/lyxfind.cpp:349
-#: src/lyxfind.cpp:686 src/lyxfind.cpp:714
+#: src/frontends/qt/FindAndReplace.cpp:380 src/lyxfind.cpp:350
+#: src/lyxfind.cpp:693 src/lyxfind.cpp:721
 msgid "Wrap search?"
 msgstr "Търсене отново?"
 
@@ -36542,9 +36003,8 @@ msgstr ""
 
 # src/sp_form.C:86
 #: src/frontends/qt/FindAndReplace.cpp:644
-#, fuzzy
 msgid "< Rep&lace"
-msgstr "Замяна"
+msgstr "< Замяна"
 
 #: src/frontends/qt/FindAndReplace.cpp:645
 #, fuzzy
@@ -36553,8 +36013,8 @@ msgstr "Търсене и замяна на следващото съвпаде
 
 # src/frontends/xforms/form_preferences.C:999
 #: src/frontends/qt/FloatPlacement.cpp:182
-#: src/frontends/qt/GuiDocument.cpp:1139 src/frontends/qt/GuiDocument.cpp:2707
-#: src/frontends/qt/GuiDocument.cpp:2734
+#: src/frontends/qt/GuiDocument.cpp:1149 src/frontends/qt/GuiDocument.cpp:2725
+#: src/frontends/qt/GuiDocument.cpp:2752
 msgid "Class Default"
 msgstr "по подразбиране за класа"
 
@@ -36564,7 +36024,7 @@ msgid "Document Default"
 msgstr "по подразбиране за документа"
 
 # src/form1.C:129 src/sp_form.C:58
-#: src/frontends/qt/FloatPlacement.h:38 src/frontends/qt/GuiDocument.cpp:1775
+#: src/frontends/qt/FloatPlacement.h:38 src/frontends/qt/GuiDocument.cpp:1789
 msgid "Float Settings"
 msgstr "Плаващи обекти"
 
@@ -36589,13 +36049,13 @@ msgid "ERROR: LyX wasn't able to read the CREDITS file\n"
 msgstr "Грешка: LyX не успя да прочете файла CREDITS"
 
 # src/credits.C:55
-#: src/frontends/qt/GuiAbout.cpp:95
+#: src/frontends/qt/GuiAbout.cpp:97
 #, fuzzy
 msgid "ERROR: LyX wasn't able to find the RELEASE-NOTES file\n"
 msgstr "Грешка: LyX не успя да прочете файла CREDITS"
 
 # src/credits.C:59
-#: src/frontends/qt/GuiAbout.cpp:96 src/frontends/qt/GuiAbout.cpp:101
+#: src/frontends/qt/GuiAbout.cpp:98 src/frontends/qt/GuiAbout.cpp:103
 #, fuzzy
 msgid ""
 "Please install correctly to see what has changed\n"
@@ -36603,14 +36063,14 @@ msgid ""
 msgstr "Моля, инсталирайте правилно, за да оцените огромното"
 
 # src/credits.C:55
-#: src/frontends/qt/GuiAbout.cpp:100
+#: src/frontends/qt/GuiAbout.cpp:102
 msgid "ERROR: LyX wasn't able to read the RELEASE-NOTES file\n"
 msgstr ""
 "Грешка: LyX не успя да прочете файла с бележките на изданието (RELEASE-"
 "NOTES)\n"
 
 # src/frontends/xforms/FormCopyright.C:51
-#: src/frontends/qt/GuiAbout.cpp:183
+#: src/frontends/qt/GuiAbout.cpp:192
 #, c-format
 msgid ""
 "LyX is Copyright (C) 1995 by Matthias Ettrich,\n"
@@ -36619,7 +36079,7 @@ msgstr ""
 "Авторското право на LyX принадлежи на Matthias Ettrich 1995,\n"
 "1995 %1$s LyX Team"
 
-#: src/frontends/qt/GuiAbout.cpp:191
+#: src/frontends/qt/GuiAbout.cpp:200
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU General Public License as published by the Free "
@@ -36632,7 +36092,7 @@ msgstr ""
 "или (по ваше усмотрение) всяка следваща версия"
 
 # src/frontends/xforms/FormCopyright.C:61
-#: src/frontends/qt/GuiAbout.cpp:197
+#: src/frontends/qt/GuiAbout.cpp:206
 msgid ""
 "LyX is distributed in the hope that it will be useful, but WITHOUT ANY "
 "WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
@@ -36653,12 +36113,12 @@ msgstr ""
 "675 Mass Ave, Cambridge, MA 02139, USA."
 
 # src/lyxfont.C:57
-#: src/frontends/qt/GuiAbout.cpp:252
+#: src/frontends/qt/GuiAbout.cpp:261
 msgid "not released yet"
 msgstr "все още неиздадена"
 
 # src/lyxfunc.C:1125
-#: src/frontends/qt/GuiAbout.cpp:257
+#: src/frontends/qt/GuiAbout.cpp:266
 #, fuzzy, c-format
 msgid ""
 "Version %1$s\n"
@@ -36667,50 +36127,50 @@ msgstr ""
 "LyX версия %1$s\n"
 "(%2$s)"
 
-#: src/frontends/qt/GuiAbout.cpp:265
+#: src/frontends/qt/GuiAbout.cpp:274
 msgid "Built from git commit hash "
 msgstr "Компилирана от хранилище на git с хеш-стойност "
 
-#: src/frontends/qt/GuiAbout.cpp:278
+#: src/frontends/qt/GuiAbout.cpp:287
 #, fuzzy, c-format
 msgid "Qt Version (run-time): %1$s on platform %2$s"
 msgstr "Qt версия (системна): %1$s"
 
-#: src/frontends/qt/GuiAbout.cpp:283
+#: src/frontends/qt/GuiAbout.cpp:292
 #, c-format
 msgid "Qt Version (compile-time): %1$s"
 msgstr "Qt версия (компилирана): %1$s"
 
-#: src/frontends/qt/GuiAbout.cpp:288
+#: src/frontends/qt/GuiAbout.cpp:297
 #, c-format
 msgid "Python detected: %1$s"
 msgstr ""
 
-#: src/frontends/qt/GuiAbout.cpp:319
+#: src/frontends/qt/GuiAbout.cpp:328
 msgid "About LyX"
 msgstr "Относно LyX"
 
-#: src/frontends/qt/GuiApplication.cpp:721
+#: src/frontends/qt/GuiApplication.cpp:736
 msgid "About %1"
 msgstr ""
 
 # src/frontends/xforms/FormPreferences.C:68
-#: src/frontends/qt/GuiApplication.cpp:722 src/frontends/qt/GuiPrefs.cpp:3478
+#: src/frontends/qt/GuiApplication.cpp:737 src/frontends/qt/GuiPrefs.cpp:3528
 msgid "Preferences"
 msgstr "Настройки"
 
 # src/ext_l10n.h:37 src/ext_l10n.h:52
-#: src/frontends/qt/GuiApplication.cpp:723
+#: src/frontends/qt/GuiApplication.cpp:738
 #, fuzzy
 msgid "Reconfigure"
 msgstr "Ново конфигуриране(R)|R"
 
-#: src/frontends/qt/GuiApplication.cpp:724
+#: src/frontends/qt/GuiApplication.cpp:739
 #, fuzzy
 msgid "Restore Defaults"
 msgstr "Възстановяване"
 
-#: src/frontends/qt/GuiApplication.cpp:725
+#: src/frontends/qt/GuiApplication.cpp:740
 msgid "Quit %1"
 msgstr ""
 
@@ -36719,164 +36179,169 @@ msgstr ""
 # src/frontends/kde/dlg/indexdlgdata.C:68
 # src/frontends/kde/dlg/paradlgdata.C:39 src/frontends/kde/refdlg.C:86
 # src/frontends/kde/urldlg.C:52
-#: src/frontends/qt/GuiApplication.cpp:726 src/frontends/qt/GuiInclude.cpp:318
+#: src/frontends/qt/GuiApplication.cpp:741 src/frontends/qt/GuiInclude.cpp:318
 #: src/frontends/qt/GuiInclude.cpp:328 src/frontends/qt/GuiInclude.cpp:333
 msgid "&OK"
 msgstr "&OK"
 
-#: src/frontends/qt/GuiApplication.cpp:728
+#: src/frontends/qt/GuiApplication.cpp:743
 msgid "Apply"
 msgstr "Прилагание"
 
 # src/lyx_gui.C:348
-#: src/frontends/qt/GuiApplication.cpp:729
+#: src/frontends/qt/GuiApplication.cpp:744
 msgid "Reset"
 msgstr "Възстановяване"
 
 # src/ext_l10n.h:298
-#: src/frontends/qt/GuiApplication.cpp:730
+#: src/frontends/qt/GuiApplication.cpp:745
 msgid "Open"
 msgstr "Отваряне"
 
 # src/text2.C:456
-#: src/frontends/qt/GuiApplication.cpp:1235
+#: src/frontends/qt/GuiApplication.cpp:1270
 msgid "Nothing to do"
 msgstr "Няма нищо за правене"
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
-#: src/frontends/qt/GuiApplication.cpp:1241
+#: src/frontends/qt/GuiApplication.cpp:1276
 msgid "Unknown action"
 msgstr "Непознато действие"
 
 # src/frontends/xforms/form_preferences.C:445
-#: src/frontends/qt/GuiApplication.cpp:1285
-#, fuzzy
+#: src/frontends/qt/GuiApplication.cpp:1320
 msgid "Command not handled"
-msgstr "Завърши команда(e)|#e"
+msgstr "Командата не е обработена"
 
 # src/frontends/xforms/form_preferences.C:445
-#: src/frontends/qt/GuiApplication.cpp:1291
-#, fuzzy
+#: src/frontends/qt/GuiApplication.cpp:1326
 msgid "Command disabled"
-msgstr "Завърши команда(e)|#e"
+msgstr "Командата е деактивирана"
+
+#: src/frontends/qt/GuiApplication.cpp:1434
+#, c-format
+msgid "Bad debug value `%1$s'."
+msgstr "Непознат код за отстраняване на грешка „%1$s“."
 
 # src/lyxfunc.C:347
-#: src/frontends/qt/GuiApplication.cpp:1421 src/frontends/qt/GuiView.cpp:2020
-#, fuzzy
+#: src/frontends/qt/GuiApplication.cpp:1463 src/frontends/qt/GuiView.cpp:2214
 msgid "Command not allowed without a buffer open"
-msgstr "Командата не е позволена без да има отворен документ"
+msgstr "Командата не е позволена без отворен буфер"
 
-#: src/frontends/qt/GuiApplication.cpp:1428
+#: src/frontends/qt/GuiApplication.cpp:1470
 msgid "the <LFUN-COMMAND> argument of buffer-forall is not valid"
-msgstr ""
+msgstr "аргумента <LFUN-COMMAND> от buffer-forall не е валиден"
 
-#: src/frontends/qt/GuiApplication.cpp:1505
+#: src/frontends/qt/GuiApplication.cpp:1547
 msgid "Wrong focus!"
-msgstr ""
+msgstr "Сгрешен фокус!"
 
 # src/lyx_cb.C:977
-#: src/frontends/qt/GuiApplication.cpp:1639
+#: src/frontends/qt/GuiApplication.cpp:1681
 msgid "Running configure..."
 msgstr "Стартирам конфигуриране..."
 
 # src/lyx_cb.C:984
-#: src/frontends/qt/GuiApplication.cpp:1647
+#: src/frontends/qt/GuiApplication.cpp:1691
 msgid "Reloading configuration..."
 msgstr "Презареждам конфигурацията..."
 
 # src/lyx_cb.C:986
-#: src/frontends/qt/GuiApplication.cpp:1654
+#: src/frontends/qt/GuiApplication.cpp:1701
 msgid "System reconfiguration failed"
 msgstr "Програмата не успя да се преконфигурира"
 
-#: src/frontends/qt/GuiApplication.cpp:1655
+#: src/frontends/qt/GuiApplication.cpp:1702
 msgid ""
 "The system reconfiguration has failed.\n"
 "Default textclass is used but LyX may\n"
 "not be able to work properly.\n"
 "Please reconfigure again if needed."
 msgstr ""
+"Грешка при преконфигуриране на системата.\n"
+"Исползва се клас документи по подразбиране,\n"
+"но LyX може да не функционира правилно.\n"
+"Преконфигурирайте отново при необходимост."
 
 # заглавие на програмен диалог
 # src/lyx_cb.C:986
-#: src/frontends/qt/GuiApplication.cpp:1660
+#: src/frontends/qt/GuiApplication.cpp:1707
 msgid "System reconfigured"
 msgstr "Програмата се преконфигурира"
 
-#: src/frontends/qt/GuiApplication.cpp:1661
+#: src/frontends/qt/GuiApplication.cpp:1708
 msgid ""
 "The system has been reconfigured.\n"
 "You need to restart LyX to make use of any\n"
 "updated document class specifications."
 msgstr ""
 "Програмата беше прекофигурирана.\n"
-"Желателно е да рестартирате LyX за да използватеобновените настройки за "
+"Желателно е да рестартирате LyX за да използвате обновените настройки за "
 "различните видове документи."
 
 # src/ext_l10n.h:16 src/ext_l10n.h:29
-#: src/frontends/qt/GuiApplication.cpp:1742
-#, fuzzy
+#: src/frontends/qt/GuiApplication.cpp:1789
 msgid "Exiting."
-msgstr "Изход(x)|x"
+msgstr "Излизане."
 
 # src/lyxfunc.C:1116
-#: src/frontends/qt/GuiApplication.cpp:1838
-#, fuzzy, c-format
+#: src/frontends/qt/GuiApplication.cpp:1885
+#, c-format
 msgid "Opening help file %1$s..."
-msgstr "Отварям помощен файл"
+msgstr "Отваряне на помощен файл %1$s..."
 
-#: src/frontends/qt/GuiApplication.cpp:1858
+#: src/frontends/qt/GuiApplication.cpp:1905
 msgid "Wrong argument. Must be 'examples' or 'templates'."
-msgstr ""
+msgstr "Неправилен аргумент. Трябва да е „examples“ or „templates“."
 
-#: src/frontends/qt/GuiApplication.cpp:1872
+#: src/frontends/qt/GuiApplication.cpp:1919
 msgid "Syntax: set-color <lyx_name> <x11_name> <x11_darkname>"
-msgstr ""
+msgstr "Синтаксис: set-color <lyx_name> <x11_name> <x11_darkname>"
 
 # src/lyxfunc.C:2920
-#: src/frontends/qt/GuiApplication.cpp:1892
-#, fuzzy, c-format
+#: src/frontends/qt/GuiApplication.cpp:1939
+#, c-format
 msgid "Set-color \"%1$s\" failed - color is undefined or may not be redefined"
-msgstr "\" пропадна  - цветът не е дефиниран или не може да бъде предефиниран"
+msgstr "Неуспех при команда „set-color %1$s“ - цветът не е дефиниран или предефиниран"
 
 # src/support/filetools.C:453
-#: src/frontends/qt/GuiApplication.cpp:1997
+#: src/frontends/qt/GuiApplication.cpp:2044
 #, fuzzy, c-format
 msgid "Cannot iterate more than %1$d times"
 msgstr "Грешка! Не мога да създам временна директория: "
 
-#: src/frontends/qt/GuiApplication.cpp:2097
+#: src/frontends/qt/GuiApplication.cpp:2144
 #, c-format
 msgid "Applied \"%1$s\" to %2$d buffer(s)"
 msgstr ""
 
 # src/lyx_cb.C:263
-#: src/frontends/qt/GuiApplication.cpp:2183
-#, fuzzy, c-format
+#: src/frontends/qt/GuiApplication.cpp:2230
+#, c-format
 msgid "Document defaults saved in %1$s"
-msgstr "Документът не може да бъде записан!"
+msgstr "Настройките на документа по подразбиране за запазени в %1$s"
 
 # src/ext_l10n.h:130
-#: src/frontends/qt/GuiApplication.cpp:2187
+#: src/frontends/qt/GuiApplication.cpp:2234
 #, fuzzy
 msgid "Unable to save document defaults"
 msgstr "Запази оформлението като подразбиращо се(S)|S"
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
-#: src/frontends/qt/GuiApplication.cpp:2417
-#: src/frontends/qt/GuiApplication.cpp:2432
+#: src/frontends/qt/GuiApplication.cpp:2474
+#: src/frontends/qt/GuiApplication.cpp:2489
 #, fuzzy
 msgid "Unknown function."
 msgstr "Непознато действие"
 
 # src/frontends/kde/dlg/printdlgdata.C:88
 # src/frontends/xforms/form_print.C:138
-#: src/frontends/qt/GuiApplication.cpp:2931
+#: src/frontends/qt/GuiApplication.cpp:3024
 #, fuzzy
 msgid "The current document was closed."
 msgstr "Печат на"
 
-#: src/frontends/qt/GuiApplication.cpp:2941
+#: src/frontends/qt/GuiApplication.cpp:3034
 msgid ""
 "LyX has caught an exception, it will now attempt to save all unsaved "
 "documents and exit.\n"
@@ -36884,25 +36349,25 @@ msgid ""
 "Exception: "
 msgstr ""
 
-#: src/frontends/qt/GuiApplication.cpp:2945
-#: src/frontends/qt/GuiApplication.cpp:2951
+#: src/frontends/qt/GuiApplication.cpp:3038
+#: src/frontends/qt/GuiApplication.cpp:3044
 msgid "Software exception Detected"
 msgstr ""
 
-#: src/frontends/qt/GuiApplication.cpp:2949
+#: src/frontends/qt/GuiApplication.cpp:3042
 msgid ""
 "LyX has caught some really weird exception, it will now attempt to save all "
 "unsaved documents and exit."
 msgstr ""
 
 # src/buffer.C:3331
-#: src/frontends/qt/GuiApplication.cpp:3255
-#: src/frontends/qt/GuiApplication.cpp:3267
+#: src/frontends/qt/GuiApplication.cpp:3348
+#: src/frontends/qt/GuiApplication.cpp:3360
 #, fuzzy
 msgid "Could not find UI definition file"
 msgstr "Недъзможна е работата с файл: "
 
-#: src/frontends/qt/GuiApplication.cpp:3256
+#: src/frontends/qt/GuiApplication.cpp:3349
 #, c-format
 msgid ""
 "Error while reading the included file\n"
@@ -36914,18 +36379,18 @@ msgstr ""
 "Моля, проверете вашата инсталация."
 
 # src/buffer.C:3331
-#: src/frontends/qt/GuiApplication.cpp:3262
+#: src/frontends/qt/GuiApplication.cpp:3355
 #, fuzzy
 msgid "Could not find default UI file"
 msgstr "Недъзможна е работата с файл: "
 
-#: src/frontends/qt/GuiApplication.cpp:3263
+#: src/frontends/qt/GuiApplication.cpp:3356
 msgid ""
 "LyX could not find the default UI file!\n"
 "Please check your installation."
 msgstr ""
 
-#: src/frontends/qt/GuiApplication.cpp:3268
+#: src/frontends/qt/GuiApplication.cpp:3361
 #, c-format
 msgid ""
 "Error while reading the configuration file\n"
@@ -37045,12 +36510,12 @@ msgstr "Достъпни препратки"
 # src/MenuBackend.C:446 src/ext_l10n.h:10
 #: src/frontends/qt/GuiBibtex.cpp:456 src/frontends/qt/GuiBibtex.cpp:466
 #: src/frontends/qt/GuiCompare.cpp:163 src/frontends/qt/GuiCompare.cpp:167
-#: src/frontends/qt/GuiDocument.cpp:2885 src/frontends/qt/GuiExternal.cpp:677
-#: src/frontends/qt/GuiGraphics.cpp:789 src/frontends/qt/GuiInclude.cpp:380
-#: src/frontends/qt/GuiLyXFiles.cpp:362 src/frontends/qt/GuiLyXFiles.cpp:368
-#: src/frontends/qt/GuiView.cpp:2427 src/frontends/qt/GuiView.cpp:2486
-#: src/frontends/qt/GuiView.cpp:2622 src/frontends/qt/GuiView.cpp:2756
-#: src/frontends/qt/GuiView.cpp:2876 src/frontends/qt/GuiView.cpp:2998
+#: src/frontends/qt/GuiDocument.cpp:2903 src/frontends/qt/GuiExternal.cpp:677
+#: src/frontends/qt/GuiGraphics.cpp:826 src/frontends/qt/GuiInclude.cpp:380
+#: src/frontends/qt/GuiLyXFiles.cpp:368 src/frontends/qt/GuiLyXFiles.cpp:374
+#: src/frontends/qt/GuiView.cpp:2615 src/frontends/qt/GuiView.cpp:2674
+#: src/frontends/qt/GuiView.cpp:2814 src/frontends/qt/GuiView.cpp:2948
+#: src/frontends/qt/GuiView.cpp:3068 src/frontends/qt/GuiView.cpp:3190
 #, fuzzy
 msgid "D&ocuments"
 msgstr "Документ|Д"
@@ -37103,26 +36568,23 @@ msgid "Shaded background"
 msgstr "цветен фон"
 
 #: src/frontends/qt/GuiBox.cpp:57
-#, fuzzy
 msgid "Double rectangular frame"
-msgstr "зесенчен фон"
+msgstr "Двойна правоъгълна рамка"
 
 # src/bufferview_funcs.C:271
 #: src/frontends/qt/GuiBox.cpp:70
-#, fuzzy
 msgid "Depth"
-msgstr ", Дълбочина: "
+msgstr "Дълбочина"
 
 # src/ext_l10n.h:209
 #: src/frontends/qt/GuiBox.cpp:71
-#, fuzzy
 msgid "Total Height"
-msgstr "Авторски права"
+msgstr "Обща височина"
 
 #: src/frontends/qt/GuiBox.cpp:424 src/frontends/qt/GuiBox.cpp:632
 #: src/insets/InsetBox.cpp:143
 msgid "Makebox"
-msgstr "makebox"
+msgstr "„makebox“"
 
 # заглавие на диалог
 # src/form1.C:129 src/sp_form.C:58
@@ -37150,7 +36612,7 @@ msgid "Filename Suffix"
 msgstr "Файлово разширение"
 
 #: src/frontends/qt/GuiBranches.cpp:135 src/frontends/qt/GuiBranches.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:3324 src/frontends/qt/GuiDocument.cpp:4629
+#: src/frontends/qt/GuiDocument.cpp:3339 src/frontends/qt/GuiDocument.cpp:4644
 #: src/frontends/qt/GuiProgressView.cpp:144
 #: src/frontends/qt/GuiProgressView.cpp:158
 #: src/frontends/qt/GuiProgressView.cpp:179
@@ -37159,8 +36621,8 @@ msgstr "Да"
 
 # src/lyxfont.C:407
 #: src/frontends/qt/GuiBranches.cpp:135 src/frontends/qt/GuiBranches.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:3323 src/frontends/qt/GuiDocument.cpp:3961
-#: src/frontends/qt/GuiDocument.cpp:4628
+#: src/frontends/qt/GuiDocument.cpp:3338 src/frontends/qt/GuiDocument.cpp:3972
+#: src/frontends/qt/GuiDocument.cpp:4643
 #: src/frontends/qt/GuiProgressView.cpp:110
 #: src/frontends/qt/GuiProgressView.cpp:143
 #: src/frontends/qt/GuiProgressView.cpp:179
@@ -37190,9 +36652,8 @@ msgstr "&Обединяване"
 # src/frontends/xforms/FormDocument.C:446
 # src/frontends/xforms/FormDocument.C:1108
 #: src/frontends/qt/GuiBranches.cpp:234 src/frontends/qt/GuiIndices.cpp:243
-#, fuzzy
 msgid "Renaming failed"
-msgstr "Грешки при конвертиране!"
+msgstr "Грешки при преименуване!"
 
 # src/frontends/xforms/FormDocument.C:437
 #: src/frontends/qt/GuiBranches.cpp:235
@@ -37207,9 +36668,8 @@ msgstr "Обхождане на промените"
 
 # src/LyXAction.C:354
 #: src/frontends/qt/GuiChanges.cpp:70
-#, fuzzy
 msgid "Inserted by %1"
-msgstr "Вмъкване на рамка"
+msgstr "Увеличаване с %1"
 
 # src/frontends/xforms/form_preferences.C:600
 # src/frontends/xforms/form_preferences.C:687
@@ -37218,18 +36678,18 @@ msgstr "Вмъкване на рамка"
 msgid "Deleted by %1"
 msgstr "Изтрий(D)|#D"
 
-#: src/frontends/qt/GuiChanges.cpp:78
+#: src/frontends/qt/GuiChanges.cpp:84
 msgid " on[[date]] %1"
-msgstr ""
+msgstr "на %1"
 
 # src/LyXAction.C:354
-#: src/frontends/qt/GuiChanges.cpp:80
+#: src/frontends/qt/GuiChanges.cpp:86
 #, fuzzy
 msgid "Inserted on %1"
 msgstr "Вмъкване на рамка"
 
 # src/ext_l10n.h:74
-#: src/frontends/qt/GuiChanges.cpp:81
+#: src/frontends/qt/GuiChanges.cpp:87
 #, fuzzy
 msgid "Deleted on %1"
 msgstr "Изтриване на ред"
@@ -37249,7 +36709,7 @@ msgstr "Малки главни букви"
 
 #: src/frontends/qt/GuiCharacter.cpp:86
 msgid "(Without)[[underlining]]"
-msgstr "<няма>"
+msgstr "няма"
 
 #: src/frontends/qt/GuiCharacter.cpp:87
 msgid "Single[[underlining]]"
@@ -37266,7 +36726,7 @@ msgstr "вълнообразно"
 
 #: src/frontends/qt/GuiCharacter.cpp:99
 msgid "(Without)[[strikethrough]]"
-msgstr "<няма>"
+msgstr "няма"
 
 #: src/frontends/qt/GuiCharacter.cpp:100
 msgid "Single[[strikethrough]]"
@@ -37274,11 +36734,11 @@ msgstr "единично"
 
 #: src/frontends/qt/GuiCharacter.cpp:101
 msgid "With /"
-msgstr ""
+msgstr "с „/“"
 
 #: src/frontends/qt/GuiCharacter.cpp:191
 msgid "(Without)[[color]]"
-msgstr "<няма>"
+msgstr "няма"
 
 #: src/frontends/qt/GuiCharacter.cpp:208
 msgid "Text Properties"
@@ -37296,17 +36756,17 @@ msgstr "Без промяна на полетата"
 # src/exporter.C:91
 #: src/frontends/qt/GuiCharacter.cpp:280
 msgid "&Reset All Fields"
-msgstr "Възстановяване на стойностите"
+msgstr "Възстанов. стойности"
 
 # src/frontends/xforms/FormCitation.C:37
 #: src/frontends/qt/GuiCitation.cpp:94
 msgid "Citation"
-msgstr "Цитиране"
+msgstr "Препратка"
 
 # src/frontends/kde/refdlg.C:30
 #: src/frontends/qt/GuiCitation.cpp:102
 msgid "All avail. citations"
-msgstr "всички възможни цитати"
+msgstr "всички възможни препратки"
 
 #: src/frontends/qt/GuiCitation.cpp:108
 msgid "Regular e&xpression"
@@ -37326,6 +36786,8 @@ msgid ""
 "Ordered list of all cited references.\n"
 "You can reorder, add and remove references with the buttons on the left."
 msgstr ""
+"Подреден списък на всички цитирани указатели\n"
+"Можете да преподреждате, добавяте и премахвате указатели с бутона вляво."
 
 # src/frontends/xforms/FormParagraph.C:132
 #: src/frontends/qt/GuiCitation.cpp:293
@@ -37459,10 +36921,10 @@ msgstr "Въведете име за запазване на документа"
 
 # src/lyxfunc.C:3061 src/lyxfunc.C:3088 src/lyxfunc.C:3165 src/lyxfunc.C:3223
 # src/lyxfunc.C:3251 src/lyxfunc.C:3261 src/lyxfunc.C:3297
-#: src/frontends/qt/GuiClipboard.cpp:220 src/frontends/qt/GuiView.cpp:2500
-#: src/frontends/qt/GuiView.cpp:2641 src/frontends/qt/GuiView.cpp:2657
-#: src/frontends/qt/GuiView.cpp:2669 src/frontends/qt/GuiView.cpp:2686
-#: src/frontends/qt/GuiView.cpp:2771 src/frontends/qt/GuiView.cpp:4204
+#: src/frontends/qt/GuiClipboard.cpp:220 src/frontends/qt/GuiView.cpp:2692
+#: src/frontends/qt/GuiView.cpp:2833 src/frontends/qt/GuiView.cpp:2849
+#: src/frontends/qt/GuiView.cpp:2861 src/frontends/qt/GuiView.cpp:2878
+#: src/frontends/qt/GuiView.cpp:2963 src/frontends/qt/GuiView.cpp:4396
 msgid "Canceled."
 msgstr "Прекъснат."
 
@@ -37479,12 +36941,12 @@ msgid "File %1$s already exists, do you want to overwrite it?"
 msgstr "Файлът %1$s вече съществува, искате ли да го презапишете?"
 
 # src/debug.C:47
-#: src/frontends/qt/GuiCommandBuffer.cpp:106
+#: src/frontends/qt/GuiCommandBuffer.cpp:111
 msgid "List of previous commands"
 msgstr "Списък с предишни команди"
 
 # src/LyXAction.C:167
-#: src/frontends/qt/GuiCommandBuffer.cpp:110
+#: src/frontends/qt/GuiCommandBuffer.cpp:115
 #, fuzzy
 msgid "Next command"
 msgstr "Изпълни команда"
@@ -37500,9 +36962,9 @@ msgid "Select document"
 msgstr "Запазване на документа?"
 
 # src/ext_l10n.h:116
-#: src/frontends/qt/GuiCompare.cpp:157 src/frontends/qt/GuiLyXFiles.cpp:361
-#: src/frontends/qt/GuiView.cpp:2431 src/frontends/qt/GuiView.cpp:2489
-#: src/frontends/qt/GuiView.cpp:2760 src/frontends/qt/GuiView.cpp:2887
+#: src/frontends/qt/GuiCompare.cpp:157 src/frontends/qt/GuiLyXFiles.cpp:367
+#: src/frontends/qt/GuiView.cpp:2619 src/frontends/qt/GuiView.cpp:2678
+#: src/frontends/qt/GuiView.cpp:2952 src/frontends/qt/GuiView.cpp:3079
 msgid "LyX Documents (*.lyx)"
 msgstr "LyX документ (*.lyx)"
 
@@ -37513,38 +36975,33 @@ msgstr "Грешка при сравняване на документи."
 
 # src/importer.C:81
 #: src/frontends/qt/GuiCompare.cpp:218
-#, fuzzy
 msgid "Aborted"
-msgstr "импортиран."
+msgstr "Прекратен"
 
 # src/ext_l10n.h:440
 #: src/frontends/qt/GuiCompare.cpp:230
-#, fuzzy
 msgid "Finished"
-msgstr "Финландски"
+msgstr "Завършен"
 
 # src/BufferView_pimpl.C:256
 #: src/frontends/qt/GuiCompare.cpp:264
-#, fuzzy
 msgid "Aborting process..."
-msgstr "Форматирам документа..."
+msgstr "Прекратяване на процес..."
 
 # src/ext_l10n.h:329
 #: src/frontends/qt/GuiCompare.cpp:315
-#, fuzzy
 msgid "differences"
-msgstr "Препратки"
+msgstr "разлики"
 
 #: src/frontends/qt/GuiCompareHistory.cpp:38
 msgid "Compare different revisions"
-msgstr ""
+msgstr "Сравняване на различни ревизии"
 
 # src/frontends/xforms/FormDocument.C:279
 # src/frontends/xforms/FormParagraph.C:133
 #: src/frontends/qt/GuiCounter.h:38
-#, fuzzy
 msgid "Counters"
-msgstr "Екстри"
+msgstr "Броячи"
 
 # src/mathed/math_panel.C:116
 #: src/frontends/qt/GuiDelimiter.cpp:63
@@ -37570,353 +37027,351 @@ msgid "Math Delimiter"
 msgstr "Математически скоби"
 
 # src/frontends/kde/parageneraldlg.C:37 src/frontends/kde/parageneraldlg.C:44
-#: src/frontends/qt/GuiDelimiter.cpp:271 src/frontends/qt/GuiDelimiter.cpp:274
+#: src/frontends/qt/GuiDelimiter.cpp:272 src/frontends/qt/GuiDelimiter.cpp:275
 msgid "(None)"
 msgstr "(няма)"
 
 # src/mathed/math_panel.C:116
-#: src/frontends/qt/GuiDelimiter.cpp:272 src/frontends/qt/GuiDelimiter.cpp:275
-#, fuzzy
+#: src/frontends/qt/GuiDelimiter.cpp:273 src/frontends/qt/GuiDelimiter.cpp:276
 msgid "No Delimiter"
-msgstr "Математически скоби"
+msgstr "Без разделител"
 
 # src/LColor.C:97
-#: src/frontends/qt/GuiDelimiter.cpp:280
+#: src/frontends/qt/GuiDelimiter.cpp:281
 msgid "Variable"
 msgstr "променлив"
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
 #: src/frontends/qt/GuiDocument.cpp:230
-#, fuzzy
 msgid "Module not found!"
-msgstr "Низът не е намерен!"
+msgstr "Не е открит модул!"
 
 # src/MenuBackend.C:444 src/ext_l10n.h:2 src/ext_l10n.h:5
-#: src/frontends/qt/GuiDocument.cpp:595 src/frontends/qt/GuiDocument.cpp:767
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:594 src/frontends/qt/GuiDocument.cpp:775
 msgid "&End Edit"
-msgstr "&Редактиране"
+msgstr "&Спиране на редакция"
 
-#: src/frontends/qt/GuiDocument.cpp:655
+#: src/frontends/qt/GuiDocument.cpp:663
 msgid "Validation required!"
 msgstr "Изисква се валидация!"
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1260
-#: src/frontends/qt/GuiDocument.cpp:705
+#: src/frontends/qt/GuiDocument.cpp:713
 msgid "Layout is valid!"
 msgstr "Оформлението е валидно!"
 
-#: src/frontends/qt/GuiDocument.cpp:706
+#: src/frontends/qt/GuiDocument.cpp:714
 msgid "Layout is invalid!"
 msgstr "Оформлението е невалидно!"
 
 # src/frontends/xforms/FormPreferences.C:1008
-#: src/frontends/qt/GuiDocument.cpp:718
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:726
 msgid "Conversion to current format impossible!"
-msgstr "Конвертирай \"към\" този формат"
+msgstr "Преобразуване към текущия формат е невъзможно!"
 
 # src/frontends/xforms/FormPreferences.C:1008
-#: src/frontends/qt/GuiDocument.cpp:719
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:727
 msgid "Conversion to current stable format impossible."
-msgstr "Конвертирай \"към\" този формат"
+msgstr "Преобразуване към текущия стабилен формат е невъзможно!"
 
 # src/frontends/xforms/FormPreferences.C:1008
-#: src/frontends/qt/GuiDocument.cpp:724
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:732
 msgid "Convert to current format"
-msgstr "Конвертирай \"към\" този формат"
+msgstr "Преобразуване към текущия формат"
 
 # src/frontends/xforms/FormDocument.C:273 src/insets/figinset.C:1975
 # src/insets/insetexternal.C:143 src/lyxfunc.C:3105 src/lyxfunc.C:3181
 # src/lyxfunc.C:3313
-#: src/frontends/qt/GuiDocument.cpp:902 src/frontends/qt/GuiInclude.cpp:52
+#: src/frontends/qt/GuiDocument.cpp:910 src/frontends/qt/GuiInclude.cpp:52
 msgid "Child Document"
 msgstr "Поддокумент"
 
-#: src/frontends/qt/GuiDocument.cpp:903
+#: src/frontends/qt/GuiDocument.cpp:911
 msgid "Include to Output"
 msgstr ""
 
-#: src/frontends/qt/GuiDocument.cpp:985
+#: src/frontends/qt/GuiDocument.cpp:995
 msgid "Unicode (utf8)"
 msgstr "Уникод (utf8)"
 
-#: src/frontends/qt/GuiDocument.cpp:986
+#: src/frontends/qt/GuiDocument.cpp:996
 msgid "Traditional (auto-selected)"
-msgstr ""
+msgstr "Обикновено (автоматично избрано)"
 
-#: src/frontends/qt/GuiDocument.cpp:989
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:999
 msgid "Select Unicode (utf8) encoding."
-msgstr "Уникод (utf8)"
+msgstr "Избиране на уникод (utf8) кодиране."
 
-#: src/frontends/qt/GuiDocument.cpp:991
+#: src/frontends/qt/GuiDocument.cpp:1001
 msgid "Use language-dependent traditional encodings."
-msgstr ""
+msgstr "Избиране на традиционно за езика кодиране."
 
 # src/lyxfunc.C:3291
-#: src/frontends/qt/GuiDocument.cpp:993
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:1003
 msgid "Select a custom, document-wide encoding."
-msgstr "Изберане на директория за документи"
+msgstr "Задавене на кодиране за цилия документ."
 
-#: src/frontends/qt/GuiDocument.cpp:1002
+#: src/frontends/qt/GuiDocument.cpp:1012
 msgid "Standard Unicode support by the ``inputenc'' package."
-msgstr ""
+msgstr "Стандартна поддръжка на уникод от пакета „inputenc“."
 
-#: src/frontends/qt/GuiDocument.cpp:1005
+#: src/frontends/qt/GuiDocument.cpp:1015
 msgid ""
 "Use UTF-8 'as-is': do not load any supporting packages, do not convert any "
 "characters to LaTeX macros. For use with non-TeX fonts (XeTeX/LuaTeX) or "
 "custom preamble code."
 msgstr ""
+"Директно използване на UTF-8: не се зареждат допълнителни пакети, символи "
+"не се котвертират до макроси на LaTeX. Използва се с шрифтове неподдържащи TeX "
+"(XeTeX/LuaTex) или код от заглавната част."
 
-#: src/frontends/qt/GuiDocument.cpp:1010
+#: src/frontends/qt/GuiDocument.cpp:1020
 msgid ""
 "Load ``inputenc'' with option 'utf8x' for extended Unicode support by the "
 "``ucs'' package."
 msgstr ""
+"Зареждане на „inputenc“ с опция „utf8x“ за разширена поддръжка на уникод от "
+"пакета „ucs“."
 
 # src/ext_l10n.h:270
-#: src/frontends/qt/GuiDocument.cpp:1014
+#: src/frontends/qt/GuiDocument.cpp:1024
 msgid "Language Default (no inputenc)"
 msgstr "по подразбиране за езика (без „inputenc“)"
 
-#: src/frontends/qt/GuiDocument.cpp:1016
+#: src/frontends/qt/GuiDocument.cpp:1026
 msgid ""
 "Use the traditional default encoding of the text language. Switch encoding "
 "if a text part is set to a language with different default."
 msgstr ""
 
-#: src/frontends/qt/GuiDocument.cpp:1020
+#: src/frontends/qt/GuiDocument.cpp:1030
 msgid ""
 "Do not load the 'inputenc' package. Switch encoding if required but do not "
 "write input encoding switch commands to the source."
 msgstr ""
 
-#: src/frontends/qt/GuiDocument.cpp:1134
+#: src/frontends/qt/GuiDocument.cpp:1144
 msgid "10"
 msgstr "10"
 
-#: src/frontends/qt/GuiDocument.cpp:1135
+#: src/frontends/qt/GuiDocument.cpp:1145
 msgid "11"
 msgstr "11"
 
-#: src/frontends/qt/GuiDocument.cpp:1136
+#: src/frontends/qt/GuiDocument.cpp:1146
 msgid "12"
 msgstr "12"
 
 # src/ext_l10n.h:175
-#: src/frontends/qt/GuiDocument.cpp:1138
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:1148
 msgid "Automatic[[encoding]]"
-msgstr "по подразбиране"
+msgstr "По подразбиране"
 
-#: src/frontends/qt/GuiDocument.cpp:1148
+#: src/frontends/qt/GuiDocument.cpp:1158
 msgid ""
 "Use OpenType and TrueType fonts directly (requires XeTeX or LuaTeX)\n"
 "You need to install the package \"fontspec\" to use this feature"
 msgstr ""
+"Директно използване на шрифтовете OpenType и TrueType (изисква XeTeX или LuaTeX)\n"
+"Необходимо е да инсталирате пакета „fontspec“ за да използвате тази функционалност."
 
 # src/frontends/kde/tocdlg.C:57
-#: src/frontends/qt/GuiDocument.cpp:1180
+#: src/frontends/qt/GuiDocument.cpp:1190
 msgid "empty"
 msgstr "няма"
 
 # src/mathed/math_panel.C:128
-#: src/frontends/qt/GuiDocument.cpp:1181
+#: src/frontends/qt/GuiDocument.cpp:1191
 msgid "plain"
 msgstr "обикновен"
 
 # src/buffer.C:329
-#: src/frontends/qt/GuiDocument.cpp:1182
+#: src/frontends/qt/GuiDocument.cpp:1192
 msgid "headings"
 msgstr "надписи"
 
-#: src/frontends/qt/GuiDocument.cpp:1183
+#: src/frontends/qt/GuiDocument.cpp:1193
 msgid "fancy"
 msgstr "декоративен"
 
 # src/ext_l10n.h:362
-#: src/frontends/qt/GuiDocument.cpp:1192
+#: src/frontends/qt/GuiDocument.cpp:1202
 msgid "US letter"
 msgstr "Letter (САЩ)"
 
-#: src/frontends/qt/GuiDocument.cpp:1193
+#: src/frontends/qt/GuiDocument.cpp:1203
 msgid "US legal"
 msgstr "Legal (САЩ)"
 
 # src/ext_l10n.h:234
-#: src/frontends/qt/GuiDocument.cpp:1194
+#: src/frontends/qt/GuiDocument.cpp:1204
 msgid "US executive"
 msgstr "Executive (САЩ)"
 
-#: src/frontends/qt/GuiDocument.cpp:1195
+#: src/frontends/qt/GuiDocument.cpp:1205
 msgid "A0"
 msgstr "A0"
 
-#: src/frontends/qt/GuiDocument.cpp:1196
+#: src/frontends/qt/GuiDocument.cpp:1206
 msgid "A1"
 msgstr "A1"
 
-#: src/frontends/qt/GuiDocument.cpp:1197
+#: src/frontends/qt/GuiDocument.cpp:1207
 msgid "A2"
 msgstr "A2"
 
-#: src/frontends/qt/GuiDocument.cpp:1198
+#: src/frontends/qt/GuiDocument.cpp:1208
 msgid "A3"
 msgstr "A3"
 
-#: src/frontends/qt/GuiDocument.cpp:1199
+#: src/frontends/qt/GuiDocument.cpp:1209
 msgid "A4"
 msgstr "A4"
 
-#: src/frontends/qt/GuiDocument.cpp:1200
+#: src/frontends/qt/GuiDocument.cpp:1210
 msgid "A5"
 msgstr "A5"
 
-#: src/frontends/qt/GuiDocument.cpp:1201
+#: src/frontends/qt/GuiDocument.cpp:1211
 msgid "A6"
 msgstr "A6"
 
-#: src/frontends/qt/GuiDocument.cpp:1202
+#: src/frontends/qt/GuiDocument.cpp:1212
 msgid "B0"
 msgstr "B0"
 
-#: src/frontends/qt/GuiDocument.cpp:1203
+#: src/frontends/qt/GuiDocument.cpp:1213
 msgid "B1"
 msgstr "B1"
 
-#: src/frontends/qt/GuiDocument.cpp:1204
+#: src/frontends/qt/GuiDocument.cpp:1214
 msgid "B2"
 msgstr "B2"
 
-#: src/frontends/qt/GuiDocument.cpp:1205
+#: src/frontends/qt/GuiDocument.cpp:1215
 msgid "B3"
 msgstr "B3"
 
-#: src/frontends/qt/GuiDocument.cpp:1206
+#: src/frontends/qt/GuiDocument.cpp:1216
 msgid "B4"
 msgstr "B4"
 
-#: src/frontends/qt/GuiDocument.cpp:1207
+#: src/frontends/qt/GuiDocument.cpp:1217
 msgid "B5"
 msgstr "B5"
 
-#: src/frontends/qt/GuiDocument.cpp:1208
+#: src/frontends/qt/GuiDocument.cpp:1218
 msgid "B6"
 msgstr "B6"
 
-#: src/frontends/qt/GuiDocument.cpp:1209
+#: src/frontends/qt/GuiDocument.cpp:1219
 msgid "C0"
 msgstr "C0"
 
-#: src/frontends/qt/GuiDocument.cpp:1210
+#: src/frontends/qt/GuiDocument.cpp:1220
 msgid "C1"
 msgstr "C1"
 
-#: src/frontends/qt/GuiDocument.cpp:1211
+#: src/frontends/qt/GuiDocument.cpp:1221
 msgid "C2"
 msgstr "C2"
 
-#: src/frontends/qt/GuiDocument.cpp:1212
+#: src/frontends/qt/GuiDocument.cpp:1222
 msgid "C3"
 msgstr "C3"
 
-#: src/frontends/qt/GuiDocument.cpp:1213
+#: src/frontends/qt/GuiDocument.cpp:1223
 msgid "C4"
 msgstr "C4"
 
-#: src/frontends/qt/GuiDocument.cpp:1214
+#: src/frontends/qt/GuiDocument.cpp:1224
 msgid "C5"
 msgstr "C5"
 
-#: src/frontends/qt/GuiDocument.cpp:1215
+#: src/frontends/qt/GuiDocument.cpp:1225
 msgid "C6"
 msgstr "C6"
 
-#: src/frontends/qt/GuiDocument.cpp:1216
+#: src/frontends/qt/GuiDocument.cpp:1226
 msgid "JIS B0"
 msgstr "JIS B0"
 
-#: src/frontends/qt/GuiDocument.cpp:1217
+#: src/frontends/qt/GuiDocument.cpp:1227
 msgid "JIS B1"
 msgstr "JIS B1"
 
-#: src/frontends/qt/GuiDocument.cpp:1218
+#: src/frontends/qt/GuiDocument.cpp:1228
 msgid "JIS B2"
 msgstr "JIS B2"
 
-#: src/frontends/qt/GuiDocument.cpp:1219
+#: src/frontends/qt/GuiDocument.cpp:1229
 msgid "JIS B3"
 msgstr "JIS B3"
 
-#: src/frontends/qt/GuiDocument.cpp:1220
+#: src/frontends/qt/GuiDocument.cpp:1230
 msgid "JIS B4"
 msgstr "JIS B4"
 
-#: src/frontends/qt/GuiDocument.cpp:1221
+#: src/frontends/qt/GuiDocument.cpp:1231
 msgid "JIS B5"
 msgstr "JIS B5"
 
-#: src/frontends/qt/GuiDocument.cpp:1222
+#: src/frontends/qt/GuiDocument.cpp:1232
 msgid "JIS B6"
 msgstr "JIS B6"
 
 # src/mathed/formula.C:929
-#: src/frontends/qt/GuiDocument.cpp:1345
+#: src/frontends/qt/GuiDocument.cpp:1357
 msgid "Numbered"
 msgstr "Номериран"
 
-#: src/frontends/qt/GuiDocument.cpp:1346
+#: src/frontends/qt/GuiDocument.cpp:1358
 msgid "Appears in TOC"
 msgstr "Появява с в съдържанието"
 
 # src/sp_form.C:86
-#: src/frontends/qt/GuiDocument.cpp:1434
+#: src/frontends/qt/GuiDocument.cpp:1446
 msgid "Package"
 msgstr "Пакет"
 
 # src/ext_l10n.h:175
-#: src/frontends/qt/GuiDocument.cpp:1434
+#: src/frontends/qt/GuiDocument.cpp:1446
 msgid "Load automatically"
 msgstr "Автомат. зареждане"
 
-#: src/frontends/qt/GuiDocument.cpp:1435
+#: src/frontends/qt/GuiDocument.cpp:1447
 msgid "Load always"
 msgstr "Зареждане винаги"
 
 # src/lyx_cb.C:263
-#: src/frontends/qt/GuiDocument.cpp:1435
+#: src/frontends/qt/GuiDocument.cpp:1447
 msgid "Do not load"
 msgstr "Не се зарежда"
 
-#: src/frontends/qt/GuiDocument.cpp:1447
+#: src/frontends/qt/GuiDocument.cpp:1459
 msgid "The AMS LaTeX packages are always used"
 msgstr ""
 
-#: src/frontends/qt/GuiDocument.cpp:1450
+#: src/frontends/qt/GuiDocument.cpp:1462
 #, c-format
 msgid "The LaTeX package %1$s is always used"
 msgstr ""
 
-#: src/frontends/qt/GuiDocument.cpp:1455
+#: src/frontends/qt/GuiDocument.cpp:1467
 msgid "The AMS LaTeX packages are never used"
 msgstr ""
 
-#: src/frontends/qt/GuiDocument.cpp:1458
+#: src/frontends/qt/GuiDocument.cpp:1470
 #, c-format
 msgid "The LaTeX package %1$s is never used"
 msgstr ""
 
-#: src/frontends/qt/GuiDocument.cpp:1595 src/frontends/qt/GuiDocument.cpp:2864
+#: src/frontends/qt/GuiDocument.cpp:1607 src/frontends/qt/GuiDocument.cpp:2882
 #, c-format
 msgid "%1$s [Class '%2$s']"
 msgstr "%1$s [клас '%2$s']"
 
-#: src/frontends/qt/GuiDocument.cpp:1598
+#: src/frontends/qt/GuiDocument.cpp:1610
 #, c-format
 msgid ""
 "Class not found by LyX. Please check if you have the matching %1$s class and "
@@ -37925,12 +37380,11 @@ msgstr ""
 "Класът не беше намерен от LyX. Проверете дали класа %1$s е наличен и дали "
 "всички необходими пакети (%2$s) са инсталирани правилно."
 
-#: src/frontends/qt/GuiDocument.cpp:1660
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:1672
 msgid "All avail. modules"
-msgstr "всички налични файлове"
+msgstr "всички налични модули"
 
-#: src/frontends/qt/GuiDocument.cpp:1752 src/frontends/qt/GuiDocument.cpp:1976
+#: src/frontends/qt/GuiDocument.cpp:1766 src/frontends/qt/GuiDocument.cpp:1990
 msgid "Input listings parameters below. Enter ? for a list of parameters."
 msgstr ""
 "Въведете параметри за форматиране на текст. Напишете „?“ за извеждане на "
@@ -37938,192 +37392,186 @@ msgstr ""
 "„,“ (запетая)."
 
 # src/exporter.C:89
-#: src/frontends/qt/GuiDocument.cpp:1759
+#: src/frontends/qt/GuiDocument.cpp:1773
 msgid "Document Class"
 msgstr "Класове (жанрове) документи"
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1260
-#: src/frontends/qt/GuiDocument.cpp:1762
+#: src/frontends/qt/GuiDocument.cpp:1776
 msgid "Local Layout"
 msgstr "Локално оформление"
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1260
-#: src/frontends/qt/GuiDocument.cpp:1764
+#: src/frontends/qt/GuiDocument.cpp:1778
 msgid "Text Layout"
-msgstr "Оформление на текста"
+msgstr "Текст"
 
 # src/frontends/xforms/form_document.C:98
-#: src/frontends/qt/GuiDocument.cpp:1766
+#: src/frontends/qt/GuiDocument.cpp:1780
 msgid "Page Margins"
 msgstr "Полета на страницата"
 
 # src/frontends/xforms/FormPreferences.C:244
-#: src/frontends/qt/GuiDocument.cpp:1768 src/frontends/qt/GuiPrefs.cpp:1054
+#: src/frontends/qt/GuiDocument.cpp:1782 src/frontends/qt/GuiPrefs.cpp:1080
 msgid "Colors"
 msgstr "Цветове"
 
 # src/LyXAction.C:263
-#: src/frontends/qt/GuiDocument.cpp:1769
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:1783
 msgid "Change Tracking"
-msgstr "Проследяване на промените|П"
+msgstr "Проследяване на промените"
 
 # src/mathed/formula.C:929
-#: src/frontends/qt/GuiDocument.cpp:1770
+#: src/frontends/qt/GuiDocument.cpp:1784
 msgid "Numbering & TOC"
 msgstr "Номериране и съдържание"
 
 # src/frontends/xforms/FormIndex.C:29 src/insets/insetindex.C:36
-#: src/frontends/qt/GuiDocument.cpp:1772
+#: src/frontends/qt/GuiDocument.cpp:1786
 msgid "Indexes"
-msgstr "указатели"
+msgstr "Указатели"
 
 # src/ext_l10n.h:320
-#: src/frontends/qt/GuiDocument.cpp:1773
+#: src/frontends/qt/GuiDocument.cpp:1787
 msgid "PDF Properties"
 msgstr "PDF настройки"
 
 # src/frontends/xforms/form_preferences.C:926
-#: src/frontends/qt/GuiDocument.cpp:1774
+#: src/frontends/qt/GuiDocument.cpp:1788
 msgid "Math Options"
 msgstr "Математически"
 
 # src/frontends/xforms/FormDocument.C:281
-#: src/frontends/qt/GuiDocument.cpp:1777
+#: src/frontends/qt/GuiDocument.cpp:1791
 msgid "Bullets"
 msgstr "Водещи знаци"
 
-#: src/frontends/qt/GuiDocument.cpp:1779
+#: src/frontends/qt/GuiDocument.cpp:1793
 msgid "Formats[[output]]"
 msgstr "Формати"
 
 # src/lyx_cb.C:675
-#: src/frontends/qt/GuiDocument.cpp:1780
+#: src/frontends/qt/GuiDocument.cpp:1794
 msgid "LaTeX Preamble"
 msgstr "Заглавна част на LaTeX"
 
 # src/frontends/xforms/form_preferences.C:999
-#: src/frontends/qt/GuiDocument.cpp:2085 src/frontends/qt/GuiDocument.cpp:2171
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2099 src/frontends/qt/GuiDocument.cpp:2185
 msgid "Class defaults"
 msgstr "по подразбиране за класа"
 
 # src/ext_l10n.h:270
-#: src/frontends/qt/GuiDocument.cpp:2085 src/frontends/qt/GuiDocument.cpp:2171
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2099 src/frontends/qt/GuiDocument.cpp:2185
 msgid "Package defaults"
-msgstr "&По подразбиране за езика"
+msgstr "По подразбиране за пакета"
 
-#: src/frontends/qt/GuiDocument.cpp:2088 src/frontends/qt/GuiDocument.cpp:2174
+#: src/frontends/qt/GuiDocument.cpp:2102 src/frontends/qt/GuiDocument.cpp:2188
 msgid "If no value is given, the defaults as set by the class are used."
-msgstr ""
+msgstr "Ако не е зададена стойност се взимат параметрите по подразбиране от класа."
 
-#: src/frontends/qt/GuiDocument.cpp:2089 src/frontends/qt/GuiDocument.cpp:2175
+#: src/frontends/qt/GuiDocument.cpp:2103 src/frontends/qt/GuiDocument.cpp:2189
 msgid ""
 "If no value is given, the defaults as set by the geometry package or a "
 "package/class overriding geometry's defaults are used."
 msgstr ""
+"Ако не е зададена стойност се вземат параметрите по подразбиране от пакета "
+"за оформление или от пакета/класа за документа."
 
 # src/frontends/xforms/form_graphics.C:61
 # src/frontends/xforms/form_graphics.C:82 src/lyxfont.C:411
-#: src/frontends/qt/GuiDocument.cpp:2218 src/frontends/qt/GuiDocument.cpp:2248
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2232 src/frontends/qt/GuiDocument.cpp:2262
 msgid "&Default..."
-msgstr "Стандартно"
+msgstr "По подразбиране"
 
 # src/ext_l10n.h:270
-#: src/frontends/qt/GuiDocument.cpp:2449
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2463
 msgid "Direct (No inputenc)"
-msgstr "по подразбиране за езика (без „inputenc“)"
+msgstr "Директно (без „inputenc“)"
 
 # src/frontends/xforms/form_preferences.C:926
-#: src/frontends/qt/GuiDocument.cpp:2451
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2465
 msgid "Direct (XeTeX/LuaTeX)"
-msgstr "PDF (LuaTeX)"
+msgstr "Директно (XeTeX/LuaTeX)"
 
-#: src/frontends/qt/GuiDocument.cpp:2637 src/frontends/qt/GuiDocument.cpp:4305
-#: src/frontends/qt/GuiDocument.cpp:4314 src/frontends/qt/GuiDocument.cpp:4323
-#: src/frontends/qt/GuiDocument.cpp:4332
+#: src/frontends/qt/GuiDocument.cpp:2651 src/frontends/qt/GuiDocument.cpp:4316
+#: src/frontends/qt/GuiDocument.cpp:4325 src/frontends/qt/GuiDocument.cpp:4334
+#: src/frontends/qt/GuiDocument.cpp:4343
 msgid " (not installed)"
 msgstr " (не е инсталиран)"
 
-#: src/frontends/qt/GuiDocument.cpp:2666
+#: src/frontends/qt/GuiDocument.cpp:2680
 msgid "Non-TeX Fonts Default"
-msgstr ""
+msgstr "По подразбиране без TeX шрифтове"
 
 # src/lyx_cb.C:263
-#: src/frontends/qt/GuiDocument.cpp:2668
+#: src/frontends/qt/GuiDocument.cpp:2682
 msgid " (not available)"
 msgstr " (неналичен)"
 
 # src/frontends/xforms/form_preferences.C:999
-#: src/frontends/qt/GuiDocument.cpp:2669
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2683
 msgid "Class Default (TeX Fonts)"
-msgstr "Провери старите файлове(C)|#C"
+msgstr "По подразбиране за класа (TeX шрифтове)"
 
 # src/ext_l10n.h:7
-#: src/frontends/qt/GuiDocument.cpp:2816
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2834
 msgid "Lay&outs"
-msgstr "Оформи(L)|L"
+msgstr "Оформления"
 
 # src/ext_l10n.h:116
-#: src/frontends/qt/GuiDocument.cpp:2818
+#: src/frontends/qt/GuiDocument.cpp:2836
 msgid "LyX Layout (*.layout)"
 msgstr "LyX оформление (*.layout)"
 
-#: src/frontends/qt/GuiDocument.cpp:2820 src/frontends/qt/GuiDocument.cpp:2829
+#: src/frontends/qt/GuiDocument.cpp:2838 src/frontends/qt/GuiDocument.cpp:2847
 msgid "Local layout file"
-msgstr ""
+msgstr "Локален файл за оформление"
 
-#: src/frontends/qt/GuiDocument.cpp:2830
+#: src/frontends/qt/GuiDocument.cpp:2848
 msgid ""
 "The layout file you have selected is a local layout\n"
 "file, not one in the system or user directory.\n"
 "Your document will not work with this layout if you\n"
 "move the layout file to a different directory."
 msgstr ""
+"Файлът за оформление, които избрахте е локален, а не\n"
+"системен или от директорията на потребителя.\n"
+"Вашия документ няма да се състави ако преместите файла\n"
+"с оформлението в различна директория."
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1260
-#: src/frontends/qt/GuiDocument.cpp:2834
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2852
 msgid "&Set Layout"
-msgstr "Непознато "
+msgstr "&Оформление"
 
 # src/ext_l10n.h:130
-#: src/frontends/qt/GuiDocument.cpp:2848
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2866
 msgid "Unable to read local layout file."
-msgstr "Запази оформлението като подразбиращо се(S)|S"
+msgstr "Неуспешно четене на локален файл за оформление."
 
 # src/ext_l10n.h:130
-#: src/frontends/qt/GuiDocument.cpp:2865
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2883
 msgid "This is a local layout file."
-msgstr "Запази оформлението като подразбиращо се(S)|S"
+msgstr "Това е локален файл за оформление."
 
 # src/bufferlist.C:113 src/bufferlist.C:189
-#: src/frontends/qt/GuiDocument.cpp:2879
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:2897
 msgid "Select master document"
-msgstr "Запазване на документа?"
+msgstr "Избиране на главен документ"
 
 # src/ext_l10n.h:116
-#: src/frontends/qt/GuiDocument.cpp:2883
+#: src/frontends/qt/GuiDocument.cpp:2901
 msgid "LyX Files (*.lyx)"
 msgstr "LyX файлове (*.lyx)"
 
 # src/ext_l10n.h:31
-#: src/frontends/qt/GuiDocument.cpp:2907 src/frontends/qt/GuiDocument.cpp:3211
-#: src/frontends/qt/GuiDocument.cpp:4820
+#: src/frontends/qt/GuiDocument.cpp:2925 src/frontends/qt/GuiDocument.cpp:3226
+#: src/frontends/qt/GuiDocument.cpp:4835
 msgid "Unapplied changes"
 msgstr "Неприложени промени"
 
-#: src/frontends/qt/GuiDocument.cpp:2908 src/frontends/qt/GuiDocument.cpp:3212
-#: src/frontends/qt/GuiDocument.cpp:4821
+#: src/frontends/qt/GuiDocument.cpp:2926 src/frontends/qt/GuiDocument.cpp:3227
+#: src/frontends/qt/GuiDocument.cpp:4836
 msgid ""
 "Some changes in the dialog were not yet applied.\n"
 "If you do not apply now, they will be lost after this action."
@@ -38133,159 +37581,164 @@ msgstr ""
 "Ако не ги приложите сега те ще се загубят след това действие."
 
 # src/frontends/kde/dlg/paradlgdata.C:65
-#: src/frontends/qt/GuiDocument.cpp:2910 src/frontends/qt/GuiDocument.cpp:3214
-#: src/frontends/qt/GuiDocument.cpp:4823
+#: src/frontends/qt/GuiDocument.cpp:2928 src/frontends/qt/GuiDocument.cpp:3229
+#: src/frontends/qt/GuiDocument.cpp:4838
 msgid "&Apply"
 msgstr "&Прилагане"
 
-#: src/frontends/qt/GuiDocument.cpp:2910 src/frontends/qt/GuiDocument.cpp:3214
-#: src/frontends/qt/GuiDocument.cpp:4823
+#: src/frontends/qt/GuiDocument.cpp:2928 src/frontends/qt/GuiDocument.cpp:3229
+#: src/frontends/qt/GuiDocument.cpp:4838
 msgid "&Dismiss"
-msgstr "&Отказване"
+msgstr "&Затваряне"
 
 # src/ext_l10n.h:130
-#: src/frontends/qt/GuiDocument.cpp:2921 src/frontends/qt/GuiDocument.cpp:4831
+#: src/frontends/qt/GuiDocument.cpp:2939 src/frontends/qt/GuiDocument.cpp:4846
 msgid "Unable to set document class."
 msgstr "Не може да се зададе клас на документа."
 
 # src/ext_l10n.h:423
-#: src/frontends/qt/GuiDocument.cpp:3087
+#: src/frontends/qt/GuiDocument.cpp:3105
 msgid "Basic numerical"
 msgstr "Обикновен с номера"
 
 # src/ext_l10n.h:175
-#: src/frontends/qt/GuiDocument.cpp:3090
+#: src/frontends/qt/GuiDocument.cpp:3108
 msgid "Author-year"
 msgstr "автор-година"
 
 # src/ext_l10n.h:175
-#: src/frontends/qt/GuiDocument.cpp:3093
+#: src/frontends/qt/GuiDocument.cpp:3111
 msgid "Author-number"
 msgstr "автор-номер"
 
-#: src/frontends/qt/GuiDocument.cpp:3136
+#: src/frontends/qt/GuiDocument.cpp:3151
 #, c-format
 msgid "%1$s and %2$s"
 msgstr "%1$s и %2$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3143
+#: src/frontends/qt/GuiDocument.cpp:3158
 #, c-format
 msgid "%1$s, %2$s"
 msgstr "%1$s, %2$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3148
+#: src/frontends/qt/GuiDocument.cpp:3163
 #, c-format
 msgid "%1$s, %2$s, and %3$s"
 msgstr "%1$s, %2$s, и %3$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3162
+#: src/frontends/qt/GuiDocument.cpp:3177
 #, c-format
 msgid "%1$s (unavailable)"
 msgstr "%1$s (неналичен)"
 
 # src/ext_l10n.h:130
-#: src/frontends/qt/GuiDocument.cpp:3261
+#: src/frontends/qt/GuiDocument.cpp:3276
 msgid "Module provided by document class."
 msgstr "Модули предоставени от класа за документи"
 
 # src/ext_l10n.h:191
-#: src/frontends/qt/GuiDocument.cpp:3269
+#: src/frontends/qt/GuiDocument.cpp:3284
 #, c-format
 msgid "<p><b>Category:</b> %1$s.</p>"
 msgstr "<p><b>Категория: </b>%1$s</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3279
+#: src/frontends/qt/GuiDocument.cpp:3294
 #, c-format
 msgid "<p><b>Package(s) required:</b> %1$s.</p>"
 msgstr "<p><b>Необходими пакети:</b> %1$s</p>"
 
 # src/frontends/xforms/FormPreferences.C:252
-#: src/frontends/qt/GuiDocument.cpp:3285
+#: src/frontends/qt/GuiDocument.cpp:3300
 msgid "or"
 msgstr "или"
 
-#: src/frontends/qt/GuiDocument.cpp:3288
+#: src/frontends/qt/GuiDocument.cpp:3303
 #, c-format
 msgid "<p><b>Modules required:</b> %1$s.</p>"
 msgstr "<p><b>Необходими модули: </b>%1$s</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3297
+#: src/frontends/qt/GuiDocument.cpp:3312
 #, c-format
 msgid "<p><b>Modules excluded:</b> %1$s.</p>"
 msgstr "<p><b>Изключени модули: </b>%1$s</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3302
+#: src/frontends/qt/GuiDocument.cpp:3317
 #, c-format
 msgid "<p><b>Filename:</b> <tt>%1$s.module</tt>.</p>"
 msgstr "<p><b>Име на файл: </b><tt>%1$s.module</tt></p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3307
+#: src/frontends/qt/GuiDocument.cpp:3322
 msgid ""
 "<p><font color=red><b>WARNING: Some required packages are unavailable!</b></"
 "font></p>"
 msgstr ""
-"<p><font color=red><b>ПРЕДУПРЕЖДЕНИЕ: Някой необходими пакети не са налични!"
+"<p><font color=red><b>ПРЕДУПРЕЖДЕНИЕ: Някои необходими пакети не са налични!"
 "</b></font></p>"
 
 # src/frontends/xforms/form_preferences.C:354
-#: src/frontends/qt/GuiDocument.cpp:3963
+#: src/frontends/qt/GuiDocument.cpp:3974
 msgid "per part"
 msgstr "за всяка част"
 
 # src/ext_l10n.h:194
-#: src/frontends/qt/GuiDocument.cpp:3965
+#: src/frontends/qt/GuiDocument.cpp:3976
 msgid "per chapter"
 msgstr "за всяка глава"
 
 # src/LColor.C:64
-#: src/frontends/qt/GuiDocument.cpp:3967
+#: src/frontends/qt/GuiDocument.cpp:3978
 msgid "per section"
 msgstr "за всеки раздел"
 
 # src/LColor.C:64
-#: src/frontends/qt/GuiDocument.cpp:3969
+#: src/frontends/qt/GuiDocument.cpp:3980
 msgid "per subsection"
 msgstr "за всяка подраздел"
 
 # src/lyxfunc.C:2761
-#: src/frontends/qt/GuiDocument.cpp:3970
+#: src/frontends/qt/GuiDocument.cpp:3981
 msgid "per child document"
 msgstr "за всеки поддокумент"
 
+#: src/frontends/qt/GuiDocument.cpp:4008
+#, c-format
+msgid "%1$s (not available)"
+msgstr "%1$s (липсва)"
+
 # src/LyXAction.C:190
-#: src/frontends/qt/GuiDocument.cpp:4225
+#: src/frontends/qt/GuiDocument.cpp:4236
 msgid "[No options predefined]"
 msgstr "[Няма предефинирани опции]"
 
-#: src/frontends/qt/GuiDocument.cpp:4491
+#: src/frontends/qt/GuiDocument.cpp:4503
 msgid "C&ustomize Hyperref Options"
 msgstr "Конфигуриране на хипервръзките"
 
-#: src/frontends/qt/GuiDocument.cpp:4493
+#: src/frontends/qt/GuiDocument.cpp:4505
 msgid "&Use Hyperref Support"
 msgstr "Позволи употребата на хипервръзки"
 
 # src/frontends/xforms/FormParagraph.C:33
-#: src/frontends/qt/GuiDocument.cpp:4843
+#: src/frontends/qt/GuiDocument.cpp:4858
 msgid "Can't set layout!"
-msgstr "Не може да се зададе оформление!"
+msgstr "Неуспех при задаване на оформление!"
 
 # src/ext_l10n.h:130
-#: src/frontends/qt/GuiDocument.cpp:4844
-#, fuzzy, c-format
+#: src/frontends/qt/GuiDocument.cpp:4859
+#, c-format
 msgid "Unable to set layout for ID: %1$s"
-msgstr "Запази оформлението като подразбиращо се(S)|S"
+msgstr "Неуспех при задаване на оформление за № %1$s"
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1261
-#: src/frontends/qt/GuiDocument.cpp:4942
+#: src/frontends/qt/GuiDocument.cpp:4962
 msgid "Not Found"
 msgstr "Не е намерен"
 
-#: src/frontends/qt/GuiDocument.cpp:5004
+#: src/frontends/qt/GuiDocument.cpp:5024
 msgid "Assigned master does not include this file"
 msgstr "Посочения главен документ не включва този файл!"
 
-#: src/frontends/qt/GuiDocument.cpp:5005
+#: src/frontends/qt/GuiDocument.cpp:5025
 #, c-format
 msgid ""
 "You must include this file in the document\n"
@@ -38296,41 +37749,39 @@ msgstr ""
 "„%1$s“ за да използвате настройките за главен документ"
 
 # src/converter.C:552 src/converter.C:645
-#: src/frontends/qt/GuiDocument.cpp:5009
+#: src/frontends/qt/GuiDocument.cpp:5029
 msgid "Could not load master"
 msgstr "Главния файл не можа да се зареди"
 
 # src/lyx_cb.C:263
-#: src/frontends/qt/GuiDocument.cpp:5010
+#: src/frontends/qt/GuiDocument.cpp:5030
 #, c-format
 msgid ""
 "The master document '%1$s'\n"
 "could not be loaded."
 msgstr ""
 "Главния документ „%1s“\n"
-"не можа да се зареди!"
+"не можe да се зареди!"
 
-#: src/frontends/qt/GuiDocument.cpp:5160
+#: src/frontends/qt/GuiDocument.cpp:5180
 msgid "%1 (missing req.)"
-msgstr ""
+msgstr "%1 (липсващи условия)"
 
-#: src/frontends/qt/GuiDocument.cpp:5172
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:5192
 msgid "personal module"
-msgstr "Лични данни"
+msgstr "личен модул"
 
-#: src/frontends/qt/GuiDocument.cpp:5172
+#: src/frontends/qt/GuiDocument.cpp:5192
 msgid "distributed module"
 msgstr ""
 
-#: src/frontends/qt/GuiDocument.cpp:5173
-#, fuzzy
+#: src/frontends/qt/GuiDocument.cpp:5193
 msgid "<b>Module name:</b> <i>%1</i> (%2)"
-msgstr "<p><b>Необходими модули: </b>%1$s</p>"
+msgstr "<b>Име на модул:</b> <i>%1</i> (%2)"
 
-#: src/frontends/qt/GuiDocument.cpp:5179
+#: src/frontends/qt/GuiDocument.cpp:5199
 msgid "<b>Note:</b> Some requirements for this module are missing!"
-msgstr ""
+msgstr "<b>Забележка:</b> Липсват някои изисквания за този модул!"
 
 # src/frontends/xforms/form_preferences.C:926
 #: src/frontends/qt/GuiERT.h:33
@@ -38342,10 +37793,9 @@ msgid "DocBook"
 msgstr "DocBook"
 
 # src/frontends/xforms/FormError.C:26
-#: src/frontends/qt/GuiErrorList.cpp:46 src/frontends/qt/GuiLog.cpp:250
-#, fuzzy
+#: src/frontends/qt/GuiErrorList.cpp:46 src/frontends/qt/GuiLog.cpp:297
 msgid "Literate"
-msgstr "LaTeX Грешка"
+msgstr "Дословно"
 
 # src/debug.C:34
 #: src/frontends/qt/GuiErrorList.cpp:60
@@ -38409,9 +37859,8 @@ msgstr "Мащаб%"
 
 # src/LyXAction.C:185
 #: src/frontends/qt/GuiExternal.cpp:673
-#, fuzzy
 msgid "Select external file"
-msgstr "Избор на следващ ред"
+msgstr "Избор на външен файл"
 
 # src/ext_l10n.h:175
 #: src/frontends/qt/GuiGraphics.cpp:78
@@ -38426,7 +37875,7 @@ msgstr "Изображение"
 
 #: src/frontends/qt/GuiGraphics.cpp:256 src/frontends/qt/GuiGraphics.cpp:272
 msgid "Dissolve previous group?"
-msgstr ""
+msgstr "Разпускане на предната група?"
 
 #: src/frontends/qt/GuiGraphics.cpp:257
 #, c-format
@@ -38440,12 +37889,12 @@ msgstr ""
 #: src/frontends/qt/GuiGraphics.cpp:263 src/frontends/qt/GuiGraphics.cpp:279
 #, c-format
 msgid "Stick with group '%1$s'"
-msgstr ""
+msgstr "Оставане в грепата „%1$s“"
 
 #: src/frontends/qt/GuiGraphics.cpp:265
 #, c-format
 msgid "Assign to group '%1$s' anyway"
-msgstr ""
+msgstr "Присъединяване към група „%1$s“ все пак"
 
 #: src/frontends/qt/GuiGraphics.cpp:273
 #, c-format
@@ -38459,72 +37908,67 @@ msgstr ""
 #: src/frontends/qt/GuiGraphics.cpp:281
 #, c-format
 msgid "Sign off from group '%1$s'"
-msgstr ""
+msgstr "Изключване от група „%1$s“"
 
 #: src/frontends/qt/GuiGraphics.cpp:321
 msgid "Enter unique group name:"
-msgstr ""
+msgstr "Въведете уникално име на група:"
 
 # src/LyXAction.C:190
 #: src/frontends/qt/GuiGraphics.cpp:326
-#, fuzzy
 msgid "Group already defined!"
-msgstr "Към следваща грешка"
+msgstr "Групата вече съществува!"
 
 #: src/frontends/qt/GuiGraphics.cpp:327
 #, c-format
 msgid "A graphics group with the name '%1$s' already exists."
-msgstr ""
+msgstr "Група с изображения с името „%1$s“ вече съществува."
 
 # src/form1.C:161 src/frontends/kde/dlg/paraextradlgdata.C:91
 # src/frontends/xforms/form_graphics.C:44
 # src/frontends/xforms/form_paragraph.C:219
-#: src/frontends/qt/GuiGraphics.cpp:468
-#, fuzzy
+#: src/frontends/qt/GuiGraphics.cpp:474
 msgid "Set max. &width:"
-msgstr "Ширина"
+msgstr "задаване на макс. ширина:"
 
 # src/form1.C:157 src/frontends/xforms/form_graphics.C:46
-#: src/frontends/qt/GuiGraphics.cpp:469
-#, fuzzy
+#: src/frontends/qt/GuiGraphics.cpp:475
 msgid "Set max. &height:"
-msgstr "Височина"
+msgstr "Задаване на макс. височина:"
 
-#: src/frontends/qt/GuiGraphics.cpp:470
+#: src/frontends/qt/GuiGraphics.cpp:476
 msgid "Maximal width of image in output"
-msgstr ""
+msgstr "Максимална ширина на кройното изображение"
 
-#: src/frontends/qt/GuiGraphics.cpp:471
+#: src/frontends/qt/GuiGraphics.cpp:477
 msgid "Maximal height of image in output"
-msgstr ""
+msgstr "Максимална височина на крайното изображение"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:40
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:40
 msgid "bp"
 msgstr "bp"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:40
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:40
 msgid "cm"
 msgstr "cm"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:41
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:41
 msgid "mm"
 msgstr "mm"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:41
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:41
 msgid "in[[unit of measure]]"
-msgstr "in"
+msgstr "инч"
 
 # src/frontends/kde/printdlg.C:35
-#: src/frontends/qt/GuiGraphics.cpp:776
-#, fuzzy
+#: src/frontends/qt/GuiGraphics.cpp:813
 msgid "Select graphics file"
-msgstr "Избор на файл"
+msgstr "Избор на файл с изображение"
 
 # src/lyx_gui_misc.C:430
-#: src/frontends/qt/GuiGraphics.cpp:788
-#, fuzzy
+#: src/frontends/qt/GuiGraphics.cpp:825
 msgid "&Clipart"
-msgstr "Изтрий(e)|#e"
+msgstr "Клипарт"
 
 # src/frontends/kde/paraextradlg.C:27
 #: src/frontends/qt/GuiHSpace.cpp:44 src/insets/InsetSpace.cpp:68
@@ -38567,7 +38011,7 @@ msgstr "Полуцял интервал (0.5 em)"
 
 #: src/frontends/qt/GuiHSpace.cpp:52
 msgid "Quad (1 em)"
-msgstr "Цял интервал (1em)"
+msgstr "Цял интервал (1 em)"
 
 # src/bufferview_funcs.C:286
 #: src/frontends/qt/GuiHSpace.cpp:53
@@ -38576,28 +38020,29 @@ msgstr "Двоен интервал (2 em)"
 
 # src/mathed/math_forms.C:152
 #: src/frontends/qt/GuiHSpace.cpp:54 src/insets/InsetSpace.cpp:107
-#, fuzzy
 msgid "Horizontal Fill"
-msgstr "Хориз. Подравняване(H)|#H"
+msgstr "Хориз. запълване"
 
 # src/frontends/xforms/form_paragraph.C:153
 #: src/frontends/qt/GuiHSpace.cpp:56 src/insets/InsetSpace.cpp:74
-#, fuzzy
 msgid "Visible Space"
-msgstr "Вертикално разстояние"
+msgstr "Видимо разстояние"
 
-#: src/frontends/qt/GuiHSpace.cpp:208
+#: src/frontends/qt/GuiHSpace.cpp:213
 msgid ""
 "Insert the spacing even after a line break.\n"
 "Note that a protected Half Quad will be turned into\n"
 "a vertical space if used at the beginning of a paragraph!"
 msgstr ""
+"Вмъкване на интервал дори и след нов ред.\n"
+"Обърнете внимание, че защитен полуцял интервал ще се "
+"превърне вав вертикално разстояние ако се използва в "
+"началото на абзац!"
 
 # src/LColor.C:78
 #: src/frontends/qt/GuiHSpace.h:39
-#, fuzzy
 msgid "Horizontal Space Settings"
-msgstr "ред на министраница"
+msgstr "Настройки на хориз. разстаяние"
 
 # src/frontends/kde/urldlg.C:45
 #: src/frontends/qt/GuiHyperlink.h:35
@@ -38605,8 +38050,8 @@ msgid "Hyperlink Settings"
 msgstr "Настройки на хипервръзка"
 
 #: src/frontends/qt/GuiInclude.cpp:118 src/frontends/qt/GuiInclude.cpp:176
-#: src/frontends/qt/GuiListings.cpp:242 src/frontends/qt/GuiListings.cpp:398
-#: src/frontends/qt/GuiListings.cpp:476
+#: src/frontends/qt/GuiListings.cpp:250 src/frontends/qt/GuiListings.cpp:406
+#: src/frontends/qt/GuiListings.cpp:484
 msgid ""
 "Input listing parameters on the right. Enter ? for a list of parameters."
 msgstr ""
@@ -38614,9 +38059,8 @@ msgstr ""
 "възможните параметри. Повече параметри се разделят с „,“ (запетая)"
 
 #: src/frontends/qt/GuiInclude.cpp:333
-#, fuzzy
 msgid "&Create"
-msgstr "&Да, създаване"
+msgstr "&Създаване"
 
 # src/lyxfunc.C:3291
 #: src/frontends/qt/GuiInclude.cpp:362
@@ -38630,9 +38074,8 @@ msgstr "LaTeX/LyX документи (*.tex *.lyx)"
 
 # src/frontends/kde/indexdlg.C:27 src/frontends/kde/indexdlg.C:28
 #: src/frontends/qt/GuiIndex.cpp:32
-#, fuzzy
 msgid "Index Entry Settings"
-msgstr "Индекс запис"
+msgstr "Настройки на индексен запис"
 
 # src/frontends/xforms/FormPreferences.C:244
 #: src/frontends/qt/GuiIndices.cpp:53
@@ -38641,23 +38084,21 @@ msgstr "Цвят на етикета"
 
 # src/support/filetools.C:453
 #: src/frontends/qt/GuiIndices.cpp:216
-#, fuzzy
 msgid "Cannot remove standard index"
-msgstr "Грешка! Не мога да създам временна директория: "
+msgstr "Не може да се премахне стандартния индекс"
 
 #: src/frontends/qt/GuiIndices.cpp:217
 msgid "The default index cannot be removed."
-msgstr ""
+msgstr "Индекса по подразбиране не може да се премахне."
 
 # src/frontends/kde/citationdlg.C:35
 #: src/frontends/qt/GuiIndices.cpp:236
-#, fuzzy
 msgid "Enter new index name"
-msgstr "Достъпни клавиши"
+msgstr "Въвеждане на нови име на индекс"
 
 #: src/frontends/qt/GuiIndices.cpp:244
 msgid "The index could not be renamed. Check if the new name already exists."
-msgstr ""
+msgstr "Индекса не може да се преименува. Проверете дали новото име вече съществува."
 
 #: src/frontends/qt/GuiInfo.cpp:70
 msgid "Date (current)"
@@ -38741,9 +38182,8 @@ msgstr "За приложението LyX"
 #: src/frontends/qt/GuiInfo.cpp:92 src/frontends/qt/GuiInfo.cpp:93
 #: src/frontends/qt/GuiInfo.cpp:94 src/frontends/qt/GuiInfo.cpp:95
 #: src/frontends/qt/GuiInfo.cpp:96 src/frontends/qt/GuiInfo.cpp:97
-#, fuzzy
 msgid "Custom Format"
-msgstr "Изходен формат"
+msgstr "Формат от потребителя"
 
 #: src/frontends/qt/GuiInfo.cpp:98 src/frontends/qt/GuiInfo.cpp:99
 #: src/frontends/qt/GuiInfo.cpp:108 src/frontends/qt/GuiInfo.cpp:109
@@ -38752,15 +38192,13 @@ msgstr "Неприложимо"
 
 # src/sp_form.C:86
 #: src/frontends/qt/GuiInfo.cpp:100
-#, fuzzy
 msgid "Package Name"
-msgstr "Пакет"
+msgstr "Име на пакет"
 
 # src/ext_l10n.h:146
 #: src/frontends/qt/GuiInfo.cpp:101
-#, fuzzy
 msgid "Class Name"
-msgstr "LaTeX конфигурация|L"
+msgstr "Име на клас"
 
 # src/mathed/math_forms.C:22
 #: src/frontends/qt/GuiInfo.cpp:102 src/frontends/qt/GuiInfo.cpp:103
@@ -38794,6 +38232,17 @@ msgid ""
 "* yy: year as two digit number\n"
 "* yyyy: year as four digit number"
 msgstr ""
+"Въвеждане на формат за дата като се използват следните замествания:\n"
+"* d:    ден като число без нули отпред\n"
+"* dd:   ден като число с нула отпред\n"
+"* ddd:  съкратено име на ден по локалните езикови настройки\n"
+"* dddd: име на ден по локалните езикови настройки\n"
+"* M:    месец като число без нула отпред\n"
+"* MM:   месец като число с нула отпред\n"
+"* MMM:  съкратено име на месец по локалните езикови настройки\n"
+"* MMMM: дълго име на месец по локалните езикови настройки\n"
+"* yy:   година като двуцифрено число\n"
+"* yyyy: година като четирицифрено число"
 
 #: src/frontends/qt/GuiInfo.cpp:148 src/frontends/qt/GuiInfo.cpp:162
 #: src/frontends/qt/GuiInfo.cpp:176
@@ -38817,13 +38266,15 @@ msgstr ""
 #: src/frontends/qt/GuiInfo.cpp:190 src/frontends/qt/GuiInfo.cpp:191
 #: src/frontends/qt/GuiInfo.cpp:208 src/frontends/qt/GuiInfo.cpp:209
 msgid "Please select a valid type above"
-msgstr ""
+msgstr "Моля, изберете валиден типо от горните"
 
 #: src/frontends/qt/GuiInfo.cpp:192
 msgid ""
 "Enter a LaTeX package name such as 'hyperref' (extension is optional). The "
 "output will be 'Yes' (package available) or 'No' (package unavailable)."
 msgstr ""
+"Въвеждане име на пакет от LaTeX като „hyperref“ като радширението не е "
+"задължително. Резултата ще е „Да“ (панета е наличен) или „Не“ (панета не е наличен)"
 
 #: src/frontends/qt/GuiInfo.cpp:194
 msgid ""
@@ -38948,112 +38399,97 @@ msgid "Line Settings"
 msgstr "Настройки на линия"
 
 # src/LColor.C:71
-#: src/frontends/qt/GuiListings.cpp:63
+#: src/frontends/qt/GuiListings.cpp:67
 msgid "No language"
 msgstr "<няма>"
 
 # src/LColor.C:78
-#: src/frontends/qt/GuiListings.cpp:168
+#: src/frontends/qt/GuiListings.cpp:172
 msgid "Program Listing Settings"
 msgstr "Настройки на програмен код"
 
 # src/lyx_gui.C:347
-#: src/frontends/qt/GuiListings.cpp:437
+#: src/frontends/qt/GuiListings.cpp:445
 msgid "No dialect"
 msgstr "<няма>"
 
 # src/LaTeXLog.C:69
-#: src/frontends/qt/GuiLog.cpp:116 src/frontends/qt/GuiLog.cpp:278
+#: src/frontends/qt/GuiLog.cpp:155 src/frontends/qt/GuiLog.cpp:325
 msgid "LaTeX Log"
 msgstr "LaTeX журнал"
 
-#: src/frontends/qt/GuiLog.cpp:240
+#: src/frontends/qt/GuiLog.cpp:287
 msgid "Biber"
-msgstr ""
+msgstr "Biber"
 
 # src/frontends/kde/FormPrint.C:118
-#: src/frontends/qt/GuiLog.cpp:253
-#, fuzzy
+#: src/frontends/qt/GuiLog.cpp:300
 msgid "LyX2LyX"
-msgstr "LyX"
+msgstr "LyX2LyX"
 
 # src/LaTeXLog.C:59 src/LaTeXLog.C:62
-#: src/frontends/qt/GuiLog.cpp:280
+#: src/frontends/qt/GuiLog.cpp:327
 #, fuzzy
 msgid "Literate Programming Build Log"
 msgstr "Не е намерен LaTeX файл-протокол"
 
 # src/LaTeXLog.C:59 src/LaTeXLog.C:62
-#: src/frontends/qt/GuiLog.cpp:282
-#, fuzzy
+#: src/frontends/qt/GuiLog.cpp:329
 msgid "lyx2lyx Error Log"
-msgstr "Не е намерен LaTeX файл-протокол"
+msgstr "Журнал за грешки от lyx2lyx"
 
 # src/ext_l10n.h:24
-#: src/frontends/qt/GuiLog.cpp:284
-#, fuzzy
+#: src/frontends/qt/GuiLog.cpp:331
 msgid "Version Control Log"
-msgstr "Контрол на версията(V)|V"
+msgstr "Журнал за контрол на версиите"
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/frontends/qt/GuiLog.cpp:312
-#, fuzzy
+#: src/frontends/qt/GuiLog.cpp:359
 msgid "Log file not found."
-msgstr "Низът не е намерен!"
+msgstr "Журналния файл не е открит."
 
 # src/LaTeXLog.C:59 src/LaTeXLog.C:62
-#: src/frontends/qt/GuiLog.cpp:315
+#: src/frontends/qt/GuiLog.cpp:362
 #, fuzzy
 msgid "No literate programming build log file found."
 msgstr "Не е намерен LaTeX файл-протокол"
 
 # src/LaTeXLog.C:59 src/LaTeXLog.C:62
-#: src/frontends/qt/GuiLog.cpp:318
+#: src/frontends/qt/GuiLog.cpp:365
 #, fuzzy
 msgid "No lyx2lyx error log file found."
 msgstr "Не е намерен LaTeX файл-протокол"
 
 # src/LaTeXLog.C:59 src/LaTeXLog.C:62
-#: src/frontends/qt/GuiLog.cpp:321
-#, fuzzy
+#: src/frontends/qt/GuiLog.cpp:368
 msgid "No version control log file found."
-msgstr "Не е намерен LaTeX файл-протокол"
-
-#: src/frontends/qt/GuiLyXFiles.cpp:152
-msgid "Preferred &Language:"
-msgstr "Предпочитан &език:"
+msgstr "Не е открит журнален файл за контрол на ревизиите."
 
-#: src/frontends/qt/GuiLyXFiles.cpp:158 src/frontends/qt/GuiLyXFiles.cpp:584
+#: src/frontends/qt/GuiLyXFiles.cpp:157 src/frontends/qt/GuiLyXFiles.cpp:590
 msgid "New File From Template"
 msgstr "Зареждане на нов файл от шаблон"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:190
+#: src/frontends/qt/GuiLyXFiles.cpp:189
 msgid "All available files"
 msgstr "всички налични файлове"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:191
+#: src/frontends/qt/GuiLyXFiles.cpp:190
 msgid "Enter string to filter the list of available files"
 msgstr "Въведете низ за филтриране на списъка с наличните файлове."
 
-#: src/frontends/qt/GuiLyXFiles.cpp:224
+#: src/frontends/qt/GuiLyXFiles.cpp:223
 msgid "User and System Files"
 msgstr "Потребителски и системни файлове"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:225
+#: src/frontends/qt/GuiLyXFiles.cpp:224
 msgid "User Files Only"
 msgstr "Само потребителски файлове"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:226
+#: src/frontends/qt/GuiLyXFiles.cpp:225
 msgid "System Files Only"
 msgstr "Само системни файлове"
 
-# диалогов прозорец
-# src/layout_forms.C:64
-#: src/frontends/qt/GuiLyXFiles.cpp:313
-msgid "File &Language:"
-msgstr "&Език от файла:"
-
-#: src/frontends/qt/GuiLyXFiles.cpp:314
+#: src/frontends/qt/GuiLyXFiles.cpp:331
 msgid ""
 "All available languages of the selected file are displayed here.\n"
 "The selected language version will be opened."
@@ -39061,97 +38497,100 @@ msgstr ""
 "Тук са показани всички налични езици от избрания файл с клавишна подредба.\n"
 "Ще се отвори посочената езикова версия."
 
+#: src/frontends/qt/GuiLyXFiles.cpp:334
+msgid "No alternative language versions available for the selected file."
+msgstr ""
+
+#: src/frontends/qt/GuiLyXFiles.cpp:336
+msgid ""
+"If alternative languages are available for a given file,\n"
+"they can be chosen here if a file is selected."
+msgstr ""
+
 # src/frontends/kde/printdlg.C:35
-#: src/frontends/qt/GuiLyXFiles.cpp:360
+#: src/frontends/qt/GuiLyXFiles.cpp:366
 #, fuzzy
 msgid "Select example file"
 msgstr "Избор на файл"
 
 # src/ext_l10n.h:232
-#: src/frontends/qt/GuiLyXFiles.cpp:363 src/frontends/qt/GuiView.cpp:2487
-#: src/frontends/qt/GuiView.cpp:2623 src/frontends/qt/GuiView.cpp:2757
-#, fuzzy
+#: src/frontends/qt/GuiLyXFiles.cpp:369 src/frontends/qt/GuiView.cpp:2675
+#: src/frontends/qt/GuiView.cpp:2815 src/frontends/qt/GuiView.cpp:2949
 msgid "&Examples"
-msgstr "Пример"
+msgstr "Примери"
 
 # src/frontends/kde/printdlg.C:35
-#: src/frontends/qt/GuiLyXFiles.cpp:367 src/frontends/qt/GuiView.cpp:2426
-#, fuzzy
+#: src/frontends/qt/GuiLyXFiles.cpp:373 src/frontends/qt/GuiView.cpp:2614
 msgid "Select template file"
-msgstr "Избор на файл"
+msgstr "Избор на шаблонен файл"
 
 # src/lyx_cb.C:198 src/lyxfunc.C:3055
-#: src/frontends/qt/GuiLyXFiles.cpp:369 src/frontends/qt/GuiView.cpp:2428
-#: src/frontends/qt/GuiView.cpp:2877
+#: src/frontends/qt/GuiLyXFiles.cpp:375 src/frontends/qt/GuiView.cpp:2616
+#: src/frontends/qt/GuiView.cpp:3069
 msgid "&Templates"
 msgstr "&Шаблони"
 
 # src/insets/insetinclude.C:80 src/insets/insetinclude.C:81
-#: src/frontends/qt/GuiLyXFiles.cpp:374
-#, fuzzy
+#: src/frontends/qt/GuiLyXFiles.cpp:380
 msgid "&User files"
-msgstr "Използвай include|#u"
+msgstr "Файлове на потребителя"
 
 # src/insets/insetinclude.C:80 src/insets/insetinclude.C:81
-#: src/frontends/qt/GuiLyXFiles.cpp:375
-#, fuzzy
+#: src/frontends/qt/GuiLyXFiles.cpp:381
 msgid "&System files"
-msgstr "Използвай include|#u"
+msgstr "Системни файлове"
 
 # src/lyxfunc.C:3128
-#: src/frontends/qt/GuiLyXFiles.cpp:378
+#: src/frontends/qt/GuiLyXFiles.cpp:384
 #, fuzzy
 msgid "Chose UI file"
 msgstr "Изберете шаблон"
 
 # src/exporter.C:91
-#: src/frontends/qt/GuiLyXFiles.cpp:379
-#, fuzzy
+#: src/frontends/qt/GuiLyXFiles.cpp:385
 msgid "LyX UI Files (*.ui)"
-msgstr " във файл `"
+msgstr "Файлове на LyX за ПИ (*.ui)"
 
 # src/lyxfunc.C:3128
-#: src/frontends/qt/GuiLyXFiles.cpp:382
+#: src/frontends/qt/GuiLyXFiles.cpp:388
 #, fuzzy
 msgid "Chose bind file"
 msgstr "Изберете шаблон"
 
 # src/insets/insetbib.C:339
-#: src/frontends/qt/GuiLyXFiles.cpp:383
+#: src/frontends/qt/GuiLyXFiles.cpp:389
 #, fuzzy
 msgid "LyX Bind Files (*.bind)"
 msgstr "База данни:"
 
 # src/frontends/xforms/FormPreferences.C:1798
 # src/frontends/xforms/FormPreferences.C:1806
-#: src/frontends/qt/GuiLyXFiles.cpp:386
+#: src/frontends/qt/GuiLyXFiles.cpp:392
 #, fuzzy
 msgid "Chose keyboard map"
 msgstr "Клавиатурна подредба"
 
 # src/frontends/xforms/FormPreferences.C:1798
 # src/frontends/xforms/FormPreferences.C:1806
-#: src/frontends/qt/GuiLyXFiles.cpp:387
+#: src/frontends/qt/GuiLyXFiles.cpp:393
 #, fuzzy
 msgid "LyX Keymap Files (*.kmap)"
 msgstr "Клавиатурна подредба"
 
 # src/frontends/xforms/form_graphics.C:61
 # src/frontends/xforms/form_graphics.C:82 src/lyxfont.C:411
-#: src/frontends/qt/GuiLyXFiles.cpp:445
-#, fuzzy
+#: src/frontends/qt/GuiLyXFiles.cpp:451
 msgid "Default Template"
-msgstr "Стандартно"
+msgstr "Шаблон по подразбиране"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:582
+#: src/frontends/qt/GuiLyXFiles.cpp:588
 msgid "Open Example File"
 msgstr "Отваряне на примерен файл"
 
 # src/ext_l10n.h:232
-#: src/frontends/qt/GuiLyXFiles.cpp:586
-#, fuzzy
+#: src/frontends/qt/GuiLyXFiles.cpp:592
 msgid "Open File"
-msgstr "Пример"
+msgstr "Отваряне на файл"
 
 #: src/frontends/qt/GuiMathMatrix.cpp:34
 msgid "[x]"
@@ -39175,9 +38614,8 @@ msgstr "двойни черти ||x||"
 
 # src/lyxfont.C:56
 #: src/frontends/qt/GuiMathMatrix.cpp:39
-#, fuzzy
 msgid "small"
-msgstr "Малък"
+msgstr "малък"
 
 # src/LyXAction.C:98
 #: src/frontends/qt/GuiMathMatrix.cpp:44
@@ -39217,7 +38655,6 @@ msgstr "Вмъкни приложение"
 
 # src/mathed/math_panel.C:134
 #: src/frontends/qt/GuiMathMatrix.cpp:64
-#, fuzzy
 msgid "Math Matrix"
 msgstr "Матрица"
 
@@ -39245,10 +38682,15 @@ msgid ""
 " Normally, you won't need to set this, since the largest label width of all "
 "the items is used."
 msgstr ""
+"Както е описано в ръководството на потребинеля, ширината на този текст определя "
+"ширината на етикета на всяка точка в среди като списък и описание.\n"
+"\n"
+"Обикновено нямате нужда от тази настройка, тъй като се използва ширината на "
+"най-големия етикет от всички записи в списъка."
 
 # src/frontends/kde/FormCitation.C:160 src/frontends/kde/FormRef.C:201
 # src/frontends/kde/indexdlg.C:60 src/frontends/kde/tocdlg.C:48
-#: src/frontends/qt/GuiParagraph.cpp:175 src/frontends/qt/GuiView.cpp:3155
+#: src/frontends/qt/GuiParagraph.cpp:175 src/frontends/qt/GuiView.cpp:3347
 msgid "&Close"
 msgstr "&Затваряне"
 
@@ -39258,124 +38700,121 @@ msgid "Phantom Settings"
 msgstr "Настройки на фантом"
 
 # src/frontends/xforms/FormPreferences.C:220
-#: src/frontends/qt/GuiPrefs.cpp:209
+#: src/frontends/qt/GuiPrefs.cpp:213
 msgid "Look & Feel"
 msgstr "Облик и усещане"
 
 # src/debug.C:42
-#: src/frontends/qt/GuiPrefs.cpp:213
+#: src/frontends/qt/GuiPrefs.cpp:217
 msgid "File Handling"
 msgstr "Работа с файлове"
 
 # src/ext_l10n.h:262 src/frontends/gnome/FormIndex.C:89
 # src/frontends/xforms/form_index.C:28
-#: src/frontends/qt/GuiPrefs.cpp:414
+#: src/frontends/qt/GuiPrefs.cpp:418
 msgid "Keyboard/Mouse"
 msgstr "Клавиатура и мишка"
 
 # src/ext_l10n.h:191
-#: src/frontends/qt/GuiPrefs.cpp:548
+#: src/frontends/qt/GuiPrefs.cpp:552
 msgid "Input Completion"
 msgstr "Автоматично дописване"
 
 # src/frontends/xforms/form_preferences.C:887
-#: src/frontends/qt/GuiPrefs.cpp:688 src/frontends/qt/GuiPrefs.cpp:834
+#: src/frontends/qt/GuiPrefs.cpp:692 src/frontends/qt/GuiPrefs.cpp:838
 msgid "C&ommand:"
 msgstr "Команда:"
 
 # src/frontends/xforms/form_preferences.C:887
-#: src/frontends/qt/GuiPrefs.cpp:713 src/frontends/qt/GuiPrefs.cpp:738
-#: src/frontends/qt/GuiPrefs.cpp:862 src/frontends/qt/GuiPrefs.cpp:889
+#: src/frontends/qt/GuiPrefs.cpp:717 src/frontends/qt/GuiPrefs.cpp:742
+#: src/frontends/qt/GuiPrefs.cpp:866 src/frontends/qt/GuiPrefs.cpp:893
 msgid "Co&mmand:"
 msgstr "Команда:"
 
 # src/frontends/xforms/FormPreferences.C:238
-#: src/frontends/qt/GuiPrefs.cpp:910
+#: src/frontends/qt/GuiPrefs.cpp:914
 msgid "Screen Fonts"
 msgstr "Екранни шрифтове"
 
 # src/frontends/xforms/FormPreferences.C:261
-#: src/frontends/qt/GuiPrefs.cpp:1374
+#: src/frontends/qt/GuiPrefs.cpp:1400
 msgid "Paths"
 msgstr "Пътища"
 
 # src/frontends/kde/printdlg.C:35
-#: src/frontends/qt/GuiPrefs.cpp:1461
+#: src/frontends/qt/GuiPrefs.cpp:1487
 msgid "Select directory for example files"
 msgstr "Изборане на директория за примерни файлове"
 
 # src/lyxfunc.C:3291
-#: src/frontends/qt/GuiPrefs.cpp:1470
+#: src/frontends/qt/GuiPrefs.cpp:1496
 msgid "Select a document templates directory"
 msgstr "Избиране на директория за шаблонни документи"
 
 # src/support/filetools.C:453
-#: src/frontends/qt/GuiPrefs.cpp:1479
+#: src/frontends/qt/GuiPrefs.cpp:1505
 msgid "Select a temporary directory"
 msgstr "Избиране на директория за временни файлове"
 
 # src/lyxfunc.C:3291
-#: src/frontends/qt/GuiPrefs.cpp:1488
+#: src/frontends/qt/GuiPrefs.cpp:1514
 msgid "Select a backups directory"
 msgstr "Изберане на директория за резервни копия"
 
 # src/lyxfunc.C:3291
-#: src/frontends/qt/GuiPrefs.cpp:1497
+#: src/frontends/qt/GuiPrefs.cpp:1523
 msgid "Select a document directory"
 msgstr "Изберане на директория за документи"
 
-#: src/frontends/qt/GuiPrefs.cpp:1506
+#: src/frontends/qt/GuiPrefs.cpp:1532
 msgid "Set the path to the thesaurus dictionaries"
 msgstr "Насройване на път до синонимни речници"
 
-#: src/frontends/qt/GuiPrefs.cpp:1515
+#: src/frontends/qt/GuiPrefs.cpp:1541
 msgid "Set the path to the Hunspell dictionaries"
 msgstr "Настройване на път до речници на Hunspell"
 
-#: src/frontends/qt/GuiPrefs.cpp:1524
+#: src/frontends/qt/GuiPrefs.cpp:1550
 msgid "Give a filename for the LyX server pipe"
 msgstr "Задаване име на файл за сървърен канал на LyX"
 
 # src/spellchecker.C:717
-#: src/frontends/qt/GuiPrefs.cpp:1537 src/frontends/qt/GuiSpellchecker.cpp:614
+#: src/frontends/qt/GuiPrefs.cpp:1563 src/frontends/qt/GuiSpellchecker.cpp:642
 msgid "Spellchecker"
 msgstr "Правопис"
 
 # src/ext_l10n.h:217
-#: src/frontends/qt/GuiPrefs.cpp:1543
+#: src/frontends/qt/GuiPrefs.cpp:1569
 #, fuzzy
 msgid "Native"
 msgstr "Дата"
 
 # src/frontends/xforms/FormTabular.C:131
-#: src/frontends/qt/GuiPrefs.cpp:1549
-#, fuzzy
+#: src/frontends/qt/GuiPrefs.cpp:1575
 msgid "Aspell"
-msgstr "Клетка"
+msgstr "Aspell"
 
 # src/ext_l10n.h:194
-#: src/frontends/qt/GuiPrefs.cpp:1552
-#, fuzzy
+#: src/frontends/qt/GuiPrefs.cpp:1578
 msgid "Enchant"
-msgstr "Глава"
+msgstr "Enchant"
 
 # src/frontends/xforms/FormTabular.C:131
-#: src/frontends/qt/GuiPrefs.cpp:1555
-#, fuzzy
+#: src/frontends/qt/GuiPrefs.cpp:1581
 msgid "Hunspell"
-msgstr "Клетка"
+msgstr "Hunspell"
 
 # src/frontends/xforms/FormPreferences.C:226
 # src/frontends/xforms/FormPreferences.C:255
-#: src/frontends/qt/GuiPrefs.cpp:1628
+#: src/frontends/qt/GuiPrefs.cpp:1654
 msgid "Converters"
-msgstr "Конвертиране"
+msgstr "Преобразуване"
 
-#: src/frontends/qt/GuiPrefs.cpp:1861
+#: src/frontends/qt/GuiPrefs.cpp:1894
 msgid "SECURITY WARNING!"
-msgstr ""
+msgstr "Предупреждени за сигурността!"
 
-#: src/frontends/qt/GuiPrefs.cpp:1861
+#: src/frontends/qt/GuiPrefs.cpp:1894
 msgid ""
 "Unchecking this option has the effect that potentially harmful converters "
 "would be run without asking your permission first. This is UNSAFE and NOT "
@@ -39384,38 +38823,36 @@ msgid ""
 msgstr ""
 
 # src/frontends/xforms/FormPreferences.C:252
-#: src/frontends/qt/GuiPrefs.cpp:1981
+#: src/frontends/qt/GuiPrefs.cpp:2014
 msgid "File Formats"
 msgstr "Файлови формати"
 
 # src/frontends/xforms/FormPreferences.C:252
-#: src/frontends/qt/GuiPrefs.cpp:2215 src/frontends/qt/GuiPrefs.cpp:2367
-#, fuzzy
+#: src/frontends/qt/GuiPrefs.cpp:2257 src/frontends/qt/GuiPrefs.cpp:2409
 msgid "Format in use"
-msgstr "Формати"
+msgstr "Използвани формати"
 
 # src/frontends/xforms/FormPreferences.C:1407
-#: src/frontends/qt/GuiPrefs.cpp:2216
-#, fuzzy
+#: src/frontends/qt/GuiPrefs.cpp:2258
 msgid ""
 "You cannot change a format's short name if the format is used by a "
 "converter. Please remove the converter first."
 msgstr ""
-"Не може да се премахне формат, който се използва от конвертор. Първо "
-"премахнете конвертора."
+"Не може да се променя краткото име на формат ако формата се използва "
+" от конвертор. Първо премахнете конвертора."
 
 # src/frontends/xforms/FormPreferences.C:1407
-#: src/frontends/qt/GuiPrefs.cpp:2368
+#: src/frontends/qt/GuiPrefs.cpp:2410
 msgid "Cannot remove a Format used by a Converter. Remove the converter first."
 msgstr ""
 "Не може да се премахне формат, който се използва от конвертор. Първо "
 "премахнете конвертора."
 
-#: src/frontends/qt/GuiPrefs.cpp:2464
+#: src/frontends/qt/GuiPrefs.cpp:2510
 msgid "LyX needs to be restarted!"
 msgstr "Необходимо е да рестартирате LyX"
 
-#: src/frontends/qt/GuiPrefs.cpp:2465
+#: src/frontends/qt/GuiPrefs.cpp:2511
 msgid ""
 "The change of user interface language will be fully effective only after a "
 "restart."
@@ -39424,96 +38861,94 @@ msgstr ""
 "рестарт на програмата"
 
 # src/LyXAction.C:388
-#: src/frontends/qt/GuiPrefs.cpp:2565
+#: src/frontends/qt/GuiPrefs.cpp:2611
 msgid "User Interface"
 msgstr "Потребителски интерфейс"
 
 # src/ext_l10n.h:20
-#: src/frontends/qt/GuiPrefs.cpp:2584
+#: src/frontends/qt/GuiPrefs.cpp:2630
 msgid "Classic"
 msgstr "Класик"
 
-#: src/frontends/qt/GuiPrefs.cpp:2585
+#: src/frontends/qt/GuiPrefs.cpp:2631
 msgid "Oxygen"
 msgstr "Оксижен"
 
 # src/frontends/xforms/FormError.C:26
-#: src/frontends/qt/GuiPrefs.cpp:2633
+#: src/frontends/qt/GuiPrefs.cpp:2682
 msgid "Document Handling"
 msgstr "Обработка на документа"
 
 # src/frontends/xforms/FormDocument.C:279
 # src/frontends/xforms/FormParagraph.C:133
-#: src/frontends/qt/GuiPrefs.cpp:2740
+#: src/frontends/qt/GuiPrefs.cpp:2789
 msgid "Control"
 msgstr "Управление и контрол"
 
 # src/ext_l10n.h:375
-#: src/frontends/qt/GuiPrefs.cpp:2861
+#: src/frontends/qt/GuiPrefs.cpp:2910
 msgid "Shortcuts"
 msgstr "Клавишни комбинации"
 
 # src/mathed/math_forms.C:22
-#: src/frontends/qt/GuiPrefs.cpp:2868
+#: src/frontends/qt/GuiPrefs.cpp:2917
 msgid "Function"
 msgstr "Функция"
 
 # src/ext_l10n.h:375
-#: src/frontends/qt/GuiPrefs.cpp:2869
+#: src/frontends/qt/GuiPrefs.cpp:2918
 msgid "Shortcut"
 msgstr "Клавишна комбинация"
 
-#: src/frontends/qt/GuiPrefs.cpp:2946
+#: src/frontends/qt/GuiPrefs.cpp:2995
 msgid "Cursor, Mouse and Editing Functions"
 msgstr "Курсов, мишка и функции за редактиране"
 
 # src/mathed/math_panel.C:134
-#: src/frontends/qt/GuiPrefs.cpp:2950
+#: src/frontends/qt/GuiPrefs.cpp:2999
 msgid "Mathematical Symbols"
 msgstr "Математически символи"
 
 # src/frontends/xforms/FormError.C:26
-#: src/frontends/qt/GuiPrefs.cpp:2954
+#: src/frontends/qt/GuiPrefs.cpp:3003
 msgid "Document and Window"
 msgstr "Документи и прозорци"
 
-#: src/frontends/qt/GuiPrefs.cpp:2958
+#: src/frontends/qt/GuiPrefs.cpp:3007
 msgid "Font, Layouts and Textclasses"
 msgstr "Шрифт, оформление и класове текст (документ)"
 
 # src/frontends/xforms/FormPreferences.C:247
 # src/frontends/xforms/FormPreferences.C:264
 # src/frontends/xforms/FormPreferences.C:272 src/mathed/math_forms.C:46
-#: src/frontends/qt/GuiPrefs.cpp:2962
+#: src/frontends/qt/GuiPrefs.cpp:3011
 msgid "System and Miscellaneous"
 msgstr "Системни и разни функции"
 
 # src/frontends/kde/dlg/paradlgdata.C:82
-#: src/frontends/qt/GuiPrefs.cpp:3099 src/frontends/qt/GuiPrefs.cpp:3159
-#, fuzzy
+#: src/frontends/qt/GuiPrefs.cpp:3148 src/frontends/qt/GuiPrefs.cpp:3208
 msgid "Res&tore"
-msgstr "(&R)Въстанови"
+msgstr "Възстановяване"
 
-#: src/frontends/qt/GuiPrefs.cpp:3327 src/frontends/qt/GuiPrefs.cpp:3336
-#: src/frontends/qt/GuiPrefs.cpp:3342 src/frontends/qt/GuiPrefs.cpp:3405
+#: src/frontends/qt/GuiPrefs.cpp:3376 src/frontends/qt/GuiPrefs.cpp:3385
+#: src/frontends/qt/GuiPrefs.cpp:3391 src/frontends/qt/GuiPrefs.cpp:3455
 msgid "Failed to create shortcut"
 msgstr ""
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
-#: src/frontends/qt/GuiPrefs.cpp:3328
-#, fuzzy
+#: src/frontends/qt/GuiPrefs.cpp:3377
 msgid "Unknown or invalid LyX function"
-msgstr "Непознато действие"
+msgstr "Непозната или невалидна функция на LyX"
 
-#: src/frontends/qt/GuiPrefs.cpp:3337
+#: src/frontends/qt/GuiPrefs.cpp:3386
 msgid "This LyX function is hidden and cannot be bound."
 msgstr ""
 
-#: src/frontends/qt/GuiPrefs.cpp:3343
+#: src/frontends/qt/GuiPrefs.cpp:3392
 msgid "Invalid or empty key sequence"
 msgstr ""
 
-#: src/frontends/qt/GuiPrefs.cpp:3358
+#: src/frontends/qt/GuiPrefs.cpp:3407
 #, c-format
 msgid ""
 "Shortcut `%1$s' is already bound to %2$s.\n"
@@ -39521,31 +38956,30 @@ msgid ""
 msgstr ""
 
 # src/ext_l10n.h:375
-#: src/frontends/qt/GuiPrefs.cpp:3364
+#: src/frontends/qt/GuiPrefs.cpp:3413
 #, fuzzy
 msgid "Redefine shortcut?"
 msgstr "Подзаглавие"
 
 # src/frontends/xforms/FormPreferences.C:269
-#: src/frontends/qt/GuiPrefs.cpp:3365
+#: src/frontends/qt/GuiPrefs.cpp:3414
 #, fuzzy
 msgid "&Redefine"
 msgstr "Принтер"
 
-#: src/frontends/qt/GuiPrefs.cpp:3406
+#: src/frontends/qt/GuiPrefs.cpp:3456
 msgid "Can not insert shortcut to the list"
 msgstr ""
 
 # src/frontends/xforms/form_paragraph.C:48
-#: src/frontends/qt/GuiPrefs.cpp:3437
+#: src/frontends/qt/GuiPrefs.cpp:3487
 msgid "Identity"
 msgstr "Идентификация"
 
 # src/frontends/xforms/form_tabular.C:113
 #: src/frontends/qt/GuiPrintNomencl.cpp:49
-#, fuzzy
 msgid "Longest label width"
-msgstr " Дълга таблица(L)|#L"
+msgstr "Ширина на най-дългия етикет"
 
 # src/frontends/xforms/FormPreferences.C:226
 # src/frontends/xforms/FormPreferences.C:255
@@ -39617,62 +39051,59 @@ msgstr "Назад"
 
 #: src/frontends/qt/GuiRef.cpp:395
 msgid "Jump back to the original cursor location"
-msgstr ""
+msgstr "Връщане до първоначалната позиция на курсора"
 
 #: src/frontends/qt/GuiRef.cpp:467 src/frontends/qt/GuiRef.cpp:487
 msgid "<No prefix>"
-msgstr ""
+msgstr "<без префикс>"
 
-#: src/frontends/qt/GuiSearch.cpp:191
+#: src/frontends/qt/GuiSearch.cpp:194
 msgid "Ex&pand"
 msgstr ""
 
-#: src/frontends/qt/GuiSearch.cpp:192
+#: src/frontends/qt/GuiSearch.cpp:195
 msgid "Show replace and option widgets"
 msgstr ""
 
 # src/kbsequence.C:215
-#: src/frontends/qt/GuiSearch.cpp:251
+#: src/frontends/qt/GuiSearch.cpp:254
 #, fuzzy
 msgid "Active options:"
 msgstr "   опции: "
 
 # src/form1.C:310
-#: src/frontends/qt/GuiSearch.cpp:254
+#: src/frontends/qt/GuiSearch.cpp:257
 #, fuzzy
 msgid "Case sensitive search"
 msgstr "Различаване на малки от големи букви"
 
 # src/ext_l10n.h:263
-#: src/frontends/qt/GuiSearch.cpp:272
-#, fuzzy
+#: src/frontends/qt/GuiSearch.cpp:275
 msgid "Whole words only"
-msgstr "Цели думи"
+msgstr "Само цели думи"
 
 # src/converter.C:798 src/converter.C:865
-#: src/frontends/qt/GuiSearch.cpp:289
-#, fuzzy
+#: src/frontends/qt/GuiSearch.cpp:292
 msgid "Search only in selection"
-msgstr "Търсене само в мат. изрази"
+msgstr "Търсене само в избаната област"
 
-#: src/frontends/qt/GuiSearch.cpp:306
+#: src/frontends/qt/GuiSearch.cpp:309
 #, fuzzy
 msgid "Search as you type"
 msgstr "&Търсене докато се пише"
 
-#: src/frontends/qt/GuiSearch.cpp:323
+#: src/frontends/qt/GuiSearch.cpp:326
 #, fuzzy
 msgid "Wrap search"
 msgstr "Търсене отново?"
 
-#: src/frontends/qt/GuiSearch.cpp:345
+#: src/frontends/qt/GuiSearch.cpp:348
 #, fuzzy
 msgid "Click here to change search options"
 msgstr "Натиснете за промяна на цвета"
 
 # src/LyXAction.C:204 src/lyxfr0.C:108
-#: src/frontends/qt/GuiSearch.cpp:556
-#, fuzzy
+#: src/frontends/qt/GuiSearch.cpp:569
 msgid "Search and Replace"
 msgstr "Търсене и Замяна"
 
@@ -39702,7 +39133,7 @@ msgid ""
 msgstr "Достигнат е края на документа. Желаете ли да продължите от началото?"
 
 # src/spellchecker.C:971
-#: src/frontends/qt/GuiSpellchecker.cpp:560
+#: src/frontends/qt/GuiSpellchecker.cpp:588
 msgid "Spell checker has no dictionaries."
 msgstr "Няма речник за проверката на правописа."
 
@@ -40088,7 +39519,7 @@ msgstr "Вмъкване на таблица"
 msgid "TeX Information"
 msgstr "Информация за TeX"
 
-#: src/frontends/qt/GuiThesaurus.cpp:207
+#: src/frontends/qt/GuiThesaurus.cpp:235
 msgid "No thesaurus available for this language!"
 msgstr "Няма наличен синонимен речник за избрания език."
 
@@ -40097,45 +39528,45 @@ msgstr "Няма наличен синонимен речник за избра
 msgid "Outline"
 msgstr "Структура"
 
-#: src/frontends/qt/GuiToolbar.cpp:415
+#: src/frontends/qt/GuiToolbar.cpp:428
 msgid "&Reset to default"
 msgstr "Възстановяване по подразбиране"
 
 # src/frontends/xforms/FormDocument.C:1101
-#: src/frontends/qt/GuiToolbar.cpp:416
+#: src/frontends/qt/GuiToolbar.cpp:429
 msgid "Reset all font settings to their defaults"
 msgstr ""
 "Възстановяване на всички настройките на шрифт към първоначарните им стойности"
 
 # src/frontends/xforms/form_graphics.C:61
 # src/frontends/xforms/form_graphics.C:82 src/lyxfont.C:411
-#: src/frontends/qt/GuiToolbar.cpp:629
+#: src/frontends/qt/GuiToolbar.cpp:642
 msgid "auto"
 msgstr "автоматично"
 
-#: src/frontends/qt/GuiToolbar.cpp:631
+#: src/frontends/qt/GuiToolbar.cpp:644
 #, c-format
 msgid "Toolbar \"%1$s\" does not support state \"auto\""
 msgstr ""
 
 # src/lyxfont.C:62
-#: src/frontends/qt/GuiToolbar.cpp:638 src/insets/InsetBranch.cpp:79
+#: src/frontends/qt/GuiToolbar.cpp:651 src/insets/InsetBranch.cpp:79
 #: src/insets/InsetBranch.cpp:82
 msgid "off"
 msgstr "изкл."
 
-#: src/frontends/qt/GuiToolbar.cpp:645 src/frontends/qt/GuiToolbar.cpp:685
+#: src/frontends/qt/GuiToolbar.cpp:658 src/frontends/qt/GuiToolbar.cpp:698
 #, c-format
 msgid "Toolbar \"%1$s\" state set to %2$s"
 msgstr ""
 
 # src/frontends/xforms/FormTabular.C:133
-#: src/frontends/qt/GuiToolbar.cpp:682
+#: src/frontends/qt/GuiToolbar.cpp:695
 #, fuzzy
 msgid "movable"
 msgstr "Дълга таблица"
 
-#: src/frontends/qt/GuiToolbar.cpp:684
+#: src/frontends/qt/GuiToolbar.cpp:697
 msgid "immovable"
 msgstr ""
 
@@ -40144,27 +39575,39 @@ msgstr ""
 msgid "Vertical Space Settings"
 msgstr "Настройка на вертикално отстояние"
 
-#: src/frontends/qt/GuiView.cpp:154
+#: src/frontends/qt/GuiView.cpp:156
 msgid ""
 "The Document\n"
 "Processor[[welcome banner]]"
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:155
+#: src/frontends/qt/GuiView.cpp:157
 msgid "1.0[[possibly scale the welcome banner text size]]"
 msgstr ""
 
 # src/lyxfunc.C:1125
-#: src/frontends/qt/GuiView.cpp:158
+#: src/frontends/qt/GuiView.cpp:160
 msgid "version "
 msgstr "версия "
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
-#: src/frontends/qt/GuiView.cpp:158
+#: src/frontends/qt/GuiView.cpp:160
 msgid "unknown version"
 msgstr "неподната версия"
 
-#: src/frontends/qt/GuiView.cpp:639
+#: src/frontends/qt/GuiView.cpp:648
+msgid "Workarea zoom level. Drag, use Ctrl-+/- or Shift-Mousewheel to adjust."
+msgstr ""
+
+#: src/frontends/qt/GuiView.cpp:690 src/frontends/qt/GuiView.cpp:803
+#: src/frontends/qt/GuiView.cpp:973 src/frontends/qt/Menus.cpp:1843
+#: src/frontends/qt/Menus.cpp:1847 src/frontends/qt/Menus.cpp:1851
+#: src/frontends/qt/Menus.cpp:1855 src/frontends/qt/Menus.cpp:1859
+#: src/frontends/qt/Menus.cpp:1863
+msgid "[[ZOOM]]%1$d%"
+msgstr ""
+
+#: src/frontends/qt/GuiView.cpp:709
 msgid ""
 "WARNING: LaTeX is allowed to execute external commands for this document. "
 "Right click to change."
@@ -40178,121 +39621,139 @@ msgstr ""
 # src/frontends/kde/dlg/printdlgdata.C:133
 # src/frontends/kde/dlg/tabcreatedlgdata.C:60 src/frontends/kde/indexdlg.C:65
 # src/frontends/kde/refdlg.C:92 src/frontends/kde/urldlg.C:58
-#: src/frontends/qt/GuiView.cpp:720
+#: src/frontends/qt/GuiView.cpp:788
 #, fuzzy
 msgid "Cancel Export?"
-msgstr "(&C)Отказ"
+msgstr "Отказване на експорта"
 
-#: src/frontends/qt/GuiView.cpp:721
+#: src/frontends/qt/GuiView.cpp:789
 msgid "Do you want to cancel the background export process?"
 msgstr ""
 
 # src/ext_l10n.h:205
-#: src/frontends/qt/GuiView.cpp:724
+#: src/frontends/qt/GuiView.cpp:792
 #, fuzzy
 msgid "Co&ntinue"
 msgstr "Условие"
 
 # src/importer.C:58
-#: src/frontends/qt/GuiView.cpp:749
+#: src/frontends/qt/GuiView.cpp:869
 #, c-format
 msgid "Successful export to format: %1$s"
 msgstr "Успешено експортиране към формат: %1$s"
 
 # src/importer.C:58
-#: src/frontends/qt/GuiView.cpp:758
+#: src/frontends/qt/GuiView.cpp:878
 #, c-format
 msgid "Error while exporting format: %1$s"
 msgstr "Грешка при експортиране във формат: %1$s"
 
 # src/importer.C:58
-#: src/frontends/qt/GuiView.cpp:761
+#: src/frontends/qt/GuiView.cpp:881
 #, c-format
 msgid "Successful preview of format: %1$s"
 msgstr "Успешен преглед във формат: %1$s"
 
 # src/importer.C:58
-#: src/frontends/qt/GuiView.cpp:764
+#: src/frontends/qt/GuiView.cpp:884
 #, c-format
 msgid "Error while previewing format: %1$s"
 msgstr "Грешка при преглед във формат: %1$s"
 
 # src/importer.C:58
-#: src/frontends/qt/GuiView.cpp:767
+#: src/frontends/qt/GuiView.cpp:887
 #, fuzzy, c-format
 msgid "Conversion cancelled while previewing format: %1$s"
 msgstr "Няма информация за импортиране от "
 
-#: src/frontends/qt/GuiView.cpp:1096
+#: src/frontends/qt/GuiView.cpp:1239
 msgid "Exit LyX"
 msgstr "Изход от LyX"
 
-#: src/frontends/qt/GuiView.cpp:1097
+#: src/frontends/qt/GuiView.cpp:1240
 msgid "LyX could not be closed because documents are being processed by LyX."
 msgstr ""
 "LyX не може да се затвори, защото има документи, които се обработват от "
 "програмата"
 
-#: src/frontends/qt/GuiView.cpp:1245
+#: src/frontends/qt/GuiView.cpp:1388
 #, c-format
 msgid "%1$s (modified externally)"
 msgstr ""
 
 # src/minibuffer.C:46 src/minibuffer.C:244
-#: src/frontends/qt/GuiView.cpp:1364
+#: src/frontends/qt/GuiView.cpp:1511
 msgid "Welcome to LyX!"
 msgstr "Добре дошли в LyX!"
 
 # src/ext_l10n.h:175
-#: src/frontends/qt/GuiView.cpp:1900
+#: src/frontends/qt/GuiView.cpp:2070
 msgid "Automatic save done."
 msgstr "Автоматичното запазване приключи."
 
 # src/lyx_cb.C:411
-#: src/frontends/qt/GuiView.cpp:1901
+#: src/frontends/qt/GuiView.cpp:2071
 msgid "Automatic save failed!"
 msgstr "Автоматичното запазване се провали!"
 
 # src/lyxfunc.C:347
-#: src/frontends/qt/GuiView.cpp:1957
+#: src/frontends/qt/GuiView.cpp:2151
 msgid "Command not allowed without any document open"
 msgstr "Командата не е позволена без да има отворен документ"
 
-#: src/frontends/qt/GuiView.cpp:2026
+#: src/frontends/qt/GuiView.cpp:2220
 msgid "Invalid argument of master-buffer-forall"
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:2144
+#: src/frontends/qt/GuiView.cpp:2338
 msgid "Function toolbar-set requires two arguments!"
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:2151
+#: src/frontends/qt/GuiView.cpp:2345
 #, c-format
 msgid "Invalid argument \"%1$s\" to function toolbar-set!"
 msgstr ""
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
-#: src/frontends/qt/GuiView.cpp:2167 src/frontends/qt/GuiView.cpp:2180
-#: src/frontends/qt/GuiView.cpp:2197
+#: src/frontends/qt/GuiView.cpp:2361 src/frontends/qt/GuiView.cpp:2374
+#: src/frontends/qt/GuiView.cpp:2391
 #, fuzzy, c-format
 msgid "Unknown toolbar \"%1$s\""
 msgstr "Непознато действие"
 
-#: src/frontends/qt/GuiView.cpp:2313 src/frontends/qt/GuiView.cpp:2326
+#: src/frontends/qt/GuiView.cpp:2509
 msgid "Zoom level cannot be less than %1$d%."
 msgstr ""
 
+# src/support/filetools.C:453
+#: src/frontends/qt/GuiView.cpp:2514
+#, fuzzy
+msgid "Zoom level cannot be more than %1$d%."
+msgstr "Грешка! Не мога да създам временна директория: "
+
 # src/lyx_cb.C:263
-#: src/frontends/qt/GuiView.cpp:2455
+#: src/frontends/qt/GuiView.cpp:2643
 msgid "Document not loaded."
 msgstr "Документът нe e зареден."
 
 # src/lyxfunc.C:3159
-#: src/frontends/qt/GuiView.cpp:2485
+#: src/frontends/qt/GuiView.cpp:2673
 msgid "Select document to open"
 msgstr "Изберане на документ за отваряне"
 
-#: src/frontends/qt/GuiView.cpp:2515
+# src/ext_l10n.h:116
+#: src/frontends/qt/GuiView.cpp:2679
+#, fuzzy
+msgid "LyX Document Backups (*.lyx~)"
+msgstr "LyX документ (*.lyx)"
+
+# src/exporter.C:91
+#: src/frontends/qt/GuiView.cpp:2680
+#, fuzzy
+msgid "All Files (*.*)"
+msgstr "Все"
+
+#: src/frontends/qt/GuiView.cpp:2707
 #, c-format
 msgid ""
 "The directory in the given path\n"
@@ -40304,46 +39765,46 @@ msgstr ""
 "не съществува."
 
 # src/lyxfunc.C:3100 src/lyxfunc.C:3176
-#: src/frontends/qt/GuiView.cpp:2532
+#: src/frontends/qt/GuiView.cpp:2724
 #, c-format
 msgid "Opening document %1$s..."
 msgstr "Отваряне на документ %1$s..."
 
 # src/MenuBackend.C:263
-#: src/frontends/qt/GuiView.cpp:2537
+#: src/frontends/qt/GuiView.cpp:2729
 #, c-format
 msgid "Document %1$s opened."
 msgstr "Документът %1$s e отворен."
 
 # src/debug.C:44
-#: src/frontends/qt/GuiView.cpp:2540
+#: src/frontends/qt/GuiView.cpp:2732
 msgid "Version control detected."
 msgstr "Открита е система за контрол на ревизиите"
 
 # src/lyxfunc.C:3185
-#: src/frontends/qt/GuiView.cpp:2542
+#: src/frontends/qt/GuiView.cpp:2734
 #, c-format
 msgid "Could not open document %1$s"
 msgstr "Неуспешно отваряне на %1$s"
 
 # src/importer.C:57
-#: src/frontends/qt/GuiView.cpp:2570
+#: src/frontends/qt/GuiView.cpp:2762
 msgid "Couldn't import file"
 msgstr "Файлът не можа да се импортира"
 
 # src/importer.C:58
-#: src/frontends/qt/GuiView.cpp:2571
+#: src/frontends/qt/GuiView.cpp:2763
 #, c-format
 msgid "No information for importing the format %1$s."
 msgstr "Няма информация за импортиране от формат %1$s."
 
 # src/lyxfunc.C:3291
-#: src/frontends/qt/GuiView.cpp:2618
+#: src/frontends/qt/GuiView.cpp:2810
 #, c-format
 msgid "Select %1$s file to import"
 msgstr "Изберане на %1$s файл за импортиране"
 
-#: src/frontends/qt/GuiView.cpp:2653
+#: src/frontends/qt/GuiView.cpp:2845
 #, c-format
 msgid ""
 "The file name '%1$s' is invalid!\n"
@@ -40351,8 +39812,8 @@ msgid ""
 msgstr ""
 
 # src/buffer.C:534
-#: src/frontends/qt/GuiView.cpp:2680 src/frontends/qt/GuiView.cpp:2947
-#: src/frontends/qt/GuiView.cpp:3050
+#: src/frontends/qt/GuiView.cpp:2872 src/frontends/qt/GuiView.cpp:3139
+#: src/frontends/qt/GuiView.cpp:3242
 #, c-format
 msgid ""
 "The document %1$s already exists.\n"
@@ -40364,38 +39825,38 @@ msgstr ""
 "Желаете ли презапишете този документ?"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
-#: src/frontends/qt/GuiView.cpp:2682 src/frontends/qt/GuiView.cpp:2951
-#: src/frontends/qt/GuiView.cpp:3054
+#: src/frontends/qt/GuiView.cpp:2874 src/frontends/qt/GuiView.cpp:3143
+#: src/frontends/qt/GuiView.cpp:3246
 msgid "Overwrite document?"
 msgstr "Презаписване на документа?"
 
 # src/importer.C:39
-#: src/frontends/qt/GuiView.cpp:2691
+#: src/frontends/qt/GuiView.cpp:2883
 #, c-format
 msgid "Importing %1$s..."
 msgstr "Импортиране на %1$s..."
 
 # src/importer.C:81
-#: src/frontends/qt/GuiView.cpp:2694
+#: src/frontends/qt/GuiView.cpp:2886
 msgid "imported."
 msgstr "импортиран."
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/frontends/qt/GuiView.cpp:2696
+#: src/frontends/qt/GuiView.cpp:2888
 msgid "file not imported!"
 msgstr "файлът не е импортиран!"
 
 # src/ext_l10n.h:92
-#: src/frontends/qt/GuiView.cpp:2722
+#: src/frontends/qt/GuiView.cpp:2914
 msgid "newfile"
 msgstr "новфайл"
 
 # src/lyxfunc.C:3291
-#: src/frontends/qt/GuiView.cpp:2755
+#: src/frontends/qt/GuiView.cpp:2947
 msgid "Select LyX document to insert"
 msgstr "Изберане на LyX документ за вмъкване"
 
-#: src/frontends/qt/GuiView.cpp:2802
+#: src/frontends/qt/GuiView.cpp:2994
 #, c-format
 msgid ""
 "It is suggested to save the template in a subdirectory\n"
@@ -40408,32 +39869,32 @@ msgstr ""
 "Тази поддиректория все още не съществува.\n"
 "Желаете ли тя да се създаде?"
 
-#: src/frontends/qt/GuiView.cpp:2807
+#: src/frontends/qt/GuiView.cpp:2999
 msgid "Create Language Directory?"
 msgstr "Създаване на директория за различен език?"
 
-#: src/frontends/qt/GuiView.cpp:2808 src/frontends/qt/GuiView.cpp:2839
+#: src/frontends/qt/GuiView.cpp:3000 src/frontends/qt/GuiView.cpp:3031
 msgid "&Yes, Create"
 msgstr "&Да, създаване"
 
-#: src/frontends/qt/GuiView.cpp:2808 src/frontends/qt/GuiView.cpp:2839
+#: src/frontends/qt/GuiView.cpp:3000 src/frontends/qt/GuiView.cpp:3031
 msgid "&No, Save Template in Parent Directory"
 msgstr "&Не, записване на шаблона в родителската директория"
 
 # src/lyx_cb.C:986
-#: src/frontends/qt/GuiView.cpp:2811 src/frontends/qt/GuiView.cpp:2842
+#: src/frontends/qt/GuiView.cpp:3003 src/frontends/qt/GuiView.cpp:3034
 #, fuzzy
 msgid "Subdirectory creation failed!"
 msgstr "Програмата не успя да се преконфигурира"
 
 # src/support/filetools.C:469
-#: src/frontends/qt/GuiView.cpp:2812 src/frontends/qt/GuiView.cpp:2843
+#: src/frontends/qt/GuiView.cpp:3004 src/frontends/qt/GuiView.cpp:3035
 msgid ""
 "Could not create subdirectory.\n"
 "The template will be saved in the parent directory."
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:2833
+#: src/frontends/qt/GuiView.cpp:3025
 #, c-format
 msgid ""
 "It is suggested to save the template in a subdirectory\n"
@@ -40446,21 +39907,21 @@ msgstr ""
 "Тази поддиректория все още не съществува.\n"
 "Желаете ли тя да се създаде?"
 
-#: src/frontends/qt/GuiView.cpp:2838
+#: src/frontends/qt/GuiView.cpp:3030
 msgid "Create Category Directory?"
 msgstr "Създаване на директория за категории"
 
 # src/lyx_cb.C:203
-#: src/frontends/qt/GuiView.cpp:2873
+#: src/frontends/qt/GuiView.cpp:3065
 msgid "Choose a filename to save template as"
 msgstr "Въвеждане на име с което да запазите шаблона"
 
 # src/lyx_cb.C:203
-#: src/frontends/qt/GuiView.cpp:2874
+#: src/frontends/qt/GuiView.cpp:3066
 msgid "Choose a filename to save document as"
 msgstr "Изберете име с което да запазите документа"
 
-#: src/frontends/qt/GuiView.cpp:2910
+#: src/frontends/qt/GuiView.cpp:3102
 #, c-format
 msgid ""
 "The file\n"
@@ -40470,20 +39931,20 @@ msgid ""
 "Do you want to choose a new filename?"
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:2914
+#: src/frontends/qt/GuiView.cpp:3106
 msgid "Chosen File Already Open"
 msgstr ""
 
 # src/ext_l10n.h:288 src/frontends/gnome/FormUrl.C:119
-#: src/frontends/qt/GuiView.cpp:2915 src/frontends/qt/GuiView.cpp:2937
-#: src/frontends/qt/GuiView.cpp:2953 src/frontends/qt/GuiView.cpp:3055
-#: src/frontends/qt/GuiView.cpp:3100
+#: src/frontends/qt/GuiView.cpp:3107 src/frontends/qt/GuiView.cpp:3129
+#: src/frontends/qt/GuiView.cpp:3145 src/frontends/qt/GuiView.cpp:3247
+#: src/frontends/qt/GuiView.cpp:3292
 #, fuzzy
 msgid "&Rename"
 msgstr "Име"
 
 # src/buffer.C:534
-#: src/frontends/qt/GuiView.cpp:2930
+#: src/frontends/qt/GuiView.cpp:3122
 #, fuzzy, c-format
 msgid ""
 "The document %1$s is already registered.\n"
@@ -40492,33 +39953,33 @@ msgid ""
 msgstr "Документът използва непознат текстклас \""
 
 # src/bufferlist.C:113 src/bufferlist.C:189
-#: src/frontends/qt/GuiView.cpp:2935
+#: src/frontends/qt/GuiView.cpp:3127
 #, fuzzy
 msgid "Rename document?"
 msgstr "Запазване на документа?"
 
 # src/LyXAction.C:141
-#: src/frontends/qt/GuiView.cpp:2935
+#: src/frontends/qt/GuiView.cpp:3127
 #, fuzzy
 msgid "Copy document?"
 msgstr "Нов документ"
 
 # src/BufferView2.C:581 src/LyXAction.C:169 src/MenuBackend.C:432
-#: src/frontends/qt/GuiView.cpp:2937
+#: src/frontends/qt/GuiView.cpp:3129
 msgid "&Copy"
 msgstr "Копиране"
 
 # src/lyx_cb.C:203
-#: src/frontends/qt/GuiView.cpp:2997
+#: src/frontends/qt/GuiView.cpp:3189
 msgid "Choose a filename to export the document as"
 msgstr "Въведете име за експортиране на документа"
 
-#: src/frontends/qt/GuiView.cpp:3001
+#: src/frontends/qt/GuiView.cpp:3193
 msgid "Guess from extension (*.*)"
 msgstr "Разпознаване по разширението (*.*)"
 
 # src/buffer.C:534
-#: src/frontends/qt/GuiView.cpp:3096
+#: src/frontends/qt/GuiView.cpp:3288
 #, c-format
 msgid ""
 "The document %1$s could not be saved.\n"
@@ -40529,16 +39990,16 @@ msgstr ""
 "\n"
 "Желаете ли да преименувате документа и да опитате отново?"
 
-#: src/frontends/qt/GuiView.cpp:3099
+#: src/frontends/qt/GuiView.cpp:3291
 msgid "Rename and save?"
 msgstr ""
 
 # src/frontends/kde/dlg/paradlgdata.C:82
-#: src/frontends/qt/GuiView.cpp:3100
+#: src/frontends/qt/GuiView.cpp:3292
 msgid "&Retry"
 msgstr "Повторен опит"
 
-#: src/frontends/qt/GuiView.cpp:3145
+#: src/frontends/qt/GuiView.cpp:3337
 #, c-format
 msgid ""
 "Last view on document %1$s is being closed.\n"
@@ -40552,30 +40013,30 @@ msgid ""
 msgstr ""
 
 # src/LyXAction.C:141
-#: src/frontends/qt/GuiView.cpp:3154
+#: src/frontends/qt/GuiView.cpp:3346
 #, fuzzy
 msgid "Close or hide document?"
 msgstr "Нов документ"
 
 # src/frontends/xforms/form_graphics.C:61
 # src/frontends/xforms/form_graphics.C:82 src/lyxfont.C:411
-#: src/frontends/qt/GuiView.cpp:3155
+#: src/frontends/qt/GuiView.cpp:3347
 #, fuzzy
 msgid "&Hide"
 msgstr "Стандартно"
 
 # src/LyXAction.C:141
-#: src/frontends/qt/GuiView.cpp:3252
+#: src/frontends/qt/GuiView.cpp:3444
 #, fuzzy
 msgid "Close document"
 msgstr "Нов документ"
 
-#: src/frontends/qt/GuiView.cpp:3253
+#: src/frontends/qt/GuiView.cpp:3445
 msgid "Document could not be closed because it is being processed by LyX."
 msgstr ""
 
 # src/buffer.C:534
-#: src/frontends/qt/GuiView.cpp:3385 src/frontends/qt/GuiView.cpp:3500
+#: src/frontends/qt/GuiView.cpp:3577 src/frontends/qt/GuiView.cpp:3692
 #, c-format
 msgid ""
 "The document %1$s has not been saved yet.\n"
@@ -40587,18 +40048,18 @@ msgstr ""
 "Желаете ли да се запазите документа?"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
-#: src/frontends/qt/GuiView.cpp:3388 src/frontends/qt/GuiView.cpp:3503
+#: src/frontends/qt/GuiView.cpp:3580 src/frontends/qt/GuiView.cpp:3695
 msgid "Save new document?"
 msgstr "Да се запази ли новия документ?"
 
 # src/LyXAction.C:154 src/frontends/xforms/form_preferences.C:44
-#: src/frontends/qt/GuiView.cpp:3389 src/frontends/qt/GuiView.cpp:3403
-#: src/frontends/qt/GuiView.cpp:3505
+#: src/frontends/qt/GuiView.cpp:3581 src/frontends/qt/GuiView.cpp:3595
+#: src/frontends/qt/GuiView.cpp:3697
 msgid "&Save"
 msgstr "&Запазване"
 
 # src/buffer.C:534
-#: src/frontends/qt/GuiView.cpp:3394
+#: src/frontends/qt/GuiView.cpp:3586
 #, c-format
 msgid ""
 "The document %1$s has unsaved changes.\n"
@@ -40610,7 +40071,7 @@ msgstr ""
 "Желаете ли документът да се запази или промените да се отхвълят?"
 
 # src/buffer.C:534
-#: src/frontends/qt/GuiView.cpp:3397
+#: src/frontends/qt/GuiView.cpp:3589
 #, c-format
 msgid ""
 "The document %1$s has not been saved yet.\n"
@@ -40622,21 +40083,21 @@ msgstr ""
 "Желаете ли да се запази или изцяло да се отхвъли?"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
-#: src/frontends/qt/GuiView.cpp:3401 src/frontends/qt/GuiView.cpp:3497
+#: src/frontends/qt/GuiView.cpp:3593 src/frontends/qt/GuiView.cpp:3689
 msgid "Save changed document?"
 msgstr "Запазване на променен документ"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
-#: src/frontends/qt/GuiView.cpp:3401
+#: src/frontends/qt/GuiView.cpp:3593
 msgid "Save document?"
 msgstr "Да се запази ли новия документ?"
 
-#: src/frontends/qt/GuiView.cpp:3403
+#: src/frontends/qt/GuiView.cpp:3595
 msgid "&Discard"
 msgstr "&Отхвърляне"
 
 # src/buffer.C:534
-#: src/frontends/qt/GuiView.cpp:3494
+#: src/frontends/qt/GuiView.cpp:3686
 #, c-format
 msgid ""
 "The document %1$s has unsaved changes.\n"
@@ -40648,7 +40109,7 @@ msgstr ""
 "Желаете ли да се запазите документа?"
 
 # src/buffer.C:534
-#: src/frontends/qt/GuiView.cpp:3526
+#: src/frontends/qt/GuiView.cpp:3718
 #, c-format
 msgid ""
 "Document \n"
@@ -40657,96 +40118,90 @@ msgid ""
 msgstr ""
 
 # src/bufferlist.C:113 src/bufferlist.C:189
-#: src/frontends/qt/GuiView.cpp:3529
+#: src/frontends/qt/GuiView.cpp:3721
 #, fuzzy
 msgid "Reload externally changed document?"
 msgstr "Запазване на документа?"
 
 # src/lyx_cb.C:263
-#: src/frontends/qt/GuiView.cpp:3574
+#: src/frontends/qt/GuiView.cpp:3766
 #, fuzzy
 msgid "Document could not be checked in."
 msgstr "Документът не може да бъде записан!"
 
-#: src/frontends/qt/GuiView.cpp:3617
+#: src/frontends/qt/GuiView.cpp:3809
 msgid "Error when setting the locking property."
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:3666
+#: src/frontends/qt/GuiView.cpp:3858
 msgid "Directory is not accessible."
 msgstr ""
 
 # src/lyxfunc.C:3100 src/lyxfunc.C:3176
-#: src/frontends/qt/GuiView.cpp:3743
+#: src/frontends/qt/GuiView.cpp:3935
 #, fuzzy, c-format
 msgid "Opening child document %1$s..."
 msgstr "Отварям документ"
 
 # src/converter.C:166
-#: src/frontends/qt/GuiView.cpp:3801
+#: src/frontends/qt/GuiView.cpp:3993
 #, fuzzy, c-format
 msgid "No buffer for file: %1$s."
 msgstr "Липсва информация за показване на "
 
-#: src/frontends/qt/GuiView.cpp:3811
+#: src/frontends/qt/GuiView.cpp:4003
 msgid "Inverse Search Failed"
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:3812
+#: src/frontends/qt/GuiView.cpp:4004
 msgid ""
 "Invalid position requested by inverse search.\n"
 "You may need to update the viewed document."
 msgstr ""
 
 # src/ext_l10n.h:26
-#: src/frontends/qt/GuiView.cpp:3892
-#, fuzzy
+#: src/frontends/qt/GuiView.cpp:4084
 msgid "Export Error"
-msgstr "Експорт(E)|E"
+msgstr "Грешка при експортиране"
 
 # src/ext_l10n.h:61
-#: src/frontends/qt/GuiView.cpp:3893
-#, fuzzy
+#: src/frontends/qt/GuiView.cpp:4085
 msgid "Error cloning the Buffer."
-msgstr "Многоколонно(M)|M"
+msgstr "Грешка при копиране на буфера."
 
 # src/importer.C:39
-#: src/frontends/qt/GuiView.cpp:4044 src/frontends/qt/GuiView.cpp:4064
-#, fuzzy
+#: src/frontends/qt/GuiView.cpp:4236 src/frontends/qt/GuiView.cpp:4256
 msgid "Exporting ..."
-msgstr "Импортиране"
+msgstr "експортиране ..."
 
 # src/frontends/xforms/form_preferences.C:896
-#: src/frontends/qt/GuiView.cpp:4073
-#, fuzzy
+#: src/frontends/qt/GuiView.cpp:4265
 msgid "Previewing ..."
-msgstr "обърнато"
+msgstr "Предварителен преглед ..."
 
 # src/lyx_cb.C:263
-#: src/frontends/qt/GuiView.cpp:4111
-#, fuzzy
+#: src/frontends/qt/GuiView.cpp:4303
 msgid "Document not loaded"
-msgstr "Документът не може да бъде записан!"
+msgstr "Документът не е зареден!"
 
 # src/lyxfunc.C:3291
-#: src/frontends/qt/GuiView.cpp:4198
+#: src/frontends/qt/GuiView.cpp:4390
 msgid "Select file to insert"
-msgstr "Изберете файл за вмъкване"
+msgstr "Изберане на файл за вмъкване"
 
 # src/exporter.C:91
-#: src/frontends/qt/GuiView.cpp:4201
-#, fuzzy
+#: src/frontends/qt/GuiView.cpp:4393
 msgid "All Files (*)"
-msgstr "Все"
+msgstr "Всички файлове (*)"
 
-#: src/frontends/qt/GuiView.cpp:4229
+#: src/frontends/qt/GuiView.cpp:4421
 #, c-format
 msgid ""
 "The current version will be lost. Are you sure you want to load the version "
 "on disk of the document %1$s?"
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:4236
+#: src/frontends/qt/GuiView.cpp:4428
 #, c-format
 msgid ""
 "Any changes will be lost. Are you sure you want to revert to the saved "
@@ -40755,72 +40210,72 @@ msgstr ""
 
 # заглавие на диалог
 # src/LyXAction.C:147
-#: src/frontends/qt/GuiView.cpp:4239
+#: src/frontends/qt/GuiView.cpp:4431
 #, fuzzy
 msgid "Revert to saved document?"
 msgstr "Презареждане на записан документ"
 
-#: src/frontends/qt/GuiView.cpp:4256
+#: src/frontends/qt/GuiView.cpp:4448
 msgid "Buffer export reset."
 msgstr ""
 
 # src/lyxfunc.C:795
-#: src/frontends/qt/GuiView.cpp:4279
+#: src/frontends/qt/GuiView.cpp:4471
 #, fuzzy
 msgid "Saving all documents..."
 msgstr "Записвам документа"
 
 # src/lyx_cb.C:263
-#: src/frontends/qt/GuiView.cpp:4289
+#: src/frontends/qt/GuiView.cpp:4481
 #, fuzzy
 msgid "All documents saved."
 msgstr "Документът не може да бъде записан!"
 
-#: src/frontends/qt/GuiView.cpp:4328
+#: src/frontends/qt/GuiView.cpp:4520
 msgid "Developer mode is now enabled."
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:4330
+#: src/frontends/qt/GuiView.cpp:4522
 msgid "Developer mode is now disabled."
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:4362
+#: src/frontends/qt/GuiView.cpp:4554
 msgid "Toolbars unlocked."
 msgstr ""
 
 # src/frontends/kde/dlg/paraextradlgdata.C:142
-#: src/frontends/qt/GuiView.cpp:4364
+#: src/frontends/qt/GuiView.cpp:4556
 #, fuzzy
 msgid "Toolbars locked."
 msgstr "(&T)Отгоре"
 
-#: src/frontends/qt/GuiView.cpp:4377
+#: src/frontends/qt/GuiView.cpp:4568
 #, c-format
 msgid "Icon size set to %1$dx%2$d."
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:4466
+#: src/frontends/qt/GuiView.cpp:4657
 #, c-format
 msgid "%1$s unknown command!"
 msgstr ""
 
-#: src/frontends/qt/GuiView.cpp:4570
+#: src/frontends/qt/GuiView.cpp:4746
 msgid "Zoom level is now %1$d% (default value: %2$d%)"
 msgstr ""
 
 # src/ext_l10n.h:130
-#: src/frontends/qt/GuiView.cpp:4629
+#: src/frontends/qt/GuiView.cpp:4805
 #, fuzzy
 msgid "Please, preview the document first."
 msgstr "Запази оформлението като подразбиращо се(S)|S"
 
 # src/exporter.C:47
-#: src/frontends/qt/GuiView.cpp:4645
+#: src/frontends/qt/GuiView.cpp:4821
 #, fuzzy
 msgid "Couldn't proceed."
 msgstr "Невъзможно е да бъде експортиран файла"
 
-#: src/frontends/qt/GuiView.cpp:4997
+#: src/frontends/qt/GuiView.cpp:5178
 msgid "Disable Shell Escape"
 msgstr ""
 
@@ -40840,23 +40295,23 @@ msgstr "%1[[preview format name]]"
 # src/frontends/xforms/FormBase.h:152 src/frontends/xforms/FormInset.h:30
 # src/frontends/xforms/FormInset.h:54 src/layout_forms.C:52 src/log_form.C:21
 # src/lyxvc.C:263 src/mathed/math_forms.C:177
-#: src/frontends/qt/GuiWorkArea.cpp:1494
+#: src/frontends/qt/GuiWorkArea.cpp:1527
 #, fuzzy
 msgid "Close File"
 msgstr "Затвори"
 
 # src/LyXView.C:372
-#: src/frontends/qt/GuiWorkArea.cpp:2031
+#: src/frontends/qt/GuiWorkArea.cpp:2069
 msgid "%1 (read only)"
 msgstr "%1 (само за четене)"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2039
+#: src/frontends/qt/GuiWorkArea.cpp:2077
 msgid "%1 (modified externally)"
 msgstr "%1 (променен от външна програма)"
 
 # src/frontends/xforms/form_graphics.C:61
 # src/frontends/xforms/form_graphics.C:82 src/lyxfont.C:411
-#: src/frontends/qt/GuiWorkArea.cpp:2062
+#: src/frontends/qt/GuiWorkArea.cpp:2100
 #, fuzzy
 msgid "Hide tab"
 msgstr "Стандартно"
@@ -40866,21 +40321,21 @@ msgstr "Стандартно"
 # src/frontends/xforms/FormBase.h:152 src/frontends/xforms/FormInset.h:30
 # src/frontends/xforms/FormInset.h:54 src/layout_forms.C:52 src/log_form.C:21
 # src/lyxvc.C:263 src/mathed/math_forms.C:177
-#: src/frontends/qt/GuiWorkArea.cpp:2068
+#: src/frontends/qt/GuiWorkArea.cpp:2106
 #, fuzzy
 msgid "Close tab"
 msgstr "Затвори"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2107
+#: src/frontends/qt/GuiWorkArea.cpp:2145
 msgid "<b>The file %1 changed on disk.</b>"
-msgstr ""
+msgstr "<b>Файлът %1 беше променен на диска.</b>"
 
 # src/form1.C:129 src/sp_form.C:58
 #: src/frontends/qt/GuiWrap.cpp:32
 msgid "Wrap Float Settings"
 msgstr "Настройки на плаващ в текста обект"
 
-#: src/frontends/qt/IconPalette.cpp:39
+#: src/frontends/qt/IconPalette.cpp:44
 msgid "Click to detach"
 msgstr ""
 
@@ -40888,132 +40343,132 @@ msgstr ""
 msgid "Ne&w Inset"
 msgstr "&Нова добавка"
 
-#: src/frontends/qt/LayoutBox.cpp:337
+#: src/frontends/qt/LayoutBox.cpp:345
 #, c-format
 msgid "Filtering layouts with \"%1$s\". Press ESC to remove filter."
 msgstr ""
 
-#: src/frontends/qt/LayoutBox.cpp:341 src/frontends/qt/LayoutBox.cpp:396
+#: src/frontends/qt/LayoutBox.cpp:349 src/frontends/qt/LayoutBox.cpp:404
 msgid "Enter characters to filter the layout list."
 msgstr ""
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1261
-#: src/frontends/qt/LayoutBox.cpp:509
-#, fuzzy, c-format
+#: src/frontends/qt/LayoutBox.cpp:517
+#, c-format
 msgid "%1$s (unknown)"
-msgstr " оформление"
+msgstr "%1$s (непознат)"
 
 # src/ext_l10n.h:215
-#: src/frontends/qt/Menus.cpp:726
+#: src/frontends/qt/Menus.cpp:735
 #, fuzzy
 msgid "More...|M"
 msgstr "Клиент"
 
-#: src/frontends/qt/Menus.cpp:808
+#: src/frontends/qt/Menus.cpp:817
 msgid "No Group"
 msgstr ""
 
-#: src/frontends/qt/Menus.cpp:838 src/frontends/qt/Menus.cpp:839
+#: src/frontends/qt/Menus.cpp:847 src/frontends/qt/Menus.cpp:848
 msgid "More Spelling Suggestions"
 msgstr ""
 
 # src/frontends/xforms/form_preferences.C:298
-#: src/frontends/qt/Menus.cpp:863
-#, fuzzy
+#: src/frontends/qt/Menus.cpp:872
 msgid "Add to personal dictionary|n"
-msgstr "Използвай личен речник"
+msgstr "Добавяне в личен речник"
 
-# src/lyxfont.C:43 src/lyxfont.C:47 src/lyxfont.C:52 src/lyxfont.C:58
-# src/lyxfont.C:62
-#: src/frontends/qt/Menus.cpp:865
-#, fuzzy
-msgid "Ignore|g"
-msgstr "Игнорирай"
+# src/sp_form.C:97
+#: src/frontends/qt/Menus.cpp:874
+msgid "Ignore this occurrence|g"
+msgstr "Пропускане на това съответствие"
 
-# src/lyxfont.C:43 src/lyxfont.C:47 src/lyxfont.C:52 src/lyxfont.C:58
-# src/lyxfont.C:62
-#: src/frontends/qt/Menus.cpp:867
-#, fuzzy
-msgid "Ignore all|I"
-msgstr "Игнорирай"
+# src/sp_form.C:99
+#: src/frontends/qt/Menus.cpp:876
+msgid "Ignore all for this session|I"
+msgstr "Пропускане на всички за тази сесия"
+
+# src/LyXAction.C:141
+#: src/frontends/qt/Menus.cpp:878
+msgid "Ignore all in this document|d"
+msgstr "Пропускане на всички в този документ"
 
 # src/frontends/xforms/form_preferences.C:298
-#: src/frontends/qt/Menus.cpp:875
-#, fuzzy
+#: src/frontends/qt/Menus.cpp:886
 msgid "Remove from personal dictionary|r"
-msgstr "Използвай личен речник"
+msgstr "Премахване от личния речник"
+
+# src/frontends/xforms/form_preferences.C:298
+#: src/frontends/qt/Menus.cpp:893
+msgid "Remove from document dictionary|r"
+msgstr "Премахване от речника на документа"
 
 # src/form1.C:51 src/frontends/xforms/FormDocument.C:277
 # src/frontends/xforms/FormPreferences.C:280
-#: src/frontends/qt/Menus.cpp:905
-#, fuzzy
+#: src/frontends/qt/Menus.cpp:923
 msgid "Switch Language...|L"
-msgstr "Език|Е"
+msgstr "Промяна на език"
 
 # src/form1.C:51 src/frontends/xforms/FormDocument.C:277
 # src/frontends/xforms/FormPreferences.C:280
-#: src/frontends/qt/Menus.cpp:919
+#: src/frontends/qt/Menus.cpp:937
 msgid "Language|L"
 msgstr "Език|Е"
 
 # src/ext_l10n.h:31
-#: src/frontends/qt/Menus.cpp:921
+#: src/frontends/qt/Menus.cpp:939
 msgid "More Languages ...|M"
 msgstr "Още езици...|М"
 
-#: src/frontends/qt/Menus.cpp:991 src/frontends/qt/Menus.cpp:992
+#: src/frontends/qt/Menus.cpp:1009 src/frontends/qt/Menus.cpp:1010
 msgid "Hidden|H"
 msgstr "Скрит"
 
 # src/MenuBackend.C:263
-#: src/frontends/qt/Menus.cpp:996
-#, fuzzy
+#: src/frontends/qt/Menus.cpp:1014
 msgid "(No Documents Open)"
-msgstr "<Няма отворен документ>"
+msgstr "(Няма отворени документи)"
 
-#: src/frontends/qt/Menus.cpp:1062
-#, fuzzy
+#: src/frontends/qt/Menus.cpp:1080
 msgid "(No Bookmarks Saved Yet)"
-msgstr "<Няма записани показалци>"
+msgstr "(Няма запазени показалци)"
 
-#: src/frontends/qt/Menus.cpp:1102
+#: src/frontends/qt/Menus.cpp:1120
 msgid "View (Other Formats)|F"
 msgstr "Преглед във формат|е"
 
-#: src/frontends/qt/Menus.cpp:1103
+#: src/frontends/qt/Menus.cpp:1121
 msgid "Update (Other Formats)|p"
 msgstr "Опресняване във формат|ф"
 
 # src/ext_l10n.h:8
-#: src/frontends/qt/Menus.cpp:1133
+#: src/frontends/qt/Menus.cpp:1151
 #, c-format
 msgid "View [%1$s]|V"
 msgstr "Преглед с [%1$s]|р"
 
 # src/ext_l10n.h:132
-#: src/frontends/qt/Menus.cpp:1134
+#: src/frontends/qt/Menus.cpp:1152
 #, c-format
 msgid "Update [%1$s]|U"
 msgstr "Опресни прегледа [%1$s]|О"
 
 # src/LyXAction.C:190
-#: src/frontends/qt/Menus.cpp:1250
-#, fuzzy
+#: src/frontends/qt/Menus.cpp:1268
 msgid "(No Custom Insets Defined)"
-msgstr "<Няма дефинирани потребителски добавки>"
+msgstr "(Няма добавки от потребителя"
 
 # src/MenuBackend.C:263
-#: src/frontends/qt/Menus.cpp:1339
+#: src/frontends/qt/Menus.cpp:1355
 msgid "(No Document Open)"
-msgstr "<Няма отворен документ>"
+msgstr "(Няма отворен документ)"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
-#: src/frontends/qt/Menus.cpp:1348
+#: src/frontends/qt/Menus.cpp:1364
 msgid "Master Document"
 msgstr "Главен документ"
 
 # src/bufferview_funcs.C:289
-#: src/frontends/qt/Menus.cpp:1371
+#: src/frontends/qt/Menus.cpp:1387
 msgid "Other Lists"
 msgstr "Списък с"
 
@@ -41021,196 +40476,204 @@ msgstr "Списък с"
 # src/frontends/kde/FormToc.C:167 src/frontends/kde/FormToc.C:168
 # src/frontends/kde/tocdlg.C:28 src/frontends/xforms/FormToc.C:35
 # src/insets/insettoc.C:22
-#: src/frontends/qt/Menus.cpp:1385
+#: src/frontends/qt/Menus.cpp:1401
 msgid "(Empty Table of Contents)"
-msgstr "<Няма съдържание>"
+msgstr "(Няма съдържание)"
 
 # src/bufferview_funcs.C:289
-#: src/frontends/qt/Menus.cpp:1394
+#: src/frontends/qt/Menus.cpp:1410
 msgid "Open Outliner..."
-msgstr "Отвори структурата..."
+msgstr "Отваряне на структурата..."
 
-#: src/frontends/qt/Menus.cpp:1426
-#, fuzzy
+#: src/frontends/qt/Menus.cpp:1442
 msgid "[[Toolbar]]On|O"
-msgstr "Преглед"
+msgstr "Вкл."
 
-#: src/frontends/qt/Menus.cpp:1428
-#, fuzzy
+#: src/frontends/qt/Menus.cpp:1444
 msgid "[[Toolbar]]Off|f"
-msgstr "Преглед"
+msgstr "Изкл."
 
-#: src/frontends/qt/Menus.cpp:1430
+#: src/frontends/qt/Menus.cpp:1446
 msgid "[[Toolbar]]Automatic|A"
-msgstr ""
+msgstr "Авт."
 
 # src/frontends/kde/dlg/paraextradlgdata.C:142
-#: src/frontends/qt/Menus.cpp:1442
+#: src/frontends/qt/Menus.cpp:1458
 msgid "Other Toolbars"
 msgstr "Други ленти"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
-#: src/frontends/qt/Menus.cpp:1505
-#, fuzzy
+#: src/frontends/qt/Menus.cpp:1521
 msgid "Master Documents"
-msgstr "Главен документ"
+msgstr "Главни документи"
 
 # src/ext_l10n.h:114
-#: src/frontends/qt/Menus.cpp:1521
+#: src/frontends/qt/Menus.cpp:1537
 msgid "Index List|I"
 msgstr "Списък с указатели|у"
 
 # src/frontends/kde/indexdlg.C:27 src/frontends/kde/indexdlg.C:28
-#: src/frontends/qt/Menus.cpp:1526
+#: src/frontends/qt/Menus.cpp:1542
 msgid "Index Entry|d"
 msgstr "Указател|У"
 
 # src/bufferview_funcs.C:267
-#: src/frontends/qt/Menus.cpp:1541
+#: src/frontends/qt/Menus.cpp:1557
 #, c-format
 msgid "Index: %1$s"
 msgstr "Указател: %1$s"
 
 # src/frontends/kde/indexdlg.C:27 src/frontends/kde/indexdlg.C:28
-#: src/frontends/qt/Menus.cpp:1546 src/frontends/qt/Menus.cpp:1575
+#: src/frontends/qt/Menus.cpp:1562 src/frontends/qt/Menus.cpp:1591
 #, c-format
 msgid "Index Entry (%1$s)"
 msgstr "указател (%1$s)"
 
 # src/LyXAction.C:190
-#: src/frontends/qt/Menus.cpp:1592
+#: src/frontends/qt/Menus.cpp:1608
 #, fuzzy
 msgid "No Citation in Scope!"
 msgstr "Към следваща грешка"
 
 # src/LyXAction.C:190
-#: src/frontends/qt/Menus.cpp:1606 src/insets/InsetCitation.cpp:324
+#: src/frontends/qt/Menus.cpp:1622 src/insets/InsetCitation.cpp:324
 #: src/insets/InsetCitation.cpp:454
-#, fuzzy
 msgid "No citations selected!"
-msgstr "Към следваща грешка"
+msgstr "Няма избрани цитати!"
 
 # src/ext_l10n.h:175
-#: src/frontends/qt/Menus.cpp:1655
-#, fuzzy
+#: src/frontends/qt/Menus.cpp:1671
 msgid "All authors|h"
-msgstr "Автор"
+msgstr "Вкички автори|в"
 
 # src/ext_l10n.h:132
-#: src/frontends/qt/Menus.cpp:1686
+#: src/frontends/qt/Menus.cpp:1702
 #, fuzzy
 msgid "Force upper case|u"
 msgstr "Актуализирай(U)|U"
 
 # src/LyXAction.C:190
-#: src/frontends/qt/Menus.cpp:1700
+#: src/frontends/qt/Menus.cpp:1716
 #, fuzzy
 msgid "No Text Field in Scope!"
 msgstr "Към следваща грешка"
 
 # src/ext_l10n.h:215
-#: src/frontends/qt/Menus.cpp:1719
-#, fuzzy
+#: src/frontends/qt/Menus.cpp:1735
 msgid "Custom..."
-msgstr "потребителско"
+msgstr "От потребителя..."
 
 # src/ext_l10n.h:191
-#: src/frontends/qt/Menus.cpp:1795
-#, fuzzy, c-format
+#: src/frontends/qt/Menus.cpp:1811
+#, c-format
 msgid "Caption (%1$s)"
 msgstr "Надпис (%1$s)"
 
+# src/insets/insetinclude.C:76 src/insets/insetinclude.C:77
+#: src/frontends/qt/Menus.cpp:1831
+#, c-format
+msgid "Reset to Default (%1$d%)|R"
+msgstr "Връщане по подразбиране (%1$d%)|п"
+
+#: src/frontends/qt/Menus.cpp:1835
+msgid "Zoom In|I"
+msgstr "Увеличаване"
+
+#: src/frontends/qt/Menus.cpp:1837
+msgid "Zoom Out|O"
+msgstr "Намаляване"
+
 # src/LyXAction.C:190
-#: src/frontends/qt/Menus.cpp:1820
+#: src/frontends/qt/Menus.cpp:1879
 #, fuzzy
 msgid "No Quote in Scope!"
 msgstr "Към следваща грешка"
 
-#: src/frontends/qt/Menus.cpp:1852 src/frontends/qt/Menus.cpp:1856
-#: src/frontends/qt/Menus.cpp:1860 src/frontends/qt/Menus.cpp:1864
+#: src/frontends/qt/Menus.cpp:1911 src/frontends/qt/Menus.cpp:1915
+#: src/frontends/qt/Menus.cpp:1919 src/frontends/qt/Menus.cpp:1923
 #, c-format
 msgid "%1$s (dynamic)"
-msgstr ""
+msgstr "%1$s (динамични)"
 
-#: src/frontends/qt/Menus.cpp:1898
+#: src/frontends/qt/Menus.cpp:1957
 #, c-format
 msgid "Use dynamic quotes (%1$s)|d"
-msgstr ""
+msgstr "Използване на динамични кавички (%1$s)"
 
-#: src/frontends/qt/Menus.cpp:1904
+#: src/frontends/qt/Menus.cpp:1963
 msgid "dynamic[[Quotes]]"
-msgstr ""
+msgstr "динамични"
 
-#: src/frontends/qt/Menus.cpp:1904 src/frontends/qt/Menus.cpp:1914
+#: src/frontends/qt/Menus.cpp:1963 src/frontends/qt/Menus.cpp:1973
 msgid "static[[Quotes]]"
-msgstr ""
+msgstr "статични"
 
 # src/ext_l10n.h:130
-#: src/frontends/qt/Menus.cpp:1906
-#, fuzzy, c-format
+#: src/frontends/qt/Menus.cpp:1965
+#, c-format
 msgid "Reset to document default (%1$s, %2$s)|o"
-msgstr "Запази оформлението като подразбиращо се(S)|S"
+msgstr "Възстановяване по подразбиране за документа ((%1$s, %2$s))"
 
-#: src/frontends/qt/Menus.cpp:1913
+#: src/frontends/qt/Menus.cpp:1972
 #, c-format
 msgid "Reset to language default (%1$s, %2$s)|l"
-msgstr ""
+msgstr "Възстановяване по подразбирнане за езика (%1$s, %2$s)"
 
 # src/insets/insetinclude.C:76 src/insets/insetinclude.C:77
-#: src/frontends/qt/Menus.cpp:1915
+#: src/frontends/qt/Menus.cpp:1974
 #, fuzzy, c-format
 msgid "Reset to language default (%1$s)|l"
 msgstr "Използнай input|#i"
 
 # src/insets/insetbib.C:340
-#: src/frontends/qt/Menus.cpp:1923
+#: src/frontends/qt/Menus.cpp:1982
 #, fuzzy
 msgid "Change Style|y"
 msgstr "Стил: "
 
-#: src/frontends/qt/Menus.cpp:1964
+#: src/frontends/qt/Menus.cpp:2023
 #, c-format
 msgid "Insert Separated %1$s Above"
 msgstr ""
 
 # src/mathed/formulamacro.C:144 src/mathed/formulamacro.C:171
-#: src/frontends/qt/Menus.cpp:1966
+#: src/frontends/qt/Menus.cpp:2025
 #, fuzzy, c-format
 msgid "Separated %1$s Above"
 msgstr "Параметър „%1$s“: "
 
-#: src/frontends/qt/Menus.cpp:1972 src/frontends/qt/Menus.cpp:1985
-#: src/frontends/qt/Menus.cpp:2002
+#: src/frontends/qt/Menus.cpp:2031 src/frontends/qt/Menus.cpp:2044
+#: src/frontends/qt/Menus.cpp:2061
 #, c-format
 msgid "Insert Separated %1$s Below"
 msgstr ""
 
 # src/mathed/formulamacro.C:144 src/mathed/formulamacro.C:171
-#: src/frontends/qt/Menus.cpp:1974 src/frontends/qt/Menus.cpp:1987
-#: src/frontends/qt/Menus.cpp:2008
+#: src/frontends/qt/Menus.cpp:2033 src/frontends/qt/Menus.cpp:2046
+#: src/frontends/qt/Menus.cpp:2067
 #, fuzzy, c-format
 msgid "Separated %1$s Below"
 msgstr "Параметър „%1$s“: "
 
-#: src/frontends/qt/Menus.cpp:2000
+#: src/frontends/qt/Menus.cpp:2059
 #, c-format
 msgid "Insert Separated Outer %1$s Below"
 msgstr ""
 
 # src/mathed/formulamacro.C:144 src/mathed/formulamacro.C:171
-#: src/frontends/qt/Menus.cpp:2006
+#: src/frontends/qt/Menus.cpp:2065
 #, fuzzy, c-format
 msgid "Separated Outer %1$s Below"
 msgstr "Параметър „%1$s“: "
 
 # src/bufferview_funcs.C:267
-#: src/frontends/qt/Menus.cpp:2322
+#: src/frontends/qt/Menus.cpp:2381
 #, c-format
 msgid "Export [%1$s]|E"
 msgstr "Експортиране като %1$s|к"
 
 # src/LyXAction.C:190
-#: src/frontends/qt/Menus.cpp:2672
+#: src/frontends/qt/Menus.cpp:2735
 msgid "No Action Defined!"
 msgstr "<Не е дефинирано действие за избрания обект>"
 
@@ -41221,21 +40684,21 @@ msgstr "Търсене"
 
 # src/bufferview_funcs.C:267
 #: src/frontends/qt/Toolbars.cpp:246
-#, fuzzy, c-format
+#, c-format
 msgid "Export %1$s"
-msgstr "Шрифт:"
+msgstr "Експортиране на %1$s"
 
 # src/importer.C:39
 #: src/frontends/qt/Toolbars.cpp:250
-#, fuzzy, c-format
+#, c-format
 msgid "Import %1$s"
-msgstr "Импортиране"
+msgstr "Внасяне на %1$s"
 
 # src/frontends/kde/refdlg.C:81 src/frontends/kde/tocdlg.C:43
 #: src/frontends/qt/Toolbars.cpp:254
-#, fuzzy, c-format
+#, c-format
 msgid "Update %1$s"
-msgstr "(&U)Актуализирай"
+msgstr "Актуализиране на %1$s"
 
 #: src/frontends/qt/Toolbars.cpp:258
 #, c-format
@@ -41243,12 +40706,11 @@ msgid "View %1$s"
 msgstr "Преглед като %1$s"
 
 # src/sp_form.C:86
-#: src/frontends/qt/Validator.cpp:210
-#, fuzzy
+#: src/frontends/qt/Validator.cpp:214
 msgid "space"
-msgstr "Замести"
+msgstr "интервал"
 
-#: src/frontends/qt/Validator.cpp:238
+#: src/frontends/qt/Validator.cpp:242
 msgid ""
 "LyX does not provide LaTeX support for file names containing any of these "
 "characters:\n"
@@ -41256,24 +40718,23 @@ msgstr ""
 
 #: src/frontends/qt/qt_helpers.cpp:280
 msgid "Invalid URL"
-msgstr ""
+msgstr "Невалиден URL (унефициран локатор на ресурси)!"
 
 # src/lyx_cb.C:263
 #: src/frontends/qt/qt_helpers.cpp:281
-#, fuzzy, c-format
+#, c-format
 msgid "The URL `%1$s' could not be resolved."
-msgstr "Документът не може да бъде записан!"
+msgstr "Унифицирания локатор на ресурси (URL) „%1$s“ не може да се анализира!"
 
 # src/lyx_cb.C:263
 #: src/frontends/qt/qt_helpers.cpp:287
-#, fuzzy
 msgid "URL could not be accessed"
-msgstr "Документът не може да бъде записан!"
+msgstr "Унифициран ресурсен локатор (URL) е недостъпен!"
 
 #: src/frontends/qt/qt_helpers.cpp:288
 #, c-format
 msgid "The URL `%1$s' could not be opened although it exists!"
-msgstr ""
+msgstr "Ресусния локатор „%1$s“ не може да се отвори въпреки, че съществува!"
 
 # src/spellchecker.C:971
 #: src/frontends/qt/qt_helpers.cpp:312
@@ -41296,9 +40757,8 @@ msgstr "Документът не може да бъде записан!"
 
 # src/BufferView2.C:461
 #: src/frontends/qt/qt_helpers.cpp:357
-#, fuzzy
 msgid "Could not update TeX information"
-msgstr "Няма нищо повече за повтаряне"
+msgstr "Не може да се опресни информацията за TeX"
 
 # src/spellchecker.C:971
 #: src/frontends/qt/qt_helpers.cpp:358
@@ -41315,15 +40775,13 @@ msgstr "Всички файлове"
 
 # src/ext_l10n.h:186
 #: src/insets/Inset.cpp:92
-#, fuzzy
 msgid "Bibliography Entry"
-msgstr "Запис на лит. списък"
+msgstr "Запис от лит. списък"
 
 # src/frontends/xforms/FormPreferences.C:252
 #: src/insets/Inset.cpp:98
-#, fuzzy
 msgid "Float"
-msgstr "Формати"
+msgstr "Плаващ обект"
 
 #: src/insets/Inset.cpp:116 src/insets/InsetBox.cpp:136
 msgid "Box"
@@ -41341,11 +40799,11 @@ msgid "Horizontal Math Space"
 msgstr "Вертикално разстояние"
 
 # src/frontends/xforms/FormDocument.C:440
-#: src/insets/InsetArgument.cpp:153
+#: src/insets/InsetArgument.cpp:152
 msgid "Unknown Argument"
 msgstr "непознат елемент"
 
-#: src/insets/InsetArgument.cpp:154
+#: src/insets/InsetArgument.cpp:153
 msgid "Argument not known in this Layout. Will be suppressed in the output."
 msgstr ""
 "Този елемент не е разпознат в текущия контекст (оформление). Няма да се "
@@ -41493,7 +40951,7 @@ msgid "active"
 msgstr "активна"
 
 #: src/insets/InsetBranch.cpp:70 src/insets/InsetBranch.cpp:72
-#: src/insets/InsetIndex.cpp:659
+#: src/insets/InsetIndex.cpp:684
 msgid "non-active"
 msgstr "неактивна"
 
@@ -41514,46 +40972,46 @@ msgstr ""
 "Добавката е: %3$s"
 
 # src/ext_l10n.h:441
-#: src/insets/InsetBranch.cpp:120
+#: src/insets/InsetBranch.cpp:122
 msgid "Branch: "
 msgstr "разклонение: "
 
 # src/lyxfont.C:404
-#: src/insets/InsetBranch.cpp:122
+#: src/insets/InsetBranch.cpp:124
 #, fuzzy
 msgid "Branch (child): "
 msgstr "Подчертаване "
 
 # src/lyxfont.C:404
-#: src/insets/InsetBranch.cpp:124
+#: src/insets/InsetBranch.cpp:126
 #, fuzzy
 msgid "Branch (master): "
 msgstr "Подчертаване "
 
 # src/lyxfont.C:404
-#: src/insets/InsetBranch.cpp:126
+#: src/insets/InsetBranch.cpp:128
 msgid "Branch (undefined): "
 msgstr "разклонение (неопределено):"
 
 # src/bufferlist.C:113 src/bufferlist.C:189
-#: src/insets/InsetBranch.cpp:188
+#: src/insets/InsetBranch.cpp:192
 #, fuzzy
 msgid "Branch state changes in master document"
 msgstr "Запазване на документа?"
 
-#: src/insets/InsetBranch.cpp:189
+#: src/insets/InsetBranch.cpp:193
 #, c-format
 msgid ""
 "The state of the branch '%1$s' was changed in the master file. Please make "
 "sure to save the master."
 msgstr ""
 
-#: src/insets/InsetCaption.cpp:423
+#: src/insets/InsetCaption.cpp:419
 #, c-format
 msgid "Sub-%1$s"
 msgstr "Под-%1$s"
 
-#: src/insets/InsetCaption.cpp:447
+#: src/insets/InsetCaption.cpp:443
 #, c-format
 msgid "%1$s %2$s: [[Caption label (ex. Figure 1: )]]"
 msgstr ""
@@ -41569,7 +41027,7 @@ msgstr "Библиография"
 msgid "+ %1$d more entries."
 msgstr ""
 
-#: src/insets/InsetCitation.cpp:579 src/insets/InsetRef.cpp:514
+#: src/insets/InsetCitation.cpp:579 src/insets/InsetRef.cpp:516
 msgid "BROKEN: "
 msgstr ""
 
@@ -41605,9 +41063,8 @@ msgstr "Изпълни команда"
 
 # src/frontends/xforms/FormDocument.C:440
 #: src/insets/InsetCommandParams.cpp:350
-#, fuzzy
 msgid "Unknown parameter name: "
-msgstr " към избрания документ клас!"
+msgstr "Непознато име на параметър: "
 
 #: src/insets/InsetCommandParams.cpp:358
 msgid "Missing \\end_inset at this point: "
@@ -41615,9 +41072,8 @@ msgstr ""
 
 # src/ext_l10n.h:78
 #: src/insets/InsetCommandParams.cpp:466
-#, fuzzy
 msgid "Uncodable characters"
-msgstr "Специален символ(S)|S"
+msgstr "Символи, които не могат да се кодират"
 
 #: src/insets/InsetCommandParams.cpp:467
 #, c-format
@@ -41632,101 +41088,94 @@ msgstr ""
 
 # src/ext_l10n.h:78
 #: src/insets/InsetCommandParams.cpp:527
-#, fuzzy
 msgid "Uncodable characters in inset"
-msgstr "Специален символ(S)|S"
+msgstr "Символ, които не може да се кодира в добавка"
 
 #: src/insets/InsetCommandParams.cpp:528
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The following characters in one of the insets are\n"
 "not representable in the current encoding and have been omitted: %1$s.\n"
 "Unchecking 'Literal' in the respective inset dialog might help."
 msgstr ""
-"Следните знаци използвани в добавката %1$s нямат графично представяне\n"
+"Следните символи използвани в една от добавките нямат графично представяне\n"
 "в текущото кодиране и затова бяха премахнати в изходния документ:\n"
-"„%2$s“."
+"„%1$s“."
+"Изслючване на отметката „Дословно“ в съответната добавка може да помогне."
 
 #: src/insets/InsetCounter.cpp:62
 msgid "Set counter to ..."
-msgstr ""
+msgstr "Нагласяванен на брояча на ..."
 
 #: src/insets/InsetCounter.cpp:63
 msgid "Increase counter by ..."
-msgstr ""
+msgstr "Увеличаване на брояча с ..."
 
 #: src/insets/InsetCounter.cpp:64
-#, fuzzy
 msgid "Reset counter to 0"
-msgstr "PDF бутон рестарт"
+msgstr "Рестартиране на брояча с 0"
 
 # src/frontends/kde/dlg/printdlgdata.C:88
 # src/frontends/xforms/form_print.C:138
 #: src/insets/InsetCounter.cpp:65
-#, fuzzy
 msgid "Save current counter value"
-msgstr "Печат на"
+msgstr "Запазванен а текущия номер на брояча."
 
 #: src/insets/InsetCounter.cpp:66
 msgid "Restore saved counter value"
-msgstr ""
+msgstr "Възстановяване на запазения номер на брояча"
 
 # src/ext_l10n.h:132
 #: src/insets/InsetCounter.cpp:142
-#, fuzzy
 msgid "Roman Uppercase"
-msgstr "Главни букви|Г"
+msgstr "Серифни главни букви"
 
 # src/lyxfunc.C:1125
 #: src/insets/InsetCounter.cpp:143
-#, fuzzy
 msgid "Roman Lowercase"
-msgstr "overset"
+msgstr "Серифни малки букви"
 
 # src/ext_l10n.h:362
 #: src/insets/InsetCounter.cpp:144
-#, fuzzy
 msgid "Uppercase Letter"
-msgstr "Държава"
+msgstr "Главни букви"
 
 #: src/insets/InsetCounter.cpp:145
-#, fuzzy
 msgid "Lowercase Letter"
-msgstr "Малки букви|М"
+msgstr "Малки букви"
 
 # src/ext_l10n.h:423
 #: src/insets/InsetCounter.cpp:146
-#, fuzzy
 msgid "Arabic Numeral"
-msgstr "Обикновен с номера"
+msgstr "Арабски числа"
 
 # src/bufferview_funcs.C:267
 #: src/insets/InsetCounter.cpp:224
-#, fuzzy, c-format
+#, c-format
 msgid "Counter: Set %1$s"
-msgstr "Шрифт: %1$s"
+msgstr "Брояч: %1$s"
 
 #: src/insets/InsetCounter.cpp:225
 #, c-format
 msgid "Set value of counter %1$s to %2$s"
-msgstr ""
+msgstr "Наh.diske на брояча %1$s на %2$s"
 
 # src/lyxfunc.C:3317
 #: src/insets/InsetCounter.cpp:229
-#, fuzzy, c-format
+#, c-format
 msgid "Counter: Add to %1$s"
-msgstr "Неуспех при вмъкването"
+msgstr "Брояч: Добавяне към %1$s"
 
 #: src/insets/InsetCounter.cpp:230
 #, c-format
 msgid "Add %1$s to value of counter %2$s"
-msgstr ""
+msgstr "Добавяне на %1$s към стойността на брояч %2$s"
 
 # src/bufferview_funcs.C:267
 #: src/insets/InsetCounter.cpp:233
-#, fuzzy, c-format
+#, c-format
 msgid "Counter: Reset %1$s"
-msgstr "Шрифт: %1$s"
+msgstr "Брояч: Рестартиране %1$s"
 
 #: src/insets/InsetCounter.cpp:234
 #, c-format
@@ -41774,20 +41223,20 @@ msgid "float"
 msgstr "плаващ обект"
 
 # src/frontends/xforms/FormPreferences.C:252
-#: src/insets/InsetFloat.cpp:903
+#: src/insets/InsetFloat.cpp:911
 #, fuzzy
 msgid "Float: "
 msgstr "плаващ обект: "
 
 # src/frontends/xforms/FormPreferences.C:252
-#: src/insets/InsetFloat.cpp:906
+#: src/insets/InsetFloat.cpp:914
 #, fuzzy
 msgid "Subfloat: "
 msgstr "Формати"
 
 # src/frontends/xforms/form_tabular.C:119
 # src/frontends/xforms/form_tabular.C:383
-#: src/insets/InsetFloat.cpp:916
+#: src/insets/InsetFloat.cpp:924
 #, fuzzy
 msgid " (sideways)"
 msgstr "Завъртане на 90°|#9"
@@ -41834,9 +41283,9 @@ msgstr ""
 
 # src/frontends/xforms/form_graphics.C:33
 #: src/insets/InsetGraphics.cpp:931
-#, fuzzy, c-format
+#, c-format
 msgid "Graphics file: %1$s"
-msgstr "Графичен файл(F)|#F"
+msgstr "Файл с изображение: %1$s"
 
 # src/frontends/kde/urldlg.C:45
 #: src/insets/InsetHyperlink.cpp:66
@@ -41845,13 +41294,12 @@ msgstr "хипервръзка: "
 
 #: src/insets/InsetHyperlink.cpp:270
 msgid "www"
-msgstr ""
+msgstr "www"
 
 # src/layout_forms.C:23
 #: src/insets/InsetHyperlink.cpp:272
-#, fuzzy
 msgid "email"
-msgstr "Семейство(F):|#F"
+msgstr "ел. поща"
 
 # src/ext_l10n.h:92
 #: src/insets/InsetHyperlink.cpp:274
@@ -41860,19 +41308,18 @@ msgstr "файл"
 
 # src/debug.C:100
 #: src/insets/InsetHyperlink.cpp:275
-#, fuzzy, c-format
+#, c-format
 msgid "Hyperlink (%1$s) to %2$s"
-msgstr "Анализиране `"
+msgstr "Хипервръзка (%1$s) към %2$s"
 
 #: src/insets/InsetInclude.cpp:402
 msgid "MISSING:"
-msgstr ""
+msgstr "Липсващи:"
 
 # src/ext_l10n.h:92
 #: src/insets/InsetInclude.cpp:420
-#, fuzzy
 msgid "Include (excluded)"
-msgstr "Включи файл(e)|e"
+msgstr "Включване (изключените)"
 
 #: src/insets/InsetInclude.cpp:529
 #, c-format
@@ -41889,21 +41336,21 @@ msgstr ""
 
 # src/form1.C:245
 #: src/insets/InsetInclude.cpp:545
-#, fuzzy
 msgid "No file name specified"
-msgstr "Име на файл на изображение"
+msgstr "Не е посочено име на файл"
 
 #: src/insets/InsetInclude.cpp:546
 msgid ""
 "An included file name is empty.\n"
 "Ignoring Inclusion"
 msgstr ""
+"Включен файл е с празно име.\n"
+"Включването се отхвърля"
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
 #: src/insets/InsetInclude.cpp:553
-#, fuzzy
 msgid "Included file not found"
-msgstr "Низът не е намерен!"
+msgstr "Включеният файл не е открит"
 
 #: src/insets/InsetInclude.cpp:554
 #, c-format
@@ -41916,7 +41363,7 @@ msgstr ""
 #: src/insets/InsetInclude.cpp:569
 #, c-format
 msgid "[INCLUDED FILE %1$s DELETED!]"
-msgstr ""
+msgstr "[Включениат файл %1$s е изтрит!]"
 
 #: src/insets/InsetInclude.cpp:801
 #, c-format
@@ -41925,6 +41372,9 @@ msgid ""
 "`%1$s'\n"
 "Please, check whether it actually exists."
 msgstr ""
+"Неуспех при зареждане на включения файл\n"
+"„%1$s“\n"
+"Уверете се, че файлът съществува."
 
 # src/LColor.C:92
 #: src/insets/InsetInclude.cpp:805 src/insets/InsetInclude.cpp:912
@@ -42037,24 +41487,24 @@ msgstr ""
 "ръководството но потребителя"
 
 # src/frontends/kde/indexdlg.C:27 src/frontends/kde/indexdlg.C:28
-#: src/insets/InsetIndex.cpp:470
+#: src/insets/InsetIndex.cpp:495
 msgid "Index Entry"
 msgstr "указател"
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
-#: src/insets/InsetIndex.cpp:656
+#: src/insets/InsetIndex.cpp:681
 #, fuzzy
 msgid "Unknown index type!"
 msgstr "Непознат тип индекс!"
 
 # src/exporter.C:91
-#: src/insets/InsetIndex.cpp:657
+#: src/insets/InsetIndex.cpp:682
 #, fuzzy
 msgid "All indexes"
 msgstr " във файл `"
 
 # src/frontends/xforms/FormIndex.C:29 src/insets/insetindex.C:36
-#: src/insets/InsetIndex.cpp:661
+#: src/insets/InsetIndex.cpp:686
 #, fuzzy
 msgid "subindex"
 msgstr "Индекс"
@@ -42096,7 +41546,7 @@ msgid "Used text class"
 msgstr "Тема"
 
 # src/debug.C:44
-#: src/insets/InsetInfo.cpp:277 src/insets/InsetInfo.cpp:1108
+#: src/insets/InsetInfo.cpp:277 src/insets/InsetInfo.cpp:1116
 #, fuzzy
 msgid "No version control!"
 msgstr "Система за контрол на версиите"
@@ -42134,71 +41584,71 @@ msgid "LyX layout format"
 msgstr "Формат на файловете за разположение на LyX"
 
 # src/debug.C:33
-#: src/insets/InsetInfo.cpp:486
+#: src/insets/InsetInfo.cpp:494
 #, fuzzy
 msgid "Invalid information inset"
 msgstr "Обща информация"
 
-#: src/insets/InsetInfo.cpp:489
+#: src/insets/InsetInfo.cpp:497
 #, c-format
 msgid "The keybard shortcut for the function '%1$s'"
 msgstr ""
 
-#: src/insets/InsetInfo.cpp:493
+#: src/insets/InsetInfo.cpp:501
 #, c-format
 msgid "The keybard shortcuts for the function '%1$s'"
 msgstr ""
 
 # src/converter.C:166
-#: src/insets/InsetInfo.cpp:497
+#: src/insets/InsetInfo.cpp:505
 #, fuzzy, c-format
 msgid "The menu location for the function '%1$s'"
 msgstr "Липсва информация за показване на "
 
 # src/converter.C:166
-#: src/insets/InsetInfo.cpp:501
+#: src/insets/InsetInfo.cpp:509
 #, fuzzy, c-format
 msgid "The localization for the string '%1$s'"
 msgstr "Липсва информация за показване на "
 
-#: src/insets/InsetInfo.cpp:505
+#: src/insets/InsetInfo.cpp:513
 #, c-format
 msgid "The toolbar icon for the function '%1$s'"
 msgstr ""
 
-#: src/insets/InsetInfo.cpp:509
+#: src/insets/InsetInfo.cpp:517
 #, c-format
 msgid "The preference setting for the preference key '%1$s'"
 msgstr ""
 
-#: src/insets/InsetInfo.cpp:513
+#: src/insets/InsetInfo.cpp:521
 #, c-format
 msgid "Availability of the LaTeX package '%1$s'"
 msgstr ""
 
-#: src/insets/InsetInfo.cpp:517
+#: src/insets/InsetInfo.cpp:525
 #, c-format
 msgid "Availability of the LaTeX class '%1$s'"
 msgstr ""
 
 # src/lyxrc.C:1838
-#: src/insets/InsetInfo.cpp:522
+#: src/insets/InsetInfo.cpp:530
 #, fuzzy
 msgid "The name of this file (incl. extension)"
 msgstr "Укажете стандартния размер на хартията."
 
 # src/lyxrc.C:1838
-#: src/insets/InsetInfo.cpp:524
+#: src/insets/InsetInfo.cpp:532
 #, fuzzy
 msgid "The name of this file (without extension)"
 msgstr "Укажете стандартния размер на хартията."
 
-#: src/insets/InsetInfo.cpp:526
+#: src/insets/InsetInfo.cpp:534
 msgid "The path where this file is saved"
 msgstr ""
 
 # src/lyxrc.C:1782
-#: src/insets/InsetInfo.cpp:528
+#: src/insets/InsetInfo.cpp:536
 #, fuzzy
 msgid "The class this document uses"
 msgstr ""
@@ -42206,196 +41656,185 @@ msgstr ""
 "от това, което пишете."
 
 # src/debug.C:44
-#: src/insets/InsetInfo.cpp:532
+#: src/insets/InsetInfo.cpp:540
 #, fuzzy
 msgid "Version control revision"
 msgstr "Система за контрол на версиите"
 
 # src/debug.C:44
-#: src/insets/InsetInfo.cpp:534
+#: src/insets/InsetInfo.cpp:542
 #, fuzzy
 msgid "Version control abbreviated revision"
 msgstr "Система за контрол на ревизиите"
 
 # src/debug.C:44
-#: src/insets/InsetInfo.cpp:536
+#: src/insets/InsetInfo.cpp:544
 #, fuzzy
 msgid "Version control tree revision"
 msgstr "Система за контрол на ревизиите"
 
 # src/debug.C:44
-#: src/insets/InsetInfo.cpp:538
+#: src/insets/InsetInfo.cpp:546
 #, fuzzy
 msgid "Version control author"
 msgstr "Система за контрол на версиите"
 
 # src/debug.C:44
-#: src/insets/InsetInfo.cpp:540
+#: src/insets/InsetInfo.cpp:548
 #, fuzzy
 msgid "Version control date"
 msgstr "Система за контрол на версиите"
 
 # src/debug.C:44
-#: src/insets/InsetInfo.cpp:542
+#: src/insets/InsetInfo.cpp:550
 #, fuzzy
 msgid "Version control time"
 msgstr "Система за контрол на версиите"
 
-#: src/insets/InsetInfo.cpp:546
+#: src/insets/InsetInfo.cpp:554
 msgid "The current LyX version"
 msgstr ""
 
-#: src/insets/InsetInfo.cpp:548
+#: src/insets/InsetInfo.cpp:556
 msgid "The current LyX layout format"
 msgstr ""
 
 # src/frontends/kde/dlg/printdlgdata.C:88
 # src/frontends/xforms/form_print.C:138
-#: src/insets/InsetInfo.cpp:551
-#, fuzzy
+#: src/insets/InsetInfo.cpp:559
 msgid "The current date"
-msgstr "Печат на"
+msgstr "Текущата дата"
 
-#: src/insets/InsetInfo.cpp:554
+#: src/insets/InsetInfo.cpp:562
 msgid "The date of last save"
-msgstr ""
+msgstr "Дата на последен запис"
 
-#: src/insets/InsetInfo.cpp:557
-#, fuzzy
+#: src/insets/InsetInfo.cpp:565
 msgid "A static date"
-msgstr "Автоматично опресняване"
+msgstr "Точна дата"
 
 # src/LyXAction.C:141
-#: src/insets/InsetInfo.cpp:560
-#, fuzzy
+#: src/insets/InsetInfo.cpp:568
 msgid "The current time"
-msgstr "Нов документ"
+msgstr "Текущо време"
 
-#: src/insets/InsetInfo.cpp:563
+#: src/insets/InsetInfo.cpp:571
 msgid "The time of last save"
-msgstr ""
+msgstr "Времето на последния зяпис"
 
-#: src/insets/InsetInfo.cpp:566
-#, fuzzy
+#: src/insets/InsetInfo.cpp:574
 msgid "A static time"
-msgstr "Автоматично опресняване"
+msgstr "Точно време"
 
-#: src/insets/InsetInfo.cpp:593
+#: src/insets/InsetInfo.cpp:601
 msgid "Missing \\end_inset at this point."
-msgstr ""
+msgstr "Липсва „\\end_inset“ на това място."
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
-#: src/insets/InsetInfo.cpp:787
-#, fuzzy
+#: src/insets/InsetInfo.cpp:795
 msgid "Unknown Info!"
-msgstr "Непознато действие"
+msgstr "Непозната информация!"
 
 # src/lyxfunc.C:328 src/lyxfunc.C:2996
-#: src/insets/InsetInfo.cpp:796 src/insets/InsetInfo.cpp:983
-#, fuzzy, c-format
+#: src/insets/InsetInfo.cpp:804 src/insets/InsetInfo.cpp:991
+#, c-format
 msgid "Unknown action %1$s"
-msgstr "Непознато действие"
+msgstr "Непознато действие %1$s"
 
 # src/lyxfont.C:404
-#: src/insets/InsetInfo.cpp:802 src/insets/InsetInfo.cpp:912
-#: src/insets/InsetInfo.cpp:921 src/insets/InsetInfo.cpp:929
+#: src/insets/InsetInfo.cpp:810 src/insets/InsetInfo.cpp:920
+#: src/insets/InsetInfo.cpp:929 src/insets/InsetInfo.cpp:937
 msgid "undefined"
 msgstr "неприсвоино"
 
-#: src/insets/InsetInfo.cpp:825 src/insets/InsetInfo.cpp:875
+#: src/insets/InsetInfo.cpp:833 src/insets/InsetInfo.cpp:883
 msgid "Return[[Key]]"
-msgstr ""
+msgstr "Нов ред"
 
-#: src/insets/InsetInfo.cpp:830
+#: src/insets/InsetInfo.cpp:838
 msgid "Tab[[Key]]"
-msgstr ""
+msgstr "Табулация"
 
-#: src/insets/InsetInfo.cpp:835
+#: src/insets/InsetInfo.cpp:843
 msgid "PgUp"
-msgstr ""
+msgstr "Станица нагоре"
 
-#: src/insets/InsetInfo.cpp:840
+#: src/insets/InsetInfo.cpp:848
 msgid "PgDown"
-msgstr ""
+msgstr "Страница надолу"
 
-#: src/insets/InsetInfo.cpp:845
+#: src/insets/InsetInfo.cpp:853
 msgid "Backtab"
-msgstr ""
+msgstr "Назад"
 
 # src/frontends/xforms/FormTabular.C:133
-#: src/insets/InsetInfo.cpp:850
-#, fuzzy
+#: src/insets/InsetInfo.cpp:858
 msgid "Tab"
-msgstr "таблица"
+msgstr "Табулация"
 
-#: src/insets/InsetInfo.cpp:860
+#: src/insets/InsetInfo.cpp:868
 msgid "CapsLock"
-msgstr ""
+msgstr "Главни букви"
 
 # src/frontends/xforms/FormDocument.C:279
 # src/frontends/xforms/FormParagraph.C:133
-#: src/insets/InsetInfo.cpp:865
-#, fuzzy
+#: src/insets/InsetInfo.cpp:873
 msgid "Control[[Key]]"
-msgstr "Управление и контрол"
+msgstr "Контрол"
 
 # src/frontends/xforms/form_preferences.C:887
-#: src/insets/InsetInfo.cpp:870
-#, fuzzy
+#: src/insets/InsetInfo.cpp:878
 msgid "Command[[Key]]"
-msgstr "команда"
+msgstr "Команда"
 
 # src/form1.C:129 src/sp_form.C:58
-#: src/insets/InsetInfo.cpp:880
-#, fuzzy
+#: src/insets/InsetInfo.cpp:888
 msgid "Option[[Key]]"
-msgstr "Опции"
+msgstr "Опция"
 
 # src/frontends/xforms/form_preferences.C:600
 # src/frontends/xforms/form_preferences.C:687
-#: src/insets/InsetInfo.cpp:885
-#, fuzzy
+#: src/insets/InsetInfo.cpp:893
 msgid "Delete[[Key]]"
-msgstr "Изтрий(D)|#D"
+msgstr "Изтриване"
 
-#: src/insets/InsetInfo.cpp:890
+#: src/insets/InsetInfo.cpp:898
 msgid "Fn+Del"
 msgstr ""
 
-#: src/insets/InsetInfo.cpp:895
-#, fuzzy
+#: src/insets/InsetInfo.cpp:903
 msgid "Esc"
-msgstr "csc"
+msgstr "Изход"
 
 # src/lyxfont.C:57
-#: src/insets/InsetInfo.cpp:939
+#: src/insets/InsetInfo.cpp:947
 #, fuzzy
 msgid "not set"
 msgstr "все още неиздадена"
 
 # src/insets/insetbib.C:340
-#: src/insets/InsetInfo.cpp:951 src/insets/InsetInfo.cpp:968
+#: src/insets/InsetInfo.cpp:959 src/insets/InsetInfo.cpp:976
 msgid "yes"
 msgstr "да"
 
 # src/BufferView2.C:435 src/LyXAction.C:406
-#: src/insets/InsetInfo.cpp:954 src/insets/InsetInfo.cpp:971
+#: src/insets/InsetInfo.cpp:962 src/insets/InsetInfo.cpp:979
 msgid "no"
 msgstr "не"
 
-#: src/insets/InsetInfo.cpp:994
+#: src/insets/InsetInfo.cpp:1002
 #, c-format
 msgid "Can't determine menu entry for action %1$s in batch mode"
 msgstr ""
 
 # src/converter.C:166
-#: src/insets/InsetInfo.cpp:1002
+#: src/insets/InsetInfo.cpp:1010
 #, fuzzy, c-format
 msgid "No menu entry for action %1$s"
 msgstr "Липсва информация за показване на "
 
 # src/insets/insettext.C:1036 src/lyxfunc.C:1261
-#: src/insets/InsetInfo.cpp:1127
+#: src/insets/InsetInfo.cpp:1135
 #, fuzzy, c-format
 msgid "%1$s[[vcs data]] unknown"
 msgstr " оформление"
@@ -42422,17 +41861,17 @@ msgstr ""
 msgid "Horizontal line"
 msgstr "Хориз. линия"
 
-#: src/insets/InsetListings.cpp:332
+#: src/insets/InsetListings.cpp:333
 msgid "no more lstline delimiters available"
 msgstr ""
 
 # src/LyXAction.C:250
-#: src/insets/InsetListings.cpp:337
+#: src/insets/InsetListings.cpp:338
 #, fuzzy
 msgid "Running out of delimiters"
 msgstr "Вмъкни последно индеск перо"
 
-#: src/insets/InsetListings.cpp:338
+#: src/insets/InsetListings.cpp:339
 msgid ""
 "For inline program listings, one character must be reserved\n"
 "as a delimiter. One of the listings, however, uses all available\n"
@@ -42442,12 +41881,11 @@ msgid ""
 msgstr ""
 
 # src/ext_l10n.h:78
-#: src/insets/InsetListings.cpp:419 src/insets/InsetListings.cpp:428
-#, fuzzy
+#: src/insets/InsetListings.cpp:420 src/insets/InsetListings.cpp:429
 msgid "Uncodable characters in listings inset"
-msgstr "Специален символ(S)|S"
+msgstr "Символ, които не може да се кодира в добавка със списък"
 
-#: src/insets/InsetListings.cpp:420
+#: src/insets/InsetListings.cpp:421
 #, c-format
 msgid ""
 "The following characters in one of the program listings are\n"
@@ -42459,7 +41897,7 @@ msgid ""
 "might help."
 msgstr ""
 
-#: src/insets/InsetListings.cpp:429
+#: src/insets/InsetListings.cpp:430
 #, c-format
 msgid ""
 "The following characters in one of the program listings are\n"
@@ -42806,73 +42244,73 @@ msgid "text%1$s"
 msgstr "текст%1$s"
 
 # src/BufferView2.C:456 src/LyXAction.C:357
-#: src/insets/InsetRef.cpp:595
+#: src/insets/InsetRef.cpp:597
 #, fuzzy
 msgid "Ref"
 msgstr "Re"
 
 # src/ext_l10n.h:285
-#: src/insets/InsetRef.cpp:596
+#: src/insets/InsetRef.cpp:598
 #, fuzzy
 msgid "EqRef"
 msgstr "Препратка"
 
 # src/frontends/kde/refdlg.C:63
-#: src/insets/InsetRef.cpp:597 src/mathed/InsetMathRef.cpp:350
+#: src/insets/InsetRef.cpp:599 src/mathed/InsetMathRef.cpp:373
 msgid "Page Number"
 msgstr "Номер на страница"
 
 # src/frontends/xforms/Menubar_pimpl.C:419
-#: src/insets/InsetRef.cpp:598 src/mathed/InsetMathRef.cpp:351
+#: src/insets/InsetRef.cpp:600 src/mathed/InsetMathRef.cpp:374
 #, fuzzy
 msgid "Textual Page Number"
 msgstr "Вмъкни номер на страница%m"
 
 # src/frontends/xforms/form_print.C:112
-#: src/insets/InsetRef.cpp:598
+#: src/insets/InsetRef.cpp:600
 #, fuzzy
 msgid "TextPage"
 msgstr "Страници:"
 
 # src/frontends/xforms/Menubar_pimpl.C:419
-#: src/insets/InsetRef.cpp:599 src/mathed/InsetMathRef.cpp:352
+#: src/insets/InsetRef.cpp:601 src/mathed/InsetMathRef.cpp:375
 #, fuzzy
 msgid "Standard+Textual Page"
 msgstr "Вмъкни номер на страница%m"
 
 # src/ext_l10n.h:285
-#: src/insets/InsetRef.cpp:599
+#: src/insets/InsetRef.cpp:601
 #, fuzzy
 msgid "Ref+Text"
 msgstr "Препратка"
 
 # src/ext_l10n.h:328 src/frontends/kde/refdlg.C:62
 # src/frontends/xforms/FormRef.C:36
-#: src/insets/InsetRef.cpp:600 src/mathed/InsetMathRef.cpp:354
+#: src/insets/InsetRef.cpp:602 src/mathed/InsetMathRef.cpp:377
 #, fuzzy
 msgid "Reference to Name"
 msgstr "Препратка"
 
 # src/frontends/gnome/FormRef.C:301
-#: src/insets/InsetRef.cpp:600
+#: src/insets/InsetRef.cpp:602
 #, fuzzy
 msgid "NameRef"
 msgstr "Име:"
 
 # src/frontends/xforms/FormPreferences.C:252
-#: src/insets/InsetRef.cpp:601
+#: src/insets/InsetRef.cpp:603
 #, fuzzy
 msgid "Formatted"
 msgstr "Формати"
 
 # src/frontends/xforms/FormPreferences.C:252
-#: src/insets/InsetRef.cpp:601
+#: src/insets/InsetRef.cpp:603
 #, fuzzy
 msgid "Format"
 msgstr "Формат:"
 
 # src/frontends/xforms/FormPreferences.C:244
-#: src/insets/InsetRef.cpp:602 src/mathed/InsetMathRef.cpp:355
+#: src/insets/InsetRef.cpp:604 src/mathed/InsetMathRef.cpp:378
 #, fuzzy
 msgid "Label Only"
 msgstr "Цветове"
@@ -42978,31 +42416,31 @@ msgid "Unknown TOC type"
 msgstr "Непознато действие"
 
 # src/LyXAction.C:263
-#: src/insets/InsetTabular.cpp:463
+#: src/insets/InsetTabular.cpp:464
 #, fuzzy
 msgid "Change tracking data incomplete"
 msgstr "Смяна на език"
 
-#: src/insets/InsetTabular.cpp:464
+#: src/insets/InsetTabular.cpp:465
 msgid ""
 "Change tracking information for tabular row/column is incomplete. I will "
 "ignore this."
 msgstr ""
 
-#: src/insets/InsetTabular.cpp:5593
+#: src/insets/InsetTabular.cpp:5607
 msgid "Column movement not supported with multi-columns."
 msgstr ""
 
-#: src/insets/InsetTabular.cpp:5611
+#: src/insets/InsetTabular.cpp:5625
 msgid "Row movement not supported with multi-rows."
 msgstr ""
 
-#: src/insets/InsetTabular.cpp:6113
+#: src/insets/InsetTabular.cpp:6127
 msgid "Selection size should match clipboard content."
 msgstr ""
 
 # src/ext_l10n.h:31
-#: src/insets/InsetText.cpp:1279
+#: src/insets/InsetText.cpp:1380
 #, fuzzy
 msgid "[contains tracked changes]"
 msgstr "Проследяване на промените"
@@ -43125,7 +42563,7 @@ msgid ""
 "Continue search outside?"
 msgstr ""
 
-#: src/lyxfind.cpp:344 src/lyxfind.cpp:684
+#: src/lyxfind.cpp:345 src/lyxfind.cpp:691
 msgid ""
 "End of file reached while searching forward.\n"
 "Continue searching from the beginning?"
@@ -43133,85 +42571,94 @@ msgstr ""
 "Достигнат е края на документа при търсене напред.\n"
 "Желяета ли да продължите търсенето от началото на документа?"
 
-#: src/lyxfind.cpp:347 src/lyxfind.cpp:712
+#: src/lyxfind.cpp:348 src/lyxfind.cpp:719
 msgid ""
 "Beginning of file reached while searching backward.\n"
 "Continue searching from the end?"
 msgstr ""
 
+#: src/lyxfind.cpp:364
+#, fuzzy
+msgid "Search reached end of document, continuing from beginning."
+msgstr "Достигнат е края на документа. Желаете ли да продължите от началото?"
+
+#: src/lyxfind.cpp:365
+msgid "Search reached beginning of document, continuing from end."
+msgstr ""
+
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/lyxfind.cpp:657
+#: src/lyxfind.cpp:664
 #, fuzzy
 msgid "String not found in selection."
 msgstr "Низът не е намерен."
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/lyxfind.cpp:659
+#: src/lyxfind.cpp:666
 #, fuzzy
 msgid "String not found."
 msgstr "Низът не е намерен."
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/lyxfind.cpp:662
+#: src/lyxfind.cpp:669
 #, fuzzy
 msgid "String found."
 msgstr "Низът е намерен."
 
 # src/lyxfr1.C:196
-#: src/lyxfind.cpp:664
+#: src/lyxfind.cpp:671
 #, fuzzy
 msgid "String has been replaced."
 msgstr "Един низ беше заместен."
 
 # src/lyxfr1.C:199
-#: src/lyxfind.cpp:667
+#: src/lyxfind.cpp:674
 #, fuzzy, c-format
 msgid "%1$d strings have been replaced in the selection."
 msgstr " низа бяха заместени."
 
 # src/lyxfr1.C:199
-#: src/lyxfind.cpp:668
+#: src/lyxfind.cpp:675
 #, fuzzy, c-format
 msgid "%1$d strings have been replaced."
 msgstr " низа бяха заместени."
 
 # src/lyxfr1.C:196
-#: src/lyxfind.cpp:4388
+#: src/lyxfind.cpp:4508
 #, fuzzy
 msgid "One match has been replaced."
 msgstr "Един низ беше заместен."
 
 # src/lyxfr1.C:199
-#: src/lyxfind.cpp:4391
+#: src/lyxfind.cpp:4511
 #, fuzzy
 msgid "Two matches have been replaced."
 msgstr " низа бяха заместени."
 
 # src/lyxfr1.C:199
-#: src/lyxfind.cpp:4394
+#: src/lyxfind.cpp:4514
 #, fuzzy, c-format
 msgid "%1$d matches have been replaced."
 msgstr " низа бяха заместени."
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/lyxfind.cpp:4400
+#: src/lyxfind.cpp:4520
 #, fuzzy
 msgid "Match not found."
 msgstr "Низът не е намерен!"
 
 # src/lyxfr1.C:196
-#: src/lyxfind.cpp:4406
+#: src/lyxfind.cpp:4526
 #, fuzzy
 msgid "Match has been replaced."
 msgstr "Един низ беше заместен."
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/lyxfind.cpp:4408
+#: src/lyxfind.cpp:4528
 #, fuzzy
 msgid "Match found."
 msgstr "Низът не е намерен!"
 
-#: src/mathed/InsetMathAMSArray.cpp:135 src/mathed/InsetMathHull.cpp:2154
+#: src/mathed/InsetMathAMSArray.cpp:135 src/mathed/InsetMathHull.cpp:2163
 #: src/mathed/InsetMathSplit.cpp:127 src/mathed/InsetMathSubstack.cpp:70
 #, c-format
 msgid "Can't add vertical grid lines in '%1$s'"
@@ -43241,59 +42688,57 @@ msgstr "Цветове"
 
 # src/ext_l10n.h:219
 #: src/mathed/InsetMathDecoration.cpp:184
-#, fuzzy, c-format
+#, c-format
 msgid "Decoration: %1$s"
-msgstr "Посвещение"
+msgstr "мат. знаци: %1$s"
 
 # src/ext_l10n.h:127
 #: src/mathed/InsetMathEnv.cpp:69
-#, fuzzy, c-format
+#, c-format
 msgid "Environment: %1$s"
-msgstr "Промени дълбочината на средата(v)|v"
+msgstr "Среда: %1$s"
 
 # src/buffer.C:3331
-#: src/mathed/InsetMathGrid.cpp:1720
-#, fuzzy
+#: src/mathed/InsetMathGrid.cpp:1725
 msgid "Cursor not in table"
-msgstr "Недъзможна е работата с файл: "
+msgstr "Курсорът не е в таблицата"
 
-#: src/mathed/InsetMathGrid.cpp:1725
+#: src/mathed/InsetMathGrid.cpp:1730
 msgid "Only one row"
-msgstr ""
+msgstr "Само един ред"
 
 # src/ext_l10n.h:75
-#: src/mathed/InsetMathGrid.cpp:1731
-#, fuzzy
+#: src/mathed/InsetMathGrid.cpp:1736
 msgid "Only one column"
-msgstr "Изтрий колона(D)|D"
+msgstr "Само една колона"
 
 # src/text2.C:456
-#: src/mathed/InsetMathGrid.cpp:1739
+#: src/mathed/InsetMathGrid.cpp:1744
 #, fuzzy
 msgid "No hline to delete"
 msgstr "Няма нищо за правене"
 
-#: src/mathed/InsetMathGrid.cpp:1748
+#: src/mathed/InsetMathGrid.cpp:1753
 msgid "No vline to delete"
 msgstr ""
 
-#: src/mathed/InsetMathGrid.cpp:1777
+#: src/mathed/InsetMathGrid.cpp:1782
 #, c-format
 msgid "Unknown tabular feature '%1$s'"
 msgstr ""
 
 # src/frontends/kde/FormPrint.C:118
-#: src/mathed/InsetMathHull.cpp:1717
+#: src/mathed/InsetMathHull.cpp:1726
 #, c-format
 msgid "Type: %1$s"
 msgstr "Тип: %1$s"
 
 # src/ext_l10n.h:127
-#: src/mathed/InsetMathHull.cpp:1753
+#: src/mathed/InsetMathHull.cpp:1762
 msgid "Bad math environment"
 msgstr "Неподходяща математическа среда"
 
-#: src/mathed/InsetMathHull.cpp:1754
+#: src/mathed/InsetMathHull.cpp:1763
 msgid ""
 "Computation cannot be performed for AMS math environments.\n"
 "Change the math formula type and try again."
@@ -43302,26 +42747,26 @@ msgstr ""
 "Променете типа (средата) на мат. формула и пробвайте отново."
 
 # src/mathed/formula.C:929
-#: src/mathed/InsetMathHull.cpp:1857 src/mathed/InsetMathHull.cpp:1866
+#: src/mathed/InsetMathHull.cpp:1866 src/mathed/InsetMathHull.cpp:1875
 #, fuzzy
 msgid "No number"
 msgstr "Номериране"
 
-#: src/mathed/InsetMathHull.cpp:2137
+#: src/mathed/InsetMathHull.cpp:2146
 #, c-format
 msgid "Can't change number of rows in '%1$s'"
 msgstr "Не може да се промени броя на редовете в '%1$s'"
 
-#: src/mathed/InsetMathHull.cpp:2147
+#: src/mathed/InsetMathHull.cpp:2156
 #, c-format
 msgid "Can't change number of columns in '%1$s'"
 msgstr "Не може да се промени броя на колоните в '%1$s'"
 
 # src/mathed/formulamacro.C:144 src/mathed/formulamacro.C:171
 #: src/mathed/InsetMathMacro.cpp:1295 src/mathed/InsetMathMacro.cpp:1301
-#, fuzzy, c-format
+#, c-format
 msgid "Macro: %1$s"
-msgstr "Макрос: "
+msgstr "Макрос: %1$s"
 
 # src/mathed/math_forms.C:152
 #: src/mathed/InsetMathMacroTemplate.cpp:490
@@ -43331,98 +42776,96 @@ msgstr "Хориз. Подравняване(H)|#H"
 
 # src/LColor.C:81
 #: src/mathed/InsetMathMacroTemplate.cpp:1273
-#, fuzzy
 msgid "math macro"
-msgstr "фон на математика"
+msgstr "мат. макрос"
 
 # src/LColor.C:81
 #: src/mathed/InsetMathMacroTemplate.cpp:1382
-#, fuzzy, c-format
+#, c-format
 msgid "Math Macro: \\%1$s"
-msgstr "фон на математика"
+msgstr "Мат. макрос: \\%1$s"
 
 #: src/mathed/InsetMathMacroTemplate.cpp:1397
 #, c-format
 msgid "Invalid macro! \\%1$s"
-msgstr ""
+msgstr "Невалиден макрос! \\%1$s"
 
-#: src/mathed/InsetMathNest.cpp:1010
+#: src/mathed/InsetMathNest.cpp:1018
 msgid "create new math text environment ($...$)"
 msgstr ""
 
-#: src/mathed/InsetMathNest.cpp:1013
+#: src/mathed/InsetMathNest.cpp:1021
 msgid "entered math text mode (textrm)"
 msgstr ""
 
-#: src/mathed/InsetMathNest.cpp:1035
+#: src/mathed/InsetMathNest.cpp:1043
 msgid "Regular expression editor mode"
 msgstr ""
 
-#: src/mathed/InsetMathNest.cpp:1934
+#: src/mathed/InsetMathNest.cpp:1948
 #, c-format
 msgid "Cannot apply %1$s here."
 msgstr ""
 
-#: src/mathed/InsetMathRef.cpp:348
+#: src/mathed/InsetMathRef.cpp:371
 msgid "Standard[[mathref]]"
 msgstr ""
 
 # src/ext_l10n.h:285
-#: src/mathed/InsetMathRef.cpp:348
+#: src/mathed/InsetMathRef.cpp:371
 msgid "Ref: "
 msgstr "препр.:"
 
 # src/ext_l10n.h:285
-#: src/mathed/InsetMathRef.cpp:349
+#: src/mathed/InsetMathRef.cpp:372
 msgid "EqRef: "
 msgstr "Препратка"
 
 # src/frontends/xforms/form_print.C:112
-#: src/mathed/InsetMathRef.cpp:350
+#: src/mathed/InsetMathRef.cpp:373
 msgid "Page: "
 msgstr "страницa:"
 
 # src/frontends/xforms/form_print.C:112
-#: src/mathed/InsetMathRef.cpp:351
-#, fuzzy
+#: src/mathed/InsetMathRef.cpp:374
 msgid "TextPage: "
-msgstr "Страници:"
+msgstr "Страница: "
 
 # src/ext_l10n.h:285
-#: src/mathed/InsetMathRef.cpp:352
+#: src/mathed/InsetMathRef.cpp:375
 #, fuzzy
 msgid "Ref+Text: "
 msgstr "Препратка"
 
 # src/frontends/xforms/Menubar_pimpl.C:425
-#: src/mathed/InsetMathRef.cpp:353
+#: src/mathed/InsetMathRef.cpp:376
 #, fuzzy
 msgid "PrettyRef"
 msgstr "Вмъкни Pretty Ref%m"
 
 # src/frontends/xforms/FormPreferences.C:252
-#: src/mathed/InsetMathRef.cpp:353
+#: src/mathed/InsetMathRef.cpp:376
 #, fuzzy
 msgid "FormatRef: "
 msgstr "Формати"
 
 # src/frontends/gnome/FormRef.C:301
-#: src/mathed/InsetMathRef.cpp:354
+#: src/mathed/InsetMathRef.cpp:377
 #, fuzzy
 msgid "NameRef: "
 msgstr "Име:"
 
 # src/frontends/xforms/FormPreferences.C:244
-#: src/mathed/InsetMathRef.cpp:355
+#: src/mathed/InsetMathRef.cpp:378
 #, fuzzy
 msgid "Label Only: "
 msgstr "Цветове"
 
 # src/bufferview_funcs.C:267
 #: src/mathed/InsetMathSize.cpp:108
-#, fuzzy, c-format
+#, c-format
 msgid "Size: %1$s"
-msgstr "Шрифт:"
+msgstr "Размер: %1$s"
 
 # src/mathed/math_forms.C:152
 #: src/mathed/InsetMathSubstack.cpp:79
@@ -43439,12 +42882,12 @@ msgid ""
 msgstr "Неуспех при отварянето"
 
 # src/buffer.C:323
-#: src/output_latex.cpp:1626
+#: src/output_latex.cpp:1658
 #, fuzzy
 msgid "Error in latexParagraphs"
 msgstr "Един абзац назад"
 
-#: src/output_latex.cpp:1627
+#: src/output_latex.cpp:1659
 #, c-format
 msgid ""
 "You are using at least one layout (%1$s) intended for the title, after using "
@@ -43461,28 +42904,28 @@ msgid "References: "
 msgstr "Препратки: "
 
 # src/lyx_main.C:575
-#: src/support/Package.cpp:169
+#: src/support/Package.cpp:170
 msgid "LyX: reconfiguring user directory"
 msgstr "LyX: преконфигуриране на потребителската директория"
 
 # src/lyx_main.C:590
-#: src/support/Package.cpp:173
+#: src/support/Package.cpp:174
 msgid "Done!"
 msgstr "Готово!"
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/support/Package.cpp:525
+#: src/support/Package.cpp:526
 #, fuzzy
 msgid "LyX binary not found"
 msgstr "Низът не е намерен!"
 
-#: src/support/Package.cpp:526
+#: src/support/Package.cpp:527
 #, c-format
 msgid ""
 "Unable to determine the path to the LyX binary from the command line %1$s"
 msgstr ""
 
-#: src/support/Package.cpp:645
+#: src/support/Package.cpp:646
 #, c-format
 msgid ""
 "Unable to determine the system directory having searched\n"
@@ -43492,26 +42935,25 @@ msgid ""
 msgstr ""
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/support/Package.cpp:714 src/support/Package.cpp:741
-#, fuzzy
+#: src/support/Package.cpp:715 src/support/Package.cpp:742
 msgid "File not found"
-msgstr "Низът не е намерен!"
+msgstr "Не е открит файл!"
 
-#: src/support/Package.cpp:715
+#: src/support/Package.cpp:716
 #, c-format
 msgid ""
 "Invalid %1$s switch.\n"
 "Directory %2$s does not contain %3$s."
 msgstr ""
 
-#: src/support/Package.cpp:742
+#: src/support/Package.cpp:743
 #, c-format
 msgid ""
 "Invalid %1$s environment variable.\n"
 "Directory %2$s does not contain %3$s."
 msgstr ""
 
-#: src/support/Package.cpp:766
+#: src/support/Package.cpp:767
 #, c-format
 msgid ""
 "Invalid %1$s environment variable.\n"
@@ -43519,13 +42961,13 @@ msgid ""
 msgstr ""
 
 # src/lyxfr1.C:192 src/lyxfr1.C:239
-#: src/support/Package.cpp:768
+#: src/support/Package.cpp:769
 #, fuzzy
 msgid "Directory not found"
-msgstr "Низът не е намерен!"
+msgstr "Не е открита директория!"
 
 # src/buffer.C:534
-#: src/support/Systemcall.cpp:416
+#: src/support/Systemcall.cpp:441
 #, fuzzy, c-format
 msgid ""
 "The command\n"
@@ -43536,20 +42978,18 @@ msgid ""
 msgstr "Документът използва непознат текстклас \""
 
 # src/LyXAction.C:167
-#: src/support/Systemcall.cpp:418
-#, fuzzy
+#: src/support/Systemcall.cpp:443
 msgid "Stop command?"
-msgstr "Изпълни команда"
+msgstr "Прекратяване на команда?"
 
 # src/ext_l10n.h:191
-#: src/support/Systemcall.cpp:419
-#, fuzzy
+#: src/support/Systemcall.cpp:444
 msgid "&Stop it"
-msgstr "Заглавие"
+msgstr "Прекратяване"
 
-#: src/support/Systemcall.cpp:419
+#: src/support/Systemcall.cpp:444
 msgid "Let it &run"
-msgstr ""
+msgstr "Продължаване"
 
 # src/debug.C:32
 #: src/support/debug.cpp:42
@@ -43579,9 +43019,8 @@ msgstr "Съобщения от събития на ГПИ"
 
 # src/debug.C:37
 #: src/support/debug.cpp:47
-#, fuzzy
 msgid "Lyxlex grammar parser"
-msgstr "Lyxlex синтактичен анализ"
+msgstr "Синтактичен анализатор LyXlex"
 
 # src/debug.C:38
 #: src/support/debug.cpp:48
@@ -43719,13 +43158,13 @@ msgid "Developers' general debug messages"
 msgstr "общи съобщения на разработчиците"
 
 # src/debug.c:52
-#: src/support/debug.cpp:75
+#: src/support/debug.cpp:75 src/support/debug.cpp:76
 #, fuzzy
 msgid "All debugging messages"
 msgstr "всички debug съобщения"
 
 # src/debug.c:100
-#: src/support/debug.cpp:154
+#: src/support/debug.cpp:183
 #, fuzzy, c-format
 msgid "Debugging `%1$s' (%2$s)"
 msgstr "анализиране `"
@@ -43756,9 +43195,8 @@ msgstr ""
 
 # src/frontends/gnome/FormCitation.C:453
 #: src/support/lassert.cpp:84
-#, fuzzy
 msgid "Buffer Error!"
-msgstr "Търси"
+msgstr "Грешка в буфера!"
 
 #: src/support/lassert.cpp:91
 msgid ""
@@ -43768,9 +43206,8 @@ msgstr ""
 
 # src/ext_l10n.h:191
 #: src/support/lassert.cpp:94
-#, fuzzy
 msgid "Fatal Exception!"
-msgstr "Заглавие"
+msgstr "Критично изключение!"
 
 #: src/support/lengthcommon.cpp:40
 msgid "cc[[unit of measure]]"
@@ -43802,7 +43239,7 @@ msgstr "pc"
 # src/frontends/kde/dlg/paraextradlgdata.C:142
 #: src/support/lengthcommon.cpp:42
 msgid "pt"
-msgstr "pt"
+msgstr "пункт"
 
 #: src/support/lengthcommon.cpp:42
 msgid "sp"
@@ -43873,6 +43310,29 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Непознато действие"
 
+#~ msgid "e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
+#~ msgstr "напр.: „pdfstartview=XYZ, plainpages=false, pdfpagelabels“"
+
+# src/lyx_main.C:704
+#, fuzzy, c-format
+#~ msgid "Setting debug level to %1$s"
+#~ msgstr "Установяване на ниво за съобщения за откриване на грешки на %1$s"
+
+#~ msgid "Preferred &Language:"
+#~ msgstr "Предпочитан &език:"
+
+# src/lyxfont.C:43 src/lyxfont.C:47 src/lyxfont.C:52 src/lyxfont.C:58
+# src/lyxfont.C:62
+#, fuzzy
+#~ msgid "Ignore|g"
+#~ msgstr "Игнорирай"
+
+# src/lyxfont.C:43 src/lyxfont.C:47 src/lyxfont.C:52 src/lyxfont.C:58
+# src/lyxfont.C:62
+#, fuzzy
+#~ msgid "Ignore all|I"
+#~ msgstr "Игнорирай"
+
 #~ msgid "Fi&nd:"
 #~ msgstr "Намиране:"
 

commit 0ba1b68f6974e61d89243e24257311081fa9d7a1
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Apr 1 04:12:14 2022 +0200

    DocBook: merge code duplicates for HTML and CALS tables.

diff --git a/autotests/export/docbook/table_nested.xml b/autotests/export/docbook/table_nested.xml
index d61f482..ffbb320 100644
--- a/autotests/export/docbook/table_nested.xml
+++ b/autotests/export/docbook/table_nested.xml
@@ -25,18 +25,18 @@
 <informaltable>
 <tbody>
 <tr>
-<td style="width: 110mm;" align='left' valign='top'>
-<para><emphasis role='size_small'>Dict{Any,Any} with 9 entries<!-- \string: --></emphasis></para>
+<td style='width: 110mm;' align='left' valign='top'>
+<para><emphasis role='size_small'>Dict{Any,Any} with 9 entries:</emphasis></para>
 <informaltable>
 <tbody>
 <tr>
 <td align='center' valign='top'>
 <para><!-- \textquotesingle --> n<!-- \textquotesingle --></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>=></emphasis></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>1</emphasis> </para>
 </td>
 </tr>
@@ -44,10 +44,10 @@
 <td align='center' valign='top'>
 <para><!-- \textquotesingle --> s<!-- \textquotesingle --></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>=></emphasis></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>1</emphasis> </para>
 </td>
 </tr>
@@ -55,10 +55,10 @@
 <td align='center' valign='top'>
 <para><!-- \textquotesingle --> a<!-- \textquotesingle --></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>=></emphasis></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>1</emphasis> </para>
 </td>
 </tr>
@@ -66,10 +66,10 @@
 <td align='center' valign='top'>
 <para><!-- \textquotesingle --> r<!-- \textquotesingle --></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>=></emphasis></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>2</emphasis> </para>
 </td>
 </tr>
@@ -77,10 +77,10 @@
 <td align='center' valign='top'>
 <para><!-- \textquotesingle --> t<!-- \textquotesingle --></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>=></emphasis></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>1</emphasis> </para>
 </td>
 </tr>
@@ -88,10 +88,10 @@
 <td align='center' valign='top'>
 <para><!-- \textquotesingle --> o<!-- \textquotesingle --></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>=></emphasis></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>2</emphasis> </para>
 </td>
 </tr>
@@ -99,10 +99,10 @@
 <td align='center' valign='top'>
 <para><!-- \textquotesingle --> u<!-- \textquotesingle --></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>=></emphasis></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>1</emphasis> </para>
 </td>
 </tr>
@@ -110,10 +110,10 @@
 <td align='center' valign='top'>
 <para><!-- \textquotesingle --> e<!-- \textquotesingle --></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>=></emphasis></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>1</emphasis> </para>
 </td>
 </tr>
@@ -121,10 +121,10 @@
 <td align='center' valign='top'>
 <para><!-- \textquotesingle --> b<!-- \textquotesingle --></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>=></emphasis></para>
 </td>
-<td style="width: 3mm;" align='center' valign='top'>
+<td style='width: 3mm;' align='center' valign='top'>
 <para><emphasis role='size_small'>1</emphasis> </para>
 </td>
 </tr>
diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 761cb4c..0d45855 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -3615,14 +3615,7 @@ void Tabular::latex(otexstream & os, OutputParams const & runparams) const
 void Tabular::docbookRow(XMLStream & xs, row_type row,
 		   OutputParams const & runparams, bool header) const
 {
-	switch (buffer().params().docbook_table_output) {
-	case BufferParams::HTMLTable:
-		docbookRowAsHTML(xs, row, runparams, header);
-		break;
-	case BufferParams::CALSTable:
-		docbookRowAsCALS(xs, row, runparams);
-		break;
-	}
+	docbookRow(xs, row, runparams, header, buffer().params().docbook_table_output);
 }
 
 
@@ -3635,6 +3628,9 @@ std::string Tabular::getVAlignAsXmlAttribute(idx_type cell) const
 		return "valign='bottom'";
 	case LYX_VALIGN_MIDDLE:
 		return "valign='middle'";
+	default:
+		// This case only silences a compiler warning, as all the cases are covered above.
+		return "";
 	}
 }
 
@@ -3666,13 +3662,13 @@ std::string Tabular::getHAlignAsXmlAttribute(idx_type cell, bool is_xhtml) const
 }
 
 
-void Tabular::docbookRowAsHTML(XMLStream & xs, row_type row,
-		   OutputParams const & runparams, bool header) const
+void Tabular::docbookRow(XMLStream & xs, row_type row, OutputParams const & runparams, bool header, BufferParams::TableOutput docbook_table_output) const
 {
-	string const celltag = header ? "th" : "td";
+	std::string const row_tag = (docbook_table_output == BufferParams::TableOutput::HTMLTable) ? "tr" : "row";
+	std::string const cell_tag = (docbook_table_output == BufferParams::TableOutput::HTMLTable) ? (header ? "th" : "td") : "entry";
 	idx_type cell = getFirstCellInRow(row);
 
-	xs << xml::StartTag("tr");
+	xs << xml::StartTag(row_tag);
 	xs << xml::CR();
 	for (col_type c = 0; c < ncols(); ++c) {
 		if (isPartOfMultiColumn(row, c) || isPartOfMultiRow(row, c))
@@ -3680,10 +3676,12 @@ void Tabular::docbookRowAsHTML(XMLStream & xs, row_type row,
 
 		stringstream attr;
 
-		Length const cwidth = column_info[c].p_width;
-		if (!cwidth.zero()) {
-			string const hwidth = cwidth.asHTMLString();
-			attr << "style=\"width: " << hwidth << ";\" ";
+		if (docbook_table_output == BufferParams::TableOutput::HTMLTable) {
+			Length const cwidth = column_info[c].p_width;
+			if (!cwidth.zero()) {
+				string const hwidth = cwidth.asHTMLString();
+				attr << "style='width: " << hwidth << ";' ";
+			}
 		}
 
 		attr << getHAlignAsXmlAttribute(cell, false) << " " << getVAlignAsXmlAttribute(cell);
@@ -3692,54 +3690,23 @@ void Tabular::docbookRowAsHTML(XMLStream & xs, row_type row,
 			attr << " colspan='" << columnSpan(cell) << "'";
 		else if (isMultiRow(cell))
 			attr << " rowspan='" << rowSpan(cell) << "'";
+		else if (docbook_table_output == BufferParams::TableOutput::CALSTable)
+			attr << " colname='c" << (c + 1) << "'"; // CALS column numbering starts at 1.
+
+		// All cases where there should be a line *below* this row.
+		if (docbook_table_output == BufferParams::TableOutput::CALSTable && row_info[row].bottom_space_default)
+			attr << " rowsep='1'";
 
 		OutputParams rp = runparams;
 		rp.docbook_in_par = false;
 		rp.docbook_force_pars = true;
-		xs << xml::StartTag(celltag, attr.str(), true);
+		xs << xml::StartTag(cell_tag, attr.str(), true);
 		cellInset(cell)->docbook(xs, rp);
-		xs << xml::EndTag(celltag);
-		xs << xml::CR();
-		++cell;
-	}
-	xs << xml::EndTag("tr");
-	xs << xml::CR();
-}
-
-
-void Tabular::docbookRowAsCALS(XMLStream & xs, row_type row,
-                                OutputParams const & runparams) const
-{
-	idx_type cell = getFirstCellInRow(row);
-
-	xs << xml::StartTag("row");
-	xs << xml::CR();
-	for (col_type c = 0; c < ncols(); ++c) {
-		if (isPartOfMultiColumn(row, c) || isPartOfMultiRow(row, c))
-			continue;
-
-		stringstream attr;
-
-		attr << getHAlignAsXmlAttribute(cell, false) << " " << getVAlignAsXmlAttribute(cell);
-
-		if (isMultiColumn(cell))
-			attr << " colspan='" << columnSpan(cell) << "'";
-		else if (isMultiRow(cell))
-			attr << " rowspan='" << rowSpan(cell) << "'";
-		else
-			attr << " colname='c" << (c + 1) << "'"; // Column numbering starts at 1.
-
-		// All cases where there should be a line *below* this row.
-		if (row_info[row].bottom_space_default)
-			attr << " rowsep='1'";
-
-		xs << xml::StartTag("entry", attr.str(), true);
-		cellInset(cell)->docbook(xs, runparams);
-		xs << xml::EndTag("entry");
+		xs << xml::EndTag(cell_tag);
 		xs << xml::CR();
 		++cell;
 	}
-	xs << xml::EndTag("row");
+	xs << xml::EndTag(row_tag);
 	xs << xml::CR();
 }
 
diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h
index f42f5bc..217aaa5 100644
--- a/src/insets/InsetTabular.h
+++ b/src/insets/InsetTabular.h
@@ -24,6 +24,7 @@
 #ifndef INSET_TABULAR_H
 #define INSET_TABULAR_H
 
+#include "BufferParams.h"
 #include "Changes.h"
 #include "InsetText.h"
 
@@ -937,11 +938,8 @@ public:
 	/// auxiliary function for DocBook
 	void docbookRow(XMLStream &, row_type, OutputParams const &,
 					bool header = false) const;
-	/// auxiliary function for DocBook: export this row as HTML
-	void docbookRowAsHTML(XMLStream &, row_type, OutputParams const &,
-					bool header) const;
-	/// auxiliary function for DocBook: export this row as CALS
-	void docbookRowAsCALS(XMLStream &, row_type, OutputParams const &) const;
+	void docbookRow(XMLStream &, row_type, OutputParams const &,
+					bool header, BufferParams::TableOutput docbook_table_output) const;
 	///
 	docstring xhtmlRow(XMLStream & xs, row_type, OutputParams const &,
 	                   bool header = false) const;

commit ec016162470a08072ed59080efd357bc90a7efb1
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Apr 1 04:01:40 2022 +0200

    XHTML/DocBook: merge code duplicates for horizontal alignment.

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 092c868..761cb4c 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -3639,6 +3639,33 @@ std::string Tabular::getVAlignAsXmlAttribute(idx_type cell) const
 }
 
 
+std::string Tabular::getHAlignAsXmlAttribute(idx_type cell, bool is_xhtml) const
+{
+	// TODO: the Boolean flag isn't really clean; switch to an enum at some point.
+	switch (getAlignment(cell)) {
+	case LYX_ALIGN_LEFT:
+		return "align='left'";
+	case LYX_ALIGN_RIGHT:
+		return "align='right'";
+
+	default:
+		// HTML only supports left, right, and center.
+		if (is_xhtml)
+			return "align='center'";
+
+		// DocBook also has justify and decimal.
+		if (getAlignment(cell) == LYX_ALIGN_BLOCK) {
+			return "align='justify'";
+		} else if (getAlignment(cell) == LYX_ALIGN_DECIMAL) {
+			Language const *tlang = buffer().paragraphs().front().getParLanguage(buffer().params());
+			return "align='char' char='" + to_utf8(tlang->decimalSeparator()) + "'";
+		} else {
+			return "align='center'";
+		}
+	}
+}
+
+
 void Tabular::docbookRowAsHTML(XMLStream & xs, row_type row,
 		   OutputParams const & runparams, bool header) const
 {
@@ -3659,27 +3686,7 @@ void Tabular::docbookRowAsHTML(XMLStream & xs, row_type row,
 			attr << "style=\"width: " << hwidth << ";\" ";
 		}
 
-		attr << "align='";
-		switch (getAlignment(cell)) {
-		case LYX_ALIGN_BLOCK:
-			attr << "justify";
-			break;
-		case LYX_ALIGN_DECIMAL: {
-			Language const *tlang = buffer().paragraphs().front().getParLanguage(buffer().params());
-			attr << "char' char='" << to_utf8(tlang->decimalSeparator());
-		}
-			break;
-		case LYX_ALIGN_LEFT:
-			attr << "left";
-			break;
-		case LYX_ALIGN_RIGHT:
-			attr << "right";
-			break;
-		default:
-			attr << "center";
-			break;
-		}
-		attr << "' " << getVAlignAsXmlAttribute(cell);
+		attr << getHAlignAsXmlAttribute(cell, false) << " " << getVAlignAsXmlAttribute(cell);
 
 		if (isMultiColumn(cell))
 			attr << " colspan='" << columnSpan(cell) << "'";
@@ -3713,28 +3720,7 @@ void Tabular::docbookRowAsCALS(XMLStream & xs, row_type row,
 
 		stringstream attr;
 
-		attr << "align='";
-		switch (getAlignment(cell)) {
-		case LYX_ALIGN_BLOCK:
-			attr << "justify";
-			break;
-		case LYX_ALIGN_DECIMAL: {
-			Language const *tlang = buffer().paragraphs().front().getParLanguage(buffer().params());
-			attr << "char' char='" << to_utf8(tlang->decimalSeparator());
-		}
-			break;
-		case LYX_ALIGN_LEFT:
-			attr << "left";
-			break;
-		case LYX_ALIGN_RIGHT:
-			attr << "right";
-			break;
-
-		default:
-			attr << "center";
-			break;
-		}
-		attr << "' " << getVAlignAsXmlAttribute(cell);
+		attr << getHAlignAsXmlAttribute(cell, false) << " " << getVAlignAsXmlAttribute(cell);
 
 		if (isMultiColumn(cell))
 			attr << " colspan='" << columnSpan(cell) << "'";
@@ -3874,19 +3860,7 @@ docstring Tabular::xhtmlRow(XMLStream & xs, row_type row,
 			attr << "style=\"width: " << hwidth << ";\" ";
 		}
 
-		attr << "align='";
-		switch (getAlignment(cell)) {
-		case LYX_ALIGN_LEFT:
-			attr << "left";
-			break;
-		case LYX_ALIGN_RIGHT:
-			attr << "right";
-			break;
-		default:
-			attr << "center";
-			break;
-		}
-		attr << "' " << getVAlignAsXmlAttribute(cell);
+		attr << getHAlignAsXmlAttribute(cell, true) << " " << getVAlignAsXmlAttribute(cell);
 
 		if (isMultiColumn(cell))
 			attr << " colspan='" << columnSpan(cell) << "'";
diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h
index 8420a48..f42f5bc 100644
--- a/src/insets/InsetTabular.h
+++ b/src/insets/InsetTabular.h
@@ -947,6 +947,8 @@ public:
 	                   bool header = false) const;
 
 	/// Transforms the vertical alignment of the given cell as a prebaked XML attribute (for HTML and CALS).
+	std::string getHAlignAsXmlAttribute(idx_type cell, bool is_xhtml = true) const;
+	/// Transforms the vertical alignment of the given cell as a prebaked XML attribute (for HTML and CALS).
 	std::string getVAlignAsXmlAttribute(idx_type cell) const;
 
 	/// change associated Buffer

commit c7896cf922f8297ba9bbfc0fa13b99ccaf9168a5
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Apr 1 03:51:24 2022 +0200

    XHTML/DocBook: merge code duplicates for vertical alignment.

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 17d58dd..092c868 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -3626,6 +3626,19 @@ void Tabular::docbookRow(XMLStream & xs, row_type row,
 }
 
 
+std::string Tabular::getVAlignAsXmlAttribute(idx_type cell) const
+{
+	switch (getVAlignment(cell)) {
+	case LYX_VALIGN_TOP:
+		return "valign='top'";
+	case LYX_VALIGN_BOTTOM:
+		return "valign='bottom'";
+	case LYX_VALIGN_MIDDLE:
+		return "valign='middle'";
+	}
+}
+
+
 void Tabular::docbookRowAsHTML(XMLStream & xs, row_type row,
 		   OutputParams const & runparams, bool header) const
 {
@@ -3666,19 +3679,7 @@ void Tabular::docbookRowAsHTML(XMLStream & xs, row_type row,
 			attr << "center";
 			break;
 		}
-		attr << "'";
-		attr << " valign='";
-		switch (getVAlignment(cell)) {
-		case LYX_VALIGN_TOP:
-			attr << "top";
-			break;
-		case LYX_VALIGN_BOTTOM:
-			attr << "bottom";
-			break;
-		case LYX_VALIGN_MIDDLE:
-			attr << "middle";
-		}
-		attr << "'";
+		attr << "' " << getVAlignAsXmlAttribute(cell);
 
 		if (isMultiColumn(cell))
 			attr << " colspan='" << columnSpan(cell) << "'";
@@ -3733,19 +3734,7 @@ void Tabular::docbookRowAsCALS(XMLStream & xs, row_type row,
 			attr << "center";
 			break;
 		}
-		attr << "'";
-		attr << " valign='";
-		switch (getVAlignment(cell)) {
-		case LYX_VALIGN_TOP:
-			attr << "top";
-			break;
-		case LYX_VALIGN_BOTTOM:
-			attr << "bottom";
-			break;
-		case LYX_VALIGN_MIDDLE:
-			attr << "middle";
-		}
-		attr << "'";
+		attr << "' " << getVAlignAsXmlAttribute(cell);
 
 		if (isMultiColumn(cell))
 			attr << " colspan='" << columnSpan(cell) << "'";
@@ -3897,19 +3886,7 @@ docstring Tabular::xhtmlRow(XMLStream & xs, row_type row,
 			attr << "center";
 			break;
 		}
-		attr << "'";
-		attr << " valign='";
-		switch (getVAlignment(cell)) {
-		case LYX_VALIGN_TOP:
-			attr << "top";
-			break;
-		case LYX_VALIGN_BOTTOM:
-			attr << "bottom";
-			break;
-		case LYX_VALIGN_MIDDLE:
-			attr << "middle";
-		}
-		attr << "'";
+		attr << "' " << getVAlignAsXmlAttribute(cell);
 
 		if (isMultiColumn(cell))
 			attr << " colspan='" << columnSpan(cell) << "'";
diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h
index 645da68..8420a48 100644
--- a/src/insets/InsetTabular.h
+++ b/src/insets/InsetTabular.h
@@ -946,6 +946,9 @@ public:
 	docstring xhtmlRow(XMLStream & xs, row_type, OutputParams const &,
 	                   bool header = false) const;
 
+	/// Transforms the vertical alignment of the given cell as a prebaked XML attribute (for HTML and CALS).
+	std::string getVAlignAsXmlAttribute(idx_type cell) const;
+
 	/// change associated Buffer
 	void setBuffer(Buffer & buffer);
 	/// retrieve associated Buffer

commit 7b6afb23ec4540dd9bd9e8f238c52e00b812fd4e
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Apr 1 00:01:42 2022 +0200

    MathML: fix underbraces to be stretchable.
    
    Ticket: https://www.lyx.org/trac/ticket/12502
    
    Contributed by lynx

diff --git a/src/mathed/InsetMathDecoration.cpp b/src/mathed/InsetMathDecoration.cpp
index a5d616e..2bd52f4 100644
--- a/src/mathed/InsetMathDecoration.cpp
+++ b/src/mathed/InsetMathDecoration.cpp
@@ -210,14 +210,14 @@ namespace {
 		t["grave"] = Attributes(true, "`", "&#x0060;");
 		t["hat"] = Attributes(true, "ˆ", "&#x02C6;");
 		t["mathring"] = Attributes(true, "˚", "&#x02DA;");
-		t["overbrace"] = Attributes(true, "⏞", "&#xFE37;");
+		t["overbrace"] = Attributes(true, "⏞", "&#x23DE;");
 		t["overleftarrow"] = Attributes(true, "⟵", "&#x27F5;");
 		t["overleftrightarrow"] = Attributes(true, "⟷", "&#x27F7;");
 		t["overline"] = Attributes(true, "¯", "&#x00AF;");
 		t["overrightarrow"] = Attributes(true, "⟶", "&#x27F6;");
 		t["tilde"] = Attributes(true, "˜", "&#x02DC;");
 		t["underbar"] = Attributes(false, "_", "&#x0332;");
-		t["underbrace"] = Attributes(false, "⏟", "&#xFE38;");
+		t["underbrace"] = Attributes(false, "⏟", "&#x23DF;");
 		t["underleftarrow"] = Attributes(false, "⟵", "&#x27F5;");
 		t["underleftrightarrow"] = Attributes(false, "⟷", "&#x27F7;");
 		// this is the macron, again, but it works

commit 570be4760bf81a5236297ab8d4def66207cbd32e
Author: Kornel Benko <kornel at lyx.org>
Date:   Thu Mar 31 11:39:46 2022 +0200

    FindAdv: Amend a0daf5e5
    
    1.) Completed non backslashed '{' and '}' in regex in non format-search

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 73453cb..35fdd68 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -838,13 +838,14 @@ string correctRegex(string t, bool withformat)
 	 * and \{, \}, \[, \] => {, }, [, ]
 	 */
 	string s("");
-	regex wordre("(\\\\)*(\\\\(([A-Za-z]+)( |\\{\\})?|[\\[\\]\\{\\}]))");
+	regex wordre("(\\\\)*(\\\\(([A-Za-z]+|[\\{\\}])( |\\{\\})?|[\\[\\]\\{\\}]))");
 	size_t lastpos = 0;
 	smatch sub;
 	bool backslashed = false;
 	if (accents.empty())
 		buildAccentsMap();
 
+	//LYXERR0("correctRegex input '" << t << "'");
 	for (sregex_iterator it(t.begin(), t.end(), wordre), end; it != end; ++it) {
 		sub = *it;
 		string replace;
@@ -856,7 +857,6 @@ string correctRegex(string t, bool withformat)
 				replace = "\\";
 				{
 					// transforms '\backslash \{' into '\{'
-					// and '\{' into '{'
 					string next = t.substr(sub.position(2) + sub.str(2).length(), 2);
 					if ((next == "\\{") || (next == "\\}")) {
 						replace = "";
@@ -889,6 +889,10 @@ string correctRegex(string t, bool withformat)
 					}
 				}
 			}
+			else if (sub.str(4) == "{") // transforms '\{' into '{'
+				replace = "{";
+			else if (sub.str(4) == "}")
+                                replace = "}";
 			else {
 				AccentsIterator it_ac = accents.find(sub.str(4));
 				if (it_ac == accents.end()) {
@@ -908,6 +912,7 @@ string correctRegex(string t, bool withformat)
 		return t;
 	else if (lastpos < t.length())
 		s += t.substr(lastpos, t.length() - lastpos);
+	//LYXERR0("correctRegex output '" << s << "'");
 	return s;
 }
 

commit a0daf5e5512172fbde3c77cdbd4e399024c6e488
Author: Kornel Benko <kornel at lyx.org>
Date:   Wed Mar 30 22:15:22 2022 +0200

    FindAdv: Optimizing
    
    1.) Handle backslashed '{' and '}' in regex also in non format-search
    2.) Simplify a complex regex in format-search

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 53da1db..73453cb 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -854,7 +854,7 @@ string correctRegex(string t, bool withformat)
 		else {
 			if (sub.str(4) == "backslash") {
 				replace = "\\";
-				if (withformat) {
+				{
 					// transforms '\backslash \{' into '\{'
 					// and '\{' into '{'
 					string next = t.substr(sub.position(2) + sub.str(2).length(), 2);
@@ -868,13 +868,25 @@ string correctRegex(string t, bool withformat)
 				replace = "^";
 			else if (backslashed) {
 				backslashed = false;
-				if (withformat && (sub.str(3) == "{"))
-					replace = accents["braceleft"];
-				else if (withformat && (sub.str(3) == "}"))
-					replace = accents["braceright"];
+				if (withformat) {
+					if (sub.str(3) == "{")
+						replace = accents["braceleft"];
+					else if (sub.str(3) == "}")
+						replace = accents["braceright"];
+					else {
+						// else part should not exist
+						LASSERT(1, /**/);
+					}
+				}
 				else {
-					// else part should not exist
-					LASSERT(1, /**/);
+					if (sub.str(3) == "{")
+						replace = "\\{";
+					else if (sub.str(3) == "}")
+						replace = "\\}";
+					else {
+						// else part should not exist
+						LASSERT(1, /**/);
+					}
 				}
 			}
 			else {
@@ -1129,7 +1141,7 @@ static string latexNamesToUtf8(docstring strIn)
 	}
 	if (lastpos == 0)
 		add = addtmp;
-	else
+	else if (addtmp.length() > lastpos)
 		add += addtmp.substr(lastpos, addtmp.length() - lastpos);
 	LYXERR(Debug::FIND, "Adding to search string: '"
 			<< add << "'");
@@ -1954,12 +1966,10 @@ void Intervall::removeAccents()
   if (accents.empty())
     buildAccentsMap();
   static regex const accre("\\\\("
-      "([\\S]|[a-z]+)\\{[^\\{\\}]+\\}"
+      "([\\S]|[A-Za-z]+)\\{[^\\{\\}]+\\}"
       "|("
-	"(i|imath|jmath|cdot|[a-z]+(space)?)"
-	"|((backslash )?([lL]y[xX]|[tT]e[xX]|[lL]a[tT]e[xX]e?|lyxarrow))"
-	"|(textquote|brace|guillemot)(left|right)"
-	"|textasciicircum|mathcircumflex|sim|[A-Za-z]+"
+	 "(backslash ([lL]y[xX]|[tT]e[xX]|[lL]a[tT]e[xX]e?|lyxarrow))"
+	"|[A-Za-z]+"
       ")"
       "(?![a-zA-Z]))");
   smatch sub;

commit 6888c2670640e17808df6ab0a0a1c9112715c248
Author: Kornel Benko <kornel at lyx.org>
Date:   Tue Mar 29 18:00:13 2022 +0200

    FindAdv: Amend 23fe87bf:
    
    Write one line of code and produce 10 new errors :(

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 62be62e..53da1db 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1094,7 +1094,7 @@ static string latexNamesToUtf8(docstring strIn)
 	string addtmp = to_utf8(strIn);
 	static regex const rmAcc("(\\\\)*("
 					 "\\\\([A-Za-z]+\\{.\\})"	// e.g. "ddot{A}" == sub.str(3)
-					"|\\\\([A-Za-z]+)( |\\{\\})?"	// e.g. "LyX", "LyX{}", "LyX " == sub.str(5)
+					"|\\\\([A-Za-z]+)( |\\{\\})?"	// e.g. "LyX", "LyX{}", "LyX " == sub.str(4)
 					")"
 				);
 	size_t lastpos = 0;
@@ -1113,7 +1113,7 @@ static string latexNamesToUtf8(docstring strIn)
 			if (sub.length(3) > 0)
 				key = sub.str(3);
 			else
-				key = sub.str(5);
+				key = sub.str(4);
 			AccentsIterator it_ac = accents.find(key);
 			if (it_ac == accents.end()) {
 				replace = sub.str(2);
@@ -1129,6 +1129,8 @@ static string latexNamesToUtf8(docstring strIn)
 	}
 	if (lastpos == 0)
 		add = addtmp;
+	else
+		add += addtmp.substr(lastpos, addtmp.length() - lastpos);
 	LYXERR(Debug::FIND, "Adding to search string: '"
 			<< add << "'");
 	return add;

commit 23fe87bfc9c982bbe5233bbac3da76fe0a073e8f
Author: Kornel Benko <kornel at lyx.org>
Date:   Tue Mar 29 17:22:22 2022 +0200

    FindAdv: Amend f78ddc49, Added handling of accented chars like \ddot{a}
    
    Only important for search without format. The format search was already OK.

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index cda2bf0..62be62e 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1092,7 +1092,11 @@ static docstring buffer_to_latex(Buffer & buffer)
 static string latexNamesToUtf8(docstring strIn)
 {
 	string addtmp = to_utf8(strIn);
-	static regex const rmAcc("(\\\\)*(\\\\([A-Za-z]+)( |\\{\\})?)");
+	static regex const rmAcc("(\\\\)*("
+					 "\\\\([A-Za-z]+\\{.\\})"	// e.g. "ddot{A}" == sub.str(3)
+					"|\\\\([A-Za-z]+)( |\\{\\})?"	// e.g. "LyX", "LyX{}", "LyX " == sub.str(5)
+					")"
+				);
 	size_t lastpos = 0;
 	smatch sub;
 	string replace;
@@ -1101,11 +1105,15 @@ static string latexNamesToUtf8(docstring strIn)
 		buildAccentsMap();
 	for (sregex_iterator it_add(addtmp.begin(), addtmp.end(), rmAcc), end; it_add != end; ++it_add) {
 		sub = *it_add;
-		if ((sub.position(2) - sub.position(0)) % 3 == 1) {
+		if ((sub.position(2) - sub.position(0)) % 2 == 1) {
 			continue;
 		}
 		else {
-			string key = sub.str(3);
+			string key;
+			if (sub.length(3) > 0)
+				key = sub.str(3);
+			else
+				key = sub.str(5);
 			AccentsIterator it_ac = accents.find(key);
 			if (it_ac == accents.end()) {
 				replace = sub.str(2);

commit 77fd682acb34619adad26e9d8e96c886161ce827
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Mon Mar 28 21:44:40 2022 -0400

    Doc for inset-forall: how to open branch insets
    
    The functionality was mentioned, but it seems worth it to give the
    command explicitly, so it is seen how "Branch:<branch name>" is used
    to refer to the specific branch with name <branch name>.
    
    Additionally, tweak a phrase in doc for buffer-forall.

diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index ca8c5b7..ea60f53 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -642,7 +642,7 @@ void LyXAction::init()
                visible in any window.
  * \li Syntax: buffer-forall <LFUN-COMMAND>
  * \li Params: <LFUN-COMMAND>: The command to be applied to the buffers.
- * \li Sample: Close all Notes in buffers: \n
+ * \li Sample: Close all Notes in all buffers: \n
                buffer-forall inset-forall Note inset-toggle close \n
                Toggle change tracking on buffers: \n
                buffer-forall changes-track \n
@@ -2179,8 +2179,10 @@ void LyXAction::init()
                yellow note insets.
  * \li Sample: Remove all index insets: \n
                    inset-forall Index char-delete-forward force \n
-               Close all Notes (also works for a particular branch, for example): \n
+               Close all Notes: \n
                    inset-forall Note inset-toggle close \n
+               Open all branch insets of branch "myBranch": \n
+                   inset-forall Branch:myBranch inset-toggle open \n
                Transform all yellow notes to comments \n
                    inset-forall Note:Note inset-modify note Note Comment \n
                Try to put LyX in an infinite loop if there is at least a Note: \n

commit f78ddc49ad696d626866224bc4cae86c38cc1bba
Author: Kornel Benko <kornel at lyx.org>
Date:   Sun Mar 27 13:43:42 2022 +0200

    FindAdv: Amend 93b6fe2c, forgot about uppercase greek symbols

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index ae9d965..cda2bf0 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -838,7 +838,7 @@ string correctRegex(string t, bool withformat)
 	 * and \{, \}, \[, \] => {, }, [, ]
 	 */
 	string s("");
-	regex wordre("(\\\\)*(\\\\(([a-z]+) ?|[\\[\\]\\{\\}]))");
+	regex wordre("(\\\\)*(\\\\(([A-Za-z]+)( |\\{\\})?|[\\[\\]\\{\\}]))");
 	size_t lastpos = 0;
 	smatch sub;
 	bool backslashed = false;
@@ -880,7 +880,7 @@ string correctRegex(string t, bool withformat)
 			else {
 				AccentsIterator it_ac = accents.find(sub.str(4));
 				if (it_ac == accents.end()) {
-					replace = sub.str(3);
+					replace = sub.str(2);
 				}
 				else {
 					replace = it_ac->second;
@@ -1092,7 +1092,7 @@ static docstring buffer_to_latex(Buffer & buffer)
 static string latexNamesToUtf8(docstring strIn)
 {
 	string addtmp = to_utf8(strIn);
-	static regex const rmAcc("(\\\\)*(\\\\([a-z]+) ?)");
+	static regex const rmAcc("(\\\\)*(\\\\([A-Za-z]+)( |\\{\\})?)");
 	size_t lastpos = 0;
 	smatch sub;
 	string replace;
@@ -1943,9 +1943,15 @@ void Intervall::removeAccents()
 {
   if (accents.empty())
     buildAccentsMap();
-  static regex const accre("\\\\(([\\S]|grave|breve|ddot|dot|acute|dacute|mathring|check|hat|bar|tilde|subdot|ogonek|"
-         "cedilla|subring|textsubring|subhat|textsubcircum|subtilde|textsubtilde|dgrave|textdoublegrave|rcap|textroundcap|slashed)\\{[^\\{\\}]+\\}"
-      "|((i|imath|jmath|cdot|[a-z]+(space)?)|((backslash )?([lL]y[xX]|[tT]e[xX]|[lL]a[tT]e[xX]e?|lyxarrow))|(textquote|brace|guillemot)(left|right)|textasciicircum|mathcircumflex|sim)(?![a-zA-Z]))");
+  static regex const accre("\\\\("
+      "([\\S]|[a-z]+)\\{[^\\{\\}]+\\}"
+      "|("
+	"(i|imath|jmath|cdot|[a-z]+(space)?)"
+	"|((backslash )?([lL]y[xX]|[tT]e[xX]|[lL]a[tT]e[xX]e?|lyxarrow))"
+	"|(textquote|brace|guillemot)(left|right)"
+	"|textasciicircum|mathcircumflex|sim|[A-Za-z]+"
+      ")"
+      "(?![a-zA-Z]))");
   smatch sub;
   for (sregex_iterator itacc(par.begin(), par.end(), accre), end; itacc != end; ++itacc) {
     sub = *itacc;

commit 7d053393a5f246ed0d85c59f1eebc690b622b559
Author: Kornel Benko <kornel at lyx.org>
Date:   Sat Mar 26 19:38:55 2022 +0100

    Cmake key-tests: Adapted to changed shortcuts

diff --git a/development/autotests/findadv-08-in.txt b/development/autotests/findadv-08-in.txt
index 6ce02d4..2cd281b 100644
--- a/development/autotests/findadv-08-in.txt
+++ b/development/autotests/findadv-08-in.txt
@@ -29,7 +29,7 @@ KK: [\\w]* a
 # select whole words
 KK: \Ae
 # search next
-KK: \Al
+KK: \A>
 # The following Escape is too fast
 Sleep 1
 KK: \[Escape]
diff --git a/development/autotests/findadv-17-in.txt b/development/autotests/findadv-17-in.txt
index dd3c30a..57c222d 100644
--- a/development/autotests/findadv-17-in.txt
+++ b/development/autotests/findadv-17-in.txt
@@ -1,6 +1,6 @@
 # Finding consecutive macros in math mode
 #
-Lang it_IT.utf8
+Lang sk_SK.utf8
 CO: findadv-17.ctrl
 TestBegin test.lyx -dbg key,find > findadv-17.loga.txt 2>&1
 CN: Part 1
@@ -17,7 +17,7 @@ CP: Key (queried) [action=buffer-begin][Ctrl+Home]
 KK: \CF
 KK: \[Delete]
 # Uncheck ignore format
-KK: \Az\Ag\Ae
+KK: \At\Ai\Ah
 KK: \CF
 KK: \Cm\\beta\\alpha \[Return]
 CP: Putting selection at .*idx: 0 par: 0 pos: 0\n.*idx: 0 par: 0 pos: 1\n with len: 2
diff --git a/development/autotests/findadv-18-in.txt b/development/autotests/findadv-18-in.txt
index 61ec67d..f438991 100644
--- a/development/autotests/findadv-18-in.txt
+++ b/development/autotests/findadv-18-in.txt
@@ -2,7 +2,7 @@
 UseShortcut "C-F20" "regexp-mode"
 PrepareShortcuts
 
-Lang it_IT.utf8
+Lang sk_SK.utf8
 CO: findadv-18.ctrl
 TestBegin test.lyx -dbg key,find > findadv-18.loga.txt 2>&1
 KK: a b c\C\[Home]

commit 93b6fe2c480b597f890bb77ce64bb650d979d2c3
Author: Kornel Benko <kornel at lyx.org>
Date:   Sat Mar 26 19:32:33 2022 +0100

    FindAdv: Use always converted latex macros
    
    In some situation the macros are not used with their unicode
    representation. For instance all greek characters are used
    as \alpha, \beta, ... in the latex output.
    For the search it is more convenient to use the corresponding UTF-8 codes.

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 025479e..ae9d965 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -917,7 +917,7 @@ string escape_for_regex(string s, bool withformat)
 			if (lastpos == s.size())
 				break;
 		}
-		size_t end_pos = s.find("\\endregexp{", regex_pos + 8);
+		size_t end_pos = s.find("\\endregexp", regex_pos + 8);
 		result += correctRegex(s.substr(regex_pos + 8, end_pos -(regex_pos + 8)), withformat);
 		lastpos = end_pos + 13;
 	}
@@ -1089,6 +1089,42 @@ static docstring buffer_to_latex(Buffer & buffer)
 	return ods.str();
 }
 
+static string latexNamesToUtf8(docstring strIn)
+{
+	string addtmp = to_utf8(strIn);
+	static regex const rmAcc("(\\\\)*(\\\\([a-z]+) ?)");
+	size_t lastpos = 0;
+	smatch sub;
+	string replace;
+	string add("");
+	if (accents.empty())
+		buildAccentsMap();
+	for (sregex_iterator it_add(addtmp.begin(), addtmp.end(), rmAcc), end; it_add != end; ++it_add) {
+		sub = *it_add;
+		if ((sub.position(2) - sub.position(0)) % 3 == 1) {
+			continue;
+		}
+		else {
+			string key = sub.str(3);
+			AccentsIterator it_ac = accents.find(key);
+			if (it_ac == accents.end()) {
+				replace = sub.str(2);
+			}
+			else {
+				replace = it_ac->second;
+			}
+		}
+		if (lastpos < (size_t) sub.position(2))
+			add += addtmp.substr(lastpos, sub.position(2) - lastpos);
+		add += replace;
+		lastpos = sub.position(2) + sub.length(2);
+	}
+	if (lastpos == 0)
+		add = addtmp;
+	LYXERR(Debug::FIND, "Adding to search string: '"
+			<< add << "'");
+	return add;
+}
 
 static docstring stringifySearchBuffer(Buffer & buffer, FindAndReplaceOptions const & opt)
 {
@@ -1113,19 +1149,17 @@ static docstring stringifySearchBuffer(Buffer & buffer, FindAndReplaceOptions co
 		if (ignoreFormats.getNonContent()) {
 			runparams.for_searchAdv |= OutputParams::SearchNonOutput;
 		}
+		string t("");
 		for (pos_type pit = pos_type(0); pit < (pos_type)buffer.paragraphs().size(); ++pit) {
 			Paragraph const & par = buffer.paragraphs().at(pit);
+			string add = latexNamesToUtf8(par.asString(pos_type(0), par.size(),
+								option,
+								&runparams));
 			LYXERR(Debug::FIND, "Adding to search string: '"
-			       << par.asString(pos_type(0), par.size(),
-					       option,
-					       &runparams)
-			       << "'");
-			str += par.asString(pos_type(0), par.size(),
-					    option,
-					    &runparams);
+				<< add << "'");
+			t += add;
 		}
 		// Even in ignore-format we have to remove "\text{}, \lyxmathsym{}" parts
-		string t = to_utf8(str);
 		while (regex_replace(t, t, "\\\\(text|lyxmathsym|ensuremath)\\{([^\\}]*)\\}", "$2"));
 		str = from_utf8(t);
 	}
@@ -1911,7 +1945,7 @@ void Intervall::removeAccents()
     buildAccentsMap();
   static regex const accre("\\\\(([\\S]|grave|breve|ddot|dot|acute|dacute|mathring|check|hat|bar|tilde|subdot|ogonek|"
          "cedilla|subring|textsubring|subhat|textsubcircum|subtilde|textsubtilde|dgrave|textdoublegrave|rcap|textroundcap|slashed)\\{[^\\{\\}]+\\}"
-      "|((i|imath|jmath|cdot|[a-z]+space)|((backslash )?([lL]y[xX]|[tT]e[xX]|[lL]a[tT]e[xX]e?|lyxarrow))|(textquote|brace|guillemot)(left|right)|textasciicircum|mathcircumflex|sim)(?![a-zA-Z]))");
+      "|((i|imath|jmath|cdot|[a-z]+(space)?)|((backslash )?([lL]y[xX]|[tT]e[xX]|[lL]a[tT]e[xX]e?|lyxarrow))|(textquote|brace|guillemot)(left|right)|textasciicircum|mathcircumflex|sim)(?![a-zA-Z]))");
   smatch sub;
   for (sregex_iterator itacc(par.begin(), par.end(), accre), end; itacc != end; ++itacc) {
     sub = *itacc;
@@ -3862,10 +3896,10 @@ docstring stringifyFromCursor(DocIterator const & cur, int len)
 			runparams.for_searchAdv |= OutputParams::SearchNonOutput;
 		}
 		LYXERR(Debug::FIND, "Stringifying with cur: "
-		       << cur << ", from pos: " << cur.pos() << ", end: " << end);
-		return par.asString(cur.pos(), end,
-			option,
-			&runparams);
+			<< cur << ", from pos: " << cur.pos() << ", end: " << end);
+		return from_utf8(latexNamesToUtf8(par.asString(cur.pos(), end,
+								option,
+								&runparams)));
 	} else if (cur.inMathed()) {
 		CursorSlice cs = cur.top();
 		MathData md = cs.cell();
@@ -3874,10 +3908,9 @@ docstring stringifyFromCursor(DocIterator const & cur, int len)
 			 ? md.end()
 			 : md.begin() + cs.pos() + len );
 		MathData md2;
-		for (MathData::const_iterator it = md.begin() + cs.pos();
-		     it != it_end; ++it)
+		for (MathData::const_iterator it = md.begin() + cs.pos(); it != it_end; ++it)
 			md2.push_back(*it);
-		docstring s = asString(md2);
+		docstring s = from_utf8(latexNamesToUtf8(asString(md2)));
 		LYXERR(Debug::FIND, "Stringified math: '" << s << "'");
 		return s;
 	}

commit b67884448135114a46383b4ced18bdd7cc74743d
Author: Pavel Sanda <sanda at lyx.org>
Date:   Sat Mar 26 11:58:49 2022 +0100

    * RELEASE-NOTES

diff --git a/lib/RELEASE-NOTES b/lib/RELEASE-NOTES
index 7398553..97c740c 100644
--- a/lib/RELEASE-NOTES
+++ b/lib/RELEASE-NOTES
@@ -218,6 +218,8 @@
        (or xsltproc) you can use configure parameter --without-saxon to avoid
        installation of this library.
 
+* bash_completion script was updated for a newer syntax.
+
 
 !!Known issues in version 2.4.0
 

commit b1db663d99255e2223530c84f53fbdadf2035dce
Author: Pavel Sanda <sanda at lyx.org>
Date:   Sat Mar 26 11:16:38 2022 +0100

    * bash_completion - outdated syntax
    
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1008257

diff --git a/lib/scripts/bash_completion b/lib/scripts/bash_completion
index 868884c..4d7b914 100644
--- a/lib/scripts/bash_completion
+++ b/lib/scripts/bash_completion
@@ -1,7 +1,7 @@
 # lyx(1) completion 
 # Copyleft 2010 Cengiz Gunay <cengique at users.sf.net>
 
-have lyx &&
+_have lyx &&
 _lyx()
 {
         local cur g last
@@ -65,5 +65,4 @@ _lyx()
 	# turn it off if necessary
 	test $g -eq 0 && shopt -u extglob
 
-}
-[ "${have:-}" ] && complete -F _lyx $filenames lyx
+} && complete -F _lyx $filenames lyx

commit 8380034203523ae8035015eb6d4c3f594e704126
Author: Kornel Benko <kornel at lyx.org>
Date:   Fri Mar 25 23:00:59 2022 +0100

    AdvFind: Adapt a testfile
    
    Change [a-z]* to [a-z]+ . This omits finds of empty strings.

diff --git a/development/autotests/findadv-re-04-in.txt b/development/autotests/findadv-re-04-in.txt
index e18d5aa..ef7c08f 100644
--- a/development/autotests/findadv-re-04-in.txt
+++ b/development/autotests/findadv-re-04-in.txt
@@ -28,13 +28,13 @@ CO: >> findadv-re-04.ctrl
 CN: Part 2
 CP: Init key
 TestBegin test.lyx -dbg key,find >> findadv-re-04.loga.txt 2>&1
-CN: Case insensitive, format not ignored [a-z]*
+CN: Case insensitive, format not ignored [a-z]+
 KK: \CF
 # Uncheck ignore format (depends on IT language)
 KK: \At\Ai\Ah
 KK: \CF
 KK: \Ce
-KK: \C\[F20]\\b[a-z]*\\b\[Return]\[Return]\[Return]
+KK: \C\[F20]\\b[a-z]+\\b\[Return]\[Return]\[Return]
 Cr: ^.*Putting 
 CP: Putting selection at .*idx: 0 par: 0 pos: 16\n with len: 3
 Cr: ^.*Putting 
@@ -47,12 +47,12 @@ CN: Part 3
 CP: Init key
 TestBegin test.lyx -dbg key,find >> findadv-re-04.loga.txt 2>&1
 
-CN: Case sensitive, format not ignored [a-z]*
+CN: Case sensitive, format not ignored [a-z]+
 KK: \CF
 KK: \At\Ai\Ah
 KK: \CF
 KK: \Ce
-KK: \Az\[Tab]\C\[F20][a-z]+\[Return]\[Return]\[Return]\[Return]
+KK: \Az\[Tab]\[Tab]\C\[F20][a-z]+\[Return]\[Return]\[Return]\[Return]
 Cr: ^.*Putting
 CP: Putting selection at .*idx: 0 par: 0 pos: 17\n with len: 2
 Cr: ^.*Putting
@@ -74,7 +74,7 @@ KK: \CF
 KK: \At\Ai\Ah
 KK: \CF
 KK: \Ce
-KK: \Az\[Tab]\C\[F20][A-Z]+\[Return]\[Return]\[Return]
+KK: \Az\[Tab]\[Tab]\C\[F20][A-Z]+\[Return]\[Return]\[Return]
 Cr: ^.*Putting
 CP: Putting selection at .*idx: 0 par: 0 pos: 16\n with len: 1
 Cr: ^.*Putting

commit a537fc4ab18d28c86b8fa1848473397fb83ebb38
Author: Kornel Benko <kornel at lyx.org>
Date:   Thu Mar 24 15:04:01 2022 +0100

    Update sk.po
    
    Correct some shortcuts

diff --git a/po/sk.po b/po/sk.po
index 077e8cd..73afca3 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX-2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-03-13 23:17+0100\n"
-"PO-Revision-Date: 2022-03-13 22:21+0000\n"
+"POT-Creation-Date: 2022-03-22 11:42+0100\n"
+"PO-Revision-Date: 2022-03-24 10:17+0000\n"
 "Last-Translator: Kornel Benko <kornel at lyx.org>\n"
 "Language-Team: Slovak <kornel at lyx.org>\n"
 "Language: sk\n"
@@ -1583,7 +1583,7 @@ msgstr "Shift+Enter hľadať naspäť priamo"
 
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:140
 msgid "Search &backwards"
-msgstr "Hľada&ť naspäť"
+msgstr "spätné v&yhľadávanie"
 
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:150
 msgid "Restrict search to whole words only"
@@ -1600,7 +1600,7 @@ msgstr "Dbať aj na veľkosť písmen"
 
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:163
 msgid "Case &sensitive"
-msgstr "&A≠a"
+msgstr "Ro&zlíš veľké/malé"
 
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:205
 #: src/frontends/qt/FindAndReplace.cpp:648
@@ -2889,7 +2889,7 @@ msgstr "Filtrovať aj podľa veľkosti písmen"
 
 #: src/frontends/qt/ui/LyXFilesUi.ui:75 src/frontends/qt/ui/RefUi.ui:71
 msgid "Case Sensiti&ve"
-msgstr "&A≠a"
+msgstr "Ro&zlíš veľké/malé"
 
 #: src/frontends/qt/ui/LyXFilesUi.ui:110
 msgid "The available language(s) of the selected file will be displayed here"
@@ -5198,9 +5198,9 @@ msgstr "Nájdi ďalší výskyt (Enter)"
 msgid "Treat uppercase/lowercase writing as distinct"
 msgstr "Veľkosť písmen je jednoznačná"
 
-#: src/frontends/qt/ui/SearchUi.ui:207 src/frontends/qt/GuiSearch.cpp:99
+#: src/frontends/qt/GuiSearch.cpp:100 src/frontends/qt/ui/SearchUi.ui:231
 msgid "&Case sensitive[[search]]"
-msgstr "&A≠a"
+msgstr "R&ozlíš veľké/malé"
 
 #: src/frontends/qt/ui/SearchUi.ui:214
 msgid "Match whole words only"
@@ -31550,7 +31550,7 @@ msgstr "Re&gulárny výraz"
 
 #: src/frontends/qt/GuiCitation.cpp:110
 msgid "Case se&nsitive"
-msgstr "&A≠a"
+msgstr "Ro&zlíš veľké/malé"
 
 #: src/frontends/qt/GuiCitation.cpp:112
 msgid "Search as you &type"

commit 49c52d4c8e1cdfacee22bd55595ac53906538221
Author: Kornel Benko <kornel at lyx.org>
Date:   Tue Mar 22 10:43:23 2022 +0100

    Indentation

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 98c254d..025479e 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -3400,9 +3400,9 @@ void MatchStringAdv::CreateRegexp(FindAndReplaceOptions const & opt, string rege
 				balanced--;
 				if (balanced < 0)
 					break;
-				}
-				skip = 1;
 			}
+			skip = 1;
+		}
 		if (balanced != 0) {
 			regexIsValid = false;
 			regexError = "Unbalanced curly brackets in regexp \"" + regexp_str + "\"";

commit e6d998d33cea38fc917f7e604d8b6d6071070a34
Author: Kornel Benko <kornel at lyx.org>
Date:   Sun Mar 20 11:33:12 2022 +0100

    FindAdv: If possible use unicode instead of math command when searching
    
    Wrong behaviour before this commit:
    Open new lyx-file
    insert
    	unicode-insert 0x025c 0x1d08
    Open adv-find dialog
    search for unicode 0x025c OK
    search for unicode 0x1d08 OK
    search with regex for unicode 0x025c OK
    search with regex for unicode 0x1d08 ==> NOT OK (because we are searching for \textrevepsilon
    	and this was mapped to 0x025c

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index c187e10..98c254d 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -917,7 +917,7 @@ string escape_for_regex(string s, bool withformat)
 			if (lastpos == s.size())
 				break;
 		}
-		size_t end_pos = s.find("\\endregexp{}}", regex_pos + 8);
+		size_t end_pos = s.find("\\endregexp{", regex_pos + 8);
 		result += correctRegex(s.substr(regex_pos + 8, end_pos -(regex_pos + 8)), withformat);
 		lastpos = end_pos + 13;
 	}
@@ -3519,6 +3519,7 @@ MatchStringAdv::MatchStringAdv(lyx::Buffer & buf, FindAndReplaceOptions & opt)
 		string lead_as_regexp;
 		if (lead_size > 0) {
 			lead_as_regexp = string2regex(par_as_string.substr(0, lead_size));
+			(void)regex_replace(par_as_string_nolead, par_as_string_nolead, "\\$$", "");
 			(void)regex_replace(par_as_string_nolead, par_as_string_nolead, "}$", "");
 			par_as_string = par_as_string_nolead;
 			LYXERR(Debug::FIND, "lead_as_regexp is '" << lead_as_regexp << "'");
diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp
index 8b63c73..805f84c 100644
--- a/src/mathed/InsetMathHull.cpp
+++ b/src/mathed/InsetMathHull.cpp
@@ -2357,12 +2357,19 @@ int InsetMathHull::plaintext(odocstringstream & os,
 	odocstringstream oss;
 	otexrowstream ots(oss);
 	Encoding const * const enc = encodings.fromLyXName("utf8");
-	TeXMathStream wi(ots, false, true, TeXMathStream::wsDefault, enc);
 
+	TeXMathStream::OutputType ot;
+	if (op.for_searchAdv == OutputParams::NoSearch)
+		ot = TeXMathStream::wsDefault;
+	else
+		ot = TeXMathStream::wsSearchAdv;
 	// Fix Bug #6139
-	if (type_ == hullRegexp)
+	if (type_ == hullRegexp) {
+		TeXMathStream wi(ots, false, true, ot, enc);
 		write(wi);
+	}
 	else {
+		TeXMathStream wi(ots, false, true, ot, enc);
 		for (row_type r = 0; r < nrows(); ++r) {
 			for (col_type c = 0; c < ncols(); ++c)
 				wi << (c == 0 ? "" : "\t") << cell(index(r, c));
diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp
index 7241e0b..4f21924 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -358,8 +358,14 @@ void InsetMathNest::normalize(NormalStream & os) const
 
 void InsetMathNest::latex(otexstream & os, OutputParams const & runparams) const
 {
-	TeXMathStream wi(os, runparams.moving_arg, true,
-	                 runparams.dryrun ? TeXMathStream::wsDryrun : TeXMathStream::wsDefault,
+	TeXMathStream::OutputType ot;
+	if (runparams.for_searchAdv != OutputParams::NoSearch)
+		ot = TeXMathStream::wsSearchAdv;
+	else if (runparams.dryrun)
+		ot = TeXMathStream::wsDryrun;
+	else
+		ot = TeXMathStream::wsDefault;
+	TeXMathStream wi(os, runparams.moving_arg, true, ot,
 	                 runparams.encoding);
 	wi.strikeoutMath(runparams.inDeletedInset);
 	if (runparams.inulemcmd) {
diff --git a/src/mathed/MathExtern.cpp b/src/mathed/MathExtern.cpp
index 5c182c7..527543a 100644
--- a/src/mathed/MathExtern.cpp
+++ b/src/mathed/MathExtern.cpp
@@ -1425,6 +1425,10 @@ void writeString(docstring const & s, TeXMathStream & os)
 		os << (os.asciiOnly() ? escape(s) : s);
 		return;
 	}
+	else if (os.output() == TeXMathStream::wsSearchAdv) {
+		os << s;
+		return;
+	}
 
 	if (os.lockedMode()) {
 		bool space;
diff --git a/src/mathed/MathStream.h b/src/mathed/MathStream.h
index d6a35c5..6d0399e 100644
--- a/src/mathed/MathStream.h
+++ b/src/mathed/MathStream.h
@@ -38,7 +38,8 @@ public:
 	enum OutputType {
 		wsDefault,
 		wsDryrun,
-		wsPreview
+		wsPreview,
+		wsSearchAdv
 	};
 	///
 	enum UlemCmdType {

commit 32de59d84a066f0a00f4a80fc9377e9d45ccea2c
Author: jpc <jpc at lyx.org>
Date:   Thu Mar 17 18:26:00 2022 +0100

               Update fr.po

diff --git a/po/fr.gmo b/po/fr.gmo
index 5c127d1..59bfefa 100644
Binary files a/po/fr.gmo and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
index 8c48613..4862d8e 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -362,8 +362,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-20 10:02+0100\n"
-"PO-Revision-Date: 2022-02-20 10:06+0100\n"
+"POT-Creation-Date: 2022-03-17 18:13+0100\n"
+"PO-Revision-Date: 2022-03-17 18:23+0100\n"
 "Last-Translator: Jean-Pierre Chrétien <jeanpierre.chretien at free.fr>\n"
 "Language-Team: lyxfr\n"
 "Language: fr\n"
@@ -3970,10 +3970,10 @@ msgstr "Double"
 #: src/frontends/qt/GuiHSpace.cpp:57 src/frontends/qt/GuiPrefs.cpp:816
 #: src/frontends/qt/GuiPrefs.cpp:844 src/frontends/qt/GuiPrefs.cpp:871
 #: src/frontends/qt/GuiPrefs.cpp:2329 src/frontends/qt/GuiPrefs.cpp:2352
-#: src/frontends/qt/GuiPrintNomencl.cpp:51 src/insets/InsetInfo.cpp:236
-#: src/insets/InsetInfo.cpp:246 src/insets/InsetInfo.cpp:250
-#: src/insets/InsetInfo.cpp:259 src/insets/InsetInfo.cpp:321
-#: src/insets/InsetInfo.cpp:343
+#: src/frontends/qt/GuiPrintNomencl.cpp:51 src/insets/InsetInfo.cpp:237
+#: src/insets/InsetInfo.cpp:247 src/insets/InsetInfo.cpp:251
+#: src/insets/InsetInfo.cpp:260 src/insets/InsetInfo.cpp:322
+#: src/insets/InsetInfo.cpp:344
 msgid "Custom"
 msgstr "Réglable"
 
@@ -4751,7 +4751,7 @@ msgstr "Ac&tiver"
 msgid "Ctrl"
 msgstr "Ctrl"
 
-#: src/frontends/qt/ui/PrefInputUi.ui:249 src/insets/InsetInfo.cpp:863
+#: src/frontends/qt/ui/PrefInputUi.ui:249 src/insets/InsetInfo.cpp:892
 msgid "Shift"
 msgstr "Maj"
 
@@ -6662,7 +6662,7 @@ msgid "Footnote"
 msgstr "Note de bas de page"
 
 #: lib/citeengines/biblatex-natbib.citeengine:144
-#: lib/citeengines/biblatex.citeengine:134
+#: lib/citeengines/biblatex.citeengine:134 lib/layouts/stdinsets.inc:51
 msgid "Foot"
 msgstr "Bas de page"
 
@@ -7702,7 +7702,7 @@ msgstr "Transactions IEEE"
 #: lib/layouts/scrlttr2.layout:19 lib/layouts/siamltex.layout:37
 #: lib/layouts/sigplanconf.layout:41 lib/layouts/simplecv.layout:18
 #: lib/layouts/slides.layout:61 lib/layouts/stdclass.inc:28
-#: lib/layouts/stdinsets.inc:688 lib/layouts/stdletter.inc:12
+#: lib/layouts/stdinsets.inc:689 lib/layouts/stdletter.inc:12
 #: lib/layouts/svcommon.inc:26 lib/layouts/tufte-book.layout:35
 #: src/insets/InsetRef.cpp:599
 msgid "Standard"
@@ -7775,7 +7775,7 @@ msgstr "minuscules"
 #: lib/layouts/siamltex.layout:222 lib/layouts/sigplanconf.layout:150
 #: lib/layouts/stdtitle.inc:37 lib/layouts/svcommon.inc:370
 #: lib/layouts/svmult.layout:89 lib/layouts/svprobth.layout:93
-#: lib/layouts/tufte-book.layout:55 src/insets/InsetInfo.cpp:283
+#: lib/layouts/tufte-book.layout:55 src/insets/InsetInfo.cpp:284
 msgid "Author"
 msgstr "Auteur"
 
@@ -8337,7 +8337,7 @@ msgstr "SousSousSection"
 #: lib/layouts/scrclass.inc:240 lib/layouts/scrlettr.layout:203
 #: lib/layouts/scrlttr2.layout:322 lib/layouts/siamltex.layout:246
 #: lib/layouts/stdtitle.inc:62 lib/layouts/svcommon.inc:406
-#: lib/layouts/tufte-book.layout:60 src/insets/InsetInfo.cpp:284
+#: lib/layouts/tufte-book.layout:60 src/insets/InsetInfo.cpp:285
 msgid "Date"
 msgstr "Date"
 
@@ -8784,7 +8784,7 @@ msgstr "American Chemical Society (ACS)"
 #: lib/layouts/scrclass.inc:142 lib/layouts/scrclass.inc:155
 #: lib/layouts/scrclass.inc:168 lib/layouts/scrclass.inc:324
 #: lib/layouts/scrclass.inc:349 lib/layouts/siamltex.layout:206
-#: lib/layouts/simplecv.layout:52 lib/layouts/stdinsets.inc:695
+#: lib/layouts/simplecv.layout:52 lib/layouts/stdinsets.inc:696
 #: lib/layouts/stdsections.inc:32 lib/layouts/stdsections.inc:76
 #: lib/layouts/stdsections.inc:117 lib/layouts/tufte-book.layout:98
 #: lib/layouts/tufte-book.layout:129 lib/layouts/tufte-handout.layout:40
@@ -9780,7 +9780,7 @@ msgstr "Section-spéciale*"
 
 #: lib/layouts/amsart.layout:98 lib/layouts/beamer.layout:336
 #: lib/layouts/beamer.layout:398 lib/layouts/beamer.layout:460
-#: lib/layouts/memoir.layout:248 lib/layouts/stdinsets.inc:713
+#: lib/layouts/memoir.layout:248 lib/layouts/stdinsets.inc:714
 #: lib/layouts/stdstarsections.inc:15 lib/layouts/stdstarsections.inc:30
 #: lib/layouts/stdstarsections.inc:45 lib/layouts/stdstarsections.inc:60
 #: lib/layouts/stdstarsections.inc:75 lib/layouts/stdstarsections.inc:90
@@ -10000,13 +10000,13 @@ msgid "Centered"
 msgstr "Centré"
 
 #: lib/layouts/apa.layout:285 lib/layouts/apax.inc:384
-#: lib/layouts/stdinsets.inc:689 src/insets/InsetCaption.cpp:436
+#: lib/layouts/stdinsets.inc:690 src/insets/InsetCaption.cpp:436
 msgid "standard"
 msgstr "standard"
 
 #: lib/layouts/apa.layout:292 lib/layouts/apax.inc:391
 #: lib/layouts/scrclass.inc:325 lib/layouts/scrclass.inc:350
-#: lib/layouts/stdinsets.inc:696
+#: lib/layouts/stdinsets.inc:697
 msgid "The caption as it appears in the list of figures/tables"
 msgstr "La légende telle qu'elle apparaîtra dans la liste des figures/tableaux"
 
@@ -17384,10 +17384,6 @@ msgstr "Listings"
 msgid "Margin"
 msgstr "Marge"
 
-#: lib/layouts/stdinsets.inc:51
-msgid "foot"
-msgstr "bas"
-
 #: lib/layouts/stdinsets.inc:177
 msgid "Greyedout"
 msgstr "Grisée"
@@ -17418,23 +17414,23 @@ msgstr "Idx"
 msgid "Argument"
 msgstr "Argument"
 
-#: lib/layouts/stdinsets.inc:715
+#: lib/layouts/stdinsets.inc:716
 msgid "unlabelled"
 msgstr "sans étiquette"
 
-#: lib/layouts/stdinsets.inc:722
+#: lib/layouts/stdinsets.inc:723
 msgid "Preview"
 msgstr "Aperçu"
 
-#: lib/layouts/stdinsets.inc:756 lib/layouts/stdinsets.inc:764
+#: lib/layouts/stdinsets.inc:757 lib/layouts/stdinsets.inc:765
 msgid "see equation[[nomencl]]"
 msgstr "voir équation"
 
-#: lib/layouts/stdinsets.inc:757 lib/layouts/stdinsets.inc:765
+#: lib/layouts/stdinsets.inc:758 lib/layouts/stdinsets.inc:766
 msgid "page[[nomencl]]"
 msgstr "page"
 
-#: lib/layouts/stdinsets.inc:758 lib/layouts/stdinsets.inc:766
+#: lib/layouts/stdinsets.inc:759 lib/layouts/stdinsets.inc:767
 msgid "Nomenclature[[output]]"
 msgstr "Liste des symboles"
 
@@ -19963,7 +19959,7 @@ msgid "Cut"
 msgstr "Couper"
 
 #: lib/ui/stdcontext.inc:62 lib/ui/stdcontext.inc:376 lib/ui/stdmenus.inc:109
-#: lib/ui/stdtoolbars.inc:87 src/BufferView.cpp:2269
+#: lib/ui/stdtoolbars.inc:87 src/BufferView.cpp:2270
 msgid "Copy"
 msgstr "Copier"
 
@@ -22149,16 +22145,16 @@ msgid "Toggle right line"
 msgstr "(Dés)Activer la bordure droite"
 
 #: lib/ui/stdtoolbars.inc:167
-msgid "Set border lines"
-msgstr "Mettre les bordures"
+msgid "Toggle border lines"
+msgstr "(Dés)activer les bordures"
 
 #: lib/ui/stdtoolbars.inc:168
-msgid "Set all lines"
-msgstr "Mettre toutes les bordures"
+msgid "Toggle inner lines"
+msgstr "(Dés)activer les filets intérieurs"
 
 #: lib/ui/stdtoolbars.inc:169
-msgid "Set inner lines"
-msgstr "Mettre les bordures"
+msgid "Toggle all lines"
+msgstr "(Dés)activer tous le filets"
 
 #: lib/ui/stdtoolbars.inc:170
 msgid "Unset all lines"
@@ -27846,7 +27842,7 @@ msgstr "échec conversion iconv"
 msgid "conversion failed"
 msgstr "échec conversion"
 
-#: src/Buffer.cpp:1917 src/insets/InsetGraphics.cpp:905
+#: src/Buffer.cpp:1917 src/insets/InsetGraphics.cpp:919
 msgid "Uncodable character in file path"
 msgstr "Caractère incodable dans le chemin d'accès au fichier"
 
@@ -27953,13 +27949,13 @@ msgid "Error viewing the output file."
 msgstr "Erreur lors de l'affichage du fichier imprimable."
 
 #: src/Buffer.cpp:3370 src/frontends/qt/GuiView.cpp:2706
-#: src/frontends/qt/Validator.cpp:241 src/insets/ExternalSupport.cpp:394
-#: src/insets/InsetGraphics.cpp:692 src/insets/InsetInclude.cpp:606
+#: src/frontends/qt/Validator.cpp:245 src/insets/ExternalSupport.cpp:394
+#: src/insets/InsetGraphics.cpp:693 src/insets/InsetInclude.cpp:606
 msgid "Invalid filename"
 msgstr "Nom de fichier invalide"
 
 #: src/Buffer.cpp:3371 src/insets/ExternalSupport.cpp:395
-#: src/insets/InsetGraphics.cpp:693 src/insets/InsetInclude.cpp:607
+#: src/insets/InsetGraphics.cpp:694 src/insets/InsetInclude.cpp:607
 msgid ""
 "The following filename will cause troubles when running the exported file "
 "through LaTeX: "
@@ -27968,12 +27964,12 @@ msgstr ""
 "exporté sera traité avec LaTeX : "
 
 #: src/Buffer.cpp:3376 src/insets/ExternalSupport.cpp:400
-#: src/insets/InsetGraphics.cpp:700 src/insets/InsetInclude.cpp:611
+#: src/insets/InsetGraphics.cpp:701 src/insets/InsetInclude.cpp:611
 msgid "Problematic filename for DVI"
 msgstr "Nom de fichier problématique pour DVI"
 
 #: src/Buffer.cpp:3377 src/insets/ExternalSupport.cpp:401
-#: src/insets/InsetGraphics.cpp:701 src/insets/InsetInclude.cpp:612
+#: src/insets/InsetGraphics.cpp:702 src/insets/InsetInclude.cpp:612
 msgid ""
 "The following filename can cause troubles when running the exported file "
 "through LaTeX and opening the resulting DVI: "
@@ -28205,16 +28201,16 @@ msgstr ""
 "original %1$s est en lecture seule. Il faudra sauvegarder le document sous "
 "un autre nom."
 
-#: src/Buffer.cpp:5206 src/insets/InsetCaption.cpp:404
+#: src/Buffer.cpp:5213 src/insets/InsetCaption.cpp:404
 msgid "Senseless!!! "
 msgstr "Inapproprié !!! "
 
-#: src/Buffer.cpp:5470
+#: src/Buffer.cpp:5477
 #, c-format
 msgid "Document %1$s reloaded."
 msgstr "Document %1$s rechargé."
 
-#: src/Buffer.cpp:5473
+#: src/Buffer.cpp:5480
 #, c-format
 msgid "Could not reload document %1$s."
 msgstr "Impossible de recharger le document %1$s."
@@ -28338,7 +28334,7 @@ msgstr "texte d'insert grisé"
 #: src/frontends/qt/LaTeXHighlighter.cpp:143
 #: src/frontends/qt/LaTeXHighlighter.cpp:257
 #: src/insets/InsetCommandParams.cpp:508 src/insets/InsetCommandParams.cpp:516
-#: src/insets/InsetGraphics.cpp:886 src/insets/InsetGraphics.cpp:894
+#: src/insets/InsetGraphics.cpp:900 src/insets/InsetGraphics.cpp:908
 #: src/insets/InsetListings.cpp:299 src/insets/InsetListings.cpp:307
 #: src/insets/InsetListings.cpp:332 src/mathed/MathExtern.cpp:1440
 #: src/mathed/MathExtern.cpp:1514
@@ -28348,7 +28344,7 @@ msgstr "Avertissement LyX : "
 #: src/BufferParams.cpp:1719 src/BufferParams.cpp:1873
 #: src/BufferParams.cpp:2316 src/Encoding.cpp:265 src/Paragraph.cpp:3015
 #: src/insets/InsetCommandParams.cpp:509 src/insets/InsetCommandParams.cpp:517
-#: src/insets/InsetGraphics.cpp:887 src/insets/InsetGraphics.cpp:895
+#: src/insets/InsetGraphics.cpp:901 src/insets/InsetGraphics.cpp:909
 #: src/insets/InsetListings.cpp:300 src/insets/InsetListings.cpp:308
 #: src/mathed/MathExtern.cpp:1441 src/mathed/MathExtern.cpp:1515
 msgid "uncodable character"
@@ -28529,7 +28525,7 @@ msgstr "Le document a été modifié par une application externe"
 msgid "This portion of the document is deleted."
 msgstr "Cette portion du document est supprimée."
 
-#: src/BufferView.cpp:1191 src/BufferView.cpp:2254
+#: src/BufferView.cpp:1191 src/BufferView.cpp:2255
 #: src/frontends/qt/GuiView.cpp:4296 src/frontends/qt/GuiView.cpp:4384
 msgid "Absolute filename expected."
 msgstr "Chemin absolu requis."
@@ -28606,7 +28602,7 @@ msgstr "Un caractère (espaces exclus)"
 msgid "Statistics"
 msgstr "Statistiques"
 
-#: src/BufferView.cpp:2112
+#: src/BufferView.cpp:2113
 #, c-format
 msgid ""
 "`inset-forall' interrupted because number of actions is larger than %1$d"
@@ -28614,35 +28610,35 @@ msgstr ""
 "Interruption de « inset-forall » du fait d'un nombre d'actions supérieur à "
 "%1$d"
 
-#: src/BufferView.cpp:2114
+#: src/BufferView.cpp:2115
 #, c-format
 msgid "Applied \"%1$s\" to %2$d insets"
 msgstr "\"%1$s\" appliqué à %2$d inserts"
 
-#: src/BufferView.cpp:2122
+#: src/BufferView.cpp:2123
 msgid "Branch name"
 msgstr "Nom de la branche"
 
-#: src/BufferView.cpp:2129 src/frontends/qt/GuiBranches.cpp:225
+#: src/BufferView.cpp:2130 src/frontends/qt/GuiBranches.cpp:225
 msgid "Branch already exists"
 msgstr "La branche existe déjà"
 
-#: src/BufferView.cpp:3056
+#: src/BufferView.cpp:3057
 #, c-format
 msgid "Inserting document %1$s..."
 msgstr "Insertion du document %1$s..."
 
-#: src/BufferView.cpp:3072
+#: src/BufferView.cpp:3073
 #, c-format
 msgid "Document %1$s inserted."
 msgstr "Document %1$s inséré."
 
-#: src/BufferView.cpp:3074
+#: src/BufferView.cpp:3075
 #, c-format
 msgid "Could not insert document %1$s"
 msgstr "Impossible d'insérer le document %1$s"
 
-#: src/BufferView.cpp:3569
+#: src/BufferView.cpp:3570
 #, c-format
 msgid ""
 "Could not read the specified document\n"
@@ -28653,11 +28649,11 @@ msgstr ""
 "%1$s\n"
 "à cause de l'erreur : %2$s"
 
-#: src/BufferView.cpp:3571
+#: src/BufferView.cpp:3572
 msgid "Could not read file"
 msgstr "Lecture du fichier impossible"
 
-#: src/BufferView.cpp:3578
+#: src/BufferView.cpp:3579
 #, c-format
 msgid ""
 "%1$s\n"
@@ -28666,17 +28662,17 @@ msgstr ""
 "%1$s\n"
 "est illisible."
 
-#: src/BufferView.cpp:3579 src/frontends/qt/qt_helpers.cpp:311
-#: src/frontends/qt/qt_helpers.cpp:314 src/frontends/qt/qt_helpers.cpp:320
+#: src/BufferView.cpp:3580 src/frontends/qt/qt_helpers.cpp:322
+#: src/frontends/qt/qt_helpers.cpp:325 src/frontends/qt/qt_helpers.cpp:331
 #: src/output.cpp:39
 msgid "Could not open file"
 msgstr "Ouverture du fichier impossible"
 
-#: src/BufferView.cpp:3586
+#: src/BufferView.cpp:3587
 msgid "Reading not UTF-8 encoded file"
 msgstr "Lecture d'un fichier non encodé en UTF-8"
 
-#: src/BufferView.cpp:3587
+#: src/BufferView.cpp:3588
 msgid ""
 "The file is not UTF-8 encoded.\n"
 "It will be read as local 8Bit-encoded.\n"
@@ -30765,11 +30761,11 @@ msgstr ""
 msgid "Unknown Inset"
 msgstr "Insert inconnu"
 
-#: src/Text.cpp:554 src/insets/InsetTabular.cpp:473
+#: src/Text.cpp:554 src/insets/InsetTabular.cpp:476
 msgid "Change tracking author index missing"
 msgstr "Index d'auteur de suivi des modifications manquant"
 
-#: src/Text.cpp:555 src/insets/InsetTabular.cpp:474
+#: src/Text.cpp:555 src/insets/InsetTabular.cpp:477
 #, c-format
 msgid ""
 "A change tracking author information for index %1$d is missing. This can "
@@ -30889,7 +30885,7 @@ msgstr " inconnu"
 msgid "Table Style "
 msgstr "Style de tableau "
 
-#: src/Text3.cpp:2385 src/frontends/qt/GuiApplication.cpp:1873
+#: src/Text3.cpp:2385 src/frontends/qt/GuiApplication.cpp:1887
 msgid "Missing argument"
 msgstr "Paramètre manquant"
 
@@ -31298,15 +31294,15 @@ msgstr ""
 
 #: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
 #: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1895
-#: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
-#: src/lyxfind.cpp:694 src/lyxfind.cpp:722
+#: src/lyxfind.cpp:310 src/lyxfind.cpp:337 src/lyxfind.cpp:358
+#: src/lyxfind.cpp:701 src/lyxfind.cpp:729
 msgid "&Yes"
 msgstr "&Oui"
 
 #: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
 #: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1895
-#: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
-#: src/lyxfind.cpp:694 src/lyxfind.cpp:722
+#: src/lyxfind.cpp:310 src/lyxfind.cpp:337 src/lyxfind.cpp:358
+#: src/lyxfind.cpp:701 src/lyxfind.cpp:729
 msgid "&No"
 msgstr "&Non"
 
@@ -31439,7 +31435,7 @@ msgid "Dings 4"
 msgstr "Dings 4"
 
 #: src/frontends/qt/ButtonController.cpp:222
-#: src/frontends/qt/GuiApplication.cpp:1997 src/frontends/qt/GuiCompare.cpp:193
+#: src/frontends/qt/GuiApplication.cpp:2011 src/frontends/qt/GuiCompare.cpp:193
 #: src/frontends/qt/GuiSymbols.cpp:346
 msgid "Cancel"
 msgstr "Annuler"
@@ -31511,8 +31507,8 @@ msgstr "Recherche avancée en cours (appuyer sur ESC pour annuler) . . ."
 msgid "Advanced search cancelled by user"
 msgstr "Recherche avancée annulée par l'utilisateur"
 
-#: src/frontends/qt/FindAndReplace.cpp:380 src/lyxfind.cpp:350
-#: src/lyxfind.cpp:693 src/lyxfind.cpp:721
+#: src/frontends/qt/FindAndReplace.cpp:380 src/lyxfind.cpp:357
+#: src/lyxfind.cpp:700 src/lyxfind.cpp:728
 msgid "Wrap search?"
 msgstr "Recherche récursive ?"
 
@@ -31663,89 +31659,89 @@ msgstr "Python détecté : %1$s"
 msgid "About LyX"
 msgstr "À propos de LyX"
 
-#: src/frontends/qt/GuiApplication.cpp:736
+#: src/frontends/qt/GuiApplication.cpp:750
 msgid "About %1"
 msgstr "À propos de %1"
 
-#: src/frontends/qt/GuiApplication.cpp:737 src/frontends/qt/GuiPrefs.cpp:3528
+#: src/frontends/qt/GuiApplication.cpp:751 src/frontends/qt/GuiPrefs.cpp:3528
 msgid "Preferences"
 msgstr "Préférences"
 
-#: src/frontends/qt/GuiApplication.cpp:738
+#: src/frontends/qt/GuiApplication.cpp:752
 msgid "Reconfigure"
 msgstr "Reconfigurer"
 
-#: src/frontends/qt/GuiApplication.cpp:739
+#: src/frontends/qt/GuiApplication.cpp:753
 msgid "Restore Defaults"
 msgstr "Restaurer le réglage implicite"
 
-#: src/frontends/qt/GuiApplication.cpp:740
+#: src/frontends/qt/GuiApplication.cpp:754
 msgid "Quit %1"
 msgstr "Quitter %1"
 
-#: src/frontends/qt/GuiApplication.cpp:741 src/frontends/qt/GuiInclude.cpp:318
+#: src/frontends/qt/GuiApplication.cpp:755 src/frontends/qt/GuiInclude.cpp:318
 #: src/frontends/qt/GuiInclude.cpp:328 src/frontends/qt/GuiInclude.cpp:333
 msgid "&OK"
 msgstr "&OK"
 
-#: src/frontends/qt/GuiApplication.cpp:743
+#: src/frontends/qt/GuiApplication.cpp:757
 msgid "Apply"
 msgstr "Appliquer"
 
-#: src/frontends/qt/GuiApplication.cpp:744
+#: src/frontends/qt/GuiApplication.cpp:758
 msgid "Reset"
 msgstr "RàZ"
 
-#: src/frontends/qt/GuiApplication.cpp:745
+#: src/frontends/qt/GuiApplication.cpp:759
 msgid "Open"
 msgstr "Ouvir"
 
-#: src/frontends/qt/GuiApplication.cpp:1270
+#: src/frontends/qt/GuiApplication.cpp:1284
 msgid "Nothing to do"
 msgstr "Rien à faire"
 
-#: src/frontends/qt/GuiApplication.cpp:1276
+#: src/frontends/qt/GuiApplication.cpp:1290
 msgid "Unknown action"
 msgstr "Action inconnue"
 
-#: src/frontends/qt/GuiApplication.cpp:1320
+#: src/frontends/qt/GuiApplication.cpp:1334
 msgid "Command not handled"
 msgstr "Commande non gérée"
 
-#: src/frontends/qt/GuiApplication.cpp:1326
+#: src/frontends/qt/GuiApplication.cpp:1340
 msgid "Command disabled"
 msgstr "Commande désactivée"
 
-#: src/frontends/qt/GuiApplication.cpp:1434
+#: src/frontends/qt/GuiApplication.cpp:1448
 #, c-format
 msgid "Bad debug value `%1$s'."
 msgstr "Valeur de débogage incorrecte « %1$s »."
 
-#: src/frontends/qt/GuiApplication.cpp:1463 src/frontends/qt/GuiView.cpp:2214
+#: src/frontends/qt/GuiApplication.cpp:1477 src/frontends/qt/GuiView.cpp:2214
 msgid "Command not allowed without a buffer open"
 msgstr "Commande non autorisée si aucun tampon n'est ouvert"
 
-#: src/frontends/qt/GuiApplication.cpp:1470
+#: src/frontends/qt/GuiApplication.cpp:1484
 msgid "the <LFUN-COMMAND> argument of buffer-forall is not valid"
 msgstr "l'argument <LFUN-COMMAND> de buffer-forall est invalide"
 
-#: src/frontends/qt/GuiApplication.cpp:1547
+#: src/frontends/qt/GuiApplication.cpp:1561
 msgid "Wrong focus!"
 msgstr "Mauvaise cible !"
 
-#: src/frontends/qt/GuiApplication.cpp:1681
+#: src/frontends/qt/GuiApplication.cpp:1695
 msgid "Running configure..."
 msgstr "Lancement de configure..."
 
-#: src/frontends/qt/GuiApplication.cpp:1691
+#: src/frontends/qt/GuiApplication.cpp:1705
 msgid "Reloading configuration..."
 msgstr "Rechargement de la configuration..."
 
-#: src/frontends/qt/GuiApplication.cpp:1701
+#: src/frontends/qt/GuiApplication.cpp:1715
 msgid "System reconfiguration failed"
 msgstr "Échec de la reconfiguration"
 
-#: src/frontends/qt/GuiApplication.cpp:1702
+#: src/frontends/qt/GuiApplication.cpp:1716
 msgid ""
 "The system reconfiguration has failed.\n"
 "Default textclass is used but LyX may\n"
@@ -31757,11 +31753,11 @@ msgstr ""
 "ne pourra peut-être pas fonctionner correctement.\n"
 "Merci de reconfigurer de nouveau si c'est le cas."
 
-#: src/frontends/qt/GuiApplication.cpp:1707
+#: src/frontends/qt/GuiApplication.cpp:1721
 msgid "System reconfigured"
 msgstr "Système reconfiguré"
 
-#: src/frontends/qt/GuiApplication.cpp:1708
+#: src/frontends/qt/GuiApplication.cpp:1722
 msgid ""
 "The system has been reconfigured.\n"
 "You need to restart LyX to make use of any\n"
@@ -31771,59 +31767,59 @@ msgstr ""
 "Il faut redémarrer LyX pour utiliser\n"
 "les classes de document mises à jour."
 
-#: src/frontends/qt/GuiApplication.cpp:1789
+#: src/frontends/qt/GuiApplication.cpp:1803
 msgid "Exiting."
 msgstr "Quitte."
 
-#: src/frontends/qt/GuiApplication.cpp:1885
+#: src/frontends/qt/GuiApplication.cpp:1899
 #, c-format
 msgid "Opening help file %1$s..."
 msgstr "Ouverture du fichier d'aide %1$s..."
 
-#: src/frontends/qt/GuiApplication.cpp:1905
+#: src/frontends/qt/GuiApplication.cpp:1919
 msgid "Wrong argument. Must be 'examples' or 'templates'."
 msgstr "Argument incorrect . Doit être 'examples' ou 'templates'."
 
-#: src/frontends/qt/GuiApplication.cpp:1919
+#: src/frontends/qt/GuiApplication.cpp:1933
 msgid "Syntax: set-color <lyx_name> <x11_name> <x11_darkname>"
 msgstr "Syntaxe : set-color <nom_lyx> <nom_x11> <nom-inversé_x11"
 
-#: src/frontends/qt/GuiApplication.cpp:1939
+#: src/frontends/qt/GuiApplication.cpp:1953
 #, c-format
 msgid "Set-color \"%1$s\" failed - color is undefined or may not be redefined"
 msgstr ""
 "Set-color « %1$s » a échoué - la couleur n'est pas définie ou ne peut pas "
 "être redéfinie"
 
-#: src/frontends/qt/GuiApplication.cpp:2044
+#: src/frontends/qt/GuiApplication.cpp:2058
 #, c-format
 msgid "Cannot iterate more than %1$d times"
 msgstr "Impossible d'itérer plus de %1$d fois"
 
-#: src/frontends/qt/GuiApplication.cpp:2144
+#: src/frontends/qt/GuiApplication.cpp:2158
 #, c-format
 msgid "Applied \"%1$s\" to %2$d buffer(s)"
 msgstr "\"%1$s\" appliqué à %2$d tampon(s)"
 
-#: src/frontends/qt/GuiApplication.cpp:2230
+#: src/frontends/qt/GuiApplication.cpp:2244
 #, c-format
 msgid "Document defaults saved in %1$s"
 msgstr "Les valeurs implicites du document ont été enregistrées dans %1$s"
 
-#: src/frontends/qt/GuiApplication.cpp:2234
+#: src/frontends/qt/GuiApplication.cpp:2248
 msgid "Unable to save document defaults"
 msgstr "Impossible d'enregistrer les valeurs implicites du document"
 
-#: src/frontends/qt/GuiApplication.cpp:2474
-#: src/frontends/qt/GuiApplication.cpp:2489
+#: src/frontends/qt/GuiApplication.cpp:2488
+#: src/frontends/qt/GuiApplication.cpp:2503
 msgid "Unknown function."
 msgstr "Fonction inconnue."
 
-#: src/frontends/qt/GuiApplication.cpp:3024
+#: src/frontends/qt/GuiApplication.cpp:3038
 msgid "The current document was closed."
 msgstr "Le document courant était fermé."
 
-#: src/frontends/qt/GuiApplication.cpp:3034
+#: src/frontends/qt/GuiApplication.cpp:3048
 msgid ""
 "LyX has caught an exception, it will now attempt to save all unsaved "
 "documents and exit.\n"
@@ -31835,12 +31831,12 @@ msgstr ""
 "\n"
 "Exception : "
 
-#: src/frontends/qt/GuiApplication.cpp:3038
-#: src/frontends/qt/GuiApplication.cpp:3044
+#: src/frontends/qt/GuiApplication.cpp:3052
+#: src/frontends/qt/GuiApplication.cpp:3058
 msgid "Software exception Detected"
 msgstr "Détection d'une exception logicielle"
 
-#: src/frontends/qt/GuiApplication.cpp:3042
+#: src/frontends/qt/GuiApplication.cpp:3056
 msgid ""
 "LyX has caught some really weird exception, it will now attempt to save all "
 "unsaved documents and exit."
@@ -31848,12 +31844,12 @@ msgstr ""
 "LyX a reçu une exception vraiment sérieuse, il va maintenant essayer "
 "d'enregistrer tous les documents en cours de modification avant de quitter."
 
-#: src/frontends/qt/GuiApplication.cpp:3348
-#: src/frontends/qt/GuiApplication.cpp:3360
+#: src/frontends/qt/GuiApplication.cpp:3362
+#: src/frontends/qt/GuiApplication.cpp:3374
 msgid "Could not find UI definition file"
 msgstr "Fichier descriptif d'interface utilisateur introuvable"
 
-#: src/frontends/qt/GuiApplication.cpp:3349
+#: src/frontends/qt/GuiApplication.cpp:3363
 #, c-format
 msgid ""
 "Error while reading the included file\n"
@@ -31864,11 +31860,11 @@ msgstr ""
 "%1$s.\n"
 "Veuillez vérifier votre installation."
 
-#: src/frontends/qt/GuiApplication.cpp:3355
+#: src/frontends/qt/GuiApplication.cpp:3369
 msgid "Could not find default UI file"
 msgstr "Fichier interface utilisateur implicite introuvable"
 
-#: src/frontends/qt/GuiApplication.cpp:3356
+#: src/frontends/qt/GuiApplication.cpp:3370
 msgid ""
 "LyX could not find the default UI file!\n"
 "Please check your installation."
@@ -31876,7 +31872,7 @@ msgstr ""
 "LyX n'a pu trouver le fichier interface utilisateur implicite !\n"
 "Veuillez vérifier votre installation."
 
-#: src/frontends/qt/GuiApplication.cpp:3361
+#: src/frontends/qt/GuiApplication.cpp:3375
 #, c-format
 msgid ""
 "Error while reading the configuration file\n"
@@ -35702,11 +35698,11 @@ msgstr "Mettre à jour %1$s"
 msgid "View %1$s"
 msgstr "Visionner %1$s"
 
-#: src/frontends/qt/Validator.cpp:214
+#: src/frontends/qt/Validator.cpp:218
 msgid "space"
 msgstr "espace"
 
-#: src/frontends/qt/Validator.cpp:242
+#: src/frontends/qt/Validator.cpp:246
 msgid ""
 "LyX does not provide LaTeX support for file names containing any of these "
 "characters:\n"
@@ -35714,48 +35710,48 @@ msgstr ""
 "LyX ne fournit pas de support LaTeX pour les noms de fichier contenant l'un "
 "de ces caractères :\n"
 
-#: src/frontends/qt/qt_helpers.cpp:280
+#: src/frontends/qt/qt_helpers.cpp:291
 msgid "Invalid URL"
 msgstr "URL invalide"
 
-#: src/frontends/qt/qt_helpers.cpp:281
+#: src/frontends/qt/qt_helpers.cpp:292
 #, c-format
 msgid "The URL `%1$s' could not be resolved."
 msgstr "L'URL « %1$s » n'a pas pu être résolu."
 
-#: src/frontends/qt/qt_helpers.cpp:287
+#: src/frontends/qt/qt_helpers.cpp:298
 msgid "URL could not be accessed"
 msgstr "URL inaccessible"
 
-#: src/frontends/qt/qt_helpers.cpp:288
+#: src/frontends/qt/qt_helpers.cpp:299
 #, c-format
 msgid "The URL `%1$s' could not be opened although it exists!"
 msgstr "L'URL `%1$s' n'a pu être ouvert bien qu'il existe !"
 
-#: src/frontends/qt/qt_helpers.cpp:312
+#: src/frontends/qt/qt_helpers.cpp:323
 msgid "The lyxpaperview script failed."
 msgstr "Le script lyxpaperview a échoué."
 
-#: src/frontends/qt/qt_helpers.cpp:315
+#: src/frontends/qt/qt_helpers.cpp:326
 #, c-format
 msgid "No file was found using the pattern `%1$s'."
 msgstr "Aucun fichier trouvé via le filtre `%1$s'."
 
-#: src/frontends/qt/qt_helpers.cpp:321
+#: src/frontends/qt/qt_helpers.cpp:332
 #, c-format
 msgid "The target `%1$s' could not be resolved."
 msgstr "La ccible « %1$s » n'a pas pu être résolue."
 
-#: src/frontends/qt/qt_helpers.cpp:357
+#: src/frontends/qt/qt_helpers.cpp:368
 msgid "Could not update TeX information"
 msgstr "Impossible de mettre à jour l'information TeX"
 
-#: src/frontends/qt/qt_helpers.cpp:358
+#: src/frontends/qt/qt_helpers.cpp:369
 #, c-format
 msgid "The script `%1$s' failed."
 msgstr "Le script `%1$s' a échoué."
 
-#: src/frontends/qt/qt_helpers.cpp:606
+#: src/frontends/qt/qt_helpers.cpp:617
 msgid "All Files "
 msgstr "Tous les fichiers "
 
@@ -36148,15 +36144,15 @@ msgstr "ERREUR : type de flottant non existant : %1$s"
 msgid "float"
 msgstr "flottant"
 
-#: src/insets/InsetFloat.cpp:911
+#: src/insets/InsetFloat.cpp:914
 msgid "Float: "
 msgstr "Flottant : "
 
-#: src/insets/InsetFloat.cpp:914
+#: src/insets/InsetFloat.cpp:917
 msgid "Subfloat: "
 msgstr "Sous-flottant : "
 
-#: src/insets/InsetFloat.cpp:924
+#: src/insets/InsetFloat.cpp:927
 msgid " (sideways)"
 msgstr " (couché)"
 
@@ -36173,7 +36169,7 @@ msgstr "LyX ne peut créer une liste de  %1$s"
 msgid "footnote"
 msgstr "note de bas de page"
 
-#: src/insets/InsetGraphics.cpp:562 src/insets/InsetInclude.cpp:787
+#: src/insets/InsetGraphics.cpp:563 src/insets/InsetInclude.cpp:787
 #, c-format
 msgid ""
 "Could not copy the file\n"
@@ -36184,12 +36180,25 @@ msgstr ""
 "%1$s\n"
 "dans le répertoire temporaire."
 
-#: src/insets/InsetGraphics.cpp:778 src/insets/InsetGraphics.cpp:1015
+#: src/insets/InsetGraphics.cpp:779 src/insets/InsetGraphics.cpp:1029
 #, c-format
 msgid "No conversion of %1$s is needed after all"
 msgstr "Aucune conversion de %1$s n'est nécessaire"
 
-#: src/insets/InsetGraphics.cpp:906
+#: src/insets/InsetGraphics.cpp:832
+msgid "Graphic not specified. Falling back to `draft' mode."
+msgstr "Graphique non spécifié. Passage en mode « brouillon »."
+
+#: src/insets/InsetGraphics.cpp:833
+#, c-format
+msgid "Graphic `%1$s' was not found. Falling back to `draft' mode."
+msgstr "Graphique %1$s introuvable. Passage en mode « brouillon »."
+
+#: src/insets/InsetGraphics.cpp:836
+msgid "Graphic not found!"
+msgstr "Graphique introuvable !"
+
+#: src/insets/InsetGraphics.cpp:920
 #, c-format
 msgid ""
 "The following characters in one of the graphic paths are\n"
@@ -36200,7 +36209,7 @@ msgstr ""
 "pas représentables dans l'encodage courant et on été omis : %1$s.\n"
 "Vous devez adapter l'encodage ou le chemin."
 
-#: src/insets/InsetGraphics.cpp:931
+#: src/insets/InsetGraphics.cpp:945
 #, c-format
 msgid "Graphics file: %1$s"
 msgstr "Fichier graphique : %1$s"
@@ -36430,277 +36439,277 @@ msgstr "Tous les index"
 msgid "subindex"
 msgstr "sous-index"
 
-#: src/insets/InsetInfo.cpp:194
+#: src/insets/InsetInfo.cpp:195
 msgid "No long date format (language unknown)!"
 msgstr "Aucun format long pour la date (langue inconnue)"
 
-#: src/insets/InsetInfo.cpp:197
+#: src/insets/InsetInfo.cpp:198
 msgid "No medium date format (language unknown)!"
 msgstr "Aucun format intermédiaire pour la date (langue inconnue)"
 
-#: src/insets/InsetInfo.cpp:200
+#: src/insets/InsetInfo.cpp:201
 msgid "No short date format (language unknown)!"
 msgstr "Aucun format court pour la date (langue inconnue)"
 
-#: src/insets/InsetInfo.cpp:229
+#: src/insets/InsetInfo.cpp:230
 msgid "Please select a valid type!"
 msgstr "Veuillez sélectionner un format valide !"
 
-#: src/insets/InsetInfo.cpp:269
+#: src/insets/InsetInfo.cpp:270
 msgid "File name (with extension)"
 msgstr "Nom du fichier (avec suffixe)"
 
-#: src/insets/InsetInfo.cpp:270
+#: src/insets/InsetInfo.cpp:271
 msgid "File name (without extension)"
 msgstr "Nom du fichier (sans suffixe)"
 
-#: src/insets/InsetInfo.cpp:271
+#: src/insets/InsetInfo.cpp:272
 msgid "File path"
 msgstr "Chemin d'accès au fichier"
 
-#: src/insets/InsetInfo.cpp:272
+#: src/insets/InsetInfo.cpp:273
 msgid "Used text class"
 msgstr "Classe de texte utilisée"
 
-#: src/insets/InsetInfo.cpp:277 src/insets/InsetInfo.cpp:1116
+#: src/insets/InsetInfo.cpp:278 src/insets/InsetInfo.cpp:1145
 msgid "No version control!"
 msgstr "Pas de contrôle de version !"
 
-#: src/insets/InsetInfo.cpp:280
+#: src/insets/InsetInfo.cpp:281
 msgid "Revision[[Version Control]]"
 msgstr "Révision"
 
-#: src/insets/InsetInfo.cpp:281
+#: src/insets/InsetInfo.cpp:282
 msgid "Abbreviated revision[[Version Control]]"
 msgstr "Révision abrégée"
 
-#: src/insets/InsetInfo.cpp:282
+#: src/insets/InsetInfo.cpp:283
 msgid "Tree revision"
 msgstr "Révision de l'arborescence"
 
-#: src/insets/InsetInfo.cpp:285
+#: src/insets/InsetInfo.cpp:286
 msgid "Time[[of day]]"
 msgstr "Heure"
 
-#: src/insets/InsetInfo.cpp:290
+#: src/insets/InsetInfo.cpp:291
 msgid "LyX version"
 msgstr "Version de LyX"
 
-#: src/insets/InsetInfo.cpp:291
+#: src/insets/InsetInfo.cpp:292
 msgid "LyX layout format"
 msgstr "Format LyX"
 
-#: src/insets/InsetInfo.cpp:494
+#: src/insets/InsetInfo.cpp:495
 msgid "Invalid information inset"
 msgstr "Insert d'information invalide"
 
-#: src/insets/InsetInfo.cpp:497
+#: src/insets/InsetInfo.cpp:498
 #, c-format
 msgid "The keybard shortcut for the function '%1$s'"
 msgstr "Raccourci clavier pour la fonction « %1$s »"
 
-#: src/insets/InsetInfo.cpp:501
+#: src/insets/InsetInfo.cpp:502
 #, c-format
 msgid "The keybard shortcuts for the function '%1$s'"
 msgstr "Raccourcis clavier pour la fonction « %1$s »"
 
-#: src/insets/InsetInfo.cpp:505
+#: src/insets/InsetInfo.cpp:506
 #, c-format
 msgid "The menu location for the function '%1$s'"
 msgstr "Emplacement du menu pour la fonction « %1$s »"
 
-#: src/insets/InsetInfo.cpp:509
+#: src/insets/InsetInfo.cpp:510
 #, c-format
 msgid "The localization for the string '%1$s'"
 msgstr "Traduction pour la chaîne « %1$s »"
 
-#: src/insets/InsetInfo.cpp:513
+#: src/insets/InsetInfo.cpp:514
 #, c-format
 msgid "The toolbar icon for the function '%1$s'"
 msgstr "Icône de barre d'outils pour la fonction « %1$s »"
 
-#: src/insets/InsetInfo.cpp:517
+#: src/insets/InsetInfo.cpp:518
 #, c-format
 msgid "The preference setting for the preference key '%1$s'"
 msgstr "Réglage de préférence pour la clé « %1$s »"
 
-#: src/insets/InsetInfo.cpp:521
+#: src/insets/InsetInfo.cpp:522
 #, c-format
 msgid "Availability of the LaTeX package '%1$s'"
 msgstr "Disponibilité du paquetage LaTeX « %1$s »"
 
-#: src/insets/InsetInfo.cpp:525
+#: src/insets/InsetInfo.cpp:526
 #, c-format
 msgid "Availability of the LaTeX class '%1$s'"
 msgstr "Disponibilité de la classe LaTeX « %1$s »"
 
-#: src/insets/InsetInfo.cpp:530
+#: src/insets/InsetInfo.cpp:531
 msgid "The name of this file (incl. extension)"
 msgstr "Nom de ce fichier (suffixe inclus)"
 
-#: src/insets/InsetInfo.cpp:532
+#: src/insets/InsetInfo.cpp:533
 msgid "The name of this file (without extension)"
 msgstr "Nom de ce fichier (sans suffixe)"
 
-#: src/insets/InsetInfo.cpp:534
+#: src/insets/InsetInfo.cpp:535
 msgid "The path where this file is saved"
 msgstr "Chemin d'accès au fichier enregistré"
 
-#: src/insets/InsetInfo.cpp:536
+#: src/insets/InsetInfo.cpp:537
 msgid "The class this document uses"
 msgstr "Classe utilisée par ce document"
 
-#: src/insets/InsetInfo.cpp:540
+#: src/insets/InsetInfo.cpp:541
 msgid "Version control revision"
 msgstr "Révision du contrôle de version"
 
-#: src/insets/InsetInfo.cpp:542
+#: src/insets/InsetInfo.cpp:543
 msgid "Version control abbreviated revision"
 msgstr "Révision abrégée du contrôle de version"
 
-#: src/insets/InsetInfo.cpp:544
+#: src/insets/InsetInfo.cpp:545
 msgid "Version control tree revision"
 msgstr "Révision de l'arborescence du contrôle de version"
 
-#: src/insets/InsetInfo.cpp:546
+#: src/insets/InsetInfo.cpp:547
 msgid "Version control author"
 msgstr "Auteur du contrôle de version"
 
-#: src/insets/InsetInfo.cpp:548
+#: src/insets/InsetInfo.cpp:549
 msgid "Version control date"
 msgstr "Date du contrôle de version"
 
-#: src/insets/InsetInfo.cpp:550
+#: src/insets/InsetInfo.cpp:551
 msgid "Version control time"
 msgstr "Heure du contrôle de version"
 
-#: src/insets/InsetInfo.cpp:554
+#: src/insets/InsetInfo.cpp:555
 msgid "The current LyX version"
 msgstr "Version courante de LyX"
 
-#: src/insets/InsetInfo.cpp:556
+#: src/insets/InsetInfo.cpp:557
 msgid "The current LyX layout format"
 msgstr "Format LyX courant"
 
-#: src/insets/InsetInfo.cpp:559
+#: src/insets/InsetInfo.cpp:560
 msgid "The current date"
 msgstr "Date courante"
 
-#: src/insets/InsetInfo.cpp:562
+#: src/insets/InsetInfo.cpp:563
 msgid "The date of last save"
 msgstr "Date de la dernière sauvegarde"
 
-#: src/insets/InsetInfo.cpp:565
+#: src/insets/InsetInfo.cpp:566
 msgid "A static date"
 msgstr "Date statique"
 
-#: src/insets/InsetInfo.cpp:568
+#: src/insets/InsetInfo.cpp:569
 msgid "The current time"
 msgstr "Heure courante"
 
-#: src/insets/InsetInfo.cpp:571
+#: src/insets/InsetInfo.cpp:572
 msgid "The time of last save"
 msgstr "Heure de la dernière sauvegarde"
 
-#: src/insets/InsetInfo.cpp:574
+#: src/insets/InsetInfo.cpp:575
 msgid "A static time"
 msgstr "Heure statique"
 
-#: src/insets/InsetInfo.cpp:601
+#: src/insets/InsetInfo.cpp:602
 msgid "Missing \\end_inset at this point."
 msgstr "Il manque un \\end_inset à cet endroit."
 
-#: src/insets/InsetInfo.cpp:795
+#: src/insets/InsetInfo.cpp:824
 msgid "Unknown Info!"
 msgstr "Information inconnue !"
 
-#: src/insets/InsetInfo.cpp:804 src/insets/InsetInfo.cpp:991
+#: src/insets/InsetInfo.cpp:833 src/insets/InsetInfo.cpp:1020
 #, c-format
 msgid "Unknown action %1$s"
 msgstr "Action inconnue %1$s"
 
-#: src/insets/InsetInfo.cpp:810 src/insets/InsetInfo.cpp:920
-#: src/insets/InsetInfo.cpp:929 src/insets/InsetInfo.cpp:937
+#: src/insets/InsetInfo.cpp:839 src/insets/InsetInfo.cpp:949
+#: src/insets/InsetInfo.cpp:958 src/insets/InsetInfo.cpp:966
 msgid "undefined"
 msgstr "indéfini"
 
-#: src/insets/InsetInfo.cpp:833 src/insets/InsetInfo.cpp:883
+#: src/insets/InsetInfo.cpp:862 src/insets/InsetInfo.cpp:912
 msgid "Return[[Key]]"
 msgstr "Entrée"
 
-#: src/insets/InsetInfo.cpp:838
+#: src/insets/InsetInfo.cpp:867
 msgid "Tab[[Key]]"
 msgstr "Tab"
 
-#: src/insets/InsetInfo.cpp:843
+#: src/insets/InsetInfo.cpp:872
 msgid "PgUp"
 msgstr "Pg.Préc"
 
-#: src/insets/InsetInfo.cpp:848
+#: src/insets/InsetInfo.cpp:877
 msgid "PgDown"
 msgstr "PgSuiv"
 
-#: src/insets/InsetInfo.cpp:853
+#: src/insets/InsetInfo.cpp:882
 msgid "Backtab"
 msgstr "Ret.Arr"
 
-#: src/insets/InsetInfo.cpp:858
+#: src/insets/InsetInfo.cpp:887
 msgid "Tab"
 msgstr "Tab"
 
-#: src/insets/InsetInfo.cpp:868
+#: src/insets/InsetInfo.cpp:897
 msgid "CapsLock"
 msgstr "Verr.Maj"
 
-#: src/insets/InsetInfo.cpp:873
+#: src/insets/InsetInfo.cpp:902
 msgid "Control[[Key]]"
 msgstr "Control[[Key]]"
 
-#: src/insets/InsetInfo.cpp:878
+#: src/insets/InsetInfo.cpp:907
 msgid "Command[[Key]]"
 msgstr "Commande"
 
-#: src/insets/InsetInfo.cpp:888
+#: src/insets/InsetInfo.cpp:917
 msgid "Option[[Key]]"
 msgstr "Option"
 
-#: src/insets/InsetInfo.cpp:893
+#: src/insets/InsetInfo.cpp:922
 msgid "Delete[[Key]]"
 msgstr "Suppr"
 
-#: src/insets/InsetInfo.cpp:898
+#: src/insets/InsetInfo.cpp:927
 msgid "Fn+Del"
 msgstr "Fn+Suppr"
 
-#: src/insets/InsetInfo.cpp:903
+#: src/insets/InsetInfo.cpp:932
 msgid "Esc"
 msgstr "Esc"
 
-#: src/insets/InsetInfo.cpp:947
+#: src/insets/InsetInfo.cpp:976
 msgid "not set"
 msgstr "non réglé"
 
-#: src/insets/InsetInfo.cpp:959 src/insets/InsetInfo.cpp:976
+#: src/insets/InsetInfo.cpp:988 src/insets/InsetInfo.cpp:1005
 msgid "yes"
 msgstr "oui"
 
-#: src/insets/InsetInfo.cpp:962 src/insets/InsetInfo.cpp:979
+#: src/insets/InsetInfo.cpp:991 src/insets/InsetInfo.cpp:1008
 msgid "no"
 msgstr "non"
 
-#: src/insets/InsetInfo.cpp:1002
+#: src/insets/InsetInfo.cpp:1031
 #, c-format
 msgid "Can't determine menu entry for action %1$s in batch mode"
 msgstr ""
 "Impossible de déterminer l'entrée de menu pour l'action %1$s en mode "
 "traitement par lot"
 
-#: src/insets/InsetInfo.cpp:1010
+#: src/insets/InsetInfo.cpp:1039
 #, c-format
 msgid "No menu entry for action %1$s"
 msgstr "Pas d'entré de menu pour l'action %1$s"
 
-#: src/insets/InsetInfo.cpp:1135
+#: src/insets/InsetInfo.cpp:1164
 #, c-format
 msgid "%1$s[[vcs data]] unknown"
 msgstr "%1$s inconnu"
@@ -37229,11 +37238,11 @@ msgstr "Espace horizontal insécable (%1$s)"
 msgid "Unknown TOC type"
 msgstr "Type de TDM inconnu"
 
-#: src/insets/InsetTabular.cpp:464
+#: src/insets/InsetTabular.cpp:467
 msgid "Change tracking data incomplete"
 msgstr "Date de suivi des modifications incomplète"
 
-#: src/insets/InsetTabular.cpp:465
+#: src/insets/InsetTabular.cpp:468
 msgid ""
 "Change tracking information for tabular row/column is incomplete. I will "
 "ignore this."
@@ -37241,15 +37250,15 @@ msgstr ""
 "L'information de suivi de modifications pour les lignes/colonnes de tableau "
 "est incomplète. Elle sera ignorée."
 
-#: src/insets/InsetTabular.cpp:5607
+#: src/insets/InsetTabular.cpp:5680
 msgid "Column movement not supported with multi-columns."
 msgstr "Déplacement de colonne non implanté pour les colonnes multiples."
 
-#: src/insets/InsetTabular.cpp:5625
+#: src/insets/InsetTabular.cpp:5698
 msgid "Row movement not supported with multi-rows."
 msgstr "Déplacement de ligne non implanté pour les lignes multiples."
 
-#: src/insets/InsetTabular.cpp:6127
+#: src/insets/InsetTabular.cpp:6219
 msgid "Selection size should match clipboard content."
 msgstr ""
 "La taille de la sélection doit correspondre au contenu du presse-papier."
@@ -37258,11 +37267,11 @@ msgstr ""
 msgid "[contains tracked changes]"
 msgstr "[contient les modifications suivies]"
 
-#: src/insets/InsetWrap.cpp:68
+#: src/insets/InsetWrap.cpp:64
 msgid "Wrap: "
 msgstr "Enrober : "
 
-#: src/insets/InsetWrap.cpp:201
+#: src/insets/InsetWrap.cpp:197
 msgid "wrap"
 msgstr "enrober"
 
@@ -37322,15 +37331,15 @@ msgstr "Aperçu prêt"
 msgid "Preview failed"
 msgstr "Échec de l'aperçu"
 
-#: src/lyxfind.cpp:268
+#: src/lyxfind.cpp:275
 msgid "Search error"
 msgstr "Erreur de recherche"
 
-#: src/lyxfind.cpp:268
+#: src/lyxfind.cpp:275
 msgid "Search string is empty"
 msgstr "La chaîne de caractères à chercher est vide"
 
-#: src/lyxfind.cpp:300
+#: src/lyxfind.cpp:307
 msgid ""
 "The search string matches the selection, and search is limited to "
 "selection.\n"
@@ -37340,11 +37349,11 @@ msgstr ""
 "à la sélection.\n"
 "Continuer à chercher en dehors?"
 
-#: src/lyxfind.cpp:302 src/lyxfind.cpp:329
+#: src/lyxfind.cpp:309 src/lyxfind.cpp:336
 msgid "Search outside selection?"
 msgstr "Rechercher en-dehors de la sélection ?"
 
-#: src/lyxfind.cpp:327
+#: src/lyxfind.cpp:334
 msgid ""
 "The search string was not found within the selection.\n"
 "Continue search outside?"
@@ -37352,7 +37361,7 @@ msgstr ""
 "La chaîne recherchée n'a pas été trouvée dans la sélection.\n"
 "Continuer à chercher en-dehors ?"
 
-#: src/lyxfind.cpp:345 src/lyxfind.cpp:691
+#: src/lyxfind.cpp:352 src/lyxfind.cpp:698
 msgid ""
 "End of file reached while searching forward.\n"
 "Continue searching from the beginning?"
@@ -37360,7 +37369,7 @@ msgstr ""
 "Fin du fichier atteinte lors de la recherche en avant.\n"
 "Continuer la recherche depuis le début ?"
 
-#: src/lyxfind.cpp:348 src/lyxfind.cpp:719
+#: src/lyxfind.cpp:355 src/lyxfind.cpp:726
 msgid ""
 "Beginning of file reached while searching backward.\n"
 "Continue searching from the end?"
@@ -37368,63 +37377,63 @@ msgstr ""
 "Début du fichier atteint lors de la recherche en arrière.\n"
 "Continuer la recherche depuis la fin ?"
 
-#: src/lyxfind.cpp:364
+#: src/lyxfind.cpp:371
 msgid "Search reached end of document, continuing from beginning."
 msgstr "Fin du document atteinte, la recherche continue à partir du début."
 
-#: src/lyxfind.cpp:365
+#: src/lyxfind.cpp:372
 msgid "Search reached beginning of document, continuing from end."
 msgstr ""
 "La recherche a atteint le début du document, elle continue depuis la fin."
 
-#: src/lyxfind.cpp:664
+#: src/lyxfind.cpp:671
 msgid "String not found in selection."
 msgstr "Chaîne de caractères introuvable dans le sélection."
 
-#: src/lyxfind.cpp:666
+#: src/lyxfind.cpp:673
 msgid "String not found."
 msgstr "Chaîne de caractères introuvable."
 
-#: src/lyxfind.cpp:669
+#: src/lyxfind.cpp:676
 msgid "String found."
 msgstr "Chaîne de caractères trouvée."
 
-#: src/lyxfind.cpp:671
+#: src/lyxfind.cpp:678
 msgid "String has been replaced."
 msgstr "Chaîne remplacée."
 
-#: src/lyxfind.cpp:674
+#: src/lyxfind.cpp:681
 #, c-format
 msgid "%1$d strings have been replaced in the selection."
 msgstr "%1$d chaînes remplacées dans le sélection."
 
-#: src/lyxfind.cpp:675
+#: src/lyxfind.cpp:682
 #, c-format
 msgid "%1$d strings have been replaced."
 msgstr "%1$d chaînes remplacées."
 
-#: src/lyxfind.cpp:4508
+#: src/lyxfind.cpp:4584
 msgid "One match has been replaced."
 msgstr "Une correspondance a été remplacée."
 
-#: src/lyxfind.cpp:4511
+#: src/lyxfind.cpp:4587
 msgid "Two matches have been replaced."
 msgstr "Deux correspondances ont été remplacées."
 
-#: src/lyxfind.cpp:4514
+#: src/lyxfind.cpp:4590
 #, c-format
 msgid "%1$d matches have been replaced."
 msgstr "%1$d correspondances ont été remplacées."
 
-#: src/lyxfind.cpp:4520
+#: src/lyxfind.cpp:4596
 msgid "Match not found."
 msgstr "Chaîne de caractères introuvable."
 
-#: src/lyxfind.cpp:4526
+#: src/lyxfind.cpp:4602
 msgid "Match has been replaced."
 msgstr "Chaîne de caractères remplacée."
 
-#: src/lyxfind.cpp:4528
+#: src/lyxfind.cpp:4604
 msgid "Match found."
 msgstr "Chaîne de caractères reconnue."
 
@@ -37623,11 +37632,11 @@ msgstr ""
 "Impossible d'ouvrir le document\n"
 "%1$s."
 
-#: src/output_latex.cpp:1658
+#: src/output_latex.cpp:1662
 msgid "Error in latexParagraphs"
 msgstr "Erreur dans latexParagraphs"
 
-#: src/output_latex.cpp:1659
+#: src/output_latex.cpp:1663
 #, c-format
 msgid ""
 "You are using at least one layout (%1$s) intended for the title, after using "
@@ -37773,111 +37782,111 @@ msgstr "Lecture des fichiers de configuration"
 msgid "Custom keyboard definition"
 msgstr "Définition d'un clavier personnalisé"
 
-#: src/support/debug.cpp:50
-msgid "LaTeX generation/execution"
-msgstr "Generation/Exécution de LaTeX"
+#: src/support/debug.cpp:50 src/support/debug.cpp:51
+msgid "Output source file generation/processing"
+msgstr "Génération/traitement du fichier source exporté."
 
-#: src/support/debug.cpp:51
+#: src/support/debug.cpp:52
 msgid "Math editor"
 msgstr "Éditeur mathématique"
 
-#: src/support/debug.cpp:52
+#: src/support/debug.cpp:53
 msgid "Font handling"
 msgstr "Gestion des polices"
 
-#: src/support/debug.cpp:53
+#: src/support/debug.cpp:54
 msgid "Textclass files reading"
 msgstr "Lecture des fichiers de classe"
 
-#: src/support/debug.cpp:54
+#: src/support/debug.cpp:55
 msgid "Version control"
 msgstr "Contrôle de version"
 
-#: src/support/debug.cpp:55
+#: src/support/debug.cpp:56
 msgid "External control interface"
 msgstr "Interface de contrôle externe"
 
-#: src/support/debug.cpp:56
+#: src/support/debug.cpp:57
 msgid "Undo/Redo mechanism"
 msgstr "Mécanisme défaire/refaire"
 
-#: src/support/debug.cpp:57
+#: src/support/debug.cpp:58
 msgid "User commands"
 msgstr "Commandes utilisateur"
 
-#: src/support/debug.cpp:58
+#: src/support/debug.cpp:59
 msgid "The LyX Lexer"
 msgstr "Le lexeur LyX"
 
-#: src/support/debug.cpp:59
+#: src/support/debug.cpp:60
 msgid "Dependency information"
 msgstr "Information sur les dépendances"
 
-#: src/support/debug.cpp:60
+#: src/support/debug.cpp:61
 msgid "LyX Insets"
 msgstr "Inserts LyX"
 
-#: src/support/debug.cpp:61
+#: src/support/debug.cpp:62
 msgid "Files used by LyX"
 msgstr "Fichiers utilisés par LyX"
 
-#: src/support/debug.cpp:62
+#: src/support/debug.cpp:63
 msgid "Workarea events"
 msgstr "Événements de la zone de travail"
 
-#: src/support/debug.cpp:63
+#: src/support/debug.cpp:64
 msgid "Clipboard handling"
 msgstr "Gestion du presse-papier"
 
-#: src/support/debug.cpp:64
+#: src/support/debug.cpp:65
 msgid "Graphics conversion and loading"
 msgstr "Conversion et chargement du graphique"
 
-#: src/support/debug.cpp:65
+#: src/support/debug.cpp:66
 msgid "Change tracking"
 msgstr "Suivi des modifications"
 
-#: src/support/debug.cpp:66
+#: src/support/debug.cpp:67
 msgid "External template/inset messages"
 msgstr "Messages de cadre/insert externe"
 
-#: src/support/debug.cpp:67
+#: src/support/debug.cpp:68
 msgid "RowPainter profiling"
 msgstr "Profilage de RowPainter"
 
-#: src/support/debug.cpp:68
+#: src/support/debug.cpp:69
 msgid "Scrolling debugging"
 msgstr "Déverminage déroulant"
 
-#: src/support/debug.cpp:69
+#: src/support/debug.cpp:70
 msgid "Math macros"
 msgstr "Macros mathématiques"
 
-#: src/support/debug.cpp:70
+#: src/support/debug.cpp:71
 msgid "RTL/Bidi"
 msgstr "RTL/Bidi"
 
-#: src/support/debug.cpp:71
+#: src/support/debug.cpp:72
 msgid "Locale/Internationalisation"
 msgstr "Locale/internationalisation"
 
-#: src/support/debug.cpp:72
+#: src/support/debug.cpp:73
 msgid "Selection copy/paste mechanism"
 msgstr "Mécanisme de sélection copier/coller"
 
-#: src/support/debug.cpp:73
+#: src/support/debug.cpp:74
 msgid "Find and replace mechanism"
 msgstr "Rechercher et remplacer"
 
-#: src/support/debug.cpp:74
+#: src/support/debug.cpp:75
 msgid "Developers' general debug messages"
 msgstr "Messages de débogage généraux pour les développeurs"
 
-#: src/support/debug.cpp:75 src/support/debug.cpp:76
+#: src/support/debug.cpp:76 src/support/debug.cpp:77
 msgid "All debugging messages"
 msgstr "Tous les messages de débogage"
 
-#: src/support/debug.cpp:183
+#: src/support/debug.cpp:184
 #, c-format
 msgid "Debugging `%1$s' (%2$s)"
 msgstr "Débogage de '%1$s' (%2$s)"
@@ -38015,6 +38024,15 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Utilisateur inconnu"
 
+#~ msgid "foot"
+#~ msgstr "bas"
+
+#~ msgid "Set all lines"
+#~ msgstr "Mettre toutes les bordures"
+
+#~ msgid "LaTeX generation/execution"
+#~ msgstr "Generation/Exécution de LaTeX"
+
 #~ msgid "Running BibTeX."
 #~ msgstr "Exécution de BibTeX."
 

commit 307a2f91ada54af85bfc70d35bd42a61a49de8ef
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Thu Mar 17 16:42:39 2022 +0100

    Revert part of 503c7c16: InsetMathNest:edit resets anchor.
    
    Fixes bug reported here:
    https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg217265.html
    
    1. Start a new document.
    2. Start a math inset and inside put "1+2".
    3. Put the cursor to the right of "+".
    4. Press <Shift> + L three times. This will select the entire math inset
       (as expected).
    5. Press <Shift> + R.
    
    Before 503c7c16, the selection inside the math inset was preserved.
    After 503c7c16, it is lost.
    
    The problem is that InsetMathNest does too much for our needs and
    resets the anchor (why, I do not know). Therefore, it is better to
    duplicate the code.

diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp
index 8fd2bdd..8b63c73 100644
--- a/src/mathed/InsetMathHull.cpp
+++ b/src/mathed/InsetMathHull.cpp
@@ -2254,7 +2254,10 @@ void InsetMathHull::handleFont2(Cursor & cur, docstring const & arg)
 
 void InsetMathHull::edit(Cursor & cur, bool front, EntryDirection entry_from)
 {
-	InsetMathNest::edit(cur, front, entry_from);
+	cur.push(*this);
+	bool enter_front = (entry_from == Inset::ENTRY_DIRECTION_LEFT ||
+		(entry_from == Inset::ENTRY_DIRECTION_IGNORE && front));
+	enter_front ? idxFirst(cur) : idxLast(cur);
 	// The inset formula dimension is not necessarily the same as the
 	// one of the instant preview image, so we have to indicate to the
 	// BufferView that a metrics update is needed.

commit b9ca608c2f7ca2e1434e8e7cfc9e9c83f643c6c4
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Mar 17 08:47:43 2022 +0100

    Properly color red checkbox labels in validation (part of #12508)

diff --git a/src/frontends/qt/qt_helpers.cpp b/src/frontends/qt/qt_helpers.cpp
index 1189032..8372fd9 100644
--- a/src/frontends/qt/qt_helpers.cpp
+++ b/src/frontends/qt/qt_helpers.cpp
@@ -223,11 +223,22 @@ bool ColorSorter(ColorCode lhs, ColorCode rhs)
 void setValid(QWidget * widget, bool valid)
 {
 	if (valid) {
-		widget->setPalette(QPalette());
+		if (qobject_cast<QCheckBox*>(widget) != nullptr)
+			// Check boxes need to be treated differenty, see
+			// https://forum.qt.io/topic/93253/
+			widget->setStyleSheet("");
+		else
+			widget->setPalette(QPalette());
 	} else {
-		QPalette pal = widget->palette();
-		pal.setColor(QPalette::Active, QPalette::WindowText, QColor(255, 0, 0));
-		widget->setPalette(pal);
+		if (qobject_cast<QCheckBox*>(widget) != nullptr) {
+			// Check boxes need to be treated differenty, see
+			// https://forum.qt.io/topic/93253/
+			widget->setStyleSheet("QCheckBox:unchecked{ color: red; }QCheckBox:checked{ color: red; }");
+		} else {
+			QPalette pal = widget->palette();
+			pal.setColor(QPalette::Active, QPalette::WindowText, QColor(255, 0, 0));
+			widget->setPalette(pal);
+		}
 	}
 }
 

commit a89ff030cfdda2f9c6819bd445e26d2073ac4622
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Mar 17 08:16:54 2022 +0100

    Amend 0f80de308c67

diff --git a/src/frontends/qt/Validator.cpp b/src/frontends/qt/Validator.cpp
index 1ef90ac..ad1c4f6 100644
--- a/src/frontends/qt/Validator.cpp
+++ b/src/frontends/qt/Validator.cpp
@@ -60,7 +60,7 @@ QValidator::State LengthValidator::validate(QString & qtext, int &) const
 		// A plausible intermediate value, see #12508
 		return QValidator::Intermediate;
 
-	if (ok && positive_ && d <=0)
+	if (ok && positive_ && d < 0)
 		return QValidator::Invalid;
 
 	if (qtext.isEmpty() || (ok && !dp))

commit 0f80de308c67577b5e00e8582867840648fdf1d7
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Mar 17 08:15:09 2022 +0100

    0 is a plausible intermediate length in positive context (#12508)

diff --git a/src/frontends/qt/Validator.cpp b/src/frontends/qt/Validator.cpp
index 0d3b672..1ef90ac 100644
--- a/src/frontends/qt/Validator.cpp
+++ b/src/frontends/qt/Validator.cpp
@@ -56,6 +56,10 @@ QValidator::State LengthValidator::validate(QString & qtext, int &) const
 	if (ok && unsigned_ && d < 0)
 		return QValidator::Invalid;
 
+	if (ok && positive_ && d == 0)
+		// A plausible intermediate value, see #12508
+		return QValidator::Intermediate;
+
 	if (ok && positive_ && d <=0)
 		return QValidator::Invalid;
 

commit 2e9c962a247e90abf9e7bdf2d2b2a4e99a7b3693
Author: Kornel Benko <kornel at lyx.org>
Date:   Wed Mar 16 13:46:24 2022 +0100

    FindAdv: Generalize substitutions of commands to unicode inside regex

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index bb678f8..c187e10 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -838,7 +838,7 @@ string correctRegex(string t, bool withformat)
 	 * and \{, \}, \[, \] => {, }, [, ]
 	 */
 	string s("");
-	regex wordre("(\\\\)*(\\\\((backslash|mathcircumflex|textquoteleft) ?|[\\[\\]\\{\\}]))");
+	regex wordre("(\\\\)*(\\\\(([a-z]+) ?|[\\[\\]\\{\\}]))");
 	size_t lastpos = 0;
 	smatch sub;
 	bool backslashed = false;
@@ -866,8 +866,6 @@ string correctRegex(string t, bool withformat)
 			}
 			else if (sub.str(4) == "mathcircumflex")
 				replace = "^";
-			else if (sub.str(4) == "textquoteleft")
-				replace = accents["textquoteleft"];
 			else if (backslashed) {
 				backslashed = false;
 				if (withformat && (sub.str(3) == "{"))
@@ -879,8 +877,15 @@ string correctRegex(string t, bool withformat)
 					LASSERT(1, /**/);
 				}
 			}
-			else
-				replace = sub.str(3);
+			else {
+				AccentsIterator it_ac = accents.find(sub.str(4));
+				if (it_ac == accents.end()) {
+					replace = sub.str(3);
+				}
+				else {
+					replace = it_ac->second;
+				}
+			}
 		}
 		if (lastpos < (size_t) sub.position(2))
 			s += t.substr(lastpos, sub.position(2) - lastpos);
@@ -1554,6 +1559,8 @@ void static fillMissingUnicodesymbols()
   addAccents("\\o", getutf8(0x00f8));
   addAccents("\\textcrlambda", getutf8(0x019b));
   addAccents("\\j", getutf8(0x0237));
+  addAccents("\\textrevepsilon", getutf8(0x025c));
+  addAccents("\\textbaru", getutf8(0x0289));
   addAccents("\\textquoteleft", getutf8(0x02bb));
   addAccents("\\textGamma", getutf8(0x0393));
   addAccents("\\Gamma", getutf8(0x0393));

commit 9bef4f9f1a488bd3ee503d64ab6c8888fc774ea5
Author: Kornel Benko <kornel at lyx.org>
Date:   Tue Mar 15 13:01:51 2022 +0100

    Amend f8071449: Added conversion for unicode 0x2bb
    
    Now regex using \textquoteleft works also without format search.

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 6308c64..bb678f8 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -830,16 +830,21 @@ string string2regex(string in)
 	return temp2;
 }
 
+static void buildAccentsMap();
+
 string correctRegex(string t, bool withformat)
 {
 	/* Convert \backslash => \
 	 * and \{, \}, \[, \] => {, }, [, ]
 	 */
 	string s("");
-	regex wordre("(\\\\)*(\\\\((backslash|mathcircumflex) ?|[\\[\\]\\{\\}]))");
+	regex wordre("(\\\\)*(\\\\((backslash|mathcircumflex|textquoteleft) ?|[\\[\\]\\{\\}]))");
 	size_t lastpos = 0;
 	smatch sub;
 	bool backslashed = false;
+	if (accents.empty())
+		buildAccentsMap();
+
 	for (sregex_iterator it(t.begin(), t.end(), wordre), end; it != end; ++it) {
 		sub = *it;
 		string replace;
@@ -861,6 +866,8 @@ string correctRegex(string t, bool withformat)
 			}
 			else if (sub.str(4) == "mathcircumflex")
 				replace = "^";
+			else if (sub.str(4) == "textquoteleft")
+				replace = accents["textquoteleft"];
 			else if (backslashed) {
 				backslashed = false;
 				if (withformat && (sub.str(3) == "{"))

commit f80714497bc9c2bc422e7b8331ad79c4635124fc
Author: Kornel Benko <kornel at lyx.org>
Date:   Tue Mar 15 10:35:22 2022 +0100

    FindAdv: Added conversion for unicode 0x2bb
    
    In math-mode \textquoteleft was still not used as unicode
    so it was not possible to find the char using regex

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 54bceaa..6308c64 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1547,6 +1547,7 @@ void static fillMissingUnicodesymbols()
   addAccents("\\o", getutf8(0x00f8));
   addAccents("\\textcrlambda", getutf8(0x019b));
   addAccents("\\j", getutf8(0x0237));
+  addAccents("\\textquoteleft", getutf8(0x02bb));
   addAccents("\\textGamma", getutf8(0x0393));
   addAccents("\\Gamma", getutf8(0x0393));
   addAccents("\\textDelta", getutf8(0x0394));
@@ -1896,7 +1897,7 @@ void Intervall::removeAccents()
     buildAccentsMap();
   static regex const accre("\\\\(([\\S]|grave|breve|ddot|dot|acute|dacute|mathring|check|hat|bar|tilde|subdot|ogonek|"
          "cedilla|subring|textsubring|subhat|textsubcircum|subtilde|textsubtilde|dgrave|textdoublegrave|rcap|textroundcap|slashed)\\{[^\\{\\}]+\\}"
-      "|((i|imath|jmath|cdot|[a-z]+space)|((backslash )?([lL]y[xX]|[tT]e[xX]|[lL]a[tT]e[xX]e?|lyxarrow))|(brace|guillemot)(left|right)|textasciicircum|mathcircumflex|sim)(?![a-zA-Z]))");
+      "|((i|imath|jmath|cdot|[a-z]+space)|((backslash )?([lL]y[xX]|[tT]e[xX]|[lL]a[tT]e[xX]e?|lyxarrow))|(textquote|brace|guillemot)(left|right)|textasciicircum|mathcircumflex|sim)(?![a-zA-Z]))");
   smatch sub;
   for (sregex_iterator itacc(par.begin(), par.end(), accre), end; itacc != end; ++itacc) {
     sub = *itacc;

commit 2e43b458a93e71681029b4a7ae606d16be3f5cbe
Author: Kornel Benko <kornel at lyx.org>
Date:   Sun Mar 13 23:23:09 2022 +0100

    Update sk.po

diff --git a/po/sk.po b/po/sk.po
index ecd223a..077e8cd 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX-2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-03-03 10:04+0100\n"
-"PO-Revision-Date: 2022-03-04 16:38+0000\n"
+"POT-Creation-Date: 2022-03-13 23:17+0100\n"
+"PO-Revision-Date: 2022-03-13 22:21+0000\n"
 "Last-Translator: Kornel Benko <kornel at lyx.org>\n"
 "Language-Team: Slovak <kornel at lyx.org>\n"
 "Language: sk\n"
@@ -21589,16 +21589,16 @@ msgid "Toggle right line"
 msgstr "Prepnúť pravú čiaru"
 
 #: lib/ui/stdtoolbars.inc:167
-msgid "Set border lines"
-msgstr "Nastaviť okrajové čiary"
+msgid "Toggle border lines"
+msgstr "Prepnúť okrajové čiary"
 
 #: lib/ui/stdtoolbars.inc:168
-msgid "Set all lines"
-msgstr "Nastaviť všetky čiary"
+msgid "Toggle inner lines"
+msgstr "Prepnúť vnútorné čiary"
 
 #: lib/ui/stdtoolbars.inc:169
-msgid "Set inner lines"
-msgstr "Nastaviť vnútorné čiary"
+msgid "Toggle all lines"
+msgstr "Prepnúť všetky čiary"
 
 #: lib/ui/stdtoolbars.inc:170
 msgid "Unset all lines"
@@ -37310,6 +37310,9 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Neznámy používateľ"
 
+#~ msgid "Set all lines"
+#~ msgstr "Nastaviť všetky čiary"
+
 #~ msgid "e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
 #~ msgstr "napr.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
 
@@ -42738,3 +42741,9 @@ msgstr "Neznámy používateľ"
 
 #~ msgid "&Expand macros"
 #~ msgstr "&Rozvinúť makrá"
+
+#~ msgid "Set border lines"
+#~ msgstr "Nastaviť okrajové čiary"
+
+#~ msgid "Set inner lines"
+#~ msgstr "Nastaviť vnútorné čiary"

commit f21899661acfef223611765de33906f92cd72bbd
Author: Daniel Ramoeller <d.lyx at web.de>
Date:   Sun Mar 13 08:57:49 2022 +0100

    Add toggle feature for all, outer and inner borders
    
    Fix for bug #12503.
    
    Also some bug fixes for the set inner lines algorithm. See discussion of #12503.

diff --git a/lib/Makefile.am b/lib/Makefile.am
index 61d6f1a..664eaa4 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -695,11 +695,11 @@ dist_images_DATA1X = \
 	images/tabular-feature_multicolumn.svgz \
 	images/tabular-feature_multirow.svgz \
 	images/tabular-feature_reset-formal-default.svgz \
-	images/tabular-feature_set-all-lines.svgz \
+	images/tabular-feature_toggle-all-lines.svgz \
 	images/tabular-feature_set-longtabular.svgz \
 	images/tabular-feature_set-rotate-cell.svgz \
-	images/tabular-feature_set-border-lines.svgz \
-	images/tabular-feature_set-inner-lines.svgz \
+	images/tabular-feature_toggle-border-lines.svgz \
+	images/tabular-feature_toggle-inner-lines.svgz \
 	images/tabular-feature_set-rotate-tabular.svgz \
 	images/tabular-feature_toggle-line-bottom.svgz \
 	images/tabular-feature_toggle-line-left.svgz \
@@ -2155,9 +2155,9 @@ dist_imagesoxygen_DATA1X = \
 	images/oxygen/tabular-feature_multicolumn.svgz \
 	images/oxygen/tabular-feature_multirow.svgz \
 	images/oxygen/tabular-feature_reset-formal-default.svgz \
-	images/oxygen/tabular-feature_set-all-lines.svgz \
-	images/oxygen/tabular-feature_set-border-lines.svgz \
-	images/oxygen/tabular-feature_set-inner-lines.svgz \
+	images/oxygen/tabular-feature_toggle-all-lines.svgz \
+	images/oxygen/tabular-feature_toggle-border-lines.svgz \
+	images/oxygen/tabular-feature_toggle-inner-lines.svgz \
 	images/oxygen/tabular-feature_set-longtabular.svgz \
 	images/oxygen/tabular-feature_toggle-line-bottom.svgz \
 	images/oxygen/tabular-feature_toggle-line-left.svgz \
@@ -2353,9 +2353,9 @@ dist_imagesclassic_DATA = \
 	images/classic/tabular-feature_multicolumn.png  \
 	images/classic/tabular-feature_multirow.png  \
 	images/classic/tabular-feature_reset-formal-default.png \
-	images/classic/tabular-feature_set-all-lines.png  \
-	images/classic/tabular-feature_set-border-lines.png  \
-	images/classic/tabular-feature_set-inner-lines.png  \
+	images/classic/tabular-feature_toggle-all-lines.png  \
+	images/classic/tabular-feature_toggle-border-lines.png  \
+	images/classic/tabular-feature_toggle-inner-lines.png  \
 	images/classic/tabular-feature_set-longtabular.png  \
 	images/classic/tabular-feature_set-rotate-cell.png  \
 	images/classic/tabular-feature_set-rotate-tabular.png  \
diff --git a/lib/RELEASE-NOTES b/lib/RELEASE-NOTES
index dc97f29..7398553 100644
--- a/lib/RELEASE-NOTES
+++ b/lib/RELEASE-NOTES
@@ -143,6 +143,9 @@
   ignore the inserted file's main language (and rather adapt it to the insertion
   context's language).
 
+* tabular-feature: added toggle parameters "toggle-all-lines", "toggle-border-lines"
+  and "toggle-inner-lines"
+
 
 !!!The following LyX functions have been removed in 2.4:
 
diff --git a/lib/doc/EmbeddedObjects.lyx b/lib/doc/EmbeddedObjects.lyx
index 8d5bab9..b293f75 100644
--- a/lib/doc/EmbeddedObjects.lyx
+++ b/lib/doc/EmbeddedObjects.lyx
@@ -1,5 +1,5 @@
 #LyX 2.4 created this file. For more info see https://www.lyx.org/
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
@@ -250,6 +250,7 @@ varwidth
 \html_be_strict false
 \docbook_table_output 0
 \docbook_mathml_prefix 1
+\author -1382599118 "Daniel"
 \author -712698321 "Jürgen Spitzmüller"
 \author 630872221 "Jean-Pierre Chrétien" jeanpierre.chretien at free.fr
 \end_header
@@ -2646,7 +2647,29 @@ type  "icon"
 arg   "tabular-feature toggle-line-top"
 \end_inset
 
- adds a line at the top of the current cell / row or of a selection
+ 
+\change_deleted -1382599118 1647157945
+adds
+\change_inserted -1382599118 1647157946
+toggles
+\change_unchanged
+ a line at the top of
+\change_inserted -1382599118 1647158116
+ every cell for
+\change_unchanged
+ the current
+\change_inserted -1382599118 1647157889
+ly
+\change_deleted -1382599118 1647157917
+ cell / row or of a
+\change_unchanged
+ select
+\change_deleted -1382599118 1647157923
+ion
+\change_inserted -1382599118 1647157925
+ed cells
+\change_unchanged
+
 \end_layout
 
 \begin_layout Labeling
@@ -2656,7 +2679,29 @@ type  "icon"
 arg   "tabular-feature toggle-line-bottom"
 \end_inset
 
- adds a line at the bottom of the current cell / row or of a selection
+ 
+\change_deleted -1382599118 1647157963
+adds
+\change_inserted -1382599118 1647157964
+toggles
+\change_unchanged
+ a line at the bottom of 
+\change_inserted -1382599118 1647158114
+every cell for 
+\change_unchanged
+the current
+\change_inserted -1382599118 1647157991
+ly
+\change_deleted -1382599118 1647158003
+ cell / row or of a
+\change_unchanged
+ select
+\change_deleted -1382599118 1647158007
+ion
+\change_inserted -1382599118 1647158009
+ed cells
+\change_unchanged
+
 \end_layout
 
 \begin_layout Labeling
@@ -2666,7 +2711,29 @@ type  "icon"
 arg   "tabular-feature toggle-line-left"
 \end_inset
 
- adds a line at the left side of the current cell / row or of a selection
+ 
+\change_deleted -1382599118 1647157971
+adds
+\change_inserted -1382599118 1647157972
+toggles
+\change_unchanged
+ a line at the left side of 
+\change_inserted -1382599118 1647158111
+every cell for 
+\change_unchanged
+the current
+\change_inserted -1382599118 1647158027
+ly
+\change_deleted -1382599118 1647158069
+ cell / row or of a
+\change_unchanged
+ select
+\change_deleted -1382599118 1647158043
+ion
+\change_inserted -1382599118 1647158044
+ed cells
+\change_unchanged
+
 \end_layout
 
 \begin_layout Labeling
@@ -2676,7 +2743,27 @@ type  "icon"
 arg   "tabular-feature toggle-line-right"
 \end_inset
 
- adds a line at the right side of the current cell / row or of a selection
+ 
+\change_deleted -1382599118 1647157974
+adds
+\change_inserted -1382599118 1647157975
+toggles
+\change_unchanged
+ a line at the right side of 
+\change_inserted -1382599118 1647158109
+every cell for 
+\change_unchanged
+the current
+\change_inserted -1382599118 1647158061
+ly
+\change_deleted -1382599118 1647158072
+ cell / row or of a
+\change_unchanged
+ select
+\change_deleted -1382599118 1647158078
+ion
+\change_inserted -1382599118 1647158082
+ed cells
 \change_inserted -712698321 1554289731
 
 \end_layout
@@ -2687,10 +2774,30 @@ arg   "tabular-feature toggle-line-right"
 \change_inserted -712698321 1554289910
 \begin_inset Info
 type  "icon"
-arg   "tabular-feature set-border-lines"
+arg   "tabular-feature toggle-border-lines"
+\end_inset
+
+ 
+\change_deleted -1382599118 1647157966
+adds
+\change_inserted -1382599118 1647157967
+toggles
+\change_inserted -712698321 1554289910
+ a border around the currently selected cells
+\change_inserted -1382599118 1647040213
+
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+
+\change_inserted -1382599118 1647158092
+\begin_inset Info
+type  "icon"
+arg   "tabular-feature toggle-inner-lines"
 \end_inset
 
- adds a border around the currently selected cells
+ toggles inner lines for the currently selected cells
 \change_unchanged
 
 \end_layout
@@ -2699,7 +2806,7 @@ arg   "tabular-feature set-border-lines"
 \labelwidthstring 00.00.0000
 \begin_inset Info
 type  "icon"
-arg   "tabular-feature set-all-lines"
+arg   "tabular-feature toggle-all-lines"
 \end_inset
 
  adds lines around the current or selected cells - if the current cell is
diff --git a/lib/ui/stdtoolbars.inc b/lib/ui/stdtoolbars.inc
index 0028e8c..467c6f6 100644
--- a/lib/ui/stdtoolbars.inc
+++ b/lib/ui/stdtoolbars.inc
@@ -164,9 +164,9 @@ ToolbarSet
 		Item "Toggle bottom line" "tabular-feature toggle-line-bottom"
 		Item "Toggle left line" "tabular-feature toggle-line-left"
 		Item "Toggle right line" "tabular-feature toggle-line-right"
-		Item "Set border lines" "tabular-feature set-border-lines"
-		Item "Set all lines" "tabular-feature set-all-lines"
-		Item "Set inner lines" "tabular-feature set-inner-lines"
+		Item "Toggle border lines" "tabular-feature toggle-border-lines"
+		Item "Toggle inner lines" "tabular-feature toggle-inner-lines"
+		Item "Toggle all lines" "tabular-feature toggle-all-lines"
 		Item "Unset all lines" "tabular-feature unset-all-lines"
 		Item "Reset formal default lines" "tabular-feature reset-formal-default"
 		Separator
diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index 164327b..ca8c5b7 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -3900,17 +3900,17 @@ void LyXAction::init()
                        valign-top|valign-bottom|valign-middle|longtabular-align-left|\n
                        longtabular-align-center|longtabular-align-right|m-align-left|m-align-right|\n
                        m-align-center|m-valign-top|m-valign-bottom|m-valign-middle|multicolumn|\n
-                       reset-formal-default|set-all-lines|unset-all-lines|toggle-longtabular|\n
-                       set-longtabular|unset-longtabular|set-pwidth|\n
+                       reset-formal-default|set-all-lines|toggle-all-lines|unset-all-lines|\n
+                       toggle-longtabular|set-longtabular|unset-longtabular|set-pwidth|\n
                        set-mpwidth|set-rotate-tabular|unset-rotate-tabular|toggle-rotate-tabular|\n
                        set-rotate-cell|unset-rotate-cell|toggle-rotate-cell|set-usebox|set-lthead|\n
                        unset-lthead|set-ltfirsthead|unset-ltfirsthead|set-ltfoot|unset-ltfoot|\n
                        set-ltlastfoot|unset-ltlastfoot|set-ltnewpage|toggle-ltcaption|\n
                        set-special-column|set-special-multicolumn|set-special-multirow|\n
                        toggle-booktabs|set-booktabs|unset-booktabs|set-top-space|set-bottom-space|\n
-                       set-interline-space|set-border-lines|tabular-valign-top|\n
-                       tabular-valign-middle|tabular-valign-bottom|set-tabular-width|\n
-                       toggle-varwidth-column
+                       set-interline-space|tabular-valign-top|tabular-valign-middle|\n
+                       tabular-valign-bottom|set-tabular-width|toggle-varwidth-column|\n
+                       set-border-lines|toggle-border-lines|set-inner-lines|toggle-inner-lines
                Various math-environment features are handled as well, e.g. add-vline-left/right for\n
                the Grid/Array environment.\n
                <ARG>: additional argument for some commands, use debug mode to explore its values.
diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 24bde65..17d58dd 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -164,6 +164,7 @@ TabularFeature tabularFeature[] =
 	{ Tabular::UNSET_MULTIROW, "unset-multirow", false },
 	{ Tabular::SET_MROFFSET, "set-mroffset", true },
 	{ Tabular::SET_ALL_LINES, "set-all-lines", false },
+	{ Tabular::TOGGLE_ALL_LINES, "toggle-all-lines", false },
 	{ Tabular::RESET_FORMAL_DEFAULT, "reset-formal-default", false },
 	{ Tabular::UNSET_ALL_LINES, "unset-all-lines", false },
 	{ Tabular::TOGGLE_LONGTABULAR, "toggle-longtabular", false },
@@ -201,6 +202,7 @@ TabularFeature tabularFeature[] =
 	{ Tabular::SET_BOTTOM_SPACE, "set-bottom-space", true },
 	{ Tabular::SET_INTERLINE_SPACE, "set-interline-space", true },
 	{ Tabular::SET_BORDER_LINES, "set-border-lines", false },
+	{ Tabular::TOGGLE_BORDER_LINES, "toggle-border-lines", false },
 	{ Tabular::TABULAR_VALIGN_TOP, "tabular-valign-top", false},
 	{ Tabular::TABULAR_VALIGN_MIDDLE, "tabular-valign-middle", false},
 	{ Tabular::TABULAR_VALIGN_BOTTOM, "tabular-valign-bottom", false},
@@ -210,6 +212,7 @@ TabularFeature tabularFeature[] =
 	{ Tabular::SET_DECIMAL_POINT, "set-decimal-point", true },
 	{ Tabular::SET_TABULAR_WIDTH, "set-tabular-width", true },
 	{ Tabular::SET_INNER_LINES, "set-inner-lines", false },
+	{ Tabular::TOGGLE_INNER_LINES, "toggle-inner-lines", false },
 	{ Tabular::LAST_ACTION, "", false }
 };
 
@@ -1121,6 +1124,76 @@ bool Tabular::rightLine(idx_type cell, bool const ignore_bt) const
 }
 
 
+bool Tabular::outsideBorders(
+	row_type const sel_row_start, row_type const sel_row_end,
+	col_type const sel_col_start, col_type const sel_col_end) const
+{
+	if (!use_booktabs)
+		for (row_type r = sel_row_start; r <= sel_row_end; ++r) {
+			if (!leftLine(cellIndex(r, sel_col_start))
+				|| !rightLine(cellIndex(r, sel_col_end)))
+				return false;
+		}
+	for (col_type c = sel_col_start; c <= sel_col_end; ++c) {
+		if (!topLine(cellIndex(sel_row_start, c))
+			|| !bottomLine(cellIndex(sel_row_end, c)))
+			return false;
+	}
+	return true;
+}
+
+
+bool Tabular::innerBorders(
+	row_type const sel_row_start, row_type const sel_row_end,
+	col_type const sel_col_start, col_type const sel_col_end) const
+{
+	// Single cell has no inner borders
+	if (sel_row_start == sel_row_end && sel_col_start == sel_col_end)
+		return false;
+	for (row_type r = sel_row_start; r <= sel_row_end; ++r)
+		for (col_type c = sel_col_start; c <= sel_col_end; ++c) {
+			idx_type const cell = cellIndex(r, c);
+			if ((r != sel_row_start && !topLine(cell)
+					&& cell_info[r][c].multirow != CELL_PART_OF_MULTIROW)
+				|| (!use_booktabs
+					&& c != sel_col_start && !leftLine(cell)
+					&& cell_info[r][c].multicolumn != CELL_PART_OF_MULTICOLUMN))
+				return false;
+		}
+	return true;
+}
+
+
+void Tabular::setLines(
+	row_type const sel_row_start, row_type const sel_row_end,
+	col_type const sel_col_start, col_type const sel_col_end,
+	bool setLinesInnerOnly, bool setLines)
+{
+	for (row_type r = sel_row_start; r <= sel_row_end; ++r)
+		for (col_type c = sel_col_start; c <= sel_col_end; ++c) {
+			idx_type const cell = cellIndex(r, c);
+			if (!(setLinesInnerOnly && r == sel_row_start)
+				// for multirows, cell is taken care of at beginning
+				&& cell_info[r][c].multirow != CELL_PART_OF_MULTIROW)
+				setTopLine(cell, setLines);
+			if (!(setLinesInnerOnly && r == sel_row_end)
+				&&  (r == sel_row_end || (!setLines
+					// for multirows, cell is taken care of at the last part
+					&& cell_info[r + 1][c].multirow != CELL_PART_OF_MULTIROW)))
+				setBottomLine(cell, setLines);
+			if (!(setLinesInnerOnly && c == sel_col_start)
+				// for multicolumns, cell is taken care of at beginning
+				&& cell_info[r][c].multicolumn != CELL_PART_OF_MULTICOLUMN)
+				setLeftLine(cell, setLines);
+			if (!(setLinesInnerOnly && c == sel_col_end)
+				&& (c == sel_col_end || (!setLines
+					// for multicolumns, cell is taken care of at the last part
+					&& cell_info[r][c + 1].multicolumn != CELL_PART_OF_MULTICOLUMN)))
+				setRightLine(cell, setLines);
+		}
+}
+
+
 pair<bool, bool> Tabular::topLineTrim(idx_type const cell) const
 {
 	if (!use_booktabs)
@@ -5657,9 +5730,28 @@ bool InsetTabular::getFeatureStatus(Cursor & cur, string const & s,
 			status.setOnOff(tabular.isMultiRow(cur.idx()));
 			break;
 
+		case Tabular::TOGGLE_INNER_LINES:
+			status.setOnOff(tabular.innerBorders(sel_row_start, sel_row_end,
+												 sel_col_start, sel_col_end));
+			status.setEnabled(!tabular.ltCaption(tabular.cellRow(cur.idx())));
+			break;
+		case Tabular::TOGGLE_ALL_LINES:
+			status.setOnOff(tabular.innerBorders(sel_row_start, sel_row_end,
+												 sel_col_start, sel_col_end)
+						&& tabular.outsideBorders(sel_row_start, sel_row_end,
+												  sel_col_start, sel_col_end));
+			status.setEnabled(!tabular.ltCaption(tabular.cellRow(cur.idx())));
+			break;
 		case Tabular::SET_ALL_LINES:
 		case Tabular::UNSET_ALL_LINES:
 		case Tabular::SET_INNER_LINES:
+			status.setEnabled(!tabular.ltCaption(tabular.cellRow(cur.idx())));
+			break;
+
+		case Tabular::TOGGLE_BORDER_LINES:
+			status.setOnOff(tabular.outsideBorders(sel_row_start, sel_row_end,
+												   sel_col_start, sel_col_end));
+			// fall through
 		case Tabular::SET_BORDER_LINES:
 			status.setEnabled(!tabular.ltCaption(tabular.cellRow(cur.idx())));
 			break;
@@ -6511,7 +6603,7 @@ void InsetTabular::tabularFeatures(Cursor & cur,
 	row_type sel_row_start;
 	row_type sel_row_end;
 	bool setLines = false;
-	bool setLinesInnerOnly = false;
+	bool toggle = false;
 	LyXAlignment setAlign = LYX_ALIGN_LEFT;
 	Tabular::VAlignment setVAlign = Tabular::LYX_VALIGN_TOP;
 
@@ -6935,27 +7027,36 @@ void InsetTabular::tabularFeatures(Cursor & cur,
 		break;
 	}
 
+	case Tabular::TOGGLE_INNER_LINES:
+		toggle = true;
+		// fall through
 	case Tabular::SET_INNER_LINES:
-		setLinesInnerOnly = true;
+		if (toggle)
+			setLines = !tabular.innerBorders(sel_row_start, sel_row_end,
+										     sel_col_start, sel_col_end);
+		else
+			setLines = true;
+		tabular.setLines(sel_row_start, sel_row_end,
+						 sel_col_start, sel_col_end,
+						 true, setLines);
+		break;
+
+	case Tabular::TOGGLE_ALL_LINES:
+		toggle = true;
 		// fall through
 	case Tabular::SET_ALL_LINES:
-		setLines = true;
+		if (toggle)
+			setLines = !tabular.innerBorders(sel_row_start, sel_row_end,
+										     sel_col_start, sel_col_end)
+					|| !tabular.outsideBorders(sel_row_start, sel_row_end,
+										       sel_col_start, sel_col_end);
+		else
+			setLines = true;
 		// fall through
 	case Tabular::UNSET_ALL_LINES:
-		for (row_type r = sel_row_start; r <= sel_row_end; ++r)
-			for (col_type c = sel_col_start; c <= sel_col_end; ++c) {
-				idx_type const cell = tabular.cellIndex(r, c);
-				if (!setLinesInnerOnly || r != sel_row_start)
-					tabular.setTopLine(cell, setLines);
-				if ((!setLinesInnerOnly || r != sel_row_end)
-				    && (!setLines || r == sel_row_end))
-					tabular.setBottomLine(cell, setLines);
-				if ((!setLinesInnerOnly || c != sel_col_end)
-				    && (!setLines || c == sel_col_end))
-					tabular.setRightLine(cell, setLines);
-				if ((!setLinesInnerOnly || c != sel_col_start))
-					tabular.setLeftLine(cell, setLines);
-			}
+		tabular.setLines(sel_row_start, sel_row_end,
+						 sel_col_start, sel_col_end,
+						 false, setLines);
 		break;
 
 	case Tabular::RESET_FORMAL_DEFAULT:
@@ -6969,16 +7070,24 @@ void InsetTabular::tabularFeatures(Cursor & cur,
 		}
 		break;
 
-	case Tabular::SET_BORDER_LINES:
+	case Tabular::TOGGLE_BORDER_LINES:
+		toggle = true;
+		// fall through
+	case Tabular::SET_BORDER_LINES: {
+		bool const border = toggle &&
+				tabular.outsideBorders(sel_row_start, sel_row_end,
+									   sel_col_start, sel_col_end)
+				? false : true;
 		for (row_type r = sel_row_start; r <= sel_row_end; ++r) {
-			tabular.setLeftLine(tabular.cellIndex(r, sel_col_start), true);
-			tabular.setRightLine(tabular.cellIndex(r, sel_col_end), true);
+			tabular.setLeftLine(tabular.cellIndex(r, sel_col_start), border);
+			tabular.setRightLine(tabular.cellIndex(r, sel_col_end), border);
 		}
 		for (col_type c = sel_col_start; c <= sel_col_end; ++c) {
-			tabular.setTopLine(tabular.cellIndex(sel_row_start, c), true);
-			tabular.setBottomLine(tabular.cellIndex(sel_row_end, c), true);
+			tabular.setTopLine(tabular.cellIndex(sel_row_start, c), border);
+			tabular.setBottomLine(tabular.cellIndex(sel_row_end, c), border);
 		}
 		break;
+	}
 
 	case Tabular::TOGGLE_LONGTABULAR:
 		if (tabular.is_long_tabular)
diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h
index 0d4e7af..645da68 100644
--- a/src/insets/InsetTabular.h
+++ b/src/insets/InsetTabular.h
@@ -341,6 +341,12 @@ public:
 		///
 		SET_INNER_LINES,
 		///
+		TOGGLE_INNER_LINES,
+		///
+		TOGGLE_BORDER_LINES,
+		///
+		TOGGLE_ALL_LINES,
+		///
 		LAST_ACTION
 	};
 	///
@@ -445,6 +451,18 @@ public:
 	/// If \p ignore_bt is true, we return the state as if booktabs was
 	/// not used
 	bool rightLine(idx_type cell, bool const ignore_bt = false) const;
+	/// Returns true if there is an outside border around the selection
+	bool outsideBorders(row_type sel_row_start, row_type sel_row_end,
+						col_type sel_col_start, col_type sel_col_end) const;
+	/// Returns true if there are inside lines in the selection
+	bool innerBorders(row_type sel_row_start, row_type sel_row_end,
+					  col_type sel_col_start, col_type sel_col_end) const;
+	/// Sets the grid lines in the selection
+	/// if \p setLinesInnerOnly is true, outside borders are excluded
+	/// if \p setLines is true the lines are set otherwise they are unset
+	void setLines(row_type const sel_row_start, row_type const sel_row_end,
+				  col_type const sel_col_start, col_type const sel_col_end,
+				  bool setLinesInnerOnly, bool setLines);
 	/// Returns whether the top line is trimmed left and/or right
 	std::pair<bool, bool> topLineTrim(idx_type const cell) const;
 	/// Returns whether the bottom line is trimmed left and/or right

commit a88f67ac6018e9bb10650ae230a1e3437d3821ae
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Mar 13 10:26:26 2022 +0100

    Fix signal (#12506)

diff --git a/src/frontends/qt/GuiBox.cpp b/src/frontends/qt/GuiBox.cpp
index ddd5775..bda71a6 100644
--- a/src/frontends/qt/GuiBox.cpp
+++ b/src/frontends/qt/GuiBox.cpp
@@ -118,7 +118,7 @@ GuiBox::GuiBox(QWidget * parent) : InsetParamsWidget(parent)
 	connect(widthED, SIGNAL(textChanged(QString)), this, SIGNAL(changed()));
 	connect(widthUnitsLC, SIGNAL(selectionChanged(lyx::Length::UNIT)),
 		this, SIGNAL(changed()));
-	connect(valignCO, SIGNAL(highlighted(QString)), this, SIGNAL(changed()));
+	connect(valignCO, SIGNAL(activated(int)), this, SIGNAL(changed()));
 	connect(heightED, SIGNAL(textChanged(QString)), this, SIGNAL(changed()));
 	connect(heightUnitsLC, SIGNAL(selectionChanged(lyx::Length::UNIT)),
 		this, SIGNAL(changed()));

commit d01f1428bee2d49b806367435572c0bee246a72a
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Sat Mar 12 07:41:00 2022 -0500

    ctests: log a fixed issue

diff --git a/development/autotests/ctests-costs-benefits.txt b/development/autotests/ctests-costs-benefits.txt
index cc66eb9..9418e63 100644
--- a/development/autotests/ctests-costs-benefits.txt
+++ b/development/autotests/ctests-costs-benefits.txt
@@ -70,6 +70,13 @@ Fix    : d66c27de
 Report : https://www.mail-archive.com/search?l=mid&q=20220206142559.rpgwki7wruhtasxp%40gary
 Fix    : f71f71d0
 
+Report : https://www.mail-archive.com/search?l=mid&q=20220310131706.qdthdjblfpme2wew%40gary
+Fix    : dc502c82
+ctests : examples/Welcome_pdf2
+
+
+
+
 
 Examples where upstream (e.g., LaTeX packages) bugs were fixed (more quickly)
 because of ctests:

commit dc502c827985e1d0399ab0009aa6f807d14d5267
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Thu Mar 10 17:10:17 2022 +0100

    Fixup 12dfdbf0: intercept validate(), not latex()
    
    The fake contents of the inset should be created before validate(), so
    that the correct packages are loaded.

diff --git a/src/insets/InsetInfo.cpp b/src/insets/InsetInfo.cpp
index f29f983..67aca81 100644
--- a/src/insets/InsetInfo.cpp
+++ b/src/insets/InsetInfo.cpp
@@ -1226,10 +1226,10 @@ void InsetInfo::build()
 }
 
 
-void InsetInfo::latex(otexstream & os, OutputParams const & runparams) const
+void InsetInfo::validate(LaTeXFeatures & features) const
 {
 	const_cast<InsetInfo *>(this)->build();
-	InsetCollapsible::latex(os, runparams);
+	InsetCollapsible::validate(features);
 }
 
 
diff --git a/src/insets/InsetInfo.h b/src/insets/InsetInfo.h
index 244f153..3531b41 100644
--- a/src/insets/InsetInfo.h
+++ b/src/insets/InsetInfo.h
@@ -217,7 +217,7 @@ public:
 	/// should paragraph indentation be omitted in any case?
 	bool neverIndent() const override { return true; }
 	///
-	void latex(otexstream &, OutputParams const &) const override;
+	void validate(LaTeXFeatures & features) const override;
 	///
 	InsetInfoParams params() const { return params_; }
 

commit a6db1383f5dc1a8647ec3b28e0bc3671a8afd376
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Thu Mar 10 13:35:45 2022 +0100

    Get rid of spelling and language marks in info inset
    
    These are just annoying. Note that the language mark cannot currently
    be specified in a layout file, but it is not clear that there is a
    need for that. Therefore I used the simple and hackish way.

diff --git a/lib/layouts/stdinsets.inc b/lib/layouts/stdinsets.inc
index 606765f..32a0af3 100644
--- a/lib/layouts/stdinsets.inc
+++ b/lib/layouts/stdinsets.inc
@@ -622,6 +622,7 @@ InsetLayout Info
 	EndHTMLStyle
 	HTMLTag               span
 	MultiPar              false
+	SpellCheck	      false
 End
 
 InsetLayout Info:menu
diff --git a/src/insets/InsetInfo.cpp b/src/insets/InsetInfo.cpp
index 65b0d12..f29f983 100644
--- a/src/insets/InsetInfo.cpp
+++ b/src/insets/InsetInfo.cpp
@@ -38,6 +38,7 @@
 
 #include "frontends/Application.h"
 
+#include "support/Changer.h"
 #include "support/convert.h"
 #include "support/debug.h"
 #include "support/docstream.h"
@@ -779,6 +780,12 @@ void InsetInfo::metrics(MetricsInfo & mi, Dimension & dim) const
 }
 
 
+void InsetInfo::draw(PainterInfo & pi, int x, int y) const
+{
+	Changer chg = changeVar(lyxrc.mark_foreign_language, false);
+	InsetCollapsible::draw(pi, x, y);
+}
+
 void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted)
 
 {
diff --git a/src/insets/InsetInfo.h b/src/insets/InsetInfo.h
index 3cfdec1..244f153 100644
--- a/src/insets/InsetInfo.h
+++ b/src/insets/InsetInfo.h
@@ -203,8 +203,12 @@ public:
 	void setInfo(std::string const & info);
 	///
 	void updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted = false) override;
+	///
 	void metrics(MetricsInfo & mi, Dimension & dim) const override;
 	///
+	void draw(PainterInfo & pi, int x, int y) const override;
+
+	///
 	docstring toolTip(BufferView const & bv, int x, int y) const override;
 	///
 	std::string contextMenu(BufferView const &, int, int) const override;

commit 12dfdbf0a3e667544fd3f0af7fe86b26909fd6a0
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Thu Mar 10 12:19:44 2022 +0100

    Fix crash in InsetInfo when bindings change
    
    This is actually a generic InsetInfo issue:
    
    1/ the contents of the inset is computed in updateBuffer, so that it
       is available for drawing but also for latex output (think batch
       export). When it is called, it deletes the existing inner paragraph
       and replaces it by a new one
    
    2/ metrics build a new Row object that represents to paragraph
    
    3/ draw() relies on this information
    
    Now, imagine that updateBuffer() is called after metrics(). This can
    happen for many reasons, and does happen here (display a shortcut info
    and change the shortcut file from cua to emacs).
    
    This problem has been here forever, but is only visible now that the
    (experimental) bookmark display code needs to read the underlying
    paragraph id.
    
    The solution is to compute the inset contents at metrics time. This
    is done by moving the relevant code to a new standalone build() method
    that is called in metrics() but also in latex().

diff --git a/src/insets/InsetInfo.cpp b/src/insets/InsetInfo.cpp
index 61b39ad..65b0d12 100644
--- a/src/insets/InsetInfo.cpp
+++ b/src/insets/InsetInfo.cpp
@@ -772,7 +772,16 @@ bool InsetInfo::forceLocalFontSwitch() const
 }
 
 
-void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted) {
+void InsetInfo::metrics(MetricsInfo & mi, Dimension & dim) const
+{
+	const_cast<InsetInfo *>(this)->build();
+	InsetCollapsible::metrics(mi, dim);
+}
+
+
+void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted)
+
+{
 	// If the Buffer is a clone, then we neither need nor want to do any
 	// of what follows. We want, rather, just to inherit how things were
 	// in the original Buffer. This is especially important for VCS.
@@ -780,9 +789,22 @@ void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool cons
 	// than in the Buffer we were exporting.
 	if (buffer().isClone())
 		return;
-
 	BufferParams const & bp = buffer().params();
 	params_.lang = it.paragraph().getFontSettings(bp, it.pos()).language();
+	InsetCollapsible::updateBuffer(it, utype, deleted);
+}
+
+
+void InsetInfo::build()
+{
+	// If the Buffer is a clone, then we neither need nor want to do any
+	// of what follows. We want, rather, just to inherit how things were
+	// in the original Buffer. This is especially important for VCS.
+	// Otherwise, we could in principle have different settings here
+	// than in the Buffer we were exporting.
+	if (buffer().isClone())
+		return;
+
 	Language const * tryguilang = languages.getFromCode(Messages::guiLanguage());
 	// Some info insets use the language of the GUI (if available)
 	Language const * guilang = tryguilang ? tryguilang : params_.lang;
@@ -1106,7 +1128,7 @@ void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool cons
 		else if (params_.name == "path")
 			setText(from_utf8(os::latex_path(buffer().filePath())), params_.lang);
 		else if (params_.name == "class")
-			setText(from_utf8(bp.documentClass().name()), params_.lang);
+			setText(from_utf8(buffer().params().documentClass().name()), params_.lang);
 		break;
 	}
 	case InsetInfoParams::VCS_INFO: {
@@ -1194,7 +1216,13 @@ void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool cons
 
 	// Just to do something with that string
 	LYXERR(Debug::INFO, "info inset text: " << gui);
-	InsetCollapsible::updateBuffer(it, utype, deleted);
+}
+
+
+void InsetInfo::latex(otexstream & os, OutputParams const & runparams) const
+{
+	const_cast<InsetInfo *>(this)->build();
+	InsetCollapsible::latex(os, runparams);
 }
 
 
diff --git a/src/insets/InsetInfo.h b/src/insets/InsetInfo.h
index 8f574fc..3cfdec1 100644
--- a/src/insets/InsetInfo.h
+++ b/src/insets/InsetInfo.h
@@ -203,6 +203,7 @@ public:
 	void setInfo(std::string const & info);
 	///
 	void updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted = false) override;
+	void metrics(MetricsInfo & mi, Dimension & dim) const override;
 	///
 	docstring toolTip(BufferView const & bv, int x, int y) const override;
 	///
@@ -212,6 +213,8 @@ public:
 	/// should paragraph indentation be omitted in any case?
 	bool neverIndent() const override { return true; }
 	///
+	void latex(otexstream &, OutputParams const &) const override;
+	///
 	InsetInfoParams params() const { return params_; }
 
 private:
@@ -225,6 +228,8 @@ private:
 	void setText(docstring const & str, Language const *);
 	// make sure that the other version of setText is still available.
 	using InsetCollapsible::setText;
+	/// Compute the information
+	void build();
 	///
 	bool initialized_;
 	///

commit 498a5cd487482f1a97c2c9f305b9e10fc041631e
Author: Kornel Benko <kornel at lyx.org>
Date:   Thu Mar 10 10:51:02 2022 +0100

    FindAdv: Added possibility to search also in deactvated branches
    
    To include content of deactivated branches to the searched region
    one has to use the lyx-funcion
    	search-ignore non-output-content true

diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index 704b37a..164327b 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -3508,7 +3508,7 @@ void LyXAction::init()
  * \var lyx::FuncCode lyx::LFUN_SEARCH_IGNORE
  * \li Action: Enables/disables searching for features in findadv
  * \li Syntax: search-ignore <type> <value>
- * \li Params: <type>: language|color|sectioning|font|series|shape|family|markup|underline|strike|deleted\n
+ * \li Params: <type>: language|color|sectioning|font|series|shape|family|markup|underline|strike|deleted|non-output-content\n
  * \li Params: <value>: true|false
  * \endvar
  */
diff --git a/src/OutputParams.h b/src/OutputParams.h
index a909ddd..d00ec02 100644
--- a/src/OutputParams.h
+++ b/src/OutputParams.h
@@ -426,12 +426,13 @@ public:
 
 	/// Are we generating this material for use by advanced search?
 	enum Search {
-		NoSearch,
-		SearchWithDeleted,
-		SearchWithoutDeleted
+		NoSearch = 0,
+		SearchWithDeleted = 1,
+		SearchWithoutDeleted = 2,
+		SearchNonOutput = 8
 	};
 		
-	enum Search for_searchAdv = NoSearch;
+	int for_searchAdv = NoSearch;
 
 	/// Are we generating this material for instant preview?
 	bool for_preview = false;
diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index b9ac139..be133b1 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -2643,7 +2643,7 @@ void Paragraph::latex(BufferParams const & bparams,
 		if (runparams.for_searchAdv == OutputParams::NoSearch)
 			output_changes = bparams.output_changes;
 		else
-			output_changes = (runparams.for_searchAdv == OutputParams::SearchWithDeleted);
+			output_changes = ((runparams.for_searchAdv & OutputParams::SearchWithDeleted) != 0);
 		if (c == META_INSET
 		    && i >= start_pos && (end_pos == -1 || i < end_pos)) {
 			if (isDeleted(i))
diff --git a/src/insets/InsetBranch.cpp b/src/insets/InsetBranch.cpp
index be8e551..2b60ca6 100644
--- a/src/insets/InsetBranch.cpp
+++ b/src/insets/InsetBranch.cpp
@@ -314,7 +314,7 @@ bool InsetBranch::producesOutput() const
 
 void InsetBranch::latex(otexstream & os, OutputParams const & runparams) const
 {
-	if (producesOutput()) {
+	if (producesOutput() || ((runparams.for_searchAdv & OutputParams::SearchNonOutput) != 0)) {
 		OutputParams rp = runparams;
 		rp.inbranch = true;
 		InsetText::latex(os, rp);
@@ -328,7 +328,7 @@ void InsetBranch::latex(otexstream & os, OutputParams const & runparams) const
 int InsetBranch::plaintext(odocstringstream & os,
 			   OutputParams const & runparams, size_t max_length) const
 {
-	if (!producesOutput())
+	if (!producesOutput() && ((runparams.for_searchAdv & OutputParams::SearchNonOutput) == 0))
 		return 0;
 
 	int len = InsetText::plaintext(os, runparams, max_length);
diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index a3ce988..54bceaa 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -106,6 +106,8 @@ class IgnoreFormats {
 	///
 	void setIgnoreDeleted(bool value);
 	///
+	bool getNonContent() const { return searchNonContent_; }
+	///
 	void setIgnoreFormat(string const & type, bool value, bool fromUser = true);
 
 private:
@@ -132,6 +134,8 @@ private:
 	bool userSelectedIgnoreLanguage_ = false;
 	///
 	bool ignoreDeleted_ = true;
+	///
+	bool searchNonContent_ = true;
 };
 
 void IgnoreFormats::setIgnoreFormat(string const & type, bool value, bool fromUser)
@@ -177,6 +181,9 @@ void IgnoreFormats::setIgnoreFormat(string const & type, bool value, bool fromUs
 	else if (type == "deleted") {
 		ignoreDeleted_ = value;
 	}
+	else if (type == "non-output-content") {
+		searchNonContent_ = !value;
+	}
 }
 
 // The global variable that can be changed from outside
@@ -1059,6 +1066,9 @@ static docstring buffer_to_latex(Buffer & buffer)
 		runparams.for_searchAdv = OutputParams::SearchWithoutDeleted;
 	else
 		runparams.for_searchAdv = OutputParams::SearchWithDeleted;
+	if (ignoreFormats.getNonContent()) {
+		runparams.for_searchAdv |= OutputParams::SearchNonOutput;
+	}
 	pit_type const endpit = buffer.paragraphs().size();
 	for (pit_type pit = 0; pit != endpit; ++pit) {
 		TeXOnePar(buffer, buffer.text(), pit, os, runparams);
@@ -1088,6 +1098,9 @@ static docstring stringifySearchBuffer(Buffer & buffer, FindAndReplaceOptions co
 		else {
 			runparams.for_searchAdv = OutputParams::SearchWithDeleted;
 		}
+		if (ignoreFormats.getNonContent()) {
+			runparams.for_searchAdv |= OutputParams::SearchNonOutput;
+		}
 		for (pos_type pit = pos_type(0); pit < (pos_type)buffer.paragraphs().size(); ++pit) {
 			Paragraph const & par = buffer.paragraphs().at(pit);
 			LYXERR(Debug::FIND, "Adding to search string: '"
@@ -3829,6 +3842,9 @@ docstring stringifyFromCursor(DocIterator const & cur, int len)
 		else {
 			runparams.for_searchAdv = OutputParams::SearchWithDeleted;
 		}
+		if (ignoreFormats.getNonContent()) {
+			runparams.for_searchAdv |= OutputParams::SearchNonOutput;
+		}
 		LYXERR(Debug::FIND, "Stringifying with cur: "
 		       << cur << ", from pos: " << cur.pos() << ", end: " << end);
 		return par.asString(cur.pos(), end,
@@ -3853,7 +3869,6 @@ docstring stringifyFromCursor(DocIterator const & cur, int len)
 	return docstring();
 }
 
-
 /** Computes the LaTeX export of buf starting from cur and ending len positions
  * after cur, if len is positive, or at the paragraph or innermost inset end
  * if len is -1.
@@ -3882,6 +3897,9 @@ docstring latexifyFromCursor(DocIterator const & cur, int len)
 	else {
 		runparams.for_searchAdv = OutputParams::SearchWithDeleted;
 	}
+	if (ignoreFormats.getNonContent()) {
+		runparams.for_searchAdv |= OutputParams::SearchNonOutput;
+	}
 
 	if (cur.inTexted()) {
 		// @TODO what about searching beyond/across paragraph breaks ?
diff --git a/src/output_latex.cpp b/src/output_latex.cpp
index bf841fe..61537c8 100644
--- a/src/output_latex.cpp
+++ b/src/output_latex.cpp
@@ -465,7 +465,7 @@ void TeXEnvironment(Buffer const & buf, Text const & text,
 		if (runparams.for_searchAdv == OutputParams::NoSearch)
 			output_changes = buf.params().output_changes;
 		else
-			output_changes = (runparams.for_searchAdv == OutputParams::SearchWithDeleted);
+			output_changes = ((runparams.for_searchAdv & OutputParams::SearchWithDeleted) != 0);
 		if (size_t(pit + 1) < paragraphs.size()) {
 			ParagraphList::const_iterator nextpar = paragraphs.iterator_at(pit + 1);
 			Paragraph const & cpar = paragraphs.at(pit);
@@ -796,7 +796,7 @@ void TeXOnePar(Buffer const & buf,
 
 	// Do not output empty commands if the whole paragraph has
 	// been deleted with ct and changes are not output.
-	if ((runparams_in.for_searchAdv != OutputParams::SearchWithDeleted) && style.latextype != LATEX_ENVIRONMENT
+	if (((runparams_in.for_searchAdv & OutputParams::SearchWithDeleted) == 0) && style.latextype != LATEX_ENVIRONMENT
 	    && !par.empty() && par.isDeleted(0, par.size()) && !bparams.output_changes)
 		return;
 
@@ -1711,7 +1711,7 @@ void latexParagraphs(Buffer const & buf,
 		if (runparams.for_searchAdv == OutputParams::NoSearch)
 			output_changes = bparams.output_changes;
 		else
-			output_changes = (runparams.for_searchAdv == OutputParams::SearchWithDeleted);
+			output_changes = ((runparams.for_searchAdv & OutputParams::SearchWithDeleted) != 0);
 		bool const lastpar = size_t(pit + 1) >= paragraphs.size();
 		if (!lastpar) {
 			ParagraphList::const_iterator nextpar = paragraphs.iterator_at(pit + 1);

commit b257e2999b71d1caf619cb99dda0197c9a4141c8
Author: Pavel Sanda <sanda at lyx.org>
Date:   Tue Mar 8 21:50:48 2022 +0100

    Correct fix for search-ignore docs.

diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index a4856bf..704b37a 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -3508,7 +3508,7 @@ void LyXAction::init()
  * \var lyx::FuncCode lyx::LFUN_SEARCH_IGNORE
  * \li Action: Enables/disables searching for features in findadv
  * \li Syntax: search-ignore <type> <value>
- * \li Params: <type>: language|color|sectioning|font|series|shape|family|markup|underline|strike|deleted
+ * \li Params: <type>: language|color|sectioning|font|series|shape|family|markup|underline|strike|deleted\n
  * \li Params: <value>: true|false
  * \endvar
  */

commit ae31e1695268347de373eedf187523ac5736b438
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Tue Mar 8 11:53:10 2022 -0500

    lyx2lyx: prefix warning messages with "lyx2lyx"
    
    Both lyx2lyx and LyX write output to the terminal, and it's helpful
    to know which messages are coming from lyx2lyx. For example, before
    this commit if we opened a document in LyX that has a newer file format than
    lyx2lyx can deal with, we see the following output in the terminal:
    
      Warning: 619: Format not supported.
      Warning: Quitting.
      Error: Document format failure
    
    The first two lines (the warnings) are output from lyx2lyx, and the
    third is output by LyX. This output was particularly confusing
    because I first thought "LyX tries to quit if the document is too
    new?", but in fact LyX still stays open; it just doesn't open the
    document. After this change, the output is now the following:
    
      lyx2lyx warning: 619: Format not supported.
      lyx2lyx warning: Quitting.
      Error: Document format failure

diff --git a/lib/lyx2lyx/LyX.py b/lib/lyx2lyx/LyX.py
index 3d62da5..50c98d2 100644
--- a/lib/lyx2lyx/LyX.py
+++ b/lib/lyx2lyx/LyX.py
@@ -294,7 +294,7 @@ class LyX_base:
         """ Emits warning to self.error, if the debug_level is less
         than the self.debug."""
         if debug_level <= self.debug:
-            self.err.write("Warning: " + message + "\n")
+            self.err.write("lyx2lyx warning: " + message + "\n")
 
 
     def error(self, message):

commit d15a96d93d0af675a88cfa90ae1a16f161914385
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Mar 8 16:16:50 2022 +0100

    updateBuffer needs an undo group
    
    Otherwise warning messages appear when loading a file that contains
    missing modules, for example (which may require to adjust depths in
    document).

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 5295a4b..1867e75 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -4935,6 +4935,10 @@ void Buffer::updateBuffer(UpdateScope scope, UpdateType utype) const
 {
 	LBUFERR(!text().paragraphs().empty());
 
+	// This can be called when loading a file, so that there be no
+	// open undo group.
+	UndoGroupHelper ugh(const_cast<Buffer *>(this));
+
 	// Use the master text class also for child documents
 	Buffer const * const master = masterBuffer();
 	DocumentClass const & textclass = master->params().documentClass();

commit 955308de57822070329a54538d528967c87f0883
Author: Enrico Forestieri <forenr at lyx.org>
Date:   Sun Mar 6 23:01:56 2022 +0100

    Amend 3f9e21b8
    
    This avoids a compile error on cygwin.

diff --git a/src/Encoding.h b/src/Encoding.h
index 9668336..4913ddc 100644
--- a/src/Encoding.h
+++ b/src/Encoding.h
@@ -113,10 +113,10 @@ public:
 private:
 	/// LaTeX commands (text mode) for this character. The first one is the default, the others
 	/// are only present for compatibility other ways users may encode the character
-	std::vector<trivdocstring> text_commands_;
+	std::vector<docstring> text_commands_;
 	/// LaTeX command (math mode) for this character. The first one is the default, the others
 	//	/// are only present for compatibility other ways users may encode the character
-	std::vector<trivdocstring> math_commands_;
+	std::vector<docstring> math_commands_;
 	/// Needed LaTeX preamble (or feature) for text mode
 	trivstring text_preamble_;
 	/// Needed LaTeX preamble (or feature) for math mode

commit 1c2628b5de383724daa8a203ad3878044a5eb304
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Mar 6 17:27:28 2022 +0100

    Do not try to access user_defined_bullet with nesting > 3
    
    We only have 4 nesting labels available.
    
    In the workarea, display a fallback label with deeper nesting.

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 54272a7..5295a4b 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -5158,7 +5158,10 @@ void Buffer::Impl::setLabel(ParIterator & it, UpdateType utype) const
 	switch(layout.labeltype) {
 	case LABEL_ITEMIZE: {
 		par.params().labelString(
-			bp.user_defined_bullet(par.itemdepth).getLabel());
+			(par.itemdepth < 4)
+					? bp.user_defined_bullet(par.itemdepth).getLabel()
+					  // Display fallback for too deeply nested items
+					: bformat(from_ascii("[?%1$d]"), int(par.itemdepth + 1)));
 		break;
 	}
 
diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp
index 84848ec..4f5593e 100644
--- a/src/RowPainter.cpp
+++ b/src/RowPainter.cpp
@@ -434,7 +434,7 @@ void RowPainter::paintLabel() const
 	FontInfo lfont = font;
 
 	// bullet?
-	if (layout.labeltype == LABEL_ITEMIZE) {
+	if (layout.labeltype == LABEL_ITEMIZE && par_.itemdepth < 4) {
 		// get label font size from document properties
 		lfont.setSize(pi_.base.bv->buffer().params().user_defined_bullet(par_.itemdepth).getFontSize());
 		// realize to avoid assertion

commit a175caf256a5d3918a23e1c0055caf80c6e1b2e7
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Sun Mar 6 09:15:16 2022 -0500

    ctests: uninvert 2 LuaTeX tests fixed on TL21
    
    These exports now pass, and a quick check of the output looks good.
    
    These might have been fixed (although it is just a guess) due to the
    following entry in the changelog of luaotfload v3.19:
    
      A new algorithm for selecting fonts based on font family names
      allows to more reliably load fonts based on their family name.
    
    This commit reverts 2a665dcc.

diff --git a/development/autotests/invertedTests b/development/autotests/invertedTests
index ffef561..4a3be50 100644
--- a/development/autotests/invertedTests
+++ b/development/autotests/invertedTests
@@ -281,17 +281,6 @@ export/export/latex/languages/he-.*(dvi3|pdf5)_texF
 export/export/latex/languages/supported-languages_(dvi3|pdf5)_texF
 export/export/latex/languages/supported-languages_babel_(dvi3|pdf5)_texF
 export/templates/Articles/Hebrew_Article_%28KOMA-Script%29_(dvi3|pdf5)_texF
-#
-# DavidCLM is not found. Comments from Jürgen:
-#   luaotfload does not find "DavidCLM". In fact, at least on my system,
-#   there is no such font, only "DavidCLM Medium" (and other shapes). This
-#   one is found. Apparently, luaotfload cannot infer from the one to the
-#   other.
-#   As opposed to LuaTEX, XeTeX also queries TEXMF so maybe it just finds
-#   its font there.
-# See ML thread:
-# https://www.mail-archive.com/search?l=mid&q=60ee3809d30056c191d4b2e8c57a7eda60b3e382.camel%40lyx.org
-export/templates/Articles/Hebrew_Article_%28KOMA-Script%29_(dvi3|pdf5)_systemF
 
 
 # Ukrainian

commit b296941d90ef1b09bb8c64d9f312e1fedf2c9720
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Mar 6 09:48:39 2022 +0100

    Revert "Don't asssert on (too) deeply nested items"
    
    This reverts commit 44d1756783262ae0af39991e18ec9bcb847fb439.

diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index b1846be..95aa913 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -633,45 +633,29 @@ bool BufferParams::spellignored(WordLangTuple const & wl) const
 
 Bullet & BufferParams::temp_bullet(lyx::size_type const index)
 {
-	if (index < 4)
-		return pimpl_->temp_bullets[index];
-	// Fallback bullet if we are too deeply nested
-	docstring const fb = from_ascii("?") + convert<docstring>(index + 1);
-	Bullet const & res = Bullet(fb);
-	return const_cast<Bullet&>(res);
+	LASSERT(index < 4, return pimpl_->temp_bullets[0]);
+	return pimpl_->temp_bullets[index];
 }
 
 
 Bullet const & BufferParams::temp_bullet(lyx::size_type const index) const
 {
-	if (index < 4)
-		return pimpl_->temp_bullets[index];
-	// Fallback bullet if we are too deeply nested
-	docstring const fb = from_ascii("?") + convert<docstring>(index + 1);
-	Bullet const & res = Bullet(fb);
-	return res;
+	LASSERT(index < 4, return pimpl_->temp_bullets[0]);
+	return pimpl_->temp_bullets[index];
 }
 
 
 Bullet & BufferParams::user_defined_bullet(lyx::size_type const index)
 {
-	if (index < 4)
-		return pimpl_->user_defined_bullets[index];
-	// Fallback bullet if we are too deeply nested
-	docstring const fb = from_ascii("?") + convert<docstring>(index + 1);
-	Bullet const & res = Bullet(fb);
-	return const_cast<Bullet&>(res);
+	LASSERT(index < 4, return pimpl_->temp_bullets[0]);
+	return pimpl_->user_defined_bullets[index];
 }
 
 
 Bullet const & BufferParams::user_defined_bullet(lyx::size_type const index) const
 {
-	if (index < 4)
-		return pimpl_->user_defined_bullets[index];
-	// Fallback bullet if we are too deeply nested
-	docstring const fb = from_ascii("?") + convert<docstring>(index + 1);
-	Bullet const & res = Bullet(fb);
-	return res;
+	LASSERT(index < 4, return pimpl_->temp_bullets[0]);
+	return pimpl_->user_defined_bullets[index];
 }
 
 

commit 44d1756783262ae0af39991e18ec9bcb847fb439
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Mar 5 14:17:37 2022 +0100

    Don't asssert on (too) deeply nested items
    
    Use a fallback label instead.

diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index 95aa913..b1846be 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -633,29 +633,45 @@ bool BufferParams::spellignored(WordLangTuple const & wl) const
 
 Bullet & BufferParams::temp_bullet(lyx::size_type const index)
 {
-	LASSERT(index < 4, return pimpl_->temp_bullets[0]);
-	return pimpl_->temp_bullets[index];
+	if (index < 4)
+		return pimpl_->temp_bullets[index];
+	// Fallback bullet if we are too deeply nested
+	docstring const fb = from_ascii("?") + convert<docstring>(index + 1);
+	Bullet const & res = Bullet(fb);
+	return const_cast<Bullet&>(res);
 }
 
 
 Bullet const & BufferParams::temp_bullet(lyx::size_type const index) const
 {
-	LASSERT(index < 4, return pimpl_->temp_bullets[0]);
-	return pimpl_->temp_bullets[index];
+	if (index < 4)
+		return pimpl_->temp_bullets[index];
+	// Fallback bullet if we are too deeply nested
+	docstring const fb = from_ascii("?") + convert<docstring>(index + 1);
+	Bullet const & res = Bullet(fb);
+	return res;
 }
 
 
 Bullet & BufferParams::user_defined_bullet(lyx::size_type const index)
 {
-	LASSERT(index < 4, return pimpl_->temp_bullets[0]);
-	return pimpl_->user_defined_bullets[index];
+	if (index < 4)
+		return pimpl_->user_defined_bullets[index];
+	// Fallback bullet if we are too deeply nested
+	docstring const fb = from_ascii("?") + convert<docstring>(index + 1);
+	Bullet const & res = Bullet(fb);
+	return const_cast<Bullet&>(res);
 }
 
 
 Bullet const & BufferParams::user_defined_bullet(lyx::size_type const index) const
 {
-	LASSERT(index < 4, return pimpl_->temp_bullets[0]);
-	return pimpl_->user_defined_bullets[index];
+	if (index < 4)
+		return pimpl_->user_defined_bullets[index];
+	// Fallback bullet if we are too deeply nested
+	docstring const fb = from_ascii("?") + convert<docstring>(index + 1);
+	Bullet const & res = Bullet(fb);
+	return res;
 }
 
 

commit ed2e242b1e9c52d9c05892445bed0f0fceb6f4d5
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Mar 5 13:45:27 2022 +0100

    Whitespace

diff --git a/src/Bullet.cpp b/src/Bullet.cpp
index 00a13ec..4308189 100644
--- a/src/Bullet.cpp
+++ b/src/Bullet.cpp
@@ -123,7 +123,6 @@ int Bullet::getSize() const
 
 FontSize Bullet::getFontSize() const
 {
-
 	if (size >= 0)
 		return bulletFontSize(size);
 	else

commit c02fe70797a0b613fae379a84a9a97a8dc4e022f
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Mar 5 09:00:47 2022 +0100

    Use a more transparent lexic for bullet label functions

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 0f7ecb0..54272a7 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -5158,7 +5158,7 @@ void Buffer::Impl::setLabel(ParIterator & it, UpdateType utype) const
 	switch(layout.labeltype) {
 	case LABEL_ITEMIZE: {
 		par.params().labelString(
-			bp.user_defined_bullet(par.itemdepth).getUnicode());
+			bp.user_defined_bullet(par.itemdepth).getLabel());
 		break;
 	}
 
diff --git a/src/Bullet.cpp b/src/Bullet.cpp
index 1e61777..00a13ec 100644
--- a/src/Bullet.cpp
+++ b/src/Bullet.cpp
@@ -54,7 +54,7 @@ Bullet::Bullet(int f, int c, int s)
 
 
 Bullet::Bullet(docstring const & t)
-	: font(MIN), character(MIN), size(MIN), user_text(1), text(t), unicode(t)
+	: font(MIN), character(MIN), size(MIN), user_text(1), text(t), label(t)
 {
 	testInvariant();
 }
@@ -98,7 +98,7 @@ void Bullet::setText(docstring const & t)
 	font = character = size = MIN;
 	user_text = 1;
 	text = t;
-	unicode = t;
+	label = t;
 	testInvariant();
 }
 
@@ -139,7 +139,7 @@ Bullet & Bullet::operator=(Bullet const & b)
 	size = b.size;
 	user_text = b.user_text;
 	text = b.text;
-	unicode = b.unicode;
+	label = b.label;
 	this->testInvariant();
 	return *this;
 }
@@ -153,11 +153,11 @@ docstring const & Bullet::getText() const
 }
 
 
-docstring const & Bullet::getUnicode() const
+docstring const & Bullet::getLabel() const
 {
 	if (user_text == 0)
 		generateText();
-	return unicode;
+	return label;
 }
 
 
@@ -196,7 +196,7 @@ void Bullet::generateText() const
 
 	if ((font >= 0) && (character >= 0)) {
 		text = bulletEntry(font, character);
-		unicode = bulletUnicode(font, character);
+		label = bulletLabel(font, character);
 		if (size >= 0)
 			text = bulletSize(size) + text;
 		user_text = -1;
@@ -379,7 +379,7 @@ FontSize Bullet::bulletFontSize(int s)
 }
 
 
-docstring const Bullet::bulletUnicode(int f, int c)
+docstring const Bullet::bulletLabel(int f, int c)
 {
 	// see comment at bulletEntry
 	static int UnicodeBulletPanel0[CHARMAX] = {
diff --git a/src/Bullet.h b/src/Bullet.h
index 0de40c1..662fa22 100644
--- a/src/Bullet.h
+++ b/src/Bullet.h
@@ -45,10 +45,10 @@ public:
 	int getSize() const;
 	///
 	FontSize getFontSize() const;
-	///
+	/// The text to be output
 	docstring const & getText() const;
-	///
-	docstring const & getUnicode() const;
+	/// The label displayed in the workarea
+	docstring const & getLabel() const;
 	///
 	Bullet & operator=(Bullet const &);
 	///
@@ -85,7 +85,7 @@ private:
 	///
 	static FontSize bulletFontSize(int);
 	///
-	static docstring const bulletUnicode(int, int);
+	static docstring const bulletLabel(int, int);
 
 	///
 	int font;
@@ -111,7 +111,7 @@ private:
 	    and size settings.
 	*/
 	mutable docstring text;
-	mutable docstring unicode;
+	mutable docstring label;
 };
 
 

commit ad31043987bd55f0519448fd46dcf8ed96ce6475
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Mar 5 08:51:32 2022 +0100

    Remove unused function

diff --git a/src/Bullet.h b/src/Bullet.h
index b31602c..0de40c1 100644
--- a/src/Bullet.h
+++ b/src/Bullet.h
@@ -81,8 +81,6 @@ private:
 	///
 	void generateText() const;
 	///
-	void generateUnicode() const;
-	///
 	static docstring const bulletSize(int);
 	///
 	static FontSize bulletFontSize(int);

commit ffc1976b972accc6ce48f6befaa7254a7f353156
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sat Mar 5 03:46:22 2022 +0100

    Avoid copies of vectors.

diff --git a/src/Encoding.h b/src/Encoding.h
index 6016f05..9668336 100644
--- a/src/Encoding.h
+++ b/src/Encoding.h
@@ -79,11 +79,11 @@ public:
 	/// LaTeX command (text mode) for this character
 	docstring textCommand() const { return text_commands_[0]; }
 	/// All known LaTeX commands (text mode) for this character
-	std::vector<docstring> textCommands() const { return text_commands_; }
+	const std::vector<docstring>& textCommands() const { return text_commands_; }
 	/// LaTeX command (math mode) for this character
 	docstring mathCommand() const { return math_commands_[0]; }
 	/// All known LaTeX commands (math mode) for this character
-	std::vector<docstring> mathCommands() const { return math_commands_; }
+	const std::vector<docstring>& mathCommands() const { return math_commands_; }
 	/// Needed LaTeX preamble (or feature) for text mode
 	std::string textPreamble() const { return text_preamble_; }
 	/// Needed LaTeX preamble (or feature) for math mode

commit 8496b7dc9ae6fff7c35446f00c1fb937e399ddea
Author: Enrico Forestieri <forenr at lyx.org>
Date:   Sat Mar 5 02:19:38 2022 +0100

    Compile fix

diff --git a/src/support/os_cygwin.cpp b/src/support/os_cygwin.cpp
index 5d43737..0261e2c 100644
--- a/src/support/os_cygwin.cpp
+++ b/src/support/os_cygwin.cpp
@@ -342,7 +342,7 @@ string latex_path(string const & p)
 
 	if (windows_style_tex_paths_ && FileName::isAbsolute(p)) {
 		string dos_path = convert_path(p, PathStyle(windows));
-		LYXERR(Debug::LATEX, "<Path correction for LaTeX> ["
+		LYXERR(Debug::OUTFILE, "<Path correction for LaTeX> ["
 			<< p << "]->>[" << dos_path << ']');
 		return dos_path;
 	}

commit ada2fd2d657ec03902c97588a876ae23271d45ac
Author: Kornel Benko <kornel at lyx.org>
Date:   Fri Mar 4 17:40:36 2022 +0100

    Update sk.po

diff --git a/po/sk.po b/po/sk.po
index 064fb9a..ecd223a 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX-2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-19 14:36+0100\n"
-"PO-Revision-Date: 2022-02-19 14:53+0000\n"
+"POT-Creation-Date: 2022-03-03 10:04+0100\n"
+"PO-Revision-Date: 2022-03-04 16:38+0000\n"
 "Last-Translator: Kornel Benko <kornel at lyx.org>\n"
 "Language-Team: Slovak <kornel at lyx.org>\n"
 "Language: sk\n"
@@ -16846,10 +16846,6 @@ msgstr "Výpisy"
 msgid "Margin"
 msgstr "Okraj"
 
-#: lib/layouts/stdinsets.inc:51
-msgid "foot"
-msgstr "päta"
-
 #: lib/layouts/stdinsets.inc:177
 msgid "Greyedout"
 msgstr "Zosivelé"
@@ -35491,6 +35487,20 @@ msgstr ""
 msgid "No conversion of %1$s is needed after all"
 msgstr "Konverziu %1$s netreba"
 
+#: src/insets/InsetGraphics.cpp:832
+msgid "Graphic not specified. Falling back to `draft' mode."
+msgstr "Grafika nie je špecifikovaná. Padám naspäť na `predbežný' spôsob."
+
+#: src/insets/InsetGraphics.cpp:833
+#, c-format
+msgid "Graphic `%1$s' was not found. Falling back to `draft' mode."
+msgstr ""
+"Grafika `%1$s' nie je špecifikovaná. Padám naspäť na `predbežný' spôsob."
+
+#: src/insets/InsetGraphics.cpp:836
+msgid "Graphic not found!"
+msgstr "Grafika nenájdená!"
+
 #: src/insets/InsetGraphics.cpp:906
 #, c-format
 msgid ""
@@ -37058,9 +37068,9 @@ msgstr "Čítanie konfiguračných súborov"
 msgid "Custom keyboard definition"
 msgstr "Vlastná definícia klávesnice"
 
-#: src/support/debug.cpp:50
-msgid "LaTeX generation/execution"
-msgstr "Spúšťanie/generovanie LaTeX-u"
+#: src/support/debug.cpp:50 src/support/debug.cpp:51
+msgid "Output source file generation/processing"
+msgstr "Spúšťanie/generovanie výstupného súboru"
 
 #: src/support/debug.cpp:51
 msgid "Math editor"

commit 4b58e3b4feb08e2c68309bf8c2c7efbfdcb7bbf1
Author: Kornel Benko <kornel at lyx.org>
Date:   Fri Mar 4 17:29:37 2022 +0100

    Format of description of function search-ignore

diff --git a/lib/doc/LFUNs.lyx b/lib/doc/LFUNs.lyx
index e9790bb..29729bd 100644
--- a/lib/doc/LFUNs.lyx
+++ b/lib/doc/LFUNs.lyx
@@ -1,5 +1,5 @@
 #LyX 2.4 created this file. For more info see https://www.lyx.org/
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
@@ -7770,7 +7770,11 @@ Syntax search-ignore <type> <value>
 
 \begin_layout Description
 Params <type>: language|color|sectioning|font|series|shape|family|markup|underli
-ne|strike|deleted<value>: true|false
+ne|strike|deleted
+\begin_inset Newline newline
+\end_inset
+
+<value>: true|false
 \end_layout
 
 \begin_layout Subsection*

commit 422bb60a14cd0d8e9dce24b7c92eefd0890ce9f7
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Thu Mar 3 01:57:16 2022 +0100

    tex2lyx tests: set the encoding when reading a file, not all OSes default to UTF-8

diff --git a/src/tex2lyx/test/runtests.py b/src/tex2lyx/test/runtests.py
index 2ccaddc..103c74e 100755
--- a/src/tex2lyx/test/runtests.py
+++ b/src/tex2lyx/test/runtests.py
@@ -127,8 +127,8 @@ def main(argv):
                 else:
                     t1 = time.ctime(os.path.getmtime(lyxfile1))
                     t2 = time.ctime(os.path.getmtime(lyxfile2))
-                    f1 = open(lyxfile1, 'r')
-                    f2 = open(lyxfile2, 'r')
+                    f1 = open(lyxfile1, 'r', encoding="utf8")
+                    f2 = open(lyxfile2, 'r', encoding="utf8")
                     lines1 = f1.readlines()
                     i1 = 0
                     for linex in lines1:

commit b5b3f56abb036edf2e03c6449e5ae16d576401ad
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Mar 2 12:48:10 2022 +0100

    Encoding::fromLaTeXCommand: properly record requirements when exiting early

diff --git a/src/Encoding.cpp b/src/Encoding.cpp
index a4c706b..d0610ef 100644
--- a/src/Encoding.cpp
+++ b/src/Encoding.cpp
@@ -390,6 +390,9 @@ docstring Encodings::fromLaTeXCommand(docstring const & cmd, int cmdtype,
 					docstring value;
 					value += unicodeSymbol.first;
 					needsTermination = !unicodeSymbol.second.mathNoTermination();
+					if (req && unicodeSymbol.second.mathFeature()
+						&& !unicodeSymbol.second.mathPreamble().empty())
+							req->insert(unicodeSymbol.second.mathPreamble());
 					return value;
 				}
 			}
@@ -400,6 +403,9 @@ docstring Encodings::fromLaTeXCommand(docstring const & cmd, int cmdtype,
 					docstring value;
 					value += unicodeSymbol.first;
 					needsTermination = !unicodeSymbol.second.textNoTermination();
+					if (req && unicodeSymbol.second.textFeature()
+						&& !unicodeSymbol.second.textPreamble().empty())
+						req->insert(unicodeSymbol.second.textPreamble());
 					return value;
 				}
 			}

commit 0c73df6efb64a16068943d5e1007f6d6b747227f
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Mar 2 12:30:16 2022 +0100

    Revert "Adapt resulting lyx-file to amend 39c0b322 (changed tex2lyx output)"
    
    This reverts commit 5e8969b597ae973a12cfb543ed055e4eb8cd16ec.

diff --git a/src/tex2lyx/test/test-insets-basic.lyx.lyx b/src/tex2lyx/test/test-insets-basic.lyx.lyx
index 0c68547..89978a9 100644
--- a/src/tex2lyx/test/test-insets-basic.lyx.lyx
+++ b/src/tex2lyx/test/test-insets-basic.lyx.lyx
@@ -22,7 +22,6 @@
 \usepackage{array}
 \usepackage{multirow}
 \usepackage{hhline}
-\usepackage{textcomp}
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.

commit 5e8969b597ae973a12cfb543ed055e4eb8cd16ec
Author: Kornel Benko <kornel at lyx.org>
Date:   Wed Mar 2 08:48:35 2022 +0100

    Adapt resulting lyx-file to amend 39c0b322 (changed tex2lyx output)

diff --git a/src/tex2lyx/test/test-insets-basic.lyx.lyx b/src/tex2lyx/test/test-insets-basic.lyx.lyx
index 89978a9..0c68547 100644
--- a/src/tex2lyx/test/test-insets-basic.lyx.lyx
+++ b/src/tex2lyx/test/test-insets-basic.lyx.lyx
@@ -22,6 +22,7 @@
 \usepackage{array}
 \usepackage{multirow}
 \usepackage{hhline}
+\usepackage{textcomp}
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.

commit 39c0b322f7b140ca9a9c1544adf05f296a5ea28f
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Mar 2 08:11:34 2022 +0100

    Encodings::fromLaTeXCommand: properly set needsTermination on early exit

diff --git a/src/Encoding.cpp b/src/Encoding.cpp
index 0c8d085..a4c706b 100644
--- a/src/Encoding.cpp
+++ b/src/Encoding.cpp
@@ -389,6 +389,7 @@ docstring Encodings::fromLaTeXCommand(docstring const & cmd, int cmdtype,
 				if (command == cmd) {
 					docstring value;
 					value += unicodeSymbol.first;
+					needsTermination = !unicodeSymbol.second.mathNoTermination();
 					return value;
 				}
 			}
@@ -398,6 +399,7 @@ docstring Encodings::fromLaTeXCommand(docstring const & cmd, int cmdtype,
 				if (command == cmd) {
 					docstring value;
 					value += unicodeSymbol.first;
+					needsTermination = !unicodeSymbol.second.textNoTermination();
 					return value;
 				}
 			}

commit afd6e1d45e1a535eb8f4016da6207a7d00196a19
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Mar 2 07:11:27 2022 +0100

    Fix indentation fix.

diff --git a/src/tex2lyx/test/CMakeLists.txt b/src/tex2lyx/test/CMakeLists.txt
index 1b3b68d..e620e06 100644
--- a/src/tex2lyx/test/CMakeLists.txt
+++ b/src/tex2lyx/test/CMakeLists.txt
@@ -21,7 +21,7 @@ set(_tex_tests test.ltx
                test-insets-basic.tex
                test-insets.tex
                test-memoir.tex
-	           test-minted.tex
+               test-minted.tex
                test-modules.tex
                test-refstyle-theorems.tex
                test-scr.tex

commit c66be94d14b3aadb0917488550c85078dd71bf6c
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Wed Mar 2 00:39:53 2022 +0100

    Fix indentation.

diff --git a/src/tex2lyx/test/CMakeLists.txt b/src/tex2lyx/test/CMakeLists.txt
index 1647acb..1b3b68d 100644
--- a/src/tex2lyx/test/CMakeLists.txt
+++ b/src/tex2lyx/test/CMakeLists.txt
@@ -21,7 +21,7 @@ set(_tex_tests test.ltx
                test-insets-basic.tex
                test-insets.tex
                test-memoir.tex
-	       test-minted.tex
+	           test-minted.tex
                test-modules.tex
                test-refstyle-theorems.tex
                test-scr.tex

commit 997f0621c5346bb623cf86713c4fe1be0c941104
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Feb 27 20:35:58 2022 +0100

    Rename LATEX debug level to OUTFILE and use it for DocBook, HTML, and XML messages.

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index d3dbc86..0f7ecb0 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -1739,7 +1739,7 @@ Buffer::ExportStatus Buffer::makeLaTeXFile(FileName const & fname,
 	OutputParams runparams = runparams_in;
 
 	string const encoding = runparams.encoding->iconvName();
-	LYXERR(Debug::LATEX, "makeLaTeXFile encoding: " << encoding << ", fname=" << fname.realPath());
+	LYXERR(Debug::OUTFILE, "makeLaTeXFile encoding: " << encoding << ", fname=" << fname.realPath());
 
 	ofdocstream ofs;
 	try { ofs.reset(encoding); }
@@ -1851,7 +1851,7 @@ Buffer::ExportStatus Buffer::writeLaTeXSource(otexstream & os,
 	BufferEncodings::initUnicodeMath(*this);
 
 	// validate the buffer.
-	LYXERR(Debug::LATEX, "  Validating buffer...");
+	LYXERR(Debug::OUTFILE, "  Validating buffer...");
 	LaTeXFeatures features(*this, params(), runparams);
 	validate(features);
 	// This is only set once per document (in master)
@@ -1860,7 +1860,7 @@ Buffer::ExportStatus Buffer::writeLaTeXSource(otexstream & os,
 		runparams.use_hyperref = features.isRequired("hyperref");
 		runparams.use_CJK = features.mustProvide("CJK");
 	}
-	LYXERR(Debug::LATEX, "  Buffer validation done.");
+	LYXERR(Debug::OUTFILE, "  Buffer validation done.");
 
 	bool const output_preamble =
 		output == FullSource || output == OnlyPreamble;
@@ -2079,9 +2079,9 @@ Buffer::ExportStatus Buffer::writeLaTeXSource(otexstream & os,
 
 	if (output_preamble) {
 		os << "\\end{document}\n";
-		LYXERR(Debug::LATEX, "makeLaTeXFile...done");
+		LYXERR(Debug::OUTFILE, "makeLaTeXFile...done");
 	} else {
-		LYXERR(Debug::LATEX, "LaTeXFile for inclusion made.");
+		LYXERR(Debug::OUTFILE, "LaTeXFile for inclusion made.");
 	}
 	runparams_in.encoding = runparams.encoding;
 
@@ -2095,7 +2095,7 @@ Buffer::ExportStatus Buffer::makeDocBookFile(FileName const & fname,
 			      OutputParams const & runparams,
 			      OutputWhat output) const
 {
-	LYXERR(Debug::LATEX, "makeDocBookFile...");
+	LYXERR(Debug::OUTFILE, "makeDocBookFile...");
 
 	ofdocstream ofs;
 	if (!openFileWrite(ofs, fname))
@@ -2185,7 +2185,7 @@ Buffer::ExportStatus Buffer::writeDocBookSource(odocstream & os,
 Buffer::ExportStatus Buffer::makeLyXHTMLFile(FileName const & fname,
 			      OutputParams const & runparams) const
 {
-	LYXERR(Debug::LATEX, "makeLyXHTMLFile...");
+	LYXERR(Debug::OUTFILE, "makeLyXHTMLFile...");
 
 	ofdocstream ofs;
 	if (!openFileWrite(ofs, fname))
@@ -2383,7 +2383,7 @@ void Buffer::validate(LaTeXFeatures & features) const
 	for (Paragraph const & p : paragraphs())
 		p.validate(features);
 
-	if (lyxerr.debugging(Debug::LATEX)) {
+	if (lyxerr.debugging(Debug::OUTFILE)) {
 		features.showStruct();
 	}
 }
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 023301d..32c890c 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -2621,7 +2621,7 @@ bool BufferView::setCursorFromRow(int row)
 {
 	TexRow::TextEntry start, end;
 	tie(start,end) = buffer_.texrow().getEntriesFromRow(row);
-	LYXERR(Debug::LATEX,
+	LYXERR(Debug::OUTFILE,
 	       "setCursorFromRow: for row " << row << ", TexRow has found "
 	       "start (id=" << start.id << ",pos=" << start.pos << "), "
 	       "end (id=" << end.id << ",pos=" << end.pos << ")");
diff --git a/src/Floating.cpp b/src/Floating.cpp
index 8554503..df48a2b 100644
--- a/src/Floating.cpp
+++ b/src/Floating.cpp
@@ -69,7 +69,7 @@ Floating::Floating(string const & type, string const & placement,
 			docbook_float_type_ = "video";
 		} else {
 			// If nothing matches, return something that will not be valid.
-			LYXERR0("Float type '" + floattype_ + "' unknown to DocBook!");
+			LYXERR(Debug::OUTFILE, "Float type '" + floattype_ + "' unknown to DocBook!");
 			docbook_float_type_ = "unknown";
 		}
 	}
@@ -159,7 +159,7 @@ string Floating::docbookTag(bool hasTitle) const
 		return hasTitle ? "table" : "informaltable";
 	} else {
 		// If nothing matches, return something that will not be valid.
-		LYXERR0("Float type '" + floattype() + "' unknown to DocBook!");
+		LYXERR(Debug::OUTFILE, "Float type '" + floattype() + "' unknown to DocBook!");
 		return "float";
 	}
 }
diff --git a/src/Font.cpp b/src/Font.cpp
index 3ba04eb..514bf03 100644
--- a/src/Font.cpp
+++ b/src/Font.cpp
@@ -758,34 +758,34 @@ void Font::validate(LaTeXFeatures & features) const
 	Language const * doc_language = bparams.language;
 
 	if (bits_.noun() == FONT_ON) {
-		LYXERR(Debug::LATEX, "font.noun: " << bits_.noun());
+		LYXERR(Debug::OUTFILE, "font.noun: " << bits_.noun());
 		features.require("noun");
-		LYXERR(Debug::LATEX, "Noun enabled. Font: " << to_utf8(stateText()));
+		LYXERR(Debug::OUTFILE, "Noun enabled. Font: " << to_utf8(stateText()));
 	}
 	if (bits_.underbar() == FONT_ON) {
-		LYXERR(Debug::LATEX, "font.underline: " << bits_.underbar());
+		LYXERR(Debug::OUTFILE, "font.underline: " << bits_.underbar());
 		features.require("ulem");
-		LYXERR(Debug::LATEX, "Underline enabled. Font: " << to_utf8(stateText()));
+		LYXERR(Debug::OUTFILE, "Underline enabled. Font: " << to_utf8(stateText()));
 	}
 	if (bits_.strikeout() == FONT_ON) {
-		LYXERR(Debug::LATEX, "font.strikeout: " << bits_.strikeout());
+		LYXERR(Debug::OUTFILE, "font.strikeout: " << bits_.strikeout());
 		features.require("ulem");
-		LYXERR(Debug::LATEX, "Strike out enabled. Font: " << to_utf8(stateText()));
+		LYXERR(Debug::OUTFILE, "Strike out enabled. Font: " << to_utf8(stateText()));
 	}
 	if (bits_.xout() == FONT_ON) {
-		LYXERR(Debug::LATEX, "font.xout: " << bits_.xout());
+		LYXERR(Debug::OUTFILE, "font.xout: " << bits_.xout());
 		features.require("ulem");
-		LYXERR(Debug::LATEX, "Cross out enabled. Font: " << to_utf8(stateText()));
+		LYXERR(Debug::OUTFILE, "Cross out enabled. Font: " << to_utf8(stateText()));
 	}
 	if (bits_.uuline() == FONT_ON) {
-		LYXERR(Debug::LATEX, "font.uuline: " << bits_.uuline());
+		LYXERR(Debug::OUTFILE, "font.uuline: " << bits_.uuline());
 		features.require("ulem");
-		LYXERR(Debug::LATEX, "Double underline enabled. Font: " << to_utf8(stateText()));
+		LYXERR(Debug::OUTFILE, "Double underline enabled. Font: " << to_utf8(stateText()));
 	}
 	if (bits_.uwave() == FONT_ON) {
-		LYXERR(Debug::LATEX, "font.uwave: " << bits_.uwave());
+		LYXERR(Debug::OUTFILE, "font.uwave: " << bits_.uwave());
 		features.require("ulem");
-		LYXERR(Debug::LATEX, "Wavy underline enabled. Font: " << to_utf8(stateText()));
+		LYXERR(Debug::OUTFILE, "Wavy underline enabled. Font: " << to_utf8(stateText()));
 	}
 	switch (bits_.color()) {
 		case Color_none:
@@ -811,7 +811,7 @@ void Font::validate(LaTeXFeatures & features) const
 			break;
 		default:
 			features.require("color");
-			LYXERR(Debug::LATEX, "Color enabled. Font: " << to_utf8(stateText()));
+			LYXERR(Debug::OUTFILE, "Color enabled. Font: " << to_utf8(stateText()));
 	}
 
 	// FIXME: Do something for background and soul package?
@@ -823,7 +823,7 @@ void Font::validate(LaTeXFeatures & features) const
 	    && lang_ != latex_language)
 	{
 		features.useLanguage(lang_);
-		LYXERR(Debug::LATEX, "Found language " << lang_->lang());
+		LYXERR(Debug::OUTFILE, "Found language " << lang_->lang());
 	}
 }
 
diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp
index e0df744..917d129 100644
--- a/src/LaTeX.cpp
+++ b/src/LaTeX.cpp
@@ -135,7 +135,7 @@ LaTeX::LaTeX(string const & latex, OutputParams const & rp,
 
 void LaTeX::removeAuxiliaryFiles() const
 {
-	LYXERR(Debug::LATEX, "Removing auxiliary files");
+	LYXERR(Debug::OUTFILE, "Removing auxiliary files");
 	// Note that we do not always call this function when there is an error.
 	// For example, if there is an error but an output file is produced we
 	// still would like to output (export/view) the file.
@@ -280,7 +280,7 @@ int LaTeX::run(TeXErrors & terr)
 		bibtex_info_old = scanAuxFiles(aux_file, runparams.only_childbibs);
 
 	++count;
-	LYXERR(Debug::LATEX, "Run #" << count);
+	LYXERR(Debug::OUTFILE, "Run #" << count);
 	message(runMessage(count));
 
 	int exit_code = startscript();
@@ -289,7 +289,7 @@ int LaTeX::run(TeXErrors & terr)
 
 	scanres = scanLogFile(terr);
 	if (scanres & ERROR_RERUN) {
-		LYXERR(Debug::LATEX, "Rerunning LaTeX");
+		LYXERR(Debug::OUTFILE, "Rerunning LaTeX");
 		terr.clearErrors();
 		exit_code = startscript();
 		if (exit_code == Systemcall::KILLED || exit_code == Systemcall::TIMEOUT)
@@ -324,7 +324,7 @@ int LaTeX::run(TeXErrors & terr)
 		// "\bibdata" and/or "\bibstyle". If one of those
 		// tags is found -> run bibtex and set rerun = true;
 		// no checks for now
-		LYXERR(Debug::LATEX, "Running Bibliography Processor.");
+		LYXERR(Debug::OUTFILE, "Running Bibliography Processor.");
 		message(_("Running Bibliography Processor."));
 		updateBibtexDependencies(head, bibtex_info);
 		int exit_code;
@@ -357,7 +357,7 @@ int LaTeX::run(TeXErrors & terr)
 		rerun = false;
 		++count;
 		LYXERR(Debug::DEPEND, "Dep. file has changed or rerun requested");
-		LYXERR(Debug::LATEX, "Run #" << count);
+		LYXERR(Debug::OUTFILE, "Run #" << count);
 		message(runMessage(count));
 		int exit_code = startscript();
 		if (exit_code == Systemcall::KILLED || exit_code == Systemcall::TIMEOUT)
@@ -385,7 +385,7 @@ int LaTeX::run(TeXErrors & terr)
 		// "\bibdata" and/or "\bibstyle". If one of those
 		// tags is found -> run bibtex and set rerun = true;
 		// no checks for now
-		LYXERR(Debug::LATEX, "Re-Running Bibliography Processor.");
+		LYXERR(Debug::OUTFILE, "Re-Running Bibliography Processor.");
 		message(_("Re-Running Bibliography Processor."));
 		updateBibtexDependencies(head, bibtex_info);
 		int exit_code;
@@ -411,7 +411,7 @@ int LaTeX::run(TeXErrors & terr)
 			// MAX_RUNS are reached.
 			rerun = false;
 			++count;
-			LYXERR(Debug::LATEX, "Run #" << count);
+			LYXERR(Debug::OUTFILE, "Run #" << count);
 			message(runMessage(count));
 			startscript();
 			scanres = scanLogFile(terr);
@@ -425,7 +425,7 @@ int LaTeX::run(TeXErrors & terr)
 	// Now that we have final pagination, run the index and nomencl processors
 	if (idxfile.exists()) {
 		// no checks for now
-		LYXERR(Debug::LATEX, "Running Index Processor.");
+		LYXERR(Debug::OUTFILE, "Running Index Processor.");
 		message(_("Running Index Processor."));
 		// onlyFileName() is needed for cygwin
 		int const ret = 
@@ -480,7 +480,7 @@ int LaTeX::run(TeXErrors & terr)
 		// MAX_RUNS are reached.
 		rerun = false;
 		++count;
-		LYXERR(Debug::LATEX, "Run #" << count);
+		LYXERR(Debug::OUTFILE, "Run #" << count);
 		message(runMessage(count));
 		startscript();
 		scanres = scanLogFile(terr);
@@ -499,7 +499,7 @@ int LaTeX::run(TeXErrors & terr)
 		scanres |= NONZERO_ERROR;
 	}
 
-	LYXERR(Debug::LATEX, "Done.");
+	LYXERR(Debug::OUTFILE, "Done.");
 
 	if (bscanres & ERRORS)
 		return bscanres; // return on error
@@ -569,7 +569,7 @@ int LaTeX::runMakeIndex(string const & f, OutputParams const & rp,
 		tmp = subst(tmp, "$$b", removeExtension(f));
 	}
 
-	LYXERR(Debug::LATEX,
+	LYXERR(Debug::OUTFILE,
 		"idx file has been made, running index processor ("
 		<< tmp << ") on file " << f);
 
@@ -579,7 +579,7 @@ int LaTeX::runMakeIndex(string const & f, OutputParams const & rp,
 	}
 	if (rp.use_indices) {
 		tmp = lyxrc.splitindex_command + " -m " + quoteName(tmp);
-		LYXERR(Debug::LATEX,
+		LYXERR(Debug::OUTFILE,
 		"Multiple indices. Using splitindex command: " << tmp);
 	}
 	tmp += ' ';
@@ -595,7 +595,7 @@ int LaTeX::runMakeIndex(string const & f, OutputParams const & rp,
 int LaTeX::runMakeIndexNomencl(FileName const & fname,
 		string const & nlo, string const & nls)
 {
-	LYXERR(Debug::LATEX, "Running Nomenclature Processor.");
+	LYXERR(Debug::OUTFILE, "Running Nomenclature Processor.");
 	message(_("Running Nomenclature Processor."));
 	string tmp = lyxrc.nomencl_command + ' ';
 	// onlyFileName() is needed for cygwin
@@ -654,7 +654,7 @@ AuxInfo const LaTeX::scanAuxFile(FileName const & fname)
 
 void LaTeX::scanAuxFile(FileName const & fname, AuxInfo & aux_info)
 {
-	LYXERR(Debug::LATEX, "Scanning aux file: " << fname);
+	LYXERR(Debug::OUTFILE, "Scanning aux file: " << fname);
 
 	ifstream ifs(fname.toFilesystemEncoding().c_str());
 	string token;
@@ -674,7 +674,7 @@ void LaTeX::scanAuxFile(FileName const & fname, AuxInfo & aux_info)
 			while (!data.empty()) {
 				string citation;
 				data = split(data, citation, ',');
-				LYXERR(Debug::LATEX, "Citation: " << citation);
+				LYXERR(Debug::OUTFILE, "Citation: " << citation);
 				aux_info.citations.insert(citation);
 			}
 		} else if (regex_match(token, sub, reg2)) {
@@ -685,7 +685,7 @@ void LaTeX::scanAuxFile(FileName const & fname, AuxInfo & aux_info)
 				string database;
 				data = split(data, database, ',');
 				database = changeExtension(database, "bib");
-				LYXERR(Debug::LATEX, "BibTeX database: `" << database << '\'');
+				LYXERR(Debug::OUTFILE, "BibTeX database: `" << database << '\'');
 				aux_info.databases.insert(database);
 			}
 		} else if (regex_match(token, sub, reg3)) {
@@ -693,7 +693,7 @@ void LaTeX::scanAuxFile(FileName const & fname, AuxInfo & aux_info)
 			// token is now the style file
 			// pass it to the helper
 			style = changeExtension(style, "bst");
-			LYXERR(Debug::LATEX, "BibTeX style: `" << style << '\'');
+			LYXERR(Debug::OUTFILE, "BibTeX style: `" << style << '\'');
 			aux_info.styles.insert(style);
 		} else if (regex_match(token, sub, reg4)) {
 			string const file2 = sub.str(1);
@@ -782,7 +782,7 @@ int LaTeX::scanLogFile(TeXErrors & terr)
 	int retval = NO_ERRORS;
 	string tmp =
 		onlyFileName(changeExtension(file.absFileName(), ".log"));
-	LYXERR(Debug::LATEX, "Log file: " << tmp);
+	LYXERR(Debug::OUTFILE, "Log file: " << tmp);
 	FileName const fn = makeAbsPath(tmp);
 	// FIXME we should use an ifdocstream here and a docstring for token
 	// below. The encoding of the log file depends on the _output_ (font)
@@ -813,7 +813,7 @@ int LaTeX::scanLogFile(TeXErrors & terr)
 		token = subst(token, "\r", "");
 		smatch sub;
 
-		LYXERR(Debug::LATEX, "Log line: " << token);
+		LYXERR(Debug::OUTFILE, "Log line: " << token);
 
 		if (token.empty())
 			continue;
@@ -869,24 +869,24 @@ int LaTeX::scanLogFile(TeXErrors & terr)
 			// Here shall we handle different
 			// types of warnings
 			retval |= LATEX_WARNING;
-			LYXERR(Debug::LATEX, "LaTeX Warning.");
+			LYXERR(Debug::OUTFILE, "LaTeX Warning.");
 			if (contains(token, "Rerun to get cross-references")) {
 				retval |= RERUN;
-				LYXERR(Debug::LATEX, "We should rerun.");
+				LYXERR(Debug::OUTFILE, "We should rerun.");
 			// package clefval needs 2 latex runs before bibtex
 			} else if (contains(token, "Value of")
 				   && contains(token, "on page")
 				   && contains(token, "undefined")) {
 				retval |= ERROR_RERUN;
-				LYXERR(Debug::LATEX, "Force rerun.");
+				LYXERR(Debug::OUTFILE, "Force rerun.");
 			// package etaremune
 			} else if (contains(token, "Etaremune labels have changed")) {
 				retval |= ERROR_RERUN;
-				LYXERR(Debug::LATEX, "Force rerun.");
+				LYXERR(Debug::OUTFILE, "Force rerun.");
 			// package enotez
 			} else if (contains(token, "Endnotes may have changed. Rerun")) {
 				retval |= RERUN;
-				LYXERR(Debug::LATEX, "We should rerun.");
+				LYXERR(Debug::OUTFILE, "We should rerun.");
 			//"Citation `cit' on page X undefined on input line X."
 			} else if (!runparams.includeall && contains(token, "Citation")
 				   //&& contains(token, "on input line") //often split to newline
@@ -968,20 +968,20 @@ int LaTeX::scanLogFile(TeXErrors & terr)
 				   contains(token, "Rerun to get")) {
 				// at least longtable.sty and bibtopic.sty
 				// might use this.
-				LYXERR(Debug::LATEX, "We should rerun.");
+				LYXERR(Debug::OUTFILE, "We should rerun.");
 				retval |= RERUN;
 			}
 		} else if (prefixIs(token, "LETTRE WARNING:")) {
 			if (contains(token, "veuillez recompiler")) {
 				// lettre.cls
-				LYXERR(Debug::LATEX, "We should rerun.");
+				LYXERR(Debug::OUTFILE, "We should rerun.");
 				retval |= RERUN;
 			}
 		} else if (token[0] == '(') {
 			if (contains(token, "Rerun LaTeX") ||
 			    contains(token, "Rerun to get")) {
 				// Used by natbib
-				LYXERR(Debug::LATEX, "We should rerun.");
+				LYXERR(Debug::OUTFILE, "We should rerun.");
 				retval |= RERUN;
 			}
 		} else if (prefixIs(token, "! ")
@@ -1004,7 +1004,7 @@ int LaTeX::scanLogFile(TeXErrors & terr)
 				if (prefixIs(token, "! File ended while scanning use of \\Hy at setref@link.")){
 					// bug 7344. We must rerun LaTeX if hyperref has been toggled.
 					retval |= ERROR_RERUN;
-					LYXERR(Debug::LATEX, "Force rerun.");
+					LYXERR(Debug::OUTFILE, "Force rerun.");
 				} else {
 					// bug 6445. At this point its not clear we finish with error.
 					wait_for_error = desc;
@@ -1021,7 +1021,7 @@ int LaTeX::scanLogFile(TeXErrors & terr)
 			if (prefixIs(token, "! Paragraph ended before \\Hy at setref@link was complete.")){
 					// bug 7344. We must rerun LaTeX if hyperref has been toggled.
 					retval |= ERROR_RERUN;
-					LYXERR(Debug::LATEX, "Force rerun.");
+					LYXERR(Debug::OUTFILE, "Force rerun.");
 			}
 
 			if (!wait_for_error.empty() && prefixIs(token, "! Emergency stop.")){
@@ -1101,8 +1101,8 @@ int LaTeX::scanLogFile(TeXErrors & terr)
 				if (preamble_error)
 					// Add a note that the error is to be found in preamble
 					errstr += "\n" + to_utf8(_("(NOTE: The erroneous command is in the preamble)"));
-				LYXERR(Debug::LATEX, "line: " << line << '\n'
-					<< "Desc: " << desc << '\n' << "Text: " << errstr);
+				LYXERR(Debug::OUTFILE, "line: " << line << '\n'
+				                                << "Desc: " << desc << '\n' << "Text: " << errstr);
 				if (line == last_line)
 					++line_count;
 				else {
@@ -1182,7 +1182,7 @@ int LaTeX::scanLogFile(TeXErrors & terr)
 			}
 		}
 	}
-	LYXERR(Debug::LATEX, "Log line: " << token);
+	LYXERR(Debug::OUTFILE, "Log line: " << token);
 	return retval;
 }
 
@@ -1560,7 +1560,7 @@ void LaTeX::deplog(DepTable & head)
 int LaTeX::scanBlgFile(DepTable & dep, TeXErrors & terr)
 {
 	FileName const blg_file(changeExtension(file.absFileName(), "blg"));
-	LYXERR(Debug::LATEX, "Scanning blg file: " << blg_file);
+	LYXERR(Debug::OUTFILE, "Scanning blg file: " << blg_file);
 
 	ifstream ifs(blg_file.toFilesystemEncoding().c_str());
 	string token;
@@ -1583,7 +1583,7 @@ int LaTeX::scanBlgFile(DepTable & dep, TeXErrors & terr)
 		if (regex_match(token, sub, reg1)) {
 			string data = sub.str(3);
 			if (!data.empty()) {
-				LYXERR(Debug::LATEX, "Found bib file: " << data);
+				LYXERR(Debug::OUTFILE, "Found bib file: " << data);
 				handleFoundFile(data, dep);
 			}
 		}
@@ -1628,7 +1628,7 @@ int LaTeX::scanBlgFile(DepTable & dep, TeXErrors & terr)
 int LaTeX::scanIlgFile(TeXErrors & terr)
 {
 	FileName const ilg_file(changeExtension(file.absFileName(), "ilg"));
-	LYXERR(Debug::LATEX, "Scanning ilg file: " << ilg_file);
+	LYXERR(Debug::OUTFILE, "Scanning ilg file: " << ilg_file);
 
 	ifstream ifs(ilg_file.toFilesystemEncoding().c_str());
 	string token;
diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 9a1171f..b9ac139 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -2510,7 +2510,7 @@ void Paragraph::latex(BufferParams const & bparams,
 	OutputParams const & runparams,
 	int start_pos, int end_pos, bool force) const
 {
-	LYXERR(Debug::LATEX, "Paragraph::latex...     " << this);
+	LYXERR(Debug::OUTFILE, "Paragraph::latex...     " << this);
 
 	// FIXME This check should not be needed. Perhaps issue an
 	// error if it triggers.
@@ -3127,7 +3127,7 @@ void Paragraph::latex(BufferParams const & bparams,
 		os << setEncoding(prev_encoding->iconvName());
 	}
 
-	LYXERR(Debug::LATEX, "Paragraph::latex... done " << this);
+	LYXERR(Debug::OUTFILE, "Paragraph::latex... done " << this);
 }
 
 
diff --git a/src/Paragraph.h b/src/Paragraph.h
index 01ccd25..ca88dd7 100644
--- a/src/Paragraph.h
+++ b/src/Paragraph.h
@@ -194,7 +194,7 @@ public:
 	/// Can we drop the standard paragraph wrapper?
 	bool emptyTag() const;
 
-	/// Get the id of the paragraph, usefull for docbook
+	/// Get the id of the paragraph, useful for DocBook
 	std::string getID(Buffer const & buf, OutputParams const & runparams) const;
 
 	/// Output the first word of a paragraph, return the position where it left.
diff --git a/src/TexRow.cpp b/src/TexRow.cpp
index 968245b..0d65966 100644
--- a/src/TexRow.cpp
+++ b/src/TexRow.cpp
@@ -251,7 +251,7 @@ TexRow::getEntriesFromRow(int const row) const
 	//        correspond to no output by delaying their addition, at the level
 	//        of otexrowstream, until a character is actually output.
 	//
-	LYXERR(Debug::LATEX, "getEntriesFromRow: row " << row << " requested");
+	LYXERR(Debug::OUTFILE, "getEntriesFromRow: row " << row << " requested");
 
 	// check bounds for row - 1, our target index
 	if (row <= 0)
@@ -360,7 +360,7 @@ FuncRequest TexRow::goToFuncFromRow(int const row) const
 {
 	TextEntry start, end;
 	tie(start,end) = getEntriesFromRow(row);
-	LYXERR(Debug::LATEX,
+	LYXERR(Debug::OUTFILE,
 	       "goToFuncFromRow: for row " << row << ", TexRow has found "
 	       "start (id=" << start.id << ",pos=" << start.pos << "), "
 	       "end (id=" << end.id << ",pos=" << end.pos << ")");
diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index 43b835e..8afa3b2 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -3998,7 +3998,7 @@ bool GuiView::goToFileRow(string const & argument)
 	setBuffer(buf);
 	bool success = documentBufferView()->setCursorFromRow(row);
 	if (!success) {
-		LYXERR(Debug::LATEX,
+		LYXERR(Debug::OUTFILE,
 		       "setCursorFromRow: invalid position for row " << row);
 		frontend::Alert::error(_("Inverse Search Failed"),
 		                       _("Invalid position requested by inverse search.\n"
diff --git a/src/frontends/qt/GuiViewSource.cpp b/src/frontends/qt/GuiViewSource.cpp
index f83e020..bcc6da4 100644
--- a/src/frontends/qt/GuiViewSource.cpp
+++ b/src/frontends/qt/GuiViewSource.cpp
@@ -199,7 +199,7 @@ void ViewSourceWidget::updateView(BufferView const * bv)
 	if (guiApp->currentView()->develMode()) {
 		// output tex<->row correspondences in the source panel if the "-dbg latex"
 		// option is given.
-		if (texrow_ && lyx::lyxerr.debugging(Debug::LATEX)) {
+		if (texrow_ && lyx::lyxerr.debugging(Debug::OUTFILE)) {
 			QStringList list = qcontent.split(QChar('\n'));
 			docstring_list dlist;
 			for (QStringList::const_iterator it = list.begin(); it != list.end(); ++it)
diff --git a/src/graphics/PreviewLoader.cpp b/src/graphics/PreviewLoader.cpp
index 28a0e0f..5d767b2 100644
--- a/src/graphics/PreviewLoader.cpp
+++ b/src/graphics/PreviewLoader.cpp
@@ -624,7 +624,7 @@ void PreviewLoader::Impl::startLoading(bool wait)
 	   << from_utf8(changeExtension(buffer_.latexName(), ""))
 	   << "}\n";
 
-	LYXERR(Debug::LATEX, "Format = " << buffer_.params().getDefaultOutputFormat());
+	LYXERR(Debug::OUTFILE, "Format = " << buffer_.params().getDefaultOutputFormat());
 	string latexparam = "";
 	bool docformat = !buffer_.params().default_output_format.empty()
 			&& buffer_.params().default_output_format != "default";
@@ -810,7 +810,7 @@ void PreviewLoader::Impl::finishedGenerating(pid_t pid, int retval)
 void PreviewLoader::Impl::dumpPreamble(otexstream & os, Flavor flavor) const
 {
 	// Dump the preamble only.
-	LYXERR(Debug::LATEX, "dumpPreamble, flavor == " << static_cast<int>(flavor));
+	LYXERR(Debug::OUTFILE, "dumpPreamble, flavor == " << static_cast<int>(flavor));
 	OutputParams runparams(&buffer_.params().encoding());
 	runparams.flavor = flavor;
 	runparams.nice = true;
diff --git a/src/insets/Inset.h b/src/insets/Inset.h
index 372b95a..5d56c10 100644
--- a/src/insets/Inset.h
+++ b/src/insets/Inset.h
@@ -335,7 +335,7 @@ public:
 	/// output, add PLAINTEXT_NEWLINE to the number of chars in the last line
 	virtual int plaintext(odocstringstream &, OutputParams const &,
 	                      size_t max_length = INT_MAX) const = 0;
-	/// docbook output
+	/// DocBook output
 	virtual void docbook(XMLStream &, OutputParams const &) const;
 	/// XHTML output
 	/// the inset is expected to write XHTML to the XMLStream
diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp
index 10ea52b..30eacd7 100644
--- a/src/insets/InsetInclude.cpp
+++ b/src/insets/InsetInclude.cpp
@@ -618,9 +618,9 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const
 	FileName const writefile(makeAbsPath(mangled, runparams.for_preview ?
 						 buffer().temppath() : masterBuffer->temppath()));
 
-	LYXERR(Debug::LATEX, "incfile:" << incfile);
-	LYXERR(Debug::LATEX, "exportfile:" << exportfile);
-	LYXERR(Debug::LATEX, "writefile:" << writefile);
+	LYXERR(Debug::OUTFILE, "incfile:" << incfile);
+	LYXERR(Debug::OUTFILE, "exportfile:" << exportfile);
+	LYXERR(Debug::OUTFILE, "writefile:" << writefile);
 
 	string const tex_format = flavor2format(runparams.flavor);
 
@@ -783,7 +783,7 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const
 		if (checksum_in != checksum_out) {
 			if (!included_file.copyTo(writefile)) {
 				// FIXME UNICODE
-				LYXERR(Debug::LATEX,
+				LYXERR(Debug::OUTFILE,
 					to_utf8(bformat(_("Could not copy the file\n%1$s\n"
 									"into the temporary directory."),
 							 from_utf8(included_file.absFileName()))));
diff --git a/src/output_docbook.cpp b/src/output_docbook.cpp
index 5458e7a..5e1f6d1 100644
--- a/src/output_docbook.cpp
+++ b/src/output_docbook.cpp
@@ -826,7 +826,7 @@ DocBookInfoTag getParagraphsWithInfo(ParagraphList const &paragraphs,
 		// There should never be any section here, except for the first paragraph (a title can be part of <info>).
 		// (Just a sanity check: if this fails, this function could end up processing the whole document.)
 		if (cpit != bpit && isLayoutSectioningOrSimilar(par.layout())) {
-			LYXERR0("Assertion failed: section found in potential <info> paragraphs.");
+			LYXERR(Debug::OUTFILE, "Assertion failed: section found in potential <info> paragraphs.");
 			break;
 		}
 
diff --git a/src/output_latex.cpp b/src/output_latex.cpp
index 03ac2b4..bf841fe 100644
--- a/src/output_latex.cpp
+++ b/src/output_latex.cpp
@@ -409,7 +409,7 @@ void TeXEnvironment(Buffer const & buf, Text const & text,
 {
 	ParagraphList const & paragraphs = text.paragraphs();
 	ParagraphList::const_iterator ipar = paragraphs.iterator_at(pit);
-	LYXERR(Debug::LATEX, "TeXEnvironment for paragraph " << pit);
+	LYXERR(Debug::OUTFILE, "TeXEnvironment for paragraph " << pit);
 
 	Layout const & current_layout = ipar->layout();
 	depth_type const current_depth = ipar->params().depth();
@@ -490,7 +490,7 @@ void TeXEnvironment(Buffer const & buf, Text const & text,
 	}
 
 	if (pit != runparams.par_end)
-		LYXERR(Debug::LATEX, "TeXEnvironment for paragraph " << par_begin << " done.");
+		LYXERR(Debug::OUTFILE, "TeXEnvironment for paragraph " << par_begin << " done.");
 }
 
 
@@ -800,8 +800,8 @@ void TeXOnePar(Buffer const & buf,
 	    && !par.empty() && par.isDeleted(0, par.size()) && !bparams.output_changes)
 		return;
 
-	LYXERR(Debug::LATEX, "TeXOnePar for paragraph " << pit << " ptr " << &par << " '"
-		<< everypar << "'");
+	LYXERR(Debug::OUTFILE, "TeXOnePar for paragraph " << pit << " ptr " << &par << " '"
+	                                                  << everypar << "'");
 
 	OutputParams runparams = runparams_in;
 	runparams.isLastPar = (pit == pit_type(paragraphs.size() - 1));
@@ -1555,8 +1555,8 @@ void TeXOnePar(Buffer const & buf,
 	if (intitle_command)
 		state->nest_level_ -= 1;
 
-	LYXERR(Debug::LATEX, "TeXOnePar for paragraph " << pit << " done; ptr "
-		<< &par << " next " << nextpar);
+	LYXERR(Debug::OUTFILE, "TeXOnePar for paragraph " << pit << " done; ptr "
+	                                                  << &par << " next " << nextpar);
 
 	return;
 }
@@ -1863,7 +1863,7 @@ pair<bool, int> switchEncoding(odocstream & os, BufferParams const & bparams,
 	// but it is the best we can do.
 
 	// change encoding
-	LYXERR(Debug::LATEX, "Changing LaTeX encoding from "
+	LYXERR(Debug::OUTFILE, "Changing LaTeX encoding from "
 		   << oldEnc.name() << " to " << newEnc.name());
 	os << setEncoding(newEnc.iconvName());
 	if (bparams.inputenc == "auto-legacy-plain")
diff --git a/src/support/debug.cpp b/src/support/debug.cpp
index 4e2b5c0..b890741 100644
--- a/src/support/debug.cpp
+++ b/src/support/debug.cpp
@@ -47,7 +47,8 @@ DebugErrorItem errorTags[] = {
 	{ Debug::PARSER,    "parser",    N_("Lyxlex grammar parser")},
 	{ Debug::LYXRC,     "lyxrc",     N_("Configuration files reading")},
 	{ Debug::KBMAP,     "kbmap",     N_("Custom keyboard definition")},
-	{ Debug::LATEX,     "latex",     N_("LaTeX generation/execution")},
+	{ Debug::OUTFILE,   "outfile",   N_("Output source file generation/processing")},
+	{ Debug::OUTFILE,   "latex",     N_("Output source file generation/processing")},
 	{ Debug::MATHED,    "mathed",    N_("Math editor")},
 	{ Debug::FONT,      "font",      N_("Font handling")},
 	{ Debug::TCLASS,    "tclass",    N_("Textclass files reading")},
diff --git a/src/support/debug.h b/src/support/debug.h
index f12a842..18dd5fa 100644
--- a/src/support/debug.h
+++ b/src/support/debug.h
@@ -55,7 +55,7 @@ namespace Debug {
 		///
 		KBMAP      = (1u << 6),   // 64
 		///
-		LATEX      = (1u << 7),   // 128
+		OUTFILE      = (1u << 7),   // 128
 		///
 		MATHED     = (1u << 8),   // 256 // Alejandro, please use this.
 		///
diff --git a/src/support/filetools.cpp b/src/support/filetools.cpp
index a3df20a..d554f47 100644
--- a/src/support/filetools.cpp
+++ b/src/support/filetools.cpp
@@ -1207,8 +1207,8 @@ FileName const findtexfile(string const & fil, string const & /*format*/,
 
 	cmd_ret const c = runCommand(kpsecmd);
 
-	LYXERR(Debug::LATEX, "kpse status = " << c.valid << '\n'
-		 << "kpse result = `" << rtrim(c.result, "\n\r") << '\'');
+	LYXERR(Debug::OUTFILE, "kpse status = " << c.valid << '\n'
+	                                        << "kpse result = `" << rtrim(c.result, "\n\r") << '\'');
 	if (c.valid)
 		return FileName(rtrim(to_utf8(from_filesystem8bit(c.result)), "\n\r"));
 	else
diff --git a/src/support/os_win32.cpp b/src/support/os_win32.cpp
index 1d40e56..a10c17e 100644
--- a/src/support/os_win32.cpp
+++ b/src/support/os_win32.cpp
@@ -325,7 +325,7 @@ string external_path(string const & p)
 {
 	string const dos_path = subst(p, "/", "\\");
 
-	LYXERR(Debug::LATEX, "<Win32 path correction> ["
+	LYXERR(Debug::OUTFILE, "<Win32 path correction> ["
 		<< p << "]->>[" << dos_path << ']');
 	return dos_path;
 }
@@ -410,7 +410,7 @@ string latex_path(string const & p)
 		string const drive = p.substr(0, 2);
 		string const cygprefix = cygdrive + "/" + drive.substr(0, 1);
 		string const cygpath = subst(subst(p, '\\', '/'), drive, cygprefix);
-		LYXERR(Debug::LATEX, "<Path correction for LaTeX> ["
+		LYXERR(Debug::OUTFILE, "<Path correction for LaTeX> ["
 			<< p << "]->>[" << cygpath << ']');
 		return cygpath;
 	}
diff --git a/src/xml.cpp b/src/xml.cpp
index 7c614da..7ee8d91 100644
--- a/src/xml.cpp
+++ b/src/xml.cpp
@@ -166,7 +166,7 @@ bool FontTag::operator==(StartTag const & tag) const
 
 void XMLStream::writeError(std::string const &s)
 {
-	LYXERR0(s);
+	LYXERR(Debug::OUTFILE, s);
 	*this << ESCAPE_NONE << from_utf8("<!-- Output Error: " + s + " -->");
 	*this << xml::CR();
 }
@@ -174,7 +174,7 @@ void XMLStream::writeError(std::string const &s)
 
 void XMLStream::writeError(docstring const &s)
 {
-	LYXERR0(s);
+	LYXERR(Debug::OUTFILE, s);
 	*this << ESCAPE_NONE << from_utf8("<!-- Output Error: ");
 	*this << s;
 	*this << ESCAPE_NONE << from_utf8(" -->");
@@ -686,9 +686,9 @@ void xml::openTag(odocstream & os, string const & name, string const & attribute
     string param = subst(attribute, "<", "\"");
     param = subst(param, ">", "\"");
 
-    // Note: we ignore the name if it empty or if it is a comment "<!-- -->" or
+    // Note: we ignore the name if it is empty or if it is a comment "<!-- -->" or
     // if the name is *dummy*.
-    // We ignore dummy because dummy is not a valid docbook element and it is
+    // We ignore dummy because dummy is not a valid DocBook element and it is
     // the internal name given to single paragraphs in the latex output.
     // This allow us to simplify the code a lot and is a reasonable compromise.
     if (!name.empty() && name != "!-- --" && name != "dummy") {

commit 1220f399a7c900873956d305ab28fc3da7c3fdfb
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Tue Mar 1 03:10:17 2022 +0100

    Use a static method instead of a method call on a global variable.

diff --git a/src/tex2lyx/text.cpp b/src/tex2lyx/text.cpp
index 76d11a7..545515f 100644
--- a/src/tex2lyx/text.cpp
+++ b/src/tex2lyx/text.cpp
@@ -668,7 +668,7 @@ pair<bool, docstring> convert_unicodesymbols(docstring s)
 		bool termination;
 		docstring rem;
 		set<string> req;
-		docstring parsed = normalize_c(encodings.fromLaTeXCommand(s,
+		docstring parsed = normalize_c(Encodings::fromLaTeXCommand(s,
 				Encodings::TEXT_CMD, termination, rem, &req));
 		set<string>::const_iterator it = req.begin();
 		set<string>::const_iterator en = req.end();

commit 3002a20800b1eae3a02f2b905e90990ec0ba75f5
Author: Kornel Benko <kornel at lyx.org>
Date:   Mon Feb 28 09:53:12 2022 +0100

    FindAdv: Add missed command after 030db93a

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 6f75ed6..a3ce988 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1730,6 +1730,7 @@ void static fillMissingUnicodesymbols()
   addAccents("\\textdagger", getutf8(0x2020));
   addAccents("\\ddag", getutf8(0x2021));
   addAccents("\\ddagger", getutf8(0x2021));
+  addAccents("\\textdaggerdbl", getutf8(0x2021));
   addAccents("\\textbullet", getutf8(0x2022));
   addAccents("\\bullet", getutf8(0x2022));
   addAccents("\\dots", getutf8(0x2026));

commit 6c530e12156ea9b0d4ff3ab17e1b069cb07a4207
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Feb 28 08:04:55 2022 +0100

    Still more indentation fixes.

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 0a1f851..d3dbc86 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -2132,7 +2132,7 @@ Buffer::ExportStatus Buffer::writeDocBookSource(odocstream & os,
 	bool const output_preamble =
 		output == FullSource || output == OnlyPreamble;
 	bool const output_body =
-	  output == FullSource || output == OnlyBody || output == IncludedFile;
+		output == FullSource || output == OnlyBody || output == IncludedFile;
 
 	if (output_preamble) {
 		// XML preamble, no doctype needed.
@@ -2146,13 +2146,13 @@ Buffer::ExportStatus Buffer::writeDocBookSource(odocstream & os,
 		// Prepare the name space declaration for MathML depending on document preferences.
 		string mathmlNamespace;
 		if (params().docbook_mathml_prefix != BufferParams::NoPrefix) {
-            string mathmlPrefix;
-            if (params().docbook_mathml_prefix == BufferParams::MPrefix)
-	            mathmlPrefix = "m";
-            else if (params().docbook_mathml_prefix == BufferParams::MMLPrefix)
-	            mathmlPrefix = "mml";
+			string mathmlPrefix;
+			if (params().docbook_mathml_prefix == BufferParams::MPrefix)
+				mathmlPrefix = "m";
+			else if (params().docbook_mathml_prefix == BufferParams::MMLPrefix)
+				mathmlPrefix = "mml";
 			mathmlNamespace = + " xmlns:" + mathmlPrefix + "=\"http://www.w3.org/1998/Math/MathML\"";
-	    }
+		}
 
 		// Directly output the root tag, based on the current type of document.
 		string languageCode = params().language->code();

commit 75be9b120001c1c072cc4330bc5cb0603d6c4dfb
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Feb 27 20:37:19 2022 +0100

    Slightly simplify code by using for range.

diff --git a/src/support/debug.cpp b/src/support/debug.cpp
index ca14220..4e2b5c0 100644
--- a/src/support/debug.cpp
+++ b/src/support/debug.cpp
@@ -98,9 +98,9 @@ Debug::Type Debug::value(int idx)
 
 string const Debug::description(Debug::Type val)
 {
-	for (int i = 0 ; i < numErrorTags ; ++i) {
-		if (errorTags[i].level == val)
-			return errorTags[i].desc;
+	for (const auto & errorTag : errorTags) {
+		if (errorTag.level == val)
+			return errorTag.desc;
 	}
 	return "unknown level";
 }
@@ -108,9 +108,9 @@ string const Debug::description(Debug::Type val)
 
 string const Debug::name(Debug::Type val)
 {
-	for (int i = 0 ; i < numErrorTags ; ++i) {
-		if (errorTags[i].level == val)
-			return errorTags[i].name;
+	for (const auto & errorTag : errorTags) {
+		if (errorTag.level == val)
+			return errorTag.name;
 	}
 	return "unknown level";
 }

commit 9cd479a044e76601d3ad625181918c26c4e551b0
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Feb 27 15:12:33 2022 +0100

    Clarify debug message

diff --git a/src/Floating.cpp b/src/Floating.cpp
index 6a14708..8554503 100644
--- a/src/Floating.cpp
+++ b/src/Floating.cpp
@@ -69,7 +69,7 @@ Floating::Floating(string const & type, string const & placement,
 			docbook_float_type_ = "video";
 		} else {
 			// If nothing matches, return something that will not be valid.
-			LYXERR0("Unrecognised float type: " + floattype_);
+			LYXERR0("Float type '" + floattype_ + "' unknown to DocBook!");
 			docbook_float_type_ = "unknown";
 		}
 	}
@@ -159,7 +159,7 @@ string Floating::docbookTag(bool hasTitle) const
 		return hasTitle ? "table" : "informaltable";
 	} else {
 		// If nothing matches, return something that will not be valid.
-		LYXERR0("Unrecognised float type: " + floattype());
+		LYXERR0("Float type '" + floattype() + "' unknown to DocBook!");
 		return "float";
 	}
 }

commit 6d17c5a1d63b5f5af59f1b45409194afe73ea86a
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Feb 27 14:53:01 2022 +0100

    Another indentation fix

diff --git a/src/Floating.h b/src/Floating.h
index 7af2334..ab57c4d 100644
--- a/src/Floating.h
+++ b/src/Floating.h
@@ -38,7 +38,7 @@ public:
 		 std::string const & refPrefix, std::string const & allowedplacement,
 		 std::string const & htmlTag, std::string const & htmlAttrib,
 		 docstring const & htmlStyle, std::string const & docbookTag,
-         std::string const & docbookAttr, std::string const & docbookTagType,
+		 std::string const & docbookAttr, std::string const & docbookTagType,
 		 std::string const & docbookFloatType, std::string const & docbookCaption,
 		 std::string const & required, bool usesfloat, bool ispredefined,
 		 bool allowswide, bool allowssideways);

commit f2bd823217ea2513559392de7356c398f719816b
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Feb 27 14:45:16 2022 +0100

    Fix indentation

diff --git a/src/Floating.cpp b/src/Floating.cpp
index 9a20d7c..6a14708 100644
--- a/src/Floating.cpp
+++ b/src/Floating.cpp
@@ -33,8 +33,8 @@ Floating::Floating(string const & type, string const & placement,
 		   string const & htmlTag, string const & htmlAttrib,
 		   docstring const & htmlStyle, std::string const & docbookTag,
 		   string const & docbookAttr, string const & docbookTagType,
-           std::string const & docbookFloatType, std::string const & docbookCaption,
-           string const & required, bool usesfloat, bool ispredefined,
+		   std::string const & docbookFloatType, std::string const & docbookCaption,
+		   string const & required, bool usesfloat, bool ispredefined,
 		   bool allowswide, bool allowssideways)
 	: floattype_(type), placement_(placement), ext_(ext), within_(within),
 	  style_(style), name_(name), listname_(listName), listcommand_(listCmd),

commit b04a930a27ddd7ba5cc9159d6738bbfd0062eefa
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Feb 27 10:02:52 2022 +0100

    Amend 8a0715d0bdc3
    
    Also do not use the bb trick when exporting "nice".

diff --git a/src/insets/InsetGraphics.cpp b/src/insets/InsetGraphics.cpp
index 91c23aa..2d93f15 100644
--- a/src/insets/InsetGraphics.cpp
+++ b/src/insets/InsetGraphics.cpp
@@ -824,7 +824,8 @@ void InsetGraphics::latex(otexstream & os,
 	string message;
 	// PDFLaTeX and Xe/LuaTeX fall back to draft themselves
 	// and error about it. For DVI/PS, we do something similar here.
-	if (!file_exists && runparams.flavor == Flavor::LaTeX) {
+	// We also don't do such tricks when simply exporting a LaTeX file.
+	if (!file_exists && !runparams.nice && runparams.flavor == Flavor::LaTeX) {
 		TeXErrors terr;
 		ErrorList & errorList = buffer().errorList("Export");
 		docstring const s = params().filename.empty() ?

commit 030db93ab2b6255d07393f627c8509b5e7bdcc94
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Feb 27 04:14:12 2022 +0100

    unicodesymbols: fix problematic entries.

diff --git a/lib/unicodesymbols b/lib/unicodesymbols
index fa3e37d..1b2a88d 100644
--- a/lib/unicodesymbols
+++ b/lib/unicodesymbols
@@ -811,7 +811,7 @@
 0x038f "\\'\\textOmega"     "textgreek" "force=euc-jp" # GREEK CAPITAL LETTER OMEGA WITH TONOS
 0x0390 "\\\"'\\textiota"    "textgreek" "force=euc-jp" # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
 0x0390 "\\'\"\\textiota" ""
-0x0390 "\\'\\"\\textiota" ""
+0x0390 "\\'\\\"\\textiota" ""
 0x0391 "\\textAlpha"        "textgreek" "force=euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" # GREEK CAPITAL LETTER ALPHA
 0x0392 "\\textBeta"         "textgreek" "force=euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" # GREEK CAPITAL LETTER BETA
 0x0393 "\\textGamma"        "textgreek" "force=cp437;cp437de;cp862;cp865;euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" "\\Gamma" "" # GREEK CAPITAL LETTER GAMMA
@@ -844,7 +844,7 @@
 0x03af "\\'\\textiota"      "textgreek" "force=euc-jp" # GREEK SMALL LETTER IOTA WITH TONOS
 0x03b0 "\\\"'\\textupsilon" "textgreek" "force=euc-jp" # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
 0x03b0 "\\'\"\\textupsilon" ""
-0x03b0 "\\'\\"\\textupsilon" ""
+0x03b0 "\\'\\\"\\textupsilon" ""
 0x03b1 "\\textalpha"        "textgreek" "mathalpha,force=cp437;cp437de;cp862;cp865;euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" "\\alpha" "" # GREEK SMALL LETTER ALPHA
 0x03b2 "\\textbeta"         "textgreek" "mathalpha,force=euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis,tipashortcut=B" "\\beta" "" # GREEK SMALL LETTER BETA
 0x03b3 "\\textgamma"        "textgreek" "mathalpha,force=euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" "\\gamma" "" # GREEK SMALL LETTER GAMMA
@@ -1923,7 +1923,7 @@
 0x2020 "\\dag"                    "" "force=cp1256;euc-jp;euc-kr;jis" "\\dagger" "" # DAGGER
 0x2020 "\\textdagger" ""
 0x2021 "\\ddag"                   "" "force=cp1256;euc-jp;euc-kr;jis" "\\ddagger" "" # DOUBLE DAGGER
-0x2021 "\\textdaggerdbl"
+0x2021 "\\textdaggerdbl" ""
 0x2022 "\\textbullet"             "textcomp" "force=cp1256" "\\bullet" "" # BULLET
 0x2023 "\\textifsymbol[ifgeo]{116}" "ifsym" "force=utf8;utf8x;utf8-cjk" # TRIANGULAR BULLET # ≈ 0x25b8
 0x2024 "."                        "" "notermination=text,force=utf8;utf8-cjk;utf8x" "" "" # ONE DOT LEADER # ≈ FULL STOP

commit 8a0715d0bdc38df6c8b26d79e84c68409058a116
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Feb 26 16:23:27 2022 +0100

    Do not output eps bounding box for unknown/missing graphics (#8899)
    
    Except for dvi/ps output chain for which this trick was meant.
    Also, issue an error message in this case. This is analogous to
    the other output flavors now.

diff --git a/src/insets/InsetGraphics.cpp b/src/insets/InsetGraphics.cpp
index ef03b6f..91c23aa 100644
--- a/src/insets/InsetGraphics.cpp
+++ b/src/insets/InsetGraphics.cpp
@@ -61,6 +61,7 @@ TODO
 #include "FuncRequest.h"
 #include "FuncStatus.h"
 #include "InsetIterator.h"
+#include "LaTeX.h"
 #include "LaTeXFeatures.h"
 #include "Lexer.h"
 #include "MetricsInfo.h"
@@ -821,7 +822,19 @@ void InsetGraphics::latex(otexstream & os,
 	bool const file_exists = !params().filename.empty()
 			&& params().filename.isReadableFile();
 	string message;
-	if (!file_exists) {
+	// PDFLaTeX and Xe/LuaTeX fall back to draft themselves
+	// and error about it. For DVI/PS, we do something similar here.
+	if (!file_exists && runparams.flavor == Flavor::LaTeX) {
+		TeXErrors terr;
+		ErrorList & errorList = buffer().errorList("Export");
+		docstring const s = params().filename.empty() ?
+					_("Graphic not specified. Falling back to `draft' mode.")
+				      : bformat(_("Graphic `%1$s' was not found. Falling back to `draft' mode."),
+						params().filename.absoluteFilePath());
+		Paragraph const & par = buffer().paragraphs().front();
+		errorList.push_back(ErrorItem(_("Graphic not found!"), s,
+					      {par.id(), 0}, {par.id(), -1}));
+		buffer().bufferErrors(terr, errorList);
 		if (params().bbox.empty())
 		    message = "bb = 0 0 200 100";
 		if (!params().draft) {
@@ -832,11 +845,11 @@ void InsetGraphics::latex(otexstream & os,
 		if (!message.empty())
 			message += ", ";
 		message += "type=eps";
+		// If no existing file "filename" was found LaTeX
+		// draws only a rectangle with the above bb and the
+		// not found filename in it.
+		LYXERR(Debug::GRAPHICS, "\tMessage = \"" << message << '\"');
 	}
-	// If no existing file "filename" was found LaTeX
-	// draws only a rectangle with the above bb and the
-	// not found filename in it.
-	LYXERR(Debug::GRAPHICS, "\tMessage = \"" << message << '\"');
 
 	// These variables collect all the latex code that should be before and
 	// after the actual includegraphics command.

commit de0dbfb61bd2b4410c9e7948850acbad3bd8ee61
Author: Kornel Benko <kornel at lyx.org>
Date:   Wed Feb 23 18:22:16 2022 +0100

    Amend(2) b5d9bbfe: FindAdv: Added handling of some missing conversions

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 696a256..6f75ed6 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1816,8 +1816,8 @@ static void buildAccentsMap()
   accents["backslash LaTeXe"]        = getutf8(0xf0013);
   accents["backslash lyxarrow"]      = getutf8(0xf0020);
   accents["ddot{\\imath}"] = "ï";
-  buildaccent("ddot", "aAeEhHiIioOtuUwWxXyY",
-                      "äÄëËḧḦïÏïöÖẗüÜẅẄẍẌÿŸ");	// umlaut
+  buildaccent("ddot", "aAeEhHiIoOtuUwWxXyY",
+                      "äÄëËḧḦïÏöÖẗüÜẅẄẍẌÿŸ");	// umlaut
   buildaccent("dot|.", "aAbBcCdDeEfFGghHIimMnNoOpPrRsStTwWxXyYzZ",
                        "ȧȦḃḂċĊḋḊėĖḟḞĠġḣḢİİṁṀṅṄȯȮṗṖṙṘṡṠṫṪẇẆẋẊẏẎżŻ");	// dot{i} can only happen if ignoring case, but there is no lowercase of 'İ'
   accents["acute{\\imath}"] = "í";
@@ -1862,8 +1862,8 @@ static void buildAccentsMap()
   accents["textdoublegrave{\\i}"] = "ȉ";
   buildaccent("dgrave|textdoublegrave", "AaEeIiOoRrUu",
                                         "ȀȁȄȅȈȉȌȍȐȑȔȕ"); // double grave
-  accents["rcap{\\imath}"] = "ȉ";
-  accents["textroundcap{\\i}"] = "ȉ";
+  accents["rcap{\\imath}"] = "È‹";
+  accents["textroundcap{\\i}"] = "È‹";
   buildaccent("rcap|textroundcap", "AaEeIiOoRrUu",
                                    "ȂȃȆȇȊȋȎȏȒȓȖȗ"); // inverted breve
   buildaccent("slashed", "oO",

commit 8bc6aa75353ad26c9ecd31f7ca0487ab7e3c58f4
Author: Daniel Ramoeller <d.lyx at web.de>
Date:   Tue Feb 22 10:17:19 2022 +0100

    Footnote LabelString should be "Foot" rather than "foot"
    
    Fix for bug #12487.

diff --git a/lib/layouts/stdinsets.inc b/lib/layouts/stdinsets.inc
index b604cbe..606765f 100644
--- a/lib/layouts/stdinsets.inc
+++ b/lib/layouts/stdinsets.inc
@@ -48,7 +48,7 @@ InsetLayout Marginal
 End
 
 InsetLayout Foot
-	LabelString           foot
+	LabelString           Foot
 	LatexType             Command
 	LatexName             footnote
 	Counter               footnote

commit 4cab1a77d20d3db8769862da5afe12879a9f8bb3
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sat Feb 19 02:23:52 2022 +0100

    Encodings::fromLaTeXCommand: if the command directly maps an entry of unicodesymbols, use it and bypass most of the logic.
    
    This is important for commands like !`, that are equivalent to \textexclamdown. However, ! is matched earlier, because the logic works with prefixes, hence the output doesn't make sense.

diff --git a/autotests/export/docbook/ert_convert.xml b/autotests/export/docbook/ert_convert.xml
index e21274b..e85efc8 100644
--- a/autotests/export/docbook/ert_convert.xml
+++ b/autotests/export/docbook/ert_convert.xml
@@ -3,5 +3,6 @@
   See https://www.lyx.org/ for more information -->
 <article xml:lang="en_US" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xi="http://www.w3.org/2001/XInclude" version="5.2">
 <title>ERT Conversions</title>
-<para>These should be <code>&#192;</code>: À À À </para>
+<para>These should be <code>&#192;</code>: À À À</para>
+<para>This one should be <code>&#161;</code>: ¡ ¡</para>
 </article>
\ No newline at end of file
diff --git a/src/Encoding.cpp b/src/Encoding.cpp
index 988872f..0c8d085 100644
--- a/src/Encoding.cpp
+++ b/src/Encoding.cpp
@@ -381,6 +381,30 @@ docstring Encodings::fromLaTeXCommand(docstring const & cmd, int cmdtype,
 	rem = empty_docstring();
 	bool const mathmode = cmdtype & MATH_CMD;
 	bool const textmode = cmdtype & TEXT_CMD;
+
+	// Easy case: the command is a complete entry of unicodesymbols.
+	for (const auto & unicodeSymbol : unicodesymbols) {
+		if (mathmode) {
+			for (const auto & command : unicodeSymbol.second.mathCommands()) {
+				if (command == cmd) {
+					docstring value;
+					value += unicodeSymbol.first;
+					return value;
+				}
+			}
+		}
+		if (textmode) {
+			for (const auto & command : unicodeSymbol.second.textCommands()) {
+				if (command == cmd) {
+					docstring value;
+					value += unicodeSymbol.first;
+					return value;
+				}
+			}
+		}
+	}
+
+	// Otherwise, try to map as many commands as possible, matching prefixes of the command.
 	docstring symbols;
 	size_t const cmdend = cmd.size();
 	size_t prefix = 0;

commit 0cde3dce12cd2be875f700ae3c1a175db595a2b7
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Mon Feb 21 02:10:15 2022 +0100

    unicodesymbols: add math versions of some symbols according to unicodetex

diff --git a/lib/unicodesymbols b/lib/unicodesymbols
index e611666..fa3e37d 100644
--- a/lib/unicodesymbols
+++ b/lib/unicodesymbols
@@ -1942,12 +1942,12 @@
 0x2030 "\\textperthousand"        "textcomp" "force=cp1256;euc-cn;euc-jp;euc-kr;gbk;jis" # PER MILLE SIGN
 0x2031 "\\textpertenthousand"     "textcomp" "" # PER TEN THOUSAND SIGN
 0x2032 "\\textasciiacute"         "textcomp" "force=utf8;utf8-cjk;euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" "\\prime" "" # PRIME
-0x2033 "\\textacutedbl"           "textcomp" "force=utf8;utf8-cjk;euc-cn;euc-jp;euc-kr;gbk;jis" # DOUBLE PRIME
+0x2033 "\\textacutedbl"           "textcomp" "force=utf8;utf8-cjk;euc-cn;euc-jp;euc-kr;gbk;jis" "\\dprime" "" # DOUBLE PRIME
 #0x2034 ""                         "" "" # TRIPLE PRIME
 0x2035 "\\textasciigrave"         "textcomp" "force=utf8;utf8x;utf8-cjk;euc-tw;gbk;jis" "\\backprime" "amssymb" # REVERSED PRIME
 0x2036 "\\textgravedbl"           "textcomp" "force=utf8;utf8x;utf8-cjk" # REVERSED DOUBLE PRIME
 #0x2037 ""                         "" "" # REVERSED TRIPLE PRIME
-0x2038 "\\textsubcircum{ }"       "tipa" "force=utf8;utf8x;utf8-cjk" "" "" # CARET
+0x2038 "\\textsubcircum{ }"       "tipa" "force=utf8;utf8x;utf8-cjk" "\\caretinsert" "" # CARET
 0x2039 "\\guilsinglleft"          "" "force=cp1256" # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
 0x203a "\\guilsinglright"         "" "force=cp1256" # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
 0x203b "\\textreferencemark"      "textcomp" "force=euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" # REFERENCE MARK
@@ -3000,7 +3000,7 @@
 0x25b5 "\\textifsymbol[ifgeo]{65}" "ifsym" "force" "\\vartriangle" "amssymb" # WHITE UP-POINTING SMALL TRIANGLE
 0x25b6 "\\textifsymbol[ifgeo]{100}" "ifsym" "force" "\\RHD" "wasysym" # BLACK RIGHT-POINTING TRIANGLE
 0x25b7 "\\textifsymbol[ifgeo]{52}" "ifsym" "force" "\\rhd" "amssymb" # WHITE RIGHT-POINTING TRIANGLE
-0x25b8 "\\textifsymbol[ifgeo]{116}" "ifsym" "force" # BLACK RIGHT-POINTING SMALL TRIANGLE
+0x25b8 "\\textifsymbol[ifgeo]{116}" "ifsym" "force" "\\smallblacktriangleright" "" # BLACK RIGHT-POINTING SMALL TRIANGLE
 0x25b9 "\\textifsymbol[ifgeo]{68}" "ifsym" "force" # WHITE RIGHT-POINTING SMALL TRIANGLE
 0x25ba "\\RIGHTarrow"             "wasysym" "force" # BLACK RIGHT-POINTING POINTER
 #0x25bb "\\textwide{\\textifsymbol[ifgeo]{68}}" "ifsym" "force" "" "" # WHITE RIGHT-POINTING POINTER # textwide should print wide version but actually prints narrow one!
@@ -3078,7 +3078,7 @@
 #0x2603 ""                         "" "" "" "" # SNOWMAN
 #0x2604 ""                         "" "" "" "" # COMET
 0x2605 "\\FiveStar"               "bbding" "force" "\\bigstar" "amssymb" # BLACK STAR
-0x2606 "\\FiveStarOpen"           "bbding" "force" # WHITE STAR
+0x2606 "\\FiveStarOpen"           "bbding" "force" "\\bigwhitestar" "" # WHITE STAR
 #0x2607 ""                         "" "" "" "" # LIGHTNING
 #0x2608 ""                         "" "" "" "" # THUNDERSTORM
 0x2609 "\\astrosun"               "wasysym" "force" "" "" # SUN

commit 548c12158f0b1030e59b51d2db4b17726a66ee7e
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Mon Feb 21 00:18:56 2022 +0100

    unicodesymbols: mark several Greek characters as deprecated (oxia becoming tonos).
    
    Some of corresponding commands did not have a matching LaTeX command for a currently recommended Unicode character; these have been added.

diff --git a/lib/unicodesymbols b/lib/unicodesymbols
index 62bd8eb..e611666 100644
--- a/lib/unicodesymbols
+++ b/lib/unicodesymbols
@@ -810,6 +810,8 @@
 0x038e "\\'\\textUpsilon"   "textgreek" "force=euc-jp" # GREEK CAPITAL LETTER UPSILON WITH TONOS
 0x038f "\\'\\textOmega"     "textgreek" "force=euc-jp" # GREEK CAPITAL LETTER OMEGA WITH TONOS
 0x0390 "\\\"'\\textiota"    "textgreek" "force=euc-jp" # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+0x0390 "\\'\"\\textiota" ""
+0x0390 "\\'\\"\\textiota" ""
 0x0391 "\\textAlpha"        "textgreek" "force=euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" # GREEK CAPITAL LETTER ALPHA
 0x0392 "\\textBeta"         "textgreek" "force=euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" # GREEK CAPITAL LETTER BETA
 0x0393 "\\textGamma"        "textgreek" "force=cp437;cp437de;cp862;cp865;euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" "\\Gamma" "" # GREEK CAPITAL LETTER GAMMA
@@ -841,6 +843,8 @@
 0x03ae "\\'\\texteta"       "textgreek" "force=euc-jp" # GREEK SMALL LETTER ETA WITH TONOS
 0x03af "\\'\\textiota"      "textgreek" "force=euc-jp" # GREEK SMALL LETTER IOTA WITH TONOS
 0x03b0 "\\\"'\\textupsilon" "textgreek" "force=euc-jp" # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+0x03b0 "\\'\"\\textupsilon" ""
+0x03b0 "\\'\\"\\textupsilon" ""
 0x03b1 "\\textalpha"        "textgreek" "mathalpha,force=cp437;cp437de;cp862;cp865;euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" "\\alpha" "" # GREEK SMALL LETTER ALPHA
 0x03b2 "\\textbeta"         "textgreek" "mathalpha,force=euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis,tipashortcut=B" "\\beta" "" # GREEK SMALL LETTER BETA
 0x03b3 "\\textgamma"        "textgreek" "mathalpha,force=euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" "\\gamma" "" # GREEK SMALL LETTER GAMMA
@@ -1748,19 +1752,19 @@
 0x1f6e "\\accpsiliperispomeni\\textOmega"	"textgreek" "" "" "" # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
 0x1f6f "\\accdasiaperispomeni\\textOmega"	"textgreek" "" "" "" # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
 0x1f70 "\\`\\textalpha"	"textgreek" "" "" "" # GREEK SMALL LETTER ALPHA WITH VARIA
-0x1f71 "\\'\\textalpha"	"textgreek" "" "" "" # GREEK SMALL LETTER ALPHA WITH OXIA
+0x1f71 "\\'\\textalpha"	"textgreek" "deprecated" "" "" # GREEK SMALL LETTER ALPHA WITH OXIA
 0x1f72 "\\`\\textepsilon"	"textgreek" "" "" "" # GREEK SMALL LETTER EPSILON WITH VARIA
-0x1f73 "\\'\\textepsilon"	"textgreek" "" "" "" # GREEK SMALL LETTER EPSILON WITH OXIA
+0x1f73 "\\'\\textepsilon"	"textgreek" "deprecated" "" "" # GREEK SMALL LETTER EPSILON WITH OXIA
 0x1f74 "\\`\\texteta"	"textgreek" "" "" "" # GREEK SMALL LETTER ETA WITH VARIA
-0x1f75 "\\'\\texteta"	"textgreek" "" "" "" # GREEK SMALL LETTER ETA WITH OXIA
+0x1f75 "\\'\\texteta"	"textgreek" "deprecated" "" "" # GREEK SMALL LETTER ETA WITH OXIA
 0x1f76 "\\`\\textiota"	"textgreek" "" "" "" # GREEK SMALL LETTER IOTA WITH VARIA
-0x1f77 "\\'\\textiota"	"textgreek" "" "" "" # GREEK SMALL LETTER IOTA WITH OXIA
+0x1f77 "\\'\\textiota"	"textgreek" "deprecated" "" "" # GREEK SMALL LETTER IOTA WITH OXIA
 0x1f78 "\\`\\textomicron"	"textgreek" "" "" "" # GREEK SMALL LETTER OMICRON WITH VARIA
-0x1f79 "\\'\\textomicron"	"textgreek" "" "" "" # GREEK SMALL LETTER OMICRON WITH OXIA
+0x1f79 "\\'\\textomicron"	"textgreek" "deprecated" "" "" # GREEK SMALL LETTER OMICRON WITH OXIA
 0x1f7a "\\`\\textupsilon"	"textgreek" "" "" "" # GREEK SMALL LETTER UPSILON WITH VARIA
-0x1f7b "\\'\\textupsilon"	"textgreek" "" "" "" # GREEK SMALL LETTER UPSILON WITH OXIA
+0x1f7b "\\'\\textupsilon"	"textgreek" "deprecated" "" "" # GREEK SMALL LETTER UPSILON WITH OXIA
 0x1f7c "\\`\\textomega"	"textgreek" "" "" "" # GREEK SMALL LETTER OMEGA WITH VARIA
-0x1f7d "\\'\\textomega"	"textgreek" "" "" "" # GREEK SMALL LETTER OMEGA WITH OXIA
+0x1f7d "\\'\\textomega"	"textgreek" "" "deprecated" "" # GREEK SMALL LETTER OMEGA WITH OXIA
 0x1f80 "\\accpsili\\textalpha\\ypogegrammeni"	"textgreek" "" "" "" # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
 0x1f81 "\\accdasia\\textalpha\\ypogegrammeni"	"textgreek" "" "" "" # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
 0x1f82 "\\accpsilivaria\\textalpha\\ypogegrammeni"	"textgreek" "" "" "" # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
@@ -1819,7 +1823,7 @@
 0x1fb8 "\\u\\textAlpha"	                "textgreek" "" "" "" # GREEK CAPITAL LETTER ALPHA WITH VRACHY
 0x1fb9 "\\=\\textAlpha"	                "textgreek" "" "" "" # GREEK CAPITAL LETTER ALPHA WITH MACRON
 0x1fba "\\`\\textAlpha"	                "textgreek" "" "" "" # GREEK CAPITAL LETTER ALPHA WITH VARIA
-0x1fbb "\\'\\textAlpha"	                "textgreek" "" "" "" # GREEK CAPITAL LETTER ALPHA WITH OXIA
+0x1fbb "\\'\\textAlpha"	                "textgreek" "deprecated" "" "" # GREEK CAPITAL LETTER ALPHA WITH OXIA
 0x1fbc "\\textAlpha\\prosgegrammeni"	"textgreek" "" "" "" # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
 0x1fbd "\\accpsili{ }"		"textgreek" "" "" "" # GREEK KORONIS
 0x1fbe "\\textcompwordmark\\prosgegrammeni" "textgreek" "" "" "" # GREEK PROSGEGRAMMENI
@@ -1832,9 +1836,9 @@
 0x1fc6 "\\~\\texteta"                  "textgreek" "" "" "" # GREEK SMALL LETTER ETA WITH PERISPOMENI
 0x1fc7 "\\~\\texteta\\ypogegrammeni"   "textgreek" "" "" "" # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
 0x1fc8 "\\`\\textEpsilon"              "textgreek" "" "" "" # GREEK CAPITAL LETTER EPSILON WITH VARIA
-0x1fc9 "\\'\\textEpsilon"              "textgreek" "" "" "" # GREEK CAPITAL LETTER EPSILON WITH OXIA
+0x1fc9 "\\'\\textEpsilon"              "textgreek" "deprecated" "" "" # GREEK CAPITAL LETTER EPSILON WITH OXIA
 0x1fca "\\`\\textEta"                  "textgreek" "" "" "" # GREEK CAPITAL LETTER ETA WITH VARIA
-0x1fcb "\\'\\textEta"                  "textgreek" "" "" "" # GREEK CAPITAL LETTER ETA WITH OXIA
+0x1fcb "\\'\\textEta"                  "textgreek" "deprecated" "" "" # GREEK CAPITAL LETTER ETA WITH OXIA
 0x1fcc "\\textEta\\prosgegrammeni"     "textgreek" "" "" "" # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
 0x1fcd "\\accpsilivaria{ }"        "textgreek" "" "" "" # GREEK PSILI AND VARIA
 0x1fce "\\accpsilioxia{ }"        "textgreek" "" "" "" # GREEK PSILI AND OXIA
@@ -1842,20 +1846,20 @@
 0x1fd0 "\\u\\textiota"                 "textgreek" "" "" "" # GREEK SMALL LETTER IOTA WITH VRACHY
 0x1fd1 "\\=\\textiota"                 "textgreek" "" "" "" # GREEK SMALL LETTER IOTA WITH MACRON
 0x1fd2 "\\`\"\\textiota"               "textgreek" "" "" "" # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-0x1fd3 "\\'\"\\textiota"               "textgreek" "" "" "" # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+0x1fd3 "\\'\"\\textiota"               "textgreek" "deprecated" "" "" # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
 0x1fd6 "\\~\\textiota"                 "textgreek" "" "" "" # GREEK SMALL LETTER IOTA WITH PERISPOMENI
 0x1fd7 "\\~\"\\textiota"               "textgreek" "" "" "" # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
 0x1fd8 "\\u\\textIota"                 "textgreek" "" "" "" # GREEK CAPITAL LETTER IOTA WITH VRACHY
 0x1fd9 "\\=\\textIota"                 "textgreek" "" "" "" # GREEK CAPITAL LETTER IOTA WITH MACRON
 0x1fda "\\`\\textIota"                 "textgreek" "" "" "" # GREEK CAPITAL LETTER IOTA WITH VARIA
-0x1fdb "\\'\\textIota"                 "textgreek" "" "" "" # GREEK CAPITAL LETTER IOTA WITH OXIA
+0x1fdb "\\'\\textIota"                 "textgreek" "deprecated" "" "" # GREEK CAPITAL LETTER IOTA WITH OXIA
 0x1fdd "\\accdasiavaria{ }"        "textgreek" "" "" "" # GREEK DASIA AND VARIA
 0x1fde "\\accdasiaoxia{ }"        "textgreek" "" "" "" # GREEK DASIA AND OXIA
 0x1fdf "\\accdasiaperispomeni{ }"        "textgreek" "" "" "" # GREEK DASIA AND PERISPOMENI
 0x1fe0 "\\u\\textupsilon"              "textgreek" "" "" "" # GREEK SMALL LETTER UPSILON WITH VRACHY
 0x1fe1 "\\=\\textupsilon"              "textgreek" "" "" "" # GREEK SMALL LETTER UPSILON WITH MACRON
 0x1fe2 "\\`\"\\textupsilon"            "textgreek" "" "" "" # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-0x1fe3 "\\'\"\\textupsilon"            "textgreek" "" "" "" # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+0x1fe3 "\\'\"\\textupsilon"            "textgreek" "deprecated" "" "" # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
 0x1fe4 "\\accpsili\\textrho"                  "textgreek" "" "" "" # GREEK SMALL LETTER RHO WITH PSILI
 0x1fe5 "\\accdasia\\textrho"                  "textgreek" "" "" "" # GREEK SMALL LETTER RHO WITH DASIA
 0x1fe6 "\\~\\textupsilon"              "textgreek" "" "" "" # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
@@ -1863,7 +1867,7 @@
 0x1fe8 "\\u\\textUpsilon"              "textgreek" "" "" "" # GREEK CAPITAL LETTER UPSILON WITH VRACHY
 0x1fe9 "\\=\\textUpsilon"              "textgreek" "" "" "" # GREEK CAPITAL LETTER UPSILON WITH MACRON
 0x1fea "\\`\\textUpsilon"              "textgreek" "" "" "" # GREEK CAPITAL LETTER UPSILON WITH VARIA
-0x1feb "\\'\\textUpsilon"              "textgreek" "" "" "" # GREEK CAPITAL LETTER UPSILON WITH OXIA
+0x1feb "\\'\\textUpsilon"              "textgreek" "deprecated" "" "" # GREEK CAPITAL LETTER UPSILON WITH OXIA
 0x1fec "\\accdasia\\textRho"                  "textgreek" "" "" "" # GREEK CAPITAL LETTER RHO WITH DASIA
 0x1fed "\\`\"{ }"       "textgreek" "" "" "" # GREEK DIALYTIKA AND VARIA
 0x1fee "\\'\"{ }"       "textgreek" "" "" "" # GREEK DIALYTIKA AND OXIA
@@ -1874,11 +1878,11 @@
 0x1ff6 "\\~\\textomega"                "textgreek" "" "" "" # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
 0x1ff7 "\\~\\textomega\\ypogegrammeni" "textgreek" "" "" "" # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
 0x1ff8 "\\`\\textOmicron"              "textgreek" "" "" "" # GREEK CAPITAL LETTER OMICRON WITH VARIA
-0x1ff9 "\\'\\textOmicron"              "textgreek" "" "" "" # GREEK CAPITAL LETTER OMICRON WITH OXIA
+0x1ff9 "\\'\\textOmicron"              "textgreek" "deprecated" "" "" # GREEK CAPITAL LETTER OMICRON WITH OXIA
 0x1ffa "\\`\\textOmega"                "textgreek" "" "" "" # GREEK CAPITAL LETTER OMEGA WITH VARIA
-0x1ffb "\\'\\textOmega"                "textgreek" "" "" "" # GREEK CAPITAL LETTER OMEGA WITH OXIA
+0x1ffb "\\'\\textOmega"                "textgreek" "deprecated" "" "" # GREEK CAPITAL LETTER OMEGA WITH OXIA
 0x1ffc "\\textOmega\\prosgegrammeni"   "textgreek" "" "" "" # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-0x1ffd "\\'{ }"         "textgreek" "" "" "" # GREEK OXIA
+0x1ffd "\\'{ }"         "textgreek" "deprecated" "" "" # GREEK OXIA
 0x1ffe "\\accdasia{ }"         "textgreek" "" "" "" # GREEK DASIA
 #
 # 70 General Punctuation
@@ -2574,8 +2578,8 @@
 #0x2317 ""                         "" "" "" "" # VIEWDATA SQUARE
 0x2318 "\\cmdmac"                 "menukeys" "force" "" "" # PLACE OF INTEREST SIGN
 #0x2319 ""                         "" "" "" "" # TURNED NOT SIGN
-0x2329 "\\textlangle"             "textcomp" "force=utf8x" "" "" # LEFT-POINTING ANGLE BRACKET
-0x232a "\\textrangle"             "textcomp" "force=utf8x" "" "" # RIGHT-POINTING ANGLE BRACKET
+0x2329 "\\textlangle"             "textcomp" "force=utf8x,deprecated" "" "" # LEFT-POINTING ANGLE BRACKET
+0x232a "\\textrangle"             "textcomp" "force=utf8x,deprecated" "" "" # RIGHT-POINTING ANGLE BRACKET
 0x231a "\\Clocklogo"              "marvosym" "force" # WATCH
 #0x231b ""                         "" "" "" "" # HOURGLASS
 0x231c ""                         "" "force" "\\ulcorner" "amssymb" # TOP LEFT CORNER

commit 407ae8db042622c04fdfeb0b2cf9e7cebeef9816
Author: Kornel Benko <kornel at lyx.org>
Date:   Mon Feb 21 14:52:56 2022 +0100

    Amend b5d9bbfe: FindAdv: Added handling of some missing conversions

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 889a8a4..696a256 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1513,6 +1513,8 @@ void static fillMissingUnicodesymbols()
   addAccents("\\yen", getutf8(0x00a5));
   addAccents("\\textsection", getutf8(0x00a7));
   addAccents("\\mathsection", getutf8(0x00a7));
+  addAccents("\\textcopyright", getutf8(0x00a9));
+  addAccents("\\copyright", getutf8(0x00a9));
   addAccents("\\textlnot", getutf8(0x00ac));
   addAccents("\\neg", getutf8(0x00ac));
   addAccents("\\textregistered", getutf8(0x00ae));
@@ -1532,8 +1534,6 @@ void static fillMissingUnicodesymbols()
   addAccents("\\o", getutf8(0x00f8));
   addAccents("\\textcrlambda", getutf8(0x019b));
   addAccents("\\j", getutf8(0x0237));
-  addAccents("\\textepsilon", getutf8(0x025b));
-  addAccents("\\varepsilon", getutf8(0x025b));
   addAccents("\\textGamma", getutf8(0x0393));
   addAccents("\\Gamma", getutf8(0x0393));
   addAccents("\\textDelta", getutf8(0x0394));

commit b5d9bbfecd88b4a938db3c14ef0367c445e19f56
Author: Kornel Benko <kornel at lyx.org>
Date:   Mon Feb 21 11:09:54 2022 +0100

    FindAdv: Added handling of some missing conversions

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 6f780c1..889a8a4 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1507,12 +1507,16 @@ static void addAccents(string latex_in, string unicode_out)
 
 void static fillMissingUnicodesymbols()
 {
+  addAccents("\\pounds", getutf8(0x00a3));
+  addAccents("\\textsterling", getutf8(0x00a3));
   addAccents("\\textyen", getutf8(0x00a5));
   addAccents("\\yen", getutf8(0x00a5));
   addAccents("\\textsection", getutf8(0x00a7));
   addAccents("\\mathsection", getutf8(0x00a7));
   addAccents("\\textlnot", getutf8(0x00ac));
   addAccents("\\neg", getutf8(0x00ac));
+  addAccents("\\textregistered", getutf8(0x00ae));
+  addAccents("\\circledR", getutf8(0x00ae));
   addAccents("\\textpm", getutf8(0x00b1));
   addAccents("\\pm", getutf8(0x00b1));
   addAccents("\\textparagraph", getutf8(0x00b6));
@@ -1520,6 +1524,7 @@ void static fillMissingUnicodesymbols()
   addAccents("\\textperiodcentered", getutf8(0x00b7));
   addAccents("\\texttimes", getutf8(0x00d7));
   addAccents("\\times", getutf8(0x00d7));
+  addAccents("\\O", getutf8(0x00d8));
   addAccents("\\dh", getutf8(0x00f0));
   addAccents("\\eth", getutf8(0x00f0));
   addAccents("\\textdiv", getutf8(0x00f7));
@@ -1527,6 +1532,30 @@ void static fillMissingUnicodesymbols()
   addAccents("\\o", getutf8(0x00f8));
   addAccents("\\textcrlambda", getutf8(0x019b));
   addAccents("\\j", getutf8(0x0237));
+  addAccents("\\textepsilon", getutf8(0x025b));
+  addAccents("\\varepsilon", getutf8(0x025b));
+  addAccents("\\textGamma", getutf8(0x0393));
+  addAccents("\\Gamma", getutf8(0x0393));
+  addAccents("\\textDelta", getutf8(0x0394));
+  addAccents("\\Delta", getutf8(0x0394));
+  addAccents("\\textTheta", getutf8(0x0398));
+  addAccents("\\Theta", getutf8(0x0398));
+  addAccents("\\textLambda", getutf8(0x039b));
+  addAccents("\\Lambda", getutf8(0x039b));
+  addAccents("\\textXi", getutf8(0x039e));
+  addAccents("\\Xi", getutf8(0x039e));
+  addAccents("\\textPi", getutf8(0x03a0));
+  addAccents("\\Pi", getutf8(0x03a0));
+  addAccents("\\textSigma", getutf8(0x03a3));
+  addAccents("\\Sigma", getutf8(0x03a3));
+  addAccents("\\textUpsilon", getutf8(0x03a5));
+  addAccents("\\Upsilon", getutf8(0x03a5));
+  addAccents("\\textPhi", getutf8(0x03a6));
+  addAccents("\\Phi", getutf8(0x03a6));
+  addAccents("\\textPsi", getutf8(0x03a8));
+  addAccents("\\Psi", getutf8(0x03a8));
+  addAccents("\\textOmega", getutf8(0x03a9));
+  addAccents("\\Omega", getutf8(0x03a9));
   addAccents("\\textalpha", getutf8(0x03b1));
   addAccents("\\alpha", getutf8(0x03b1));
   addAccents("\\textbeta", getutf8(0x03b2));
@@ -1696,19 +1725,24 @@ void static fillMissingUnicodesymbols()
   addAccents("\\thainine", getutf8(0x0e59));
   addAccents("\\thaiAngkhankhu", getutf8(0x0e5a));
   addAccents("\\thaiKhomut", getutf8(0x0e5b));
-
   addAccents("\\dag", getutf8(0x2020));
   addAccents("\\dagger", getutf8(0x2020));
+  addAccents("\\textdagger", getutf8(0x2020));
   addAccents("\\ddag", getutf8(0x2021));
   addAccents("\\ddagger", getutf8(0x2021));
   addAccents("\\textbullet", getutf8(0x2022));
   addAccents("\\bullet", getutf8(0x2022));
   addAccents("\\dots", getutf8(0x2026));
   addAccents("\\ldots", getutf8(0x2026));
+  addAccents("\\textellipsis", getutf8(0x2026));
   addAccents("\\textasciiacute", getutf8(0x2032));
   addAccents("\\prime", getutf8(0x2032));
+  addAccents("\\textacutedbl", getutf8(0x2033));
+  addAccents("\\dprime", getutf8(0x2033));
   addAccents("\\textasciigrave", getutf8(0x2035));
   addAccents("\\backprime", getutf8(0x2035));
+  addAccents("\\textsubcircum{ }", getutf8(0x2038));
+  addAccents("\\caretinsert", getutf8(0x2038));
   addAccents("\\textasteriskcentered", getutf8(0x204e));
   addAccents("\\ast", getutf8(0x204e));
   addAccents("\\textmho", getutf8(0x2127));
@@ -1729,6 +1763,14 @@ void static fillMissingUnicodesymbols()
   addAccents("\\surd", getutf8(0x221a));
   addAccents("\\textbigcircle", getutf8(0x25ef));
   addAccents("\\bigcirc", getutf8(0x25ef));
+  addAccents("\\FiveStar", getutf8(0x2605));
+  addAccents("\\bigstar", getutf8(0x2605));
+  addAccents("\\FiveStarOpen", getutf8(0x2606));
+  addAccents("\\bigwhitestar", getutf8(0x2606));
+  addAccents("\\Checkmark", getutf8(0x2713));
+  addAccents("\\checkmark", getutf8(0x2713));
+  addAccents("\\CrossMaltese", getutf8(0x2720));
+  addAccents("\\maltese", getutf8(0x2720));
   addAccents("\\textlangle", getutf8(0x27e8));
   addAccents("\\langle", getutf8(0x27e8));
   addAccents("\\textrangle", getutf8(0x27e9));

commit 0d7d8c37e3962dab0e76dd5b21bfee308e522df2
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Feb 21 09:49:32 2022 +0100

    Fix language direction switch issue
    
    reported at https://marc.info/?l=lyx-users&m=164538003727435&w=2

diff --git a/src/output_latex.cpp b/src/output_latex.cpp
index f6c7375..03ac2b4 100644
--- a/src/output_latex.cpp
+++ b/src/output_latex.cpp
@@ -933,10 +933,12 @@ void TeXOnePar(Buffer const & buf,
 			break;
 		}
 	}
+	bool const have_prior_nptpar =
+			prior_nontitle_par && !prior_nontitle_par->isPassThru();
 	Language const * const prev_language =
 		runparams_in.for_searchAdv != OutputParams::NoSearch
 			? languages.getLanguage("ignore")
-			: (prior_nontitle_par && !prior_nontitle_par->isPassThru())
+			: (have_prior_nptpar)
 				? (use_prev_env_language 
 					? state->prev_env_language_
 					: prior_nontitle_par->getParLanguage(bparams))
@@ -982,7 +984,9 @@ void TeXOnePar(Buffer const & buf,
 		use_polyglossia
 		&& runparams.local_font != nullptr
 		&& outer_language->rightToLeft()
-		&& !par_language->rightToLeft();
+		&& !par_language->rightToLeft()
+		&& !(have_prior_nptpar
+		     && (prev_language->rightToLeft() != par_language->rightToLeft()));
 	bool const localswitch =
 			(runparams_in.for_searchAdv != OutputParams::NoSearch
 			|| text.inset().forceLocalFontSwitch()

commit fb70452086747fad09ce6f1e56e9373a330b3373
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Feb 20 22:28:48 2022 +0100

    unicodesymbols: amend fec498d6, there was an O (capital letter O) instead of an 0 (zero).

diff --git a/lib/unicodesymbols b/lib/unicodesymbols
index ab27e31..62bd8eb 100644
--- a/lib/unicodesymbols
+++ b/lib/unicodesymbols
@@ -70,7 +70,7 @@
 0x00a7 "\\textsection"            "textcomp" "force=cp1255;cp1256;iso8859-7;euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis;shift-jis-platex" "\\mathsection" "" # SECTION SIGN
 0x00a8 "\\textasciidieresis"      "textcomp" "force=cp1255;cp1256;iso8859-7;euc-cn;euc-jp;euc-kr;gbk;jis;shift-jis-platex" # DIAERESIS
 0x00a9 "\\textcopyright"          "textcomp" "force=cp1255;cp1256;koi8-u;iso8859-7;euc-jp;euc-jp-platex;utf8-platex" # COPYRIGHT SIGN
-Ox00a9 "\\copyright" ""
+0x00a9 "\\copyright" ""
 0x00aa "\\textordfeminine"        "textcomp" "force=cp862;euc-jp;euc-jp-platex;euc-kr;utf8-platex" # FEMININE ORDINAL INDICATOR
 0x00ab "\\guillemotleft"          "" "force=armscii8;cp862;cp1255;cp1256;iso8859-7;utf8-platex" # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
 0x00ac "\\textlnot"               "textcomp" "force!=utf8;utf8-cjk" "\\neg" "" # ¬ NOT SIGN

commit cfb6f205fa59a7989958ac2808e5a3c62f1b35bf
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Feb 20 21:30:39 2022 +0100

    DocBook, InsetFloat: avoid a potential nullptr dereference when detecting the type of table for filler content.

diff --git a/src/insets/InsetFloat.cpp b/src/insets/InsetFloat.cpp
index cb05e49..981d611 100644
--- a/src/insets/InsetFloat.cpp
+++ b/src/insets/InsetFloat.cpp
@@ -819,12 +819,15 @@ void docbookNoSubfigures(XMLStream & xs, OutputParams const & runparams, const I
 	}
 
 	// - Output the actual content of the float or some dummy content (to ensure that the output
-	// document is valid).
+	// document is valid). Use HTML tables by default, unless an InsetFloat is given.
 	if (hasFloat)
 		xs << XMLStream::ESCAPE_NONE << osFloatContent.str();
-	else if (ftype.docbookFloatType() == "table")
-		docbookGenerateFillerTable(xs, thisFloat->buffer().params().docbook_table_output);
-	else
+	else if (ftype.docbookFloatType() == "table") {
+		BufferParams::TableOutput tableFormat = BufferParams::HTMLTable;
+		if (thisFloat)
+			tableFormat = thisFloat->buffer().params().docbook_table_output;
+		docbookGenerateFillerTable(xs, tableFormat);
+	} else
 		docbookGenerateFillerMedia(xs);
 
 	// - Close the float.

commit bfe98181169d9e697e515da974d9b6a15a06c940
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Feb 20 19:48:13 2022 +0100

    Make undo action no-ops when the buffer is read-only
    
    Since the buffer cannot be modified, there is no point to record changes.
    Avoids marking buffer dirty after running "inset-forall".

diff --git a/src/Undo.cpp b/src/Undo.cpp
index a870241..4e970df 100644
--- a/src/Undo.cpp
+++ b/src/Undo.cpp
@@ -374,6 +374,9 @@ void Undo::Private::recordUndo(UndoKind kind,
 	LASSERT(first_pit <= cell.lastpit(), return);
 	LASSERT(last_pit <= cell.lastpit(), return);
 
+	if (buffer_.isReadonly())
+		return;
+
 	doRecordUndo(kind, cell, first_pit, last_pit, cur,
 		undostack_);
 
@@ -408,6 +411,9 @@ void Undo::Private::doRecordUndoBufferParams(CursorData const & cur_before,
 
 void Undo::Private::recordUndoBufferParams(CursorData const & cur)
 {
+	if (buffer_.isReadonly())
+		return;
+
 	doRecordUndoBufferParams(cur, undostack_);
 
 	// next time we'll try again to combine entries if possible
@@ -517,6 +523,9 @@ void Undo::Private::doUndoRedoAction(CursorData & cur, UndoElementStack & stack,
 
 bool Undo::Private::undoRedoAction(CursorData & cur, bool isUndoOperation)
 {
+	if (buffer_.isReadonly())
+		return false;
+
 	undo_finished_ = true;
 
 	UndoElementStack & stack = isUndoOperation ?  undostack_ : redostack_;

commit a90a1aed06a149a181cbcc34b589f92f35f6222f
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Feb 20 19:35:37 2022 +0100

    Fixup cc426346: rename curs to bvcur
    
    The name "curs" was chosen to avoid to hide the existing "cur" local variable.
    Using "bvcur" makes the name easier to grasp.

diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 8ea0204..023301d 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -2066,14 +2066,14 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
 		// an arbitrary number to limit number of iterations
 		const int max_iter = 100000;
 		int iterations = 0;
-		Cursor & curs = d->cursor_;
-		Cursor const savecur = curs;
-		curs.reset();
-		if (!curs.nextInset())
-			curs.forwardInset();
-		curs.beginUndoGroup();
-		while(curs && iterations < max_iter) {
-			Inset * const ins = curs.nextInset();
+		Cursor & bvcur = d->cursor_;
+		Cursor const savecur = bvcur;
+		bvcur.reset();
+		if (!bvcur.nextInset())
+			bvcur.forwardInset();
+		bvcur.beginUndoGroup();
+		while(bvcur && iterations < max_iter) {
+			Inset * const ins = bvcur.nextInset();
 			if (!ins)
 				break;
 			docstring insname = ins->layoutName();
@@ -2081,7 +2081,7 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
 				if (insname == name || name == from_utf8("*")) {
 					lyx::dispatch(fr, dr);
 					// we do not want to remember selection here
-					curs.clearSelection();
+					bvcur.clearSelection();
 					++iterations;
 					break;
 				}
@@ -2091,11 +2091,11 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
 				insname = insname.substr(0, i);
 			}
 			// if we did not delete the inset, skip it
-			if (!curs.nextInset() || curs.nextInset() == ins)
-				curs.forwardInset();
+			if (!bvcur.nextInset() || bvcur.nextInset() == ins)
+				bvcur.forwardInset();
 		}
-		curs = savecur;
-		curs.fixIfBroken();
+		bvcur = savecur;
+		bvcur.fixIfBroken();
 		/** This is a dummy undo record only to remember the cursor
 		 * that has just been set; this will be used on a redo action
 		 * (see ticket #10097)
@@ -2103,8 +2103,8 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
 		 * FIXME: a better fix would be to have a way to set the
 		 * cursor value directly, but I am not sure it is worth it.
 		 */
-		curs.recordUndo();
-		curs.endUndoGroup();
+		bvcur.recordUndo();
+		bvcur.endUndoGroup();
 		dr.screenUpdate(Update::Force);
 		dr.forceBufferUpdate();
 

commit 48ee2fd07b405fe1417981a202c12d91801e707e
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Feb 20 19:33:22 2022 +0100

    Do not call recordUndo(), lyx::dispatch handles it.
    
    This avoids extra memory use (and would mark document dirty even if
    read-only).

diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 06ffb38..8ea0204 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -2079,7 +2079,6 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
 			docstring insname = ins->layoutName();
 			while (!insname.empty()) {
 				if (insname == name || name == from_utf8("*")) {
-					curs.recordUndo();
 					lyx::dispatch(fr, dr);
 					// we do not want to remember selection here
 					curs.clearSelection();

commit 3b28ac46376cfdb10fbc67a45fe1c83d87043d08
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Feb 20 19:07:58 2022 +0100

    inset-forall: clear selection after each action
    
    This avoid a crash when doing
      command-sequence inset-forall Caption char-delete-forward; statistics; undo
    in the user guide when a malformed selection is created.
    
    The selection happens here because char-delete-forward will select the
    caption instead of deleting it if the "force" parameter is not given.
    This is a poor API IMO, it is the plain <del> action that should use a
    special parameter.

diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 2bf7d2a..06ffb38 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -2081,6 +2081,8 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
 				if (insname == name || name == from_utf8("*")) {
 					curs.recordUndo();
 					lyx::dispatch(fr, dr);
+					// we do not want to remember selection here
+					curs.clearSelection();
 					++iterations;
 					break;
 				}

commit aad18e969a7fad69a196b8de737d18f33a7ab9b0
Author: Daniel Ramoeller <d.lyx at web.de>
Date:   Thu Oct 21 09:29:54 2021 +0200

    Combine the separation between different layouts (with same depth)
    
    Fix for #12402.

diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index f68292a..53b6838 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1202,7 +1202,10 @@ int TextMetrics::parTopSpacing(pit_type const pit) const
 	    && prevpar.getLabelWidthString() == par.getLabelWidthString()) {
 		layoutasc = layout.itemsep * dh;
 	} else if (pit != 0 && layout.topsep > 0)
-		layoutasc = layout.topsep * dh;
+		// combine the separation between different layouts (with same depth)
+		layoutasc = max(0.0,
+			prevpar.getDepth() != par.getDepth() ? layout.topsep
+			: layout.topsep - prevpar.layout().bottomsep) * dh;
 
 	asc += int(layoutasc * 2 / (2 + pars[pit].getDepth()));
 

commit b365a471124d63017beabeb5c3ae84ce00c7f350
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Feb 20 17:22:07 2022 +0100

    Avoid null pointer dereference
    
    Spotted by coverity. In the real world, getInset should never return
    nullptr when isInset is true.

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 3a4c399..9a1171f 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -2367,8 +2367,8 @@ int Paragraph::Private::startTeXParParams(BufferParams const & bparams,
 	    && !layout_->pass_thru
 	    && curAlign != LYX_ALIGN_CENTER) {
 		if (!owner_->empty()
-		    && (owner_->isInset(0)
-			&& owner_->getInset(0)->lyxCode() == VSPACE_CODE))
+		    && owner_->getInset(0)
+		    && owner_->getInset(0)->lyxCode() == VSPACE_CODE)
 			// If the paragraph starts with a vspace, the \\noindent
 			// needs to come after that (as it leaves vmode).
 			// If the paragraph consists only of the vspace,

commit a900667ea1bb516ac562a6c45e4f3a1e4071b01b
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Feb 20 17:09:49 2022 +0100

    Avoid null pointer dereference
    
    Spotted by coverity.

diff --git a/src/graphics/GraphicsLoader.cpp b/src/graphics/GraphicsLoader.cpp
index b375c0e..dc3f7c5 100644
--- a/src/graphics/GraphicsLoader.cpp
+++ b/src/graphics/GraphicsLoader.cpp
@@ -400,7 +400,7 @@ void Loader::Impl::resetFile(FileName const & file)
 	// new file.
 	bool continue_monitoring = false;
 
-	if (!old_file.empty()) {
+	if (cached_item_ && !old_file.empty()) {
 		continue_monitoring = cached_item_->monitoring();
 		// cached_item_ is going to be reset, so the connected
 		// signal needs to be disconnected.

commit e263fe8e03b9b506e8355e5a11cb3ec717c29592
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Feb 20 17:02:04 2022 +0100

    Fix unintialized variables spotted by coverity
    
    The InsetWrap case happens in decodeInsetParaps (InsetCommand.cpp),
    where the default constructor is invoked. In this case, lines was not
    initialized.

diff --git a/src/insets/InsetWrap.cpp b/src/insets/InsetWrap.cpp
index c862b17..8987405 100644
--- a/src/insets/InsetWrap.cpp
+++ b/src/insets/InsetWrap.cpp
@@ -47,10 +47,6 @@ InsetWrap::InsetWrap(Buffer * buf, string const & type)
 	: InsetCaptionable(buf)
 {
 	setCaptionType(type);
-	params_.lines = 0;
-	params_.placement = "o";
-	params_.overhang = Length(0, Length::PCW);
-	params_.width = Length(50, Length::PCW);
 }
 
 
diff --git a/src/insets/InsetWrap.h b/src/insets/InsetWrap.h
index 02e0a20..a44821e 100644
--- a/src/insets/InsetWrap.h
+++ b/src/insets/InsetWrap.h
@@ -30,13 +30,13 @@ public:
 	///
 	std::string type;
 	///
-	int lines;
+	int lines = 0;
 	///
-	std::string placement;
+	std::string placement = "o";
 	///
-	Length overhang;
+	Length overhang = Length(0, Length::PCW);
 	///
-	Length width;
+	Length width = Length(50, Length::PCW);
 };
 
 
diff --git a/src/mathed/MathParser.cpp b/src/mathed/MathParser.cpp
index 6d1b747..0ba3375 100644
--- a/src/mathed/MathParser.cpp
+++ b/src/mathed/MathParser.cpp
@@ -1369,7 +1369,7 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
 			// otherwise parse it as an user macro
 			MathData count;
 			parse(count, FLAG_ITEM, mode);
-			int cols;
+			int cols = 0;
 			// limit arbitrarily to 100 columns
 			if (extractNumber(count, cols) && cols > 0 && cols < 100) {
 				// resize the table if necessary

commit 6b0cd451fb12bb2eda88bd54511011e2184445a8
Author: Stephan Witt <switt at lyx.org>
Date:   Sun Feb 20 13:06:28 2022 +0100

    #9287 query Standard User Defaults on mac and adjust cursor flash time accordingly

diff --git a/src/frontends/qt/GuiApplication.cpp b/src/frontends/qt/GuiApplication.cpp
index b44f2c5..c15f2d7 100644
--- a/src/frontends/qt/GuiApplication.cpp
+++ b/src/frontends/qt/GuiApplication.cpp
@@ -197,6 +197,20 @@ frontend::Application * createApplication(int & argc, char * argv[])
 #endif
 
 
+#if defined(Q_OS_MAC)
+	int const cursor_time_on = NSTextInsertionPointBlinkPeriodOn();
+	int const cursor_time_off = NSTextInsertionPointBlinkPeriodOff();
+	if (cursor_time_on > 0 && cursor_time_off > 0) {
+		QApplication::setCursorFlashTime(cursor_time_on + cursor_time_off);
+	} else if (cursor_time_on <= 0 && cursor_time_off > 0) {
+		// Off is set and On is undefined of zero
+		QApplication::setCursorFlashTime(0);
+	} else if (cursor_time_off <= 0 && cursor_time_on > 0) {
+		// On is set and Off is undefined of zero
+		QApplication::setCursorFlashTime(0);
+	}
+#endif
+
 // Setup high DPI handling. This is a bit complicated, but will be default in Qt6.
 // macOS does it by itself.
 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && !defined(Q_OS_MAC)
diff --git a/src/support/AppleSupport.h b/src/support/AppleSupport.h
index 9f154c6..0d2e41a 100644
--- a/src/support/AppleSupport.h
+++ b/src/support/AppleSupport.h
@@ -20,6 +20,12 @@ extern "C" {
 
 	// query the system preferences for users tabbing preference
 	bool appleUserTabbingPreferenceAlways();
+
+	// Query the Standard User Defaults for float values of
+	// NSTextInsertionPointBlinkPeriodOn resp. NSTextInsertionPointBlinkPeriodOff
+	// and return the integer part of it - return -1 in case of unset value
+	int NSTextInsertionPointBlinkPeriodOn();
+	int NSTextInsertionPointBlinkPeriodOff();
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/support/AppleSupport.m b/src/support/AppleSupport.m
index 2c78bd2..4278564 100644
--- a/src/support/AppleSupport.m
+++ b/src/support/AppleSupport.m
@@ -49,3 +49,19 @@ bool appleUserTabbingPreferenceAlways() {
 	return false;
 #endif
 }
+
+
+int NSTextInsertionPointBlinkPeriodOn() {
+	NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+
+	return [prefs objectForKey:@"NSTextInsertionPointBlinkPeriodOn"] == nil ?
+		-1 : [prefs floatForKey:@"NSTextInsertionPointBlinkPeriodOn"];
+}
+
+
+int NSTextInsertionPointBlinkPeriodOff() {
+	NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+
+	return [prefs objectForKey:@"NSTextInsertionPointBlinkPeriodOff"] == nil ?
+			-1 : [prefs floatForKey:@"NSTextInsertionPointBlinkPeriodOff"];
+}

commit 28af3b6cf87ecc1626b57d12b35a49691caaa5dc
Author: jpc <jpc at lyx.org>
Date:   Sun Feb 20 10:06:50 2022 +0100

                 Update fr.po

diff --git a/po/fr.gmo b/po/fr.gmo
index 086a872..5c127d1 100644
Binary files a/po/fr.gmo and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
index 5358e99..8c48613 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -362,8 +362,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-17 18:01+0100\n"
-"PO-Revision-Date: 2022-02-18 10:53+0100\n"
+"POT-Creation-Date: 2022-02-20 10:02+0100\n"
+"PO-Revision-Date: 2022-02-20 10:06+0100\n"
 "Last-Translator: Jean-Pierre Chrétien <jeanpierre.chretien at free.fr>\n"
 "Language-Team: lyxfr\n"
 "Language: fr\n"
@@ -664,54 +664,63 @@ msgid "Add &Local..."
 msgstr "&Ajouter local..."
 
 #: src/frontends/qt/ui/BibtexUi.ui:91
+msgid "Inherit bibliography databases from the master document"
+msgstr ""
+"Importer les bases de données bibliographiques depuis le document maître"
+
+#: src/frontends/qt/ui/BibtexUi.ui:94
+msgid "&Inherit from Master"
+msgstr "&Importer depuis le document maître"
+
+#: src/frontends/qt/ui/BibtexUi.ui:101
 msgid "Remove the selected database"
 msgstr "Enlever la base de données sélectionnée"
 
-#: src/frontends/qt/ui/BibtexUi.ui:94 src/frontends/qt/ui/CitationUi.ui:159
+#: src/frontends/qt/ui/BibtexUi.ui:104 src/frontends/qt/ui/CitationUi.ui:159
 msgid "&Delete"
 msgstr "Suppri&mer"
 
-#: src/frontends/qt/ui/BibtexUi.ui:107
+#: src/frontends/qt/ui/BibtexUi.ui:117
 msgid "Move the selected database up (Ctrl-Up)"
 msgstr "Faire monter la base de données sélectionnée (Ctrl-Up)"
 
-#: src/frontends/qt/ui/BibtexUi.ui:110 src/frontends/qt/ui/CitationUi.ui:191
+#: src/frontends/qt/ui/BibtexUi.ui:120 src/frontends/qt/ui/CitationUi.ui:191
 #: src/frontends/qt/ui/ModulesUi.ui:140
 msgid "&Up"
 msgstr "Vers le &haut"
 
-#: src/frontends/qt/ui/BibtexUi.ui:130
+#: src/frontends/qt/ui/BibtexUi.ui:140
 msgid "Move the selected database down (Ctrl-Down)"
 msgstr "Faire descendre la base de données sélectionnée (Ctrl-Down)"
 
-#: src/frontends/qt/ui/BibtexUi.ui:133 src/frontends/qt/ui/CitationUi.ui:214
+#: src/frontends/qt/ui/BibtexUi.ui:143 src/frontends/qt/ui/CitationUi.ui:214
 #: src/frontends/qt/ui/ModulesUi.ui:147
 msgid "Do&wn"
 msgstr "Vers le &bas"
 
-#: src/frontends/qt/ui/BibtexUi.ui:160
+#: src/frontends/qt/ui/BibtexUi.ui:170
 msgid "Edit selected database externally"
 msgstr "Modifier la base de données sélectionnée via une application externe"
 
-#: src/frontends/qt/ui/BibtexUi.ui:163
+#: src/frontends/qt/ui/BibtexUi.ui:173
 msgid "&Edit..."
 msgstr "Mo&difier..."
 
-#: src/frontends/qt/ui/BibtexUi.ui:191
+#: src/frontends/qt/ui/BibtexUi.ui:201
 msgid "Sele&cted:"
 msgstr "Sél&ectionné :"
 
-#: src/frontends/qt/ui/BibtexUi.ui:208 src/frontends/qt/ui/CitationUi.ui:27
+#: src/frontends/qt/ui/BibtexUi.ui:218 src/frontends/qt/ui/CitationUi.ui:27
 #: src/frontends/qt/ui/ModulesUi.ui:76 src/frontends/qt/ui/RefUi.ui:39
 #: src/frontends/qt/ui/TocUi.ui:345
 msgid "&Filter:"
 msgstr "&Filtre :"
 
-#: src/frontends/qt/ui/BibtexUi.ui:238 src/frontends/qt/GuiBibtex.cpp:288
+#: src/frontends/qt/ui/BibtexUi.ui:248 src/frontends/qt/GuiBibtex.cpp:335
 msgid "E&ncoding:"
 msgstr "Encoda&ge :"
 
-#: src/frontends/qt/ui/BibtexUi.ui:248 src/frontends/qt/GuiBibtex.cpp:289
+#: src/frontends/qt/ui/BibtexUi.ui:258 src/frontends/qt/GuiBibtex.cpp:336
 msgid ""
 "If your bibliography databases use a different encoding than the LyX "
 "document, specify it here"
@@ -719,27 +728,27 @@ msgstr ""
 "Si vos bases bibliographiques utilisent un encodage différent de celui du "
 "document, indiquez-le ici"
 
-#: src/frontends/qt/ui/BibtexUi.ui:260
+#: src/frontends/qt/ui/BibtexUi.ui:270
 msgid "The BibTeX style"
 msgstr "Le style BibTeX"
 
-#: src/frontends/qt/ui/BibtexUi.ui:263
+#: src/frontends/qt/ui/BibtexUi.ui:273
 msgid "St&yle"
 msgstr "&Style"
 
-#: src/frontends/qt/ui/BibtexUi.ui:275
+#: src/frontends/qt/ui/BibtexUi.ui:285
 msgid "Choose a style file"
 msgstr "Choisir un fichier de style"
 
-#: src/frontends/qt/ui/BibtexUi.ui:288
+#: src/frontends/qt/ui/BibtexUi.ui:298
 msgid "Select a style file from your local directory"
 msgstr "Sélectionner un fichier de style à partir de votre répertoire local"
 
-#: src/frontends/qt/ui/BibtexUi.ui:291
+#: src/frontends/qt/ui/BibtexUi.ui:301
 msgid "Add L&ocal..."
 msgstr "Ajouter l&ocal..."
 
-#: src/frontends/qt/ui/BibtexUi.ui:304 lib/layouts/beamer.layout:520
+#: src/frontends/qt/ui/BibtexUi.ui:314 lib/layouts/beamer.layout:520
 #: lib/layouts/beamer.layout:549 lib/layouts/beamer.layout:560
 #: lib/layouts/beamer.layout:588 lib/layouts/beamer.layout:691
 #: lib/layouts/chessboard.module:31 lib/layouts/chessboard.module:61
@@ -752,42 +761,42 @@ msgstr "Ajouter l&ocal..."
 msgid "Options"
 msgstr "Options"
 
-#: src/frontends/qt/ui/BibtexUi.ui:321 src/frontends/qt/ui/BibtexUi.ui:334
+#: src/frontends/qt/ui/BibtexUi.ui:331 src/frontends/qt/ui/BibtexUi.ui:344
 msgid "This bibliography section contains..."
 msgstr "Cette section de bibliographie contient..."
 
-#: src/frontends/qt/ui/BibtexUi.ui:324
+#: src/frontends/qt/ui/BibtexUi.ui:334
 msgid "&Content:"
 msgstr "&Contenu :"
 
-#: src/frontends/qt/ui/BibtexUi.ui:338 src/frontends/qt/GuiBibtex.cpp:355
+#: src/frontends/qt/ui/BibtexUi.ui:348 src/frontends/qt/GuiBibtex.cpp:404
 #: src/insets/InsetBibtex.cpp:218 src/insets/InsetBibtex.cpp:236
 msgid "all cited references"
 msgstr "toutes les références citées"
 
-#: src/frontends/qt/ui/BibtexUi.ui:343 src/frontends/qt/GuiBibtex.cpp:357
+#: src/frontends/qt/ui/BibtexUi.ui:353 src/frontends/qt/GuiBibtex.cpp:406
 #: src/insets/InsetBibtex.cpp:216
 msgid "all uncited references"
 msgstr "toutes les références non citées"
 
-#: src/frontends/qt/ui/BibtexUi.ui:348 src/frontends/qt/GuiBibtex.cpp:358
+#: src/frontends/qt/ui/BibtexUi.ui:358 src/frontends/qt/GuiBibtex.cpp:407
 #: src/insets/InsetBibtex.cpp:214 src/insets/InsetBibtex.cpp:234
 msgid "all references"
 msgstr "toutes les références"
 
-#: src/frontends/qt/ui/BibtexUi.ui:356
+#: src/frontends/qt/ui/BibtexUi.ui:366
 msgid "Add bibliography to the table of contents"
 msgstr "Ajouter la bibliographie à la table des matières"
 
-#: src/frontends/qt/ui/BibtexUi.ui:359
+#: src/frontends/qt/ui/BibtexUi.ui:369
 msgid "Add bibliography to &TOC"
 msgstr "Ajouter la bibliographie à la &TdM"
 
-#: src/frontends/qt/ui/BibtexUi.ui:383
+#: src/frontends/qt/ui/BibtexUi.ui:393
 msgid "Custo&m:"
 msgstr "R&églable :"
 
-#: src/frontends/qt/ui/BibtexUi.ui:393
+#: src/frontends/qt/ui/BibtexUi.ui:403
 msgid ""
 "Options to the biblatex bibliography command. See the biblatex manual for "
 "details."
@@ -795,11 +804,11 @@ msgstr ""
 "Options de la commande bibliographique biblatex. Voir le manuel biblatex "
 "pour les détails."
 
-#: src/frontends/qt/ui/BibtexUi.ui:422
+#: src/frontends/qt/ui/BibtexUi.ui:432
 msgid "Scan for new databases and styles"
 msgstr "Rechercher de nouvelles bases de données et de nouveaux styles"
 
-#: src/frontends/qt/ui/BibtexUi.ui:425 src/frontends/qt/ui/TexinfoUi.ui:144
+#: src/frontends/qt/ui/BibtexUi.ui:435 src/frontends/qt/ui/TexinfoUi.ui:144
 msgid "&Rescan"
 msgstr "&Rafraîchir"
 
@@ -7695,7 +7704,7 @@ msgstr "Transactions IEEE"
 #: lib/layouts/slides.layout:61 lib/layouts/stdclass.inc:28
 #: lib/layouts/stdinsets.inc:688 lib/layouts/stdletter.inc:12
 #: lib/layouts/svcommon.inc:26 lib/layouts/tufte-book.layout:35
-#: src/insets/InsetRef.cpp:597
+#: src/insets/InsetRef.cpp:599
 msgid "Standard"
 msgstr "Standard"
 
@@ -12501,7 +12510,7 @@ msgstr ""
 "ajouter le numéro de section au numéro d'équation, comme dans « (2.1) »."
 
 #: lib/layouts/eqs-within-sections.module:17 lib/layouts/scrbook.layout:29
-#: lib/layouts/stdcounters.inc:81 src/insets/InsetRef.cpp:598
+#: lib/layouts/stdcounters.inc:81 src/insets/InsetRef.cpp:600
 #: src/mathed/InsetMathRef.cpp:372
 msgid "Equation"
 msgstr "Équation"
@@ -12810,7 +12819,7 @@ msgid "Size the photo is resized to"
 msgstr "Changement de taille de la photo"
 
 #: lib/layouts/europecv.layout:185 src/frontends/qt/GuiDocument.cpp:136
-#: src/insets/InsetRef.cpp:599
+#: src/insets/InsetRef.cpp:601
 msgid "Page"
 msgstr "Page"
 
@@ -16069,7 +16078,7 @@ msgstr "CaseÀCocher"
 msgid "ChoiceMenu"
 msgstr "Menu"
 
-#: lib/layouts/pdfform.module:90 src/insets/InsetRef.cpp:604
+#: lib/layouts/pdfform.module:90 src/insets/InsetRef.cpp:606
 msgid "Label"
 msgstr "Étiquette"
 
@@ -17383,8 +17392,8 @@ msgstr "bas"
 msgid "Greyedout"
 msgstr "Grisée"
 
-#: lib/layouts/stdinsets.inc:208 src/insets/InsetERT.cpp:251
-#: src/insets/InsetERT.cpp:252
+#: lib/layouts/stdinsets.inc:208 src/insets/InsetERT.cpp:253
+#: src/insets/InsetERT.cpp:254
 msgid "ERT"
 msgstr "TeX"
 
@@ -22346,7 +22355,7 @@ msgstr "Délimiteurs (taille fixe)"
 msgid "Miscellaneous (extended)"
 msgstr "Divers (AMS étendu)"
 
-#: lib/ui/stdtoolbars.inc:237 src/TocBackend.cpp:300
+#: lib/ui/stdtoolbars.inc:237 src/TocBackend.cpp:303
 msgid "Math Macros"
 msgstr "Macros mathématiques"
 
@@ -27277,7 +27286,7 @@ msgstr "Exemple (brut)"
 msgid "Gnuplot"
 msgstr "Gnuplot"
 
-#: lib/examples/Articles:0 src/TocBackend.cpp:299
+#: lib/examples/Articles:0 src/TocBackend.cpp:302
 #: src/frontends/qt/GuiExternal.cpp:86
 msgid "External Material"
 msgstr "Objet externe"
@@ -27523,16 +27532,16 @@ msgstr "Grille simple"
 msgid "%1$s[[name]] (%2$s[[email]])"
 msgstr "%1$s[[nom]] (%2$s[[email]])"
 
-#: src/BiblioInfo.cpp:871 src/BiblioInfo.cpp:921 src/BiblioInfo.cpp:932
-#: src/BiblioInfo.cpp:987 src/BiblioInfo.cpp:991
+#: src/BiblioInfo.cpp:877 src/BiblioInfo.cpp:927 src/BiblioInfo.cpp:938
+#: src/BiblioInfo.cpp:993 src/BiblioInfo.cpp:997
 msgid "ERROR!"
 msgstr "ERREUR !"
 
-#: src/BiblioInfo.cpp:1395
+#: src/BiblioInfo.cpp:1401
 msgid "No year"
 msgstr "Pas d'année"
 
-#: src/BiblioInfo.cpp:1405
+#: src/BiblioInfo.cpp:1411
 msgid "Bibliography entry not found!"
 msgstr "Entrée bibliographique introuvable !"
 
@@ -28325,7 +28334,7 @@ msgid "greyedout inset text"
 msgstr "texte d'insert grisé"
 
 #: src/BufferParams.cpp:1718 src/BufferParams.cpp:1872
-#: src/BufferParams.cpp:2315 src/Encoding.cpp:253 src/Paragraph.cpp:3014
+#: src/BufferParams.cpp:2315 src/Encoding.cpp:264 src/Paragraph.cpp:3014
 #: src/frontends/qt/LaTeXHighlighter.cpp:143
 #: src/frontends/qt/LaTeXHighlighter.cpp:257
 #: src/insets/InsetCommandParams.cpp:508 src/insets/InsetCommandParams.cpp:516
@@ -28337,7 +28346,7 @@ msgid "LyX Warning: "
 msgstr "Avertissement LyX : "
 
 #: src/BufferParams.cpp:1719 src/BufferParams.cpp:1873
-#: src/BufferParams.cpp:2316 src/Encoding.cpp:254 src/Paragraph.cpp:3015
+#: src/BufferParams.cpp:2316 src/Encoding.cpp:265 src/Paragraph.cpp:3015
 #: src/insets/InsetCommandParams.cpp:509 src/insets/InsetCommandParams.cpp:517
 #: src/insets/InsetGraphics.cpp:887 src/insets/InsetGraphics.cpp:895
 #: src/insets/InsetListings.cpp:300 src/insets/InsetListings.cpp:308
@@ -31033,53 +31042,57 @@ msgstr ""
 msgid "Error reading cite engine %1$s\n"
 msgstr "Erreur de lecture du moteur bibliographique %1$s\n"
 
-#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:517
+#: src/TocBackend.cpp:69 src/insets/InsetInclude.cpp:1373
+msgid "MISSING: "
+msgstr "MANQUANT : "
+
+#: src/TocBackend.cpp:273 src/insets/InsetIndex.cpp:517
 #: src/insets/InsetIndex.cpp:538
 msgid "unknown type!"
 msgstr "type  inconnu !"
 
-#: src/TocBackend.cpp:273
+#: src/TocBackend.cpp:276
 #, c-format
 msgid "Index Entries (%1$s)"
 msgstr "Entrées d'index (%1$s)"
 
-#: src/TocBackend.cpp:289 src/insets/InsetTOC.cpp:75
+#: src/TocBackend.cpp:292 src/insets/InsetTOC.cpp:75
 msgid "Table of Contents"
 msgstr "Table des matières"
 
-#: src/TocBackend.cpp:290
+#: src/TocBackend.cpp:293
 msgid "Changes"
 msgstr "Modifications"
 
-#: src/TocBackend.cpp:291
+#: src/TocBackend.cpp:294
 msgid "Senseless"
 msgstr "Inapproprié"
 
-#: src/TocBackend.cpp:292
+#: src/TocBackend.cpp:295
 msgid "Citations"
 msgstr "Citations"
 
-#: src/TocBackend.cpp:293
+#: src/TocBackend.cpp:296
 msgid "Labels and References"
 msgstr "Étiquettes et références"
 
-#: src/TocBackend.cpp:294
+#: src/TocBackend.cpp:297
 msgid "Broken References and Citations"
 msgstr "Références et citations cassées"
 
-#: src/TocBackend.cpp:296 src/frontends/qt/GuiDocument.cpp:1774
+#: src/TocBackend.cpp:299 src/frontends/qt/GuiDocument.cpp:1774
 msgid "Child Documents"
 msgstr "Sous-documents"
 
-#: src/TocBackend.cpp:297
+#: src/TocBackend.cpp:300
 msgid "Graphics[[listof]]"
 msgstr "Graphiques"
 
-#: src/TocBackend.cpp:298
+#: src/TocBackend.cpp:301
 msgid "Equations"
 msgstr "Équations"
 
-#: src/TocBackend.cpp:301
+#: src/TocBackend.cpp:304
 msgid "Nomenclature Entries"
 msgstr "Entrées de la liste des symboles"
 
@@ -31903,15 +31916,15 @@ msgstr ""
 msgid "Bibliography Item Settings"
 msgstr "Paramètres d'entrée bibliographique"
 
-#: src/frontends/qt/GuiBibtex.cpp:57 src/frontends/qt/GuiBibtex.cpp:344
+#: src/frontends/qt/GuiBibtex.cpp:58 src/frontends/qt/GuiBibtex.cpp:391
 msgid "BibTeX Bibliography"
 msgstr "Bibliographie BibTeX"
 
-#: src/frontends/qt/GuiBibtex.cpp:68
+#: src/frontends/qt/GuiBibtex.cpp:69
 msgid "All avail. databases"
 msgstr "Toutes les bases de données dispo."
 
-#: src/frontends/qt/GuiBibtex.cpp:116
+#: src/frontends/qt/GuiBibtex.cpp:119
 msgid ""
 "This list consists of all databases that are indexed by LaTeX and thus are "
 "found without a file path. This is usually everything in the bib/ "
@@ -31924,23 +31937,23 @@ msgstr ""
 "vous souhaitez réutiliser vos propres bases de données, c'est là qu'il faut "
 "les ajouter."
 
-#: src/frontends/qt/GuiBibtex.cpp:136 src/frontends/qt/GuiBibtex.cpp:303
+#: src/frontends/qt/GuiBibtex.cpp:139 src/frontends/qt/GuiBibtex.cpp:350
 msgid "Document Encoding"
 msgstr "Encodage du document"
 
-#: src/frontends/qt/GuiBibtex.cpp:274
+#: src/frontends/qt/GuiBibtex.cpp:321
 msgid "Database"
 msgstr "Bases de données"
 
-#: src/frontends/qt/GuiBibtex.cpp:275
+#: src/frontends/qt/GuiBibtex.cpp:322
 msgid "File Encoding"
 msgstr "Encodage de fichiers"
 
-#: src/frontends/qt/GuiBibtex.cpp:282
+#: src/frontends/qt/GuiBibtex.cpp:329
 msgid "General E&ncoding:"
 msgstr "Encodage &général :"
 
-#: src/frontends/qt/GuiBibtex.cpp:283
+#: src/frontends/qt/GuiBibtex.cpp:330
 msgid ""
 "If your bibliography databases use a different encoding than the LyX "
 "document, specify it here. If indivivual databases have different encodings, "
@@ -31950,11 +31963,11 @@ msgstr ""
 "document LyX, indiquez-le ici. Si chaque base est dotée d'un encodage "
 "différent, choisissez-le dans la liste ci-dessus."
 
-#: src/frontends/qt/GuiBibtex.cpp:302
+#: src/frontends/qt/GuiBibtex.cpp:349
 msgid "General Encoding"
 msgstr "Encodage général"
 
-#: src/frontends/qt/GuiBibtex.cpp:309
+#: src/frontends/qt/GuiBibtex.cpp:356
 msgid ""
 "If this bibliography database uses a different encoding than specified "
 "below, set it here"
@@ -31962,15 +31975,15 @@ msgstr ""
 "Si cette base bibliographique utilise un encodage différent de celui "
 "spécifié ci-dessous, indiquez-le ici"
 
-#: src/frontends/qt/GuiBibtex.cpp:342
+#: src/frontends/qt/GuiBibtex.cpp:389
 msgid "Biblatex Bibliography"
 msgstr "Bibliographie Biblatex"
 
-#: src/frontends/qt/GuiBibtex.cpp:360 src/insets/InsetBibtex.cpp:232
+#: src/frontends/qt/GuiBibtex.cpp:409 src/insets/InsetBibtex.cpp:232
 msgid "all reference units"
 msgstr "toutes les entités de références"
 
-#: src/frontends/qt/GuiBibtex.cpp:456 src/frontends/qt/GuiBibtex.cpp:466
+#: src/frontends/qt/GuiBibtex.cpp:505 src/frontends/qt/GuiBibtex.cpp:515
 #: src/frontends/qt/GuiCompare.cpp:163 src/frontends/qt/GuiCompare.cpp:167
 #: src/frontends/qt/GuiDocument.cpp:2903 src/frontends/qt/GuiExternal.cpp:677
 #: src/frontends/qt/GuiGraphics.cpp:826 src/frontends/qt/GuiInclude.cpp:380
@@ -31981,19 +31994,19 @@ msgstr "toutes les entités de références"
 msgid "D&ocuments"
 msgstr "Documents|u"
 
-#: src/frontends/qt/GuiBibtex.cpp:458
+#: src/frontends/qt/GuiBibtex.cpp:507
 msgid "BibTeX Databases (*.bib)"
 msgstr "Bases de Données BibTeX (*.bib)"
 
-#: src/frontends/qt/GuiBibtex.cpp:460
+#: src/frontends/qt/GuiBibtex.cpp:509
 msgid "Select a BibTeX database to add"
 msgstr "Choisir une base de D. BibTeX"
 
-#: src/frontends/qt/GuiBibtex.cpp:468
+#: src/frontends/qt/GuiBibtex.cpp:517
 msgid "BibTeX Styles (*.bst)"
 msgstr "*Styles BibTeX (*.bst)"
 
-#: src/frontends/qt/GuiBibtex.cpp:470
+#: src/frontends/qt/GuiBibtex.cpp:519
 msgid "Select a BibTeX style"
 msgstr "Choisir un style BibTeX"
 
@@ -34249,7 +34262,7 @@ msgstr "&Revenir"
 msgid "Jump back to the original cursor location"
 msgstr "Revenir à la position initiale du curseur"
 
-#: src/frontends/qt/GuiRef.cpp:467 src/frontends/qt/GuiRef.cpp:487
+#: src/frontends/qt/GuiRef.cpp:471 src/frontends/qt/GuiRef.cpp:491
 msgid "<No prefix>"
 msgstr "<Sans prefixe>"
 
@@ -36384,10 +36397,6 @@ msgstr ""
 "Fichier incorrect :\n"
 "%1$s"
 
-#: src/insets/InsetInclude.cpp:1373
-msgid "MISSING: "
-msgstr "MANQUANT : "
-
 #: src/insets/InsetIndex.cpp:169
 msgid "Index sorting failed"
 msgstr "Échec du tri d'index"
@@ -37102,51 +37111,51 @@ msgstr "%1$stexte"
 msgid "text%1$s"
 msgstr "texte%1$s"
 
-#: src/insets/InsetRef.cpp:597
+#: src/insets/InsetRef.cpp:599
 msgid "Ref"
 msgstr "Ref"
 
-#: src/insets/InsetRef.cpp:598
+#: src/insets/InsetRef.cpp:600
 msgid "EqRef"
 msgstr "RéfÉq"
 
-#: src/insets/InsetRef.cpp:599 src/mathed/InsetMathRef.cpp:373
+#: src/insets/InsetRef.cpp:601 src/mathed/InsetMathRef.cpp:373
 msgid "Page Number"
 msgstr "Numéro de page"
 
-#: src/insets/InsetRef.cpp:600 src/mathed/InsetMathRef.cpp:374
+#: src/insets/InsetRef.cpp:602 src/mathed/InsetMathRef.cpp:374
 msgid "Textual Page Number"
 msgstr "N° de page du texte"
 
-#: src/insets/InsetRef.cpp:600
+#: src/insets/InsetRef.cpp:602
 msgid "TextPage"
 msgstr "PageTexte"
 
-#: src/insets/InsetRef.cpp:601 src/mathed/InsetMathRef.cpp:375
+#: src/insets/InsetRef.cpp:603 src/mathed/InsetMathRef.cpp:375
 msgid "Standard+Textual Page"
 msgstr "Standard + N° de page du texte"
 
-#: src/insets/InsetRef.cpp:601
+#: src/insets/InsetRef.cpp:603
 msgid "Ref+Text"
 msgstr "Réf+Texte"
 
-#: src/insets/InsetRef.cpp:602 src/mathed/InsetMathRef.cpp:377
+#: src/insets/InsetRef.cpp:604 src/mathed/InsetMathRef.cpp:377
 msgid "Reference to Name"
 msgstr "Référence au nom"
 
-#: src/insets/InsetRef.cpp:602
+#: src/insets/InsetRef.cpp:604
 msgid "NameRef"
 msgstr "RefNom"
 
-#: src/insets/InsetRef.cpp:603
+#: src/insets/InsetRef.cpp:605
 msgid "Formatted"
 msgstr "Mis en page"
 
-#: src/insets/InsetRef.cpp:603
+#: src/insets/InsetRef.cpp:605
 msgid "Format"
 msgstr "Format"
 
-#: src/insets/InsetRef.cpp:604 src/mathed/InsetMathRef.cpp:378
+#: src/insets/InsetRef.cpp:606 src/mathed/InsetMathRef.cpp:378
 msgid "Label Only"
 msgstr "Étiquette uniquement"
 

commit dec53304268388a46805418a5b531c2b48eb0f22
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Feb 20 02:03:41 2022 +0100

    Amend 0dc7f34e: avoid using a C++20 function.

diff --git a/src/Encoding.cpp b/src/Encoding.cpp
index 4e47dae..988872f 100644
--- a/src/Encoding.cpp
+++ b/src/Encoding.cpp
@@ -727,7 +727,7 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 		symbol = tmp;
 
 		// Special case: more than one entry for one character (to add other LaTeX commands).
-		if (unicodesymbols.contains(symbol)) {
+		if (unicodesymbols.find(symbol) != unicodesymbols.end()) {
 			if (!symbolsLex.next(true))
 				break;
 			docstring textCommand = symbolsLex.getDocString();

commit fec498d6617d91d04726f13055d6e9ddeaa0cc77
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sat Feb 19 02:37:58 2022 +0100

    unicodesymbols: add several synonyms.

diff --git a/lib/unicodesymbols b/lib/unicodesymbols
index 1de6910..ab27e31 100644
--- a/lib/unicodesymbols
+++ b/lib/unicodesymbols
@@ -63,12 +63,14 @@
 0x00a1 "!`" ""
 0x00a2 "\\textcent"               "textcomp" "force=cp862;cp1255;cp1256;euc-jp;euc-jp-platex;jis;shift-jis-platex" #"\\mathcent" "txfonts|pxfonts" # CENT SIGN
 0x00a3 "\\pounds"                 "" "force=cp862;cp1255;cp1256;iso8859-7;euc-jp;euc-jp-platex;jis;shift-jis-platex" "\\pounds" "" # £ POUND SIGN
+0x00a3 "\\textsterling" ""
 0x00a4 "\\textcurrency"           "textcomp" "force=cp1256;euc-cn;euc-jp;euc-jp-platex;euc-kr;gbk;iso8859-6;utf8-platex" # CURRENCY SYMBOL
 0x00a5 "\\textyen"                "textcomp" "force=cp862;cp1255;cp1256;euc-jp;euc-jp-platex;jis;shift-jis-platex" "\\yen" "amssymb" # YEN SIGN
 0x00a6 "\\textbrokenbar"          "textcomp" "force=cp1255;cp1256;iso8859-7;euc-jp;euc-jp-platex;utf8-platex" # BROKEN BAR
 0x00a7 "\\textsection"            "textcomp" "force=cp1255;cp1256;iso8859-7;euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis;shift-jis-platex" "\\mathsection" "" # SECTION SIGN
 0x00a8 "\\textasciidieresis"      "textcomp" "force=cp1255;cp1256;iso8859-7;euc-cn;euc-jp;euc-kr;gbk;jis;shift-jis-platex" # DIAERESIS
 0x00a9 "\\textcopyright"          "textcomp" "force=cp1255;cp1256;koi8-u;iso8859-7;euc-jp;euc-jp-platex;utf8-platex" # COPYRIGHT SIGN
+Ox00a9 "\\copyright" ""
 0x00aa "\\textordfeminine"        "textcomp" "force=cp862;euc-jp;euc-jp-platex;euc-kr;utf8-platex" # FEMININE ORDINAL INDICATOR
 0x00ab "\\guillemotleft"          "" "force=armscii8;cp862;cp1255;cp1256;iso8859-7;utf8-platex" # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
 0x00ac "\\textlnot"               "textcomp" "force!=utf8;utf8-cjk" "\\neg" "" # ¬ NOT SIGN
@@ -1915,12 +1917,15 @@
 0x201e "\\quotedblbase"           "" "force=cp1256;iso8859-13" # DOUBLE LOW-9 QUOTATION MARK
 #0x201f ""                         "" "" # DOUBLE HIGH-REVERSED-9 QUOTATION MARK
 0x2020 "\\dag"                    "" "force=cp1256;euc-jp;euc-kr;jis" "\\dagger" "" # DAGGER
+0x2020 "\\textdagger" ""
 0x2021 "\\ddag"                   "" "force=cp1256;euc-jp;euc-kr;jis" "\\ddagger" "" # DOUBLE DAGGER
+0x2021 "\\textdaggerdbl"
 0x2022 "\\textbullet"             "textcomp" "force=cp1256" "\\bullet" "" # BULLET
 0x2023 "\\textifsymbol[ifgeo]{116}" "ifsym" "force=utf8;utf8x;utf8-cjk" # TRIANGULAR BULLET # ≈ 0x25b8
 0x2024 "."                        "" "notermination=text,force=utf8;utf8-cjk;utf8x" "" "" # ONE DOT LEADER # ≈ FULL STOP
 0x2025 ".\\,."                    "" "notermination=text,force=utf8;utf8-cjk;utf8x;euc-jp;euc-kr;euc-tw;gbk;jis" "" "" # TWO DOT LEADER
 0x2026 "\\dots"                   "" "force=armscii8;cp1256;euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" "\\ldots" "" # HORIZONTAL ELLIPSIS
+0X2026 "\\textellipsis" ""
 #0x2027 ""                        "" "notermination=text" "" "" # HYPHENATION POINT (visible symbol used to indicate correct positions for word breaking, looks like but is not 0x00b7 middle dot)
 0x2028 "\\\\"                     "" "force=utf8;utf8-cjk" "" "" # LINE SEPARATOR
 0x2029 "\\par"                    "" "force=utf8;utf8-cjk" "" "" # PARAGRAPH SEPARATOR

commit 0dc7f34e00e06e8b378236e32f86023313067b7c
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sat Feb 19 02:10:45 2022 +0100

    unicodesymbols: parse supplementary lines to encode alternative ways to encode symbols in raw LaTeX.

diff --git a/lib/unicodesymbols b/lib/unicodesymbols
index 043f4dc..1de6910 100644
--- a/lib/unicodesymbols
+++ b/lib/unicodesymbols
@@ -60,6 +60,7 @@
 #
 0x00a0 "~"                        "" "force=cp862;cp1255;cp1256;koi8-u;iso8859-6;iso8859-7;utf8-platex,notermination=both" "~" "" # NO-BREAK SPACE
 0x00a1 "\\textexclamdown"         "" "force=cp862;cp1255;euc-jp;euc-jp-platex;euc-kr;utf8-platex" # INVERTED EXCLAMATION MARK
+0x00a1 "!`" ""
 0x00a2 "\\textcent"               "textcomp" "force=cp862;cp1255;cp1256;euc-jp;euc-jp-platex;jis;shift-jis-platex" #"\\mathcent" "txfonts|pxfonts" # CENT SIGN
 0x00a3 "\\pounds"                 "" "force=cp862;cp1255;cp1256;iso8859-7;euc-jp;euc-jp-platex;jis;shift-jis-platex" "\\pounds" "" # £ POUND SIGN
 0x00a4 "\\textcurrency"           "textcomp" "force=cp1256;euc-cn;euc-jp;euc-jp-platex;euc-kr;gbk;iso8859-6;utf8-platex" # CURRENCY SYMBOL
@@ -90,6 +91,7 @@
 0x00bd "\\textonehalf"            "textcomp" "force=cp862;cp1255;cp1256;iso8859-7;euc-kr" "\\sfrac{1}{2}" "xfrac" # 1/2 FRACTION
 0x00be "\\textthreequarters"      "textcomp" "force=cp1255;cp1256;euc-kr" "\\sfrac{3}{4}" "xfrac" # 3/4 FRACTION
 0x00bf "\\textquestiondown"       "" "force=cp862;cp1255;euc-jp;euc-kr" # INVERTED QUESTION MARK
+0x00bf "?`" ""
 0x00c0 "\\`{A}"                   "" "mathalpha,force=euc-jp" "\\grave{A}" # LATIN CAPITAL LETTER A WITH GRAVE
 0x00c1 "\\'{A}"                   "" "mathalpha,force=euc-jp" "\\acute{A}" # LATIN CAPITAL LETTER A WITH ACUTE
 0x00c2 "\\^{A}"                   "" "mathalpha,force=euc-jp" "\\hat{A}" # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
diff --git a/src/Encoding.cpp b/src/Encoding.cpp
index b0d5649..4e47dae 100644
--- a/src/Encoding.cpp
+++ b/src/Encoding.cpp
@@ -50,7 +50,7 @@ CharInfoMap unicodesymbols;
 typedef set<char_type> CharSet;
 typedef map<string, CharSet> CharSetMap;
 CharSet forced;
-CharSetMap forcedselected;
+CharSetMap forcedSelected;
 
 typedef set<char_type> MathAlphaSet;
 MathAlphaSet mathalpha;
@@ -99,7 +99,7 @@ CharInfo::CharInfo(
 Encoding::Encoding(string const & n, string const & l, string const & g,
 		   string const & i, bool f, bool u, Encoding::Package p)
 	: name_(n), latexName_(l), guiName_(g), iconvName_(i), fixedwidth_(f),
-	  unsafe_(u), forced_(&forcedselected[n]), package_(p)
+	  unsafe_(u), forced_(&forcedSelected[n]), package_(p)
 {
 	if (n == "ascii") {
 		// ASCII can encode 128 code points and nothing else
@@ -705,20 +705,20 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 {
 	// We must read the symbolsfile first, because the Encoding
 	// constructor depends on it.
-	CharSetMap forcednotselected;
-	Lexer symbolslex;
-	symbolslex.setFile(symbolsfile);
+	CharSetMap forcedNotSelected;
+	Lexer symbolsLex;
+	symbolsLex.setFile(symbolsfile);
 	bool getNextToken = true;
-	while (symbolslex.isOK()) {
+	while (symbolsLex.isOK()) {
 		char_type symbol;
 
 		if (getNextToken) {
-			if (!symbolslex.next(true))
+			if (!symbolsLex.next(true))
 				break;
 		} else
 			getNextToken = true;
 
-		istringstream is(symbolslex.getString());
+		istringstream is(symbolsLex.getString());
 		// reading symbol directly does not work if
 		// char_type == wchar_t.
 		uint32_t tmp;
@@ -726,20 +726,38 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 			break;
 		symbol = tmp;
 
-		if (!symbolslex.next(true))
+		// Special case: more than one entry for one character (to add other LaTeX commands).
+		if (unicodesymbols.contains(symbol)) {
+			if (!symbolsLex.next(true))
+				break;
+			docstring textCommand = symbolsLex.getDocString();
+			if (!symbolsLex.next(true))
+				break;
+			string mathCommand = symbolsLex.getString();
+
+			if (!textCommand.empty())
+				unicodesymbols.at(symbol).addTextCommand(textCommand);
+			if (!mathCommand.empty())
+				unicodesymbols.at(symbol).addMathCommand(textCommand);
+
+			continue;
+		}
+
+		// If the symbol is not the same as the previous entry, consider it is a totally new symbol.
+		if (!symbolsLex.next(true))
 			break;
-		docstring textcommand = symbolslex.getDocString();
-		if (!symbolslex.next(true))
+		docstring textCommand = symbolsLex.getDocString();
+		if (!symbolsLex.next(true))
 			break;
-		string textpreamble = symbolslex.getString();
-		if (!symbolslex.next(true))
+		string textPreamble = symbolsLex.getString();
+		if (!symbolsLex.next(true))
 			break;
-		string sflags = symbolslex.getString();
+		string sflags = symbolsLex.getString();
 
-		string tipashortcut;
+		string tipaShortcut;
 		int flags = 0;
 
-		if (suffixIs(textcommand, '}'))
+		if (suffixIs(textCommand, '}'))
 			flags |= CharInfoTextNoTermination;
 		while (!sflags.empty()) {
 			string flag;
@@ -753,13 +771,13 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 				vector<string> encs =
 					getVectorFromString(flag.substr(6), ";");
 				for (auto const & enc : encs)
-					forcedselected[enc].insert(symbol);
+					forcedSelected[enc].insert(symbol);
 				flags |= CharInfoForceSelected;
 			} else if (prefixIs(flag, "force!=")) {
 				vector<string> encs =
 					getVectorFromString(flag.substr(7), ";");
 				for (auto const & enc : encs)
-					forcednotselected[enc].insert(symbol);
+					forcedNotSelected[enc].insert(symbol);
 				flags |= CharInfoForceSelected;
 			} else if (flag == "mathalpha") {
 				mathalpha.insert(symbol);
@@ -773,8 +791,8 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 			} else if (flag == "notermination=none") {
 				flags &= ~CharInfoTextNoTermination;
 				flags &= ~CharInfoMathNoTermination;
-			} else if (contains(flag, "tipaShortcut=")) {
-				tipashortcut = split(flag, '=');
+			} else if (contains(flag, "tipashortcut=")) {
+				tipaShortcut = split(flag, '=');
 			} else if (flag == "deprecated") {
 				flags |= CharInfoDeprecated;
 			} else {
@@ -786,25 +804,25 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 		}
 		// mathCommand and mathPreamble have been added for 1.6.0.
 		// make them optional so that old files still work.
-		int const lineno = symbolslex.lineNumber();
+		int const lineNo = symbolsLex.lineNumber();
 		bool breakout = false;
-		docstring mathcommand;
-		string mathpreamble;
-		if (symbolslex.next(true)) {
-			if (symbolslex.lineNumber() != lineno) {
+		docstring mathCommand;
+		string mathPreamble;
+		if (symbolsLex.next(true)) {
+			if (symbolsLex.lineNumber() != lineNo) {
 				// line in old format without mathCommand and mathPreamble
 				getNextToken = false;
 			} else {
-				mathcommand = symbolslex.getDocString();
-				if (suffixIs(mathcommand, '}'))
+				mathCommand = symbolsLex.getDocString();
+				if (suffixIs(mathCommand, '}'))
 					flags |= CharInfoMathNoTermination;
-				if (symbolslex.next(true)) {
-					if (symbolslex.lineNumber() != lineno) {
+				if (symbolsLex.next(true)) {
+					if (symbolsLex.lineNumber() != lineNo) {
 						// line in new format with mathCommand only
 						getNextToken = false;
 					} else {
 						// line in new format with mathCommand and mathPreamble
-						mathpreamble = symbolslex.getString();
+						mathPreamble = symbolsLex.getString();
 					}
 				} else
 					breakout = true;
@@ -814,20 +832,20 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 		}
 
 		// backward compatibility
-		if (mathpreamble == "esintoramsmath")
-			mathpreamble = "esint|amsmath";
+		if (mathPreamble == "esintoramsmath")
+			mathPreamble = "esint|amsmath";
 
-		if (!textpreamble.empty())
-			if (textpreamble[0] != '\\')
+		if (!textPreamble.empty())
+			if (textPreamble[0] != '\\')
 				flags |= CharInfoTextFeature;
-		if (!mathpreamble.empty())
-			if (mathpreamble[0] != '\\')
+		if (!mathPreamble.empty())
+			if (mathPreamble[0] != '\\')
 				flags |= CharInfoMathFeature;
 
 		CharInfo info = CharInfo(
-			textcommand, mathcommand,
-			textpreamble, mathpreamble,
-			tipashortcut, flags);
+				textCommand, mathCommand,
+				textPreamble, mathPreamble,
+				tipaShortcut, flags);
 		LYXERR(Debug::INFO, "Read unicode symbol " << symbol << " '"
 		                                           << to_utf8(info.textCommand()) << "' '" << info.textPreamble()
 		                                           << " '" << info.textFeature() << ' ' << info.textNoTermination()
@@ -851,12 +869,12 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 		et_end
 	};
 
-	LexerKeyword encodingtags[] = {
+	LexerKeyword encodingTags[] = {
 		{ "encoding", et_encoding },
 		{ "end", et_end }
 	};
 
-	Lexer lex(encodingtags);
+	Lexer lex(encodingTags);
 	lex.setFile(encfile);
 	lex.setContext("Encodings::read");
 	while (lex.isOK()) {
@@ -866,21 +884,21 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 			lex.next();
 			string const name = lex.getString();
 			lex.next();
-			string const latexname = lex.getString();
+			string const latexName = lex.getString();
 			lex.next();
-			string const guiname = lex.getString();
+			string const guiName = lex.getString();
 			lex.next();
-			string const iconvname = lex.getString();
+			string const iconvName = lex.getString();
 			lex.next();
 			string const width = lex.getString();
-			bool fixedwidth = false;
+			bool fixedWidth = false;
 			bool unsafe = false;
 			if (width == "fixed")
-				fixedwidth = true;
+				fixedWidth = true;
 			else if (width == "variable")
-				fixedwidth = false;
+				fixedWidth = false;
 			else if (width == "variableunsafe") {
-				fixedwidth = false;
+				fixedWidth = false;
 				unsafe = true;
 			}
 			else
@@ -901,9 +919,9 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 				lex.printError("Unknown package");
 
 			LYXERR(Debug::INFO, "Reading encoding " << name);
-			encodinglist[name] = Encoding(name, latexname,
-				guiname, iconvname, fixedwidth, unsafe,
-				package);
+			encodinglist[name] = Encoding(name, latexName,
+			                              guiName, iconvName, fixedWidth, unsafe,
+			                              package);
 
 			if (lex.lex() != et_end)
 				lex.printError("Missing end");
@@ -920,9 +938,9 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 		}
 	}
 
-	// Move all information from forcednotselected to forcedselected
-	for (CharSetMap::const_iterator it1 = forcednotselected.begin(); it1 != forcednotselected.end(); ++it1) {
-		for (CharSetMap::iterator it2 = forcedselected.begin(); it2 != forcedselected.end(); ++it2) {
+	// Move all information from forcedNotSelected to forcedSelected
+	for (CharSetMap::const_iterator it1 = forcedNotSelected.begin(); it1 != forcedNotSelected.end(); ++it1) {
+		for (CharSetMap::iterator it2 = forcedSelected.begin(); it2 != forcedSelected.end(); ++it2) {
 			if (it2->first != it1->first)
 				it2->second.insert(it1->second.begin(), it1->second.end());
 		}
diff --git a/src/Encoding.h b/src/Encoding.h
index 2bfbda0..6016f05 100644
--- a/src/Encoding.h
+++ b/src/Encoding.h
@@ -69,6 +69,11 @@ public:
 		std::vector<docstring> const & text_commands, std::vector<docstring> const & math_commands,
 		std::string const & text_preamble, std::string const & math_preamble,
 		std::string const & tipa_shortcut, unsigned int flags);
+	// Add a new text command for this symbol.
+	void addTextCommand(const docstring& newTextCommand) { text_commands_.emplace_back(newTextCommand); }
+	// Add a new math command for this symbol.
+	void addMathCommand(const docstring& newMathCommand) { math_commands_.emplace_back(newMathCommand); }
+
 	// we assume that at least one command is nonempty when using unicodesymbols
 	bool isUnicodeSymbol() const { return !text_commands_.empty() || !math_commands_.empty(); }
 	/// LaTeX command (text mode) for this character
diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp
index 00f497f..b3e73ff 100644
--- a/src/insets/InsetERT.cpp
+++ b/src/insets/InsetERT.cpp
@@ -158,6 +158,8 @@ void InsetERT::docbook(XMLStream & xs, OutputParams const & runparams) const
 			os_trimmed.insert(4, from_ascii("}"));
 		}
 
+		std::cout << to_utf8(os_trimmed) << std::endl;
+
 		// Look into the global table of Unicode characters if there is a match.
 		bool termination;
 		docstring rem;

commit 3f9e21b826926f90474c9b7a5aeea5032d19207f
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Feb 18 22:11:04 2022 +0100

    CharInfo: allow to store several commands (both text and math) for each character.
    
    Only the first one is returned by default with existing methods to guarantee compatibility with existing code.

diff --git a/src/BufferEncodings.cpp b/src/BufferEncodings.cpp
index dcf422d..fe7e90c 100644
--- a/src/BufferEncodings.cpp
+++ b/src/BufferEncodings.cpp
@@ -52,7 +52,7 @@ void BufferEncodings::validate(char_type c, LaTeXFeatures & features, bool for_m
 	CharInfo const & ci = Encodings::unicodeCharInfo(c);
 	if (ci.isUnicodeSymbol()) {
 		// In mathed, c could be used both in textmode and mathmode
-		docstring const textcommand = ci.textcommand();
+		docstring const textcommand = ci.textCommand();
 		bool const math_mode = for_mathed && isMathCmd(c);
 		bool const use_math = math_mode ||
 		                      (!for_mathed && textcommand.empty());
@@ -65,9 +65,9 @@ void BufferEncodings::validate(char_type c, LaTeXFeatures & features, bool for_m
 		// and if we do not use unicode-math
 		if ((math_mode && !unicode_math)
 		     || (use_math && !plain_utf8)) {
-			string const mathpreamble = ci.mathpreamble();
+			string const mathpreamble = ci.mathPreamble();
 			if (!mathpreamble.empty()) {
-				if (ci.mathfeature()) {
+				if (ci.mathFeature()) {
 					string feats = mathpreamble;
 					while (!feats.empty()) {
 						string feat;
@@ -80,9 +80,9 @@ void BufferEncodings::validate(char_type c, LaTeXFeatures & features, bool for_m
 		}
 		// with utf8-plain, we do not load packages (see #7766)
 		if (use_text && !plain_utf8) {
-			string const textpreamble = ci.textpreamble();
+			string const textpreamble = ci.textPreamble();
 			if (!textpreamble.empty()) {
-				if (ci.textfeature()) {
+				if (ci.textFeature()) {
 					string feats = textpreamble;
 					while (!feats.empty()) {
 						string feat;
diff --git a/src/Encoding.cpp b/src/Encoding.cpp
index c7ea237..b0d5649 100644
--- a/src/Encoding.cpp
+++ b/src/Encoding.cpp
@@ -75,12 +75,23 @@ const char * EncodingException::what() const noexcept
 
 
 CharInfo::CharInfo(
-	docstring const & textcommand, docstring const & mathcommand,
-	std::string const & textpreamble, std::string const & mathpreamble,
-	std::string const & tipashortcut, unsigned int flags)
-	: textcommand_(textcommand), mathcommand_(mathcommand),
-	  textpreamble_(textpreamble), mathpreamble_(mathpreamble),
-	  tipashortcut_(tipashortcut), flags_(flags)
+		docstring const & text_command, docstring const & math_command,
+		std::string const & text_preamble, std::string const & math_preamble,
+		std::string const & tipa_shortcut, unsigned int flags)
+	: text_commands_({text_command}), math_commands_({math_command}),
+	  text_preamble_(text_preamble), math_preamble_(math_preamble),
+	  tipa_shortcut_(tipa_shortcut), flags_(flags)
+{
+}
+
+
+CharInfo::CharInfo(
+		std::vector<docstring> const & text_commands, std::vector<docstring> const & math_commands,
+		std::string const & text_preamble, std::string const & math_preamble,
+		std::string const & tipa_shortcut, unsigned int flags)
+	: text_commands_(text_commands), math_commands_(math_commands),
+	  text_preamble_(text_preamble), math_preamble_(math_preamble),
+	  tipa_shortcut_(tipa_shortcut), flags_(flags)
 {
 }
 
@@ -216,11 +227,11 @@ pair<docstring, bool> Encoding::latexChar(char_type c) const
 	CharInfoMap::const_iterator const it = unicodesymbols.find(c);
 	if (it == unicodesymbols.end())
 		throw EncodingException(c);
-	// at least one of mathcommand and textcommand is nonempty
-	if (it->second.textcommand().empty())
+	// at least one of mathCommand and textCommand is nonempty
+	if (it->second.textCommand().empty())
 		return make_pair(
-			"\\ensuremath{" + it->second.mathcommand() + '}', false);
-	return make_pair(it->second.textcommand(), !it->second.textnotermination());
+				"\\ensuremath{" + it->second.mathCommand() + '}', false);
+	return make_pair(it->second.textCommand(), !it->second.textNoTermination());
 }
 
 
@@ -302,17 +313,17 @@ bool Encodings::latexMathChar(char_type c, bool mathmode,
 			addMathSym(c);
 		return false;
 	}
-	// at least one of mathcommand and textcommand is nonempty
-	bool use_math = (mathmode && !it->second.mathcommand().empty()) ||
-			(!mathmode && it->second.textcommand().empty());
+	// at least one of mathCommand and textCommand is nonempty
+	bool use_math = (mathmode && !it->second.mathCommand().empty()) ||
+	                (!mathmode && it->second.textCommand().empty());
 	if (use_math) {
-		command = it->second.mathcommand();
-		needsTermination = !it->second.mathnotermination();
+		command = it->second.mathCommand();
+		needsTermination = !it->second.mathNoTermination();
 		addMathCmd(c);
 	} else {
 		if (!encoding || command.empty()) {
-			command = it->second.textcommand();
-			needsTermination = !it->second.textnotermination();
+			command = it->second.textCommand();
+			needsTermination = !it->second.textNoTermination();
 		}
 		if (mathmode)
 			addMathSym(c);
@@ -331,23 +342,31 @@ char_type Encodings::fromLaTeXCommand(docstring const & cmd, int cmdtype,
 	for (combining = false; it != end; ++it) {
 		if (it->second.deprecated())
 			continue;
-		docstring const math = it->second.mathcommand();
-		docstring const text = it->second.textcommand();
-		if ((cmdtype & MATH_CMD) && math == cmd) {
-			combining = it->second.combining();
-			needsTermination = !it->second.mathnotermination();
-			if (req && it->second.mathfeature() &&
-			    !it->second.mathpreamble().empty())
-				req->insert(it->second.mathpreamble());
-			return it->first;
+
+		if (cmdtype & MATH_CMD) {
+			for (const docstring& math : it->second.mathCommands()) {
+				if ((cmdtype & MATH_CMD) && math == cmd) {
+					combining = it->second.combining();
+					needsTermination = !it->second.mathNoTermination();
+					if (req && it->second.mathFeature() &&
+					    !it->second.mathPreamble().empty())
+						req->insert(it->second.mathPreamble());
+					return it->first;
+				}
+			}
 		}
-		if ((cmdtype & TEXT_CMD) && text == cmd) {
-			combining = it->second.combining();
-			needsTermination = !it->second.textnotermination();
-			if (req && it->second.textfeature() &&
-			    !it->second.textpreamble().empty())
-				req->insert(it->second.textpreamble());
-			return it->first;
+
+		if (cmdtype & TEXT_CMD) {
+			for (const docstring& text : it->second.textCommands()) {
+				if (text == cmd) {
+					combining = it->second.combining();
+					needsTermination = !it->second.textNoTermination();
+					if (req && it->second.textFeature() &&
+					    !it->second.textPreamble().empty())
+						req->insert(it->second.textPreamble());
+					return it->first;
+				}
+			}
 		}
 	}
 	needsTermination = false;
@@ -418,9 +437,9 @@ docstring Encodings::fromLaTeXCommand(docstring const & cmd, int cmdtype,
 		for (; it != uniend; ++it) {
 			if (it->second.deprecated())
 				continue;
-			docstring const math = mathmode ? it->second.mathcommand()
+			docstring const math = mathmode ? it->second.mathCommand()
 							: docstring();
-			docstring const text = textmode ? it->second.textcommand()
+			docstring const text = textmode ? it->second.textCommand()
 							: docstring();
 			if (!combcmd.empty() && it->second.combining() &&
 			    (math == combcmd || text == combcmd))
@@ -496,16 +515,16 @@ docstring Encodings::fromLaTeXCommand(docstring const & cmd, int cmdtype,
 				i = j + 1;
 				unicmd_size = cur_size;
 				if (math == tmp)
-					needsTermination = !it->second.mathnotermination();
+					needsTermination = !it->second.mathNoTermination();
 				else
-					needsTermination = !it->second.textnotermination();
+					needsTermination = !it->second.textNoTermination();
 				if (req) {
-					if (math == tmp && it->second.mathfeature() &&
-					    !it->second.mathpreamble().empty())
-						req->insert(it->second.mathpreamble());
-					if (text == tmp && it->second.textfeature() &&
-					    !it->second.textpreamble().empty())
-						req->insert(it->second.textpreamble());
+					if (math == tmp && it->second.mathFeature() &&
+					    !it->second.mathPreamble().empty())
+						req->insert(it->second.mathPreamble());
+					if (text == tmp && it->second.textFeature() &&
+					    !it->second.textPreamble().empty())
+						req->insert(it->second.textPreamble());
 				}
 			}
 		}
@@ -584,7 +603,7 @@ string const Encodings::TIPAShortcut(char_type c)
 {
 	CharInfoMap::const_iterator const it = unicodesymbols.find(c);
 	if (it != unicodesymbols.end())
-		return it->second.tipashortcut();
+		return it->second.tipaShortcut();
 	return string();
 }
 
@@ -595,11 +614,11 @@ string const Encodings::isKnownScriptChar(char_type const c)
 
 	if (it == unicodesymbols.end())
 		return string();
-	// FIXME: parse complex textpreamble (may be list or alternatives,
+	// FIXME: parse complex textPreamble (may be list or alternatives,
 	// 		  e.g., "subscript,textgreek" or "textcomp|textgreek")
-	if (it->second.textpreamble() == "textgreek"
-		|| it->second.textpreamble() == "textcyrillic")
-		return it->second.textpreamble();
+	if (it->second.textPreamble() == "textgreek"
+		|| it->second.textPreamble() == "textcyrillic")
+		return it->second.textPreamble();
 	return string();
 }
 
@@ -627,7 +646,7 @@ bool Encodings::isUnicodeTextOnly(char_type c)
 		return false;
 
 	CharInfoMap::const_iterator const it = unicodesymbols.find(c);
-	return it == unicodesymbols.end() || it->second.mathcommand().empty();
+	return it == unicodesymbols.end() || it->second.mathCommand().empty();
 }
 
 
@@ -754,7 +773,7 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 			} else if (flag == "notermination=none") {
 				flags &= ~CharInfoTextNoTermination;
 				flags &= ~CharInfoMathNoTermination;
-			} else if (contains(flag, "tipashortcut=")) {
+			} else if (contains(flag, "tipaShortcut=")) {
 				tipashortcut = split(flag, '=');
 			} else if (flag == "deprecated") {
 				flags |= CharInfoDeprecated;
@@ -765,7 +784,7 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 				       << "'." << endl;
 			}
 		}
-		// mathcommand and mathpreamble have been added for 1.6.0.
+		// mathCommand and mathPreamble have been added for 1.6.0.
 		// make them optional so that old files still work.
 		int const lineno = symbolslex.lineNumber();
 		bool breakout = false;
@@ -773,7 +792,7 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 		string mathpreamble;
 		if (symbolslex.next(true)) {
 			if (symbolslex.lineNumber() != lineno) {
-				// line in old format without mathcommand and mathpreamble
+				// line in old format without mathCommand and mathPreamble
 				getNextToken = false;
 			} else {
 				mathcommand = symbolslex.getDocString();
@@ -781,10 +800,10 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 					flags |= CharInfoMathNoTermination;
 				if (symbolslex.next(true)) {
 					if (symbolslex.lineNumber() != lineno) {
-						// line in new format with mathcommand only
+						// line in new format with mathCommand only
 						getNextToken = false;
 					} else {
-						// line in new format with mathcommand and mathpreamble
+						// line in new format with mathCommand and mathPreamble
 						mathpreamble = symbolslex.getString();
 					}
 				} else
@@ -810,12 +829,12 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
 			textpreamble, mathpreamble,
 			tipashortcut, flags);
 		LYXERR(Debug::INFO, "Read unicode symbol " << symbol << " '"
-			   << to_utf8(info.textcommand()) << "' '" << info.textpreamble()
-			   << " '" << info.textfeature() << ' ' << info.textnotermination()
-			   << ' ' << to_utf8(info.mathcommand()) << "' '" << info.mathpreamble()
-			   << "' " << info.mathfeature() << ' ' << info.mathnotermination()
+		                                           << to_utf8(info.textCommand()) << "' '" << info.textPreamble()
+		                                           << " '" << info.textFeature() << ' ' << info.textNoTermination()
+		                                           << ' ' << to_utf8(info.mathCommand()) << "' '" << info.mathPreamble()
+		                                           << "' " << info.mathFeature() << ' ' << info.mathNoTermination()
 			   << ' ' << info.combining() << ' ' << info.force()
-			   << ' ' << info.forceselected());
+			   << ' ' << info.forceSelected());
 
 		// we assume that at least one command is nonempty when using unicodesymbols
 		if (info.isUnicodeSymbol()) {
diff --git a/src/Encoding.h b/src/Encoding.h
index 6a96843..2bfbda0 100644
--- a/src/Encoding.h
+++ b/src/Encoding.h
@@ -62,52 +62,62 @@ class CharInfo {
 public:
 	CharInfo() : flags_(0) {}
 	CharInfo(
-		docstring const & textcommand, docstring const & mathcommand,
-		std::string const & textpreamble, std::string const & mathpreamble,
-		std::string const & tipashortcut, unsigned int flags);
+		docstring const & text_command, docstring const & math_command,
+		std::string const & text_preamble, std::string const & math_preamble,
+		std::string const & tipa_shortcut, unsigned int flags);
+	CharInfo(
+		std::vector<docstring> const & text_commands, std::vector<docstring> const & math_commands,
+		std::string const & text_preamble, std::string const & math_preamble,
+		std::string const & tipa_shortcut, unsigned int flags);
 	// we assume that at least one command is nonempty when using unicodesymbols
-	bool isUnicodeSymbol() const { return !textcommand_.empty() || !mathcommand_.empty(); }
+	bool isUnicodeSymbol() const { return !text_commands_.empty() || !math_commands_.empty(); }
 	/// LaTeX command (text mode) for this character
-	docstring const textcommand() const { return textcommand_; }
+	docstring textCommand() const { return text_commands_[0]; }
+	/// All known LaTeX commands (text mode) for this character
+	std::vector<docstring> textCommands() const { return text_commands_; }
 	/// LaTeX command (math mode) for this character
-	docstring mathcommand() const { return mathcommand_; }
+	docstring mathCommand() const { return math_commands_[0]; }
+	/// All known LaTeX commands (math mode) for this character
+	std::vector<docstring> mathCommands() const { return math_commands_; }
 	/// Needed LaTeX preamble (or feature) for text mode
-	std::string textpreamble() const { return textpreamble_; }
+	std::string textPreamble() const { return text_preamble_; }
 	/// Needed LaTeX preamble (or feature) for math mode
-	std::string mathpreamble() const { return mathpreamble_; }
+	std::string mathPreamble() const { return math_preamble_; }
 	/// Is this a combining character?
 	bool combining() const { return flags_ & CharInfoCombining; }
-	/// Is \c textpreamble a feature known by LaTeXFeatures, or a raw LaTeX
+	/// Is \c textPreamble a feature known by LaTeXFeatures, or a raw LaTeX
 	/// command?
-	bool textfeature() const { return flags_ & CharInfoTextFeature; }
-	/// Is \c mathpreamble a feature known by LaTeXFeatures, or a raw LaTeX
+	bool textFeature() const { return flags_ & CharInfoTextFeature; }
+	/// Is \c mathPreamble a feature known by LaTeXFeatures, or a raw LaTeX
 	/// command?
-	bool mathfeature() const { return flags_ & CharInfoMathFeature; }
+	bool mathFeature() const { return flags_ & CharInfoMathFeature; }
 	/// Always force the LaTeX command, even if the encoding contains
 	/// this character?
 	bool force() const { return flags_ & CharInfoForce; }
 	/// Force the LaTeX command for some encodings?
-	bool forceselected() const { return flags_ & CharInfoForceSelected; }
+	bool forceSelected() const { return flags_ & CharInfoForceSelected; }
 	/// Disable LaTeX command => char_type conversion for this deprecated symbol?
 	bool deprecated() const { return flags_ & CharInfoDeprecated; }
 	/// TIPA shortcut
-	std::string const tipashortcut() const { return tipashortcut_; }
-	/// \c textcommand needs no termination (such as {} or space).
-	bool textnotermination() const { return flags_ & CharInfoTextNoTermination; }
-	/// \c mathcommand needs no termination (such as {} or space).
-	bool mathnotermination() const { return flags_ & CharInfoMathNoTermination; }
+	std::string const tipaShortcut() const { return tipa_shortcut_; }
+	/// \c textCommand needs no termination (such as {} or space).
+	bool textNoTermination() const { return flags_ & CharInfoTextNoTermination; }
+	/// \c mathCommand needs no termination (such as {} or space).
+	bool mathNoTermination() const { return flags_ & CharInfoMathNoTermination; }
 	///
 private:
-	/// LaTeX command (text mode) for this character
-	trivdocstring textcommand_;
-	/// LaTeX command (math mode) for this character
-	trivdocstring mathcommand_;
+	/// LaTeX commands (text mode) for this character. The first one is the default, the others
+	/// are only present for compatibility other ways users may encode the character
+	std::vector<trivdocstring> text_commands_;
+	/// LaTeX command (math mode) for this character. The first one is the default, the others
+	//	/// are only present for compatibility other ways users may encode the character
+	std::vector<trivdocstring> math_commands_;
 	/// Needed LaTeX preamble (or feature) for text mode
-	trivstring textpreamble_;
+	trivstring text_preamble_;
 	/// Needed LaTeX preamble (or feature) for math mode
-	trivstring mathpreamble_;
+	trivstring math_preamble_;
 	/// TIPA shortcut
-	trivstring tipashortcut_;
+	trivstring tipa_shortcut_;
 	/// feature flags
 	unsigned int flags_;
 };
@@ -288,7 +298,7 @@ public:
 	/**
 	 * Do we have to wrap in \text this character when in mathmode?
 	 * This is true if \p c is not ascii and the "mathalpha" flag is not
-	 * set and a mathcommand is not defined in the unicodesymbols file.
+	 * set and a mathCommand is not defined in the unicodesymbols file.
 	 */
 	static bool isUnicodeTextOnly(char_type c);
 	/**
diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 48b8519..3a4c399 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -1535,9 +1535,9 @@ void Paragraph::Private::validate(LaTeXFeatures & features) const
 			else if (features.runparams().main_fontenc != "T1"
 				 || ((&owner_->getFontSettings(bp, i))->language()->internalFontEncoding()))
 				features.require("textquotedbl");
-		} else if (ci.textfeature() && contains(ci.textpreamble(), '=')) {
+		} else if (ci.textFeature() && contains(ci.textPreamble(), '=')) {
 			// features that depend on the font or input encoding
-			string feats = ci.textpreamble();
+			string feats = ci.textPreamble();
 			string fontenc = (&owner_->getFontSettings(bp, i))->language()->fontenc(bp);
 			if (fontenc.empty())
 				fontenc = features.runparams().main_fontenc;

commit faf0e9ee1396decee9351d3ea8a4bbd362290c79
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sat Feb 19 03:11:55 2022 +0100

    configure: for EPS to PNG, ask ImageMagick to only consider the first image.
    
    Issue discussed in the mailing list: when the EPS contains several images (Adobe Photoshop exports two of them, one being a low-quality TIFF for preview), two files are generated, none with the existing name (prefix: -0 and -1). Hence, LyX thought that there was an error.

diff --git a/lib/configure.py b/lib/configure.py
index 17ef38f..f81aa3a 100644
--- a/lib/configure.py
+++ b/lib/configure.py
@@ -1174,7 +1174,7 @@ def checkConverterEntries():
     checkProg('an EPS -> PDF converter', ['epstopdf'],
         rc_entry = [ r'\converter eps        pdf6       "epstopdf --outfile=$$o $$i"	""'])
     #
-    checkProg('an EPS -> PNG converter', ['magick $$i $$o', 'convert $$i $$o'],
+    checkProg('an EPS -> PNG converter', ['magick $$i[0] $$o', 'convert $$i[0] $$o'],
         rc_entry = [ r'\converter eps        png        "%%"	""'])
     #
     # no agr -> pdf6 converter, since the pdf library used by gracebat is not

commit df59649a18f19486dc06b3e921272cea6d4ee343
Author: Daniel Ramöller <d.lyx at web.de>
Date:   Wed Feb 16 14:57:06 2022 +0100

    Properly show labels from broken references in Cross-references dialog
    
    Fix for bug #12456.
    
    The labels are transmitted from Buffer to GuiRef by reference of refs_
    in the getLabelList function. Previously, only one string was
    transmitted. But I needed both the formatted string, e.g. "x enu:test"
    or "Missing: enu:test", as well as the plain label, e.g. "enu:test".
    The former is for the list of labels to choose from in GuiRef and the
    latter for the label as shown in the line edit that contains the plain
    label in order to create a new reference from it. Transmitting both is
    what the pair achieves.

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 729d7a6..0a1f851 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -2389,7 +2389,7 @@ void Buffer::validate(LaTeXFeatures & features) const
 }
 
 
-void Buffer::getLabelList(vector<docstring> & list) const
+void Buffer::getLabelList(vector<std::pair<docstring, docstring>> & list) const
 {
 	// If this is a child document, use the master's list instead.
 	if (parent()) {
@@ -2401,7 +2401,7 @@ void Buffer::getLabelList(vector<docstring> & list) const
 	shared_ptr<Toc> toc = d->toc_backend.toc("label");
 	for (auto const & tocit : *toc) {
 		if (tocit.depth() == 0)
-			list.push_back(tocit.str());
+			list.push_back(make_pair(tocit.str(), tocit.asString()));
 	}
 }
 
diff --git a/src/Buffer.h b/src/Buffer.h
index 0d79ffa..7f40351 100644
--- a/src/Buffer.h
+++ b/src/Buffer.h
@@ -521,8 +521,8 @@ public:
 	void invalidateCiteLabels() const;
 	///
 	bool citeLabelsValid() const;
-	///
-	void getLabelList(std::vector<docstring> &) const;
+	/// two strings: plain label name and label as gui string
+	void getLabelList(std::vector<std::pair<docstring, docstring>> &) const;
 
 	/// This removes the .aux and .bbl files from the temp dir.
 	void removeBiblioTempFiles() const;
diff --git a/src/TocBackend.cpp b/src/TocBackend.cpp
index b3a36f1..859e6e8 100644
--- a/src/TocBackend.cpp
+++ b/src/TocBackend.cpp
@@ -43,8 +43,8 @@ namespace lyx {
 ///////////////////////////////////////////////////////////////////////////
 
 TocItem::TocItem(DocIterator const & dit, int d, docstring const & s,
-                 bool output_active, FuncRequest const & action)
-	: dit_(dit), depth_(d), str_(s), output_(output_active),
+                 bool output_active, bool missing, FuncRequest const & action)
+	: dit_(dit), depth_(d), str_(s), output_(output_active), missing_(missing),
 	  action_(action)
 {
 }
@@ -65,6 +65,9 @@ docstring const TocItem::asString() const
 		prefix += cross;
 		prefix += thin;
 	}
+	if (missing_) {
+		prefix += _("MISSING: ");
+	}
 	return prefix + str_;
 }
 
diff --git a/src/TocBackend.h b/src/TocBackend.h
index b67ee60..c3a178d 100644
--- a/src/TocBackend.h
+++ b/src/TocBackend.h
@@ -55,12 +55,13 @@ class TocItem
 {
 public:
 	/// Default constructor for STL containers.
-	TocItem() : dit_(0), depth_(0), output_(false) {}
+	TocItem() : dit_(0), depth_(0), output_(false), missing_(false) {}
 	///
 	TocItem(DocIterator const & dit,
 		int depth,
 		docstring const & s,
 		bool output_active,
+		bool missing = false,
 		FuncRequest const & action = FuncRequest(LFUN_UNKNOWN_ACTION)
 		);
 	///
@@ -74,6 +75,8 @@ public:
 	///
 	bool isOutput() const { return output_; }
 	///
+	bool isMissing() const { return missing_; }
+	///
 	void setAction(FuncRequest const & a) { action_ = a; }
 
 	/// custom action, or the default one (paragraph-goto) if not customised
@@ -92,6 +95,8 @@ private:
 	docstring str_;
 	/// Is this item in a note, inactive branch, etc?
 	bool output_;
+	/// Is this item missing, e.g. missing label?
+	bool missing_;
 	/// Custom action
 	FuncRequest action_;
 };
diff --git a/src/frontends/qt/GuiRef.cpp b/src/frontends/qt/GuiRef.cpp
index 2836190..9cb9d81 100644
--- a/src/frontends/qt/GuiRef.cpp
+++ b/src/frontends/qt/GuiRef.cpp
@@ -202,7 +202,7 @@ void GuiRef::refHighlighted(QTreeWidgetItem * sel)
 	bool const cur_item_selected = sel->isSelected();
 
 	if (cur_item_selected)
-		referenceED->setText(sel->text(0));
+		referenceED->setText(sel->data(0, Qt::UserRole).toString());
 
 	if (at_ref_)
 		gotoRef();
@@ -236,7 +236,7 @@ void GuiRef::refSelected(QTreeWidgetItem * sel)
 	bool const cur_item_selected = sel->isSelected();
 
 	if (cur_item_selected)
-		referenceED->setText(sel->text(0));
+		referenceED->setText(sel->data(0, Qt::UserRole).toString());
 	// <enter> or double click, inserts ref and closes dialog
 	slotOK();
 }
@@ -439,13 +439,17 @@ void GuiRef::redoRefs()
 	// the first item inserted
 	QString const oldSelection(referenceED->text());
 
-	QStringList refsStrings;
+	QStringList refsNames;
+	QStringList refsAsStrings;
 	QStringList refsCategories;
-	vector<docstring>::const_iterator iter;
+	vector<std::pair<docstring, docstring>>::const_iterator iter;
 	bool noprefix = false;
 	for (iter = refs_.begin(); iter != refs_.end(); ++iter) {
-		QString const lab = toqstr(*iter);
-		refsStrings.append(lab);
+		// the plain label name
+		QString const lab = toqstr((*iter).first);
+		refsNames.append(lab);
+		// the label as gui string
+		refsAsStrings.append(toqstr((*iter).second));
 		if (groupCB->isChecked()) {
 			if (lab.contains(":")) {
 				QString const pref = lab.split(':')[0];
@@ -470,10 +474,10 @@ void GuiRef::redoRefs()
 					sortingCO->itemData(sortingCO->currentIndex()).toString()
 					: QString();
 	if (sort_method == "nocase")
-		sort(refsStrings.begin(), refsStrings.end(),
+		sort(refsNames.begin(), refsNames.end(),
 			  caseInsensitiveLessThan /*defined above*/);
 	else if (sort_method == "case")
-		sort(refsStrings.begin(), refsStrings.end());
+		sort(refsNames.begin(), refsNames.end());
 
 	if (groupCB->isChecked()) {
 		QList<QTreeWidgetItem *> refsCats;
@@ -481,14 +485,15 @@ void GuiRef::redoRefs()
 			QString const & cat = refsCategories.at(i);
 			QTreeWidgetItem * item = new QTreeWidgetItem(refsTW);
 			item->setText(0, cat);
-			for (int j = 0; j < refsStrings.size(); ++j) {
-				QString const & ref = refsStrings.at(j);
+			for (int j = 0; j < refsNames.size(); ++j) {
+				QString const & ref = refsNames.at(j);
 				if ((ref.startsWith(cat + QString(":")))
 				    || (cat == qt_("<No prefix>")
 				       && (!ref.mid(1).contains(":") || ref.left(1).contains(":")))) {
 						QTreeWidgetItem * child =
 							new QTreeWidgetItem(item);
-						child->setText(0, ref);
+						item->setText(0, refsAsStrings.at(j));
+						item->setData(0, Qt::UserRole, ref);
 						item->addChild(child);
 				}
 			}
@@ -497,9 +502,11 @@ void GuiRef::redoRefs()
 		refsTW->addTopLevelItems(refsCats);
 	} else {
 		QList<QTreeWidgetItem *> refsItems;
-		for (int i = 0; i < refsStrings.size(); ++i) {
+		for (int i = 0; i < refsNames.size(); ++i) {
 			QTreeWidgetItem * item = new QTreeWidgetItem(refsTW);
-			item->setText(0, refsStrings.at(i));
+			QString const & ref = refsNames.at(i);
+			item->setText(0, refsAsStrings.at(i));
+			item->setData(0, Qt::UserRole, ref);
 			refsItems.append(item);
 		}
 		refsTW->addTopLevelItems(refsItems);
diff --git a/src/frontends/qt/GuiRef.h b/src/frontends/qt/GuiRef.h
index 02ef307..4bd50e5 100644
--- a/src/frontends/qt/GuiRef.h
+++ b/src/frontends/qt/GuiRef.h
@@ -106,8 +106,9 @@ private:
 	int restored_buffer_;
 	/// store the last active buffer
 	int active_buffer_;
-	/// the references
-	std::vector<docstring> refs_;
+	/// the references as two strings: plain label name and label as gui string
+	/// FIXME: might be a good idea to use a custom struct
+	std::vector<std::pair<docstring, docstring>> refs_;
 };
 
 } // namespace frontend
diff --git a/src/insets/InsetRef.cpp b/src/insets/InsetRef.cpp
index 716f8a7..eab3e69 100644
--- a/src/insets/InsetRef.cpp
+++ b/src/insets/InsetRef.cpp
@@ -537,7 +537,9 @@ void InsetRef::addToToc(DocIterator const & cpit, bool output_active,
 	broken_ = true;
 	setBroken(broken_);
 	shared_ptr<Toc> toc = backend.toc("label");
-	toc->push_back(TocItem(cpit, 0, screenLabel(), output_active));
+	if (TocBackend::findItem(*toc, 0, label) == toc->end())
+		toc->push_back(TocItem(cpit, 0, label, output_active, true));
+	toc->push_back(TocItem(cpit, 1, screenLabel(), output_active));
 	shared_ptr<Toc> toc2 = backend.toc("brokenrefs");
 	toc2->push_back(TocItem(cpit, 0, screenLabel(), output_active));
 }

commit 8519e2b074df93c0fd6ee70158a61f8ca91dad56
Author: Kornel Benko <kornel at lyx.org>
Date:   Sat Feb 19 15:59:52 2022 +0100

    Update sk.po

diff --git a/po/sk.po b/po/sk.po
index 0fecc2b..064fb9a 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX-2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-17 12:06+0100\n"
-"PO-Revision-Date: 2022-02-17 11:16+0000\n"
+"POT-Creation-Date: 2022-02-19 14:36+0100\n"
+"PO-Revision-Date: 2022-02-19 14:53+0000\n"
 "Last-Translator: Kornel Benko <kornel at lyx.org>\n"
 "Language-Team: Slovak <kornel at lyx.org>\n"
 "Language: sk\n"
@@ -306,6 +306,14 @@ msgid "Add &Local..."
 msgstr "&Pridať lokálnu…"
 
 #: src/frontends/qt/ui/BibtexUi.ui:91
+msgid "Inherit bibliography databases from the master document"
+msgstr "Databázy prevziať od hlavného dokumentu"
+
+#: src/frontends/qt/ui/BibtexUi.ui:94
+msgid "&Inherit from Master"
+msgstr "&Zdediť od hlavného dokumentu"
+
+#: src/frontends/qt/ui/BibtexUi.ui:91
 msgid "Remove the selected database"
 msgstr "Odstrániť vybranú databázu"
 
@@ -1230,7 +1238,7 @@ msgstr "&Bývalí dokument:"
 
 #: src/frontends/qt/ui/CompareUi.ui:51
 msgid "Specify the original version of the document here (comparison source)"
-msgstr "Špecifikujte originálnu verziu dokumenta tu (zdroj porovnania)"
+msgstr "Špecifikujte originálnu verziu dokumentu tu (zdroj porovnania)"
 
 #: src/frontends/qt/ui/CompareUi.ui:61 src/frontends/qt/ui/PrefUi.ui:61
 msgid "Bro&wse..."
@@ -1242,7 +1250,7 @@ msgstr "&Nový dokument:"
 
 #: src/frontends/qt/ui/CompareUi.ui:87
 msgid "Specify the modified version of the document here (comparison target)"
-msgstr "Špecifikujte modifikovanú verziu dokumenta tu (cieľ porovnania)"
+msgstr "Špecifikujte modifikovanú verziu dokumentu tu (cieľ porovnania)"
 
 #: src/frontends/qt/ui/CompareUi.ui:97 src/frontends/qt/ui/ExternalUi.ui:89
 #: src/frontends/qt/ui/GraphicsUi.ui:75 src/frontends/qt/ui/IncludeUi.ui:28
@@ -1257,7 +1265,7 @@ msgstr "Vyberte dokument z ktorého chcete nastavenia kopírovať"
 
 #: src/frontends/qt/GuiDocument.cpp:789 src/frontends/qt/ui/CompareUi.ui:120
 msgid "Document Settings"
-msgstr "Nastavenia dokumenta"
+msgstr "Nastavenia dokumentu"
 
 #: src/frontends/qt/ui/CompareUi.ui:129
 msgid "O&ld Document"
@@ -1331,7 +1339,7 @@ msgstr "&Prehodiť && obrátiť"
 
 #: src/frontends/qt/ui/DocumentUi.ui:93
 msgid "Reset to the default settings for the document class"
-msgstr "Nastaviť na štandardné nastavenie triedy dokumenta"
+msgstr "Nastaviť na štandardné nastavenie triedy dokumentu"
 
 #: src/frontends/qt/ui/DocumentUi.ui:96
 msgid "Use Class Defaults"
@@ -1343,7 +1351,7 @@ msgstr "Uložiť nastavenia ako štandardné nastavenia pre nové LyX dokumenty"
 
 #: src/frontends/qt/ui/DocumentUi.ui:112
 msgid "Save as Document Defaults"
-msgstr "Uložiť ako štandardné nastavenia dokumenta"
+msgstr "Uložiť ako štandardné nastavenia dokumentu"
 
 #: src/frontends/qt/ui/ERTUi.ui:38 src/frontends/qt/GuiPrefs.cpp:1297
 msgid "Display"
@@ -1645,7 +1653,7 @@ msgid ""
 "document"
 msgstr ""
 "Aktuálny dokument a všetky súvisiace dokumenty patriace k tomu istému "
-"hlavnému dokumenta"
+"hlavnému dokumentu"
 
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:319
 msgid "&Master document"
@@ -1716,11 +1724,11 @@ msgid ""
 "Settings."
 msgstr ""
 "Použiť štandardné zarovnanie pre plávajúce objekty, ako je určené v "
-"nastaveniach dokumenta."
+"nastaveniach dokumentu."
 
 #: src/frontends/qt/ui/FloatPlacementUi.ui:97
 msgid "D&ocument Default"
-msgstr "Štan&dardné nastavenia dokumenta"
+msgstr "Štan&dardné nastavenia dokumentu"
 
 #: src/frontends/qt/ui/FloatPlacementUi.ui:104
 msgid "Left-align float contents"
@@ -2466,7 +2474,7 @@ msgstr "O&kamžite použiť"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:20
 msgid "Document &Class"
-msgstr "&Trieda dokumenta"
+msgstr "&Trieda dokumentu"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:48
 msgid "Click to select a local document class definition file"
@@ -2506,7 +2514,7 @@ msgstr "Ovládač &grafik:"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:136
 msgid "Select if the current document is included to a master file"
-msgstr "Vyberte keď je súčasný dokument vložený do hlavného dokumenta"
+msgstr "Vyberte keď je súčasný dokument vložený do hlavného dokumentu"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:142
 msgid "Select de&fault master document"
@@ -2518,7 +2526,7 @@ msgstr "&Hlavný dokument:"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:177
 msgid "Enter the name of the default master document"
-msgstr "Udajte meno implicitného hlavného dokumenta"
+msgstr "Udajte meno implicitného hlavného dokumentu"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:196
 msgid "&Suppress default date on front page"
@@ -2925,7 +2933,7 @@ msgstr "&Separácia stĺpcov:"
 
 #: src/frontends/qt/ui/MasterChildUi.ui:20
 msgid "Master Document Output"
-msgstr "Výstup hlavného dokumenta"
+msgstr "Výstup hlavného dokumentu"
 
 #: src/frontends/qt/ui/MasterChildUi.ui:29
 msgid "Include all subdocuments in the output"
@@ -2963,7 +2971,7 @@ msgid ""
 "counter values and references."
 msgstr ""
 "Čítače a referencie vylúčených dokumentov budú ignorované, čiže čítače vo "
-"výstupe nebudú súhlasiť s výstupom celého dokumenta.<br>Toto je "
+"výstupe nebudú súhlasiť s výstupom celého dokumentu.<br>Toto je "
 "najrýchlejšia metóda. Použite ju keď nepotrebujete presné hodnoty čítačov a "
 "referencií."
 
@@ -3165,7 +3173,7 @@ msgstr "&Zosivelé"
 
 #: src/frontends/qt/ui/NumberingUi.ui:37
 msgid "Add line numbers to the document"
-msgstr "Pridať očíslenie riadkov do dokumenta"
+msgstr "Pridať očíslenie riadkov do dokumentu"
 
 #: src/frontends/qt/ui/NumberingUi.ui:40
 msgid "L&ine numbering"
@@ -3248,7 +3256,7 @@ msgid ""
 msgstr ""
 "Uloží všetky parametre do LyX súboru, včetne aj také ktoré sa často "
 "prepínajú alebo sú zvláštne ohľadom na používateľa (také ako napr. výstup "
-"sledovaných zmien, alebo cesta adresára dokumenta). Vypnutie tejto voľby je "
+"sledovaných zmien, alebo cesta adresára dokumentu). Vypnutie tejto voľby je "
 "vhodnejšie ako pre spoluprácu tak i pri používaniu správe verzií."
 
 #: src/frontends/qt/ui/OutputUi.ui:99
@@ -3470,11 +3478,11 @@ msgstr "&Nastavenia pre hyperref"
 msgid ""
 "Document metadata and PDF settings (as specified in LaTeX 06/2022 and later)"
 msgstr ""
-"Metaúdaje dokumenta a PDS nastavenia (ako určené v LaTeX 06/2022 a neskôr)"
+"Metaúdaje dokumentu a PDS nastavenia (ako určené v LaTeX 06/2022 a neskôr)"
 
 #: src/frontends/qt/ui/PDFSupportUi.ui:490
 msgid "Document &Metadata"
-msgstr "&Metaúdaje dokumenta"
+msgstr "&Metaúdaje dokumentu"
 
 #: src/frontends/qt/ui/PageLayoutUi.ui:20
 msgid "Paper Format"
@@ -3954,7 +3962,7 @@ msgid ""
 "document. This allows moving the document elsewhere and still finding the "
 "included files."
 msgstr ""
-"Keď zaškrtnuté, adresár dokumenta sa zapíše do dokumenta. Dovolí sa tým "
+"Keď zaškrtnuté, adresár dokumentu sa zapíše do dokumentu. Dovolí sa tým "
 "presunúť dokument niekde inde a predsa nájsť vložené súbory."
 
 #: src/frontends/qt/ui/PrefDocHandlingUi.ui:158
@@ -4011,7 +4019,7 @@ msgstr "Editácia"
 
 #: src/frontends/qt/ui/PrefEditUi.ui:51
 msgid "Scroll &below end of document"
-msgstr "Rolovať až pod &koniec dokumenta"
+msgstr "Rolovať až pod &koniec dokumentu"
 
 #: src/frontends/qt/ui/PrefEditUi.ui:72
 msgid "Edit Math Macros inline with a box around"
@@ -4134,7 +4142,7 @@ msgstr "O&dstrániť"
 
 #: src/frontends/qt/ui/PrefFileformatsUi.ui:73
 msgid "&Document format"
-msgstr "Form&át dokumenta"
+msgstr "Form&át dokumentu"
 
 #: src/frontends/qt/ui/PrefFileformatsUi.ui:80
 msgid "Check this to show the current format in the File > Export menu"
@@ -4389,7 +4397,7 @@ msgid ""
 "the language package), so that other packages are also informed about the "
 "used languages."
 msgstr ""
-"Zaškrtnite na nastavenie jazyka globálne (k triede dokumenta), nie lokálne "
+"Zaškrtnite na nastavenie jazyka globálne (k triede dokumentu), nie lokálne "
 "(k jazykovému balíku), tak aby aj iné balíky dostali informáciu o použitých "
 "jazykov."
 
@@ -4402,24 +4410,24 @@ msgid ""
 "If checked, the document language is explicitly set by a language switch "
 "command"
 msgstr ""
-" Keď zaškrtnuté, jazyk dokumenta je explicitne nastavený prepínajúcim "
+" Keď zaškrtnuté, jazyk dokumentu je explicitne nastavený prepínajúcim "
 "príkazom jazyka"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:154
 msgid "Set document language e&xplicitly"
-msgstr "Ex&plicitne nastaviť jazyk dokumenta"
+msgstr "Ex&plicitne nastaviť jazyk dokumentu"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:161
 msgid ""
 "If checked, the document language is explicitly closed by a language switch "
 "command"
 msgstr ""
-"Keď zaškrtnuté, jazyk dokumenta je explicitne zavretý prepínajúcim príkazom "
+"Keď zaškrtnuté, jazyk dokumentu je explicitne zavretý prepínajúcim príkazom "
 "jazyka"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:164
 msgid "&Unset document language explicitly"
-msgstr "E&xplicitne deaktivovať jazyk dokumenta"
+msgstr "E&xplicitne deaktivovať jazyk dokumentu"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:177
 msgid "Editor Settings"
@@ -4430,7 +4438,7 @@ msgid ""
 "Check to highlight additional languages (to the document language) visually "
 "in the work area"
 msgstr ""
-"Zaškrtnite na vyzdvihnutie dodatočných jazykov (ku jazyku dokumenta) "
+"Zaškrtnite na vyzdvihnutie dodatočných jazykov (ku jazyku dokumentu) "
 "viditeľné na pracovnej ploche"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:192
@@ -4595,7 +4603,7 @@ msgstr "Zvoliť štandardné voľby pri zmene triedy"
 
 #: src/frontends/qt/ui/PrefLatexUi.ui:323
 msgid "R&eset class options when document class changes"
-msgstr "&Nastaviť triedne voľby pri zmene triedy dokumenta"
+msgstr "&Nastaviť triedne voľby pri zmene triedy dokumentu"
 
 #: src/frontends/qt/ui/PrefOutputUi.ui:20
 msgid "Forward Search"
@@ -5372,7 +5380,7 @@ msgid ""
 "Available categories depend on the document encoding. Select UTF-8 for the "
 "full range."
 msgstr ""
-"Dostupné kategórie závisia na zvolenom kódovaní dokumenta. Vyberte UTF-8 pre "
+"Dostupné kategórie závisia na zvolenom kódovaní dokumentu. Vyberte UTF-8 pre "
 "plný rozsah."
 
 #: src/frontends/qt/ui/SymbolsUi.ui:43
@@ -6019,7 +6027,7 @@ msgstr "Ukazovať zdroj tak, ako ho hlavný dokument dostane"
 
 #: src/frontends/qt/ui/ViewSourceUi.ui:133
 msgid "Master's perspective"
-msgstr "Perspektíva hlavného dokumenta"
+msgstr "Perspektíva hlavného dokumentu"
 
 #: src/frontends/qt/ui/ViewSourceUi.ui:147
 msgid "Current Paragraph"
@@ -7616,8 +7624,8 @@ msgid ""
 msgstr ""
 "Poskytuje dva nové štýly: 1. Štýl 'V preambule' ktorý položí všetko do neho "
 "zadané do preambuly. Keď si to niekto želá, dá sa použiť aj na inklúziu kódu "
-"preambuly do tela LyXového dokumenta. 2. Štýl 'V titule' položí svoj obsah "
-"do tela LaTeXového dokumenta, ale pred vydaním \\maketitle. Je to vhodné pre "
+"preambuly do tela LyXového dokumentu. 2. Štýl 'V titule' položí svoj obsah "
+"do tela LaTeXového dokumentu, ale pred vydaním \\maketitle. Je to vhodné pre "
 "tvorbu vetiev a poznámok v titulnom materiáli. (Vložením do 'Štandardné "
 "rozloženie' signalizujete LyXu vložiť \\maketitle do výstupu, čo by mohlo "
 "byť predčasné.)"
@@ -10399,7 +10407,7 @@ msgstr "Krátky titul v hlavnom jazyku"
 
 #: lib/layouts/bicaption.module:46
 msgid "Short title for the main(document) language"
-msgstr "Krátky titul v hlavnom jazyku dokumenta"
+msgstr "Krátky titul v hlavnom jazyku dokumentu"
 
 #: lib/layouts/bicaption.module:50
 msgid "Main Language Text"
@@ -10407,7 +10415,7 @@ msgstr "Text v hlavnom jazyku"
 
 #: lib/layouts/bicaption.module:51
 msgid "Text in the main(document) language"
-msgstr "Text v hlavnom jazyku dokumenta"
+msgstr "Text v hlavnom jazyku dokumentu"
 
 #: lib/layouts/bicaption.module:54
 msgid "Second Language Short Title"
@@ -12435,7 +12443,7 @@ msgstr ""
 "FIXMEs'. Vysvetlivky sú upraviteľné v LaTeXovej preambule. Viďte "
 "dokumentáciu FiXme. NOTA: Štandardne sú poznámky viditeľné len v režime "
 "'draft' (keď voľbu 'draft' vložíte pomocou Dokument -> Nastavenia… -> Trieda "
-"dokumenta -> Nastavenie triedy -> Vlastné). Chcete to vidieť vždy, vložte "
+"dokumentu -> Nastavenie triedy -> Vlastné). Chcete to vidieť vždy, vložte "
 "\\fxsetup{draft} do Dokument -> Preambula LaTeX-u. POZOR: pre niektoré "
 "vlastnosti potrebujete balík 'FiXme' verziu 4 alebo vzostupnú."
 
@@ -13933,11 +13941,11 @@ msgstr "S/R výraz"
 
 #: lib/layouts/landscape.module:2
 msgid "Landscape Document Parts"
-msgstr "Časti dokumenta vo formáte na šírku"
+msgstr "Časti dokumentu vo formáte na šírku"
 
 #: lib/layouts/landscape.module:6
 msgid "Output parts of the document in landscape mode."
-msgstr "Vytlačiť čiastky z dokumenta na šírku."
+msgstr "Vytlačiť čiastky z dokumentu na šírku."
 
 #: lib/layouts/landscape.module:11 lib/layouts/landscape.module:16
 msgid "Landscape"
@@ -17400,7 +17408,7 @@ msgstr ""
 "rozšírenia AMS, má tu každý poskytnutý typ teorémou svoje vlastné číslovanie "
 "(čiže veta 1, veta 2, lemma 1, tvrdenie 1, veta 3, lemma 2, …, oproti veta "
 "1, veta 2, lemma 3, tvrdenie 4…). Číslovanie je postupne bez ohľadu na "
-"štruktúru dokumenta. To sa dá zmeniť voľbou jedného z 'Teorémy (Číslované "
+"štruktúru dokumentu. To sa dá zmeniť voľbou jedného z 'Teorémy (Číslované "
 "podľa …)' modulu."
 
 #: lib/layouts/theorems-ams-chap-bytype.module:2
@@ -17757,7 +17765,7 @@ msgid ""
 msgstr ""
 "Definuje prostredie mat. viet a dôkazov používajúce rozšírenie AMS. K "
 "dispozícii sú číslované a ne-číslované typy. Implicitne sú vety číslované "
-"postupne bez ohľadu na štruktúru dokumenta. To sa dá zmeniť voľbou jedného z "
+"postupne bez ohľadu na štruktúru dokumentu. To sa dá zmeniť voľbou jedného z "
 "'Teorémy (Číslované podľa …)' modulu."
 
 #: lib/layouts/theorems-bytype.module:2
@@ -17778,7 +17786,7 @@ msgstr ""
 "jednoduchému modulu teorémou, má tu každý poskytnutý typ teorémou svoje "
 "vlastné číslovanie (čiže veta 1, veta 2, lemma 1, tvrdenie 1, veta 3, lemma "
 "2, …, oproti veta 1, veta 2, lemma 3, tvrdenie 4, …). Číslovanie je "
-"usporiadané bez ohľadu na štruktúru dokumenta. To sa dá zmeniť voľbou "
+"usporiadané bez ohľadu na štruktúru dokumentu. To sa dá zmeniť voľbou "
 "jedného z 'Teorémy (Číslované podľa …)' modulu."
 
 #: lib/layouts/theorems-case.inc:12
@@ -17967,7 +17975,7 @@ msgid ""
 msgstr ""
 "Definuje niektoré prostredia mat. viet pre použitie v triedach neodvodených "
 "od AMS. Implicitne sú vety číslované postupne bez ohľadu na štruktúru "
-"dokumenta. To sa dá zmeniť voľbou jedného z 'Teorémy (Číslované podľa …)' "
+"dokumentu. To sa dá zmeniť voľbou jedného z 'Teorémy (Číslované podľa …)' "
 "modulu."
 
 #: lib/layouts/theorems-without-preamble.inc:47
@@ -18025,9 +18033,9 @@ msgid ""
 "provides a paragraph style. Passing 'final' as document class option "
 "suppresses the output of TODO notes."
 msgstr ""
-"Poskytuje vlastné vložky na vklad TODO prvkov do vášho dokumenta (používajúc "
+"Poskytuje vlastné vložky na vklad TODO prvkov do vášho dokumentu (používajúc "
 "balík todonotes). Pre generáciu 'Zoznam TODOs' poskytuje tento modul štýl "
-"odstavca. Nastaviť 'final' ako voľbu dokumenta potlačí výstup 'TODO' "
+"odstavca. Nastaviť 'final' ako voľbu dokumentu potlačí výstup 'TODO' "
 "poznámok."
 
 #: lib/layouts/todonotes.module:15 lib/layouts/todonotes.module:120
@@ -26048,7 +26056,7 @@ msgstr ""
 "pozície, ktorú chcete zobraziť.\n"
 "Uistite sa, že má príponu '.fen'\n"
 "a nezabudnite dať relatívnu cestu\n"
-"k súboru do dokumenta LyX-a.\n"
+"k súboru do dokumentu LyX-a.\n"
 "Vnútri XBoard-u, použite 'Edit -> Edit Position'\n"
 "pre obecnú editáciu šachovnice.\n"
 "Možno chcete aj použiť voľbu\n"
@@ -26207,7 +26215,7 @@ msgstr ""
 "LyX sa pokúsi držať vektorové vlastnosti obrázku pre konečný výstup.\n"
 "Všimnite si že existujú špecializované šablóny pre Xfig obrázky a Dia "
 "diagramy.\n"
-"Špecializované šablóny dovoľujú automaticky použiť font dokumenta v\n"
+"Špecializované šablóny dovoľujú automaticky použiť font dokumentu v\n"
 "obrázkoch, čo nie je možné so všeobecnou šablónou.\n"
 
 #: lib/xtemplates/xfig.xtemplate:33
@@ -27017,7 +27025,7 @@ msgstr "Neznámy token: %1$s %2$s\n"
 
 #: src/Buffer.cpp:1003 src/Buffer.cpp:1009 src/Buffer.cpp:1033
 msgid "Document header error"
-msgstr "Chyba v hlavičke dokumenta"
+msgstr "Chyba v hlavičke dokumentu"
 
 #: src/Buffer.cpp:1007
 msgid "\\begin_header is missing"
@@ -27059,7 +27067,7 @@ msgstr "Nemôžem otvoriť súbor `%1$s'."
 
 #: src/Buffer.cpp:1221 src/Buffer.cpp:1295
 msgid "Document format failure"
-msgstr "Chybný formát dokumenta"
+msgstr "Chybný formát dokumentu"
 
 #: src/Buffer.cpp:1221
 #, c-format
@@ -27244,9 +27252,9 @@ msgid ""
 "contexts.\n"
 "Changing the document encoding to utf8 could help."
 msgstr ""
-"Niektoré znaky vášho dokumenta sú nereprezentovateľné v niektorých "
+"Niektoré znaky vášho dokumentu sú nereprezentovateľné v niektorých "
 "špecifických verbatim kontextoch.\n"
-"Pomôcť by mohla zmena kódovania dokumenta na utf8."
+"Pomôcť by mohla zmena kódovania dokumentu na utf8."
 
 #: src/Buffer.cpp:1788
 #, c-format
@@ -27259,9 +27267,9 @@ msgid ""
 "chosen encoding.\n"
 "Changing the document encoding to utf8 could help."
 msgstr ""
-"Niektoré znaky vášho dokumenta sú pravdepodobne nereprezentovateľné vo "
+"Niektoré znaky vášho dokumentu sú pravdepodobne nereprezentovateľné vo "
 "zvolenom kódovaní.\n"
-"Pomôcť by mohla zmena kódovania dokumenta na utf8."
+"Pomôcť by mohla zmena kódovania dokumentu na utf8."
 
 #: src/Buffer.cpp:1799
 msgid "iconv conversion failed"
@@ -27288,15 +27296,15 @@ msgid ""
 "In case of problems, choose an appropriate document encoding\n"
 "(such as utf8) or change the file path name."
 msgstr ""
-"Cesta vášho dokumenta\n"
+"Cesta vášho dokumentu\n"
 "(%1$s)\n"
 "obsahuje glyfy neznáme v kódovaní\n"
-"aktuálneho dokumenta (menovite %2$s).\n"
+"aktuálneho dokumentu (menovite %2$s).\n"
 "Na úplný výsledok zaistite aby TEXINPUTS obsahovala cestu ku adresáru "
-"dokumenta alebo použite relatívne cesty (čiže cesty začínajúce s './' alebo "
+"dokumentu alebo použite relatívne cesty (čiže cesty začínajúce s './' alebo "
 "s '../') v preambule alebo v ERT. \n"
 "\n"
-"V prípade problémov vyberte vhodné kódovanie dokumenta\n"
+"V prípade problémov vyberte vhodné kódovanie dokumentu\n"
 "(ako napr. utf8) alebo zmeňte meno cesty."
 
 #: src/Buffer.cpp:2009
@@ -27356,7 +27364,7 @@ msgstr "Žiadne informácie pre export formátu: %1$s"
 msgid "Error exporting to format: %1$s."
 msgstr "Chyba pri exporte na formát: %1$s."
 
-#: src/Buffer.cpp:2831
+#: src/Buffer.cpp:2842
 msgid "Error generating literate programming code."
 msgstr "Chyba pri generovaní kódu dokumentačného programovania."
 
@@ -27443,7 +27451,7 @@ msgstr "Prostý text nemá preambulu."
 
 #: src/Buffer.cpp:4305
 msgid "Autosaving current document..."
-msgstr "Automatické ukladanie súčasného dokumenta…"
+msgstr "Automatické ukladanie súčasného dokumentu…"
 
 #: src/Buffer.cpp:4419
 #, c-format
@@ -27471,14 +27479,14 @@ msgid ""
 "contains spaces, but your TeX installation does not allow them. You should "
 "save the file to a directory whose name does not contain spaces."
 msgstr ""
-"Cesta do adresára dokumenta\n"
+"Cesta do adresára dokumentu\n"
 "%1$s\n"
 "obsahuje medzery, ale vaša inštalácia TeXu to nepovoľuje. Súbor by ste mali "
 "uložiť do adresára ktorého meno neobsahuje medzery."
 
 #: src/Buffer.cpp:4594 src/Buffer.cpp:4624 src/frontends/qt/GuiView.cpp:875
 msgid "Document export cancelled."
-msgstr "Exportovanie dokumenta bolo zrušené."
+msgstr "Exportovanie dokumentu bolo zrušené."
 
 #: src/Buffer.cpp:4616
 #, c-format
@@ -27497,7 +27505,7 @@ msgid ""
 "\n"
 "Recover emergency save?"
 msgstr ""
-"Existuje havarijná kópia dokumenta %1$s.\n"
+"Existuje havarijná kópia dokumentu %1$s.\n"
 "\n"
 "Získať havarijnú kópiu späť?"
 
@@ -27524,7 +27532,7 @@ msgid ""
 "marked read-only. Please make sure to save the document as a different file."
 msgstr ""
 "Havarijný súbor úspešne načítaný, ale originálny súbor %1$s je označený len "
-"na čítanie. Zaistite prosím uloženie dokumenta ako iný súbor."
+"na čítanie. Zaistite prosím uloženie dokumentu ako iný súbor."
 
 #: src/Buffer.cpp:4714
 msgid "Document was successfully recovered."
@@ -27597,7 +27605,7 @@ msgid ""
 "\n"
 "Load the backup instead?"
 msgstr ""
-"Záloha dokumenta %1$s je novšia.\n"
+"Záloha dokumentu %1$s je novšia.\n"
 "\n"
 "Nahrať radšej zálohu ?"
 
@@ -27620,7 +27628,7 @@ msgid ""
 "read-only. Please make sure to save the document as a different file."
 msgstr ""
 "Zálohový súbor úspešne načítaný, ale originálny súbor %1$s je označený len "
-"na čítanie. Zaistite prosím uloženie dokumenta ako iný súbor."
+"na čítanie. Zaistite prosím uloženie dokumentu ako iný súbor."
 
 #: src/Buffer.cpp:5195 src/insets/InsetCaption.cpp:408
 msgid "Senseless!!! "
@@ -27729,7 +27737,7 @@ msgid ""
 "See section 3.1.2.2 (Class Availability) of the\n"
 "User's Guide for more information."
 msgstr ""
-"Vybraná trieda dokumenta\n"
+"Vybraná trieda dokumentu\n"
 "\t%1$s\n"
 "požaduje nedostupné externé súbory.\n"
 "Dokumentová trieda sa stále dá používať, ale LyX\n"
@@ -27741,7 +27749,7 @@ msgstr ""
 
 #: src/BufferParams.cpp:793
 msgid "Document class not available"
-msgstr "Nedostupná trieda dokumenta"
+msgstr "Nedostupná trieda dokumentu"
 
 #: src/BufferParams.cpp:1059 src/Color.cpp:281
 #: src/frontends/qt/GuiDocument.cpp:3527
@@ -27769,7 +27777,7 @@ msgstr "Nekódovateľný znak"
 
 #: src/BufferParams.cpp:1732
 msgid "Uncodable character in document metadata"
-msgstr "Nekódovateľný znak v metaúdajoch dokumenta"
+msgstr "Nekódovateľný znak v metaúdajoch dokumentu"
 
 #: src/BufferParams.cpp:1734
 #, c-format
@@ -27782,12 +27790,12 @@ msgid ""
 "Please select an appropriate document encoding\n"
 "(such as utf8) or change the preamble code accordingly."
 msgstr ""
-"Metaúdaje vášho dokumenta obsahuje glyfy, ktoré sú neznáme v kódovaní "
-"aktuálneho dokumenta (menovite %1$s).\n"
+"Metaúdaje vášho dokumentu obsahuje glyfy, ktoré sú neznáme v kódovaní "
+"aktuálneho dokumentu (menovite %1$s).\n"
 "Tieto glyfy budú pri exporte do LaTeX-u vynechané, čo môže končiť neúplnom "
 "výstupe.\n"
 "\n"
-"Vyberte vhodné kódovanie dokumenta (napr. utf8)\n"
+"Vyberte vhodné kódovanie dokumentu (napr. utf8)\n"
 "alebo zmeňte primerane preambulu."
 
 #: src/BufferParams.cpp:1775
@@ -27805,11 +27813,11 @@ msgid ""
 "Please select an appropriate document encoding\n"
 "(such as utf8) or change the class options accordingly."
 msgstr ""
-"Voľby triedy vášho dokumenta obsahujú glyfy, ktoré sú neznáme v kódovaní "
-"aktuálneho dokumenta (menovite %1$s).\n"
+"Voľby triedy vášho dokumentu obsahujú glyfy, ktoré sú neznáme v kódovaní "
+"aktuálneho dokumentu (menovite %1$s).\n"
 "Tieto glyfy budú vo výstupe vynechané, čo môže končiť v neúplnom výstupe.\n"
 "\n"
-"Vyberte vhodné kódovanie dokumenta (napr. utf8)\n"
+"Vyberte vhodné kódovanie dokumentu (napr. utf8)\n"
 "alebo zmeňte primerane triedne voľby."
 
 #: src/BufferParams.cpp:2217
@@ -27827,12 +27835,12 @@ msgid ""
 "Please select an appropriate document encoding\n"
 "(such as utf8) or change the preamble code accordingly."
 msgstr ""
-"Preambula vášho dokumenta obsahuje glyfy, ktoré sú neznáme v kódovaní "
-"aktuálneho dokumenta (menovite %1$s).\n"
+"Preambula vášho dokumentu obsahuje glyfy, ktoré sú neznáme v kódovaní "
+"aktuálneho dokumentu (menovite %1$s).\n"
 "Tieto glyfy budú pri exporte do LaTeX-u vynechané, čo môže končiť neúplnom "
 "výstupe.\n"
 "\n"
-"Vyberte vhodné kódovanie dokumenta (napr. utf8)\n"
+"Vyberte vhodné kódovanie dokumentu (napr. utf8)\n"
 "alebo zmeňte primerane preambulu."
 
 #: src/BufferParams.cpp:2534
@@ -27852,7 +27860,7 @@ msgstr ""
 
 #: src/BufferParams.cpp:2652
 msgid "Document class not found"
-msgstr "Nenájdená trieda dokumenta"
+msgstr "Nenájdená trieda dokumentu"
 
 #: src/BufferParams.cpp:2547
 #, c-format
@@ -27893,7 +27901,7 @@ msgid ""
 "references will be generated.\n"
 "Please fix your installation!"
 msgstr ""
-"Žiadaný procesor pre bibliografiu tohto dokumenta (%1$s) je nedostupný a "
+"Žiadaný procesor pre bibliografiu tohto dokumentu (%1$s) je nedostupný a "
 "alternatíva sa nenašla. Bibliografia a referencie nebudú generované.\n"
 "Opravte prosím vašu inštaláciu!"
 
@@ -27910,7 +27918,7 @@ msgid ""
 "carefully!\n"
 "It is suggested to install the missing processor."
 msgstr ""
-"Žiadaný procesor pre bibliografiu tohto dokumenta (%1$s) je nedostupný. Ako "
+"Žiadaný procesor pre bibliografiu tohto dokumentu (%1$s) je nedostupný. Ako "
 "náhrada sa bude používať '%2$s' bez volieb. To môže viesť k chybám alebo "
 "nežiadúcim zmenám v bibliografie. Pozorne skontrolujte!\n"
 "Navrhuje sa inštalovať neprítomný procesor."
@@ -27937,7 +27945,7 @@ msgstr "Dokument bol externe upravený"
 
 #: src/BufferView.cpp:1148
 msgid "This portion of the document is deleted."
-msgstr "Táto časť dokumenta je vymazaná."
+msgstr "Táto časť dokumentu je vymazaná."
 
 #: src/BufferView.cpp:1153 src/BufferView.cpp:2212
 #: src/frontends/qt/GuiView.cpp:4104 src/frontends/qt/GuiView.cpp:4192
@@ -27947,7 +27955,7 @@ msgstr "Očakáva sa absolútna cesta súboru."
 #: src/BufferView.cpp:1422 src/BufferView.cpp:1454
 #, c-format
 msgid "The document class `%1$s' could not be loaded."
-msgstr "Nepodarilo sa nahrať triedu dokumenta `%1$s'."
+msgstr "Nepodarilo sa nahrať triedu dokumentu `%1$s'."
 
 #: src/BufferView.cpp:1441
 msgid "No further undo information"
@@ -28118,7 +28126,7 @@ msgstr ""
 "ktoré sa v aktuálnom kódovaní %2$s nedajú reprezentovať.\n"
 "Príslušné glyfy budú pri exporte do LaTeX-u vynechané.\n"
 "\n"
-"Vyberte vhodné kódovanie dokumenta (napr. utf8)\n"
+"Vyberte vhodné kódovanie dokumentu (napr. utf8)\n"
 "alebo zmeňte písanie iniciál autora."
 
 #: src/Changes.cpp:405
@@ -28141,7 +28149,7 @@ msgstr ""
 "ktoré sa v aktuálnom kódovaní %2$s nedajú reprezentovať.\n"
 "Príslušné glyfy budú pri exporte do LaTeX-u vynechané.\n"
 "\n"
-"Vyberte vhodné kódovanie dokumenta (napr. utf8)\n"
+"Vyberte vhodné kódovanie dokumentu (napr. utf8)\n"
 "alebo zmeňte písanie mena autora."
 
 #: src/Chktex.cpp:65
@@ -28634,7 +28642,7 @@ msgid ""
 "them only if you trust the origin/sender of the LyX document!</b></p>"
 msgstr ""
 "<p>Chcete aby LaTeX backendy umožňovali spúšťať externé príkazy?</"
-"p><p><b>Povoľte len keď dôverujete pôvodu/odosielateľovi tohto LyX dokumenta!"
+"p><p><b>Povoľte len keď dôverujete pôvodu/odosielateľovi tohto LyX dokumentu!"
 "</b></p> "
 
 #: src/Converter.cpp:369
@@ -28643,7 +28651,7 @@ msgid ""
 "origin/sender of the LyX document!</b></p>"
 msgstr ""
 "<p>Chcete tento konvertor spustiť?</p><p><b>Spustite len keď dôverujete "
-"pôvodu/odosielateľovi tohto LyX dokumenta!</b></p> "
+"pôvodu/odosielateľovi tohto LyX dokumentu!</b></p> "
 
 #: src/Converter.cpp:367
 msgid "Do &not allow"
@@ -28882,7 +28890,7 @@ msgid ""
 "Do you want to add it to the document's branch list?"
 msgstr ""
 "Vlepená vetva %1$s nie je definovaná.\n"
-"Chcete ju uložiť do zoznamu vetiev tohto dokumenta?"
+"Chcete ju uložiť do zoznamu vetiev tohto dokumentu?"
 
 #: src/CutAndPaste.cpp:440
 msgid "Unknown branch"
@@ -29546,7 +29554,7 @@ msgid ""
 "Specify an alternate language. The default is to use the language of the "
 "document."
 msgstr ""
-"Nastavenie alternatívneho jazyka. Implicitne sa použije jazyk dokumenta."
+"Nastavenie alternatívneho jazyka. Implicitne sa použije jazyk dokumentu."
 
 #: src/LyXRC.cpp:3046
 msgid ""
@@ -29641,7 +29649,7 @@ msgid ""
 "document. Set to true if you prefer to scroll the bottom of the document to "
 "the top of the screen"
 msgstr ""
-"LyX normálne nepovoľuje skrolovať pod koniec dokumenta. Nastavte túto voľbu, "
+"LyX normálne nepovoľuje skrolovať pod koniec dokumentu. Nastavte túto voľbu, "
 "ak preferujete skrolovať koniec až na vrchol obrazovky"
 
 #: src/LyXRC.cpp:3111
@@ -29750,12 +29758,12 @@ msgstr ""
 msgid ""
 "Select if a language switching command is needed at the beginning of the "
 "document."
-msgstr "Vyberte, ak je príkaz pre zmenu jazyku potrebný na začiatku dokumenta."
+msgstr "Vyberte, ak je príkaz pre zmenu jazyku potrebný na začiatku dokumentu."
 
 #: src/LyXRC.cpp:3259
 msgid ""
 "Select if a language switching command is needed at the end of the document."
-msgstr "Vyberte, ak je príkaz pre zmenu jazyku potrebný na konci dokumenta."
+msgstr "Vyberte, ak je príkaz pre zmenu jazyku potrebný na konci dokumentu."
 
 #: src/LyXRC.cpp:3263
 msgid ""
@@ -29763,12 +29771,12 @@ msgid ""
 "language. E.g. \\selectlanguage{$$lang} where $$lang is substituted by the "
 "name of the second language."
 msgstr ""
-"LaTeX príkaz pre zmenu z jazyka dokumenta do iného jazyka. Napr. "
+"LaTeX príkaz pre zmenu z jazyka dokumentu do iného jazyka. Napr. "
 "\\selectlanguage{$$lang}, kde $$lang je nahradené názvom druhého jazyka."
 
 #: src/LyXRC.cpp:3267
 msgid "The LaTeX command for changing back to the language of the document."
-msgstr "LaTeX-ov príkaz pre návrat k pôvodnému jazyku dokumenta."
+msgstr "LaTeX-ov príkaz pre návrat k pôvodnému jazyku dokumentu."
 
 #: src/LyXRC.cpp:3199
 msgid "The LaTeX command for local changing of the language."
@@ -29794,7 +29802,7 @@ msgid ""
 "De-select if you don't want babel to be used when the language of the "
 "document is the default language."
 msgstr ""
-"Zrušte výber ak nechcete použiť babel, ak jazyk dokumenta je prednastavený "
+"Zrušte výber ak nechcete použiť babel, ak jazyk dokumentu je prednastavený "
 "jazyk."
 
 #: src/LyXRC.cpp:3215
@@ -29814,7 +29822,7 @@ msgid ""
 "Select to control the highlighting of words with a language foreign to that "
 "of the document."
 msgstr ""
-"Vyberte pre kontrolu vyzdvihnutia slov ktoré nie sú v jazyku dokumenta."
+"Vyberte pre kontrolu vyzdvihnutia slov ktoré nie sú v jazyku dokumentu."
 
 #: src/LyXRC.cpp:3235
 msgid "The scrolling speed of the mouse wheel."
@@ -29914,7 +29922,7 @@ msgid ""
 "the document (yes), hide it (no), or ask the user (ask)."
 msgstr ""
 "Definuje čo by sa malo robiť pri zavieraní posledného náhľadu otvoreného "
-"dokumenta. LyX by mal zavrieť dokument(yes), skryť ho(no), alebo pýtať sa čo "
+"dokumentu. LyX by mal zavrieť dokument(yes), skryť ho(no), alebo pýtať sa čo "
 "zrobiť(ask)."
 
 #: src/LyXRC.cpp:3322
@@ -29997,7 +30005,7 @@ msgid ""
 msgstr ""
 "Určite adresári, ktoré by mali byť pridané do premennej TEXINPUTS pred "
 "ostatnými adresármi.\n"
-"'.' reprezentuje aktuálny adresár dokumenta. Použite miestny formát pre daný "
+"'.' reprezentuje aktuálny adresár dokumentu. Použite miestny formát pre daný "
 "operačný systém."
 
 #: src/LyXRC.cpp:3390
@@ -30082,14 +30090,14 @@ msgid ""
 "\n"
 "Do you want to revert to the older version?"
 msgstr ""
-"Návrat k uloženej verzii dokumenta %1$s znamená stratu všetkých súčasných "
+"Návrat k uloženej verzii dokumentu %1$s znamená stratu všetkých súčasných "
 "zmien.\n"
 "\n"
 "Chcete prejsť späť k staršej uloženej verzii ?"
 
 #: src/LyXVC.cpp:309
 msgid "Revert to stored version of document?"
-msgstr "Vrátiť sa k uloženej verzii dokumenta?"
+msgstr "Vrátiť sa k uloženej verzii dokumentu?"
 
 #: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4241
 msgid "&Revert"
@@ -30749,7 +30757,7 @@ msgid ""
 "%1$s\n"
 "could not be read."
 msgstr ""
-"Požadovaná šablóna dokumenta\n"
+"Požadovaná šablóna dokumentu\n"
 "%1$s\n"
 "sa nedá čítať."
 
@@ -30887,7 +30895,7 @@ msgstr "Triedny štandard"
 
 #: src/frontends/qt/FloatPlacement.cpp:184
 msgid "Document Default"
-msgstr "Štandardné nastavenia dokumenta"
+msgstr "Štandardné nastavenia dokumentu"
 
 #: src/frontends/qt/FloatPlacement.h:38 src/frontends/qt/GuiDocument.cpp:1775
 msgid "Float Settings"
@@ -31146,11 +31154,11 @@ msgstr "\"%1$s\" uplatnené pre %2$d dokument(y)"
 #: src/frontends/qt/GuiApplication.cpp:2230
 #, c-format
 msgid "Document defaults saved in %1$s"
-msgstr "Štandardy dokumenta uložené v %1$s"
+msgstr "Štandardy dokumentu uložené v %1$s"
 
 #: src/frontends/qt/GuiApplication.cpp:2234
 msgid "Unable to save document defaults"
-msgstr "Nedajú sa uložiť štandardné definície dokumenta"
+msgstr "Nedajú sa uložiť štandardné definície dokumentu"
 
 #: src/frontends/qt/GuiApplication.cpp:2417
 #: src/frontends/qt/GuiApplication.cpp:2432
@@ -31273,9 +31281,9 @@ msgstr ""
 "texmf-strome. Na tomto mieste by mala ležať aj vaša vlastná databáza keď ju "
 "chcete použiť. "
 
-#: src/frontends/qt/GuiBibtex.cpp:136 src/frontends/qt/GuiBibtex.cpp:303
+#: src/frontends/qt/GuiBibtex.cpp:139 src/frontends/qt/GuiBibtex.cpp:350
 msgid "Document Encoding"
-msgstr "Kódovanie dokumenta"
+msgstr "Kódovanie dokumentu"
 
 #: src/frontends/qt/GuiBibtex.cpp:274
 msgid "Database"
@@ -31835,7 +31843,7 @@ msgstr "Použiť kódovanie ako pôvodne špecificky odkázané jazykom."
 
 #: src/frontends/qt/GuiDocument.cpp:1003
 msgid "Select a custom, document-wide encoding."
-msgstr "Vyberte vlastné kódovanie tohto dokumenta."
+msgstr "Vyberte vlastné kódovanie tohto dokumentu."
 
 #: src/frontends/qt/GuiDocument.cpp:1002
 msgid "Standard Unicode support by the ``inputenc'' package."
@@ -32108,7 +32116,7 @@ msgstr ""
 
 #: src/frontends/qt/GuiDocument.cpp:1773
 msgid "Document Class"
-msgstr "Trieda dokumenta"
+msgstr "Trieda dokumentu"
 
 #: src/frontends/qt/GuiDocument.cpp:1762
 msgid "Local Layout"
@@ -32230,7 +32238,7 @@ msgstr ""
 "Súbor schémy, ktorý ste zvolili je lokálnym\n"
 "súborom, a nie je ani v systémovom ani v užívateľskom adresáre.\n"
 "Váš dokument bude mať problémy kým súbor schémy\n"
-"nedržíte v adresáre dokumenta."
+"nedržíte v adresáre dokumentu."
 
 #: src/frontends/qt/GuiDocument.cpp:2834
 msgid "&Set Layout"
@@ -32314,7 +32322,7 @@ msgstr "%1$s (nedostupný)"
 
 #: src/frontends/qt/GuiDocument.cpp:3276
 msgid "Module provided by document class."
-msgstr "Modul poskytnutý triedou dokumenta."
+msgstr "Modul poskytnutý triedou dokumentu."
 
 #: src/frontends/qt/GuiDocument.cpp:3269
 #, c-format
@@ -32414,8 +32422,8 @@ msgid ""
 "'%1$s' in order to use the master document\n"
 "feature."
 msgstr ""
-"Musíte zahrnúť tento súbor do dokumenta\n"
-"'%1$s' keď chcete používať vlastnosti hlavného dokumenta."
+"Musíte zahrnúť tento súbor do dokumentu\n"
+"'%1$s' keď chcete používať vlastnosti hlavného dokumentu."
 
 #: src/frontends/qt/GuiDocument.cpp:5009
 msgid "Could not load master"
@@ -32757,7 +32765,7 @@ msgstr "Čas (Pevný)"
 
 #: src/frontends/qt/GuiInfo.cpp:76
 msgid "Document Information"
-msgstr "Informácie dokumenta"
+msgstr "Informácie dokumentu"
 
 #: src/frontends/qt/GuiInfo.cpp:77
 msgid "Version Control Information"
@@ -33416,7 +33424,7 @@ msgstr "Oxygen"
 
 #: src/frontends/qt/GuiPrefs.cpp:2682
 msgid "Document Handling"
-msgstr "Ovládanie dokumenta"
+msgstr "Ovládanie dokumentu"
 
 #: src/frontends/qt/GuiPrefs.cpp:2740
 msgid "Control"
@@ -33629,7 +33637,7 @@ msgstr "Kontrola pravopisu vo výbere skončila, nenašli sa žiadne chyby."
 msgid ""
 "We reached the end of the document, would you like to continue from the "
 "beginning?"
-msgstr "Došli sme na koniec dokumenta, chcete pokračovať od začiatku?"
+msgstr "Došli sme na koniec dokumentu, chcete pokračovať od začiatku?"
 
 #: src/frontends/qt/GuiSpellchecker.cpp:560
 msgid "Spell checker has no dictionaries."
@@ -34269,7 +34277,7 @@ msgid ""
 "Do you want to create it?"
 msgstr ""
 "Navrhuje sa uložiť šablónu do pod-adresára\n"
-"vhodné pre jazyk dokumenta (%1$s).\n"
+"vhodné pre jazyk dokumentu (%1$s).\n"
 "Tento pod-adresár ešte neexistuje.\n"
 "Chcete ho vytvoriť?"
 
@@ -34406,7 +34414,7 @@ msgid ""
 "To remove this question, set your preference in:\n"
 "  Tools->Preferences->Look&Feel->UserInterface\n"
 msgstr ""
-"Posledný náhľad dokumenta %1$s sa zaviera.\n"
+"Posledný náhľad dokumentu %1$s sa zaviera.\n"
 "Chcete ho zavrieť alebo len skryť?\n"
 "\n"
 "Skryté dokumenty možno zase vidieť cez\n"
@@ -34550,7 +34558,7 @@ msgstr "Chyba pri exporte"
 
 #: src/frontends/qt/GuiView.cpp:4088
 msgid "Error cloning the Buffer."
-msgstr "Chyba pri klonovaní pamäte dokumenta."
+msgstr "Chyba pri klonovaní pamäte dokumentu."
 
 #: src/frontends/qt/GuiView.cpp:4044 src/frontends/qt/GuiView.cpp:4064
 msgid "Exporting ..."
@@ -34579,7 +34587,7 @@ msgid ""
 "on disk of the document %1$s?"
 msgstr ""
 "Bude to strata aktuálnej verzie. Naozaj sa chcete vrátiť ku uloženej verzii "
-"dokumenta %1$s?"
+"dokumentu %1$s?"
 
 #: src/frontends/qt/GuiView.cpp:4431
 #, c-format
@@ -34588,7 +34596,7 @@ msgid ""
 "version of the document %1$s?"
 msgstr ""
 "Všetky zmeny sa stratia. Naozaj sa chcete vrátiť ku pôvodnej verzii "
-"dokumenta %1$s ?"
+"dokumentu %1$s ?"
 
 #: src/frontends/qt/GuiView.cpp:4239
 msgid "Revert to saved document?"
@@ -34791,7 +34799,7 @@ msgstr "(Niet vlastných definovaných vložiek)"
 
 #: src/frontends/qt/Menus.cpp:1355
 msgid "(No Document Open)"
-msgstr "(Bez otvoreného dokumenta)"
+msgstr "(Bez otvoreného dokumentu)"
 
 #: src/frontends/qt/Menus.cpp:1348
 msgid "Master Document"
@@ -34915,7 +34923,7 @@ msgstr "nemenné"
 #: src/frontends/qt/Menus.cpp:1965
 #, c-format
 msgid "Reset to document default (%1$s, %2$s)|o"
-msgstr "Nastaviť na štandard dokumenta (%1$s, %2$s)|o"
+msgstr "Nastaviť na štandard dokumentu (%1$s, %2$s)|o"
 
 #: src/frontends/qt/Menus.cpp:1913
 #, c-format
@@ -36654,11 +36662,11 @@ msgstr ""
 
 #: src/lyxfind.cpp:364
 msgid "Search reached end of document, continuing from beginning."
-msgstr "Hľadanie došlo na koniec dokumenta, pokračuje od začiatku."
+msgstr "Hľadanie došlo na koniec dokumentu, pokračuje od začiatku."
 
 #: src/lyxfind.cpp:365
 msgid "Search reached beginning of document, continuing from end."
-msgstr "Hľadanie došlo na začiatok dokumenta, pokračuje od konca."
+msgstr "Hľadanie došlo na začiatok dokumentu, pokračuje od konca."
 
 #: src/lyxfind.cpp:657
 msgid "String not found in selection."
@@ -37190,7 +37198,7 @@ msgstr ""
 
 #: src/support/lassert.cpp:84
 msgid "Buffer Error!"
-msgstr "Chyba v pamäti dokumenta!"
+msgstr "Chyba v pamäti dokumentu!"
 
 #: src/support/lassert.cpp:91
 msgid ""

commit ac0cd0e6605b6b80bfea66e710ce55579ac51bcb
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Feb 19 14:32:04 2022 +0100

    de.po

diff --git a/po/de.po b/po/de.po
index 010afda..43362d9 100644
--- a/po/de.po
+++ b/po/de.po
@@ -94,8 +94,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.4git\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-17 08:23+0100\n"
-"PO-Revision-Date: 2022-02-17 08:53+0100\n"
+"POT-Creation-Date: 2022-02-19 14:24+0100\n"
+"PO-Revision-Date: 2022-02-19 14:31+0100\n"
 "Last-Translator: Jürgen Spitzmüller <spitz at lyx.org>\n"
 "Language-Team: Deutsch <lyx-docs at lists.lyx.org>\n"
 "Language: de\n"
@@ -395,54 +395,62 @@ msgid "Add &Local..."
 msgstr "Lokale &hinzufügen..."
 
 #: src/frontends/qt/ui/BibtexUi.ui:91
+msgid "Inherit bibliography databases from the master document"
+msgstr "Datenbanken aus dem Hauptdokument übernehmen"
+
+#: src/frontends/qt/ui/BibtexUi.ui:94
+msgid "&Inherit from Master"
+msgstr "Vom Hau&ptdokument"
+
+#: src/frontends/qt/ui/BibtexUi.ui:101
 msgid "Remove the selected database"
 msgstr "Die ausgewählte Datenbank entfernen"
 
-#: src/frontends/qt/ui/BibtexUi.ui:94 src/frontends/qt/ui/CitationUi.ui:159
+#: src/frontends/qt/ui/BibtexUi.ui:104 src/frontends/qt/ui/CitationUi.ui:159
 msgid "&Delete"
 msgstr "&Löschen"
 
-#: src/frontends/qt/ui/BibtexUi.ui:107
+#: src/frontends/qt/ui/BibtexUi.ui:117
 msgid "Move the selected database up (Ctrl-Up)"
 msgstr "Ausgewählte Datenbank nach oben verschieben (Strg+Hoch)"
 
-#: src/frontends/qt/ui/BibtexUi.ui:110 src/frontends/qt/ui/CitationUi.ui:191
+#: src/frontends/qt/ui/BibtexUi.ui:120 src/frontends/qt/ui/CitationUi.ui:191
 #: src/frontends/qt/ui/ModulesUi.ui:140
 msgid "&Up"
 msgstr "Rau&f"
 
-#: src/frontends/qt/ui/BibtexUi.ui:130
+#: src/frontends/qt/ui/BibtexUi.ui:140
 msgid "Move the selected database down (Ctrl-Down)"
 msgstr "Ausgewählte Datenbank nach unten verschieben (Strg+Runter)"
 
-#: src/frontends/qt/ui/BibtexUi.ui:133 src/frontends/qt/ui/CitationUi.ui:214
+#: src/frontends/qt/ui/BibtexUi.ui:143 src/frontends/qt/ui/CitationUi.ui:214
 #: src/frontends/qt/ui/ModulesUi.ui:147
 msgid "Do&wn"
 msgstr "Run&ter"
 
-#: src/frontends/qt/ui/BibtexUi.ui:160
+#: src/frontends/qt/ui/BibtexUi.ui:170
 msgid "Edit selected database externally"
 msgstr "Ausgewählte Datenbanken extern bearbeiten"
 
-#: src/frontends/qt/ui/BibtexUi.ui:163
+#: src/frontends/qt/ui/BibtexUi.ui:173
 msgid "&Edit..."
 msgstr "&Bearbeiten..."
 
-#: src/frontends/qt/ui/BibtexUi.ui:191
+#: src/frontends/qt/ui/BibtexUi.ui:201
 msgid "Sele&cted:"
 msgstr "Ausg&ewählt:"
 
-#: src/frontends/qt/ui/BibtexUi.ui:208 src/frontends/qt/ui/CitationUi.ui:27
+#: src/frontends/qt/ui/BibtexUi.ui:218 src/frontends/qt/ui/CitationUi.ui:27
 #: src/frontends/qt/ui/ModulesUi.ui:76 src/frontends/qt/ui/RefUi.ui:39
 #: src/frontends/qt/ui/TocUi.ui:345
 msgid "&Filter:"
 msgstr "&Filter:"
 
-#: src/frontends/qt/ui/BibtexUi.ui:238 src/frontends/qt/GuiBibtex.cpp:288
+#: src/frontends/qt/ui/BibtexUi.ui:248 src/frontends/qt/GuiBibtex.cpp:335
 msgid "E&ncoding:"
 msgstr "&Kodierung:"
 
-#: src/frontends/qt/ui/BibtexUi.ui:248 src/frontends/qt/GuiBibtex.cpp:289
+#: src/frontends/qt/ui/BibtexUi.ui:258 src/frontends/qt/GuiBibtex.cpp:336
 msgid ""
 "If your bibliography databases use a different encoding than the LyX "
 "document, specify it here"
@@ -450,27 +458,27 @@ msgstr ""
 "Falls Ihre Literatur-Datenbanken eine andere Kodierung verwenden als das LyX-"
 "Dokument, geben Sie diese hier an."
 
-#: src/frontends/qt/ui/BibtexUi.ui:260
+#: src/frontends/qt/ui/BibtexUi.ui:270
 msgid "The BibTeX style"
 msgstr "Der BibTeX-Stil"
 
-#: src/frontends/qt/ui/BibtexUi.ui:263
+#: src/frontends/qt/ui/BibtexUi.ui:273
 msgid "St&yle"
 msgstr "&Stil"
 
-#: src/frontends/qt/ui/BibtexUi.ui:275
+#: src/frontends/qt/ui/BibtexUi.ui:285
 msgid "Choose a style file"
 msgstr "Wählen Sie eine Stildatei"
 
-#: src/frontends/qt/ui/BibtexUi.ui:288
+#: src/frontends/qt/ui/BibtexUi.ui:298
 msgid "Select a style file from your local directory"
 msgstr "Wählt einen Stil aus einem lokalen Ordner"
 
-#: src/frontends/qt/ui/BibtexUi.ui:291
+#: src/frontends/qt/ui/BibtexUi.ui:301
 msgid "Add L&ocal..."
 msgstr "L&okalen hinzufügen..."
 
-#: src/frontends/qt/ui/BibtexUi.ui:304 lib/layouts/beamer.layout:520
+#: src/frontends/qt/ui/BibtexUi.ui:314 lib/layouts/beamer.layout:520
 #: lib/layouts/beamer.layout:549 lib/layouts/beamer.layout:560
 #: lib/layouts/beamer.layout:588 lib/layouts/beamer.layout:691
 #: lib/layouts/chessboard.module:31 lib/layouts/chessboard.module:61
@@ -483,42 +491,42 @@ msgstr "L&okalen hinzufügen..."
 msgid "Options"
 msgstr "Optionen"
 
-#: src/frontends/qt/ui/BibtexUi.ui:321 src/frontends/qt/ui/BibtexUi.ui:334
+#: src/frontends/qt/ui/BibtexUi.ui:331 src/frontends/qt/ui/BibtexUi.ui:344
 msgid "This bibliography section contains..."
 msgstr "Dieser Abschnitt des Literaturverzeichnisses enthält..."
 
-#: src/frontends/qt/ui/BibtexUi.ui:324
+#: src/frontends/qt/ui/BibtexUi.ui:334
 msgid "&Content:"
 msgstr "&Inhalt:"
 
-#: src/frontends/qt/ui/BibtexUi.ui:338 src/frontends/qt/GuiBibtex.cpp:355
+#: src/frontends/qt/ui/BibtexUi.ui:348 src/frontends/qt/GuiBibtex.cpp:404
 #: src/insets/InsetBibtex.cpp:218 src/insets/InsetBibtex.cpp:236
 msgid "all cited references"
 msgstr "alle zitierten Literatureinträge"
 
-#: src/frontends/qt/ui/BibtexUi.ui:343 src/frontends/qt/GuiBibtex.cpp:357
+#: src/frontends/qt/ui/BibtexUi.ui:353 src/frontends/qt/GuiBibtex.cpp:406
 #: src/insets/InsetBibtex.cpp:216
 msgid "all uncited references"
 msgstr "alle nicht zitierten Literatureinträge"
 
-#: src/frontends/qt/ui/BibtexUi.ui:348 src/frontends/qt/GuiBibtex.cpp:358
+#: src/frontends/qt/ui/BibtexUi.ui:358 src/frontends/qt/GuiBibtex.cpp:407
 #: src/insets/InsetBibtex.cpp:214 src/insets/InsetBibtex.cpp:234
 msgid "all references"
 msgstr "alle Literatureinträge"
 
-#: src/frontends/qt/ui/BibtexUi.ui:356
+#: src/frontends/qt/ui/BibtexUi.ui:366
 msgid "Add bibliography to the table of contents"
 msgstr "Literaturverzeichnis im Inhaltsverzeichnis aufführen"
 
-#: src/frontends/qt/ui/BibtexUi.ui:359
+#: src/frontends/qt/ui/BibtexUi.ui:369
 msgid "Add bibliography to &TOC"
 msgstr "Literatur&verzeichnis ins Inhaltsverzeichnis"
 
-#: src/frontends/qt/ui/BibtexUi.ui:383
+#: src/frontends/qt/ui/BibtexUi.ui:393
 msgid "Custo&m:"
 msgstr "Benut&zerdefiniert:"
 
-#: src/frontends/qt/ui/BibtexUi.ui:393
+#: src/frontends/qt/ui/BibtexUi.ui:403
 msgid ""
 "Options to the biblatex bibliography command. See the biblatex manual for "
 "details."
@@ -526,11 +534,11 @@ msgstr ""
 "Optionen des Biblatex-Bibliographiebefehls. Konsultieren Sie das Biblatex-"
 "Handbuch für Einzelheiten."
 
-#: src/frontends/qt/ui/BibtexUi.ui:422
+#: src/frontends/qt/ui/BibtexUi.ui:432
 msgid "Scan for new databases and styles"
 msgstr "Überprüfe auf neue Datenbanken und Stildateien"
 
-#: src/frontends/qt/ui/BibtexUi.ui:425 src/frontends/qt/ui/TexinfoUi.ui:144
+#: src/frontends/qt/ui/BibtexUi.ui:435 src/frontends/qt/ui/TexinfoUi.ui:144
 msgid "&Rescan"
 msgstr "&Auffrischen"
 
@@ -27220,16 +27228,16 @@ msgstr "Einfaches Gitter"
 msgid "%1$s[[name]] (%2$s[[email]])"
 msgstr "%1$s[[Name]] (%2$s[[Email]])"
 
-#: src/BiblioInfo.cpp:871 src/BiblioInfo.cpp:921 src/BiblioInfo.cpp:932
-#: src/BiblioInfo.cpp:987 src/BiblioInfo.cpp:991
+#: src/BiblioInfo.cpp:877 src/BiblioInfo.cpp:927 src/BiblioInfo.cpp:938
+#: src/BiblioInfo.cpp:993 src/BiblioInfo.cpp:997
 msgid "ERROR!"
 msgstr "FEHLER!"
 
-#: src/BiblioInfo.cpp:1395
+#: src/BiblioInfo.cpp:1401
 msgid "No year"
 msgstr "Kein Jahr"
 
-#: src/BiblioInfo.cpp:1405
+#: src/BiblioInfo.cpp:1411
 msgid "Bibliography entry not found!"
 msgstr "Literaturverzeichnis-Eintrag nicht gefunden!"
 
@@ -29455,32 +29463,32 @@ msgstr "Indexprozessor-Fehler"
 #: src/LaTeX.cpp:439
 msgid ""
 "The index processor did not run successfully. Please check the output of "
-"View > Messages!"
+"View > Messages Pane!"
 msgstr ""
 "Der Durchlauf des Index-Prozessors war nicht erfolgreich. Bitte prüfen Sie "
 "die Ausgabe von Ansicht > Statusmeldungen!"
 
-#: src/LaTeX.cpp:598
+#: src/LaTeX.cpp:599
 msgid "Running Nomenclature Processor."
 msgstr "Nomenklatur-Prozessor wird ausgeführt."
 
-#: src/LaTeX.cpp:1102
+#: src/LaTeX.cpp:1103
 msgid "(NOTE: The erroneous command is in the preamble)"
 msgstr "(ACHTUNG: Der fehlerhafte Befehl befindet sich in der Präambel)"
 
-#: src/LaTeX.cpp:1594 src/LaTeX.cpp:1600 src/LaTeX.cpp:1609
+#: src/LaTeX.cpp:1595 src/LaTeX.cpp:1601 src/LaTeX.cpp:1610
 msgid "BibTeX error: "
 msgstr "BibTeX-Fehler: "
 
-#: src/LaTeX.cpp:1616
+#: src/LaTeX.cpp:1617
 msgid "Biber error: "
 msgstr "Biber-Fehler: "
 
-#: src/LaTeX.cpp:1643
+#: src/LaTeX.cpp:1644
 msgid "Makeindex error: "
 msgstr "Makeindex-Fehler: "
 
-#: src/LaTeX.cpp:1652
+#: src/LaTeX.cpp:1653
 msgid "Xindy error: "
 msgstr "Xindy-Fehler: "
 
@@ -31640,15 +31648,15 @@ msgstr ""
 msgid "Bibliography Item Settings"
 msgstr "Literatureintrag-Einstellungen"
 
-#: src/frontends/qt/GuiBibtex.cpp:57 src/frontends/qt/GuiBibtex.cpp:344
+#: src/frontends/qt/GuiBibtex.cpp:58 src/frontends/qt/GuiBibtex.cpp:391
 msgid "BibTeX Bibliography"
 msgstr "BibTeX-Literaturverzeichnis"
 
-#: src/frontends/qt/GuiBibtex.cpp:68
+#: src/frontends/qt/GuiBibtex.cpp:69
 msgid "All avail. databases"
 msgstr "Alle verf. Datenbanken"
 
-#: src/frontends/qt/GuiBibtex.cpp:116
+#: src/frontends/qt/GuiBibtex.cpp:119
 msgid ""
 "This list consists of all databases that are indexed by LaTeX and thus are "
 "found without a file path. This is usually everything in the bib/ "
@@ -31661,23 +31669,23 @@ msgstr ""
 "Sie Ihre eigenen Datenbanken in verschiedenen Dokumenten verwenden wollen, "
 "ist dies der Ort, an dem Sie sie ablegen sollten."
 
-#: src/frontends/qt/GuiBibtex.cpp:136 src/frontends/qt/GuiBibtex.cpp:303
+#: src/frontends/qt/GuiBibtex.cpp:139 src/frontends/qt/GuiBibtex.cpp:350
 msgid "Document Encoding"
 msgstr "Dokumentkodierung"
 
-#: src/frontends/qt/GuiBibtex.cpp:274
+#: src/frontends/qt/GuiBibtex.cpp:321
 msgid "Database"
 msgstr "Datenbank"
 
-#: src/frontends/qt/GuiBibtex.cpp:275
+#: src/frontends/qt/GuiBibtex.cpp:322
 msgid "File Encoding"
 msgstr "Datei-Kodierung"
 
-#: src/frontends/qt/GuiBibtex.cpp:282
+#: src/frontends/qt/GuiBibtex.cpp:329
 msgid "General E&ncoding:"
 msgstr "Allgemeine &Kodierung:"
 
-#: src/frontends/qt/GuiBibtex.cpp:283
+#: src/frontends/qt/GuiBibtex.cpp:330
 msgid ""
 "If your bibliography databases use a different encoding than the LyX "
 "document, specify it here. If indivivual databases have different encodings, "
@@ -31688,11 +31696,11 @@ msgstr ""
 "Sollten einzelne Datenbanken unterschiedlich kodiert sein, können Sie dies "
 "in der Liste oben spezifizieren."
 
-#: src/frontends/qt/GuiBibtex.cpp:302
+#: src/frontends/qt/GuiBibtex.cpp:349
 msgid "General Encoding"
 msgstr "Allgemeine Kodierung"
 
-#: src/frontends/qt/GuiBibtex.cpp:309
+#: src/frontends/qt/GuiBibtex.cpp:356
 msgid ""
 "If this bibliography database uses a different encoding than specified "
 "below, set it here"
@@ -31700,15 +31708,15 @@ msgstr ""
 "Falls diese Literatur-Datenbank eine andere Kodierung verwendet als unten "
 "angegeben, spezifizieren Sie diese hier."
 
-#: src/frontends/qt/GuiBibtex.cpp:342
+#: src/frontends/qt/GuiBibtex.cpp:389
 msgid "Biblatex Bibliography"
 msgstr "Biblatex-Literaturverzeichnis"
 
-#: src/frontends/qt/GuiBibtex.cpp:360 src/insets/InsetBibtex.cpp:232
+#: src/frontends/qt/GuiBibtex.cpp:409 src/insets/InsetBibtex.cpp:232
 msgid "all reference units"
 msgstr "alle Literaturverzeichnisse"
 
-#: src/frontends/qt/GuiBibtex.cpp:456 src/frontends/qt/GuiBibtex.cpp:466
+#: src/frontends/qt/GuiBibtex.cpp:505 src/frontends/qt/GuiBibtex.cpp:515
 #: src/frontends/qt/GuiCompare.cpp:163 src/frontends/qt/GuiCompare.cpp:167
 #: src/frontends/qt/GuiDocument.cpp:2903 src/frontends/qt/GuiExternal.cpp:677
 #: src/frontends/qt/GuiGraphics.cpp:826 src/frontends/qt/GuiInclude.cpp:380
@@ -31719,19 +31727,19 @@ msgstr "alle Literaturverzeichnisse"
 msgid "D&ocuments"
 msgstr "Do&kumente"
 
-#: src/frontends/qt/GuiBibtex.cpp:458
+#: src/frontends/qt/GuiBibtex.cpp:507
 msgid "BibTeX Databases (*.bib)"
 msgstr "BibTeX-Datenbanken (*.bib)"
 
-#: src/frontends/qt/GuiBibtex.cpp:460
+#: src/frontends/qt/GuiBibtex.cpp:509
 msgid "Select a BibTeX database to add"
 msgstr "Wählen Sie eine hinzuzufügende BibTeX-Datenbank"
 
-#: src/frontends/qt/GuiBibtex.cpp:468
+#: src/frontends/qt/GuiBibtex.cpp:517
 msgid "BibTeX Styles (*.bst)"
 msgstr "BibTeX-Stile (*.bst)"
 
-#: src/frontends/qt/GuiBibtex.cpp:470
+#: src/frontends/qt/GuiBibtex.cpp:519
 msgid "Select a BibTeX style"
 msgstr "Wählen Sie einen BibTeX-Stil"
 

commit 8fa7e27e7ef78f3529be63c5c98c6ad4beb541ef
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Feb 19 14:09:59 2022 +0100

    child documents: allow inheritance of bibliography file list (#4427)

diff --git a/src/Buffer.h b/src/Buffer.h
index 332ef86..0d79ffa 100644
--- a/src/Buffer.h
+++ b/src/Buffer.h
@@ -784,6 +784,10 @@ public:
 	void registerBibfiles(docstring_list const & bf) const;
 	///
 	support::FileName getBibfilePath(docstring const & bibid) const;
+	/// Return the list with all bibfiles in use (including bibfiles
+	/// of loaded child documents).
+	docstring_list const &
+		getBibfiles(UpdateScope scope = UpdateMaster) const;
 
 	/// routines for dealing with possible self-inclusion
 	void pushIncludedBuffer(Buffer const * buf) const;
@@ -807,10 +811,6 @@ private:
 	/// last time we loaded the cache. Note that this does NOT update the
 	/// cached information.
 	void checkIfBibInfoCacheIsValid() const;
-	/// Return the list with all bibfiles in use (including bibfiles
-	/// of loaded child documents).
-	docstring_list const &
-		getBibfiles(UpdateScope scope = UpdateMaster) const;
 	///
 	void collectChildren(ListOfBuffers & children, bool grand_children) const;
 
diff --git a/src/frontends/qt/GuiBibtex.cpp b/src/frontends/qt/GuiBibtex.cpp
index 64bb987..3c71884 100644
--- a/src/frontends/qt/GuiBibtex.cpp
+++ b/src/frontends/qt/GuiBibtex.cpp
@@ -34,6 +34,7 @@
 #include "insets/InsetBibtex.h"
 
 #include "support/debug.h"
+#include "support/docstring_list.h"
 #include "support/ExceptionMessage.h"
 #include "support/FileName.h"
 #include "support/filetools.h" // changeExtension
@@ -88,6 +89,8 @@ GuiBibtex::GuiBibtex(GuiView & lv)
 		this, SLOT(change_adaptor()));
 	connect(browseBibPB, SIGNAL(clicked()),
 		this, SLOT(browseBibPressed()));
+	connect(inheritPB, SIGNAL(clicked()),
+		this, SLOT(inheritPressed()));
 
 	selected_model_.insertColumns(0, 1);
 	selectionManager = new GuiSelectionManager(this, availableLV, selectedLV,
@@ -178,6 +181,7 @@ void GuiBibtex::setButtons()
 	int const srows = selectedLV->model()->rowCount();
 	buttonBox->button(QDialogButtonBox::Apply)->setEnabled(srows > 0);
 	buttonBox->button(QDialogButtonBox::Ok)->setEnabled(srows > 0);
+	inheritPB->setEnabled(hasInherits());
 }
 
 
@@ -240,6 +244,49 @@ void GuiBibtex::browseBibPressed()
 }
 
 
+bool GuiBibtex::hasInherits()
+{
+	if (!buffer().parent())
+		return false;
+
+	docstring_list const mbibs = buffer().masterBuffer()->getBibfiles();
+	if (mbibs.empty())
+		return false;
+
+	for (auto const & f : mbibs) {
+		if (!selected_bibs_.contains(toqstr(f)))
+			return true;
+	}
+	return false;
+}
+
+
+void GuiBibtex::inheritPressed()
+{
+	docstring_list const mbibs = buffer().masterBuffer()->getBibfiles();
+	bool chng = false;
+	vector<docstring> nfe;
+	for (auto const & f : mbibs) {
+		if (!selected_bibs_.contains(toqstr(f))) {
+			selected_bibs_.append(toqstr(f));
+			setSelectedBibs(selected_bibs_);
+			string enc;
+			if (usingBiblatex()) {
+				string const bfe = buffer().masterParams().bibFileEncoding(to_utf8(f));
+				if (!bfe.empty())
+					nfe.push_back(f + " " + from_utf8(bfe));
+			}
+			chng = true;
+		}
+	}
+	if (chng) {
+		if (!nfe.empty())
+			setFileEncodings(nfe);
+		change_adaptor();
+	}
+}
+
+
 void GuiBibtex::on_editPB_clicked()
 {
 	QModelIndexList selIdx =
@@ -351,6 +398,8 @@ void GuiBibtex::updateContents()
 	bibtocCB->setChecked((bibtotoc() && !bibtopic) || hasbibintoc);
 	bibtocCB->setEnabled(!bibtopic && !hasbibintoc);
 
+	inheritPB->setEnabled(hasInherits());
+
 	btPrintCO->clear();
 	btPrintCO->addItem(qt_("all cited references"), toqstr("btPrintCited"));
 	if (bibtopic)
diff --git a/src/frontends/qt/GuiBibtex.h b/src/frontends/qt/GuiBibtex.h
index 2258ec9..5d54be7 100644
--- a/src/frontends/qt/GuiBibtex.h
+++ b/src/frontends/qt/GuiBibtex.h
@@ -40,6 +40,7 @@ private Q_SLOTS:
 	void on_buttonBox_accepted();
 	void browseBstPressed();
 	void browseBibPressed();
+	void inheritPressed();
 	void on_editPB_clicked();
 	void databaseChanged();
 	void rescanClicked();
@@ -99,6 +100,8 @@ private:
 	void dispatchParams() override;
 	///
 	bool isBufferDependent() const override { return true; }
+	/// Is his a child which can inherit bibs from its master?
+	bool hasInherits();
 
 private:
 	///
diff --git a/src/frontends/qt/ui/BibtexUi.ui b/src/frontends/qt/ui/BibtexUi.ui
index ac41646..ab2769d 100644
--- a/src/frontends/qt/ui/BibtexUi.ui
+++ b/src/frontends/qt/ui/BibtexUi.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>523</width>
-    <height>617</height>
+    <width>542</width>
+    <height>702</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -86,6 +86,16 @@
          </widget>
         </item>
         <item>
+         <widget class="QPushButton" name="inheritPB">
+          <property name="toolTip">
+           <string>Inherit bibliography databases from the master document</string>
+          </property>
+          <property name="text">
+           <string>&Inherit from Master</string>
+          </property>
+         </widget>
+        </item>
+        <item>
          <widget class="QPushButton" name="deletePB">
           <property name="toolTip">
            <string>Remove the selected database</string>

commit fcc139b06e31c39baf51486f697c809bec5534a2
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Feb 19 11:55:29 2022 +0100

    Consider that "and" in BibTeX name lists is case-insensitive (#10465)

diff --git a/src/BiblioInfo.cpp b/src/BiblioInfo.cpp
index 638579a..1464e70 100644
--- a/src/BiblioInfo.cpp
+++ b/src/BiblioInfo.cpp
@@ -277,8 +277,14 @@ vector<docstring> const getAuthors(docstring const & author)
 	// in author names, but can happen (consider cases such as "C \& A Corp.").
 	docstring iname = subst(author, from_ascii("&"), from_ascii("$$amp!"));
 	// Then, we temporarily make all " and " strings to ampersands in order
-	// to handle them later on a per-char level.
-	iname = subst(iname, from_ascii(" and "), from_ascii(" & "));
+	// to handle them later on a per-char level. Note that arbitrary casing
+	// ("And", "AND", "aNd", ...) is allowed in bibtex (#10465).
+	static regex const and_reg("(.* )([aA][nN][dD])( .*)");
+	smatch sub;
+	string res = to_utf8(iname);
+	while (regex_match(res, sub, and_reg))
+		res = sub.str(1) + "&" + sub.str(3);
+	iname = from_utf8(res);
 	// Now we traverse through the string and replace the "&" by the proper
 	// output in- and outside groups
 	docstring name;

commit 69ba7f1536e365e14add5630672d9538bf893fbf
Author: jpc <jpc at lyx.org>
Date:   Fri Feb 18 10:53:56 2022 +0100

               Update fr.po

diff --git a/po/fr.gmo b/po/fr.gmo
index 93d6ba4..086a872 100644
Binary files a/po/fr.gmo and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
index a342fa0..5358e99 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -362,8 +362,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-14 11:20+0100\n"
-"PO-Revision-Date: 2022-02-14 11:29+0100\n"
+"POT-Creation-Date: 2022-02-17 18:01+0100\n"
+"PO-Revision-Date: 2022-02-18 10:53+0100\n"
 "Last-Translator: Jean-Pierre Chrétien <jeanpierre.chretien at free.fr>\n"
 "Language-Team: lyxfr\n"
 "Language: fr\n"
@@ -19948,7 +19948,7 @@ msgid "Copy as Reference|R"
 msgstr "Copier comme référence|C"
 
 #: lib/ui/stdcontext.inc:61 lib/ui/stdcontext.inc:375 lib/ui/stdmenus.inc:108
-#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1571
+#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1584
 #: src/mathed/InsetMathNest.cpp:555
 msgid "Cut"
 msgstr "Couper"
@@ -19959,7 +19959,7 @@ msgid "Copy"
 msgstr "Copier"
 
 #: lib/ui/stdcontext.inc:63 lib/ui/stdcontext.inc:377 lib/ui/stdmenus.inc:110
-#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1515
+#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1528
 #: src/frontends/qt/GuiToolbar.cpp:441 src/mathed/InsetMathGrid.cpp:1565
 #: src/mathed/InsetMathNest.cpp:533
 msgid "Paste"
@@ -27599,7 +27599,7 @@ msgstr ""
 "le préambule LaTeX."
 
 #: src/Buffer.cpp:1086 src/BufferParams.cpp:475 src/frontends/qt/GuiLog.cpp:293
-#: src/insets/InsetIndex.cpp:674
+#: src/insets/InsetIndex.cpp:691
 msgid "Index"
 msgstr "Index"
 
@@ -29746,35 +29746,51 @@ msgstr "   options : "
 msgid "Waiting for LaTeX run number %1$d"
 msgstr "Attend l'exécution LaTeX n°%1$d"
 
-#: src/LaTeX.cpp:324 src/LaTeX.cpp:461
+#: src/LaTeX.cpp:328
+msgid "Running Bibliography Processor."
+msgstr "Exécution du processeur bibliographique."
+
+#: src/LaTeX.cpp:389
+msgid "Re-Running Bibliography Processor."
+msgstr "Réexécution du processeur bibliographique."
+
+#: src/LaTeX.cpp:429
 msgid "Running Index Processor."
-msgstr "Construction de l'index."
+msgstr "Exécution du processeur d'index."
 
-#: src/LaTeX.cpp:377 src/LaTeX.cpp:438
-msgid "Running BibTeX."
-msgstr "Exécution de BibTeX."
+#: src/LaTeX.cpp:438
+msgid "Index Processor Error"
+msgstr "Erreur du processeur d'index."
 
-#: src/LaTeX.cpp:611
-msgid "Running MakeIndex for nomencl."
-msgstr "Exécution de MakeIndex pour le paquetage nomencl."
+#: src/LaTeX.cpp:439
+msgid ""
+"The index processor did not run successfully. Please check the output of "
+"View > Messages Pane!"
+msgstr ""
+"Le processeur d'index ne s'est pas exécuté correctement. Veuillez vérifier "
+"via Affichage > Panneau des messages."
 
-#: src/LaTeX.cpp:1115
+#: src/LaTeX.cpp:599
+msgid "Running Nomenclature Processor."
+msgstr "Exécution du processeur de la liste des symboles."
+
+#: src/LaTeX.cpp:1103
 msgid "(NOTE: The erroneous command is in the preamble)"
 msgstr "(Nota : la commande incorrecte est dans le préambule)"
 
-#: src/LaTeX.cpp:1607 src/LaTeX.cpp:1613 src/LaTeX.cpp:1622
+#: src/LaTeX.cpp:1595 src/LaTeX.cpp:1601 src/LaTeX.cpp:1610
 msgid "BibTeX error: "
 msgstr "Erreur BibTeX : "
 
-#: src/LaTeX.cpp:1629
+#: src/LaTeX.cpp:1617
 msgid "Biber error: "
 msgstr "Erreur Biber : "
 
-#: src/LaTeX.cpp:1656
+#: src/LaTeX.cpp:1644
 msgid "Makeindex error: "
 msgstr "Erreur makeindex : "
 
-#: src/LaTeX.cpp:1665
+#: src/LaTeX.cpp:1653
 msgid "Xindy error: "
 msgstr "Erreur xindy : "
 
@@ -30836,56 +30852,56 @@ msgstr ", Frontière : "
 msgid "No font change defined."
 msgstr "Aucune modification de police définie."
 
-#: src/Text3.cpp:195
+#: src/Text3.cpp:200
 msgid "Math editor mode"
 msgstr "Mode éditeur mathématique"
 
-#: src/Text3.cpp:197
+#: src/Text3.cpp:202
 msgid "No valid math formula"
 msgstr "Pas de formule mathématique valide"
 
-#: src/Text3.cpp:205 src/mathed/InsetMathNest.cpp:1032
+#: src/Text3.cpp:210 src/mathed/InsetMathNest.cpp:1032
 msgid "Already in regular expression mode"
 msgstr "Déjà en mode « expression régulière »"
 
-#: src/Text3.cpp:218
+#: src/Text3.cpp:223
 msgid "Regexp editor mode"
 msgstr "Mode « expression régulière »"
 
-#: src/Text3.cpp:1605
+#: src/Text3.cpp:1618
 msgid "Layout "
 msgstr "Environnement "
 
-#: src/Text3.cpp:1606 src/Text3.cpp:2177
+#: src/Text3.cpp:1619 src/Text3.cpp:2193
 msgid " not known"
 msgstr " inconnu"
 
-#: src/Text3.cpp:2176
+#: src/Text3.cpp:2192
 msgid "Table Style "
 msgstr "Style de tableau "
 
-#: src/Text3.cpp:2369 src/frontends/qt/GuiApplication.cpp:1873
+#: src/Text3.cpp:2385 src/frontends/qt/GuiApplication.cpp:1873
 msgid "Missing argument"
 msgstr "Paramètre manquant"
 
-#: src/Text3.cpp:2538
+#: src/Text3.cpp:2550
 msgid "Invalid argument (number exceeds stack size)!"
 msgstr "Argument invalide (le nombre est supérieur à la taille de la pile) !"
 
-#: src/Text3.cpp:2542
+#: src/Text3.cpp:2554
 msgid "Invalid argument (must be a non-negative number)!"
 msgstr "Argument invalide (nombre non négatif obligatoire)"
 
-#: src/Text3.cpp:2547 src/Text3.cpp:2565
+#: src/Text3.cpp:2559 src/Text3.cpp:2573
 #, c-format
 msgid "Text properties applied: %1$s"
 msgstr "Propriétés du texte appliquées : %1$s"
 
-#: src/Text3.cpp:2724
+#: src/Text3.cpp:2732
 msgid "Path to thesaurus directory not set!"
 msgstr "Chemin d'accès au répertoire du thésaurus non précisé !"
 
-#: src/Text3.cpp:2725
+#: src/Text3.cpp:2733
 msgid ""
 "The path to the thesaurus directory has not been specified.\n"
 "The thesaurus is not functional.\n"
@@ -30897,7 +30913,7 @@ msgstr ""
 "Se référer au Guide de l'utilisateur, section 6.15.1, pour\n"
 "les instructions de réglage."
 
-#: src/Text3.cpp:2851 src/Text3.cpp:2862
+#: src/Text3.cpp:2859 src/Text3.cpp:2870
 msgid "Paragraph layout set"
 msgstr "Style du paragraphe redéfini"
 
@@ -31017,8 +31033,8 @@ msgstr ""
 msgid "Error reading cite engine %1$s\n"
 msgstr "Erreur de lecture du moteur bibliographique %1$s\n"
 
-#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:500
-#: src/insets/InsetIndex.cpp:521
+#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:517
+#: src/insets/InsetIndex.cpp:538
 msgid "unknown type!"
 msgstr "type  inconnu !"
 
@@ -35885,7 +35901,7 @@ msgid "active"
 msgstr "actif"
 
 #: src/insets/InsetBranch.cpp:70 src/insets/InsetBranch.cpp:72
-#: src/insets/InsetIndex.cpp:682
+#: src/insets/InsetIndex.cpp:699
 msgid "non-active"
 msgstr "non-actif"
 
@@ -36372,11 +36388,11 @@ msgstr ""
 msgid "MISSING: "
 msgstr "MANQUANT : "
 
-#: src/insets/InsetIndex.cpp:157
+#: src/insets/InsetIndex.cpp:169
 msgid "Index sorting failed"
 msgstr "Échec du tri d'index"
 
-#: src/insets/InsetIndex.cpp:158
+#: src/insets/InsetIndex.cpp:170
 #, c-format
 msgid ""
 "LyX's automatic index sorting algorithm faced\n"
@@ -36389,19 +36405,19 @@ msgstr ""
 "Merci de préciser la position de tri de cette entrée manuellement,\n"
 "comme expliqué dans le Guide d'utilisation."
 
-#: src/insets/InsetIndex.cpp:493
+#: src/insets/InsetIndex.cpp:510
 msgid "Index Entry"
 msgstr "Entrée d'index"
 
-#: src/insets/InsetIndex.cpp:679
+#: src/insets/InsetIndex.cpp:696
 msgid "Unknown index type!"
 msgstr "Type d'index inconnu !"
 
-#: src/insets/InsetIndex.cpp:680
+#: src/insets/InsetIndex.cpp:697
 msgid "All indexes"
 msgstr "Tous les index"
 
-#: src/insets/InsetIndex.cpp:684
+#: src/insets/InsetIndex.cpp:701
 msgid "subindex"
 msgstr "sous-index"
 
@@ -37990,6 +38006,12 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Utilisateur inconnu"
 
+#~ msgid "Running BibTeX."
+#~ msgstr "Exécution de BibTeX."
+
+#~ msgid "Running MakeIndex for nomencl."
+#~ msgstr "Exécution de MakeIndex pour le paquetage nomencl."
+
 #~ msgid "e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
 #~ msgstr "e.g. : pdfstartview=XYZ, plainpages=false, pdfpagelabels"
 

commit 94a7f74423570e247fdc23ebd1aa0bf5bc7a31d7
Author: Enrico Forestieri <forenr at lyx.org>
Date:   Thu Feb 17 14:59:17 2022 +0100

    Avoid a Qt warning about bad svg
    
    See #10384 for the details.

diff --git a/lib/images/busy.svgz b/lib/images/busy.svgz
index 2a07dfa..2772df5 100644
Binary files a/lib/images/busy.svgz and b/lib/images/busy.svgz differ

commit 124e0fc2be2446f7182cba0e5b54961dc1cfab91
Author: Kornel Benko <kornel at lyx.org>
Date:   Thu Feb 17 12:19:33 2022 +0100

    Update sk.po

diff --git a/po/sk.po b/po/sk.po
index 9814567..0fecc2b 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX-2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-16 14:35+0100\n"
-"PO-Revision-Date: 2022-02-16 13:40+0000\n"
+"POT-Creation-Date: 2022-02-17 12:06+0100\n"
+"PO-Revision-Date: 2022-02-17 11:16+0000\n"
 "Last-Translator: Kornel Benko <kornel at lyx.org>\n"
 "Language-Team: Slovak <kornel at lyx.org>\n"
 "Language: sk\n"
@@ -29160,6 +29160,18 @@ msgstr "Opakujem generáciu bibliografie."
 msgid "Running Index Processor."
 msgstr "Spúšťam generáciu registra."
 
+#: src/LaTeX.cpp:438
+msgid "Index Processor Error"
+msgstr "Chyba pri generácii registra"
+
+#: src/LaTeX.cpp:439
+msgid ""
+"The index processor did not run successfully. Please check the output of "
+"View > Messages Pane!"
+msgstr ""
+"Generácia registra nebola úspešná. Skontrolujte prosím výstup dát od "
+"Zobraziť->Ladiace výpisy!"
+
 #: src/LaTeX.cpp:592
 msgid "Running Nomenclature Processor."
 msgstr "Spúšťam generáciu nomenklatúry."

commit f7e8e3f10eb40262d8956063adf9f03ebb41ab80
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Feb 17 10:52:37 2022 +0100

    Correct error message

diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp
index c4dd18e..e0df744 100644
--- a/src/LaTeX.cpp
+++ b/src/LaTeX.cpp
@@ -436,7 +436,8 @@ int LaTeX::run(TeXErrors & terr)
 			iscanres |= INDEX_ERROR;
 			terr.insertError(0,
 					 _("Index Processor Error"),
-					 _("The index processor did not run successfully. Please check the output of View > Messages!"));
+					 _("The index processor did not run successfully. "
+					   "Please check the output of View > Messages Pane!"));
 		}
 		FileName const ilgfile(changeExtension(file.absFileName(), ".ilg"));
 		if (ilgfile.exists())

commit a179395bd9600dd9d632a2662027c031a8318502
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Feb 17 08:53:52 2022 +0100

    de.po

diff --git a/po/de.gmo b/po/de.gmo
index a623117..df61191 100644
Binary files a/po/de.gmo and b/po/de.gmo differ
diff --git a/po/de.po b/po/de.po
index 1d8be99..010afda 100644
--- a/po/de.po
+++ b/po/de.po
@@ -94,8 +94,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.4git\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-16 13:07+0100\n"
-"PO-Revision-Date: 2022-02-16 13:10+0100\n"
+"POT-Creation-Date: 2022-02-17 08:23+0100\n"
+"PO-Revision-Date: 2022-02-17 08:53+0100\n"
 "Last-Translator: Jürgen Spitzmüller <spitz at lyx.org>\n"
 "Language-Team: Deutsch <lyx-docs at lists.lyx.org>\n"
 "Language: de\n"
@@ -19649,7 +19649,7 @@ msgid "Copy as Reference|R"
 msgstr "Als Querverweis kopieren|k"
 
 #: lib/ui/stdcontext.inc:61 lib/ui/stdcontext.inc:375 lib/ui/stdmenus.inc:108
-#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1576
+#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1584
 #: src/mathed/InsetMathNest.cpp:555
 msgid "Cut"
 msgstr "Ausschneiden"
@@ -19660,7 +19660,7 @@ msgid "Copy"
 msgstr "Kopieren"
 
 #: lib/ui/stdcontext.inc:63 lib/ui/stdcontext.inc:377 lib/ui/stdmenus.inc:110
-#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1520
+#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1528
 #: src/frontends/qt/GuiToolbar.cpp:441 src/mathed/InsetMathGrid.cpp:1565
 #: src/mathed/InsetMathNest.cpp:533
 msgid "Paste"
@@ -27297,7 +27297,7 @@ msgstr ""
 "\\lyxdeleted im LaTeX-Vorspann neu."
 
 #: src/Buffer.cpp:1086 src/BufferParams.cpp:475 src/frontends/qt/GuiLog.cpp:293
-#: src/insets/InsetIndex.cpp:676
+#: src/insets/InsetIndex.cpp:691
 msgid "Index"
 msgstr "Stichwortverzeichnis"
 
@@ -29448,27 +29448,39 @@ msgstr "Literaturverzeichnis-Prozessor wird noch einmal ausgeführt."
 msgid "Running Index Processor."
 msgstr "Indexprozessor wird ausgeführt."
 
-#: src/LaTeX.cpp:592
-msgid "Running MakeIndex for nomencl."
-msgstr "MakeIndex wird für nomencl ausgeführt."
+#: src/LaTeX.cpp:438
+msgid "Index Processor Error"
+msgstr "Indexprozessor-Fehler"
 
-#: src/LaTeX.cpp:1096
+#: src/LaTeX.cpp:439
+msgid ""
+"The index processor did not run successfully. Please check the output of "
+"View > Messages!"
+msgstr ""
+"Der Durchlauf des Index-Prozessors war nicht erfolgreich. Bitte prüfen Sie "
+"die Ausgabe von Ansicht > Statusmeldungen!"
+
+#: src/LaTeX.cpp:598
+msgid "Running Nomenclature Processor."
+msgstr "Nomenklatur-Prozessor wird ausgeführt."
+
+#: src/LaTeX.cpp:1102
 msgid "(NOTE: The erroneous command is in the preamble)"
 msgstr "(ACHTUNG: Der fehlerhafte Befehl befindet sich in der Präambel)"
 
-#: src/LaTeX.cpp:1588 src/LaTeX.cpp:1594 src/LaTeX.cpp:1603
+#: src/LaTeX.cpp:1594 src/LaTeX.cpp:1600 src/LaTeX.cpp:1609
 msgid "BibTeX error: "
 msgstr "BibTeX-Fehler: "
 
-#: src/LaTeX.cpp:1610
+#: src/LaTeX.cpp:1616
 msgid "Biber error: "
 msgstr "Biber-Fehler: "
 
-#: src/LaTeX.cpp:1637
+#: src/LaTeX.cpp:1643
 msgid "Makeindex error: "
 msgstr "Makeindex-Fehler: "
 
-#: src/LaTeX.cpp:1646
+#: src/LaTeX.cpp:1652
 msgid "Xindy error: "
 msgstr "Xindy-Fehler: "
 
@@ -30572,40 +30584,40 @@ msgstr "Bereits im Regexp-Modus"
 msgid "Regexp editor mode"
 msgstr "Regexp-Editor-Modus"
 
-#: src/Text3.cpp:1610
+#: src/Text3.cpp:1618
 msgid "Layout "
 msgstr "Format "
 
-#: src/Text3.cpp:1611 src/Text3.cpp:2182
+#: src/Text3.cpp:1619 src/Text3.cpp:2193
 msgid " not known"
 msgstr " unbekannt"
 
-#: src/Text3.cpp:2181
+#: src/Text3.cpp:2192
 msgid "Table Style "
 msgstr "Tabellenstil"
 
-#: src/Text3.cpp:2374 src/frontends/qt/GuiApplication.cpp:1873
+#: src/Text3.cpp:2385 src/frontends/qt/GuiApplication.cpp:1873
 msgid "Missing argument"
 msgstr "Fehlendes Argument"
 
-#: src/Text3.cpp:2539
+#: src/Text3.cpp:2550
 msgid "Invalid argument (number exceeds stack size)!"
 msgstr "Ungültiges Argument (Zahl größer als Zwischenspeicher)!"
 
-#: src/Text3.cpp:2543
+#: src/Text3.cpp:2554
 msgid "Invalid argument (must be a non-negative number)!"
 msgstr "Ungültiges Argument (muss eine nicht-negative Zahl sein)!"
 
-#: src/Text3.cpp:2548 src/Text3.cpp:2562
+#: src/Text3.cpp:2559 src/Text3.cpp:2573
 #, c-format
 msgid "Text properties applied: %1$s"
 msgstr "Angewendete Texteigenschaften: %1$s"
 
-#: src/Text3.cpp:2721
+#: src/Text3.cpp:2732
 msgid "Path to thesaurus directory not set!"
 msgstr "Pfad zum Thesaurus-Wörterbuch nicht festlegt!"
 
-#: src/Text3.cpp:2722
+#: src/Text3.cpp:2733
 msgid ""
 "The path to the thesaurus directory has not been specified.\n"
 "The thesaurus is not functional.\n"
@@ -30617,7 +30629,7 @@ msgstr ""
 "Im Benutzerhandbuch, Abschnitt 6.15.11, finden Sie Hinweise,\n"
 "um den Thesaurus einzurichten."
 
-#: src/Text3.cpp:2848 src/Text3.cpp:2859
+#: src/Text3.cpp:2859 src/Text3.cpp:2870
 msgid "Paragraph layout set"
 msgstr "Absatzformat festgelegt"
 
@@ -30741,8 +30753,8 @@ msgstr ""
 msgid "Error reading cite engine %1$s\n"
 msgstr "Fehler beim Lesen der Zitierformatdatei %1$s\n"
 
-#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:502
-#: src/insets/InsetIndex.cpp:523
+#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:517
+#: src/insets/InsetIndex.cpp:538
 msgid "unknown type!"
 msgstr "unbekannter Typ!"
 
@@ -35643,7 +35655,7 @@ msgid "active"
 msgstr "aktiv"
 
 #: src/insets/InsetBranch.cpp:70 src/insets/InsetBranch.cpp:72
-#: src/insets/InsetIndex.cpp:684
+#: src/insets/InsetIndex.cpp:699
 msgid "non-active"
 msgstr "inaktiv"
 
@@ -36134,11 +36146,11 @@ msgstr ""
 msgid "MISSING: "
 msgstr "NICHT VORHANDEN:"
 
-#: src/insets/InsetIndex.cpp:157
+#: src/insets/InsetIndex.cpp:169
 msgid "Index sorting failed"
 msgstr "Indexsortierung fehlgeschlagen"
 
-#: src/insets/InsetIndex.cpp:158
+#: src/insets/InsetIndex.cpp:170
 #, c-format
 msgid ""
 "LyX's automatic index sorting algorithm faced\n"
@@ -36151,19 +36163,19 @@ msgstr ""
 "Bitte legen Sie die Sortierung manuell fest. Hinweise\n"
 "zum Vorgehen finden Sie im Benutzerhandbuch."
 
-#: src/insets/InsetIndex.cpp:495
+#: src/insets/InsetIndex.cpp:510
 msgid "Index Entry"
 msgstr "Stichwort"
 
-#: src/insets/InsetIndex.cpp:681
+#: src/insets/InsetIndex.cpp:696
 msgid "Unknown index type!"
 msgstr "Unbekannter Index-Typ!"
 
-#: src/insets/InsetIndex.cpp:682
+#: src/insets/InsetIndex.cpp:697
 msgid "All indexes"
 msgstr "Alle Indexe"
 
-#: src/insets/InsetIndex.cpp:686
+#: src/insets/InsetIndex.cpp:701
 msgid "subindex"
 msgstr "Unterindex"
 
@@ -37752,6 +37764,9 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Unbekannter Benutzer"
 
+#~ msgid "Running MakeIndex for nomencl."
+#~ msgstr "MakeIndex wird für nomencl ausgeführt."
+
 #~ msgid "Running BibTeX."
 #~ msgstr "BibTeX wird ausgeführt."
 

commit 755146287cc668661af98989e12614d572cdc001
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Feb 17 08:21:36 2022 +0100

    Typo

diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp
index 2e1e19c..fe0890c 100644
--- a/src/insets/InsetIndex.cpp
+++ b/src/insets/InsetIndex.cpp
@@ -149,7 +149,7 @@ void InsetIndex::latex(otexstream & ios, OutputParams const & runparams_in) cons
 		// version of the content to get sorting right,
 		// e.g. \index{LyX@\LyX}, \index{text@\textbf{text}}.
 		// We do this on all levels.
-		// We don't do it if the level already contains a '@', thouugh.
+		// We don't do it if the level already contains a '@', though.
 		if (contains(*it, '\\') && !contains(*it, '@')) {
 			// Plaintext might return nothing (e.g. for ERTs).
 			// In that case, we use LaTeX.

commit 266a5e04d403af4a9e576b7726481185d11274d9
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Feb 17 08:19:33 2022 +0100

    InsetIndex: Some comments and indentation fixes

diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp
index 3cce6af..2e1e19c 100644
--- a/src/insets/InsetIndex.cpp
+++ b/src/insets/InsetIndex.cpp
@@ -80,6 +80,8 @@ void InsetIndex::latex(otexstream & ios, OutputParams const & runparams_in) cons
 		os << '{';
 	}
 
+	// Get the LaTeX output from InsetText. We need to deconstruct this later
+	// in order to check if we need to generate a sorting key
 	odocstringstream ourlatex;
 	otexstream ots(ourlatex);
 	InsetText::latex(ots, runparams);
@@ -88,27 +90,31 @@ void InsetIndex::latex(otexstream & ios, OutputParams const & runparams_in) cons
 		os << ourlatex.str() << "}";
 		return;
 	}
-	// get contents of InsetText as LaTeX and plaintext
+
+	// For the sorting key, we use the plaintext version
 	odocstringstream ourplain;
 	InsetText::plaintext(ourplain, runparams);
-	// FIXME: do Tex/Row correspondence (I don't currently understand what is
-	// being generated from latexstr below)
+
+	// These are the LaTeX and plaintext representations
 	docstring latexstr = ourlatex.str();
 	docstring plainstr = ourplain.str();
 
-	// this will get what follows | if anything does
+	// This will get what follows | if anything does,
+	// the command (e.g., see, textbf) for pagination
+	// formatting
 	docstring cmd;
 
-	// check for the | separator
-	// FIXME This would go wrong on an escaped "|", but
-	// how far do we want to go here?
+	// Check for the | separator to strip the cmd.
+	// This goes wrong on an escaped "|", but as the escape
+	// character can be changed in style files, we cannot
+	// prevent that.
 	size_t pos = latexstr.find(from_ascii("|"));
 	if (pos != docstring::npos) {
-		// put the bit after "|" into cmd...
+		// Put the bit after "|" into cmd...
 		cmd = latexstr.substr(pos + 1);
 		// ...and erase that stuff from latexstr
 		latexstr = latexstr.erase(pos);
-		// ...and similarly from plainstr
+		// ...as well as from plainstr
 		size_t ppos = plainstr.find(from_ascii("|"));
 		if (ppos < plainstr.size())
 			plainstr.erase(ppos);
@@ -116,8 +122,10 @@ void InsetIndex::latex(otexstream & ios, OutputParams const & runparams_in) cons
 			LYXERR0("The `|' separator was not found in the plaintext version!");
 	}
 
-	// Separate the entries and subentries, i.e., split on "!"
-	// FIXME This would do the wrong thing with escaped ! characters
+	// Separate the entries and subentries, i.e., split on "!".
+	// This goes wrong on an escaped "!", but as the escape
+	// character can be changed in style files, we cannot
+	// prevent that.
 	std::vector<docstring> const levels =
 			getVectorFromString(latexstr, from_ascii("!"), true);
 	std::vector<docstring> const levels_plain =
@@ -128,19 +136,23 @@ void InsetIndex::latex(otexstream & ios, OutputParams const & runparams_in) cons
 	vector<docstring>::const_iterator it2 = levels_plain.begin();
 	bool first = true;
 	for (; it != end; ++it) {
-		// write the separator except the first time
+		// The separator needs to be put back when
+		// writing the levels, except for the first level
 		if (!first)
 			os << '!';
 		else
 			first = false;
 
-		// correctly sort macros and formatted strings
-		// if we do find a command, prepend a plain text
+		// Now here comes the reason for this whole procedure:
+		// We try to correctly sort macros and formatted strings.
+		// If we find a command, prepend a plain text
 		// version of the content to get sorting right,
-		// e.g. \index{LyX@\LyX}, \index{text@\textbf{text}}
-		// Don't do that if the user entered '@' himself, though.
+		// e.g. \index{LyX@\LyX}, \index{text@\textbf{text}}.
+		// We do this on all levels.
+		// We don't do it if the level already contains a '@', thouugh.
 		if (contains(*it, '\\') && !contains(*it, '@')) {
-			// Plaintext might return nothing (e.g. for ERTs)
+			// Plaintext might return nothing (e.g. for ERTs).
+			// In that case, we use LaTeX.
 			docstring const spart =
 					(it2 < levels_plain.end() && !(*it2).empty())
 					? *it2 : *it;
@@ -155,25 +167,28 @@ void InsetIndex::latex(otexstream & ios, OutputParams const & runparams_in) cons
 			if (spart != spart_latexed.first && !runparams.dryrun) {
 				// FIXME: warning should be passed to the error dialog
 				frontend::Alert::warning(_("Index sorting failed"),
-										 bformat(_("LyX's automatic index sorting algorithm faced\n"
-														   "problems with the entry '%1$s'.\n"
-														   "Please specify the sorting of this entry manually, as\n"
-														   "explained in the User Guide."), spart));
+							 bformat(_("LyX's automatic index sorting algorithm faced\n"
+								   "problems with the entry '%1$s'.\n"
+								   "Please specify the sorting of this entry manually, as\n"
+								   "explained in the User Guide."), spart));
 			}
-			// remove remaining \'s for the sorting part
-			docstring ppart =
-					subst(spart_latexed.first, from_ascii("\\"), docstring());
-			// Plain quotes need to be escaped, however (#10649)
+			// Remove remaining \'s from the sort key
+			docstring ppart = subst(spart_latexed.first, from_ascii("\\"), docstring());
+			// Plain quotes need to be escaped, however (#10649), as this
+			// is the default escape character
 			ppart = subst(ppart, from_ascii("\""), from_ascii("\\\""));
+
+			// Now insert the sortkey, separated by '@'.
 			os << ppart;
 			os << '@';
 		}
+		// Insert the actual level text
 		docstring const tpart = *it;
 		os << tpart;
 		if (it2 < levels_plain.end())
 			++it2;
 	}
-	// write the bit that followed "|"
+	// At last, re-insert the command, separated by "|"
 	if (!cmd.empty()) {
 		os << "|" << cmd;
 	}

commit 44d56764305fee8fcea79cb48682682bffd17f4d
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Feb 17 07:25:00 2022 +0100

    Report if index processor failed (#7820)

diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp
index 7734b02..c4dd18e 100644
--- a/src/LaTeX.cpp
+++ b/src/LaTeX.cpp
@@ -432,6 +432,12 @@ int LaTeX::run(TeXErrors & terr)
 				runMakeIndex(onlyFileName(idxfile.absFileName()), runparams);
 		if (ret == Systemcall::KILLED || ret == Systemcall::TIMEOUT)
 			return ret;
+		else if (ret != Systemcall::OK) {
+			iscanres |= INDEX_ERROR;
+			terr.insertError(0,
+					 _("Index Processor Error"),
+					 _("The index processor did not run successfully. Please check the output of View > Messages!"));
+		}
 		FileName const ilgfile(changeExtension(file.absFileName(), ".ilg"));
 		if (ilgfile.exists())
 			iscanres = scanIlgFile(terr);

commit 23b7b95e68ee2ac778838fc1a9d037130133ef56
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Wed Feb 16 22:05:02 2022 -0500

    ctests: log fixed upstream Polyglossia issues
    
    Thanks to Jürgen for fixing the upstream issue.
    
    Also add a row "ctest" to give the pattern of the ctests that
    failed.

diff --git a/development/autotests/ctests-costs-benefits.txt b/development/autotests/ctests-costs-benefits.txt
index 6be712c..cc66eb9 100644
--- a/development/autotests/ctests-costs-benefits.txt
+++ b/development/autotests/ctests-costs-benefits.txt
@@ -19,6 +19,9 @@ The "Benefit" row gives the amount of days in-between when an issue is found
 because of the ctests and when an issue is reported by someone not using the
 ctests.
 
+The "ctest" row gives a ctest pattern for the tests that were affected by the
+regression.
+
 Examples where convergence tests took time and annoyance to figure out that
 they were actually "false positives" (i.e., no bug that is worth the time or
 complexity to fix):
@@ -80,3 +83,10 @@ Benefit: Not clear. The regressions were in the development version so they
 
 Report : https://www.mail-archive.com/search?l=mid&q=20211207200100.o27ojaftehrjfcza%40poole
 Fix    : 2eaf30c5
+
+
+Report : (private message to Jürgen: LyXMessage-ID:<20220216020703.la2fd5gu7yz7y7dc at gary>)
+Fix    : https://github.com/reutenauer/polyglossia/commit/c7489ebaf8c66a7e4fe2529de7068ebb79c68812
+Benefit: Not clear. The regressions were in the development version so they
+         could have easily been caught before release.
+ctests : export/export/lyx2lyx/revert-languages-polyglossia-primary_lyx22

commit 58a8884b0643ff8dcf35697e09e49894a804171b
Author: Kornel Benko <kornel at lyx.org>
Date:   Wed Feb 16 14:44:43 2022 +0100

    Update sk.po

diff --git a/po/sk.po b/po/sk.po
index 5a35011..9814567 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX-2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-13 12:47+0100\n"
-"PO-Revision-Date: 2022-02-13 12:46+0000\n"
+"POT-Creation-Date: 2022-02-16 14:35+0100\n"
+"PO-Revision-Date: 2022-02-16 13:40+0000\n"
 "Last-Translator: Kornel Benko <kornel at lyx.org>\n"
 "Language-Team: Slovak <kornel at lyx.org>\n"
 "Language: sk\n"
@@ -29148,17 +29148,21 @@ msgstr "   voľby: "
 msgid "Waiting for LaTeX run number %1$d"
 msgstr "ÄŒakanie na %1$d spracovanie LaTeX-u"
 
+#: src/LaTeX.cpp:328
+msgid "Running Bibliography Processor."
+msgstr "Spúšťam generáciu bibliografie."
+
+#: src/LaTeX.cpp:389
+msgid "Re-Running Bibliography Processor."
+msgstr "Opakujem generáciu bibliografie."
+
 #: src/LaTeX.cpp:324 src/LaTeX.cpp:461
 msgid "Running Index Processor."
 msgstr "Spúšťam generáciu registra."
 
-#: src/LaTeX.cpp:377 src/LaTeX.cpp:438
-msgid "Running BibTeX."
-msgstr "Spúšťam BibTeX."
-
-#: src/LaTeX.cpp:611
-msgid "Running MakeIndex for nomencl."
-msgstr "Spúšťam makeindex pre nomencl."
+#: src/LaTeX.cpp:592
+msgid "Running Nomenclature Processor."
+msgstr "Spúšťam generáciu nomenklatúry."
 
 #: src/LaTeX.cpp:1115
 msgid "(NOTE: The erroneous command is in the preamble)"

commit 92aa12317e1e7cbaa83c4b7c3298ac340efe3a0a
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Feb 16 14:25:25 2022 +0100

    Reset font formatting of inset entries on creation (#11961)

diff --git a/src/Text3.cpp b/src/Text3.cpp
index 9143e26..185008b 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -243,7 +243,8 @@ static void ipaChar(Cursor & cur, InsetIPAChar::Kind kind)
 
 
 static bool doInsertInset(Cursor & cur, Text * text,
-	FuncRequest const & cmd, bool edit, bool pastesel)
+			  FuncRequest const & cmd, bool edit,
+			  bool pastesel, bool resetfont = false)
 {
 	Buffer & buffer = cur.bv().buffer();
 	BufferParams const & bparams = buffer.params();
@@ -346,6 +347,13 @@ static bool doInsertInset(Cursor & cur, Text * text,
 	cur.clearSelection(); // bug 393
 	cur.finishUndo();
 	if (inset_text) {
+		if (resetfont) {
+			// Reset of font (not language) is requested.
+			// Used by InsetIndex (#11961).
+			Language const * lang = cur.getFont().language();
+			Font font(bparams.getFont().fontInfo(), lang);
+			cur.paragraph().resetFonts(font);
+		}
 		inset_text->fixParagraphsFont();
 		cur.pos() = 0;
 		cur.pit() = 0;
@@ -2105,16 +2113,19 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 	case LFUN_INDEX_INSERT:
 	case LFUN_PREVIEW_INSERT:
 	case LFUN_SCRIPT_INSERT:
-	case LFUN_IPA_INSERT:
+	case LFUN_IPA_INSERT: {
+		// Indexes reset font formatting (#11961)
+		bool const resetfont = cmd.action() == LFUN_INDEX_INSERT;
 		// Open the inset, and move the current selection
 		// inside it.
-		doInsertInset(cur, this, cmd, true, true);
+		doInsertInset(cur, this, cmd, true, true, resetfont);
 		cur.posForward();
 		cur.setCurrentFont();
 		// Some insets are numbered, others are shown in the outline pane so
 		// let's update the labels and the toc backend.
 		cur.forceBufferUpdate();
 		break;
+	}
 
 	case LFUN_FLEX_INSERT: {
 		// Open the inset, and move the current selection

commit 6adb083384e1c47a11595fc9b06ba3c9b4f9ae63
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Feb 16 14:24:46 2022 +0100

    Use copy

diff --git a/src/Text3.cpp b/src/Text3.cpp
index 777a580..9143e26 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -326,7 +326,7 @@ static bool doInsertInset(Cursor & cur, Text * text,
 	if (inset_text) {
 		Font const & font = inset->inheritFont()
 			? cur.bv().textMetrics(text).displayFont(cur.pit(), cur.pos())
-			: buffer.params().getFont();
+			: bparams.getFont();
 		inset_text->setOuterFont(cur.bv(), font.fontInfo());
 	}
 

commit 1888a2ccb5a7606a06a11a177c6202fe4f041aea
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Feb 16 13:17:30 2022 +0100

    Oops.

diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp
index 9cfd735..7734b02 100644
--- a/src/LaTeX.cpp
+++ b/src/LaTeX.cpp
@@ -588,8 +588,8 @@ int LaTeX::runMakeIndex(string const & f, OutputParams const & rp,
 int LaTeX::runMakeIndexNomencl(FileName const & fname,
 		string const & nlo, string const & nls)
 {
-	LYXERR(Debug::LATEX, "Running Nocmenclature Processor.");
-	message(_("Running Nocmenclature Processor."));
+	LYXERR(Debug::LATEX, "Running Nomenclature Processor.");
+	message(_("Running Nomenclature Processor."));
 	string tmp = lyxrc.nomencl_command + ' ';
 	// onlyFileName() is needed for cygwin
 	tmp += quoteName(onlyFileName(changeExtension(fname.absFileName(), nlo)));

commit cc4de1501c18dce1d35f253e0b06b5188a24dd45
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Feb 16 13:16:24 2022 +0100

    More generic message
    
    Nomencl processor can be something else than makeindex.

diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp
index c38f5cb..9cfd735 100644
--- a/src/LaTeX.cpp
+++ b/src/LaTeX.cpp
@@ -588,8 +588,8 @@ int LaTeX::runMakeIndex(string const & f, OutputParams const & rp,
 int LaTeX::runMakeIndexNomencl(FileName const & fname,
 		string const & nlo, string const & nls)
 {
-	LYXERR(Debug::LATEX, "Running MakeIndex for nomencl.");
-	message(_("Running MakeIndex for nomencl."));
+	LYXERR(Debug::LATEX, "Running Nocmenclature Processor.");
+	message(_("Running Nocmenclature Processor."));
 	string tmp = lyxrc.nomencl_command + ' ';
 	// onlyFileName() is needed for cygwin
 	tmp += quoteName(onlyFileName(changeExtension(fname.absFileName(), nlo)));

commit cd75f429b0f7e38088da51975ba4743ec253367a
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Feb 16 13:11:15 2022 +0100

    de.po

diff --git a/po/de.gmo b/po/de.gmo
index b25fa6c..a623117 100644
Binary files a/po/de.gmo and b/po/de.gmo differ
diff --git a/po/de.po b/po/de.po
index 06508e9..1d8be99 100644
--- a/po/de.po
+++ b/po/de.po
@@ -94,8 +94,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.4git\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-12 17:36+0100\n"
-"PO-Revision-Date: 2022-02-12 17:40+0100\n"
+"POT-Creation-Date: 2022-02-16 13:07+0100\n"
+"PO-Revision-Date: 2022-02-16 13:10+0100\n"
 "Last-Translator: Jürgen Spitzmüller <spitz at lyx.org>\n"
 "Language-Team: Deutsch <lyx-docs at lists.lyx.org>\n"
 "Language: de\n"
@@ -17091,8 +17091,8 @@ msgstr "Fußnote"
 msgid "Greyedout"
 msgstr "Grauschrift"
 
-#: lib/layouts/stdinsets.inc:208 src/insets/InsetERT.cpp:542
-#: src/insets/InsetERT.cpp:543
+#: lib/layouts/stdinsets.inc:208 src/insets/InsetERT.cpp:251
+#: src/insets/InsetERT.cpp:252
 msgid "ERT"
 msgstr "ERT"
 
@@ -19649,7 +19649,7 @@ msgid "Copy as Reference|R"
 msgstr "Als Querverweis kopieren|k"
 
 #: lib/ui/stdcontext.inc:61 lib/ui/stdcontext.inc:375 lib/ui/stdmenus.inc:108
-#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1571
+#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1576
 #: src/mathed/InsetMathNest.cpp:555
 msgid "Cut"
 msgstr "Ausschneiden"
@@ -19660,7 +19660,7 @@ msgid "Copy"
 msgstr "Kopieren"
 
 #: lib/ui/stdcontext.inc:63 lib/ui/stdcontext.inc:377 lib/ui/stdmenus.inc:110
-#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1515
+#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1520
 #: src/frontends/qt/GuiToolbar.cpp:441 src/mathed/InsetMathGrid.cpp:1565
 #: src/mathed/InsetMathNest.cpp:533
 msgid "Paste"
@@ -27297,7 +27297,7 @@ msgstr ""
 "\\lyxdeleted im LaTeX-Vorspann neu."
 
 #: src/Buffer.cpp:1086 src/BufferParams.cpp:475 src/frontends/qt/GuiLog.cpp:293
-#: src/insets/InsetIndex.cpp:674
+#: src/insets/InsetIndex.cpp:676
 msgid "Index"
 msgstr "Stichwortverzeichnis"
 
@@ -29436,35 +29436,39 @@ msgstr "   Optionen: "
 msgid "Waiting for LaTeX run number %1$d"
 msgstr "Warten auf LaTeX-Durchlauf Nr. %1$d"
 
-#: src/LaTeX.cpp:324 src/LaTeX.cpp:461
+#: src/LaTeX.cpp:328
+msgid "Running Bibliography Processor."
+msgstr "Literaturverzeichnis-Prozessor wird ausgeführt."
+
+#: src/LaTeX.cpp:389
+msgid "Re-Running Bibliography Processor."
+msgstr "Literaturverzeichnis-Prozessor wird noch einmal ausgeführt."
+
+#: src/LaTeX.cpp:429
 msgid "Running Index Processor."
 msgstr "Indexprozessor wird ausgeführt."
 
-#: src/LaTeX.cpp:377 src/LaTeX.cpp:438
-msgid "Running BibTeX."
-msgstr "BibTeX wird ausgeführt."
-
-#: src/LaTeX.cpp:611
+#: src/LaTeX.cpp:592
 msgid "Running MakeIndex for nomencl."
 msgstr "MakeIndex wird für nomencl ausgeführt."
 
-#: src/LaTeX.cpp:1115
+#: src/LaTeX.cpp:1096
 msgid "(NOTE: The erroneous command is in the preamble)"
 msgstr "(ACHTUNG: Der fehlerhafte Befehl befindet sich in der Präambel)"
 
-#: src/LaTeX.cpp:1607 src/LaTeX.cpp:1613 src/LaTeX.cpp:1622
+#: src/LaTeX.cpp:1588 src/LaTeX.cpp:1594 src/LaTeX.cpp:1603
 msgid "BibTeX error: "
 msgstr "BibTeX-Fehler: "
 
-#: src/LaTeX.cpp:1629
+#: src/LaTeX.cpp:1610
 msgid "Biber error: "
 msgstr "Biber-Fehler: "
 
-#: src/LaTeX.cpp:1656
+#: src/LaTeX.cpp:1637
 msgid "Makeindex error: "
 msgstr "Makeindex-Fehler: "
 
-#: src/LaTeX.cpp:1665
+#: src/LaTeX.cpp:1646
 msgid "Xindy error: "
 msgstr "Xindy-Fehler: "
 
@@ -30552,56 +30556,56 @@ msgstr ", Grenze: "
 msgid "No font change defined."
 msgstr "Keine Schriftänderung definiert."
 
-#: src/Text3.cpp:195
+#: src/Text3.cpp:200
 msgid "Math editor mode"
 msgstr "Mathe-Editor-Modus"
 
-#: src/Text3.cpp:197
+#: src/Text3.cpp:202
 msgid "No valid math formula"
 msgstr "Keine gültige Matheformel"
 
-#: src/Text3.cpp:205 src/mathed/InsetMathNest.cpp:1032
+#: src/Text3.cpp:210 src/mathed/InsetMathNest.cpp:1032
 msgid "Already in regular expression mode"
 msgstr "Bereits im Regexp-Modus"
 
-#: src/Text3.cpp:218
+#: src/Text3.cpp:223
 msgid "Regexp editor mode"
 msgstr "Regexp-Editor-Modus"
 
-#: src/Text3.cpp:1605
+#: src/Text3.cpp:1610
 msgid "Layout "
 msgstr "Format "
 
-#: src/Text3.cpp:1606 src/Text3.cpp:2176
+#: src/Text3.cpp:1611 src/Text3.cpp:2182
 msgid " not known"
 msgstr " unbekannt"
 
-#: src/Text3.cpp:2175
+#: src/Text3.cpp:2181
 msgid "Table Style "
 msgstr "Tabellenstil"
 
-#: src/Text3.cpp:2368 src/frontends/qt/GuiApplication.cpp:1873
+#: src/Text3.cpp:2374 src/frontends/qt/GuiApplication.cpp:1873
 msgid "Missing argument"
 msgstr "Fehlendes Argument"
 
-#: src/Text3.cpp:2537
+#: src/Text3.cpp:2539
 msgid "Invalid argument (number exceeds stack size)!"
 msgstr "Ungültiges Argument (Zahl größer als Zwischenspeicher)!"
 
-#: src/Text3.cpp:2541
+#: src/Text3.cpp:2543
 msgid "Invalid argument (must be a non-negative number)!"
 msgstr "Ungültiges Argument (muss eine nicht-negative Zahl sein)!"
 
-#: src/Text3.cpp:2546 src/Text3.cpp:2564
+#: src/Text3.cpp:2548 src/Text3.cpp:2562
 #, c-format
 msgid "Text properties applied: %1$s"
 msgstr "Angewendete Texteigenschaften: %1$s"
 
-#: src/Text3.cpp:2723
+#: src/Text3.cpp:2721
 msgid "Path to thesaurus directory not set!"
 msgstr "Pfad zum Thesaurus-Wörterbuch nicht festlegt!"
 
-#: src/Text3.cpp:2724
+#: src/Text3.cpp:2722
 msgid ""
 "The path to the thesaurus directory has not been specified.\n"
 "The thesaurus is not functional.\n"
@@ -30613,7 +30617,7 @@ msgstr ""
 "Im Benutzerhandbuch, Abschnitt 6.15.11, finden Sie Hinweise,\n"
 "um den Thesaurus einzurichten."
 
-#: src/Text3.cpp:2850 src/Text3.cpp:2861
+#: src/Text3.cpp:2848 src/Text3.cpp:2859
 msgid "Paragraph layout set"
 msgstr "Absatzformat festgelegt"
 
@@ -30737,8 +30741,8 @@ msgstr ""
 msgid "Error reading cite engine %1$s\n"
 msgstr "Fehler beim Lesen der Zitierformatdatei %1$s\n"
 
-#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:500
-#: src/insets/InsetIndex.cpp:521
+#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:502
+#: src/insets/InsetIndex.cpp:523
 msgid "unknown type!"
 msgstr "unbekannter Typ!"
 
@@ -35639,7 +35643,7 @@ msgid "active"
 msgstr "aktiv"
 
 #: src/insets/InsetBranch.cpp:70 src/insets/InsetBranch.cpp:72
-#: src/insets/InsetIndex.cpp:682
+#: src/insets/InsetIndex.cpp:684
 msgid "non-active"
 msgstr "inaktiv"
 
@@ -36147,19 +36151,19 @@ msgstr ""
 "Bitte legen Sie die Sortierung manuell fest. Hinweise\n"
 "zum Vorgehen finden Sie im Benutzerhandbuch."
 
-#: src/insets/InsetIndex.cpp:493
+#: src/insets/InsetIndex.cpp:495
 msgid "Index Entry"
 msgstr "Stichwort"
 
-#: src/insets/InsetIndex.cpp:679
+#: src/insets/InsetIndex.cpp:681
 msgid "Unknown index type!"
 msgstr "Unbekannter Index-Typ!"
 
-#: src/insets/InsetIndex.cpp:680
+#: src/insets/InsetIndex.cpp:682
 msgid "All indexes"
 msgstr "Alle Indexe"
 
-#: src/insets/InsetIndex.cpp:684
+#: src/insets/InsetIndex.cpp:686
 msgid "subindex"
 msgstr "Unterindex"
 
@@ -37748,6 +37752,9 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Unbekannter Benutzer"
 
+#~ msgid "Running BibTeX."
+#~ msgstr "BibTeX wird ausgeführt."
+
 #~ msgid "e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
 #~ msgstr "z. B.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
 

commit 8cb7fb26d758f46bb6582761b88cbec0c3db872e
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Feb 16 12:03:38 2022 +0100

    Fix run of index processor in the export chain (#2696)
    
    It does not make sense to issue the index processor before the
    pagination is fixed. Particularly, if (classic) BibTeX is run,
    we need one or more extra LaTeX runs after that before issuing
    the index processor, since the citation labels and references are
    only expanded then, which might change pagination. As a consequence,
    we ended up in wrong index references.
    
    This fixes a 16 year old bug report.

diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp
index ce3d73e..c38f5cb 100644
--- a/src/LaTeX.cpp
+++ b/src/LaTeX.cpp
@@ -306,63 +306,14 @@ int LaTeX::run(TeXErrors & terr)
 	head.update();
 
 	// 1
-	// At this point we must run external programs if needed.
-	// makeindex will be run if a .idx file changed or was generated.
-	// And if there were undefined citations or changes in references
-	// the .aux file is checked for signs of bibtex. Bibtex is then run
-	// if needed.
-
-	// memoir (at least) writes an empty *idx file in the first place.
-	// A second latex run is needed.
-	FileName const idxfile(changeExtension(file.absFileName(), ".idx"));
-	rerun = idxfile.exists() && idxfile.isFileEmpty();
-
-	// run makeindex
-	if (head.haschanged(idxfile)) {
-		// no checks for now
-		LYXERR(Debug::LATEX, "Running MakeIndex.");
-		message(_("Running Index Processor."));
-		// onlyFileName() is needed for cygwin
-		int const ret = 
-				runMakeIndex(onlyFileName(idxfile.absFileName()), runparams);
-		if (ret == Systemcall::KILLED || ret == Systemcall::TIMEOUT)
-			return ret;
-		FileName const ilgfile(changeExtension(file.absFileName(), ".ilg"));
-		if (ilgfile.exists())
-			iscanres = scanIlgFile(terr);
-		rerun = true;
-	}
-
-	FileName const nlofile(changeExtension(file.absFileName(), ".nlo"));
-	// If all nomencl entries are removed, nomencl writes an empty nlo file.
-	// DepTable::hasChanged() returns false in this case, since it does not
-	// distinguish empty files from non-existing files. This is why we need
-	// the extra checks here (to trigger a rerun). Cf. discussions in #8905.
-	// FIXME: Sort out the real problem in DepTable.
-	if (head.haschanged(nlofile) || (nlofile.exists() && nlofile.isFileEmpty())) {
-		int const ret = runMakeIndexNomencl(file, ".nlo", ".nls");
-		if (ret == Systemcall::KILLED || ret == Systemcall::TIMEOUT)
-			return ret;
-		rerun = true;
-	}
-
-	FileName const glofile(changeExtension(file.absFileName(), ".glo"));
-	if (head.haschanged(glofile)) {
-		int const ret = runMakeIndexNomencl(file, ".glo", ".gls");
-		if (ret)
-			return ret;
-		rerun = true;
-	}
-
-
-	// check if we're using biber instead of bibtex
+	// At this point we must run the bibliography processor if needed.
+	// First, check if we're using biber instead of bibtex --
 	// biber writes no info to the aux file, so we just check
-	// if a bcf file exists (and if it was updated)
+	// if a bcf file exists (and if it was updated).
 	FileName const bcffile(changeExtension(file.absFileName(), ".bcf"));
 	biber |= head.exist(bcffile);
 
-	// run bibtex
-	// if (scanres & UNDEF_CIT || scanres & RERUN || run_bibtex)
+	// If (scanres & UNDEF_CIT || scanres & RERUN || run_bibtex)
 	// We do not run bibtex/biber on an "includeall" call (whose purpose is
 	// to set up/maintain counters and references for includeonly) since
 	// (1) bibliographic references will be updated on the subsequent includeonly run
@@ -373,8 +324,8 @@ int LaTeX::run(TeXErrors & terr)
 		// "\bibdata" and/or "\bibstyle". If one of those
 		// tags is found -> run bibtex and set rerun = true;
 		// no checks for now
-		LYXERR(Debug::LATEX, "Running BibTeX.");
-		message(_("Running BibTeX."));
+		LYXERR(Debug::LATEX, "Running Bibliography Processor.");
+		message(_("Running Bibliography Processor."));
 		updateBibtexDependencies(head, bibtex_info);
 		int exit_code;
 		rerun |= runBibTeX(bibtex_info, runparams, exit_code);
@@ -391,7 +342,7 @@ int LaTeX::run(TeXErrors & terr)
 	}
 
 	// 2
-	// we know on this point that latex has been run once (or we just
+	// We know on this point that latex has been run once (or we just
 	// returned) and the question now is to decide if we need to run
 	// it any more. This is done by asking if any of the files in the
 	// dependency file has changed. (remember that the checksum for
@@ -421,7 +372,7 @@ int LaTeX::run(TeXErrors & terr)
 	}
 
 	// 3
-	// rerun bibtex?
+	// Rerun bibliography processor?
 	// Complex bibliography packages such as Biblatex require
 	// an additional bibtex cycle sometimes.
 	// We do not run bibtex/biber on an "includeall" call (whose purpose is
@@ -434,8 +385,8 @@ int LaTeX::run(TeXErrors & terr)
 		// "\bibdata" and/or "\bibstyle". If one of those
 		// tags is found -> run bibtex and set rerun = true;
 		// no checks for now
-		LYXERR(Debug::LATEX, "Running BibTeX.");
-		message(_("Running BibTeX."));
+		LYXERR(Debug::LATEX, "Re-Running Bibliography Processor.");
+		message(_("Re-Running Bibliography Processor."));
 		updateBibtexDependencies(head, bibtex_info);
 		int exit_code;
 		rerun |= runBibTeX(bibtex_info, runparams, exit_code);
@@ -447,21 +398,38 @@ int LaTeX::run(TeXErrors & terr)
 	}
 
 	// 4
-	// The inclusion of files generated by external programs such as
-	// makeindex or bibtex might have done changes to pagenumbering,
-	// etc. And because of this we must run the external programs
-	// again to make sure everything is redone correctly.
-	// Also there should be no need to run the external programs any
-	// more after this.
-
-	// run makeindex if the <file>.idx has changed or was generated.
-	if (head.haschanged(idxfile)) {
+	// After the bibliography was processed, we need more passes of LaTeX
+	// in order to resolve the citations. We need to do this before the index
+	// is being generated (since we need the correct pagination, see #2696).
+	// Also, memoir (at least) writes an empty *idx file in the first place.
+	// A further latex run is needed in that case as well.
+	FileName const idxfile(changeExtension(file.absFileName(), ".idx"));
+	if (run_bibtex || (idxfile.exists() && idxfile.isFileEmpty())) {
+		while ((head.sumchange() || rerun || (scanres & RERUN))
+		       && count < MAX_RUN) {
+			// Yes rerun until message goes away, or until
+			// MAX_RUNS are reached.
+			rerun = false;
+			++count;
+			LYXERR(Debug::LATEX, "Run #" << count);
+			message(runMessage(count));
+			startscript();
+			scanres = scanLogFile(terr);
+	
+			// keep this updated
+			head.update();
+		}
+	}
+
+	// 5
+	// Now that we have final pagination, run the index and nomencl processors
+	if (idxfile.exists()) {
 		// no checks for now
-		LYXERR(Debug::LATEX, "Running MakeIndex.");
+		LYXERR(Debug::LATEX, "Running Index Processor.");
 		message(_("Running Index Processor."));
 		// onlyFileName() is needed for cygwin
-		int const ret = runMakeIndex(onlyFileName(changeExtension(
-				file.absFileName(), ".idx")), runparams);
+		int const ret = 
+				runMakeIndex(onlyFileName(idxfile.absFileName()), runparams);
 		if (ret == Systemcall::KILLED || ret == Systemcall::TIMEOUT)
 			return ret;
 		FileName const ilgfile(changeExtension(file.absFileName(), ".ilg"));
@@ -469,15 +437,28 @@ int LaTeX::run(TeXErrors & terr)
 			iscanres = scanIlgFile(terr);
 		rerun = true;
 	}
+	FileName const nlofile(changeExtension(file.absFileName(), ".nlo"));
+	// If all nomencl entries are removed, nomencl writes an empty nlo file.
+	// DepTable::hasChanged() returns false in this case, since it does not
+	// distinguish empty files from non-existing files. This is why we need
+	// the extra checks here (to trigger a rerun). Cf. discussions in #8905.
+	// FIXME: Sort out the real problem in DepTable.
+	if (head.haschanged(nlofile) || (nlofile.exists() && nlofile.isFileEmpty())) {
+		int const ret = runMakeIndexNomencl(file, ".nlo", ".nls");
+		if (ret == Systemcall::KILLED || ret == Systemcall::TIMEOUT)
+			return ret;
+		rerun = true;
+	}
+	FileName const glofile(changeExtension(file.absFileName(), ".glo"));
+	if (head.haschanged(glofile)) {
+		int const ret = runMakeIndexNomencl(file, ".glo", ".gls");
+		if (ret)
+			return ret;
+		rerun = true;
+	}
 
-	// MSVC complains that bool |= int is unsafe. Not sure why.
-	if (head.haschanged(nlofile))
-		rerun |= (runMakeIndexNomencl(file, ".nlo", ".nls") != 0);
-	if (head.haschanged(glofile))
-		rerun |= (runMakeIndexNomencl(file, ".glo", ".gls") != 0);
-
-	// 5
-	// we will only run latex more if the log file asks for it.
+	// 6
+	// We will re-run latex if the log file asks for it,
 	// or if the sumchange() is true.
 	//     -> rerun asked for:
 	//             run latex and

commit 9729b22d9e964f22b18c9f82add716b91873c006
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Tue Feb 15 16:17:19 2022 +0100

    Always update buffer when language is being changed (#12481)

diff --git a/src/Text3.cpp b/src/Text3.cpp
index c75a9c3..777a580 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -118,6 +118,11 @@ static void toggleAndShow(Cursor & cur, Text * text,
 						       cur.real_current_font))
 			text->setCursor(cur, cur.pit(), cur.pos(),
 					false, !cur.boundary());
+		if (font.language() != ignore_language)
+			// We need a buffer update if we change the language
+			// (e.g., with info insets or if the selection contains
+			// a par label)
+			cur.forceBufferUpdate();
 	}
 }
 
@@ -2520,10 +2525,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 		selectWordWhenUnderCursor(cur, WHOLE_WORD_STRICT);
 		Font font(ignore_font, lang);
 		toggleAndShow(cur, this, font, toggle);
-		// We need a buffer update if we change the language
-		// of an info inset
-		if (cur.insetInSelection(INFO_CODE))
-			cur.forceBufferUpdate();
 		break;
 	}
 
@@ -2558,10 +2559,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 			freeFonts.push(make_pair(props, font));
 			toggleall = toggle;
 			toggleAndShow(cur, this, font, toggleall);
-			// We need a buffer update if we change the language
-			// of an info inset
-			if (cur.insetInSelection(INFO_CODE))
-				cur.forceBufferUpdate();
 			cur.message(bformat(_("Text properties applied: %1$s"), props));
 		} else
 			LYXERR0("Invalid argument of textstyle-update");

commit 895de6f960fd9cf8c7f59e3dc632f8bfbc5147e4
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Tue Feb 15 12:50:25 2022 +0100

    Whitespace

diff --git a/src/Layout.h b/src/Layout.h
index 99cc4df..a6c0d6c 100644
--- a/src/Layout.h
+++ b/src/Layout.h
@@ -116,11 +116,11 @@ public:
 		docstring docbooktag;
 		docstring docbooktagtype;
 		docstring docbookattr;
-        /// Whether this argument should be output after the main tag (default: inside). The result if the argument
-        /// should be output both before and after the main tag is undefined.
+		/// Whether this argument should be output after the main tag (default: inside). The result if the argument
+		/// should be output both before and after the main tag is undefined.
 		bool docbookargumentbeforemaintag = false;
-        /// Whether this argument should be output before the main tag (default: inside). The result if the argument
-        /// should be output both before and after the main tag is undefined.
+		/// Whether this argument should be output before the main tag (default: inside). The result if the argument
+		/// should be output both before and after the main tag is undefined.
 		bool docbookargumentaftermaintag = false;
 	};
 	///

commit 58b8eda64fd9ca174e8a2dd1f9d83e6e3dbe3ec6
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Tue Feb 15 10:53:34 2022 +0100

    de/Customization: fix typo.

diff --git a/lib/doc/de/Customization.lyx b/lib/doc/de/Customization.lyx
index a569eaa..e1728fd 100644
--- a/lib/doc/de/Customization.lyx
+++ b/lib/doc/de/Customization.lyx
@@ -1,5 +1,5 @@
 #LyX 2.4 created this file. For more info see https://www.lyx.org/
-\lyxformat 606
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
@@ -144,6 +144,7 @@ logicalmkup
 \html_css_as_file 0
 \html_be_strict false
 \docbook_table_output 0
+\docbook_mathml_prefix 1
 \end_header
 
 \begin_body
@@ -11293,7 +11294,7 @@ post:
 \end_inset
 
  werden jedoch nach diesem Arbeitsumgebungs-Argument ausgegeben.
- Bachten Sie, dass die Nummerierung solcher Post-Argumente wieder bei 1
+ Beachten Sie, dass die Nummerierung solcher Post-Argumente wieder bei 1
  beginnt.
  Das erste Argument, das dem Arbeitsumgebungs-Argument folgt, ist somit
  

commit 6fa457dddeea1693d32b3a43e97466506c9326f3
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Tue Feb 15 10:24:39 2022 +0100

    Fix #10649

diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp
index fef2467..3cce6af 100644
--- a/src/insets/InsetIndex.cpp
+++ b/src/insets/InsetIndex.cpp
@@ -161,8 +161,10 @@ void InsetIndex::latex(otexstream & ios, OutputParams const & runparams_in) cons
 														   "explained in the User Guide."), spart));
 			}
 			// remove remaining \'s for the sorting part
-			docstring const ppart =
+			docstring ppart =
 					subst(spart_latexed.first, from_ascii("\\"), docstring());
+			// Plain quotes need to be escaped, however (#10649)
+			ppart = subst(ppart, from_ascii("\""), from_ascii("\\\""));
 			os << ppart;
 			os << '@';
 		}

commit 66df0c36ca98074c32e1212375101ed13e5e8e98
Author: jpc <jpc at lyx.org>
Date:   Mon Feb 14 11:30:24 2022 +0100

                 Update fr.po

diff --git a/po/fr.gmo b/po/fr.gmo
index 1063fe5..93d6ba4 100644
Binary files a/po/fr.gmo and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
index 87f2247..a342fa0 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -362,8 +362,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-01-13 17:37+0100\n"
-"PO-Revision-Date: 2022-01-13 17:39+0100\n"
+"POT-Creation-Date: 2022-02-14 11:20+0100\n"
+"PO-Revision-Date: 2022-02-14 11:29+0100\n"
 "Last-Translator: Jean-Pierre Chrétien <jeanpierre.chretien at free.fr>\n"
 "Language-Team: lyxfr\n"
 "Language: fr\n"
@@ -739,9 +739,9 @@ msgstr "Sélectionner un fichier de style à partir de votre répertoire local"
 msgid "Add L&ocal..."
 msgstr "Ajouter l&ocal..."
 
-#: src/frontends/qt/ui/BibtexUi.ui:304 lib/layouts/beamer.layout:518
-#: lib/layouts/beamer.layout:547 lib/layouts/beamer.layout:558
-#: lib/layouts/beamer.layout:586 lib/layouts/beamer.layout:689
+#: src/frontends/qt/ui/BibtexUi.ui:304 lib/layouts/beamer.layout:520
+#: lib/layouts/beamer.layout:549 lib/layouts/beamer.layout:560
+#: lib/layouts/beamer.layout:588 lib/layouts/beamer.layout:691
 #: lib/layouts/chessboard.module:31 lib/layouts/chessboard.module:61
 #: lib/layouts/chessboard.module:139 lib/layouts/fixme.module:68
 #: lib/layouts/fixme.module:103 lib/layouts/fixme.module:146
@@ -937,7 +937,7 @@ msgstr "Élongation"
 
 #: src/frontends/qt/ui/BoxUi.ui:265 src/frontends/qt/ui/ListingsUi.ui:110
 #: src/frontends/qt/ui/TabularUi.ui:344 src/frontends/qt/ui/TabularUi.ui:1553
-#: src/frontends/qt/ui/WrapUi.ui:47 src/frontends/qt/GuiDocument.cpp:1552
+#: src/frontends/qt/ui/WrapUi.ui:47 src/frontends/qt/GuiDocument.cpp:1554
 #: src/frontends/qt/GuiParagraph.cpp:115 src/frontends/qt/GuiTabular.cpp:1042
 msgid "Left"
 msgstr "À gauche"
@@ -950,7 +950,7 @@ msgstr "Centré"
 
 #: src/frontends/qt/ui/BoxUi.ui:275 src/frontends/qt/ui/ListingsUi.ui:115
 #: src/frontends/qt/ui/TabularUi.ui:354 src/frontends/qt/ui/WrapUi.ui:52
-#: src/frontends/qt/GuiDocument.cpp:1554 src/frontends/qt/GuiParagraph.cpp:116
+#: src/frontends/qt/GuiDocument.cpp:1556 src/frontends/qt/GuiParagraph.cpp:116
 #: src/frontends/qt/GuiTabular.cpp:1044
 msgid "Right"
 msgstr "À droite"
@@ -1036,7 +1036,7 @@ msgid "Remove the selected branch"
 msgstr "Enlever la branche sélectionnée"
 
 #: src/frontends/qt/ui/BranchesUi.ui:74 src/frontends/qt/ui/IndicesUi.ui:165
-#: src/Buffer.cpp:4736 src/Buffer.cpp:4749
+#: src/Buffer.cpp:4733 src/Buffer.cpp:4746
 msgid "&Remove"
 msgstr "&Enlever"
 
@@ -1110,17 +1110,17 @@ msgid "Add A&ll"
 msgstr "Ajouter &tout"
 
 #: src/frontends/qt/ui/BranchesUnknownUi.ui:58 src/Buffer.cpp:1458
-#: src/Buffer.cpp:4710 src/Buffer.cpp:4820 src/LyXVC.cpp:114 src/LyXVC.cpp:310
+#: src/Buffer.cpp:4707 src/Buffer.cpp:4817 src/LyXVC.cpp:114 src/LyXVC.cpp:310
 #: src/buffer_funcs.cpp:56 src/frontends/qt/GuiBranches.cpp:226
-#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiDocument.cpp:2848
+#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiDocument.cpp:2852
 #: src/frontends/qt/GuiParagraph.cpp:177 src/frontends/qt/GuiPrefs.cpp:3414
-#: src/frontends/qt/GuiView.cpp:2865 src/frontends/qt/GuiView.cpp:3097
-#: src/frontends/qt/GuiView.cpp:3121 src/frontends/qt/GuiView.cpp:3135
-#: src/frontends/qt/GuiView.cpp:3237 src/frontends/qt/GuiView.cpp:3282
-#: src/frontends/qt/GuiView.cpp:3337 src/frontends/qt/GuiView.cpp:3571
-#: src/frontends/qt/GuiView.cpp:3585 src/frontends/qt/GuiView.cpp:3687
-#: src/frontends/qt/GuiView.cpp:3712 src/frontends/qt/GuiView.cpp:4416
-#: src/frontends/qt/GuiView.cpp:4423 src/insets/InsetBibtex.cpp:153
+#: src/frontends/qt/GuiView.cpp:2875 src/frontends/qt/GuiView.cpp:3107
+#: src/frontends/qt/GuiView.cpp:3131 src/frontends/qt/GuiView.cpp:3145
+#: src/frontends/qt/GuiView.cpp:3247 src/frontends/qt/GuiView.cpp:3292
+#: src/frontends/qt/GuiView.cpp:3347 src/frontends/qt/GuiView.cpp:3581
+#: src/frontends/qt/GuiView.cpp:3595 src/frontends/qt/GuiView.cpp:3697
+#: src/frontends/qt/GuiView.cpp:3722 src/frontends/qt/GuiView.cpp:4426
+#: src/frontends/qt/GuiView.cpp:4433 src/insets/InsetBibtex.cpp:153
 msgid "&Cancel"
 msgstr "&Annuler"
 
@@ -1133,7 +1133,7 @@ msgstr "Branches non définies dans ce document."
 msgid "&Undefined Branches:"
 msgstr "Branches &indéfinies :"
 
-#: src/frontends/qt/ui/BulletsUi.ui:17 src/frontends/qt/ui/PDFSupportUi.ui:421
+#: src/frontends/qt/ui/BulletsUi.ui:17 src/frontends/qt/ui/PDFSupportUi.ui:406
 msgid "&Level:"
 msgstr "&Niveau :"
 
@@ -1161,13 +1161,13 @@ msgstr "&Taille :"
 #: src/frontends/qt/GuiDocument.cpp:120 src/frontends/qt/GuiDocument.cpp:866
 #: src/frontends/qt/GuiDocument.cpp:886 src/frontends/qt/GuiDocument.cpp:1058
 #: src/frontends/qt/GuiDocument.cpp:1143 src/frontends/qt/GuiDocument.cpp:1189
-#: src/frontends/qt/GuiDocument.cpp:1200 src/frontends/qt/GuiDocument.cpp:1428
-#: src/frontends/qt/GuiDocument.cpp:1546 src/frontends/qt/GuiDocument.cpp:1553
-#: src/frontends/qt/GuiDocument.cpp:2586 src/frontends/qt/GuiDocument.cpp:2673
-#: src/frontends/qt/GuiDocument.cpp:2674 src/frontends/qt/GuiDocument.cpp:2675
-#: src/frontends/qt/GuiDocument.cpp:2699 src/frontends/qt/GuiDocument.cpp:2706
-#: src/frontends/qt/GuiDocument.cpp:2713 src/frontends/qt/GuiDocument.cpp:2803
-#: src/frontends/qt/GuiDocument.cpp:3409 src/frontends/qt/GuiDocument.cpp:4894
+#: src/frontends/qt/GuiDocument.cpp:1200 src/frontends/qt/GuiDocument.cpp:1430
+#: src/frontends/qt/GuiDocument.cpp:1548 src/frontends/qt/GuiDocument.cpp:1555
+#: src/frontends/qt/GuiDocument.cpp:2590 src/frontends/qt/GuiDocument.cpp:2677
+#: src/frontends/qt/GuiDocument.cpp:2678 src/frontends/qt/GuiDocument.cpp:2679
+#: src/frontends/qt/GuiDocument.cpp:2703 src/frontends/qt/GuiDocument.cpp:2710
+#: src/frontends/qt/GuiDocument.cpp:2717 src/frontends/qt/GuiDocument.cpp:2807
+#: src/frontends/qt/GuiDocument.cpp:3413 src/frontends/qt/GuiDocument.cpp:4908
 #: src/frontends/qt/GuiExternal.cpp:76 src/frontends/qt/GuiGraphics.cpp:71
 #: src/frontends/qt/GuiIndices.cpp:58 src/frontends/qt/GuiListings.cpp:160
 #: src/frontends/qt/GuiListings.cpp:167 src/frontends/qt/GuiPrefs.cpp:2483
@@ -1364,7 +1364,7 @@ msgstr "Lan&gue :"
 #: lib/layouts/bicaption.module:16 lib/layouts/europasscv.layout:440
 #: lib/layouts/europasscv.layout:475 lib/layouts/europasscv.layout:482
 #: lib/layouts/europecv.layout:321 lib/layouts/europecv.layout:327
-#: lib/layouts/moderncv.layout:580 src/frontends/qt/GuiDocument.cpp:1777
+#: lib/layouts/moderncv.layout:580 src/frontends/qt/GuiDocument.cpp:1781
 #: src/frontends/qt/GuiPrefs.cpp:2430 src/frontends/qt/Menus.cpp:938
 msgid "Language"
 msgstr "Langue"
@@ -1558,7 +1558,7 @@ msgid "Greyed-out notes:"
 msgstr "Notes grisées :"
 
 #: src/frontends/qt/ui/ColorUi.ui:118 src/frontends/qt/ui/ColorUi.ui:256
-#: src/frontends/qt/GuiDocument.cpp:2215 src/frontends/qt/GuiDocument.cpp:2245
+#: src/frontends/qt/GuiDocument.cpp:2219 src/frontends/qt/GuiDocument.cpp:2249
 msgid "&Change..."
 msgstr "&Modifier..."
 
@@ -3008,7 +3008,7 @@ msgstr "&Paquetage d'accentuation de la syntaxe :"
 #: lib/layouts/stdcounters.inc:77 lib/layouts/stdinsets.inc:338
 #: lib/layouts/stdinsets.inc:344 lib/layouts/stdinsets.inc:393
 #: lib/layouts/stdinsets.inc:399 src/insets/InsetCaption.cpp:410
-#: src/insets/InsetListings.cpp:611 src/insets/InsetListings.cpp:612
+#: src/insets/InsetListings.cpp:612 src/insets/InsetListings.cpp:613
 msgid "Listing"
 msgstr "Listing"
 
@@ -3681,7 +3681,7 @@ msgstr "Images"
 
 #: src/frontends/qt/ui/OutputUi.ui:279 lib/layouts/aapaper.layout:63
 #: lib/layouts/egs.layout:712 lib/languages:146
-#: src/frontends/qt/GuiDocument.cpp:1607 src/frontends/qt/GuiErrorList.cpp:50
+#: src/frontends/qt/GuiDocument.cpp:1609 src/frontends/qt/GuiErrorList.cpp:50
 #: src/frontends/qt/GuiLog.cpp:282 src/frontends/qt/GuiPrefs.cpp:642
 msgid "LaTeX"
 msgstr "LaTeX"
@@ -3760,108 +3760,126 @@ msgstr ""
 msgid "Put fra&gile content out of moving arguments"
 msgstr "Mettre les éléments fragiles hors des arguments mobiles"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:38
+#: src/frontends/qt/ui/PDFSupportUi.ui:23
 msgid "&Use hyperref support"
 msgstr "&Utiliser le support pour hyperref"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:72
+#: src/frontends/qt/ui/PDFSupportUi.ui:57
 msgid "&General"
 msgstr "&Général"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:119
+#: src/frontends/qt/ui/PDFSupportUi.ui:104
 msgid "Header Information"
 msgstr "Informations sur l'en-tête"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:134
+#: src/frontends/qt/ui/PDFSupportUi.ui:119
 msgid "&Title:"
 msgstr "&Titre :"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:147
+#: src/frontends/qt/ui/PDFSupportUi.ui:132
 msgid "&Author:"
 msgstr "&Auteur :"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:160
+#: src/frontends/qt/ui/PDFSupportUi.ui:145
 msgid "Sub&ject:"
 msgstr "Obj&et :"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:173
+#: src/frontends/qt/ui/PDFSupportUi.ui:158
 msgid "&Keywords:"
 msgstr "Mots-&clés :"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:206
+#: src/frontends/qt/ui/PDFSupportUi.ui:191
 msgid ""
 "If not stated explicitly, fill title and author from appropriate environments"
 msgstr ""
 "Sauf mention explicite, compléter le titre et l'auteur à partir des "
 "environnements appropriés"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:209
+#: src/frontends/qt/ui/PDFSupportUi.ui:194
 msgid "Automatically fi&ll header"
 msgstr "Compléter automatiquement &l'en-tête"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:216
+#: src/frontends/qt/ui/PDFSupportUi.ui:201
 msgid "Enable fullscreen PDF presentation"
 msgstr "Activer la présentation PDF plein écran"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:219
+#: src/frontends/qt/ui/PDFSupportUi.ui:204
 msgid "Load in &fullscreen mode"
 msgstr "Char&ger en mode plein écran"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:229
+#: src/frontends/qt/ui/PDFSupportUi.ui:214
 msgid "H&yperlinks"
 msgstr "H&yperliens"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:280
+#: src/frontends/qt/ui/PDFSupportUi.ui:265
 msgid "Allows link text to break across lines."
 msgstr "Permettre la césure des liens."
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:283
+#: src/frontends/qt/ui/PDFSupportUi.ui:268
 msgid "B&reak links over lines"
 msgstr "&Césure les liens"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:290
+#: src/frontends/qt/ui/PDFSupportUi.ui:275
 msgid "No &frames around links"
 msgstr "Pas de &cadre autour des liens"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:300
+#: src/frontends/qt/ui/PDFSupportUi.ui:285
 msgid "C&olor links"
 msgstr "C&ouleurs des liens"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:307
+#: src/frontends/qt/ui/PDFSupportUi.ui:292
 msgid "Bibliographical backreferences"
 msgstr "Renvois bibliographiques"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:310
+#: src/frontends/qt/ui/PDFSupportUi.ui:295
 msgid "B&ackreferences:"
 msgstr "R&envois :"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:339
+#: src/frontends/qt/ui/PDFSupportUi.ui:324
 msgid "&Bookmarks"
 msgstr "&Signets"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:360
+#: src/frontends/qt/ui/PDFSupportUi.ui:345
 msgid "G&enerate bookmarks (toc)"
 msgstr "Créer les sign&ets (TdM)"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:390
+#: src/frontends/qt/ui/PDFSupportUi.ui:375
 msgid "&Numbered bookmarks"
 msgstr "Signets &numérotés"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:397
+#: src/frontends/qt/ui/PDFSupportUi.ui:382
 msgid "&Open bookmark tree"
 msgstr "&Ouverture de l'arbre des signets"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:431
+#: src/frontends/qt/ui/PDFSupportUi.ui:416
 msgid "Number of levels"
 msgstr "Nombre de niveaux"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:473
+#: src/frontends/qt/ui/PDFSupportUi.ui:455
 msgid "Additional O&ptions"
 msgstr "Autres o&ptions"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:509
-msgid "e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
-msgstr "e.g. : pdfstartview=XYZ, plainpages=false, pdfpagelabels"
+#: src/frontends/qt/ui/PDFSupportUi.ui:461
+msgid ""
+"Additional hyperref options (comma-separated) to be passed via \\hypersetup."
+msgstr ""
+"Options hyperref supplémentaires (séparées par des virgules) devant être "
+"transmises via \\hypersetup."
+
+#: src/frontends/qt/ui/PDFSupportUi.ui:464
+msgid "Hyperse&tup"
+msgstr "Hyperse&tup"
+
+#: src/frontends/qt/ui/PDFSupportUi.ui:487
+msgid ""
+"Document metadata and PDF settings (as specified in LaTeX 06/2022 and later)"
+msgstr ""
+"Métadonnées du document et réglages du PDF (tels que spécifiés dans LaTeX "
+"06/2022 et suivants)"
+
+#: src/frontends/qt/ui/PDFSupportUi.ui:490
+msgid "Document &Metadata"
+msgstr "M&étadonnées du document"
 
 #: src/frontends/qt/ui/PageLayoutUi.ui:20
 msgid "Paper Format"
@@ -3892,7 +3910,7 @@ msgstr "Pa&ysage"
 
 #: src/frontends/qt/ui/PageLayoutUi.ui:162
 #: lib/layouts/customHeadersFooters.module:3 lib/layouts/landscape.module:3
-#: lib/layouts/multicol.module:3 src/frontends/qt/GuiDocument.cpp:1775
+#: lib/layouts/multicol.module:3 src/frontends/qt/GuiDocument.cpp:1779
 msgid "Page Layout"
 msgstr "Format de la page"
 
@@ -3939,7 +3957,7 @@ msgstr "Double"
 #: src/frontends/qt/GuiDocument.cpp:867 src/frontends/qt/GuiDocument.cpp:873
 #: src/frontends/qt/GuiDocument.cpp:881 src/frontends/qt/GuiDocument.cpp:997
 #: src/frontends/qt/GuiDocument.cpp:1064 src/frontends/qt/GuiDocument.cpp:1150
-#: src/frontends/qt/GuiDocument.cpp:1201 src/frontends/qt/GuiDocument.cpp:1547
+#: src/frontends/qt/GuiDocument.cpp:1201 src/frontends/qt/GuiDocument.cpp:1549
 #: src/frontends/qt/GuiHSpace.cpp:57 src/frontends/qt/GuiPrefs.cpp:816
 #: src/frontends/qt/GuiPrefs.cpp:844 src/frontends/qt/GuiPrefs.cpp:871
 #: src/frontends/qt/GuiPrefs.cpp:2329 src/frontends/qt/GuiPrefs.cpp:2352
@@ -4756,7 +4774,7 @@ msgstr ""
 "documents"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:77
-#: src/frontends/qt/GuiDocument.cpp:1060 src/frontends/qt/GuiDocument.cpp:2720
+#: src/frontends/qt/GuiDocument.cpp:1060 src/frontends/qt/GuiDocument.cpp:2724
 #: src/frontends/qt/GuiPrefs.cpp:815 src/frontends/qt/GuiPrefs.cpp:843
 msgid "Automatic"
 msgstr "Automatique"
@@ -6503,8 +6521,8 @@ msgstr "Seulement le corps"
 msgid "Select the output format"
 msgstr "Sélectionner le format de sortie"
 
-#: src/frontends/qt/ui/WorkAreaUi.ui:82 src/frontends/qt/GuiView.cpp:3712
-#: src/frontends/qt/GuiView.cpp:4416
+#: src/frontends/qt/ui/WorkAreaUi.ui:82 src/frontends/qt/GuiView.cpp:3722
+#: src/frontends/qt/GuiView.cpp:4426
 msgid "&Reload"
 msgstr "&Recharger"
 
@@ -7036,10 +7054,10 @@ msgstr "Notes de figure"
 #: lib/layouts/acmsiggraph-0-92.layout:44 lib/layouts/acmsiggraph.layout:36
 #: lib/layouts/agutex.layout:33 lib/layouts/amsart.layout:33
 #: lib/layouts/amsbook.layout:34 lib/layouts/apa.layout:26
-#: lib/layouts/apax.inc:22 lib/layouts/beamer.layout:65
-#: lib/layouts/beamer.layout:1209 lib/layouts/beamer.layout:1236
-#: lib/layouts/beamer.layout:1263 lib/layouts/beamer.layout:1388
-#: lib/layouts/beamer.layout:1425 lib/layouts/broadway.layout:179
+#: lib/layouts/apax.inc:22 lib/layouts/beamer.layout:67
+#: lib/layouts/beamer.layout:1211 lib/layouts/beamer.layout:1238
+#: lib/layouts/beamer.layout:1265 lib/layouts/beamer.layout:1390
+#: lib/layouts/beamer.layout:1427 lib/layouts/broadway.layout:179
 #: lib/layouts/cl2emult.layout:152 lib/layouts/db_stdclass.inc:17
 #: lib/layouts/dtk.layout:33 lib/layouts/egs.layout:20
 #: lib/layouts/elsart.layout:51 lib/layouts/elsarticle.layout:36
@@ -7080,7 +7098,7 @@ msgid "Text of a note in a figure"
 msgstr "Texte d'une note dans une figure"
 
 #: lib/layouts/AEA.layout:156 lib/layouts/apax.inc:240
-#: lib/layouts/beamer.layout:1437 lib/layouts/powerdot.layout:228
+#: lib/layouts/beamer.layout:1439 lib/layouts/powerdot.layout:228
 msgid "Note:"
 msgstr "Note :"
 
@@ -7098,7 +7116,7 @@ msgstr "Texte de note de tableau"
 
 #: lib/layouts/AEA.layout:180 lib/layouts/IEEEtran.layout:49
 #: lib/layouts/acmart.layout:548 lib/layouts/acmart.layout:552
-#: lib/layouts/beamer.layout:1376 lib/layouts/elsart.layout:306
+#: lib/layouts/beamer.layout:1378 lib/layouts/elsart.layout:306
 #: lib/layouts/elsart.layout:310 lib/layouts/foils.layout:248
 #: lib/layouts/heb-article.layout:28 lib/layouts/ijmpc.layout:421
 #: lib/layouts/ijmpd.layout:428 lib/layouts/ijmpd.layout:431
@@ -7283,7 +7301,7 @@ msgid "Conjecture"
 msgstr "Conjecture"
 
 #: lib/layouts/AEA.layout:241 lib/layouts/acmart.layout:587
-#: lib/layouts/beamer.layout:1292 lib/layouts/elsart.layout:381
+#: lib/layouts/beamer.layout:1294 lib/layouts/elsart.layout:381
 #: lib/layouts/foils.layout:281 lib/layouts/heb-article.layout:66
 #: lib/layouts/ijmpc.layout:442 lib/layouts/ijmpd.layout:457
 #: lib/layouts/ijmpd.layout:460 lib/layouts/llncs.layout:353
@@ -7331,7 +7349,7 @@ msgid "Criterion"
 msgstr "Critère"
 
 #: lib/layouts/AEA.layout:256 lib/layouts/acmart.layout:615
-#: lib/layouts/beamer.layout:1330 lib/layouts/elsart.layout:417
+#: lib/layouts/beamer.layout:1332 lib/layouts/elsart.layout:417
 #: lib/layouts/foils.layout:295 lib/layouts/heb-article.layout:86
 #: lib/layouts/llncs.layout:367 lib/layouts/siamltex.layout:128
 #: lib/layouts/svmono.layout:34 lib/layouts/theorems-ams-bytype.inc:180
@@ -7357,7 +7375,7 @@ msgid "Definition"
 msgstr "Définition"
 
 #: lib/layouts/AEA.layout:263 lib/layouts/acmart.layout:629
-#: lib/layouts/beamer.layout:1342 lib/layouts/elsart.layout:442
+#: lib/layouts/beamer.layout:1344 lib/layouts/elsart.layout:442
 #: lib/layouts/linguistics.module:18 lib/layouts/llncs.layout:374
 #: lib/layouts/svmono.layout:74 lib/layouts/theorems-ams-bytype.inc:207
 #: lib/layouts/theorems-ams-bytype.inc:217
@@ -7378,7 +7396,7 @@ msgstr "Définition"
 #: lib/layouts/theorems-without-preamble.inc:240
 #: lib/layouts/theorems-without-preamble.inc:243 lib/layouts/theorems.inc:204
 #: lib/layouts/theorems.inc:213 lib/layouts/theorems.inc:216
-#: src/frontends/qt/GuiDocument.cpp:1354
+#: src/frontends/qt/GuiDocument.cpp:1356
 msgid "Example"
 msgstr "Exemple"
 
@@ -7408,7 +7426,7 @@ msgid "Exercise"
 msgstr "Exercice"
 
 #: lib/layouts/AEA.layout:277 lib/layouts/acmart.layout:594
-#: lib/layouts/beamer.layout:1364 lib/layouts/elsart.layout:372
+#: lib/layouts/beamer.layout:1366 lib/layouts/elsart.layout:372
 #: lib/layouts/foils.layout:274 lib/layouts/heb-article.layout:56
 #: lib/layouts/ijmpc.layout:446 lib/layouts/ijmpd.layout:465
 #: lib/layouts/ijmpd.layout:468 lib/layouts/llncs.layout:388
@@ -7602,7 +7620,7 @@ msgid "Caption"
 msgstr "Légende"
 
 #: lib/layouts/AEA.layout:344 lib/layouts/IEEEtran.layout:448
-#: lib/layouts/beamer.layout:1370 lib/layouts/elsart.layout:342
+#: lib/layouts/beamer.layout:1372 lib/layouts/elsart.layout:342
 #: lib/layouts/foils.layout:309 lib/layouts/heb-article.layout:106
 #: lib/layouts/ijmpc.layout:399 lib/layouts/ijmpd.layout:405
 #: lib/layouts/llncs.layout:408 lib/layouts/siamltex.layout:157
@@ -7655,7 +7673,7 @@ msgstr "Transactions IEEE"
 #: lib/layouts/acmsiggraph-0-92.layout:43 lib/layouts/acmsiggraph.layout:35
 #: lib/layouts/agutex.layout:32 lib/layouts/amsart.layout:32
 #: lib/layouts/amsbook.layout:33 lib/layouts/apa.layout:25
-#: lib/layouts/apax.inc:21 lib/layouts/beamer.layout:64
+#: lib/layouts/apax.inc:21 lib/layouts/beamer.layout:66
 #: lib/layouts/broadway.layout:178 lib/layouts/chess.layout:30
 #: lib/layouts/cl2emult.layout:151 lib/layouts/db_stdclass.inc:16
 #: lib/layouts/dtk.layout:32 lib/layouts/egs.layout:19
@@ -7687,7 +7705,7 @@ msgstr "Standard"
 #: lib/layouts/acmart.layout:145 lib/layouts/acmsiggraph-0-92.layout:165
 #: lib/layouts/acmsiggraph.layout:141 lib/layouts/agutex.layout:56
 #: lib/layouts/amsdefs.inc:27 lib/layouts/apa.layout:42 lib/layouts/apax.inc:38
-#: lib/layouts/beamer.layout:984 lib/layouts/beamerposter.layout:21
+#: lib/layouts/beamer.layout:986 lib/layouts/beamerposter.layout:21
 #: lib/layouts/broadway.layout:192 lib/layouts/cl2emult.layout:41
 #: lib/layouts/copernicus.layout:34 lib/layouts/docbook-book.layout:18
 #: lib/layouts/docbook-chapter.layout:14 lib/layouts/docbook-section.layout:14
@@ -7730,7 +7748,7 @@ msgstr "minuscules"
 #: lib/layouts/achemso.layout:84 lib/layouts/acmart.layout:81
 #: lib/layouts/acmsiggraph-0-92.layout:178 lib/layouts/acmsiggraph.layout:154
 #: lib/layouts/amsdefs.inc:57 lib/layouts/apa.layout:139
-#: lib/layouts/apax.inc:80 lib/layouts/beamer.layout:1048
+#: lib/layouts/apax.inc:80 lib/layouts/beamer.layout:1050
 #: lib/layouts/beamerposter.layout:31 lib/layouts/broadway.layout:210
 #: lib/layouts/cl2emult.layout:63 lib/layouts/copernicus.layout:61
 #: lib/layouts/ectaart.layout:131 lib/layouts/ectaart.layout:217
@@ -7752,7 +7770,7 @@ msgstr "minuscules"
 msgid "Author"
 msgstr "Auteur"
 
-#: lib/layouts/IEEEtran.layout:129 lib/layouts/beamer.layout:1061
+#: lib/layouts/IEEEtran.layout:129 lib/layouts/beamer.layout:1063
 msgid "Short Author|S"
 msgstr "Nom d'auteur court|a"
 
@@ -7846,7 +7864,7 @@ msgstr "Annexes"
 #: lib/layouts/acmsiggraph.layout:305 lib/layouts/agutex.layout:167
 #: lib/layouts/agutex.layout:177 lib/layouts/agutex.layout:197
 #: lib/layouts/agutex.layout:223 lib/layouts/amsdefs.inc:266
-#: lib/layouts/apa.layout:244 lib/layouts/beamer.layout:1169
+#: lib/layouts/apa.layout:244 lib/layouts/beamer.layout:1171
 #: lib/layouts/copernicus.layout:437 lib/layouts/egs.layout:588
 #: lib/layouts/egs.layout:639 lib/layouts/elsarticle.layout:333
 #: lib/layouts/europasscv.layout:539 lib/layouts/europecv.layout:380
@@ -7885,7 +7903,7 @@ msgstr "TitreRevueExpert"
 #: lib/layouts/ijmpc.layout:496 lib/layouts/ijmpc.layout:498
 #: lib/layouts/ijmpd.layout:520 lib/layouts/ijmpd.layout:522
 #: lib/layouts/kluwer.layout:364 lib/layouts/kluwer.layout:377
-#: lib/examples/Articles:0 src/RowPainter.cpp:373
+#: lib/examples/Articles:0 src/RowPainter.cpp:374
 msgid "Appendix"
 msgstr "Annexe"
 
@@ -7902,7 +7920,7 @@ msgstr "Titre court pour l'annexe"
 #: lib/layouts/aapaper.layout:234 lib/layouts/aastex.layout:450
 #: lib/layouts/aguplus.inc:172 lib/layouts/aguplus.inc:174
 #: lib/layouts/agutex.layout:219 lib/layouts/amsbook.layout:121
-#: lib/layouts/amsdefs.inc:265 lib/layouts/beamer.layout:1168
+#: lib/layouts/amsdefs.inc:265 lib/layouts/beamer.layout:1170
 #: lib/layouts/book.layout:24 lib/layouts/book.layout:26
 #: lib/layouts/cl2emult.layout:115 lib/layouts/copernicus.layout:433
 #: lib/layouts/egs.layout:638 lib/layouts/elsarticle.layout:329
@@ -7922,13 +7940,13 @@ msgstr "Titre court pour l'annexe"
 #: lib/layouts/stdstruct.inc:59 lib/layouts/svcommon.inc:657
 #: lib/layouts/tufte-book.layout:298 lib/layouts/tufte-book.layout:300
 #: lib/layouts/tufte-handout.layout:77 lib/examples/Articles:0
-#: src/frontends/qt/GuiDocument.cpp:1781 src/insets/InsetBibtex.cpp:957
+#: src/frontends/qt/GuiDocument.cpp:1785 src/insets/InsetBibtex.cpp:957
 msgid "Bibliography"
 msgstr "Bibliographie"
 
 #: lib/layouts/IEEEtran.layout:389 lib/layouts/aastex.layout:464
 #: lib/layouts/aastex.layout:485 lib/layouts/agutex.layout:235
-#: lib/layouts/amsdefs.inc:281 lib/layouts/beamer.layout:1183
+#: lib/layouts/amsdefs.inc:281 lib/layouts/beamer.layout:1185
 #: lib/layouts/cl2emult.layout:130 lib/layouts/copernicus.layout:449
 #: lib/layouts/egs.layout:654 lib/layouts/elsarticle.layout:345
 #: lib/layouts/ijmpc.layout:540 lib/layouts/ijmpd.layout:564
@@ -7945,7 +7963,7 @@ msgstr "Références"
 
 #: lib/layouts/IEEEtran.layout:398 lib/layouts/aastex.layout:474
 #: lib/layouts/agutex.layout:244 lib/layouts/amsdefs.inc:293
-#: lib/layouts/beamer.layout:1192 lib/layouts/cl2emult.layout:139
+#: lib/layouts/beamer.layout:1194 lib/layouts/cl2emult.layout:139
 #: lib/layouts/copernicus.layout:457 lib/layouts/egs.layout:662
 #: lib/layouts/elsarticle.layout:354 lib/layouts/ijmpc.layout:549
 #: lib/layouts/ijmpd.layout:573 lib/layouts/iopart.layout:346
@@ -7959,7 +7977,7 @@ msgstr "Préambule biblio"
 
 #: lib/layouts/IEEEtran.layout:399 lib/layouts/aastex.layout:475
 #: lib/layouts/agutex.layout:245 lib/layouts/amsdefs.inc:294
-#: lib/layouts/beamer.layout:1193 lib/layouts/cl2emult.layout:140
+#: lib/layouts/beamer.layout:1195 lib/layouts/cl2emult.layout:140
 #: lib/layouts/copernicus.layout:458 lib/layouts/egs.layout:663
 #: lib/layouts/elsarticle.layout:355 lib/layouts/ijmpc.layout:550
 #: lib/layouts/ijmpd.layout:574 lib/layouts/iopart.layout:347
@@ -7973,7 +7991,7 @@ msgstr "Préambule bibliographique"
 
 #: lib/layouts/IEEEtran.layout:400 lib/layouts/aastex.layout:476
 #: lib/layouts/agutex.layout:246 lib/layouts/amsdefs.inc:295
-#: lib/layouts/beamer.layout:1194 lib/layouts/cl2emult.layout:141
+#: lib/layouts/beamer.layout:1196 lib/layouts/cl2emult.layout:141
 #: lib/layouts/copernicus.layout:459 lib/layouts/egs.layout:664
 #: lib/layouts/elsarticle.layout:356 lib/layouts/ijmpc.layout:551
 #: lib/layouts/ijmpd.layout:575 lib/layouts/iopart.layout:348
@@ -8026,7 +8044,7 @@ msgid "BiographyNoPhoto"
 msgstr "BiographieSansPhoto"
 
 #: lib/layouts/IEEEtran.layout:449 lib/layouts/acmart.layout:553
-#: lib/layouts/beamer.layout:1293 lib/layouts/elsart.layout:311
+#: lib/layouts/beamer.layout:1295 lib/layouts/elsart.layout:311
 #: lib/layouts/elsart.layout:343 lib/layouts/foils.layout:249
 #: lib/layouts/heb-article.layout:29 lib/layouts/heb-article.layout:107
 #: lib/layouts/ijmpc.layout:402 lib/layouts/ijmpd.layout:408
@@ -8049,7 +8067,7 @@ msgstr "Autre expression de la preuve"
 msgid "An alternative proof string"
 msgstr "Une autre preuve"
 
-#: lib/layouts/IEEEtran.layout:468 lib/layouts/beamer.layout:1373
+#: lib/layouts/IEEEtran.layout:468 lib/layouts/beamer.layout:1375
 #: lib/layouts/foils.layout:312 lib/layouts/llncs.layout:411
 #: lib/layouts/siamltex.layout:176 lib/layouts/svcommon.inc:748
 #: lib/layouts/svmono.layout:103 lib/layouts/svmono.layout:107
@@ -8205,7 +8223,7 @@ msgstr "Astronomy & Astrophysics"
 
 #: lib/layouts/aa.layout:69 lib/layouts/aapaper.inc:9
 #: lib/layouts/aapaper.layout:81 lib/layouts/acm-sigs.inc:10
-#: lib/layouts/acmart.layout:160 lib/layouts/beamer.layout:1021
+#: lib/layouts/acmart.layout:160 lib/layouts/beamer.layout:1023
 #: lib/layouts/beamerposter.layout:26 lib/layouts/kluwer.layout:136
 #: lib/layouts/llncs.layout:135 lib/layouts/scrclass.inc:217
 #: lib/layouts/sigplanconf.layout:138 lib/layouts/svcommon.inc:356
@@ -8241,7 +8259,7 @@ msgstr "Remerciements."
 #: lib/layouts/aapaper.layout:139 lib/layouts/aastex.layout:97
 #: lib/layouts/aguplus.inc:29 lib/layouts/amsart.layout:66
 #: lib/layouts/amsbook.layout:57 lib/layouts/apa.layout:339
-#: lib/layouts/apax.inc:438 lib/layouts/beamer.layout:288
+#: lib/layouts/apax.inc:438 lib/layouts/beamer.layout:290
 #: lib/layouts/egs.layout:33 lib/layouts/europasscv.layout:264
 #: lib/layouts/europecv.layout:193 lib/layouts/isprs.layout:160
 #: lib/layouts/iucr.layout:47 lib/layouts/jss.layout:25
@@ -8264,7 +8282,7 @@ msgstr "Section"
 #: lib/layouts/aapaper.layout:149 lib/layouts/aastex.layout:110
 #: lib/layouts/aguplus.inc:44 lib/layouts/amsart.layout:107
 #: lib/layouts/amsbook.layout:67 lib/layouts/apa.layout:350
-#: lib/layouts/apax.inc:449 lib/layouts/beamer.layout:350
+#: lib/layouts/apax.inc:449 lib/layouts/beamer.layout:352
 #: lib/layouts/egs.layout:56 lib/layouts/isprs.layout:172
 #: lib/layouts/iucr.layout:53 lib/layouts/jss.layout:29
 #: lib/layouts/kluwer.layout:72 lib/layouts/latex8.layout:59
@@ -8282,7 +8300,7 @@ msgstr "SousSection"
 #: lib/layouts/aapaper.layout:161 lib/layouts/aastex.layout:123
 #: lib/layouts/amsart.layout:130 lib/layouts/amsbook.layout:76
 #: lib/layouts/apa.layout:360 lib/layouts/apax.inc:459
-#: lib/layouts/beamer.layout:412 lib/layouts/isprs.layout:182
+#: lib/layouts/beamer.layout:414 lib/layouts/isprs.layout:182
 #: lib/layouts/iucr.layout:61 lib/layouts/jss.layout:33
 #: lib/layouts/kluwer.layout:82 lib/layouts/llncs.layout:67
 #: lib/layouts/ltugboat.layout:90 lib/layouts/memoir.layout:129
@@ -8298,7 +8316,7 @@ msgstr "SousSousSection"
 #: lib/layouts/aa.layout:253 lib/layouts/aapaper.layout:99
 #: lib/layouts/aapaper.layout:202 lib/layouts/aastex.layout:265
 #: lib/layouts/acmart.layout:133 lib/layouts/amsdefs.inc:82
-#: lib/layouts/beamer.layout:1120 lib/layouts/beamerposter.layout:41
+#: lib/layouts/beamer.layout:1122 lib/layouts/beamerposter.layout:41
 #: lib/layouts/dinbrief.layout:218 lib/layouts/egs.layout:550
 #: lib/layouts/foils.layout:169 lib/layouts/frletter.layout:24
 #: lib/layouts/g-brief.layout:199 lib/layouts/g-brief2.layout:54
@@ -8318,7 +8336,7 @@ msgstr "Date"
 msgid "institutemark"
 msgstr "marqueinstitution"
 
-#: lib/layouts/aa.layout:273 lib/layouts/beamer.layout:1103
+#: lib/layouts/aa.layout:273 lib/layouts/beamer.layout:1105
 msgid "Institute Mark"
 msgstr "Marque d'institution"
 
@@ -8370,7 +8388,7 @@ msgstr "Résultat des travaux"
 msgid "Key words."
 msgstr "Mots-clés."
 
-#: lib/layouts/aa.layout:395 lib/layouts/beamer.layout:1076
+#: lib/layouts/aa.layout:395 lib/layouts/beamer.layout:1078
 #: lib/layouts/beamerposter.layout:36 lib/layouts/cl2emult.layout:81
 #: lib/layouts/llncs.layout:231 lib/layouts/sciposter.layout:24
 #: lib/layouts/svcommon.inc:384
@@ -8421,20 +8439,20 @@ msgid "Obsolete"
 msgstr "Obsolète"
 
 #: lib/layouts/aapaper.layout:50 lib/layouts/apa.layout:391
-#: lib/layouts/apax.inc:490 lib/layouts/beamer.layout:82
+#: lib/layouts/apax.inc:490 lib/layouts/beamer.layout:84
 #: lib/layouts/egs.layout:203 lib/layouts/powerdot.layout:264
 #: lib/layouts/simplecv.layout:108 lib/layouts/stdlists.inc:13
 msgid "Itemize"
 msgstr "ListePuces"
 
 #: lib/layouts/aapaper.layout:53 lib/layouts/apa.layout:427
-#: lib/layouts/apax.inc:527 lib/layouts/beamer.layout:131
+#: lib/layouts/apax.inc:527 lib/layouts/beamer.layout:133
 #: lib/layouts/egs.layout:166 lib/layouts/powerdot.layout:326
 #: lib/layouts/stdlists.inc:52
 msgid "Enumerate"
 msgstr "Énumération"
 
-#: lib/layouts/aapaper.layout:56 lib/layouts/beamer.layout:186
+#: lib/layouts/aapaper.layout:56 lib/layouts/beamer.layout:188
 #: lib/layouts/egs.layout:239 lib/layouts/hollywood.layout:130
 #: lib/layouts/paper.layout:110 lib/layouts/scrclass.inc:55
 #: lib/layouts/scrlettr.layout:21 lib/layouts/scrlttr2.layout:33
@@ -8446,8 +8464,8 @@ msgstr "Description"
 #: lib/layouts/aapaper.layout:59 lib/layouts/algorithm2e.module:34
 #: lib/layouts/apa.layout:392 lib/layouts/apa.layout:428
 #: lib/layouts/apa.layout:466 lib/layouts/apax.inc:491 lib/layouts/apax.inc:528
-#: lib/layouts/apax.inc:566 lib/layouts/beamer.layout:83
-#: lib/layouts/beamer.layout:132 lib/layouts/beamer.layout:187
+#: lib/layouts/apax.inc:566 lib/layouts/beamer.layout:85
+#: lib/layouts/beamer.layout:134 lib/layouts/beamer.layout:189
 #: lib/layouts/egs.layout:139 lib/layouts/egs.layout:167
 #: lib/layouts/egs.layout:204 lib/layouts/enumitem.module:88
 #: lib/layouts/europasscv.layout:400 lib/layouts/foils.layout:87
@@ -8498,9 +8516,9 @@ msgstr "Autre affiliation :"
 msgid "And"
 msgstr "Et"
 
-#: lib/layouts/aastex.layout:256 src/frontends/qt/GuiDocument.cpp:3148
-#: src/frontends/qt/GuiDocument.cpp:3160 src/frontends/qt/GuiDocument.cpp:3286
-#: src/frontends/qt/GuiDocument.cpp:3305
+#: lib/layouts/aastex.layout:256 src/frontends/qt/GuiDocument.cpp:3152
+#: src/frontends/qt/GuiDocument.cpp:3164 src/frontends/qt/GuiDocument.cpp:3290
+#: src/frontends/qt/GuiDocument.cpp:3309
 msgid "and"
 msgstr "et"
 
@@ -8749,9 +8767,9 @@ msgstr "American Chemical Society (ACS)"
 
 #: lib/layouts/achemso.layout:75 lib/layouts/amsdefs.inc:41
 #: lib/layouts/apa.layout:291 lib/layouts/apax.inc:390
-#: lib/layouts/beamer.layout:260 lib/layouts/beamer.layout:315
-#: lib/layouts/beamer.layout:377 lib/layouts/beamer.layout:439
-#: lib/layouts/beamer.layout:998 lib/layouts/europecv.layout:201
+#: lib/layouts/beamer.layout:262 lib/layouts/beamer.layout:317
+#: lib/layouts/beamer.layout:379 lib/layouts/beamer.layout:441
+#: lib/layouts/beamer.layout:1000 lib/layouts/europecv.layout:201
 #: lib/layouts/iopart.layout:67 lib/layouts/jasatex.layout:75
 #: lib/layouts/memoir.layout:68 lib/layouts/revtex4-x.inc:245
 #: lib/layouts/scrclass.inc:142 lib/layouts/scrclass.inc:155
@@ -9220,7 +9238,7 @@ msgstr "Barre latérale (uniquement sigchi-a)"
 msgid "Margin figure (sigchi-a only)"
 msgstr "Fi)gure en marge (uniquement sigchi-a)"
 
-#: lib/layouts/acmart.layout:526 lib/layouts/beamer.layout:1726
+#: lib/layouts/acmart.layout:526 lib/layouts/beamer.layout:1728
 #: lib/layouts/powerdot.layout:577 lib/layouts/sciposter.layout:109
 #: lib/layouts/stdfloats.inc:33 lib/layouts/tufte-book.layout:292
 msgid "List of Figures"
@@ -9230,7 +9248,7 @@ msgstr "Liste des figures"
 msgid "Margin table (sigchi-a only)"
 msgstr "Tableau en marge (uniquement sigchi-a)"
 
-#: lib/layouts/acmart.layout:539 lib/layouts/beamer.layout:1713
+#: lib/layouts/acmart.layout:539 lib/layouts/beamer.layout:1715
 #: lib/layouts/powerdot.layout:560 lib/layouts/sciposter.layout:123
 #: lib/layouts/stdfloats.inc:18 lib/layouts/tufte-book.layout:276
 msgid "List of Tables"
@@ -9243,7 +9261,7 @@ msgstr "Liste des tableaux"
 msgid "Definitions & Theorems"
 msgstr "Définitions & théorèmes"
 
-#: lib/layouts/acmart.layout:562 lib/layouts/beamer.layout:1322
+#: lib/layouts/acmart.layout:562 lib/layouts/beamer.layout:1324
 #: lib/layouts/theorems-ams-bytype.inc:40
 #: lib/layouts/theorems-ams-chap-bytype.inc:82 lib/layouts/theorems-ams.inc:37
 #: lib/layouts/theorems-bytype.inc:35 lib/layouts/theorems-named.module:22
@@ -9251,7 +9269,7 @@ msgstr "Définitions & théorèmes"
 msgid "Additional Theorem Text"
 msgstr "Texte de théorème complémentaire"
 
-#: lib/layouts/acmart.layout:563 lib/layouts/beamer.layout:1323
+#: lib/layouts/acmart.layout:563 lib/layouts/beamer.layout:1325
 #: lib/layouts/theorems-ams-bytype.inc:41
 #: lib/layouts/theorems-ams-chap-bytype.inc:83 lib/layouts/theorems-ams.inc:38
 #: lib/layouts/theorems-bytype.inc:36 lib/layouts/theorems-named.module:23
@@ -9548,7 +9566,7 @@ msgid "American Geophysical Union (AGUPLUS Manuscript)"
 msgstr "American Geophysical Union (AGUPLUS Manuscript)"
 
 #: lib/layouts/aguplus.inc:37 lib/layouts/amsart.layout:77
-#: lib/layouts/amsbook.layout:86 lib/layouts/beamer.layout:332
+#: lib/layouts/amsbook.layout:86 lib/layouts/beamer.layout:334
 #: lib/layouts/egs.layout:676 lib/layouts/isprs.layout:192
 #: lib/layouts/spie.layout:32 lib/layouts/stdstarsections.inc:43
 #: lib/layouts/svcommon.inc:278
@@ -9556,7 +9574,7 @@ msgid "Section*"
 msgstr "Section*"
 
 #: lib/layouts/aguplus.inc:52 lib/layouts/amsart.layout:119
-#: lib/layouts/amsbook.layout:95 lib/layouts/beamer.layout:394
+#: lib/layouts/amsbook.layout:95 lib/layouts/beamer.layout:396
 #: lib/layouts/egs.layout:696 lib/layouts/isprs.layout:203
 #: lib/layouts/stdstarsections.inc:58 lib/layouts/svcommon.inc:286
 msgid "Subsection*"
@@ -9673,7 +9691,7 @@ msgstr "Planche"
 msgid "Planotable"
 msgstr "Planche de tableaux"
 
-#: lib/layouts/aguplus.inc:211 lib/layouts/beamer.layout:1708
+#: lib/layouts/aguplus.inc:211 lib/layouts/beamer.layout:1710
 #: lib/layouts/powerdot.layout:553 lib/layouts/powerdot.layout:631
 #: lib/layouts/sciposter.layout:118 lib/layouts/stdfloats.inc:13
 #: lib/ui/stdtoolbars.inc:153 src/insets/Inset.cpp:104
@@ -9751,8 +9769,8 @@ msgstr "Section-spéciale"
 msgid "SpecialSection*"
 msgstr "Section-spéciale*"
 
-#: lib/layouts/amsart.layout:98 lib/layouts/beamer.layout:334
-#: lib/layouts/beamer.layout:396 lib/layouts/beamer.layout:458
+#: lib/layouts/amsart.layout:98 lib/layouts/beamer.layout:336
+#: lib/layouts/beamer.layout:398 lib/layouts/beamer.layout:460
 #: lib/layouts/memoir.layout:248 lib/layouts/stdinsets.inc:713
 #: lib/layouts/stdstarsections.inc:15 lib/layouts/stdstarsections.inc:30
 #: lib/layouts/stdstarsections.inc:45 lib/layouts/stdstarsections.inc:60
@@ -9762,7 +9780,7 @@ msgid "Unnumbered"
 msgstr "NonNuméroté"
 
 #: lib/layouts/amsart.layout:140 lib/layouts/amsbook.layout:103
-#: lib/layouts/beamer.layout:456 lib/layouts/isprs.layout:212
+#: lib/layouts/beamer.layout:458 lib/layouts/isprs.layout:212
 #: lib/layouts/stdstarsections.inc:73 lib/layouts/svcommon.inc:294
 msgid "Subsubsection*"
 msgstr "SousSousSection*"
@@ -9787,8 +9805,8 @@ msgstr "Exercices_Chapitre"
 #: lib/layouts/amsbook.layout:166 lib/layouts/apa.layout:412
 #: lib/layouts/apa.layout:450 lib/layouts/apa.layout:486
 #: lib/layouts/apax.inc:512 lib/layouts/apax.inc:550 lib/layouts/apax.inc:586
-#: lib/layouts/beamer.layout:107 lib/layouts/beamer.layout:160
-#: lib/layouts/beamer.layout:203 lib/layouts/beamer.layout:788
+#: lib/layouts/beamer.layout:109 lib/layouts/beamer.layout:162
+#: lib/layouts/beamer.layout:205 lib/layouts/beamer.layout:790
 #: lib/layouts/egs.layout:154 lib/layouts/egs.layout:188
 #: lib/layouts/egs.layout:224 lib/layouts/egs.layout:259
 #: lib/layouts/europasscv.layout:405 lib/layouts/foils.layout:105
@@ -9806,8 +9824,8 @@ msgstr "Aperçu préambule"
 #: lib/layouts/amsbook.layout:167 lib/layouts/apa.layout:413
 #: lib/layouts/apa.layout:451 lib/layouts/apa.layout:487
 #: lib/layouts/apax.inc:513 lib/layouts/apax.inc:551 lib/layouts/apax.inc:587
-#: lib/layouts/beamer.layout:108 lib/layouts/beamer.layout:161
-#: lib/layouts/beamer.layout:204 lib/layouts/beamer.layout:789
+#: lib/layouts/beamer.layout:110 lib/layouts/beamer.layout:163
+#: lib/layouts/beamer.layout:206 lib/layouts/beamer.layout:791
 #: lib/layouts/egs.layout:155 lib/layouts/egs.layout:189
 #: lib/layouts/egs.layout:225 lib/layouts/egs.layout:260
 #: lib/layouts/europasscv.layout:406 lib/layouts/foils.layout:106
@@ -9825,8 +9843,8 @@ msgstr "Aperçu préambule"
 #: lib/layouts/amsbook.layout:168 lib/layouts/apa.layout:414
 #: lib/layouts/apa.layout:452 lib/layouts/apa.layout:488
 #: lib/layouts/apax.inc:514 lib/layouts/apax.inc:552 lib/layouts/apax.inc:588
-#: lib/layouts/beamer.layout:109 lib/layouts/beamer.layout:162
-#: lib/layouts/beamer.layout:205 lib/layouts/beamer.layout:790
+#: lib/layouts/beamer.layout:111 lib/layouts/beamer.layout:164
+#: lib/layouts/beamer.layout:207 lib/layouts/beamer.layout:792
 #: lib/layouts/egs.layout:156 lib/layouts/egs.layout:190
 #: lib/layouts/egs.layout:226 lib/layouts/egs.layout:261
 #: lib/layouts/europasscv.layout:407 lib/layouts/foils.layout:107
@@ -10002,7 +10020,7 @@ msgstr "SousParagraphe"
 
 #: lib/layouts/apa.layout:408 lib/layouts/apa.layout:446
 #: lib/layouts/apax.inc:508 lib/layouts/apax.inc:546
-#: lib/layouts/beamer.layout:95 lib/layouts/beamer.layout:148
+#: lib/layouts/beamer.layout:97 lib/layouts/beamer.layout:150
 #: lib/layouts/egs.layout:184 lib/layouts/egs.layout:220
 #: lib/layouts/europasscv.layout:428 lib/layouts/powerdot.layout:299
 #: lib/layouts/powerdot.layout:364 lib/layouts/stdlists.inc:33
@@ -10012,7 +10030,7 @@ msgstr "Élément paramétrable|É"
 
 #: lib/layouts/apa.layout:409 lib/layouts/apa.layout:447
 #: lib/layouts/apax.inc:509 lib/layouts/apax.inc:547
-#: lib/layouts/beamer.layout:96 lib/layouts/beamer.layout:149
+#: lib/layouts/beamer.layout:98 lib/layouts/beamer.layout:151
 #: lib/layouts/egs.layout:185 lib/layouts/egs.layout:221
 #: lib/layouts/europasscv.layout:429 lib/layouts/powerdot.layout:300
 #: lib/layouts/powerdot.layout:365 lib/layouts/stdlists.inc:34
@@ -10062,7 +10080,7 @@ msgstr "CinqAffiliations"
 msgid "SixAffiliations"
 msgstr "SixAffiliations"
 
-#: lib/layouts/apax.inc:227 lib/layouts/beamer.layout:1655
+#: lib/layouts/apax.inc:227 lib/layouts/beamer.layout:1657
 #: lib/layouts/elsart.layout:470 lib/layouts/fixme.module:108
 #: lib/layouts/iopart.layout:106 lib/layouts/llncs.layout:394
 #: lib/layouts/powerdot.layout:215 lib/layouts/slides.layout:170
@@ -10142,8 +10160,8 @@ msgstr "Article Beamer (classe standard)"
 msgid "Article (Standard Class)"
 msgstr "Article (classe standard)"
 
-#: lib/layouts/article.layout:21 lib/layouts/beamer.layout:246
-#: lib/layouts/beamer.layout:275 lib/layouts/memoir.layout:66
+#: lib/layouts/article.layout:21 lib/layouts/beamer.layout:248
+#: lib/layouts/beamer.layout:277 lib/layouts/memoir.layout:66
 #: lib/layouts/mwart.layout:25 lib/layouts/paper.layout:55
 #: lib/layouts/scrartcl.layout:22 lib/layouts/scrclass.inc:77
 #: lib/layouts/stdcounters.inc:9 lib/layouts/stdsections.inc:12
@@ -10169,63 +10187,63 @@ msgstr "Beamer"
 msgid "Presentations"
 msgstr "Présentations"
 
-#: lib/layouts/beamer.layout:88 lib/layouts/beamer.layout:137
-#: lib/layouts/beamer.layout:192 lib/layouts/beamer.layout:503
-#: lib/layouts/beamer.layout:571 lib/layouts/beamer.layout:629
-#: lib/layouts/beamer.layout:659 lib/layouts/beamer.layout:875
-#: lib/layouts/beamer.layout:904 lib/layouts/beamer.layout:1227
-#: lib/layouts/beamer.layout:1252 lib/layouts/beamer.layout:1279
-#: lib/layouts/beamer.layout:1445
+#: lib/layouts/beamer.layout:90 lib/layouts/beamer.layout:139
+#: lib/layouts/beamer.layout:194 lib/layouts/beamer.layout:505
+#: lib/layouts/beamer.layout:573 lib/layouts/beamer.layout:631
+#: lib/layouts/beamer.layout:661 lib/layouts/beamer.layout:877
+#: lib/layouts/beamer.layout:906 lib/layouts/beamer.layout:1229
+#: lib/layouts/beamer.layout:1254 lib/layouts/beamer.layout:1281
+#: lib/layouts/beamer.layout:1447
 msgid "Overlay Specifications|v"
 msgstr "Spécification de recouvrement"
 
-#: lib/layouts/beamer.layout:89 lib/layouts/beamer.layout:138
-#: lib/layouts/beamer.layout:193
+#: lib/layouts/beamer.layout:91 lib/layouts/beamer.layout:140
+#: lib/layouts/beamer.layout:195
 msgid "Overlay specifications for this list"
 msgstr "Spécifications de recouvrement pour cette liste"
 
-#: lib/layouts/beamer.layout:99 lib/layouts/beamer.layout:152
-#: lib/layouts/beamer.layout:213 lib/layouts/beamer.layout:798
+#: lib/layouts/beamer.layout:101 lib/layouts/beamer.layout:154
+#: lib/layouts/beamer.layout:215 lib/layouts/beamer.layout:800
 #: lib/layouts/powerdot.layout:303 lib/layouts/powerdot.layout:368
 msgid "Item Overlay Specifications"
 msgstr "Spécifications de recouvrement d'élément"
 
-#: lib/layouts/beamer.layout:100 lib/layouts/beamer.layout:153
-#: lib/layouts/beamer.layout:214 lib/layouts/beamer.layout:628
-#: lib/layouts/beamer.layout:658 lib/layouts/beamer.layout:799
-#: lib/layouts/beamer.layout:874 lib/layouts/beamer.layout:903
-#: lib/layouts/beamer.layout:1226 lib/layouts/beamer.layout:1251
-#: lib/layouts/beamer.layout:1278 lib/layouts/beamer.layout:1444
+#: lib/layouts/beamer.layout:102 lib/layouts/beamer.layout:155
+#: lib/layouts/beamer.layout:216 lib/layouts/beamer.layout:630
+#: lib/layouts/beamer.layout:660 lib/layouts/beamer.layout:801
+#: lib/layouts/beamer.layout:876 lib/layouts/beamer.layout:905
+#: lib/layouts/beamer.layout:1228 lib/layouts/beamer.layout:1253
+#: lib/layouts/beamer.layout:1280 lib/layouts/beamer.layout:1446
 #: lib/layouts/powerdot.layout:304 lib/layouts/powerdot.layout:369
 msgid "On Slide"
 msgstr "Sur la diapo"
 
-#: lib/layouts/beamer.layout:101 lib/layouts/beamer.layout:154
-#: lib/layouts/beamer.layout:215 lib/layouts/beamer.layout:800
+#: lib/layouts/beamer.layout:103 lib/layouts/beamer.layout:156
+#: lib/layouts/beamer.layout:217 lib/layouts/beamer.layout:802
 #: lib/layouts/powerdot.layout:305 lib/layouts/powerdot.layout:370
 msgid "Overlay specifications for this item"
 msgstr "Spécifications de recouvrement pour cet élément"
 
-#: lib/layouts/beamer.layout:144
+#: lib/layouts/beamer.layout:146
 msgid "Mini Template"
 msgstr "Mini modèle"
 
-#: lib/layouts/beamer.layout:145
+#: lib/layouts/beamer.layout:147
 msgid "Mini template for this list (see beamer manual for details)"
 msgstr "Mini-modèle pour cette liste (voir le manuel Beamer pour les détails)"
 
-#: lib/layouts/beamer.layout:199
+#: lib/layouts/beamer.layout:201
 msgid "Longest label|s"
 msgstr "Étiquette la plus longue|q"
 
-#: lib/layouts/beamer.layout:200
+#: lib/layouts/beamer.layout:202
 msgid "The longest label in this list (to determine the indendation width)"
 msgstr ""
 "L'étiquette la plus longue de la liste (pour déterminer la largeur "
 "d'indentation)"
 
-#: lib/layouts/beamer.layout:247 lib/layouts/beamer.layout:289
-#: lib/layouts/beamer.layout:351 lib/layouts/beamer.layout:413
+#: lib/layouts/beamer.layout:249 lib/layouts/beamer.layout:291
+#: lib/layouts/beamer.layout:353 lib/layouts/beamer.layout:415
 #: lib/layouts/egs.layout:34 lib/layouts/egs.layout:57
 #: lib/layouts/europasscv.layout:265 lib/layouts/europecv.layout:194
 #: lib/layouts/foils.layout:46 lib/layouts/ltugboat.layout:49
@@ -10241,475 +10259,475 @@ msgstr ""
 msgid "Sectioning"
 msgstr "Sectionnement"
 
-#: lib/layouts/beamer.layout:252 lib/layouts/beamer.layout:307
-#: lib/layouts/beamer.layout:340 lib/layouts/beamer.layout:369
-#: lib/layouts/beamer.layout:402 lib/layouts/beamer.layout:431
-#: lib/layouts/beamer.layout:464
+#: lib/layouts/beamer.layout:254 lib/layouts/beamer.layout:309
+#: lib/layouts/beamer.layout:342 lib/layouts/beamer.layout:371
+#: lib/layouts/beamer.layout:404 lib/layouts/beamer.layout:433
+#: lib/layouts/beamer.layout:466
 msgid "Mode"
 msgstr "Mode"
 
-#: lib/layouts/beamer.layout:253 lib/layouts/beamer.layout:308
-#: lib/layouts/beamer.layout:341 lib/layouts/beamer.layout:370
-#: lib/layouts/beamer.layout:403 lib/layouts/beamer.layout:432
-#: lib/layouts/beamer.layout:465
+#: lib/layouts/beamer.layout:255 lib/layouts/beamer.layout:310
+#: lib/layouts/beamer.layout:343 lib/layouts/beamer.layout:372
+#: lib/layouts/beamer.layout:405 lib/layouts/beamer.layout:434
+#: lib/layouts/beamer.layout:467
 msgid "Mode Specification|S"
 msgstr "Spécification de mode"
 
-#: lib/layouts/beamer.layout:254 lib/layouts/beamer.layout:309
-#: lib/layouts/beamer.layout:342 lib/layouts/beamer.layout:371
-#: lib/layouts/beamer.layout:404 lib/layouts/beamer.layout:433
-#: lib/layouts/beamer.layout:466
+#: lib/layouts/beamer.layout:256 lib/layouts/beamer.layout:311
+#: lib/layouts/beamer.layout:344 lib/layouts/beamer.layout:373
+#: lib/layouts/beamer.layout:406 lib/layouts/beamer.layout:435
+#: lib/layouts/beamer.layout:468
 msgid "Specify in which mode (article, presentation etc.) this header appears"
 msgstr ""
 "Préciser dans quel mode (article, présentation, etc.) apparaît cet en-tête"
 
-#: lib/layouts/beamer.layout:261 lib/layouts/memoir.layout:69
+#: lib/layouts/beamer.layout:263 lib/layouts/memoir.layout:69
 #: lib/layouts/scrclass.inc:143 lib/layouts/stdsections.inc:33
 #: lib/layouts/tufte-handout.layout:41
 msgid "The part as it appears in the table of contents/running headers"
 msgstr ""
 "Le nom de la partie tel qu'il apparaîtra dans la TdM/les en-têtes courants"
 
-#: lib/layouts/beamer.layout:304
+#: lib/layouts/beamer.layout:306
 msgid "Section \\arabic{section}"
 msgstr "Section \\arabic{section}"
 
-#: lib/layouts/beamer.layout:316 lib/layouts/scrclass.inc:169
+#: lib/layouts/beamer.layout:318 lib/layouts/scrclass.inc:169
 #: lib/layouts/simplecv.layout:53 lib/layouts/stdsections.inc:118
 #: lib/layouts/tufte-book.layout:130
 msgid "The section as it appears in the table of contents/running headers"
 msgstr ""
 "Le nom de la section tel qu'il apparaîtra dans la TdM/les en-têtes courants"
 
-#: lib/layouts/beamer.layout:328 lib/layouts/numarticle.inc:11
+#: lib/layouts/beamer.layout:330 lib/layouts/numarticle.inc:11
 #: lib/layouts/powerdot.layout:254
 msgid "\\Alph{section}"
 msgstr "\\Alph{section}"
 
-#: lib/layouts/beamer.layout:366
+#: lib/layouts/beamer.layout:368
 msgid "Subsection \\arabic{section}.\\arabic{subsection}"
 msgstr "SousSection \\arabic{section}.\\arabic{subsection}"
 
-#: lib/layouts/beamer.layout:378
+#: lib/layouts/beamer.layout:380
 msgid "The subsection as it appears in the table of contents/running headers"
 msgstr ""
 "Le nom de la sous-section tel qu'il apparaîtra dans la TdM/les en-têtes "
 "courants"
 
-#: lib/layouts/beamer.layout:390
+#: lib/layouts/beamer.layout:392
 msgid "\\arabic{section}.\\arabic{subsection}"
 msgstr "\\arabic{section}.\\arabic{subsection}"
 
-#: lib/layouts/beamer.layout:428
+#: lib/layouts/beamer.layout:430
 msgid ""
 "Subsubsection \\arabic{section}.\\arabic{subsection}.\\arabic{subsubsection}"
 msgstr ""
 "SousSousSection \\arabic{section}.\\arabic{subsection}."
 "\\arabic{subsubsection}"
 
-#: lib/layouts/beamer.layout:440
+#: lib/layouts/beamer.layout:442
 msgid ""
 "The subsubsection as it appears in the table of contents/running headers"
 msgstr ""
 "La sous-sous-section telle qu'elle apparaît dans la table de matières et les "
 "en-têtes courants"
 
-#: lib/layouts/beamer.layout:452
+#: lib/layouts/beamer.layout:454
 msgid "\\arabic{section}.\\arabic{subsection}.\\arabic{subsubsection}"
 msgstr "\\arabic{section}.\\arabic{subsection}.\\arabic{subsubsection}"
 
-#: lib/layouts/beamer.layout:479 lib/layouts/beamer.layout:485
+#: lib/layouts/beamer.layout:481 lib/layouts/beamer.layout:487
 msgid "Frame"
 msgstr "Cadre"
 
-#: lib/layouts/beamer.layout:480 lib/layouts/beamer.layout:565
-#: lib/layouts/beamer.layout:612 lib/layouts/beamer.layout:643
+#: lib/layouts/beamer.layout:482 lib/layouts/beamer.layout:567
+#: lib/layouts/beamer.layout:614 lib/layouts/beamer.layout:645
 msgid "Frames"
 msgstr "Cadres"
 
-#: lib/layouts/beamer.layout:502 lib/layouts/beamer.layout:937
-#: lib/layouts/beamer.layout:1314 lib/layouts/beamer.layout:1471
-#: lib/layouts/beamer.layout:1491 lib/layouts/beamer.layout:1511
-#: lib/layouts/beamer.layout:1531 lib/layouts/beamer.layout:1551
-#: lib/layouts/beamer.layout:1572 lib/layouts/beamer.layout:1593
-#: lib/layouts/beamer.layout:1614 lib/layouts/beamer.layout:1635
-#: lib/layouts/beamer.layout:1663 lib/layouts/pdfform.module:124
+#: lib/layouts/beamer.layout:504 lib/layouts/beamer.layout:939
+#: lib/layouts/beamer.layout:1316 lib/layouts/beamer.layout:1473
+#: lib/layouts/beamer.layout:1493 lib/layouts/beamer.layout:1513
+#: lib/layouts/beamer.layout:1533 lib/layouts/beamer.layout:1553
+#: lib/layouts/beamer.layout:1574 lib/layouts/beamer.layout:1595
+#: lib/layouts/beamer.layout:1616 lib/layouts/beamer.layout:1637
+#: lib/layouts/beamer.layout:1665 lib/layouts/pdfform.module:124
 msgid "Action"
 msgstr "Action"
 
-#: lib/layouts/beamer.layout:504 lib/layouts/beamer.layout:572
+#: lib/layouts/beamer.layout:506 lib/layouts/beamer.layout:574
 msgid "Overlay specifications for this frame"
 msgstr "Spécifications de recouvrement pour ce cadre"
 
-#: lib/layouts/beamer.layout:510 lib/layouts/beamer.layout:578
+#: lib/layouts/beamer.layout:512 lib/layouts/beamer.layout:580
 msgid "Default Overlay Specifications"
 msgstr "Spécifications de recouvrement implicites"
 
-#: lib/layouts/beamer.layout:511 lib/layouts/beamer.layout:579
+#: lib/layouts/beamer.layout:513 lib/layouts/beamer.layout:581
 msgid "Default overlay specifications within this frame"
 msgstr "Spécifications de recouvrement implicites pour ce cadre"
 
-#: lib/layouts/beamer.layout:517 lib/layouts/beamer.layout:546
-#: lib/layouts/beamer.layout:557 lib/layouts/beamer.layout:585
+#: lib/layouts/beamer.layout:519 lib/layouts/beamer.layout:548
+#: lib/layouts/beamer.layout:559 lib/layouts/beamer.layout:587
 msgid "Frame Options"
 msgstr "Options du cadre"
 
-#: lib/layouts/beamer.layout:519 lib/layouts/beamer.layout:548
-#: lib/layouts/beamer.layout:559 lib/layouts/beamer.layout:587
+#: lib/layouts/beamer.layout:521 lib/layouts/beamer.layout:550
+#: lib/layouts/beamer.layout:561 lib/layouts/beamer.layout:589
 msgid "Frame options (see beamer manual)"
 msgstr "Options de cadre (voir le manuel Beamer)"
 
-#: lib/layouts/beamer.layout:522
+#: lib/layouts/beamer.layout:524
 msgid "Frame Title"
 msgstr "Titre du cadre"
 
-#: lib/layouts/beamer.layout:523
+#: lib/layouts/beamer.layout:525
 msgid "Enter the frame title here"
 msgstr "Saisir le titre du cadre ici"
 
-#: lib/layouts/beamer.layout:542
+#: lib/layouts/beamer.layout:544
 msgid "PlainFrame"
 msgstr "CadreSimple"
 
-#: lib/layouts/beamer.layout:544
+#: lib/layouts/beamer.layout:546
 msgid "Frame (plain)"
 msgstr "Cadre (simple)"
 
-#: lib/layouts/beamer.layout:553
+#: lib/layouts/beamer.layout:555
 msgid "FragileFrame"
 msgstr "CadreFragile"
 
-#: lib/layouts/beamer.layout:555
+#: lib/layouts/beamer.layout:557
 msgid "Frame (fragile)"
 msgstr "Cadre (fragile)"
 
-#: lib/layouts/beamer.layout:564
+#: lib/layouts/beamer.layout:566
 msgid "AgainFrame"
 msgstr "RepriseCadre"
 
-#: lib/layouts/beamer.layout:570 lib/layouts/powerdot.layout:135
+#: lib/layouts/beamer.layout:572 lib/layouts/powerdot.layout:135
 #: lib/layouts/seminar.layout:111 lib/layouts/slides.layout:92
 #: src/frontends/qt/GuiDocument.cpp:136
 msgid "Slide"
 msgstr "Diapo"
 
-#: lib/layouts/beamer.layout:599
+#: lib/layouts/beamer.layout:601
 msgid "Repeat frame with label"
 msgstr "Cadre de reprise avec étiquette"
 
-#: lib/layouts/beamer.layout:611
+#: lib/layouts/beamer.layout:613
 msgid "FrameTitle"
 msgstr "TitreCadre"
 
-#: lib/layouts/beamer.layout:630 lib/layouts/beamer.layout:660
-#: lib/layouts/beamer.layout:876 lib/layouts/beamer.layout:905
-#: lib/layouts/beamer.layout:939 lib/layouts/beamer.layout:1228
-#: lib/layouts/beamer.layout:1253 lib/layouts/beamer.layout:1280
-#: lib/layouts/beamer.layout:1316 lib/layouts/beamer.layout:1446
-#: lib/layouts/beamer.layout:1473 lib/layouts/beamer.layout:1493
-#: lib/layouts/beamer.layout:1513 lib/layouts/beamer.layout:1533
-#: lib/layouts/beamer.layout:1553 lib/layouts/beamer.layout:1574
-#: lib/layouts/beamer.layout:1595 lib/layouts/beamer.layout:1616
-#: lib/layouts/beamer.layout:1637 lib/layouts/beamer.layout:1665
+#: lib/layouts/beamer.layout:632 lib/layouts/beamer.layout:662
+#: lib/layouts/beamer.layout:878 lib/layouts/beamer.layout:907
+#: lib/layouts/beamer.layout:941 lib/layouts/beamer.layout:1230
+#: lib/layouts/beamer.layout:1255 lib/layouts/beamer.layout:1282
+#: lib/layouts/beamer.layout:1318 lib/layouts/beamer.layout:1448
+#: lib/layouts/beamer.layout:1475 lib/layouts/beamer.layout:1495
+#: lib/layouts/beamer.layout:1515 lib/layouts/beamer.layout:1535
+#: lib/layouts/beamer.layout:1555 lib/layouts/beamer.layout:1576
+#: lib/layouts/beamer.layout:1597 lib/layouts/beamer.layout:1618
+#: lib/layouts/beamer.layout:1639 lib/layouts/beamer.layout:1667
 msgid "Specify the overlay settings (see beamer manual)"
 msgstr "Préciser les réglages du recouvrement (voir le manuel Beamer)"
 
-#: lib/layouts/beamer.layout:636
+#: lib/layouts/beamer.layout:638
 msgid "Short Frame Title|S"
 msgstr "Titre cadre court|c"
 
-#: lib/layouts/beamer.layout:637
+#: lib/layouts/beamer.layout:639
 msgid "A short form of the frame title used in some themes"
 msgstr "La forme courte du titre de cadre utilisée par certains théorèmes"
 
-#: lib/layouts/beamer.layout:642
+#: lib/layouts/beamer.layout:644
 msgid "FrameSubtitle"
 msgstr "SousTitreCadre"
 
-#: lib/layouts/beamer.layout:672 lib/layouts/moderncv.layout:395
+#: lib/layouts/beamer.layout:674 lib/layouts/moderncv.layout:395
 #: lib/layouts/moderncv.layout:412
 msgid "Column"
 msgstr "Colonne"
 
-#: lib/layouts/beamer.layout:673 lib/layouts/beamer.layout:698
-#: lib/layouts/beamer.layout:699 lib/layouts/beamer.layout:709
+#: lib/layouts/beamer.layout:675 lib/layouts/beamer.layout:700
+#: lib/layouts/beamer.layout:701 lib/layouts/beamer.layout:711
 #: lib/layouts/moderncv.layout:373 lib/layouts/multicol.module:15
 msgid "Columns"
 msgstr "Colonnes"
 
-#: lib/layouts/beamer.layout:685
+#: lib/layouts/beamer.layout:687
 msgid "Start column (increase depth!), width:"
 msgstr "Début col. (augm. la  prof. !), largeur :"
 
-#: lib/layouts/beamer.layout:688 lib/layouts/powerdot.layout:504
+#: lib/layouts/beamer.layout:690 lib/layouts/powerdot.layout:504
 msgid "Column Options"
 msgstr "Options de colonne"
 
-#: lib/layouts/beamer.layout:690
+#: lib/layouts/beamer.layout:692
 msgid "Column options (see beamer manual)"
 msgstr "Options de colonnes (voir le manuel Beamer)"
 
-#: lib/layouts/beamer.layout:711
+#: lib/layouts/beamer.layout:713
 msgid "Column Placement Options"
 msgstr "Options de placement de colonne"
 
-#: lib/layouts/beamer.layout:712
+#: lib/layouts/beamer.layout:714
 msgid "Column placement options (t, T, c, b)"
 msgstr "Options de placement des colonnes (t, T, c, b)"
 
-#: lib/layouts/beamer.layout:729
+#: lib/layouts/beamer.layout:731
 msgid "ColumnsCenterAligned"
 msgstr "ColonnesCentréesVerticalement"
 
-#: lib/layouts/beamer.layout:732
+#: lib/layouts/beamer.layout:734
 msgid "Columns (center aligned)"
 msgstr "Colonnes (cent. vert.)"
 
-#: lib/layouts/beamer.layout:736
+#: lib/layouts/beamer.layout:738
 msgid "ColumnsTopAligned"
 msgstr "ColonnesAlignéesSurPremièreLigne"
 
-#: lib/layouts/beamer.layout:739
+#: lib/layouts/beamer.layout:741
 msgid "Columns (top aligned)"
 msgstr "Colonnes (alig. haut)"
 
-#: lib/layouts/beamer.layout:748 lib/layouts/powerdot.layout:518
+#: lib/layouts/beamer.layout:750 lib/layouts/powerdot.layout:518
 msgid "Pause"
 msgstr "Pause"
 
-#: lib/layouts/beamer.layout:749 lib/layouts/beamer.layout:777
-#: lib/layouts/beamer.layout:823 lib/layouts/beamer.layout:855
-#: lib/layouts/beamer.layout:884 lib/layouts/powerdot.layout:519
+#: lib/layouts/beamer.layout:751 lib/layouts/beamer.layout:779
+#: lib/layouts/beamer.layout:825 lib/layouts/beamer.layout:857
+#: lib/layouts/beamer.layout:886 lib/layouts/powerdot.layout:519
 msgid "Overlays"
 msgstr "Recouvrements"
 
-#: lib/layouts/beamer.layout:755 lib/layouts/powerdot.layout:525
+#: lib/layouts/beamer.layout:757 lib/layouts/powerdot.layout:525
 msgid "Pause number"
 msgstr "Numéro de pause"
 
-#: lib/layouts/beamer.layout:756 lib/layouts/powerdot.layout:526
+#: lib/layouts/beamer.layout:758 lib/layouts/powerdot.layout:526
 msgid "Number of slide where the context below the pause gets visible"
 msgstr "Nombre de diapos où le contexte sous la pause est visible"
 
-#: lib/layouts/beamer.layout:767 lib/layouts/powerdot.layout:537
+#: lib/layouts/beamer.layout:769 lib/layouts/powerdot.layout:537
 msgid "_ _ _ _ _ _ _ _ _ _ _ _ _ _"
 msgstr "_ _ _ _ _ _ _ _ _ _ _ _ _ _"
 
-#: lib/layouts/beamer.layout:776 lib/layouts/beamer.layout:815
+#: lib/layouts/beamer.layout:778 lib/layouts/beamer.layout:817
 msgid "Overprint"
 msgstr "SurImpression"
 
-#: lib/layouts/beamer.layout:783
+#: lib/layouts/beamer.layout:785
 msgid "Overprint Area Width"
 msgstr "Largeur de la zone de surimpression"
 
-#: lib/layouts/beamer.layout:784 lib/layouts/europasscv.layout:246
+#: lib/layouts/beamer.layout:786 lib/layouts/europasscv.layout:246
 #: lib/layouts/graphicboxes.module:49 lib/layouts/moderncv.layout:400
 #: lib/layouts/sectionbox.module:22 src/frontends/qt/GuiBox.cpp:71
 msgid "Width"
 msgstr "Largeur"
 
-#: lib/layouts/beamer.layout:785
+#: lib/layouts/beamer.layout:787
 msgid "The width of the overprint area (default: text width)"
 msgstr ""
 "La largeur de la zone de surimpression (implicitement : largeur du texte)"
 
-#: lib/layouts/beamer.layout:822
+#: lib/layouts/beamer.layout:824
 msgid "OverlayArea"
 msgstr "ZoneRecouvrement"
 
-#: lib/layouts/beamer.layout:832
+#: lib/layouts/beamer.layout:834
 msgid "Overlayarea"
 msgstr "ZoneRecouvrement"
 
-#: lib/layouts/beamer.layout:842
+#: lib/layouts/beamer.layout:844
 msgid "Overlay Area Width"
 msgstr "Largeur de la zone de recouvrement"
 
-#: lib/layouts/beamer.layout:843
+#: lib/layouts/beamer.layout:845
 msgid "The width of the overlay area"
 msgstr "La largeur de la zone de recouvrement"
 
-#: lib/layouts/beamer.layout:847
+#: lib/layouts/beamer.layout:849
 msgid "Overlay Area Height"
 msgstr "Hauteur de la zone de recouvrement"
 
-#: lib/layouts/beamer.layout:848 lib/layouts/graphicboxes.module:56
+#: lib/layouts/beamer.layout:850 lib/layouts/graphicboxes.module:56
 #: lib/layouts/moderncv.layout:288 src/frontends/qt/GuiBox.cpp:70
 msgid "Height"
 msgstr "Hauteur"
 
-#: lib/layouts/beamer.layout:849
+#: lib/layouts/beamer.layout:851
 msgid "The height of the overlay area"
 msgstr "La hauteur de la zone de recouvrement"
 
-#: lib/layouts/beamer.layout:854 lib/layouts/beamer.layout:1563
-#: lib/layouts/beamer.layout:1565 lib/layouts/powerdot.layout:660
+#: lib/layouts/beamer.layout:856 lib/layouts/beamer.layout:1565
+#: lib/layouts/beamer.layout:1567 lib/layouts/powerdot.layout:660
 msgid "Uncover"
 msgstr "Découvrir"
 
-#: lib/layouts/beamer.layout:864
+#: lib/layouts/beamer.layout:866
 msgid "Uncovered on slides"
 msgstr "Découvrir sur diapos"
 
-#: lib/layouts/beamer.layout:883 lib/layouts/beamer.layout:1542
-#: lib/layouts/beamer.layout:1544 lib/layouts/powerdot.layout:666
+#: lib/layouts/beamer.layout:885 lib/layouts/beamer.layout:1544
+#: lib/layouts/beamer.layout:1546 lib/layouts/powerdot.layout:666
 msgid "Only"
 msgstr "Seulement"
 
-#: lib/layouts/beamer.layout:893
+#: lib/layouts/beamer.layout:895
 msgid "Only on slides"
 msgstr "Seulement sur diapos"
 
-#: lib/layouts/beamer.layout:917
+#: lib/layouts/beamer.layout:919
 msgid "Block"
 msgstr "Bloc"
 
-#: lib/layouts/beamer.layout:918
+#: lib/layouts/beamer.layout:920
 msgid "Blocks"
 msgstr "Blocs"
 
-#: lib/layouts/beamer.layout:927
+#: lib/layouts/beamer.layout:929
 msgid "Block:"
 msgstr "Bloc :"
 
-#: lib/layouts/beamer.layout:938
+#: lib/layouts/beamer.layout:940
 msgid "Action Specification|S"
 msgstr "Spécifications d'action"
 
-#: lib/layouts/beamer.layout:945
+#: lib/layouts/beamer.layout:947
 msgid "Block Title"
 msgstr "Titre de bloc"
 
-#: lib/layouts/beamer.layout:946
+#: lib/layouts/beamer.layout:948
 msgid "Enter the block title here"
 msgstr "Saisir le titre du bloc ici"
 
-#: lib/layouts/beamer.layout:961
+#: lib/layouts/beamer.layout:963
 msgid "ExampleBlock"
 msgstr "BlocExemple"
 
-#: lib/layouts/beamer.layout:964
+#: lib/layouts/beamer.layout:966
 msgid "Example Block:"
 msgstr "Bloc exemple :"
 
-#: lib/layouts/beamer.layout:970
+#: lib/layouts/beamer.layout:972
 msgid "AlertBlock"
 msgstr "BlocAlerte"
 
-#: lib/layouts/beamer.layout:973
+#: lib/layouts/beamer.layout:975
 msgid "Alert Block:"
 msgstr "Bloc alerte :"
 
-#: lib/layouts/beamer.layout:985 lib/layouts/beamer.layout:1022
-#: lib/layouts/beamer.layout:1049 lib/layouts/beamer.layout:1077
-#: lib/layouts/beamer.layout:1121 lib/layouts/beamer.layout:1144
+#: lib/layouts/beamer.layout:987 lib/layouts/beamer.layout:1024
+#: lib/layouts/beamer.layout:1051 lib/layouts/beamer.layout:1079
+#: lib/layouts/beamer.layout:1123 lib/layouts/beamer.layout:1146
 msgid "Titling"
 msgstr "Titrage"
 
-#: lib/layouts/beamer.layout:999
+#: lib/layouts/beamer.layout:1001
 msgid "Short title which appears in the sidebar/header"
 msgstr "Titre court apparaissant dans la colonne latérale ou l'en-tête"
 
 # Cadre pour Frame et Diapositive pour Slide ?
 # Oui JOC
-#: lib/layouts/beamer.layout:1013
+#: lib/layouts/beamer.layout:1015
 msgid "Title (Plain Frame)"
 msgstr "Titre (Cadre Simple)"
 
-#: lib/layouts/beamer.layout:1035
+#: lib/layouts/beamer.layout:1037
 msgid "Short Subtitle|S"
 msgstr "Sous-titre court|c"
 
-#: lib/layouts/beamer.layout:1036
+#: lib/layouts/beamer.layout:1038
 msgid "Short subtitle which appears in the sidebar/header"
 msgstr "Sous-titre court apparaissant dans la colonne latérale ou l'en-tête"
 
-#: lib/layouts/beamer.layout:1062
+#: lib/layouts/beamer.layout:1064
 msgid "Short author which appears in the sidebar/header"
 msgstr "Nom d'auteur court apparaissant dans la colonne latérale ou l'en-tête"
 
-#: lib/layouts/beamer.layout:1089
+#: lib/layouts/beamer.layout:1091
 msgid "Short Institute|S"
 msgstr "Nom d'institution court|c"
 
-#: lib/layouts/beamer.layout:1090
+#: lib/layouts/beamer.layout:1092
 msgid "Short institute which appears in the sidebar/header"
 msgstr ""
 "Nom d'institution court apparaissant dans la colonne latérale ou l'en-tête"
 
-#: lib/layouts/beamer.layout:1099
+#: lib/layouts/beamer.layout:1101
 msgid "InstituteMark"
 msgstr "MarqueInstitution"
 
-#: lib/layouts/beamer.layout:1133
+#: lib/layouts/beamer.layout:1135
 msgid "Short Date|S"
 msgstr "Date courte|d"
 
-#: lib/layouts/beamer.layout:1134
+#: lib/layouts/beamer.layout:1136
 msgid "Short date which appears in the sidebar/header"
 msgstr "Date courte apparaissant dans la colonne latérale ou l'en-tête"
 
-#: lib/layouts/beamer.layout:1143 lib/layouts/beamerposter.layout:46
+#: lib/layouts/beamer.layout:1145 lib/layouts/beamerposter.layout:46
 msgid "TitleGraphic"
 msgstr "GraphiqueTitre"
 
-#: lib/layouts/beamer.layout:1208 lib/layouts/egs.layout:103
+#: lib/layouts/beamer.layout:1210 lib/layouts/egs.layout:103
 #: lib/layouts/powerdot.layout:426 lib/layouts/stdlayouts.inc:12
 msgid "Quotation"
 msgstr "Citation"
 
-#: lib/layouts/beamer.layout:1235 lib/layouts/egs.layout:122
+#: lib/layouts/beamer.layout:1237 lib/layouts/egs.layout:122
 #: lib/layouts/moderncv.layout:305 lib/layouts/powerdot.layout:448
 #: lib/layouts/stdlayouts.inc:37
 msgid "Quote"
 msgstr "Cite"
 
-#: lib/layouts/beamer.layout:1260 lib/layouts/egs.layout:277
+#: lib/layouts/beamer.layout:1262 lib/layouts/egs.layout:277
 #: lib/layouts/powerdot.layout:468 lib/layouts/stdlayouts.inc:60
 msgid "Verse"
 msgstr "Vers"
 
-#: lib/layouts/beamer.layout:1302 lib/layouts/foils.layout:340
+#: lib/layouts/beamer.layout:1304 lib/layouts/foils.layout:340
 #: lib/layouts/theorems-starred.inc:78
 msgid "Corollary."
 msgstr "Corollaire."
 
-#: lib/layouts/beamer.layout:1315 lib/layouts/beamer.layout:1472
-#: lib/layouts/beamer.layout:1492 lib/layouts/beamer.layout:1512
-#: lib/layouts/beamer.layout:1532 lib/layouts/beamer.layout:1552
-#: lib/layouts/beamer.layout:1573 lib/layouts/beamer.layout:1594
-#: lib/layouts/beamer.layout:1615 lib/layouts/beamer.layout:1636
-#: lib/layouts/beamer.layout:1664
+#: lib/layouts/beamer.layout:1317 lib/layouts/beamer.layout:1474
+#: lib/layouts/beamer.layout:1494 lib/layouts/beamer.layout:1514
+#: lib/layouts/beamer.layout:1534 lib/layouts/beamer.layout:1554
+#: lib/layouts/beamer.layout:1575 lib/layouts/beamer.layout:1596
+#: lib/layouts/beamer.layout:1617 lib/layouts/beamer.layout:1638
+#: lib/layouts/beamer.layout:1666
 msgid "Action Specifications|S"
 msgstr "Spécification d'action|S"
 
-#: lib/layouts/beamer.layout:1333 lib/layouts/foils.layout:354
+#: lib/layouts/beamer.layout:1335 lib/layouts/foils.layout:354
 #: lib/layouts/theorems-starred.inc:174
 msgid "Definition."
 msgstr "Définition."
 
-#: lib/layouts/beamer.layout:1336
+#: lib/layouts/beamer.layout:1338
 msgid "Definitions"
 msgstr "Définitions"
 
-#: lib/layouts/beamer.layout:1339
+#: lib/layouts/beamer.layout:1341
 msgid "Definitions."
 msgstr "Définitions."
 
-#: lib/layouts/beamer.layout:1345 lib/layouts/theorems-starred.inc:200
+#: lib/layouts/beamer.layout:1347 lib/layouts/theorems-starred.inc:200
 msgid "Example."
 msgstr "Exemple."
 
-#: lib/layouts/beamer.layout:1352
+#: lib/layouts/beamer.layout:1354
 msgid "Examples"
 msgstr "Exemples"
 
-#: lib/layouts/beamer.layout:1355
+#: lib/layouts/beamer.layout:1357
 msgid "Examples."
 msgstr "Exemples."
 
-#: lib/layouts/beamer.layout:1358 lib/layouts/theorems-ams-bytype.inc:160
+#: lib/layouts/beamer.layout:1360 lib/layouts/theorems-ams-bytype.inc:160
 #: lib/layouts/theorems-ams-bytype.inc:169
 #: lib/layouts/theorems-ams-bytype.inc:172
 #: lib/layouts/theorems-ams-chap-bytype.inc:222
@@ -10730,102 +10748,102 @@ msgstr "Exemples."
 msgid "Fact"
 msgstr "Fait"
 
-#: lib/layouts/beamer.layout:1361 lib/layouts/theorems-starred.inc:154
+#: lib/layouts/beamer.layout:1363 lib/layouts/theorems-starred.inc:154
 msgid "Fact."
 msgstr "Fait."
 
-#: lib/layouts/beamer.layout:1367 lib/layouts/foils.layout:333
+#: lib/layouts/beamer.layout:1369 lib/layouts/foils.layout:333
 #: lib/layouts/theorems-starred.inc:97
 msgid "Lemma."
 msgstr "Lemme."
 
-#: lib/layouts/beamer.layout:1379 lib/layouts/foils.layout:326
+#: lib/layouts/beamer.layout:1381 lib/layouts/foils.layout:326
 #: lib/layouts/theorems-named.module:18 lib/layouts/theorems-starred.inc:32
 msgid "Theorem."
 msgstr "Théorème."
 
-#: lib/layouts/beamer.layout:1387 lib/layouts/egs.layout:730
+#: lib/layouts/beamer.layout:1389 lib/layouts/egs.layout:730
 #: lib/layouts/lyxmacros.inc:12
 msgid "LyX-Code"
 msgstr "LyX-Code"
 
-#: lib/layouts/beamer.layout:1424
+#: lib/layouts/beamer.layout:1426
 msgid "NoteItem"
 msgstr "ÉlémentNote"
 
-#: lib/layouts/beamer.layout:1462 lib/layouts/beamer.layout:1464
+#: lib/layouts/beamer.layout:1464 lib/layouts/beamer.layout:1466
 #: src/FontInfo.cpp:48 src/frontends/qt/GuiCharacter.cpp:138
 msgid "Bold"
 msgstr "Grasse"
 
-#: lib/layouts/beamer.layout:1482 lib/layouts/ectaart.layout:178
+#: lib/layouts/beamer.layout:1484 lib/layouts/ectaart.layout:178
 msgid "Emphasize"
 msgstr "En évidence"
 
-#: lib/layouts/beamer.layout:1484
+#: lib/layouts/beamer.layout:1486
 msgid "Emph."
 msgstr "En évid."
 
-#: lib/layouts/beamer.layout:1502 lib/layouts/beamer.layout:1504
+#: lib/layouts/beamer.layout:1504 lib/layouts/beamer.layout:1506
 msgid "Alert"
 msgstr "Alerte"
 
-#: lib/layouts/beamer.layout:1522 lib/layouts/beamer.layout:1524
+#: lib/layouts/beamer.layout:1524 lib/layouts/beamer.layout:1526
 #: lib/layouts/svcommon.inc:73 lib/layouts/svcommon.inc:100
 #: lib/layouts/svcommon.inc:107
 msgid "Structure"
 msgstr "Structure"
 
-#: lib/layouts/beamer.layout:1584 lib/layouts/beamer.layout:1586
+#: lib/layouts/beamer.layout:1586 lib/layouts/beamer.layout:1588
 #: lib/layouts/powerdot.layout:644
 msgid "Visible"
 msgstr "Visible"
 
-#: lib/layouts/beamer.layout:1605 lib/layouts/beamer.layout:1607
+#: lib/layouts/beamer.layout:1607 lib/layouts/beamer.layout:1609
 msgid "Invisible"
 msgstr "Invisible"
 
-#: lib/layouts/beamer.layout:1626 lib/layouts/beamer.layout:1628
+#: lib/layouts/beamer.layout:1628 lib/layouts/beamer.layout:1630
 msgid "Alternative"
 msgstr "Alternative"
 
-#: lib/layouts/beamer.layout:1644
+#: lib/layouts/beamer.layout:1646
 msgid "Default Text"
 msgstr "Texte implicite"
 
-#: lib/layouts/beamer.layout:1645
+#: lib/layouts/beamer.layout:1647
 msgid "Enter the default text here"
 msgstr "Saisir le texte implicite ici"
 
-#: lib/layouts/beamer.layout:1653
+#: lib/layouts/beamer.layout:1655
 msgid "Beamer Note"
 msgstr "Note Beamer"
 
-#: lib/layouts/beamer.layout:1671
+#: lib/layouts/beamer.layout:1673
 msgid "Note Options"
 msgstr "Options de note"
 
-#: lib/layouts/beamer.layout:1672
+#: lib/layouts/beamer.layout:1674
 msgid "Specifiy note options (see beamer manual)"
 msgstr "Préciser les options de note (voir le manuel Beamer)"
 
-#: lib/layouts/beamer.layout:1677
+#: lib/layouts/beamer.layout:1679
 msgid "ArticleMode"
 msgstr "ModeArticle"
 
-#: lib/layouts/beamer.layout:1683
+#: lib/layouts/beamer.layout:1685
 msgid "Article"
 msgstr "Article"
 
-#: lib/layouts/beamer.layout:1688
+#: lib/layouts/beamer.layout:1690
 msgid "PresentationMode"
 msgstr "ModePresentation"
 
-#: lib/layouts/beamer.layout:1694
+#: lib/layouts/beamer.layout:1696
 msgid "Presentation"
 msgstr "Présentation"
 
-#: lib/layouts/beamer.layout:1721 lib/layouts/powerdot.layout:570
+#: lib/layouts/beamer.layout:1723 lib/layouts/powerdot.layout:570
 #: lib/layouts/powerdot.layout:627 lib/layouts/sciposter.layout:104
 #: lib/layouts/stdfloats.inc:28
 msgid "Figure"
@@ -12971,8 +12989,8 @@ msgid "Fixme Error"
 msgstr "Erreur Fixme"
 
 #: lib/layouts/fixme.module:83 src/frontends/qt/GuiCompare.cpp:199
-#: src/frontends/qt/GuiDocument.cpp:2861 src/frontends/qt/GuiDocument.cpp:2935
-#: src/frontends/qt/GuiDocument.cpp:4832
+#: src/frontends/qt/GuiDocument.cpp:2865 src/frontends/qt/GuiDocument.cpp:2939
+#: src/frontends/qt/GuiDocument.cpp:4846
 msgid "Error"
 msgstr "Erreur"
 
@@ -17341,7 +17359,7 @@ msgstr "Notes de bas de page"
 msgid "Notes"
 msgstr "Notes"
 
-#: lib/layouts/stdinsets.inc:14 src/frontends/qt/GuiDocument.cpp:1788
+#: lib/layouts/stdinsets.inc:14 src/frontends/qt/GuiDocument.cpp:1792
 msgid "Branches"
 msgstr "Branches"
 
@@ -17365,8 +17383,8 @@ msgstr "bas"
 msgid "Greyedout"
 msgstr "Grisée"
 
-#: lib/layouts/stdinsets.inc:208 src/insets/InsetERT.cpp:189
-#: src/insets/InsetERT.cpp:190
+#: lib/layouts/stdinsets.inc:208 src/insets/InsetERT.cpp:251
+#: src/insets/InsetERT.cpp:252
 msgid "ERT"
 msgstr "TeX"
 
@@ -17379,7 +17397,7 @@ msgstr "Liste des listings"
 msgid "List of Listings"
 msgstr "Liste des listings"
 
-#: lib/layouts/stdinsets.inc:351 src/frontends/qt/GuiDocument.cpp:1786
+#: lib/layouts/stdinsets.inc:351 src/frontends/qt/GuiDocument.cpp:1790
 msgid "Listings[[inset]]"
 msgstr "Listings"
 
@@ -19930,7 +19948,7 @@ msgid "Copy as Reference|R"
 msgstr "Copier comme référence|C"
 
 #: lib/ui/stdcontext.inc:61 lib/ui/stdcontext.inc:375 lib/ui/stdmenus.inc:108
-#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1568
+#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1571
 #: src/mathed/InsetMathNest.cpp:555
 msgid "Cut"
 msgstr "Couper"
@@ -19941,7 +19959,7 @@ msgid "Copy"
 msgstr "Copier"
 
 #: lib/ui/stdcontext.inc:63 lib/ui/stdcontext.inc:377 lib/ui/stdmenus.inc:110
-#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1512
+#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1515
 #: src/frontends/qt/GuiToolbar.cpp:441 src/mathed/InsetMathGrid.cpp:1565
 #: src/mathed/InsetMathNest.cpp:533
 msgid "Paste"
@@ -22266,7 +22284,7 @@ msgid "Fractions"
 msgstr "Fractions"
 
 #: lib/ui/stdtoolbars.inc:219 lib/ui/stdtoolbars.inc:442
-#: src/frontends/qt/GuiDocument.cpp:1773
+#: src/frontends/qt/GuiDocument.cpp:1777
 msgid "Fonts"
 msgstr "Polices"
 
@@ -22283,7 +22301,7 @@ msgid "Big operators"
 msgstr "Grands opérateurs"
 
 #: lib/ui/stdtoolbars.inc:223 lib/ui/stdtoolbars.inc:690
-#: src/frontends/qt/GuiDocument.cpp:5169
+#: src/frontends/qt/GuiDocument.cpp:5183
 msgid "Miscellaneous"
 msgstr "Divers"
 
@@ -27138,7 +27156,7 @@ msgstr "MS Word Office Open XML|O"
 msgid "Table (CSV)"
 msgstr "Tableau (CSV)"
 
-#: lib/configure.py:856 src/frontends/qt/GuiView.cpp:1657
+#: lib/configure.py:856 src/frontends/qt/GuiView.cpp:1655
 #: src/mathed/InsetMathMacroTemplate.cpp:538
 msgid "LyX"
 msgstr "LyX"
@@ -27332,7 +27350,7 @@ msgstr "Mentions de danger et conseils de prudence"
 msgid "Multilingual Captions"
 msgstr "Légendes multilingues"
 
-#: lib/examples/Articles:0 src/frontends/qt/GuiDocument.cpp:1771
+#: lib/examples/Articles:0 src/frontends/qt/GuiDocument.cpp:1775
 msgid "Modules"
 msgstr "Modules"
 
@@ -27581,7 +27599,7 @@ msgstr ""
 "le préambule LaTeX."
 
 #: src/Buffer.cpp:1086 src/BufferParams.cpp:475 src/frontends/qt/GuiLog.cpp:293
-#: src/insets/InsetIndex.cpp:651
+#: src/insets/InsetIndex.cpp:674
 msgid "Index"
 msgstr "Index"
 
@@ -27658,7 +27676,7 @@ msgstr ""
 "%1$s vient d'une version plus récente de LyX, et le script lyx2lyx n'a pas "
 "réussi à le convertir."
 
-#: src/Buffer.cpp:1445 src/Buffer.cpp:4720 src/Buffer.cpp:4829
+#: src/Buffer.cpp:1445 src/Buffer.cpp:4717 src/Buffer.cpp:4826
 msgid "File is read-only"
 msgstr "Fichier en lecture seule"
 
@@ -27682,8 +27700,8 @@ msgid "Overwrite modified file?"
 msgstr "Écraser le fichier modifié ?"
 
 #: src/Buffer.cpp:1458 src/Exporter.cpp:50
-#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiView.cpp:2865
-#: src/frontends/qt/GuiView.cpp:3134 src/frontends/qt/GuiView.cpp:3237
+#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiView.cpp:2875
+#: src/frontends/qt/GuiView.cpp:3144 src/frontends/qt/GuiView.cpp:3247
 msgid "&Overwrite"
 msgstr "É&craser"
 
@@ -27925,7 +27943,7 @@ msgstr "La branche « %1$s » existe déjà."
 msgid "Error viewing the output file."
 msgstr "Erreur lors de l'affichage du fichier imprimable."
 
-#: src/Buffer.cpp:3370 src/frontends/qt/GuiView.cpp:2696
+#: src/Buffer.cpp:3370 src/frontends/qt/GuiView.cpp:2706
 #: src/frontends/qt/Validator.cpp:241 src/insets/ExternalSupport.cpp:394
 #: src/insets/InsetGraphics.cpp:692 src/insets/InsetInclude.cpp:606
 msgid "Invalid filename"
@@ -27966,57 +27984,57 @@ msgstr ""
 "Il y a des espaces dans les chemins de vos bases de données BibTeX.\n"
 "BibTeX n'arrivera pas à les trouver."
 
-#: src/Buffer.cpp:4091
+#: src/Buffer.cpp:4088
 #, c-format
 msgid "Preview source code for paragraph %1$d"
 msgstr "Visionner le code LaTeX du paragraphe %1$d"
 
-#: src/Buffer.cpp:4096
+#: src/Buffer.cpp:4093
 #, c-format
 msgid "Preview source code from paragraph %1$s to %2$s"
 msgstr "Visionner le code LaTeX des paragraphes %1$s à %2$s"
 
-#: src/Buffer.cpp:4151
+#: src/Buffer.cpp:4148
 msgid "Preview source code"
 msgstr "Visionner le code LaTeX"
 
-#: src/Buffer.cpp:4153
+#: src/Buffer.cpp:4150
 msgid "Preview preamble"
 msgstr "Aperçu préambule"
 
-#: src/Buffer.cpp:4155
+#: src/Buffer.cpp:4152
 msgid "Preview body"
 msgstr "Aperçu corps"
 
-#: src/Buffer.cpp:4171
+#: src/Buffer.cpp:4168
 msgid "Plain text does not have a preamble."
 msgstr "Le texte brut ne possède pas de préambule."
 
-#: src/Buffer.cpp:4308
+#: src/Buffer.cpp:4305
 msgid "Autosaving current document..."
 msgstr "Sauvegarde automatique du document..."
 
-#: src/Buffer.cpp:4433
+#: src/Buffer.cpp:4430
 #, c-format
 msgid "No information for exporting the format %1$s."
 msgstr "Pas d'information pour exporter au format %1$s."
 
-#: src/Buffer.cpp:4437
+#: src/Buffer.cpp:4434
 #, c-format
 msgid "Hint: use non-TeX fonts or set input encoding  to '%1$s'"
 msgstr ""
 "Astuce : utiliser les polices non-TeX ou positionner l'encodage d'entrée à « "
 "%1$s »"
 
-#: src/Buffer.cpp:4439
+#: src/Buffer.cpp:4436
 msgid "Couldn't export file"
 msgstr "Exportation du fichier impossible"
 
-#: src/Buffer.cpp:4507 src/frontends/qt/GuiView.cpp:2838
+#: src/Buffer.cpp:4504 src/frontends/qt/GuiView.cpp:2848
 msgid "File name error"
 msgstr "Erreur de nom de fichier"
 
-#: src/Buffer.cpp:4508
+#: src/Buffer.cpp:4505
 #, c-format
 msgid ""
 "The directory path to the document\n"
@@ -28030,21 +28048,21 @@ msgstr ""
 "devriez enregistrer le fichier dans un répertoire dont le chemin d'accès ne "
 "contient pas d'espaces."
 
-#: src/Buffer.cpp:4597 src/Buffer.cpp:4627 src/frontends/qt/GuiView.cpp:873
+#: src/Buffer.cpp:4594 src/Buffer.cpp:4624 src/frontends/qt/GuiView.cpp:872
 msgid "Document export cancelled."
 msgstr "Export du document annulé."
 
-#: src/Buffer.cpp:4630
+#: src/Buffer.cpp:4627
 #, c-format
 msgid "Document exported as %1$s to file `%2$s'"
 msgstr "Document exporté en tant que %1$s vers le fichier `%2$s'"
 
-#: src/Buffer.cpp:4637
+#: src/Buffer.cpp:4634
 #, c-format
 msgid "Document exported as %1$s"
 msgstr "Document exporté en tant que %1$s"
 
-#: src/Buffer.cpp:4706
+#: src/Buffer.cpp:4703
 #, c-format
 msgid ""
 "An emergency save of the document %1$s exists.\n"
@@ -28055,23 +28073,23 @@ msgstr ""
 "\n"
 "Voulez-vous récupérer la sauvegarde d'urgence ?"
 
-#: src/Buffer.cpp:4709
+#: src/Buffer.cpp:4706
 msgid "Load emergency save?"
 msgstr "Charger la sauvegarde d'urgence ?"
 
-#: src/Buffer.cpp:4710
+#: src/Buffer.cpp:4707
 msgid "&Recover"
 msgstr "&Récupérer"
 
-#: src/Buffer.cpp:4710
+#: src/Buffer.cpp:4707
 msgid "&Load Original"
 msgstr "&Charger l'original"
 
-#: src/Buffer.cpp:4710
+#: src/Buffer.cpp:4707
 msgid "&Only show difference"
 msgstr "N'afficher &que les différences"
 
-#: src/Buffer.cpp:4721
+#: src/Buffer.cpp:4718
 #, c-format
 msgid ""
 "An emergency file is successfully loaded, but the original file %1$s is "
@@ -28081,15 +28099,15 @@ msgstr ""
 "original %1$s est en lecture seule. Il faudra sauvegarder le document sous "
 "un autre nom."
 
-#: src/Buffer.cpp:4728
+#: src/Buffer.cpp:4725
 msgid "Document was successfully recovered."
 msgstr "Le document a été récupéré correctement."
 
-#: src/Buffer.cpp:4730
+#: src/Buffer.cpp:4727
 msgid "Document was NOT successfully recovered."
 msgstr "Le document n'a PAS été récupéré avec succès."
 
-#: src/Buffer.cpp:4731
+#: src/Buffer.cpp:4728
 #, c-format
 msgid ""
 "Remove emergency file now?\n"
@@ -28098,31 +28116,31 @@ msgstr ""
 "Supprimer la sauvegarde d'urgence maintenant ?\n"
 "(%1$s)"
 
-#: src/Buffer.cpp:4735 src/Buffer.cpp:4747
+#: src/Buffer.cpp:4732 src/Buffer.cpp:4744
 msgid "Delete emergency file?"
 msgstr "Supprimer la sauvegarde d'urgence ?"
 
-#: src/Buffer.cpp:4736 src/Buffer.cpp:4749
+#: src/Buffer.cpp:4733 src/Buffer.cpp:4746
 msgid "&Keep"
 msgstr "&Conserver"
 
-#: src/Buffer.cpp:4740
+#: src/Buffer.cpp:4737
 msgid "Emergency file deleted"
 msgstr "Sauvegarde d'urgence supprimée"
 
-#: src/Buffer.cpp:4741
+#: src/Buffer.cpp:4738
 msgid "Do not forget to save your file now!"
 msgstr "N'oubliez pas d'enregistrer votre fichier maintenant !"
 
-#: src/Buffer.cpp:4748
+#: src/Buffer.cpp:4745
 msgid "Remove emergency file now?"
 msgstr "Supprimer la sauvegarde d'urgence maintenant ?"
 
-#: src/Buffer.cpp:4771
+#: src/Buffer.cpp:4768
 msgid "Can't rename emergency file!"
 msgstr "Impossible de renommer la sauvegarde d'urgence !"
 
-#: src/Buffer.cpp:4772
+#: src/Buffer.cpp:4769
 msgid ""
 "LyX was unable to rename the emergency file. You should do so manually. "
 "Otherwise, you will be asked about it again the next time you try to load "
@@ -28132,11 +28150,11 @@ msgstr ""
 "faire manuellement. Sinon, il vous sera redemandé lors du prochain "
 "chargement de votre fichier, et pourrait écraser votre travail."
 
-#: src/Buffer.cpp:4777
+#: src/Buffer.cpp:4774
 msgid "Emergency File Renames"
 msgstr "Renommage de la sauvegarde d'urgence"
 
-#: src/Buffer.cpp:4778
+#: src/Buffer.cpp:4775
 #, c-format
 msgid ""
 "Emergency file renamed as:\n"
@@ -28145,7 +28163,7 @@ msgstr ""
 "Sauvegarde d'urgence renommée comme :\n"
 " %1$s"
 
-#: src/Buffer.cpp:4817
+#: src/Buffer.cpp:4814
 #, c-format
 msgid ""
 "The backup of the document %1$s is newer.\n"
@@ -28156,19 +28174,19 @@ msgstr ""
 "\n"
 "Voulez-vous charger la sauvegarde automatique ?"
 
-#: src/Buffer.cpp:4819
+#: src/Buffer.cpp:4816
 msgid "Load backup?"
 msgstr "Charger la sauvegarde automatique ?"
 
-#: src/Buffer.cpp:4820
+#: src/Buffer.cpp:4817
 msgid "&Load backup"
 msgstr "&Charger la sauvegarde"
 
-#: src/Buffer.cpp:4820
+#: src/Buffer.cpp:4817
 msgid "Load &original"
 msgstr "Charger l'&original"
 
-#: src/Buffer.cpp:4830
+#: src/Buffer.cpp:4827
 #, c-format
 msgid ""
 "A backup file is successfully loaded, but the original file %1$s is marked "
@@ -28178,16 +28196,16 @@ msgstr ""
 "original %1$s est en lecture seule. Il faudra sauvegarder le document sous "
 "un autre nom."
 
-#: src/Buffer.cpp:5232 src/insets/InsetCaption.cpp:404
+#: src/Buffer.cpp:5206 src/insets/InsetCaption.cpp:404
 msgid "Senseless!!! "
 msgstr "Inapproprié !!! "
 
-#: src/Buffer.cpp:5496
+#: src/Buffer.cpp:5470
 #, c-format
 msgid "Document %1$s reloaded."
 msgstr "Document %1$s rechargé."
 
-#: src/Buffer.cpp:5499
+#: src/Buffer.cpp:5473
 #, c-format
 msgid "Could not reload document %1$s."
 msgstr "Impossible de recharger le document %1$s."
@@ -28301,36 +28319,60 @@ msgstr ""
 msgid "Document class not available"
 msgstr "Classe de document non disponible"
 
-#: src/BufferParams.cpp:1098 src/Color.cpp:281
-#: src/frontends/qt/GuiDocument.cpp:3538
+#: src/BufferParams.cpp:1100 src/Color.cpp:281
+#: src/frontends/qt/GuiDocument.cpp:3542
 msgid "greyedout inset text"
 msgstr "texte d'insert grisé"
 
-#: src/BufferParams.cpp:1811 src/BufferParams.cpp:2254 src/Encoding.cpp:253
-#: src/Paragraph.cpp:3012 src/frontends/qt/LaTeXHighlighter.cpp:123
-#: src/frontends/qt/LaTeXHighlighter.cpp:216
+#: src/BufferParams.cpp:1718 src/BufferParams.cpp:1872
+#: src/BufferParams.cpp:2315 src/Encoding.cpp:253 src/Paragraph.cpp:3014
+#: src/frontends/qt/LaTeXHighlighter.cpp:143
+#: src/frontends/qt/LaTeXHighlighter.cpp:257
 #: src/insets/InsetCommandParams.cpp:508 src/insets/InsetCommandParams.cpp:516
 #: src/insets/InsetGraphics.cpp:886 src/insets/InsetGraphics.cpp:894
-#: src/insets/InsetListings.cpp:298 src/insets/InsetListings.cpp:306
-#: src/insets/InsetListings.cpp:331 src/mathed/MathExtern.cpp:1440
+#: src/insets/InsetListings.cpp:299 src/insets/InsetListings.cpp:307
+#: src/insets/InsetListings.cpp:332 src/mathed/MathExtern.cpp:1440
 #: src/mathed/MathExtern.cpp:1514
 msgid "LyX Warning: "
 msgstr "Avertissement LyX : "
 
-#: src/BufferParams.cpp:1812 src/BufferParams.cpp:2255 src/Encoding.cpp:254
-#: src/Paragraph.cpp:3013 src/insets/InsetCommandParams.cpp:509
-#: src/insets/InsetCommandParams.cpp:517 src/insets/InsetGraphics.cpp:887
-#: src/insets/InsetGraphics.cpp:895 src/insets/InsetListings.cpp:299
-#: src/insets/InsetListings.cpp:307 src/mathed/MathExtern.cpp:1441
-#: src/mathed/MathExtern.cpp:1515
+#: src/BufferParams.cpp:1719 src/BufferParams.cpp:1873
+#: src/BufferParams.cpp:2316 src/Encoding.cpp:254 src/Paragraph.cpp:3015
+#: src/insets/InsetCommandParams.cpp:509 src/insets/InsetCommandParams.cpp:517
+#: src/insets/InsetGraphics.cpp:887 src/insets/InsetGraphics.cpp:895
+#: src/insets/InsetListings.cpp:300 src/insets/InsetListings.cpp:308
+#: src/mathed/MathExtern.cpp:1441 src/mathed/MathExtern.cpp:1515
 msgid "uncodable character"
 msgstr "caractère incodable"
 
-#: src/BufferParams.cpp:1825
+#: src/BufferParams.cpp:1732
+msgid "Uncodable character in document metadata"
+msgstr "Caractère incodable dans les métadonnées du document"
+
+#: src/BufferParams.cpp:1734
+#, c-format
+msgid ""
+"The metadata of your document contains glyphs that are unknown in the "
+"current document encoding (namely %1$s).\n"
+"These glyphs are omitted  from the output, which may result in incomplete "
+"output.\n"
+"\n"
+"Please select an appropriate document encoding\n"
+"(such as utf8) or change the preamble code accordingly."
+msgstr ""
+"Les métadonnées de votre document contiennent des caractères inconnus de "
+"l'encodage en cours d'utilisation (en l'occurrence %1$s).\n"
+"Ces caractères seront omis dans le résultat imprimable, qui pourra donc être "
+"incomplet.\n"
+"\n"
+"Choisir un encodage approprié pour le document\n"
+"(par exemple utf8) ou modifier le préambule de manière appropriée."
+
+#: src/BufferParams.cpp:1886
 msgid "Uncodable character in class options"
 msgstr "Caractère incodable dans les options de classe"
 
-#: src/BufferParams.cpp:1827
+#: src/BufferParams.cpp:1888
 #, c-format
 msgid ""
 "The class options of your document contain glyphs that are unknown in the "
@@ -28349,11 +28391,11 @@ msgstr ""
 "Choisir un encodage approprié (par exemple utf8)\n"
 "ou modifier les options de classe."
 
-#: src/BufferParams.cpp:2268
+#: src/BufferParams.cpp:2329
 msgid "Uncodable character in user preamble"
 msgstr "Caractère incodable dans le préambule utilisateur"
 
-#: src/BufferParams.cpp:2270
+#: src/BufferParams.cpp:2331
 #, c-format
 msgid ""
 "The user preamble of your document contains glyphs that are unknown in the "
@@ -28372,7 +28414,7 @@ msgstr ""
 "Choisir un encodage approprié (par exemple utf8)\n"
 "ou modifier l'orthographe du nom d'auteur."
 
-#: src/BufferParams.cpp:2585
+#: src/BufferParams.cpp:2646
 #, c-format
 msgid ""
 "The layout file:\n"
@@ -28387,11 +28429,11 @@ msgstr ""
 "sera utilisée. LyX ne pourra pas produire\n"
 "un résultat imprimable correct."
 
-#: src/BufferParams.cpp:2591
+#: src/BufferParams.cpp:2652
 msgid "Document class not found"
 msgstr "Classe de document introuvable"
 
-#: src/BufferParams.cpp:2598
+#: src/BufferParams.cpp:2659
 #, c-format
 msgid ""
 "Due to some error in it, the layout file:\n"
@@ -28406,23 +28448,23 @@ msgstr ""
 "sera utilisée. LyX ne pourra pas produire\n"
 "un résultat imprimable correct."
 
-#: src/BufferParams.cpp:2604 src/BufferView.cpp:1424 src/BufferView.cpp:1456
+#: src/BufferParams.cpp:2665 src/BufferView.cpp:1424 src/BufferView.cpp:1456
 msgid "Could not load class"
 msgstr "Chargement de la classe impossible"
 
-#: src/BufferParams.cpp:2649
+#: src/BufferParams.cpp:2710
 msgid "Error reading internal layout information"
 msgstr "Erreur de lecture du format interne"
 
-#: src/BufferParams.cpp:2650 src/TextClass.cpp:1952 src/TextClass.cpp:1985
+#: src/BufferParams.cpp:2711 src/TextClass.cpp:1952 src/TextClass.cpp:1985
 msgid "Read Error"
 msgstr "Erreur de lecture"
 
-#: src/BufferParams.cpp:3655
+#: src/BufferParams.cpp:3726
 msgid "No bibliography processor found!"
 msgstr "Aucun processeur bibliographique n'a été trouvé !"
 
-#: src/BufferParams.cpp:3657
+#: src/BufferParams.cpp:3728
 #, c-format
 msgid ""
 "The bibliography processor requested by this document (%1$s) is not "
@@ -28435,11 +28477,11 @@ msgstr ""
 "bibliographie ni références ne seront créées.\n"
 "Merci de réparer votre installation !"
 
-#: src/BufferParams.cpp:3665
+#: src/BufferParams.cpp:3736
 msgid "Requested bibliography processor not found!"
 msgstr "Processeur bibliographique requis introuvable !"
 
-#: src/BufferParams.cpp:3667
+#: src/BufferParams.cpp:3738
 #, c-format
 msgid ""
 "The bibliography processor requested by this document (%1$s) is not "
@@ -28479,7 +28521,7 @@ msgid "This portion of the document is deleted."
 msgstr "Cette portion du document est supprimée."
 
 #: src/BufferView.cpp:1191 src/BufferView.cpp:2254
-#: src/frontends/qt/GuiView.cpp:4286 src/frontends/qt/GuiView.cpp:4374
+#: src/frontends/qt/GuiView.cpp:4296 src/frontends/qt/GuiView.cpp:4384
 msgid "Absolute filename expected."
 msgstr "Chemin absolu requis."
 
@@ -28591,7 +28633,7 @@ msgstr "Document %1$s inséré."
 msgid "Could not insert document %1$s"
 msgstr "Impossible d'insérer le document %1$s"
 
-#: src/BufferView.cpp:3572
+#: src/BufferView.cpp:3569
 #, c-format
 msgid ""
 "Could not read the specified document\n"
@@ -28602,11 +28644,11 @@ msgstr ""
 "%1$s\n"
 "à cause de l'erreur : %2$s"
 
-#: src/BufferView.cpp:3574
+#: src/BufferView.cpp:3571
 msgid "Could not read file"
 msgstr "Lecture du fichier impossible"
 
-#: src/BufferView.cpp:3581
+#: src/BufferView.cpp:3578
 #, c-format
 msgid ""
 "%1$s\n"
@@ -28615,17 +28657,17 @@ msgstr ""
 "%1$s\n"
 "est illisible."
 
-#: src/BufferView.cpp:3582 src/frontends/qt/qt_helpers.cpp:311
+#: src/BufferView.cpp:3579 src/frontends/qt/qt_helpers.cpp:311
 #: src/frontends/qt/qt_helpers.cpp:314 src/frontends/qt/qt_helpers.cpp:320
 #: src/output.cpp:39
 msgid "Could not open file"
 msgstr "Ouverture du fichier impossible"
 
-#: src/BufferView.cpp:3589
+#: src/BufferView.cpp:3586
 msgid "Reading not UTF-8 encoded file"
 msgstr "Lecture d'un fichier non encodé en UTF-8"
 
-#: src/BufferView.cpp:3590
+#: src/BufferView.cpp:3587
 msgid ""
 "The file is not UTF-8 encoded.\n"
 "It will be read as local 8Bit-encoded.\n"
@@ -29103,7 +29145,7 @@ msgstr "couleur héritée"
 msgid "ignore"
 msgstr "couleur ignorée"
 
-#: src/Converter.cpp:306
+#: src/Converter.cpp:312
 #, c-format
 msgid ""
 "<p>The following LaTeX backend has been configured to allow execution of "
@@ -29118,11 +29160,11 @@ msgstr ""
 "fonctionnalité proposée par LyX, permettant d'autoriser ce privilège pour "
 "les seuls documents qui en ont besoin, vous convient.</p>"
 
-#: src/Converter.cpp:315
+#: src/Converter.cpp:321
 msgid "Security Warning"
 msgstr "Avertissement de sécurité"
 
-#: src/Converter.cpp:328
+#: src/Converter.cpp:334
 #, c-format
 msgid ""
 "<p>The following LaTeX backend has been requested to allow execution of "
@@ -29136,7 +29178,7 @@ msgstr ""
 "compris des commandes dangereuses, si instruites dans ce but par un document "
 "LyX malicieux.</p>"
 
-#: src/Converter.cpp:335
+#: src/Converter.cpp:341
 #, c-format
 msgid ""
 "<p>The requested operation requires the use of a converter from %2$s to %3$s:"
@@ -29150,11 +29192,11 @@ msgstr ""
 "commandes dangereuses, si instruites dans ce but par un document LyX "
 "malicieux.</p>"
 
-#: src/Converter.cpp:345
+#: src/Converter.cpp:351
 msgid "An external converter is disabled for security reasons"
 msgstr "Un convertisseur externe est désactivé pour des raisons de sécurité"
 
-#: src/Converter.cpp:347
+#: src/Converter.cpp:353
 msgid ""
 "<p><b>Your current preference settings forbid its execution.</b></p><p>(To "
 "change this setting, go to <i>Preferences &#x25b9; File Handling &#x25b9; "
@@ -29166,15 +29208,15 @@ msgstr ""
 "&#x25b9; Convertisseurs</i> et décochez <i>Sécurité &#x25b9; Interdire "
 "l’utilisation des convertisseurs needauth</i>.)"
 
-#: src/Converter.cpp:356
+#: src/Converter.cpp:362
 msgid "A LaTeX backend requires your authorization"
 msgstr "Un traitement LaTeX requiert votre autorisation"
 
-#: src/Converter.cpp:357
+#: src/Converter.cpp:363
 msgid "An external converter requires your authorization"
 msgstr "Un convertisseur extérieur requiert votre autorisation"
 
-#: src/Converter.cpp:360
+#: src/Converter.cpp:366
 msgid ""
 "<p>Should LaTeX backends be allowed to run external programs?</p><p><b>Allow "
 "them only if you trust the origin/sender of the LyX document!</b></p>"
@@ -29183,7 +29225,7 @@ msgstr ""
 "externes ?</p><p><b>Autoriser uniquement si vous avez confiance dans "
 "l'origine ou l’émetteur du document LyX !</b></p>"
 
-#: src/Converter.cpp:363
+#: src/Converter.cpp:369
 msgid ""
 "<p>Would you like to run this converter?</p><p><b>Only run if you trust the "
 "origin/sender of the LyX document!</b></p>"
@@ -29191,35 +29233,35 @@ msgstr ""
 "<p>Voulez-vous exécuter ce convertisseur ?</p><p><b>Exécuter uniquement si "
 "vous avez confiance dans l'origine ou l’émetteur du document LyX !</b></p>"
 
-#: src/Converter.cpp:367
+#: src/Converter.cpp:373
 msgid "Do &not allow"
 msgstr "&Ne pas autoriser"
 
-#: src/Converter.cpp:367
+#: src/Converter.cpp:373
 msgid "Do &not run"
 msgstr "&Ne pas exécuter"
 
-#: src/Converter.cpp:368
+#: src/Converter.cpp:374
 msgid "A&llow"
 msgstr "&Autoriser"
 
-#: src/Converter.cpp:368
+#: src/Converter.cpp:374
 msgid "&Run"
 msgstr "&Exécuter"
 
-#: src/Converter.cpp:370
+#: src/Converter.cpp:376
 msgid "&Always allow for this document"
 msgstr "&Toujours autoriser pour ce document"
 
-#: src/Converter.cpp:371
+#: src/Converter.cpp:377
 msgid "&Always run for this document"
 msgstr "Toujours ex&écuter pour ce document"
 
-#: src/Converter.cpp:441 src/Converter.cpp:687 src/Converter.cpp:716
+#: src/Converter.cpp:447 src/Converter.cpp:693 src/Converter.cpp:722
 msgid "Converter killed"
 msgstr "Convertisseur interrompu"
 
-#: src/Converter.cpp:442 src/Converter.cpp:688 src/Converter.cpp:717
+#: src/Converter.cpp:448 src/Converter.cpp:694 src/Converter.cpp:723
 #, c-format
 msgid ""
 "The following converter was killed by the user.\n"
@@ -29228,12 +29270,12 @@ msgstr ""
 "Le convertisseur suivant a été interrompu par l'utilisateur.\n"
 " %1$s\n"
 
-#: src/Converter.cpp:461 src/Converter.cpp:745 src/Converter.cpp:768
-#: src/Converter.cpp:810
+#: src/Converter.cpp:467 src/Converter.cpp:751 src/Converter.cpp:774
+#: src/Converter.cpp:816
 msgid "Cannot convert file"
 msgstr "Conversion du fichier impossible"
 
-#: src/Converter.cpp:462
+#: src/Converter.cpp:468
 #, c-format
 msgid ""
 "No information for converting %1$s format files to %2$s.\n"
@@ -29243,11 +29285,11 @@ msgstr ""
 "du format %1$s vers le format %2$s.\n"
 "Définissez un convertisseur dans les préférences."
 
-#: src/Converter.cpp:567 src/frontends/qt/GuiDocument.cpp:2000
+#: src/Converter.cpp:573 src/frontends/qt/GuiDocument.cpp:2004
 msgid "Pygments driver command not found!"
 msgstr "Commande d'activation de pygments introuvable !"
 
-#: src/Converter.cpp:568 src/frontends/qt/GuiDocument.cpp:2001
+#: src/Converter.cpp:574 src/frontends/qt/GuiDocument.cpp:2005
 msgid ""
 "The driver command necessary to use the minted package\n"
 "(pygmentize) has not been found. Make sure you have\n"
@@ -29269,15 +29311,15 @@ msgstr ""
 "\n"
 "où « pilote » est le nom du pilote."
 
-#: src/Converter.cpp:663 src/Format.cpp:708 src/Format.cpp:778
+#: src/Converter.cpp:669 src/Format.cpp:708 src/Format.cpp:778
 msgid "Executing command: "
 msgstr "Exécution de la commande : "
 
-#: src/Converter.cpp:728
+#: src/Converter.cpp:734
 msgid "Process Killed"
 msgstr "Processus interrompu"
 
-#: src/Converter.cpp:729
+#: src/Converter.cpp:735
 #, c-format
 msgid ""
 "The conversion process was killed while running:\n"
@@ -29286,11 +29328,11 @@ msgstr ""
 "Le processus de conversion a été interrompu lors de l'exécution :\n"
 "%1$s"
 
-#: src/Converter.cpp:734
+#: src/Converter.cpp:740
 msgid "Process Timed Out"
 msgstr "Délai d'exécution du processus expiré"
 
-#: src/Converter.cpp:735
+#: src/Converter.cpp:741
 #, c-format
 msgid ""
 "The conversion process:\n"
@@ -29301,15 +29343,15 @@ msgstr ""
 "%1$s\n"
 "a expiré avant la fin."
 
-#: src/Converter.cpp:740
+#: src/Converter.cpp:746
 msgid "Build errors"
 msgstr "Erreurs de compilation"
 
-#: src/Converter.cpp:741
+#: src/Converter.cpp:747
 msgid "There were errors during the build process."
 msgstr "Il y a eu des erreurs pendant la compilation."
 
-#: src/Converter.cpp:746
+#: src/Converter.cpp:752
 #, c-format
 msgid ""
 "An error occurred while running:\n"
@@ -29318,38 +29360,38 @@ msgstr ""
 "Une erreur s'est produite lors de l'exécution :\n"
 "%1$s"
 
-#: src/Converter.cpp:769
+#: src/Converter.cpp:775
 #, c-format
 msgid "Could not move a temporary directory from %1$s to %2$s."
 msgstr "Impossible de déplacer un répertoire temporaire de %1$s à %2$s."
 
-#: src/Converter.cpp:812
+#: src/Converter.cpp:818
 #, c-format
 msgid "Could not copy a temporary file from %1$s to %2$s."
 msgstr "Impossible de copier un fichier temporaire de %1$s vers %2$s."
 
-#: src/Converter.cpp:813
+#: src/Converter.cpp:819
 #, c-format
 msgid "Could not move a temporary file from %1$s to %2$s."
 msgstr "Impossible de déplacer un fichier temporaire de %1$s à %2$s."
 
-#: src/Converter.cpp:853
+#: src/Converter.cpp:859
 msgid "Running LaTeX..."
 msgstr "Exécution de LaTeX..."
 
-#: src/Converter.cpp:870
+#: src/Converter.cpp:876
 msgid "Export canceled"
 msgstr "Exportation annulée"
 
-#: src/Converter.cpp:871
+#: src/Converter.cpp:877
 msgid "The export process was terminated by the user."
 msgstr "Le processus d'exportation a été interrompu par l'utilisateur."
 
-#: src/Converter.cpp:881
+#: src/Converter.cpp:887
 msgid "Undefined reference"
 msgstr "Référence indéfinie"
 
-#: src/Converter.cpp:882
+#: src/Converter.cpp:888
 msgid ""
 "Undefined references or citations were found during the build.\n"
 "Please check the warnings in the LaTeX log (Document > LaTeX Log)."
@@ -29359,7 +29401,7 @@ msgstr ""
 "Veuillez vérifier les avertissements dans le journal LaTeX (Document > "
 "Fichier journal)."
 
-#: src/Converter.cpp:894
+#: src/Converter.cpp:900
 #, c-format
 msgid ""
 "LaTeX did not run successfully. Additionally, LyX could not locate the LaTeX "
@@ -29368,11 +29410,11 @@ msgstr ""
 "LaTeX ne s'est pas exécuté correctement. En plus, LyX n'a pas pu trouver le "
 "fichier journal LaTeX %1$s."
 
-#: src/Converter.cpp:897 src/Converter.cpp:904
+#: src/Converter.cpp:903 src/Converter.cpp:910
 msgid "LaTeX failed"
 msgstr "Échec de LaTeX"
 
-#: src/Converter.cpp:900
+#: src/Converter.cpp:906
 #, c-format
 msgid ""
 "The external program\n"
@@ -29385,11 +29427,11 @@ msgstr ""
 "s'est terminé avec une erreur. Il est recommandé de corriger l'origine de "
 "l'erreur du programme externe (vérifier les journaux). "
 
-#: src/Converter.cpp:906
+#: src/Converter.cpp:912
 msgid "Output is empty"
 msgstr "La sortie est vide"
 
-#: src/Converter.cpp:907
+#: src/Converter.cpp:913
 msgid "No output file was generated."
 msgstr "Aucun fichier imprimable créé."
 
@@ -29498,7 +29540,7 @@ msgstr "&Conserver le fichier"
 msgid "Overwrite &all"
 msgstr "Écraser &tout"
 
-#: src/Exporter.cpp:51 src/frontends/qt/GuiView.cpp:793
+#: src/Exporter.cpp:51 src/frontends/qt/GuiView.cpp:792
 msgid "&Cancel export"
 msgstr "&Annuler l'exportation"
 
@@ -29522,17 +29564,17 @@ msgid "Number %1$s"
 msgstr "Numéro %1$s"
 
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:148
-#: src/frontends/qt/GuiDocument.cpp:4894 src/frontends/qt/GuiListings.cpp:167
+#: src/frontends/qt/GuiDocument.cpp:4908 src/frontends/qt/GuiListings.cpp:167
 msgid "Roman"
 msgstr "Romain"
 
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:4894 src/frontends/qt/GuiListings.cpp:167
+#: src/frontends/qt/GuiDocument.cpp:4908 src/frontends/qt/GuiListings.cpp:167
 msgid "Sans Serif"
 msgstr "Sans empattement"
 
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:150
-#: src/frontends/qt/GuiDocument.cpp:4894 src/frontends/qt/GuiListings.cpp:167
+#: src/frontends/qt/GuiDocument.cpp:4908 src/frontends/qt/GuiListings.cpp:167
 msgid "Typewriter"
 msgstr "Chasse fixe"
 
@@ -29616,7 +29658,7 @@ msgstr "Nom propre %1$s, "
 msgid "Cannot view file"
 msgstr "Visionnement du fichier impossible"
 
-#: src/Format.cpp:633 src/frontends/qt/GuiView.cpp:3976
+#: src/Format.cpp:633 src/frontends/qt/GuiView.cpp:3986
 #, c-format
 msgid "File does not exist: %1$s"
 msgstr "Fichier inexistant : %1$s"
@@ -30652,7 +30694,7 @@ msgstr "LyX VC : message de journal"
 msgid "(no log message)"
 msgstr "(aucun message de journal)"
 
-#: src/LyXVC.cpp:252 src/frontends/qt/GuiView.cpp:3839
+#: src/LyXVC.cpp:252 src/frontends/qt/GuiView.cpp:3849
 msgid "LyX VC: Log Message"
 msgstr "LyX VC : Message de journal"
 
@@ -30673,7 +30715,7 @@ msgstr ""
 msgid "Revert to stored version of document?"
 msgstr "Revenir à la version enregistrée du document ?"
 
-#: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4423
+#: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4433
 msgid "&Revert"
 msgstr "&Revenir à la Sauvegarde"
 
@@ -30810,40 +30852,40 @@ msgstr "Déjà en mode « expression régulière »"
 msgid "Regexp editor mode"
 msgstr "Mode « expression régulière »"
 
-#: src/Text3.cpp:1602
+#: src/Text3.cpp:1605
 msgid "Layout "
 msgstr "Environnement "
 
-#: src/Text3.cpp:1603 src/Text3.cpp:2173
+#: src/Text3.cpp:1606 src/Text3.cpp:2177
 msgid " not known"
 msgstr " inconnu"
 
-#: src/Text3.cpp:2172
+#: src/Text3.cpp:2176
 msgid "Table Style "
 msgstr "Style de tableau "
 
-#: src/Text3.cpp:2365 src/frontends/qt/GuiApplication.cpp:1873
+#: src/Text3.cpp:2369 src/frontends/qt/GuiApplication.cpp:1873
 msgid "Missing argument"
 msgstr "Paramètre manquant"
 
-#: src/Text3.cpp:2534
+#: src/Text3.cpp:2538
 msgid "Invalid argument (number exceeds stack size)!"
 msgstr "Argument invalide (le nombre est supérieur à la taille de la pile) !"
 
-#: src/Text3.cpp:2538
+#: src/Text3.cpp:2542
 msgid "Invalid argument (must be a non-negative number)!"
 msgstr "Argument invalide (nombre non négatif obligatoire)"
 
-#: src/Text3.cpp:2543 src/Text3.cpp:2561
+#: src/Text3.cpp:2547 src/Text3.cpp:2565
 #, c-format
 msgid "Text properties applied: %1$s"
 msgstr "Propriétés du texte appliquées : %1$s"
 
-#: src/Text3.cpp:2720
+#: src/Text3.cpp:2724
 msgid "Path to thesaurus directory not set!"
 msgstr "Chemin d'accès au répertoire du thésaurus non précisé !"
 
-#: src/Text3.cpp:2721
+#: src/Text3.cpp:2725
 msgid ""
 "The path to the thesaurus directory has not been specified.\n"
 "The thesaurus is not functional.\n"
@@ -30855,7 +30897,7 @@ msgstr ""
 "Se référer au Guide de l'utilisateur, section 6.15.1, pour\n"
 "les instructions de réglage."
 
-#: src/Text3.cpp:2847 src/Text3.cpp:2858
+#: src/Text3.cpp:2851 src/Text3.cpp:2862
 msgid "Paragraph layout set"
 msgstr "Style du paragraphe redéfini"
 
@@ -30975,8 +31017,8 @@ msgstr ""
 msgid "Error reading cite engine %1$s\n"
 msgstr "Erreur de lecture du moteur bibliographique %1$s\n"
 
-#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:477
-#: src/insets/InsetIndex.cpp:498
+#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:500
+#: src/insets/InsetIndex.cpp:521
 msgid "unknown type!"
 msgstr "type  inconnu !"
 
@@ -31009,7 +31051,7 @@ msgstr "Étiquettes et références"
 msgid "Broken References and Citations"
 msgstr "Références et citations cassées"
 
-#: src/TocBackend.cpp:296 src/frontends/qt/GuiDocument.cpp:1770
+#: src/TocBackend.cpp:296 src/frontends/qt/GuiDocument.cpp:1774
 msgid "Child Documents"
 msgstr "Sous-documents"
 
@@ -31033,7 +31075,7 @@ msgstr "Vérifiez si le paquetage RCS GNU est installé sur votre système."
 #: src/VCBackend.cpp:934 src/VCBackend.cpp:993 src/VCBackend.cpp:1052
 #: src/VCBackend.cpp:1060 src/VCBackend.cpp:1348 src/VCBackend.cpp:1450
 #: src/VCBackend.cpp:1456 src/VCBackend.cpp:1479 src/VCBackend.cpp:1964
-#: src/frontends/qt/GuiView.cpp:3755 src/frontends/qt/GuiView.cpp:3798
+#: src/frontends/qt/GuiView.cpp:3765 src/frontends/qt/GuiView.cpp:3808
 msgid "Revision control error."
 msgstr "Erreur de contrôle de version."
 
@@ -31288,7 +31330,7 @@ msgstr ""
 "Le document %1$s est déjà chargé et a été modifié.\n"
 "Voulez-vous revenir à la version enregistrée et ignorer vos modifications ?"
 
-#: src/buffer_funcs.cpp:55 src/frontends/qt/GuiView.cpp:4414
+#: src/buffer_funcs.cpp:55 src/frontends/qt/GuiView.cpp:4424
 msgid "Reload saved document?"
 msgstr "Revenir à la sauvegarde ?"
 
@@ -31472,8 +31514,8 @@ msgstr ""
 "Entrée)"
 
 #: src/frontends/qt/FloatPlacement.cpp:182
-#: src/frontends/qt/GuiDocument.cpp:1149 src/frontends/qt/GuiDocument.cpp:2721
-#: src/frontends/qt/GuiDocument.cpp:2748
+#: src/frontends/qt/GuiDocument.cpp:1149 src/frontends/qt/GuiDocument.cpp:2725
+#: src/frontends/qt/GuiDocument.cpp:2752
 msgid "Class Default"
 msgstr "Valeurs implicites de la classe"
 
@@ -31481,7 +31523,7 @@ msgstr "Valeurs implicites de la classe"
 msgid "Document Default"
 msgstr "Document implicite"
 
-#: src/frontends/qt/FloatPlacement.h:38 src/frontends/qt/GuiDocument.cpp:1785
+#: src/frontends/qt/FloatPlacement.h:38 src/frontends/qt/GuiDocument.cpp:1789
 msgid "Float Settings"
 msgstr "Paramètres de flottant"
 
@@ -31650,7 +31692,7 @@ msgstr "Commande désactivée"
 msgid "Bad debug value `%1$s'."
 msgstr "Valeur de débogage incorrecte « %1$s »."
 
-#: src/frontends/qt/GuiApplication.cpp:1463 src/frontends/qt/GuiView.cpp:2192
+#: src/frontends/qt/GuiApplication.cpp:1463 src/frontends/qt/GuiView.cpp:2214
 msgid "Command not allowed without a buffer open"
 msgstr "Commande non autorisée si aucun tampon n'est ouvert"
 
@@ -31914,12 +31956,12 @@ msgstr "toutes les entités de références"
 
 #: src/frontends/qt/GuiBibtex.cpp:456 src/frontends/qt/GuiBibtex.cpp:466
 #: src/frontends/qt/GuiCompare.cpp:163 src/frontends/qt/GuiCompare.cpp:167
-#: src/frontends/qt/GuiDocument.cpp:2899 src/frontends/qt/GuiExternal.cpp:677
+#: src/frontends/qt/GuiDocument.cpp:2903 src/frontends/qt/GuiExternal.cpp:677
 #: src/frontends/qt/GuiGraphics.cpp:826 src/frontends/qt/GuiInclude.cpp:380
 #: src/frontends/qt/GuiLyXFiles.cpp:368 src/frontends/qt/GuiLyXFiles.cpp:374
-#: src/frontends/qt/GuiView.cpp:2605 src/frontends/qt/GuiView.cpp:2664
-#: src/frontends/qt/GuiView.cpp:2804 src/frontends/qt/GuiView.cpp:2938
-#: src/frontends/qt/GuiView.cpp:3058 src/frontends/qt/GuiView.cpp:3180
+#: src/frontends/qt/GuiView.cpp:2615 src/frontends/qt/GuiView.cpp:2674
+#: src/frontends/qt/GuiView.cpp:2814 src/frontends/qt/GuiView.cpp:2948
+#: src/frontends/qt/GuiView.cpp:3068 src/frontends/qt/GuiView.cpp:3190
 msgid "D&ocuments"
 msgstr "Documents|u"
 
@@ -32001,7 +32043,7 @@ msgid "Filename Suffix"
 msgstr "Suffixe du fichier"
 
 #: src/frontends/qt/GuiBranches.cpp:135 src/frontends/qt/GuiBranches.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:3335 src/frontends/qt/GuiDocument.cpp:4630
+#: src/frontends/qt/GuiDocument.cpp:3339 src/frontends/qt/GuiDocument.cpp:4644
 #: src/frontends/qt/GuiProgressView.cpp:144
 #: src/frontends/qt/GuiProgressView.cpp:158
 #: src/frontends/qt/GuiProgressView.cpp:179
@@ -32009,8 +32051,8 @@ msgid "Yes"
 msgstr "Oui"
 
 #: src/frontends/qt/GuiBranches.cpp:135 src/frontends/qt/GuiBranches.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:3334 src/frontends/qt/GuiDocument.cpp:3961
-#: src/frontends/qt/GuiDocument.cpp:4629
+#: src/frontends/qt/GuiDocument.cpp:3338 src/frontends/qt/GuiDocument.cpp:3972
+#: src/frontends/qt/GuiDocument.cpp:4643
 #: src/frontends/qt/GuiProgressView.cpp:110
 #: src/frontends/qt/GuiProgressView.cpp:143
 #: src/frontends/qt/GuiProgressView.cpp:179
@@ -32279,10 +32321,10 @@ msgstr "Fichiers %1$s"
 msgid "Choose a filename to save the pasted graphic as"
 msgstr "Choisir le nom de fichier sous lequel enregistrer le graphique collé"
 
-#: src/frontends/qt/GuiClipboard.cpp:220 src/frontends/qt/GuiView.cpp:2682
-#: src/frontends/qt/GuiView.cpp:2823 src/frontends/qt/GuiView.cpp:2839
-#: src/frontends/qt/GuiView.cpp:2851 src/frontends/qt/GuiView.cpp:2868
-#: src/frontends/qt/GuiView.cpp:2953 src/frontends/qt/GuiView.cpp:4386
+#: src/frontends/qt/GuiClipboard.cpp:220 src/frontends/qt/GuiView.cpp:2692
+#: src/frontends/qt/GuiView.cpp:2833 src/frontends/qt/GuiView.cpp:2849
+#: src/frontends/qt/GuiView.cpp:2861 src/frontends/qt/GuiView.cpp:2878
+#: src/frontends/qt/GuiView.cpp:2963 src/frontends/qt/GuiView.cpp:4396
 msgid "Canceled."
 msgstr "Annulé."
 
@@ -32312,8 +32354,8 @@ msgid "Select document"
 msgstr "Sélectionner le document"
 
 #: src/frontends/qt/GuiCompare.cpp:157 src/frontends/qt/GuiLyXFiles.cpp:367
-#: src/frontends/qt/GuiView.cpp:2609 src/frontends/qt/GuiView.cpp:2668
-#: src/frontends/qt/GuiView.cpp:2942 src/frontends/qt/GuiView.cpp:3069
+#: src/frontends/qt/GuiView.cpp:2619 src/frontends/qt/GuiView.cpp:2678
+#: src/frontends/qt/GuiView.cpp:2952 src/frontends/qt/GuiView.cpp:3079
 msgid "LyX Documents (*.lyx)"
 msgstr "Documents LyX (*.lyx)"
 
@@ -32646,54 +32688,54 @@ msgstr "JIS B5"
 msgid "JIS B6"
 msgstr "JIS B6"
 
-#: src/frontends/qt/GuiDocument.cpp:1355
+#: src/frontends/qt/GuiDocument.cpp:1357
 msgid "Numbered"
 msgstr "Numéroté"
 
-#: src/frontends/qt/GuiDocument.cpp:1356
+#: src/frontends/qt/GuiDocument.cpp:1358
 msgid "Appears in TOC"
 msgstr "Apparaît dans la TdM"
 
-#: src/frontends/qt/GuiDocument.cpp:1444
+#: src/frontends/qt/GuiDocument.cpp:1446
 msgid "Package"
 msgstr "Paquetage"
 
-#: src/frontends/qt/GuiDocument.cpp:1444
+#: src/frontends/qt/GuiDocument.cpp:1446
 msgid "Load automatically"
 msgstr "Charger automatiquement"
 
-#: src/frontends/qt/GuiDocument.cpp:1445
+#: src/frontends/qt/GuiDocument.cpp:1447
 msgid "Load always"
 msgstr "Toujours charger"
 
-#: src/frontends/qt/GuiDocument.cpp:1445
+#: src/frontends/qt/GuiDocument.cpp:1447
 msgid "Do not load"
 msgstr "Ne pas charger"
 
-#: src/frontends/qt/GuiDocument.cpp:1457
+#: src/frontends/qt/GuiDocument.cpp:1459
 msgid "The AMS LaTeX packages are always used"
 msgstr "Les paquetages LaTeX AMS sont utilisés dans tous les cas"
 
-#: src/frontends/qt/GuiDocument.cpp:1460
+#: src/frontends/qt/GuiDocument.cpp:1462
 #, c-format
 msgid "The LaTeX package %1$s is always used"
 msgstr "Le paquetage LaTeX %1$s est utilisé dans tous les cas"
 
-#: src/frontends/qt/GuiDocument.cpp:1465
+#: src/frontends/qt/GuiDocument.cpp:1467
 msgid "The AMS LaTeX packages are never used"
 msgstr "Les paquetages LaTeX AMS ne sont jamais utilisés"
 
-#: src/frontends/qt/GuiDocument.cpp:1468
+#: src/frontends/qt/GuiDocument.cpp:1470
 #, c-format
 msgid "The LaTeX package %1$s is never used"
 msgstr "Le paquetage LaTeX %1$s n'est jamais utilisé"
 
-#: src/frontends/qt/GuiDocument.cpp:1605 src/frontends/qt/GuiDocument.cpp:2878
+#: src/frontends/qt/GuiDocument.cpp:1607 src/frontends/qt/GuiDocument.cpp:2882
 #, c-format
 msgid "%1$s [Class '%2$s']"
 msgstr "%1$s [classe « %2$s »]"
 
-#: src/frontends/qt/GuiDocument.cpp:1608
+#: src/frontends/qt/GuiDocument.cpp:1610
 #, c-format
 msgid ""
 "Class not found by LyX. Please check if you have the matching %1$s class and "
@@ -32702,82 +32744,82 @@ msgstr ""
 "Classe introuvable par LyX. Vérifier si la classe %1$s et tous les "
 "paquetages requis (%2$s) sont bien installés."
 
-#: src/frontends/qt/GuiDocument.cpp:1670
+#: src/frontends/qt/GuiDocument.cpp:1672
 msgid "All avail. modules"
 msgstr "Tous les modules dispo."
 
-#: src/frontends/qt/GuiDocument.cpp:1762 src/frontends/qt/GuiDocument.cpp:1986
+#: src/frontends/qt/GuiDocument.cpp:1766 src/frontends/qt/GuiDocument.cpp:1990
 msgid "Input listings parameters below. Enter ? for a list of parameters."
 msgstr ""
 "Saisir les paramètres du listing ci-dessous. Taper ? pour une liste des "
 "paramètres."
 
-#: src/frontends/qt/GuiDocument.cpp:1769
+#: src/frontends/qt/GuiDocument.cpp:1773
 msgid "Document Class"
 msgstr "Classe de document"
 
-#: src/frontends/qt/GuiDocument.cpp:1772
+#: src/frontends/qt/GuiDocument.cpp:1776
 msgid "Local Layout"
 msgstr "Format local"
 
-#: src/frontends/qt/GuiDocument.cpp:1774
+#: src/frontends/qt/GuiDocument.cpp:1778
 msgid "Text Layout"
 msgstr "Format du texte"
 
-#: src/frontends/qt/GuiDocument.cpp:1776
+#: src/frontends/qt/GuiDocument.cpp:1780
 msgid "Page Margins"
 msgstr "Marges"
 
-#: src/frontends/qt/GuiDocument.cpp:1778 src/frontends/qt/GuiPrefs.cpp:1080
+#: src/frontends/qt/GuiDocument.cpp:1782 src/frontends/qt/GuiPrefs.cpp:1080
 msgid "Colors"
 msgstr "Couleurs"
 
-#: src/frontends/qt/GuiDocument.cpp:1779
+#: src/frontends/qt/GuiDocument.cpp:1783
 msgid "Change Tracking"
 msgstr "Suivi des modifications"
 
-#: src/frontends/qt/GuiDocument.cpp:1780
+#: src/frontends/qt/GuiDocument.cpp:1784
 msgid "Numbering & TOC"
 msgstr "Numérotation & TdM"
 
-#: src/frontends/qt/GuiDocument.cpp:1782
+#: src/frontends/qt/GuiDocument.cpp:1786
 msgid "Indexes"
 msgstr "Index"
 
-#: src/frontends/qt/GuiDocument.cpp:1783
+#: src/frontends/qt/GuiDocument.cpp:1787
 msgid "PDF Properties"
 msgstr "Propriétés du PDF"
 
-#: src/frontends/qt/GuiDocument.cpp:1784
+#: src/frontends/qt/GuiDocument.cpp:1788
 msgid "Math Options"
 msgstr "Options mode math"
 
-#: src/frontends/qt/GuiDocument.cpp:1787
+#: src/frontends/qt/GuiDocument.cpp:1791
 msgid "Bullets"
 msgstr "Puces"
 
-#: src/frontends/qt/GuiDocument.cpp:1789
+#: src/frontends/qt/GuiDocument.cpp:1793
 msgid "Formats[[output]]"
 msgstr "Sortie"
 
-#: src/frontends/qt/GuiDocument.cpp:1790
+#: src/frontends/qt/GuiDocument.cpp:1794
 msgid "LaTeX Preamble"
 msgstr "Préambule LaTeX"
 
-#: src/frontends/qt/GuiDocument.cpp:2095 src/frontends/qt/GuiDocument.cpp:2181
+#: src/frontends/qt/GuiDocument.cpp:2099 src/frontends/qt/GuiDocument.cpp:2185
 msgid "Class defaults"
 msgstr "Valeurs implicites de la classe"
 
-#: src/frontends/qt/GuiDocument.cpp:2095 src/frontends/qt/GuiDocument.cpp:2181
+#: src/frontends/qt/GuiDocument.cpp:2099 src/frontends/qt/GuiDocument.cpp:2185
 msgid "Package defaults"
 msgstr "Valeurs implicites du paquetage"
 
-#: src/frontends/qt/GuiDocument.cpp:2098 src/frontends/qt/GuiDocument.cpp:2184
+#: src/frontends/qt/GuiDocument.cpp:2102 src/frontends/qt/GuiDocument.cpp:2188
 msgid "If no value is given, the defaults as set by the class are used."
 msgstr ""
 "En l'absence de valeur, les réglages implicites de la classe seront utilisés."
 
-#: src/frontends/qt/GuiDocument.cpp:2099 src/frontends/qt/GuiDocument.cpp:2185
+#: src/frontends/qt/GuiDocument.cpp:2103 src/frontends/qt/GuiDocument.cpp:2189
 msgid ""
 "If no value is given, the defaults as set by the geometry package or a "
 "package/class overriding geometry's defaults are used."
@@ -32786,49 +32828,49 @@ msgstr ""
 "« geometry » ou par un paquetage ou une classe écrasant les réglages "
 "implicites de geometry."
 
-#: src/frontends/qt/GuiDocument.cpp:2228 src/frontends/qt/GuiDocument.cpp:2258
+#: src/frontends/qt/GuiDocument.cpp:2232 src/frontends/qt/GuiDocument.cpp:2262
 msgid "&Default..."
 msgstr "&Implicite..."
 
-#: src/frontends/qt/GuiDocument.cpp:2459
+#: src/frontends/qt/GuiDocument.cpp:2463
 msgid "Direct (No inputenc)"
 msgstr "Direct (pas de recours à inputenc)"
 
-#: src/frontends/qt/GuiDocument.cpp:2461
+#: src/frontends/qt/GuiDocument.cpp:2465
 msgid "Direct (XeTeX/LuaTeX)"
 msgstr "Direct (XeTeX/LuaTeX)"
 
-#: src/frontends/qt/GuiDocument.cpp:2647 src/frontends/qt/GuiDocument.cpp:4305
-#: src/frontends/qt/GuiDocument.cpp:4314 src/frontends/qt/GuiDocument.cpp:4323
-#: src/frontends/qt/GuiDocument.cpp:4332
+#: src/frontends/qt/GuiDocument.cpp:2651 src/frontends/qt/GuiDocument.cpp:4316
+#: src/frontends/qt/GuiDocument.cpp:4325 src/frontends/qt/GuiDocument.cpp:4334
+#: src/frontends/qt/GuiDocument.cpp:4343
 msgid " (not installed)"
 msgstr " (pas installé)"
 
-#: src/frontends/qt/GuiDocument.cpp:2676
+#: src/frontends/qt/GuiDocument.cpp:2680
 msgid "Non-TeX Fonts Default"
 msgstr "Polices non-TeX implicites"
 
-#: src/frontends/qt/GuiDocument.cpp:2678
+#: src/frontends/qt/GuiDocument.cpp:2682
 msgid " (not available)"
 msgstr " (indisponible)"
 
-#: src/frontends/qt/GuiDocument.cpp:2679
+#: src/frontends/qt/GuiDocument.cpp:2683
 msgid "Class Default (TeX Fonts)"
 msgstr "Valeurs implicites de la classe (polices TeX)"
 
-#: src/frontends/qt/GuiDocument.cpp:2830
+#: src/frontends/qt/GuiDocument.cpp:2834
 msgid "Lay&outs"
 msgstr "Forma&t|"
 
-#: src/frontends/qt/GuiDocument.cpp:2832
+#: src/frontends/qt/GuiDocument.cpp:2836
 msgid "LyX Layout (*.layout)"
 msgstr "Formats LyX (*.layout)"
 
-#: src/frontends/qt/GuiDocument.cpp:2834 src/frontends/qt/GuiDocument.cpp:2843
+#: src/frontends/qt/GuiDocument.cpp:2838 src/frontends/qt/GuiDocument.cpp:2847
 msgid "Local layout file"
 msgstr "Fichier de format local"
 
-#: src/frontends/qt/GuiDocument.cpp:2844
+#: src/frontends/qt/GuiDocument.cpp:2848
 msgid ""
 "The layout file you have selected is a local layout\n"
 "file, not one in the system or user directory.\n"
@@ -32841,33 +32883,33 @@ msgstr ""
 "Votre document ne peut pas fonctionner avec ce format si vous\n"
 "déplacez le fichier de format un répertoire différent."
 
-#: src/frontends/qt/GuiDocument.cpp:2848
+#: src/frontends/qt/GuiDocument.cpp:2852
 msgid "&Set Layout"
 msgstr "&Sélectionner le format"
 
-#: src/frontends/qt/GuiDocument.cpp:2862
+#: src/frontends/qt/GuiDocument.cpp:2866
 msgid "Unable to read local layout file."
 msgstr "Échec de la lecture d'un fichier de format local."
 
-#: src/frontends/qt/GuiDocument.cpp:2879
+#: src/frontends/qt/GuiDocument.cpp:2883
 msgid "This is a local layout file."
 msgstr "Ceci est un fichier de format local."
 
-#: src/frontends/qt/GuiDocument.cpp:2893
+#: src/frontends/qt/GuiDocument.cpp:2897
 msgid "Select master document"
 msgstr "Sélectionner le document maître"
 
-#: src/frontends/qt/GuiDocument.cpp:2897
+#: src/frontends/qt/GuiDocument.cpp:2901
 msgid "LyX Files (*.lyx)"
 msgstr "Documents LyX (*.lyx)"
 
-#: src/frontends/qt/GuiDocument.cpp:2921 src/frontends/qt/GuiDocument.cpp:3222
-#: src/frontends/qt/GuiDocument.cpp:4821
+#: src/frontends/qt/GuiDocument.cpp:2925 src/frontends/qt/GuiDocument.cpp:3226
+#: src/frontends/qt/GuiDocument.cpp:4835
 msgid "Unapplied changes"
 msgstr "Modifications non appliquées"
 
-#: src/frontends/qt/GuiDocument.cpp:2922 src/frontends/qt/GuiDocument.cpp:3223
-#: src/frontends/qt/GuiDocument.cpp:4822
+#: src/frontends/qt/GuiDocument.cpp:2926 src/frontends/qt/GuiDocument.cpp:3227
+#: src/frontends/qt/GuiDocument.cpp:4836
 msgid ""
 "Some changes in the dialog were not yet applied.\n"
 "If you do not apply now, they will be lost after this action."
@@ -32875,86 +32917,86 @@ msgstr ""
 "Certaines modifications dans le dialogue n'ont pas encore été appliquées. Si "
 "vous ne la appliquez pas maintenant, elles seront perdues après cette action."
 
-#: src/frontends/qt/GuiDocument.cpp:2924 src/frontends/qt/GuiDocument.cpp:3225
-#: src/frontends/qt/GuiDocument.cpp:4824
+#: src/frontends/qt/GuiDocument.cpp:2928 src/frontends/qt/GuiDocument.cpp:3229
+#: src/frontends/qt/GuiDocument.cpp:4838
 msgid "&Apply"
 msgstr "&Appliquer"
 
-#: src/frontends/qt/GuiDocument.cpp:2924 src/frontends/qt/GuiDocument.cpp:3225
-#: src/frontends/qt/GuiDocument.cpp:4824
+#: src/frontends/qt/GuiDocument.cpp:2928 src/frontends/qt/GuiDocument.cpp:3229
+#: src/frontends/qt/GuiDocument.cpp:4838
 msgid "&Dismiss"
 msgstr "Aban&donner"
 
-#: src/frontends/qt/GuiDocument.cpp:2935 src/frontends/qt/GuiDocument.cpp:4832
+#: src/frontends/qt/GuiDocument.cpp:2939 src/frontends/qt/GuiDocument.cpp:4846
 msgid "Unable to set document class."
 msgstr "Impossible d'appliquer la classe du document."
 
-#: src/frontends/qt/GuiDocument.cpp:3101
+#: src/frontends/qt/GuiDocument.cpp:3105
 msgid "Basic numerical"
 msgstr "Numérique de base"
 
-#: src/frontends/qt/GuiDocument.cpp:3104
+#: src/frontends/qt/GuiDocument.cpp:3108
 msgid "Author-year"
 msgstr "Auteur-année"
 
-#: src/frontends/qt/GuiDocument.cpp:3107
+#: src/frontends/qt/GuiDocument.cpp:3111
 msgid "Author-number"
 msgstr "Auteur-numéro"
 
-#: src/frontends/qt/GuiDocument.cpp:3147
+#: src/frontends/qt/GuiDocument.cpp:3151
 #, c-format
 msgid "%1$s and %2$s"
 msgstr "%1$s et %2$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3154
+#: src/frontends/qt/GuiDocument.cpp:3158
 #, c-format
 msgid "%1$s, %2$s"
 msgstr "%1$s, %2$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3159
+#: src/frontends/qt/GuiDocument.cpp:3163
 #, c-format
 msgid "%1$s, %2$s, and %3$s"
 msgstr "%1$s, %2$s and %3$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3173
+#: src/frontends/qt/GuiDocument.cpp:3177
 #, c-format
 msgid "%1$s (unavailable)"
 msgstr "%1$s (indisponible)"
 
-#: src/frontends/qt/GuiDocument.cpp:3272
+#: src/frontends/qt/GuiDocument.cpp:3276
 msgid "Module provided by document class."
 msgstr "Module fourni par la classe de document."
 
-#: src/frontends/qt/GuiDocument.cpp:3280
+#: src/frontends/qt/GuiDocument.cpp:3284
 #, c-format
 msgid "<p><b>Category:</b> %1$s.</p>"
 msgstr "<p><b>Categorie :</b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3290
+#: src/frontends/qt/GuiDocument.cpp:3294
 #, c-format
 msgid "<p><b>Package(s) required:</b> %1$s.</p>"
 msgstr "<p><b>Paquetage(s) requis : </b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3296
+#: src/frontends/qt/GuiDocument.cpp:3300
 msgid "or"
 msgstr "ou"
 
-#: src/frontends/qt/GuiDocument.cpp:3299
+#: src/frontends/qt/GuiDocument.cpp:3303
 #, c-format
 msgid "<p><b>Modules required:</b> %1$s.</p>"
 msgstr "<p><b>Modules requis : </b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3308
+#: src/frontends/qt/GuiDocument.cpp:3312
 #, c-format
 msgid "<p><b>Modules excluded:</b> %1$s.</p>"
 msgstr "<p><b>Modules exclus : </b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3313
+#: src/frontends/qt/GuiDocument.cpp:3317
 #, c-format
 msgid "<p><b>Filename:</b> <tt>%1$s.module</tt>.</p>"
 msgstr "<p><b>Nom de fichier : </b> <tt>%1$s.module</tt>.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3318
+#: src/frontends/qt/GuiDocument.cpp:3322
 msgid ""
 "<p><font color=red><b>WARNING: Some required packages are unavailable!</b></"
 "font></p>"
@@ -32962,61 +33004,61 @@ msgstr ""
 "<p><font color=red><b>AVERTISSEMENT : certains paquetages requis ne sont pas "
 "disponibles !</b></font></p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3963
+#: src/frontends/qt/GuiDocument.cpp:3974
 msgid "per part"
 msgstr "par partie"
 
-#: src/frontends/qt/GuiDocument.cpp:3965
+#: src/frontends/qt/GuiDocument.cpp:3976
 msgid "per chapter"
 msgstr "par chapitre"
 
-#: src/frontends/qt/GuiDocument.cpp:3967
+#: src/frontends/qt/GuiDocument.cpp:3978
 msgid "per section"
 msgstr "par section"
 
-#: src/frontends/qt/GuiDocument.cpp:3969
+#: src/frontends/qt/GuiDocument.cpp:3980
 msgid "per subsection"
 msgstr "par sous-section"
 
-#: src/frontends/qt/GuiDocument.cpp:3970
+#: src/frontends/qt/GuiDocument.cpp:3981
 msgid "per child document"
 msgstr "par sous-document"
 
-#: src/frontends/qt/GuiDocument.cpp:3997
+#: src/frontends/qt/GuiDocument.cpp:4008
 #, c-format
 msgid "%1$s (not available)"
 msgstr "%1$s (indisponible)"
 
-#: src/frontends/qt/GuiDocument.cpp:4225
+#: src/frontends/qt/GuiDocument.cpp:4236
 msgid "[No options predefined]"
 msgstr "[Aucune option prédéfinie]"
 
-#: src/frontends/qt/GuiDocument.cpp:4492
+#: src/frontends/qt/GuiDocument.cpp:4503
 msgid "C&ustomize Hyperref Options"
 msgstr "Personnaliser les options h&yperref"
 
-#: src/frontends/qt/GuiDocument.cpp:4494
+#: src/frontends/qt/GuiDocument.cpp:4505
 msgid "&Use Hyperref Support"
 msgstr "&Utiliser le support pour hyperref"
 
-#: src/frontends/qt/GuiDocument.cpp:4844
+#: src/frontends/qt/GuiDocument.cpp:4858
 msgid "Can't set layout!"
 msgstr "Impossible d'appliquer le format !"
 
-#: src/frontends/qt/GuiDocument.cpp:4845
+#: src/frontends/qt/GuiDocument.cpp:4859
 #, c-format
 msgid "Unable to set layout for ID: %1$s"
 msgstr "Impossible d'appliquer le format pour ID : %1$s"
 
-#: src/frontends/qt/GuiDocument.cpp:4948
+#: src/frontends/qt/GuiDocument.cpp:4962
 msgid "Not Found"
 msgstr "Introuvable"
 
-#: src/frontends/qt/GuiDocument.cpp:5010
+#: src/frontends/qt/GuiDocument.cpp:5024
 msgid "Assigned master does not include this file"
 msgstr "Le document maître désigné n'inclut pas ce fichier"
 
-#: src/frontends/qt/GuiDocument.cpp:5011
+#: src/frontends/qt/GuiDocument.cpp:5025
 #, c-format
 msgid ""
 "You must include this file in the document\n"
@@ -33027,11 +33069,11 @@ msgstr ""
 "%1$s' pour pouvoir utiliser les fonctionnalités\n"
 "« document maître »."
 
-#: src/frontends/qt/GuiDocument.cpp:5015
+#: src/frontends/qt/GuiDocument.cpp:5029
 msgid "Could not load master"
 msgstr "Chargement du document maître impossible"
 
-#: src/frontends/qt/GuiDocument.cpp:5016
+#: src/frontends/qt/GuiDocument.cpp:5030
 #, c-format
 msgid ""
 "The master document '%1$s'\n"
@@ -33040,23 +33082,23 @@ msgstr ""
 "Le document maître  %1$s\n"
 " n'a pas pu être chargé."
 
-#: src/frontends/qt/GuiDocument.cpp:5166
+#: src/frontends/qt/GuiDocument.cpp:5180
 msgid "%1 (missing req.)"
 msgstr "%1 (req. manquante)"
 
-#: src/frontends/qt/GuiDocument.cpp:5178
+#: src/frontends/qt/GuiDocument.cpp:5192
 msgid "personal module"
 msgstr "module personnel"
 
-#: src/frontends/qt/GuiDocument.cpp:5178
+#: src/frontends/qt/GuiDocument.cpp:5192
 msgid "distributed module"
 msgstr "module distribué"
 
-#: src/frontends/qt/GuiDocument.cpp:5179
+#: src/frontends/qt/GuiDocument.cpp:5193
 msgid "<b>Module name:</b> <i>%1</i> (%2)"
 msgstr "<b>Nom du module : </b> <i>%1</i> (%2)"
 
-#: src/frontends/qt/GuiDocument.cpp:5185
+#: src/frontends/qt/GuiDocument.cpp:5199
 msgid "<b>Note:</b> Some requirements for this module are missing!"
 msgstr "<b>Nota :</b> certains éléments pour ce module sont manquants !"
 
@@ -33739,17 +33781,17 @@ msgstr ""
 msgid "Select example file"
 msgstr "Choisir le fichier d'exemple"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:369 src/frontends/qt/GuiView.cpp:2665
-#: src/frontends/qt/GuiView.cpp:2805 src/frontends/qt/GuiView.cpp:2939
+#: src/frontends/qt/GuiLyXFiles.cpp:369 src/frontends/qt/GuiView.cpp:2675
+#: src/frontends/qt/GuiView.cpp:2815 src/frontends/qt/GuiView.cpp:2949
 msgid "&Examples"
 msgstr "&Exemples"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:373 src/frontends/qt/GuiView.cpp:2604
+#: src/frontends/qt/GuiLyXFiles.cpp:373 src/frontends/qt/GuiView.cpp:2614
 msgid "Select template file"
 msgstr "Choisir le modèle"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:375 src/frontends/qt/GuiView.cpp:2606
-#: src/frontends/qt/GuiView.cpp:3059
+#: src/frontends/qt/GuiLyXFiles.cpp:375 src/frontends/qt/GuiView.cpp:2616
+#: src/frontends/qt/GuiView.cpp:3069
 msgid "&Templates"
 msgstr "&Modèles"
 
@@ -33875,7 +33917,7 @@ msgstr ""
 "En principe, vous n'avez pas à le modifier puisqu'on utilise la plus grande "
 "largeur d'étiquette de tous les éléments."
 
-#: src/frontends/qt/GuiParagraph.cpp:175 src/frontends/qt/GuiView.cpp:3337
+#: src/frontends/qt/GuiParagraph.cpp:175 src/frontends/qt/GuiView.cpp:3347
 msgid "&Close"
 msgstr "&Fermer"
 
@@ -34668,21 +34710,21 @@ msgstr "version "
 msgid "unknown version"
 msgstr "version inconnue"
 
-#: src/frontends/qt/GuiView.cpp:649
+#: src/frontends/qt/GuiView.cpp:648
 msgid "Workarea zoom level. Drag, use Ctrl-+/- or Shift-Mousewheel to adjust."
 msgstr ""
 "Niveau de zoom de la fenêtre de travail. Faire glisser, utiliser Ctrl-+/- ou "
 "Maj-Molette pour ajuster."
 
-#: src/frontends/qt/GuiView.cpp:691 src/frontends/qt/GuiView.cpp:804
-#: src/frontends/qt/GuiView.cpp:974 src/frontends/qt/Menus.cpp:1843
+#: src/frontends/qt/GuiView.cpp:690 src/frontends/qt/GuiView.cpp:803
+#: src/frontends/qt/GuiView.cpp:973 src/frontends/qt/Menus.cpp:1843
 #: src/frontends/qt/Menus.cpp:1847 src/frontends/qt/Menus.cpp:1851
 #: src/frontends/qt/Menus.cpp:1855 src/frontends/qt/Menus.cpp:1859
 #: src/frontends/qt/Menus.cpp:1863
 msgid "[[ZOOM]]%1$d%"
 msgstr "%1$d%"
 
-#: src/frontends/qt/GuiView.cpp:710
+#: src/frontends/qt/GuiView.cpp:709
 msgid ""
 "WARNING: LaTeX is allowed to execute external commands for this document. "
 "Right click to change."
@@ -34690,112 +34732,116 @@ msgstr ""
 "AVERTISSEMENT :  LaTeX peut exécuter des commandes externes dans ce "
 "document. Faites un clic droit pour changer."
 
-#: src/frontends/qt/GuiView.cpp:789
+#: src/frontends/qt/GuiView.cpp:788
 msgid "Cancel Export?"
 msgstr "&Annuler l'exportation ?"
 
-#: src/frontends/qt/GuiView.cpp:790
+#: src/frontends/qt/GuiView.cpp:789
 msgid "Do you want to cancel the background export process?"
 msgstr "Voulez-vous arrêter le processus d'exportation en arrière-plan ?"
 
-#: src/frontends/qt/GuiView.cpp:793
+#: src/frontends/qt/GuiView.cpp:792
 msgid "Co&ntinue"
 msgstr "&Continuer"
 
-#: src/frontends/qt/GuiView.cpp:870
+#: src/frontends/qt/GuiView.cpp:869
 #, c-format
 msgid "Successful export to format: %1$s"
 msgstr "Succès de l'exportation au format : %1$s"
 
-#: src/frontends/qt/GuiView.cpp:879
+#: src/frontends/qt/GuiView.cpp:878
 #, c-format
 msgid "Error while exporting format: %1$s"
 msgstr "Erreur à l'exportation au format : %1$s"
 
-#: src/frontends/qt/GuiView.cpp:882
+#: src/frontends/qt/GuiView.cpp:881
 #, c-format
 msgid "Successful preview of format: %1$s"
 msgstr "Succès de l'aperçu du format : %1$s"
 
-#: src/frontends/qt/GuiView.cpp:885
+#: src/frontends/qt/GuiView.cpp:884
 #, c-format
 msgid "Error while previewing format: %1$s"
 msgstr "Erreur au visionnement du format : %1$s"
 
-#: src/frontends/qt/GuiView.cpp:888
+#: src/frontends/qt/GuiView.cpp:887
 #, c-format
 msgid "Conversion cancelled while previewing format: %1$s"
 msgstr "Conversion annulée pendant le visionnement du format : %1$s"
 
-#: src/frontends/qt/GuiView.cpp:1241
+#: src/frontends/qt/GuiView.cpp:1239
 msgid "Exit LyX"
 msgstr "Quitter LyX"
 
-#: src/frontends/qt/GuiView.cpp:1242
+#: src/frontends/qt/GuiView.cpp:1240
 msgid "LyX could not be closed because documents are being processed by LyX."
 msgstr "Impossible de fermer LyX, des documents sont en cours de traitement."
 
-#: src/frontends/qt/GuiView.cpp:1390
+#: src/frontends/qt/GuiView.cpp:1388
 #, c-format
 msgid "%1$s (modified externally)"
 msgstr "%1$s (modifié par une application externe)"
 
-#: src/frontends/qt/GuiView.cpp:1513
+#: src/frontends/qt/GuiView.cpp:1511
 msgid "Welcome to LyX!"
 msgstr "Bienvenue dans LyX !"
 
-#: src/frontends/qt/GuiView.cpp:2072
+#: src/frontends/qt/GuiView.cpp:2070
 msgid "Automatic save done."
 msgstr "Sauvegarde automatique effective."
 
-#: src/frontends/qt/GuiView.cpp:2073
+#: src/frontends/qt/GuiView.cpp:2071
 msgid "Automatic save failed!"
 msgstr "La sauvegarde automatique a échoué !"
 
-#: src/frontends/qt/GuiView.cpp:2129
+#: src/frontends/qt/GuiView.cpp:2151
 msgid "Command not allowed without any document open"
 msgstr "Commande non autorisée si aucun document n'est ouvert"
 
-#: src/frontends/qt/GuiView.cpp:2198
+#: src/frontends/qt/GuiView.cpp:2220
 msgid "Invalid argument of master-buffer-forall"
 msgstr "Argument invalide pour la commande master-buffer-forall"
 
-#: src/frontends/qt/GuiView.cpp:2316
+#: src/frontends/qt/GuiView.cpp:2338
 msgid "Function toolbar-set requires two arguments!"
 msgstr "La fonction toolbar-set nécessite deux arguments !"
 
-#: src/frontends/qt/GuiView.cpp:2323
+#: src/frontends/qt/GuiView.cpp:2345
 #, c-format
 msgid "Invalid argument \"%1$s\" to function toolbar-set!"
 msgstr "Argument \"%1$s\" invalide pour la fonction toolbar-set !"
 
-#: src/frontends/qt/GuiView.cpp:2339 src/frontends/qt/GuiView.cpp:2352
-#: src/frontends/qt/GuiView.cpp:2369
+#: src/frontends/qt/GuiView.cpp:2361 src/frontends/qt/GuiView.cpp:2374
+#: src/frontends/qt/GuiView.cpp:2391
 #, c-format
 msgid "Unknown toolbar \"%1$s\""
 msgstr "Barre d'outils inconnue \"%1$s\""
 
-#: src/frontends/qt/GuiView.cpp:2490 src/frontends/qt/GuiView.cpp:2503
+#: src/frontends/qt/GuiView.cpp:2509
 msgid "Zoom level cannot be less than %1$d%."
 msgstr "Le niveau de zoom ne peut être inférieur à %1$d%."
 
-#: src/frontends/qt/GuiView.cpp:2633
+#: src/frontends/qt/GuiView.cpp:2514
+msgid "Zoom level cannot be more than %1$d%."
+msgstr "Le niveau de zoom ne peut pas être supérieur à %1$d%."
+
+#: src/frontends/qt/GuiView.cpp:2643
 msgid "Document not loaded."
 msgstr "Le document n'a pas été chargé."
 
-#: src/frontends/qt/GuiView.cpp:2663
+#: src/frontends/qt/GuiView.cpp:2673
 msgid "Select document to open"
 msgstr "Choisir le document à ouvrir"
 
-#: src/frontends/qt/GuiView.cpp:2669
+#: src/frontends/qt/GuiView.cpp:2679
 msgid "LyX Document Backups (*.lyx~)"
 msgstr "Sauvegardes des documents LyX (*.lyx~)"
 
-#: src/frontends/qt/GuiView.cpp:2670
+#: src/frontends/qt/GuiView.cpp:2680
 msgid "All Files (*.*)"
 msgstr "Tous les fichiers (*.*)"
 
-#: src/frontends/qt/GuiView.cpp:2697
+#: src/frontends/qt/GuiView.cpp:2707
 #, c-format
 msgid ""
 "The directory in the given path\n"
@@ -34806,40 +34852,40 @@ msgstr ""
 "%1$s\n"
 "n'existe pas."
 
-#: src/frontends/qt/GuiView.cpp:2714
+#: src/frontends/qt/GuiView.cpp:2724
 #, c-format
 msgid "Opening document %1$s..."
 msgstr "Ouverture du document %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:2719
+#: src/frontends/qt/GuiView.cpp:2729
 #, c-format
 msgid "Document %1$s opened."
 msgstr "Document %1$s ouvert."
 
-#: src/frontends/qt/GuiView.cpp:2722
+#: src/frontends/qt/GuiView.cpp:2732
 msgid "Version control detected."
 msgstr "Contrôle de version détecté."
 
-#: src/frontends/qt/GuiView.cpp:2724
+#: src/frontends/qt/GuiView.cpp:2734
 #, c-format
 msgid "Could not open document %1$s"
 msgstr "Impossible d'ouvrir le document %1$s"
 
-#: src/frontends/qt/GuiView.cpp:2752
+#: src/frontends/qt/GuiView.cpp:2762
 msgid "Couldn't import file"
 msgstr "Impossible d'importer le fichier"
 
-#: src/frontends/qt/GuiView.cpp:2753
+#: src/frontends/qt/GuiView.cpp:2763
 #, c-format
 msgid "No information for importing the format %1$s."
 msgstr "Pas d'information pour importer le format %1$s."
 
-#: src/frontends/qt/GuiView.cpp:2800
+#: src/frontends/qt/GuiView.cpp:2810
 #, c-format
 msgid "Select %1$s file to import"
 msgstr "Choisir le fichier %1$s à importer"
 
-#: src/frontends/qt/GuiView.cpp:2835
+#: src/frontends/qt/GuiView.cpp:2845
 #, c-format
 msgid ""
 "The file name '%1$s' is invalid!\n"
@@ -34848,8 +34894,8 @@ msgstr ""
 "Le nom de fichier « %1$s » n'est pas valide !\n"
 "Importation interrompue."
 
-#: src/frontends/qt/GuiView.cpp:2862 src/frontends/qt/GuiView.cpp:3129
-#: src/frontends/qt/GuiView.cpp:3232
+#: src/frontends/qt/GuiView.cpp:2872 src/frontends/qt/GuiView.cpp:3139
+#: src/frontends/qt/GuiView.cpp:3242
 #, c-format
 msgid ""
 "The document %1$s already exists.\n"
@@ -34860,33 +34906,33 @@ msgstr ""
 "\n"
 "Voulez-vous écrire par dessus ce document ?"
 
-#: src/frontends/qt/GuiView.cpp:2864 src/frontends/qt/GuiView.cpp:3133
-#: src/frontends/qt/GuiView.cpp:3236
+#: src/frontends/qt/GuiView.cpp:2874 src/frontends/qt/GuiView.cpp:3143
+#: src/frontends/qt/GuiView.cpp:3246
 msgid "Overwrite document?"
 msgstr "Écraser le document ?"
 
-#: src/frontends/qt/GuiView.cpp:2873
+#: src/frontends/qt/GuiView.cpp:2883
 #, c-format
 msgid "Importing %1$s..."
 msgstr "Importe %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:2876
+#: src/frontends/qt/GuiView.cpp:2886
 msgid "imported."
 msgstr "importé."
 
-#: src/frontends/qt/GuiView.cpp:2878
+#: src/frontends/qt/GuiView.cpp:2888
 msgid "file not imported!"
 msgstr "fichier non importé !"
 
-#: src/frontends/qt/GuiView.cpp:2904
+#: src/frontends/qt/GuiView.cpp:2914
 msgid "newfile"
 msgstr "nouveau"
 
-#: src/frontends/qt/GuiView.cpp:2937
+#: src/frontends/qt/GuiView.cpp:2947
 msgid "Select LyX document to insert"
 msgstr "Choisir le document à insérer"
 
-#: src/frontends/qt/GuiView.cpp:2984
+#: src/frontends/qt/GuiView.cpp:2994
 #, c-format
 msgid ""
 "It is suggested to save the template in a subdirectory\n"
@@ -34899,23 +34945,23 @@ msgstr ""
 "Ce sous-répertoire n'existe pas encore.\n"
 "Voulez-vous le créer ?"
 
-#: src/frontends/qt/GuiView.cpp:2989
+#: src/frontends/qt/GuiView.cpp:2999
 msgid "Create Language Directory?"
 msgstr "Créer un répertoire de langue ?"
 
-#: src/frontends/qt/GuiView.cpp:2990 src/frontends/qt/GuiView.cpp:3021
+#: src/frontends/qt/GuiView.cpp:3000 src/frontends/qt/GuiView.cpp:3031
 msgid "&Yes, Create"
 msgstr "&Oui, créer"
 
-#: src/frontends/qt/GuiView.cpp:2990 src/frontends/qt/GuiView.cpp:3021
+#: src/frontends/qt/GuiView.cpp:3000 src/frontends/qt/GuiView.cpp:3031
 msgid "&No, Save Template in Parent Directory"
 msgstr "&Non, enregistrer le modèle dans le répertoire parent"
 
-#: src/frontends/qt/GuiView.cpp:2993 src/frontends/qt/GuiView.cpp:3024
+#: src/frontends/qt/GuiView.cpp:3003 src/frontends/qt/GuiView.cpp:3034
 msgid "Subdirectory creation failed!"
 msgstr "Échec de la création du sous-répertoire !"
 
-#: src/frontends/qt/GuiView.cpp:2994 src/frontends/qt/GuiView.cpp:3025
+#: src/frontends/qt/GuiView.cpp:3004 src/frontends/qt/GuiView.cpp:3035
 msgid ""
 "Could not create subdirectory.\n"
 "The template will be saved in the parent directory."
@@ -34923,7 +34969,7 @@ msgstr ""
 "Impossible de créer le sous-répertoire.\n"
 "Le modèle sera enregistré dans le répertoire parent."
 
-#: src/frontends/qt/GuiView.cpp:3015
+#: src/frontends/qt/GuiView.cpp:3025
 #, c-format
 msgid ""
 "It is suggested to save the template in a subdirectory\n"
@@ -34936,19 +34982,19 @@ msgstr ""
 "Ce sous-répertoire n'existe pas encore.\n"
 "Voulez-vous le créer ?"
 
-#: src/frontends/qt/GuiView.cpp:3020
+#: src/frontends/qt/GuiView.cpp:3030
 msgid "Create Category Directory?"
 msgstr "Créer un répertoire de catégorie ?"
 
-#: src/frontends/qt/GuiView.cpp:3055
+#: src/frontends/qt/GuiView.cpp:3065
 msgid "Choose a filename to save template as"
 msgstr "Choisir le nom du fichier sous lequel enregistrer le modèle"
 
-#: src/frontends/qt/GuiView.cpp:3056
+#: src/frontends/qt/GuiView.cpp:3066
 msgid "Choose a filename to save document as"
 msgstr "Choisir le nom sous lequel enregistrer le fichier"
 
-#: src/frontends/qt/GuiView.cpp:3092
+#: src/frontends/qt/GuiView.cpp:3102
 #, c-format
 msgid ""
 "The file\n"
@@ -34963,17 +35009,17 @@ msgstr ""
 "Merci de le fermer avant d'essayer de l'écraser.\n"
 "Vouez-vous définir un nouveau nom de fichier ?"
 
-#: src/frontends/qt/GuiView.cpp:3096
+#: src/frontends/qt/GuiView.cpp:3106
 msgid "Chosen File Already Open"
 msgstr "Fichier sélectionné déjà ouvert"
 
-#: src/frontends/qt/GuiView.cpp:3097 src/frontends/qt/GuiView.cpp:3119
-#: src/frontends/qt/GuiView.cpp:3135 src/frontends/qt/GuiView.cpp:3237
-#: src/frontends/qt/GuiView.cpp:3282
+#: src/frontends/qt/GuiView.cpp:3107 src/frontends/qt/GuiView.cpp:3129
+#: src/frontends/qt/GuiView.cpp:3145 src/frontends/qt/GuiView.cpp:3247
+#: src/frontends/qt/GuiView.cpp:3292
 msgid "&Rename"
 msgstr "&Renommer"
 
-#: src/frontends/qt/GuiView.cpp:3112
+#: src/frontends/qt/GuiView.cpp:3122
 #, c-format
 msgid ""
 "The document %1$s is already registered.\n"
@@ -34984,27 +35030,27 @@ msgstr ""
 "\n"
 "Voulez-vous choisir un nouveau nom ?"
 
-#: src/frontends/qt/GuiView.cpp:3117
+#: src/frontends/qt/GuiView.cpp:3127
 msgid "Rename document?"
 msgstr "Renommer le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3117
+#: src/frontends/qt/GuiView.cpp:3127
 msgid "Copy document?"
 msgstr "Copier le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3119
+#: src/frontends/qt/GuiView.cpp:3129
 msgid "&Copy"
 msgstr "&Copier"
 
-#: src/frontends/qt/GuiView.cpp:3179
+#: src/frontends/qt/GuiView.cpp:3189
 msgid "Choose a filename to export the document as"
 msgstr "Choisir le nom sous lequel exporter le fichier"
 
-#: src/frontends/qt/GuiView.cpp:3183
+#: src/frontends/qt/GuiView.cpp:3193
 msgid "Guess from extension (*.*)"
 msgstr "Deviner à partir du suffixe (*.*)"
 
-#: src/frontends/qt/GuiView.cpp:3278
+#: src/frontends/qt/GuiView.cpp:3288
 #, c-format
 msgid ""
 "The document %1$s could not be saved.\n"
@@ -35015,15 +35061,15 @@ msgstr ""
 "\n"
 "Voulez-vous renommer le document et essayer à nouveau ?"
 
-#: src/frontends/qt/GuiView.cpp:3281
+#: src/frontends/qt/GuiView.cpp:3291
 msgid "Rename and save?"
 msgstr "Renommer et enregistrer ?"
 
-#: src/frontends/qt/GuiView.cpp:3282
+#: src/frontends/qt/GuiView.cpp:3292
 msgid "&Retry"
 msgstr "&Réessayer"
 
-#: src/frontends/qt/GuiView.cpp:3327
+#: src/frontends/qt/GuiView.cpp:3337
 #, c-format
 msgid ""
 "Last view on document %1$s is being closed.\n"
@@ -35041,24 +35087,24 @@ msgstr ""
 "Les documents cachés peuvent être ré-affichés via\n"
 "Affichage->Caché->...\n"
 
-#: src/frontends/qt/GuiView.cpp:3336
+#: src/frontends/qt/GuiView.cpp:3346
 msgid "Close or hide document?"
 msgstr "Fermer ou cacher le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3337
+#: src/frontends/qt/GuiView.cpp:3347
 msgid "&Hide"
 msgstr "&Cacher"
 
-#: src/frontends/qt/GuiView.cpp:3434
+#: src/frontends/qt/GuiView.cpp:3444
 msgid "Close document"
 msgstr "Fermer le document"
 
-#: src/frontends/qt/GuiView.cpp:3435
+#: src/frontends/qt/GuiView.cpp:3445
 msgid "Document could not be closed because it is being processed by LyX."
 msgstr ""
 "Impossible de fermer le document, il est en cours de traitement par LyX."
 
-#: src/frontends/qt/GuiView.cpp:3567 src/frontends/qt/GuiView.cpp:3682
+#: src/frontends/qt/GuiView.cpp:3577 src/frontends/qt/GuiView.cpp:3692
 #, c-format
 msgid ""
 "The document %1$s has not been saved yet.\n"
@@ -35069,16 +35115,16 @@ msgstr ""
 "\n"
 "Voulez-vous enregistrer le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3570 src/frontends/qt/GuiView.cpp:3685
+#: src/frontends/qt/GuiView.cpp:3580 src/frontends/qt/GuiView.cpp:3695
 msgid "Save new document?"
 msgstr "Enregistrer le nouveau document ?"
 
-#: src/frontends/qt/GuiView.cpp:3571 src/frontends/qt/GuiView.cpp:3585
-#: src/frontends/qt/GuiView.cpp:3687
+#: src/frontends/qt/GuiView.cpp:3581 src/frontends/qt/GuiView.cpp:3595
+#: src/frontends/qt/GuiView.cpp:3697
 msgid "&Save"
 msgstr "&Enregistrer"
 
-#: src/frontends/qt/GuiView.cpp:3576
+#: src/frontends/qt/GuiView.cpp:3586
 #, c-format
 msgid ""
 "The document %1$s has unsaved changes.\n"
@@ -35089,7 +35135,7 @@ msgstr ""
 "\n"
 "Voulez-vous enregistrer le document ou ignorer ces modifications ?"
 
-#: src/frontends/qt/GuiView.cpp:3579
+#: src/frontends/qt/GuiView.cpp:3589
 #, c-format
 msgid ""
 "The document %1$s has not been saved yet.\n"
@@ -35100,19 +35146,19 @@ msgstr ""
 "\n"
 "Voulez-vous enregistrer le document ou bien l'abandonner entièrement ?"
 
-#: src/frontends/qt/GuiView.cpp:3583 src/frontends/qt/GuiView.cpp:3679
+#: src/frontends/qt/GuiView.cpp:3593 src/frontends/qt/GuiView.cpp:3689
 msgid "Save changed document?"
 msgstr "Enregistrer le document modifié ?"
 
-#: src/frontends/qt/GuiView.cpp:3583
+#: src/frontends/qt/GuiView.cpp:3593
 msgid "Save document?"
 msgstr "Enregistrer le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3585
+#: src/frontends/qt/GuiView.cpp:3595
 msgid "&Discard"
 msgstr "I&gnorer"
 
-#: src/frontends/qt/GuiView.cpp:3676
+#: src/frontends/qt/GuiView.cpp:3686
 #, c-format
 msgid ""
 "The document %1$s has unsaved changes.\n"
@@ -35123,7 +35169,7 @@ msgstr ""
 "\n"
 "Voulez-vous enregistrer le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3708
+#: src/frontends/qt/GuiView.cpp:3718
 #, c-format
 msgid ""
 "Document \n"
@@ -35135,37 +35181,37 @@ msgstr ""
 "a été modifié par une application externe. Le recharger maintenant ? Toutes "
 "les modifications locales seront perdues."
 
-#: src/frontends/qt/GuiView.cpp:3711
+#: src/frontends/qt/GuiView.cpp:3721
 msgid "Reload externally changed document?"
 msgstr "Recharger le document modifié par une application externe ?"
 
-#: src/frontends/qt/GuiView.cpp:3756
+#: src/frontends/qt/GuiView.cpp:3766
 msgid "Document could not be checked in."
 msgstr "Impossible d'enregistrer les changements."
 
-#: src/frontends/qt/GuiView.cpp:3799
+#: src/frontends/qt/GuiView.cpp:3809
 msgid "Error when setting the locking property."
 msgstr "Erreur lors du positionnement de la propriété de verrouillage."
 
-#: src/frontends/qt/GuiView.cpp:3848
+#: src/frontends/qt/GuiView.cpp:3858
 msgid "Directory is not accessible."
 msgstr "Répertoire inaccessible."
 
-#: src/frontends/qt/GuiView.cpp:3925
+#: src/frontends/qt/GuiView.cpp:3935
 #, c-format
 msgid "Opening child document %1$s..."
 msgstr "Ouverture du sous-document %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:3983
+#: src/frontends/qt/GuiView.cpp:3993
 #, c-format
 msgid "No buffer for file: %1$s."
 msgstr "Pas de tampon pour le fichier : %1$s."
 
-#: src/frontends/qt/GuiView.cpp:3993
+#: src/frontends/qt/GuiView.cpp:4003
 msgid "Inverse Search Failed"
 msgstr "Échec de la recherche inversée"
 
-#: src/frontends/qt/GuiView.cpp:3994
+#: src/frontends/qt/GuiView.cpp:4004
 msgid ""
 "Invalid position requested by inverse search.\n"
 "You may need to update the viewed document."
@@ -35173,35 +35219,35 @@ msgstr ""
 "Position requise par la recherche inversée invalide.\n"
 "Vous devriez peut-être mettre à jour le document dans la visionneuse."
 
-#: src/frontends/qt/GuiView.cpp:4074
+#: src/frontends/qt/GuiView.cpp:4084
 msgid "Export Error"
 msgstr "Exporter l'erreur"
 
-#: src/frontends/qt/GuiView.cpp:4075
+#: src/frontends/qt/GuiView.cpp:4085
 msgid "Error cloning the Buffer."
 msgstr "Erreur lors du clonage du tampon."
 
-#: src/frontends/qt/GuiView.cpp:4226 src/frontends/qt/GuiView.cpp:4246
+#: src/frontends/qt/GuiView.cpp:4236 src/frontends/qt/GuiView.cpp:4256
 msgid "Exporting ..."
 msgstr "Exportation en cours..."
 
-#: src/frontends/qt/GuiView.cpp:4255
+#: src/frontends/qt/GuiView.cpp:4265
 msgid "Previewing ..."
 msgstr "Visionnement en cours..."
 
-#: src/frontends/qt/GuiView.cpp:4293
+#: src/frontends/qt/GuiView.cpp:4303
 msgid "Document not loaded"
 msgstr "Le document n'a pas été chargé"
 
-#: src/frontends/qt/GuiView.cpp:4380
+#: src/frontends/qt/GuiView.cpp:4390
 msgid "Select file to insert"
 msgstr "Choisir le fichier à insérer"
 
-#: src/frontends/qt/GuiView.cpp:4383
+#: src/frontends/qt/GuiView.cpp:4393
 msgid "All Files (*)"
 msgstr "Tous les fichiers (*)"
 
-#: src/frontends/qt/GuiView.cpp:4411
+#: src/frontends/qt/GuiView.cpp:4421
 #, c-format
 msgid ""
 "The current version will be lost. Are you sure you want to load the version "
@@ -35210,7 +35256,7 @@ msgstr ""
 "La version actuelle sera perdue. Êtes-vous sûr de vouloir revenir à la "
 "dernière version enregistrée du document %1$s ?"
 
-#: src/frontends/qt/GuiView.cpp:4418
+#: src/frontends/qt/GuiView.cpp:4428
 #, c-format
 msgid ""
 "Any changes will be lost. Are you sure you want to revert to the saved "
@@ -35219,61 +35265,61 @@ msgstr ""
 "Toutes les modifications seront perdues. Êtes-vous sûr de vouloir revenir à "
 "la dernière version enregistrée du document %1$s ?"
 
-#: src/frontends/qt/GuiView.cpp:4421
+#: src/frontends/qt/GuiView.cpp:4431
 msgid "Revert to saved document?"
 msgstr "Revenir à la sauvegarde du document ?"
 
-#: src/frontends/qt/GuiView.cpp:4438
+#: src/frontends/qt/GuiView.cpp:4448
 msgid "Buffer export reset."
 msgstr "RaZ exportation du tampon."
 
-#: src/frontends/qt/GuiView.cpp:4461
+#: src/frontends/qt/GuiView.cpp:4471
 msgid "Saving all documents..."
 msgstr "Enregistrement de tous les documents..."
 
-#: src/frontends/qt/GuiView.cpp:4471
+#: src/frontends/qt/GuiView.cpp:4481
 msgid "All documents saved."
 msgstr "Tous les documents sont enregistrés."
 
-#: src/frontends/qt/GuiView.cpp:4510
+#: src/frontends/qt/GuiView.cpp:4520
 msgid "Developer mode is now enabled."
 msgstr "Le mode « développeur » est maintenant actif."
 
-#: src/frontends/qt/GuiView.cpp:4512
+#: src/frontends/qt/GuiView.cpp:4522
 msgid "Developer mode is now disabled."
 msgstr "Le mode « développeur » est maintenant inactif."
 
-#: src/frontends/qt/GuiView.cpp:4544
+#: src/frontends/qt/GuiView.cpp:4554
 msgid "Toolbars unlocked."
 msgstr "Barres d'outils déverrouillées."
 
-#: src/frontends/qt/GuiView.cpp:4546
+#: src/frontends/qt/GuiView.cpp:4556
 msgid "Toolbars locked."
 msgstr "Barres d'outils verrouillées."
 
-#: src/frontends/qt/GuiView.cpp:4558
+#: src/frontends/qt/GuiView.cpp:4568
 #, c-format
 msgid "Icon size set to %1$dx%2$d."
 msgstr "Taille d'icône réglée à %1$dx%2$d."
 
-#: src/frontends/qt/GuiView.cpp:4647
+#: src/frontends/qt/GuiView.cpp:4657
 #, c-format
 msgid "%1$s unknown command!"
 msgstr "%1$s : commande inconnue !"
 
-#: src/frontends/qt/GuiView.cpp:4751
+#: src/frontends/qt/GuiView.cpp:4746
 msgid "Zoom level is now %1$d% (default value: %2$d%)"
 msgstr "Le niveau de zoom est maintenant %1$d% (valeur implicite : %2$d%)"
 
-#: src/frontends/qt/GuiView.cpp:4810
+#: src/frontends/qt/GuiView.cpp:4805
 msgid "Please, preview the document first."
 msgstr "Merci d'afficher d'abord un aperçu du document."
 
-#: src/frontends/qt/GuiView.cpp:4826
+#: src/frontends/qt/GuiView.cpp:4821
 msgid "Couldn't proceed."
 msgstr "Impossible de poursuivre."
 
-#: src/frontends/qt/GuiView.cpp:5183
+#: src/frontends/qt/GuiView.cpp:5178
 msgid "Disable Shell Escape"
 msgstr "Désactiver shell escape"
 
@@ -35839,7 +35885,7 @@ msgid "active"
 msgstr "actif"
 
 #: src/insets/InsetBranch.cpp:70 src/insets/InsetBranch.cpp:72
-#: src/insets/InsetIndex.cpp:659
+#: src/insets/InsetIndex.cpp:682
 msgid "non-active"
 msgstr "non-actif"
 
@@ -35875,11 +35921,11 @@ msgstr "Branche (document maître) : "
 msgid "Branch (undefined): "
 msgstr "Branche (indéfinie) : "
 
-#: src/insets/InsetBranch.cpp:190
+#: src/insets/InsetBranch.cpp:192
 msgid "Branch state changes in master document"
 msgstr "L'état de la branche change dans le document maître"
 
-#: src/insets/InsetBranch.cpp:191
+#: src/insets/InsetBranch.cpp:193
 #, c-format
 msgid ""
 "The state of the branch '%1$s' was changed in the master file. Please make "
@@ -36343,19 +36389,19 @@ msgstr ""
 "Merci de préciser la position de tri de cette entrée manuellement,\n"
 "comme expliqué dans le Guide d'utilisation."
 
-#: src/insets/InsetIndex.cpp:470
+#: src/insets/InsetIndex.cpp:493
 msgid "Index Entry"
 msgstr "Entrée d'index"
 
-#: src/insets/InsetIndex.cpp:656
+#: src/insets/InsetIndex.cpp:679
 msgid "Unknown index type!"
 msgstr "Type d'index inconnu !"
 
-#: src/insets/InsetIndex.cpp:657
+#: src/insets/InsetIndex.cpp:680
 msgid "All indexes"
 msgstr "Tous les index"
 
-#: src/insets/InsetIndex.cpp:661
+#: src/insets/InsetIndex.cpp:684
 msgid "subindex"
 msgstr "sous-index"
 
@@ -36655,15 +36701,15 @@ msgstr "DUPLICATION : "
 msgid "Horizontal line"
 msgstr "Ligne horizontale"
 
-#: src/insets/InsetListings.cpp:332
+#: src/insets/InsetListings.cpp:333
 msgid "no more lstline delimiters available"
 msgstr "il n'y a plus de délimiteurs lstline disponibles"
 
-#: src/insets/InsetListings.cpp:337
+#: src/insets/InsetListings.cpp:338
 msgid "Running out of delimiters"
 msgstr "Plus de délimiteurs disponibles"
 
-#: src/insets/InsetListings.cpp:338
+#: src/insets/InsetListings.cpp:339
 msgid ""
 "For inline program listings, one character must be reserved\n"
 "as a delimiter. One of the listings, however, uses all available\n"
@@ -36677,11 +36723,11 @@ msgstr ""
 "Pour le moment, '!' a été remplacé par un avertissement,\n"
 "mais vous devez approfondir !"
 
-#: src/insets/InsetListings.cpp:419 src/insets/InsetListings.cpp:428
+#: src/insets/InsetListings.cpp:420 src/insets/InsetListings.cpp:429
 msgid "Uncodable characters in listings inset"
 msgstr "Caractère incodable dans un insert de listing"
 
-#: src/insets/InsetListings.cpp:420
+#: src/insets/InsetListings.cpp:421
 #, c-format
 msgid ""
 "The following characters in one of the program listings are\n"
@@ -36700,7 +36746,7 @@ msgstr ""
 "(Dés)activer « Utiliser des polices non-TeX » dans Document->Paramètres...\n"
 "peut aider à résoudre le problème."
 
-#: src/insets/InsetListings.cpp:429
+#: src/insets/InsetListings.cpp:430
 #, c-format
 msgid ""
 "The following characters in one of the program listings are\n"
@@ -37552,11 +37598,11 @@ msgstr ""
 "Impossible d'ouvrir le document\n"
 "%1$s."
 
-#: src/output_latex.cpp:1650
+#: src/output_latex.cpp:1658
 msgid "Error in latexParagraphs"
 msgstr "Erreur dans latexParagraphs"
 
-#: src/output_latex.cpp:1651
+#: src/output_latex.cpp:1659
 #, c-format
 msgid ""
 "You are using at least one layout (%1$s) intended for the title, after using "
@@ -37944,6 +37990,9 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Utilisateur inconnu"
 
+#~ msgid "e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
+#~ msgstr "e.g. : pdfstartview=XYZ, plainpages=false, pdfpagelabels"
+
 #~ msgid "PDF-form"
 #~ msgstr "Formulaire PDF"
 

commit 13f9edb770859f6f16f0e76c21b050329fffbe39
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Feb 14 08:46:11 2022 +0100

    Reset font when leaving insets while auto-inserting (fixes #12477)

diff --git a/src/Text3.cpp b/src/Text3.cpp
index 529e756..c75a9c3 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -2132,6 +2132,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 				// leave this now in order to insert the next one.
 				if (inautoarg) {
 					cur.leaveInset(cur.inset());
+					cur.setCurrentFont();
 					cur.posForward();
 					if (arg.insertonnewline && cur.pos() > 0) {
 						FuncRequest cmd2(LFUN_PARAGRAPH_BREAK);

commit a4600978234a442dc7b35315850aed25e6a1d138
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Mon Feb 14 03:03:22 2022 +0100

    DocBook: use the existing unicodesymbols global table to map LaTeX ERTs to Unicode characters.

diff --git a/autotests/export/docbook/ert_convert.lyx b/autotests/export/docbook/ert_convert.lyx
new file mode 100644
index 0000000..1ccee0c
--- /dev/null
+++ b/autotests/export/docbook/ert_convert.lyx
@@ -0,0 +1,172 @@
+#LyX 2.4 created this file. For more info see https://www.lyx.org/
+\lyxformat 609
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass article
+\use_default_options true
+\maintain_unincluded_children no
+\language american
+\language_package default
+\inputencoding utf8
+\fontencoding auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_roman_osf false
+\font_sans_osf false
+\font_typewriter_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\float_placement class
+\float_alignment class
+\paperfontsize default
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\use_minted 0
+\use_lineno 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style english
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tablestyle default
+\tracking_changes false
+\output_changes false
+\change_bars false
+\postpone_fragile_content true
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\docbook_table_output 0
+\docbook_mathml_prefix 1
+\end_header
+
+\begin_body
+
+\begin_layout Title
+ERT Conversions
+\end_layout
+
+\begin_layout Standard
+These should be 
+\family typewriter
+À
+\family default
+: 
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+`A
+\end_layout
+
+\end_inset
+
+ 
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+`{A}
+\end_layout
+
+\end_inset
+
+ 
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+` A
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+This one should be 
+\family typewriter
+¡
+\family default
+: 
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+textexclamdown
+\end_layout
+
+\end_inset
+
+ 
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+!`
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/autotests/export/docbook/ert_convert.xml b/autotests/export/docbook/ert_convert.xml
new file mode 100644
index 0000000..e21274b
--- /dev/null
+++ b/autotests/export/docbook/ert_convert.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This DocBook file was created by LyX 2.4.0dev
+  See https://www.lyx.org/ for more information -->
+<article xml:lang="en_US" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xi="http://www.w3.org/2001/XInclude" version="5.2">
+<title>ERT Conversions</title>
+<para>These should be <code>&#192;</code>: À À À </para>
+</article>
\ No newline at end of file
diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp
index 50b5daa..00f497f 100644
--- a/src/insets/InsetERT.cpp
+++ b/src/insets/InsetERT.cpp
@@ -28,6 +28,7 @@
 #include "support/gettext.h"
 #include "support/lstrings.h"
 #include "support/TempFile.h"
+#include "Encoding.h"
 
 #include <sstream>
 #include <regex>
@@ -88,311 +89,6 @@ int InsetERT::plaintext(odocstringstream & os,
 }
 
 
-static const std::map<docstring, docstring> raw_latex_encoding_to_unicode_xml{
-		// Punctuation.
-		{from_ascii("\\textquotesingle"), from_ascii("'")},
-		{from_ascii("!`"), from_ascii("¡")}, // inverted exclamation mark
-		{from_ascii("?`"), from_ascii("¿")}, // inverted interrogation mark
-
-		// Logos.
-		{from_ascii("\\LaTeX"), from_ascii("LaTeX")},
-		{from_ascii("\\LaTeXe"), from_ascii("LaTeX2&#x03b5;")}, // LaTeX 2 epsilon
-		{from_ascii("\\LyX"), from_ascii("LyX")},
-		{from_ascii("\\TeX"), from_ascii("TeX")},
-
-		// Accentuated letters (alphabetical order of description, ligatures after accents).
-		// Missing letters are only indicated for vowels (only few consonants have diacritics).
-		// Only symbols that can be expressed as one Unicode characters are present; symbols with more than one
-		// diacritic are also omitted.
-		{from_ascii("\\`{a}"), from_ascii("á")}, // a acute
-		{from_ascii("\\` a"), from_ascii("á")},
-		{from_ascii("\\`{A}"), from_ascii("Á")}, // A acute
-		{from_ascii("\\` A"), from_ascii("Á")},
-		{from_ascii("\\u{a}"), from_ascii("ă")}, // a breve
-		{from_ascii("\\u a"), from_ascii("ă")},
-		{from_ascii("\\u{A}"), from_ascii("Ă")}, // A breve
-		{from_ascii("\\u A"), from_ascii("Ă")},
-		{from_ascii("\\v{a}"), from_ascii("ǎ")}, // a caron
-		{from_ascii("\\v a"), from_ascii("ǎ")},
-		{from_ascii("\\v{A}"), from_ascii("Ǎ")}, // A caron
-		{from_ascii("\\v A"), from_ascii("Ǎ")},
-		// No a cedilla.
-		{from_ascii("\\^{a}"), from_ascii("â")}, // a circumflex
-		{from_ascii("\\^ a"), from_ascii("â")},
-		{from_ascii("\\^{A}"), from_ascii("Â")}, // A circumflex
-		{from_ascii("\\^ A"), from_ascii("Â")},
-		{from_ascii("\\\"{a}"), from_ascii("ä")}, // a diaeresis
-		{from_ascii("\\\" a"), from_ascii("ä")},
-		{from_ascii("\\\"{A}"), from_ascii("Ä")}, // A diaeresis
-		{from_ascii("\\\" A"), from_ascii("Ä")},
-		// No a double acute.
-		{from_ascii("\\`{a}"), from_ascii("à")}, // a grave
-		{from_ascii("\\` a"), from_ascii("à")},
-		{from_ascii("\\`{A}"), from_ascii("À")}, // A grave
-		{from_ascii("\\` A"), from_ascii("À")},
-		{from_ascii("\\~{a}"), from_ascii("ã")}, // a tilde
-		{from_ascii("\\~ a"), from_ascii("ã")},
-		{from_ascii("\\~{A}"), from_ascii("Ã")}, // A tilde
-		{from_ascii("\\~ A"), from_ascii("Ã")},
-		{from_ascii("\\aa"), from_ascii("å")}, // a ring
-		{from_ascii("\\r{a}"), from_ascii("å")},
-		{from_ascii("\\r a"), from_ascii("å")},
-		{from_ascii("\\AA"), from_ascii("Å")}, // A ring
-		{from_ascii("\\r{A}"), from_ascii("Å")},
-		{from_ascii("\\r A"), from_ascii("Å")},
-		{from_ascii("\\ae"), from_ascii("æ")}, // ae ligature
-		{from_ascii("\\AE"), from_ascii("Æ")}, // AE ligature
-		{from_ascii("\\v{c}"), from_ascii("č")}, // c caron
-		{from_ascii("\\v c"), from_ascii("č")},
-		{from_ascii("\\v{C}"), from_ascii("Č")}, // C caron
-		{from_ascii("\\v C"), from_ascii("Č")},
-		{from_ascii("\\c{c}"), from_ascii("Ç")}, // c cedilla
-		{from_ascii("\\c c"), from_ascii("Ç")},
-		{from_ascii("\\c{C}"), from_ascii("ç")}, // C cedilla
-		{from_ascii("\\c C"), from_ascii("ç")},
-		{from_ascii("\\v{d}"), from_ascii("ď")}, // d caron
-		{from_ascii("\\v d"), from_ascii("ď")},
-		{from_ascii("\\v{D}"), from_ascii("Ď")}, // D caron
-		{from_ascii("\\v D"), from_ascii("Ď")},
-		{from_ascii("\\`{e}"), from_ascii("é")}, // e acute
-		{from_ascii("\\` e"), from_ascii("é")},
-		{from_ascii("\\`{E}"), from_ascii("É")}, // E acute
-		{from_ascii("\\` E"), from_ascii("É")},
-		{from_ascii("\\u{e}"), from_ascii("ĕ")}, // e breve
-		{from_ascii("\\u e"), from_ascii("ĕ")},
-		{from_ascii("\\u{E}"), from_ascii("Ĕ")}, // E breve
-		{from_ascii("\\u E"), from_ascii("Ĕ")},
-		{from_ascii("\\v{e}"), from_ascii("ě")}, // e caron
-		{from_ascii("\\v e"), from_ascii("ě")},
-		{from_ascii("\\v{E}"), from_ascii("Ě")}, // E caron
-		{from_ascii("\\v E"), from_ascii("Ě")},
-		{from_ascii("\\c{e}"), from_ascii("ȩ")}, // e cedilla
-		{from_ascii("\\c e"), from_ascii("ȩ")},
-		{from_ascii("\\c{E}"), from_ascii("Ȩ")}, // E cedilla
-		{from_ascii("\\c E"), from_ascii("Ȩ")},
-		{from_ascii("\\^{e}"), from_ascii("ê")}, // e circumflex
-		{from_ascii("\\^ e"), from_ascii("ê")},
-		{from_ascii("\\^{E}"), from_ascii("Ê")}, // E circumflex
-		{from_ascii("\\^ E"), from_ascii("Ê")},
-		{from_ascii("\\\"{e}"), from_ascii("ë")}, // e diaeresis
-		{from_ascii("\\\" e"), from_ascii("ë")},
-		{from_ascii("\\\"{E}"), from_ascii("Ë")}, // E diaeresis
-		{from_ascii("\\\" E"), from_ascii("Ë")},
-		// No e double acute.
-		{from_ascii("\\`{e}"), from_ascii("è")}, // e grave
-		{from_ascii("\\` e"), from_ascii("è")},
-		{from_ascii("\\`{E}"), from_ascii("È")}, // E grave
-		{from_ascii("\\` E"), from_ascii("È")},
-		{from_ascii("\\~{e}"), from_ascii("ẽ")}, // e tilde
-		{from_ascii("\\~ e"), from_ascii("ẽ")},
-		{from_ascii("\\~{E}"), from_ascii("Ẽ")}, // E tilde
-		{from_ascii("\\~ E"), from_ascii("Ẽ")},
-		// No e ring.
-		{from_ascii("\\u{g}"), from_ascii("ğ")}, // g breve
-		{from_ascii("\\u g"), from_ascii("ğ")},
-		{from_ascii("\\u{G}"), from_ascii("Ğ")}, // G breve
-		{from_ascii("\\u G"), from_ascii("Ğ")},
-		{from_ascii("\\v{g}"), from_ascii("ǧ")}, // g caron
-		{from_ascii("\\v g"), from_ascii("ǧ")},
-		{from_ascii("\\v{G}"), from_ascii("Ǧ")}, // G caron
-		{from_ascii("\\v G"), from_ascii("Ǧ")},
-		{from_ascii("\\c{g}"), from_ascii("ģ")}, // g cedilla
-		{from_ascii("\\c g"), from_ascii("ģ")},
-		{from_ascii("\\c{G}"), from_ascii("Ģ")}, // G cedilla
-		{from_ascii("\\c G"), from_ascii("Ģ")},
-		{from_ascii("\\i"), from_ascii("ı")}, // i dotless
-		{from_ascii("\\`{i}"), from_ascii("í")}, // i acute
-		{from_ascii("\\` i"), from_ascii("í")},
-		{from_ascii("\\`{I}"), from_ascii("Í")}, // I acute
-		{from_ascii("\\` I"), from_ascii("Í")},
-		{from_ascii("\\u{i}"), from_ascii("ĭ")}, // i breve
-		{from_ascii("\\u i"), from_ascii("ĭ")},
-		{from_ascii("\\u{I}"), from_ascii("Ĭ")}, // I breve
-		{from_ascii("\\u I"), from_ascii("Ĭ")},
-		{from_ascii("\\v{i}"), from_ascii("ǐ")}, // i caron
-		{from_ascii("\\v i"), from_ascii("ǐ")},
-		{from_ascii("\\v{I}"), from_ascii("Ǐ")}, // I caron
-		{from_ascii("\\v I"), from_ascii("Ǐ")},
-		// No i cedilla.
-		{from_ascii("\\^{i}"), from_ascii("î")}, // i circumflex
-		{from_ascii("\\^ i"), from_ascii("î")},
-		{from_ascii("\\^{I}"), from_ascii("Î")}, // I circumflex
-		{from_ascii("\\^ I"), from_ascii("ï")},
-		{from_ascii("\\\"{i}"), from_ascii("ï")}, // i diaeresis
-		{from_ascii("\\\" i"), from_ascii("ë")},
-		{from_ascii("\\\"{I}"), from_ascii("ë")}, // I diaeresis
-		{from_ascii("\\\" I"), from_ascii("Ï")},
-		// No i double acute.
-		{from_ascii("\\`{i}"), from_ascii("ì")}, // i grave
-		{from_ascii("\\` i"), from_ascii("ì")},
-		{from_ascii("\\`{I}"), from_ascii("Ì")}, // I grave
-		{from_ascii("\\` I"), from_ascii("Ì")},
-		{from_ascii("\\~{i}"), from_ascii("ĩ")}, // i tilde
-		{from_ascii("\\~ i"), from_ascii("ĩ")},
-		{from_ascii("\\~{I}"), from_ascii("Ĩ")}, // I tilde
-		{from_ascii("\\~ I"), from_ascii("Ĩ")},
-		// No i ring.
-		{from_ascii("\\j"), from_ascii("ȷ")}, // j dotless
-		{from_ascii("\\v{k}"), from_ascii("Ǩ")}, // k caron
-		{from_ascii("\\v k"), from_ascii("Ǩ")},
-		{from_ascii("\\v{K}"), from_ascii("ǩ")}, // K caron
-		{from_ascii("\\v K"), from_ascii("ǩ")},
-		{from_ascii("\\c{k}"), from_ascii("ķ")}, // k cedilla
-		{from_ascii("\\c k"), from_ascii("ķ")},
-		{from_ascii("\\c{K}"), from_ascii("Ķ")}, // K cedilla
-		{from_ascii("\\c K"), from_ascii("Ķ")},
-		{from_ascii("\\v{l}"), from_ascii("ľ")}, // l caron
-		{from_ascii("\\v l"), from_ascii("ľ")},
-		{from_ascii("\\v{L}"), from_ascii("Ľ")}, // L caron
-		{from_ascii("\\v L"), from_ascii("Ľ")},
-		{from_ascii("\\c{l}"), from_ascii("ļ")}, // l cedilla
-		{from_ascii("\\c l"), from_ascii("ļ")},
-		{from_ascii("\\c{L}"), from_ascii("Ļ")}, // L cedilla
-		{from_ascii("\\c L"), from_ascii("Ļ")},
-		{from_ascii("\\l"), from_ascii("ł")}, // l stroke
-		{from_ascii("\\L"), from_ascii("Ł")}, // L stroke
-		{from_ascii("\\v{n}"), from_ascii("ň")}, // n caron
-		{from_ascii("\\v n"), from_ascii("ň")},
-		{from_ascii("\\v{N}"), from_ascii("Ň")}, // N caron
-		{from_ascii("\\v N"), from_ascii("Ň")},
-		{from_ascii("\\c{n}"), from_ascii("ņ")}, // n cedilla
-		{from_ascii("\\c n"), from_ascii("ņ")},
-		{from_ascii("\\c{N}"), from_ascii("Ņ")}, // N cedilla
-		{from_ascii("\\c N"), from_ascii("Ņ")},
-		{from_ascii("\\~{n}"), from_ascii("ñ")}, // n tilde
-		{from_ascii("\\~ n"), from_ascii("ñ")},
-		{from_ascii("\\~{N}"), from_ascii("Ñ")}, // N tilde
-		{from_ascii("\\~ N"), from_ascii("Ñ")},
-		{from_ascii("\\`{o}"), from_ascii("ó")}, // o acute
-		{from_ascii("\\` o"), from_ascii("ó")},
-		{from_ascii("\\`{O}"), from_ascii("Ó")}, // O acute
-		{from_ascii("\\` O"), from_ascii("Ó")},
-		{from_ascii("\\u{o}"), from_ascii("ŏ")}, // o breve
-		{from_ascii("\\u o"), from_ascii("ŏ")},
-		{from_ascii("\\u{O}"), from_ascii("Ŏ")}, // O breve
-		{from_ascii("\\u O"), from_ascii("Ŏ")},
-		{from_ascii("\\v{o}"), from_ascii("ǒ")}, // o caron
-		{from_ascii("\\v o"), from_ascii("ǒ")},
-		{from_ascii("\\v{O}"), from_ascii("Ǒ")}, // O caron
-		{from_ascii("\\v O"), from_ascii("Ǒ")},
-		// No o cedilla.
-		{from_ascii("\\^{o}"), from_ascii("ô")}, // o circumflex
-		{from_ascii("\\^ o"), from_ascii("ô")},
-		{from_ascii("\\^{O}"), from_ascii("Ô")}, // O circumflex
-		{from_ascii("\\^ O"), from_ascii("Ô")},
-		{from_ascii("\\\"{o}"), from_ascii("ö")}, // o diaeresis
-		{from_ascii("\\\" o"), from_ascii("ö")},
-		{from_ascii("\\\"{O}"), from_ascii("Ö")}, // O diaeresis
-		{from_ascii("\\\" O"), from_ascii("Ö")},
-		{from_ascii("\\H{o}"), from_ascii("ő")}, // o double acute
-		{from_ascii("\\H o"), from_ascii("ő")},
-		{from_ascii("\\H{O}"), from_ascii("Ő")}, // O double acute
-		{from_ascii("\\H O"), from_ascii("Ő")},
-		{from_ascii("\\`{o}"), from_ascii("ò")}, // o grave
-		{from_ascii("\\` o"), from_ascii("ò")},
-		{from_ascii("\\`{O}"), from_ascii("Ò")}, // O grave
-		{from_ascii("\\` O"), from_ascii("Ò")},
-		{from_ascii("\\o"), from_ascii("ø")}, // o stroke
-		{from_ascii("\\O"), from_ascii("Ø")}, // O stroke
-		{from_ascii("\\~{o}"), from_ascii("õ")}, // o tilde
-		{from_ascii("\\~ o"), from_ascii("õ")},
-		{from_ascii("\\~{O}"), from_ascii("Õ")}, // O tilde
-		{from_ascii("\\~ O"), from_ascii("Õ")},
-		// No o ring.
-		{from_ascii("\\oe"), from_ascii("œ")}, // oe ligature
-		{from_ascii("\\OE"), from_ascii("Œ")}, // OE ligature
-		{from_ascii("\\v{r}"), from_ascii("ř")}, // r caron
-		{from_ascii("\\v r"), from_ascii("ř")},
-		{from_ascii("\\v{R}"), from_ascii("Ř")}, // R caron
-		{from_ascii("\\v R"), from_ascii("Ř")},
-		{from_ascii("\\c{r}"), from_ascii("ŗ")}, // r cedilla
-		{from_ascii("\\c r"), from_ascii("ŗ")},
-		{from_ascii("\\c{R}"), from_ascii("Ŗ")}, // R cedilla
-		{from_ascii("\\c R"), from_ascii("Ŗ")},
-		{from_ascii("\\v{s}"), from_ascii("š")}, // s caron
-		{from_ascii("\\v s"), from_ascii("š")},
-		{from_ascii("\\v{S}"), from_ascii("Š")}, // S caron
-		{from_ascii("\\v S"), from_ascii("Š")},
-		{from_ascii("\\c{s}"), from_ascii("ş")}, // s cedilla
-		{from_ascii("\\c s"), from_ascii("ş")},
-		{from_ascii("\\c{S}"), from_ascii("Ş")}, // S cedilla
-		{from_ascii("\\c S"), from_ascii("Ş")},
-		{from_ascii("\\v{t}"), from_ascii("ť")}, // t caron
-		{from_ascii("\\v t"), from_ascii("ť")},
-		{from_ascii("\\v{T}"), from_ascii("Ť")}, // T caron
-		{from_ascii("\\v T"), from_ascii("Ť")},
-		{from_ascii("\\c{t}"), from_ascii("ţ")}, // t cedilla
-		{from_ascii("\\c t"), from_ascii("ţ")},
-		{from_ascii("\\c{T}"), from_ascii("Ţ")}, // T cedilla
-		{from_ascii("\\c T"), from_ascii("Ţ")},
-		{from_ascii("\\`{u}"), from_ascii("ú")}, // u acute
-		{from_ascii("\\` u"), from_ascii("ú")},
-		{from_ascii("\\`{U}"), from_ascii("Ú")}, // U acute
-		{from_ascii("\\` U"), from_ascii("Ú")},
-		{from_ascii("\\u{u}"), from_ascii("ŭ")}, // u breve
-		{from_ascii("\\u u"), from_ascii("ŭ")},
-		{from_ascii("\\u{U}"), from_ascii("Ŭ")}, // U breve
-		{from_ascii("\\u U"), from_ascii("Ŭ")},
-		{from_ascii("\\v{u}"), from_ascii("ǔ")}, // u caron
-		{from_ascii("\\v u"), from_ascii("ǔ")},
-		{from_ascii("\\v{U}"), from_ascii("Ǔ")}, // U caron
-		{from_ascii("\\v U"), from_ascii("Ǔ")},
-		// No u cedilla.
-		{from_ascii("\\^{u}"), from_ascii("û")}, // u circumflex
-		{from_ascii("\\^ u"), from_ascii("û")},
-		{from_ascii("\\^{U}"), from_ascii("Û")}, // U circumflex
-		{from_ascii("\\^ U"), from_ascii("Û")},
-		{from_ascii("\\\"{u}"), from_ascii("ü")}, // u diaeresis
-		{from_ascii("\\\" u"), from_ascii("ü")},
-		{from_ascii("\\\"{U}"), from_ascii("Ü")}, // U diaeresis
-		{from_ascii("\\\" U"), from_ascii("Ü")},
-		{from_ascii("\\H{u}"), from_ascii("ű")}, // u double acute
-		{from_ascii("\\H u"), from_ascii("ű")},
-		{from_ascii("\\H{U}"), from_ascii("Ű")}, // U double acute
-		{from_ascii("\\H U"), from_ascii("Ű")},
-		{from_ascii("\\`{u}"), from_ascii("ù")}, // u grave
-		{from_ascii("\\` u"), from_ascii("ù")},
-		{from_ascii("\\`{U}"), from_ascii("Ù")}, // U grave
-		{from_ascii("\\` U"), from_ascii("Ù")},
-		{from_ascii("\\~{u}"), from_ascii("ũ")}, // u tilde
-		{from_ascii("\\~ u"), from_ascii("ũ")},
-		{from_ascii("\\~{U}"), from_ascii("Ũ")}, // U tilde
-		{from_ascii("\\~ U"), from_ascii("Ũ")},
-		{from_ascii("\\r{u}"), from_ascii("å")}, // u ring
-		{from_ascii("\\r u"), from_ascii("ů")},
-		{from_ascii("\\r{U}"), from_ascii("ů")}, // U ring
-		{from_ascii("\\r U"), from_ascii("Ů")},
-		{from_ascii("\\`{y}"), from_ascii("ý")}, // y acute
-		{from_ascii("\\` y"), from_ascii("ý")},
-		{from_ascii("\\`{Y}"), from_ascii("Ý")}, // Y acute
-		{from_ascii("\\` Y"), from_ascii("Ý")},
-		{from_ascii("\\v{z}"), from_ascii("ž")}, // z caron
-		{from_ascii("\\v z"), from_ascii("ž")},
-		{from_ascii("\\v{Z}"), from_ascii("Ž")}, // Z caron
-		{from_ascii("\\v Z"), from_ascii("Ž")},
-		// No y breve.
-		// No y cedilla.
-		{from_ascii("\\^{y}"), from_ascii("ŷ")}, // y circumflex
-		{from_ascii("\\^ y"), from_ascii("ŷ")},
-		{from_ascii("\\^{Y}"), from_ascii("Ŷ")}, // Y circumflex
-		{from_ascii("\\^ Y"), from_ascii("Ŷ")},
-		{from_ascii("\\\"{y}"), from_ascii("ÿ")}, // y diaeresis
-		{from_ascii("\\\" y"), from_ascii("ÿ")},
-		{from_ascii("\\\"{Y}"), from_ascii("Ÿ")}, // Y diaeresis
-		{from_ascii("\\\" Y"), from_ascii("Ÿ")},
-		// No y double acute.
-		{from_ascii("\\`{y}"), from_ascii("ỳ")}, // y grave
-		{from_ascii("\\` y"), from_ascii("ỳ")},
-		{from_ascii("\\`{Y}"), from_ascii("Ỳ")}, // Y grave
-		{from_ascii("\\` Y"), from_ascii("Ỳ")},
-		{from_ascii("\\~{y}"), from_ascii("ỹ")}, // y tilde
-		{from_ascii("\\~ y"), from_ascii("ỹ")},
-		{from_ascii("\\~{Y}"), from_ascii("Ỹ")}, // Y tilde
-		{from_ascii("\\~ Y"), from_ascii("Ỹ")},
-		// No y ring.
-};
-
-
 void InsetERT::docbook(XMLStream & xs, OutputParams const & runparams) const
 {
 	auto const begin = paragraphs().begin();
@@ -441,26 +137,39 @@ void InsetERT::docbook(XMLStream & xs, OutputParams const & runparams) const
 
 	// First step: some commands have a direct mapping to DocBook, mostly because the mapping is simply text or
 	// an XML entity.
+	// Logic is similar to that of convertLaTeXCommands in BiblioInfo.cpp.
+	// TODO: make the code even more similar by looping over the string and applying all conversions. (What is not
+	//  recognised should simply be put in comments: have a list of elements that are either already recognised or are
+	//  not yet recognised? Global transformations like \string should then come first.)
 	{
 		docstring os_trimmed = trim(os.str());
 
-		auto command_raw_translation = raw_latex_encoding_to_unicode_xml.find(os_trimmed);
-		if (command_raw_translation != raw_latex_encoding_to_unicode_xml.end()) {
-			xs << command_raw_translation->second;
-			output_as_comment = false;
-		} else {
-			// If the trimmed ERT ends with {}, try a mapping without it.
-			auto os_braces = os_trimmed.find(from_ascii("{}"));
+		// Rewrite \"u to \"{u}.
+		static regex const regNoBraces(R"(^\\\W\w)");
+		if (regex_search(to_utf8(os_trimmed), regNoBraces)) {
+			os_trimmed.insert(3, from_ascii("}"));
+			os_trimmed.insert(2, from_ascii("{"));
+		}
 
-			if (os_braces != lyx::docstring::npos) {
-				auto key = os_trimmed.substr(0, os_braces);
-				auto command_braces_translation = raw_latex_encoding_to_unicode_xml.find(key);
+		// Rewrite \" u to \"{u}.
+		static regex const regSpace(R"(^\\\W \w)");
+		if (regex_search(to_utf8(os_trimmed), regSpace)) {
+			os_trimmed[2] = '{';
+			os_trimmed.insert(4, from_ascii("}"));
+		}
 
-				if (command_braces_translation != raw_latex_encoding_to_unicode_xml.end()) {
-					xs << command_braces_translation->second;
-					output_as_comment = false;
-				}
+		// Look into the global table of Unicode characters if there is a match.
+		bool termination;
+		docstring rem;
+		docstring const converted = Encodings::fromLaTeXCommand(os_trimmed,
+		                                                        Encodings::TEXT_CMD, termination, rem);
+		if (!converted.empty()) {
+			// Don't output the characters directly, even if the document should be encoded in UTF-8, for editors that
+			// do not support all these funky characters.
+			for (const char_type& character : converted) {
+				xs << XMLStream::ESCAPE_NONE << from_ascii("&#" + std::to_string(character) + ';');
 			}
+			output_as_comment = false;
 		}
 	}
 

commit e0722e97d5d93a99544e1180bb1abbde0e33668f
Author: Kornel Benko <kornel at lyx.org>
Date:   Sun Feb 13 14:23:58 2022 +0100

    Update sk.po

diff --git a/po/sk.po b/po/sk.po
index 8f1590c..5a35011 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -3474,7 +3474,7 @@ msgstr ""
 
 #: src/frontends/qt/ui/PDFSupportUi.ui:490
 msgid "Document &Metadata"
-msgstr "Dokument a &Metaúdaje"
+msgstr "&Metaúdaje dokumenta"
 
 #: src/frontends/qt/ui/PageLayoutUi.ui:20
 msgid "Paper Format"

commit c2e0d4e69bc83dcbf9a0fef16c2f13be589d963a
Author: Kornel Benko <kornel at lyx.org>
Date:   Sun Feb 13 13:57:41 2022 +0100

    Update sk.po

diff --git a/po/sk.po b/po/sk.po
index 3848bb6..8f1590c 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX-2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2022-02-08 19:47+0100\n"
-"PO-Revision-Date: 2022-02-08 18:52+0000\n"
+"POT-Creation-Date: 2022-02-13 12:47+0100\n"
+"PO-Revision-Date: 2022-02-13 12:46+0000\n"
 "Last-Translator: Kornel Benko <kornel at lyx.org>\n"
 "Language-Team: Slovak <kornel at lyx.org>\n"
 "Language: sk\n"
@@ -1230,7 +1230,7 @@ msgstr "&Bývalí dokument:"
 
 #: src/frontends/qt/ui/CompareUi.ui:51
 msgid "Specify the original version of the document here (comparison source)"
-msgstr "Špecifikujte originálnu verziu dokumentu tu (zdroj porovnania)"
+msgstr "Špecifikujte originálnu verziu dokumenta tu (zdroj porovnania)"
 
 #: src/frontends/qt/ui/CompareUi.ui:61 src/frontends/qt/ui/PrefUi.ui:61
 msgid "Bro&wse..."
@@ -1242,7 +1242,7 @@ msgstr "&Nový dokument:"
 
 #: src/frontends/qt/ui/CompareUi.ui:87
 msgid "Specify the modified version of the document here (comparison target)"
-msgstr "Špecifikujte modifikovanú verziu dokumentu tu (cieľ porovnania)"
+msgstr "Špecifikujte modifikovanú verziu dokumenta tu (cieľ porovnania)"
 
 #: src/frontends/qt/ui/CompareUi.ui:97 src/frontends/qt/ui/ExternalUi.ui:89
 #: src/frontends/qt/ui/GraphicsUi.ui:75 src/frontends/qt/ui/IncludeUi.ui:28
@@ -1255,9 +1255,9 @@ msgstr "Pre&chádzať…"
 msgid "Select the document from which the settings should be taken"
 msgstr "Vyberte dokument z ktorého chcete nastavenia kopírovať"
 
-#: src/frontends/qt/ui/CompareUi.ui:120 src/frontends/qt/GuiDocument.cpp:781
+#: src/frontends/qt/GuiDocument.cpp:789 src/frontends/qt/ui/CompareUi.ui:120
 msgid "Document Settings"
-msgstr "Nastavenia dokumentu"
+msgstr "Nastavenia dokumenta"
 
 #: src/frontends/qt/ui/CompareUi.ui:129
 msgid "O&ld Document"
@@ -1331,7 +1331,7 @@ msgstr "&Prehodiť && obrátiť"
 
 #: src/frontends/qt/ui/DocumentUi.ui:93
 msgid "Reset to the default settings for the document class"
-msgstr "Nastaviť na štandardné nastavenie triedy dokumentu"
+msgstr "Nastaviť na štandardné nastavenie triedy dokumenta"
 
 #: src/frontends/qt/ui/DocumentUi.ui:96
 msgid "Use Class Defaults"
@@ -1343,7 +1343,7 @@ msgstr "Uložiť nastavenia ako štandardné nastavenia pre nové LyX dokumenty"
 
 #: src/frontends/qt/ui/DocumentUi.ui:112
 msgid "Save as Document Defaults"
-msgstr "Uložiť ako štandardné nastavenia dokumentu"
+msgstr "Uložiť ako štandardné nastavenia dokumenta"
 
 #: src/frontends/qt/ui/ERTUi.ui:38 src/frontends/qt/GuiPrefs.cpp:1297
 msgid "Display"
@@ -1645,7 +1645,7 @@ msgid ""
 "document"
 msgstr ""
 "Aktuálny dokument a všetky súvisiace dokumenty patriace k tomu istému "
-"hlavnému dokumentu"
+"hlavnému dokumenta"
 
 #: src/frontends/qt/ui/FindAndReplaceUi.ui:319
 msgid "&Master document"
@@ -1716,11 +1716,11 @@ msgid ""
 "Settings."
 msgstr ""
 "Použiť štandardné zarovnanie pre plávajúce objekty, ako je určené v "
-"Nastaveniach dokumentu."
+"nastaveniach dokumenta."
 
 #: src/frontends/qt/ui/FloatPlacementUi.ui:97
 msgid "D&ocument Default"
-msgstr "Štan&dardné nastavenia dokumentu"
+msgstr "Štan&dardné nastavenia dokumenta"
 
 #: src/frontends/qt/ui/FloatPlacementUi.ui:104
 msgid "Left-align float contents"
@@ -2466,7 +2466,7 @@ msgstr "O&kamžite použiť"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:20
 msgid "Document &Class"
-msgstr "&Trieda dokumentu"
+msgstr "&Trieda dokumenta"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:48
 msgid "Click to select a local document class definition file"
@@ -2506,7 +2506,7 @@ msgstr "Ovládač &grafik:"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:136
 msgid "Select if the current document is included to a master file"
-msgstr "Vyberte keď je súčasný dokument vložený do hlavného dokumentu"
+msgstr "Vyberte keď je súčasný dokument vložený do hlavného dokumenta"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:142
 msgid "Select de&fault master document"
@@ -2518,7 +2518,7 @@ msgstr "&Hlavný dokument:"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:177
 msgid "Enter the name of the default master document"
-msgstr "Udajte meno implicitného hlavného dokumentu"
+msgstr "Udajte meno implicitného hlavného dokumenta"
 
 #: src/frontends/qt/ui/LaTeXUi.ui:196
 msgid "&Suppress default date on front page"
@@ -2925,7 +2925,7 @@ msgstr "&Separácia stĺpcov:"
 
 #: src/frontends/qt/ui/MasterChildUi.ui:20
 msgid "Master Document Output"
-msgstr "Výstup hlavného dokumentu"
+msgstr "Výstup hlavného dokumenta"
 
 #: src/frontends/qt/ui/MasterChildUi.ui:29
 msgid "Include all subdocuments in the output"
@@ -2963,7 +2963,7 @@ msgid ""
 "counter values and references."
 msgstr ""
 "Čítače a referencie vylúčených dokumentov budú ignorované, čiže čítače vo "
-"výstupe nebudú súhlasiť s výstupom celého dokumentu.<br>Toto je "
+"výstupe nebudú súhlasiť s výstupom celého dokumenta.<br>Toto je "
 "najrýchlejšia metóda. Použite ju keď nepotrebujete presné hodnoty čítačov a "
 "referencií."
 
@@ -3165,7 +3165,7 @@ msgstr "&Zosivelé"
 
 #: src/frontends/qt/ui/NumberingUi.ui:37
 msgid "Add line numbers to the document"
-msgstr "Pridať očíslenie riadkov do dokumentu"
+msgstr "Pridať očíslenie riadkov do dokumenta"
 
 #: src/frontends/qt/ui/NumberingUi.ui:40
 msgid "L&ine numbering"
@@ -3239,7 +3239,7 @@ msgstr "mml"
 msgid "LyX Format"
 msgstr "LyX-Formát"
 
-#: src/frontends/qt/ui/OutputUi.ui:96
+#: src/frontends/qt/ui/OutputUi.ui:153
 msgid ""
 "Save all parameters in the LyX file, including ones that are frequently "
 "switched or that are specific to the user (such as the output of the tracked "
@@ -3248,7 +3248,7 @@ msgid ""
 msgstr ""
 "Uloží všetky parametre do LyX súboru, včetne aj také ktoré sa často "
 "prepínajú alebo sú zvláštne ohľadom na používateľa (také ako napr. výstup "
-"sledovaných zmien, alebo cesta adresára dokumentu). Vypnutie tejto voľby je "
+"sledovaných zmien, alebo cesta adresára dokumenta). Vypnutie tejto voľby je "
 "vhodnejšie ako pre spoluprácu tak i pri používaniu správe verzií."
 
 #: src/frontends/qt/ui/OutputUi.ui:99
@@ -3456,9 +3456,25 @@ msgstr "Počet úrovní"
 msgid "Additional O&ptions"
 msgstr "&Dodatočné možnosti"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:509
-msgid "e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
-msgstr "napr.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
+#: src/frontends/qt/ui/PDFSupportUi.ui:461
+msgid ""
+"Additional hyperref options (comma-separated) to be passed via \\hypersetup."
+msgstr ""
+"Prídavné hyperref voľby (oddeľované čiarkami) na predanie cez \\hypersetup."
+
+#: src/frontends/qt/ui/PDFSupportUi.ui:464
+msgid "Hyperse&tup"
+msgstr "&Nastavenia pre hyperref"
+
+#: src/frontends/qt/ui/PDFSupportUi.ui:487
+msgid ""
+"Document metadata and PDF settings (as specified in LaTeX 06/2022 and later)"
+msgstr ""
+"Metaúdaje dokumenta a PDS nastavenia (ako určené v LaTeX 06/2022 a neskôr)"
+
+#: src/frontends/qt/ui/PDFSupportUi.ui:490
+msgid "Document &Metadata"
+msgstr "Dokument a &Metaúdaje"
 
 #: src/frontends/qt/ui/PageLayoutUi.ui:20
 msgid "Paper Format"
@@ -3938,7 +3954,7 @@ msgid ""
 "document. This allows moving the document elsewhere and still finding the "
 "included files."
 msgstr ""
-"Keď zaškrtnuté, adresár dokumentu sa zapíše do dokumentu. Dovolí sa tým "
+"Keď zaškrtnuté, adresár dokumenta sa zapíše do dokumenta. Dovolí sa tým "
 "presunúť dokument niekde inde a predsa nájsť vložené súbory."
 
 #: src/frontends/qt/ui/PrefDocHandlingUi.ui:158
@@ -3995,7 +4011,7 @@ msgstr "Editácia"
 
 #: src/frontends/qt/ui/PrefEditUi.ui:51
 msgid "Scroll &below end of document"
-msgstr "Rolovať až pod &koniec dokumentu"
+msgstr "Rolovať až pod &koniec dokumenta"
 
 #: src/frontends/qt/ui/PrefEditUi.ui:72
 msgid "Edit Math Macros inline with a box around"
@@ -4118,7 +4134,7 @@ msgstr "O&dstrániť"
 
 #: src/frontends/qt/ui/PrefFileformatsUi.ui:73
 msgid "&Document format"
-msgstr "Form&át dokumentu"
+msgstr "Form&át dokumenta"
 
 #: src/frontends/qt/ui/PrefFileformatsUi.ui:80
 msgid "Check this to show the current format in the File > Export menu"
@@ -4373,7 +4389,7 @@ msgid ""
 "the language package), so that other packages are also informed about the "
 "used languages."
 msgstr ""
-"Zaškrtnite na nastavenie jazyka globálne (k triede dokumentu), nie lokálne "
+"Zaškrtnite na nastavenie jazyka globálne (k triede dokumenta), nie lokálne "
 "(k jazykovému balíku), tak aby aj iné balíky dostali informáciu o použitých "
 "jazykov."
 
@@ -4386,24 +4402,24 @@ msgid ""
 "If checked, the document language is explicitly set by a language switch "
 "command"
 msgstr ""
-"Keď zaškrtnuté, jazyk dokumentu je explicitne nastavený prepínajúcim "
+" Keď zaškrtnuté, jazyk dokumenta je explicitne nastavený prepínajúcim "
 "príkazom jazyka"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:154
 msgid "Set document language e&xplicitly"
-msgstr "Ex&plicitne nastaviť jazyk dokumentu"
+msgstr "Ex&plicitne nastaviť jazyk dokumenta"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:161
 msgid ""
 "If checked, the document language is explicitly closed by a language switch "
 "command"
 msgstr ""
-"Keď zaškrtnuté, jazyk dokumentu je explicitne zavretý prepínajúcim príkazom "
+"Keď zaškrtnuté, jazyk dokumenta je explicitne zavretý prepínajúcim príkazom "
 "jazyka"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:164
 msgid "&Unset document language explicitly"
-msgstr "E&xplicitne deaktivovať jazyk dokumentu"
+msgstr "E&xplicitne deaktivovať jazyk dokumenta"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:177
 msgid "Editor Settings"
@@ -4414,7 +4430,7 @@ msgid ""
 "Check to highlight additional languages (to the document language) visually "
 "in the work area"
 msgstr ""
-"Zaškrtnite na vyzdvihnutie dodatočných jazykov (ku jazyku dokumentu) "
+"Zaškrtnite na vyzdvihnutie dodatočných jazykov (ku jazyku dokumenta) "
 "viditeľné na pracovnej ploche"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:192
@@ -4579,7 +4595,7 @@ msgstr "Zvoliť štandardné voľby pri zmene triedy"
 
 #: src/frontends/qt/ui/PrefLatexUi.ui:323
 msgid "R&eset class options when document class changes"
-msgstr "&Nastaviť triedne voľby pri zmene triedy dokumentu"
+msgstr "&Nastaviť triedne voľby pri zmene triedy dokumenta"
 
 #: src/frontends/qt/ui/PrefOutputUi.ui:20
 msgid "Forward Search"
@@ -5356,7 +5372,7 @@ msgid ""
 "Available categories depend on the document encoding. Select UTF-8 for the "
 "full range."
 msgstr ""
-"Dostupné kategórie závisia na zvolenom kódovaní dokumentu. Vyberte UTF-8 pre "
+"Dostupné kategórie závisia na zvolenom kódovaní dokumenta. Vyberte UTF-8 pre "
 "plný rozsah."
 
 #: src/frontends/qt/ui/SymbolsUi.ui:43
@@ -6003,7 +6019,7 @@ msgstr "Ukazovať zdroj tak, ako ho hlavný dokument dostane"
 
 #: src/frontends/qt/ui/ViewSourceUi.ui:133
 msgid "Master's perspective"
-msgstr "Perspektíva hlavného dokumentu"
+msgstr "Perspektíva hlavného dokumenta"
 
 #: src/frontends/qt/ui/ViewSourceUi.ui:147
 msgid "Current Paragraph"
@@ -7600,8 +7616,8 @@ msgid ""
 msgstr ""
 "Poskytuje dva nové štýly: 1. Štýl 'V preambule' ktorý položí všetko do neho "
 "zadané do preambuly. Keď si to niekto želá, dá sa použiť aj na inklúziu kódu "
-"preambuly do tela LyXového dokumentu. 2. Štýl 'V titule' položí svoj obsah "
-"do tela LaTeXového dokumentu, ale pred vydaním \\maketitle. Je to vhodné pre "
+"preambuly do tela LyXového dokumenta. 2. Štýl 'V titule' položí svoj obsah "
+"do tela LaTeXového dokumenta, ale pred vydaním \\maketitle. Je to vhodné pre "
 "tvorbu vetiev a poznámok v titulnom materiáli. (Vložením do 'Štandardné "
 "rozloženie' signalizujete LyXu vložiť \\maketitle do výstupu, čo by mohlo "
 "byť predčasné.)"
@@ -10383,7 +10399,7 @@ msgstr "Krátky titul v hlavnom jazyku"
 
 #: lib/layouts/bicaption.module:46
 msgid "Short title for the main(document) language"
-msgstr "Krátky titul v hlavnom jazyku dokumentu"
+msgstr "Krátky titul v hlavnom jazyku dokumenta"
 
 #: lib/layouts/bicaption.module:50
 msgid "Main Language Text"
@@ -10391,7 +10407,7 @@ msgstr "Text v hlavnom jazyku"
 
 #: lib/layouts/bicaption.module:51
 msgid "Text in the main(document) language"
-msgstr "Text v hlavnom jazyku dokumentu"
+msgstr "Text v hlavnom jazyku dokumenta"
 
 #: lib/layouts/bicaption.module:54
 msgid "Second Language Short Title"
@@ -12419,7 +12435,7 @@ msgstr ""
 "FIXMEs'. Vysvetlivky sú upraviteľné v LaTeXovej preambule. Viďte "
 "dokumentáciu FiXme. NOTA: Štandardne sú poznámky viditeľné len v režime "
 "'draft' (keď voľbu 'draft' vložíte pomocou Dokument -> Nastavenia… -> Trieda "
-"dokumentu -> Nastavenie triedy -> Vlastné). Chcete to vidieť vždy, vložte "
+"dokumenta -> Nastavenie triedy -> Vlastné). Chcete to vidieť vždy, vložte "
 "\\fxsetup{draft} do Dokument -> Preambula LaTeX-u. POZOR: pre niektoré "
 "vlastnosti potrebujete balík 'FiXme' verziu 4 alebo vzostupnú."
 
@@ -13917,11 +13933,11 @@ msgstr "S/R výraz"
 
 #: lib/layouts/landscape.module:2
 msgid "Landscape Document Parts"
-msgstr "Časti dokumentu vo formáte na šírku"
+msgstr "Časti dokumenta vo formáte na šírku"
 
 #: lib/layouts/landscape.module:6
 msgid "Output parts of the document in landscape mode."
-msgstr "Vytlačiť čiastky z dokumentu na šírku."
+msgstr "Vytlačiť čiastky z dokumenta na šírku."
 
 #: lib/layouts/landscape.module:11 lib/layouts/landscape.module:16
 msgid "Landscape"
@@ -17384,7 +17400,7 @@ msgstr ""
 "rozšírenia AMS, má tu každý poskytnutý typ teorémou svoje vlastné číslovanie "
 "(čiže veta 1, veta 2, lemma 1, tvrdenie 1, veta 3, lemma 2, …, oproti veta "
 "1, veta 2, lemma 3, tvrdenie 4…). Číslovanie je postupne bez ohľadu na "
-"štruktúru dokumentu. To sa dá zmeniť voľbou jedného z 'Teorémy (Číslované "
+"štruktúru dokumenta. To sa dá zmeniť voľbou jedného z 'Teorémy (Číslované "
 "podľa …)' modulu."
 
 #: lib/layouts/theorems-ams-chap-bytype.module:2
@@ -17741,7 +17757,7 @@ msgid ""
 msgstr ""
 "Definuje prostredie mat. viet a dôkazov používajúce rozšírenie AMS. K "
 "dispozícii sú číslované a ne-číslované typy. Implicitne sú vety číslované "
-"postupne bez ohľadu na štruktúru dokumentu. To sa dá zmeniť voľbou jedného z "
+"postupne bez ohľadu na štruktúru dokumenta. To sa dá zmeniť voľbou jedného z "
 "'Teorémy (Číslované podľa …)' modulu."
 
 #: lib/layouts/theorems-bytype.module:2
@@ -17762,7 +17778,7 @@ msgstr ""
 "jednoduchému modulu teorémou, má tu každý poskytnutý typ teorémou svoje "
 "vlastné číslovanie (čiže veta 1, veta 2, lemma 1, tvrdenie 1, veta 3, lemma "
 "2, …, oproti veta 1, veta 2, lemma 3, tvrdenie 4, …). Číslovanie je "
-"usporiadané bez ohľadu na štruktúru dokumentu. To sa dá zmeniť voľbou "
+"usporiadané bez ohľadu na štruktúru dokumenta. To sa dá zmeniť voľbou "
 "jedného z 'Teorémy (Číslované podľa …)' modulu."
 
 #: lib/layouts/theorems-case.inc:12
@@ -17951,7 +17967,7 @@ msgid ""
 msgstr ""
 "Definuje niektoré prostredia mat. viet pre použitie v triedach neodvodených "
 "od AMS. Implicitne sú vety číslované postupne bez ohľadu na štruktúru "
-"dokumentu. To sa dá zmeniť voľbou jedného z 'Teorémy (Číslované podľa …)' "
+"dokumenta. To sa dá zmeniť voľbou jedného z 'Teorémy (Číslované podľa …)' "
 "modulu."
 
 #: lib/layouts/theorems-without-preamble.inc:47
@@ -18009,9 +18025,9 @@ msgid ""
 "provides a paragraph style. Passing 'final' as document class option "
 "suppresses the output of TODO notes."
 msgstr ""
-"Poskytuje vlastné vložky na vklad TODO prvkov do vášho dokumentu (používajúc "
+"Poskytuje vlastné vložky na vklad TODO prvkov do vášho dokumenta (používajúc "
 "balík todonotes). Pre generáciu 'Zoznam TODOs' poskytuje tento modul štýl "
-"odstavca. Nastaviť 'final' ako voľbu dokumentu potlačí výstup 'TODO' "
+"odstavca. Nastaviť 'final' ako voľbu dokumenta potlačí výstup 'TODO' "
 "poznámok."
 
 #: lib/layouts/todonotes.module:15 lib/layouts/todonotes.module:120
@@ -26032,7 +26048,7 @@ msgstr ""
 "pozície, ktorú chcete zobraziť.\n"
 "Uistite sa, že má príponu '.fen'\n"
 "a nezabudnite dať relatívnu cestu\n"
-"k súboru do dokumentu LyX-a.\n"
+"k súboru do dokumenta LyX-a.\n"
 "Vnútri XBoard-u, použite 'Edit -> Edit Position'\n"
 "pre obecnú editáciu šachovnice.\n"
 "Možno chcete aj použiť voľbu\n"
@@ -26191,7 +26207,7 @@ msgstr ""
 "LyX sa pokúsi držať vektorové vlastnosti obrázku pre konečný výstup.\n"
 "Všimnite si že existujú špecializované šablóny pre Xfig obrázky a Dia "
 "diagramy.\n"
-"Špecializované šablóny dovoľujú automaticky použiť font dokumentu v\n"
+"Špecializované šablóny dovoľujú automaticky použiť font dokumenta v\n"
 "obrázkoch, čo nie je možné so všeobecnou šablónou.\n"
 
 #: lib/xtemplates/xfig.xtemplate:33
@@ -26999,9 +27015,9 @@ msgstr "Pomocný adresár %1$s sa nedal zmazať"
 msgid "Unknown token: %1$s %2$s\n"
 msgstr "Neznámy token: %1$s %2$s\n"
 
-#: src/Buffer.cpp:1002 src/Buffer.cpp:1008 src/Buffer.cpp:1032
+#: src/Buffer.cpp:1003 src/Buffer.cpp:1009 src/Buffer.cpp:1033
 msgid "Document header error"
-msgstr "Chyba v hlavičke dokumentu"
+msgstr "Chyba v hlavičke dokumenta"
 
 #: src/Buffer.cpp:1007
 msgid "\\begin_header is missing"
@@ -27041,9 +27057,9 @@ msgstr "Súbor nenájdený"
 msgid "Unable to open file `%1$s'."
 msgstr "Nemôžem otvoriť súbor `%1$s'."
 
-#: src/Buffer.cpp:1220 src/Buffer.cpp:1294
+#: src/Buffer.cpp:1221 src/Buffer.cpp:1295
 msgid "Document format failure"
-msgstr "Chybný formát dokumentu"
+msgstr "Chybný formát dokumenta"
 
 #: src/Buffer.cpp:1221
 #, c-format
@@ -27222,30 +27238,30 @@ msgstr ""
 msgid "Uncodable character '%1$s' (code point %2$s)"
 msgstr "Nekódovateľný znak '%1$s' (hodnota %2$s)"
 
-#: src/Buffer.cpp:1783
+#: src/Buffer.cpp:1784
 msgid ""
 "Some characters of your document are not representable in specific verbatim "
 "contexts.\n"
 "Changing the document encoding to utf8 could help."
 msgstr ""
-"Niektoré znaky vášho dokumentu sú nereprezentovateľné v niektorých "
+"Niektoré znaky vášho dokumenta sú nereprezentovateľné v niektorých "
 "špecifických verbatim kontextoch.\n"
-"Pomôcť by mohla zmena kódovania dokumentu na utf8."
+"Pomôcť by mohla zmena kódovania dokumenta na utf8."
 
 #: src/Buffer.cpp:1788
 #, c-format
 msgid "Could not find LaTeX command for character '%1$s' (code point %2$s)"
 msgstr "Nedá sa nájsť LaTeX-ov príkaz pre znak '%1$s' (hodnota %2$s)"
 
-#: src/Buffer.cpp:1791
+#: src/Buffer.cpp:1792
 msgid ""
 "Some characters of your document are probably not representable in the "
 "chosen encoding.\n"
 "Changing the document encoding to utf8 could help."
 msgstr ""
-"Niektoré znaky vášho dokumentu sú pravdepodobne nereprezentovateľné vo "
+"Niektoré znaky vášho dokumenta sú pravdepodobne nereprezentovateľné vo "
 "zvolenom kódovaní.\n"
-"Pomôcť by mohla zmena kódovania dokumentu na utf8."
+"Pomôcť by mohla zmena kódovania dokumenta na utf8."
 
 #: src/Buffer.cpp:1799
 msgid "iconv conversion failed"
@@ -27259,7 +27275,7 @@ msgstr "konverzia zlyhala"
 msgid "Uncodable character in file path"
 msgstr "Nekódovateľný znak v ceste"
 
-#: src/Buffer.cpp:1918
+#: src/Buffer.cpp:1919
 #, c-format
 msgid ""
 "The path of your document\n"
@@ -27272,15 +27288,15 @@ msgid ""
 "In case of problems, choose an appropriate document encoding\n"
 "(such as utf8) or change the file path name."
 msgstr ""
-"Cesta vášho dokumentu\n"
+"Cesta vášho dokumenta\n"
 "(%1$s)\n"
 "obsahuje glyfy neznáme v kódovaní\n"
-"aktuálneho dokumentu (menovite %2$s).\n"
+"aktuálneho dokumenta (menovite %2$s).\n"
 "Na úplný výsledok zaistite aby TEXINPUTS obsahovala cestu ku adresáru "
-"dokumentu alebo použite relatívne cesty (čiže cesty začínajúce s './' alebo "
+"dokumenta alebo použite relatívne cesty (čiže cesty začínajúce s './' alebo "
 "s '../') v preambule alebo v ERT. \n"
 "\n"
-"V prípade problémov vyberte vhodné kódovanie dokumentu\n"
+"V prípade problémov vyberte vhodné kódovanie dokumenta\n"
 "(ako napr. utf8) alebo zmeňte meno cesty."
 
 #: src/Buffer.cpp:2009
@@ -27425,9 +27441,9 @@ msgstr "Prehľad tela"
 msgid "Plain text does not have a preamble."
 msgstr "Prostý text nemá preambulu."
 
-#: src/Buffer.cpp:4297
+#: src/Buffer.cpp:4305
 msgid "Autosaving current document..."
-msgstr "Automatické ukladanie súčasného dokumentu…"
+msgstr "Automatické ukladanie súčasného dokumenta…"
 
 #: src/Buffer.cpp:4419
 #, c-format
@@ -27447,7 +27463,7 @@ msgstr "Nemôžem exportovať súbor"
 msgid "File name error"
 msgstr "Chyba v názve súboru"
 
-#: src/Buffer.cpp:4494
+#: src/Buffer.cpp:4505
 #, c-format
 msgid ""
 "The directory path to the document\n"
@@ -27455,14 +27471,14 @@ msgid ""
 "contains spaces, but your TeX installation does not allow them. You should "
 "save the file to a directory whose name does not contain spaces."
 msgstr ""
-"Cesta do adresára dokumentu\n"
+"Cesta do adresára dokumenta\n"
 "%1$s\n"
 "obsahuje medzery, ale vaša inštalácia TeXu to nepovoľuje. Súbor by ste mali "
 "uložiť do adresára ktorého meno neobsahuje medzery."
 
-#: src/Buffer.cpp:4583 src/Buffer.cpp:4613 src/frontends/qt/GuiView.cpp:752
+#: src/Buffer.cpp:4594 src/Buffer.cpp:4624 src/frontends/qt/GuiView.cpp:875
 msgid "Document export cancelled."
-msgstr "Exportovanie dokumentu bolo zrušené."
+msgstr "Exportovanie dokumenta bolo zrušené."
 
 #: src/Buffer.cpp:4616
 #, c-format
@@ -27474,14 +27490,14 @@ msgstr "Dokument exportovaný ako %1$s do súboru `%2$s'"
 msgid "Document exported as %1$s"
 msgstr "Dokument exportovaný ako %1$s"
 
-#: src/Buffer.cpp:4692
+#: src/Buffer.cpp:4703
 #, c-format
 msgid ""
 "An emergency save of the document %1$s exists.\n"
 "\n"
 "Recover emergency save?"
 msgstr ""
-"Existuje havarijná kópia dokumentu %1$s.\n"
+"Existuje havarijná kópia dokumenta %1$s.\n"
 "\n"
 "Získať havarijnú kópiu späť?"
 
@@ -27501,14 +27517,14 @@ msgstr "&Nahrať Pôvodné"
 msgid "&Only show difference"
 msgstr "Ukáž len &rozdiely"
 
-#: src/Buffer.cpp:4707
+#: src/Buffer.cpp:4718
 #, c-format
 msgid ""
 "An emergency file is successfully loaded, but the original file %1$s is "
 "marked read-only. Please make sure to save the document as a different file."
 msgstr ""
 "Havarijný súbor úspešne načítaný, ale originálny súbor %1$s je označený len "
-"na čítanie. Zaistite prosím uloženie dokumentu ako iný súbor."
+"na čítanie. Zaistite prosím uloženie dokumenta ako iný súbor."
 
 #: src/Buffer.cpp:4714
 msgid "Document was successfully recovered."
@@ -27574,14 +27590,14 @@ msgstr ""
 "Havarijný súbor premenovaný na:\n"
 " %1$s"
 
-#: src/Buffer.cpp:4787
+#: src/Buffer.cpp:4814
 #, c-format
 msgid ""
 "The backup of the document %1$s is newer.\n"
 "\n"
 "Load the backup instead?"
 msgstr ""
-"Záloha dokumentu %1$s je novšia.\n"
+"Záloha dokumenta %1$s je novšia.\n"
 "\n"
 "Nahrať radšej zálohu ?"
 
@@ -27597,14 +27613,14 @@ msgstr "&Nahrať zálohu"
 msgid "Load &original"
 msgstr "Nahrať &pôvodné"
 
-#: src/Buffer.cpp:4800
+#: src/Buffer.cpp:4827
 #, c-format
 msgid ""
 "A backup file is successfully loaded, but the original file %1$s is marked "
 "read-only. Please make sure to save the document as a different file."
 msgstr ""
 "Zálohový súbor úspešne načítaný, ale originálny súbor %1$s je označený len "
-"na čítanie. Zaistite prosím uloženie dokumentu ako iný súbor."
+"na čítanie. Zaistite prosím uloženie dokumenta ako iný súbor."
 
 #: src/Buffer.cpp:5195 src/insets/InsetCaption.cpp:408
 msgid "Senseless!!! "
@@ -27700,7 +27716,7 @@ msgstr ""
 "LaTeX balík undertilde použiť len v prípade, keď sa vo formulách nájdu aj "
 "dekorácie 'utilde'"
 
-#: src/BufferParams.cpp:753
+#: src/BufferParams.cpp:784
 #, c-format
 msgid ""
 "The selected document class\n"
@@ -27713,7 +27729,7 @@ msgid ""
 "See section 3.1.2.2 (Class Availability) of the\n"
 "User's Guide for more information."
 msgstr ""
-"Vybraná trieda dokumentu\n"
+"Vybraná trieda dokumenta\n"
 "\t%1$s\n"
 "požaduje nedostupné externé súbory.\n"
 "Dokumentová trieda sa stále dá používať, ale LyX\n"
@@ -27723,9 +27739,9 @@ msgstr ""
 "Pozrite na sekciu 3.1.2.2 (Dostupné triedy) Užívateľskej príručky pre\n"
 "viac informácií."
 
-#: src/BufferParams.cpp:762
+#: src/BufferParams.cpp:793
 msgid "Document class not available"
-msgstr "Nedostupná trieda dokumentu"
+msgstr "Nedostupná trieda dokumenta"
 
 #: src/BufferParams.cpp:1059 src/Color.cpp:281
 #: src/frontends/qt/GuiDocument.cpp:3527
@@ -27751,11 +27767,34 @@ msgstr "LyX varovanie: "
 msgid "uncodable character"
 msgstr "Nekódovateľný znak"
 
+#: src/BufferParams.cpp:1732
+msgid "Uncodable character in document metadata"
+msgstr "Nekódovateľný znak v metaúdajoch dokumenta"
+
+#: src/BufferParams.cpp:1734
+#, c-format
+msgid ""
+"The metadata of your document contains glyphs that are unknown in the "
+"current document encoding (namely %1$s).\n"
+"These glyphs are omitted  from the output, which may result in incomplete "
+"output.\n"
+"\n"
+"Please select an appropriate document encoding\n"
+"(such as utf8) or change the preamble code accordingly."
+msgstr ""
+"Metaúdaje vášho dokumenta obsahuje glyfy, ktoré sú neznáme v kódovaní "
+"aktuálneho dokumenta (menovite %1$s).\n"
+"Tieto glyfy budú pri exporte do LaTeX-u vynechané, čo môže končiť neúplnom "
+"výstupe.\n"
+"\n"
+"Vyberte vhodné kódovanie dokumenta (napr. utf8)\n"
+"alebo zmeňte primerane preambulu."
+
 #: src/BufferParams.cpp:1775
 msgid "Uncodable character in class options"
 msgstr "Nekódovateľné znaky vo voľbách triedy"
 
-#: src/BufferParams.cpp:1777
+#: src/BufferParams.cpp:1888
 #, c-format
 msgid ""
 "The class options of your document contain glyphs that are unknown in the "
@@ -27766,18 +27805,18 @@ msgid ""
 "Please select an appropriate document encoding\n"
 "(such as utf8) or change the class options accordingly."
 msgstr ""
-"Voľby triedy vášho dokumentu obsahuje glyfy, ktoré sú neznáme v kódovaní "
-"aktuálneho dokumentu (menovite %1$s).\n"
+"Voľby triedy vášho dokumenta obsahujú glyfy, ktoré sú neznáme v kódovaní "
+"aktuálneho dokumenta (menovite %1$s).\n"
 "Tieto glyfy budú vo výstupe vynechané, čo môže končiť v neúplnom výstupe.\n"
 "\n"
-"Vyberte vhodné kódovanie dokumentu (napr. utf8)\n"
+"Vyberte vhodné kódovanie dokumenta (napr. utf8)\n"
 "alebo zmeňte primerane triedne voľby."
 
 #: src/BufferParams.cpp:2217
 msgid "Uncodable character in user preamble"
 msgstr "Nekódovateľný znak v preambule používateľa"
 
-#: src/BufferParams.cpp:2219
+#: src/BufferParams.cpp:2331
 #, c-format
 msgid ""
 "The user preamble of your document contains glyphs that are unknown in the "
@@ -27788,12 +27827,12 @@ msgid ""
 "Please select an appropriate document encoding\n"
 "(such as utf8) or change the preamble code accordingly."
 msgstr ""
-"Preambula vášho dokumentu obsahuje glyfy, ktoré sú neznáme v kódovaní "
-"aktuálneho dokumentu (menovite %1$s).\n"
+"Preambula vášho dokumenta obsahuje glyfy, ktoré sú neznáme v kódovaní "
+"aktuálneho dokumenta (menovite %1$s).\n"
 "Tieto glyfy budú pri exporte do LaTeX-u vynechané, čo môže končiť neúplnom "
 "výstupe.\n"
 "\n"
-"Vyberte vhodné kódovanie dokumentu (napr. utf8)\n"
+"Vyberte vhodné kódovanie dokumenta (napr. utf8)\n"
 "alebo zmeňte primerane preambulu."
 
 #: src/BufferParams.cpp:2534
@@ -27811,9 +27850,9 @@ msgstr ""
 "trieda a schéma. LyX nebude schopný zrobiť\n"
 "správny výstup."
 
-#: src/BufferParams.cpp:2540
+#: src/BufferParams.cpp:2652
 msgid "Document class not found"
-msgstr "Nenájdená trieda dokumentu"
+msgstr "Nenájdená trieda dokumenta"
 
 #: src/BufferParams.cpp:2547
 #, c-format
@@ -27846,7 +27885,7 @@ msgstr "Chyba pri čítaní"
 msgid "No bibliography processor found!"
 msgstr "Nenašiel sa žiadny procesor pre bibliografiu!"
 
-#: src/BufferParams.cpp:3653
+#: src/BufferParams.cpp:3728
 #, c-format
 msgid ""
 "The bibliography processor requested by this document (%1$s) is not "
@@ -27854,7 +27893,7 @@ msgid ""
 "references will be generated.\n"
 "Please fix your installation!"
 msgstr ""
-"Žiadaný procesor pre bibliografiu tohto dokumentu (%1$s) je nedostupný a "
+"Žiadaný procesor pre bibliografiu tohto dokumenta (%1$s) je nedostupný a "
 "alternatíva sa nenašla. Bibliografia a referencie nebudú generované.\n"
 "Opravte prosím vašu inštaláciu!"
 
@@ -27862,7 +27901,7 @@ msgstr ""
 msgid "Requested bibliography processor not found!"
 msgstr "Žiadaný procesor pre bibliografiu nenájdený!"
 
-#: src/BufferParams.cpp:3663
+#: src/BufferParams.cpp:3738
 #, c-format
 msgid ""
 "The bibliography processor requested by this document (%1$s) is not "
@@ -27871,7 +27910,7 @@ msgid ""
 "carefully!\n"
 "It is suggested to install the missing processor."
 msgstr ""
-"Žiadaný procesor pre bibliografiu tohto dokumentu (%1$s) je nedostupný. Ako "
+"Žiadaný procesor pre bibliografiu tohto dokumenta (%1$s) je nedostupný. Ako "
 "náhrada sa bude používať '%2$s' bez volieb. To môže viesť k chybám alebo "
 "nežiadúcim zmenám v bibliografie. Pozorne skontrolujte!\n"
 "Navrhuje sa inštalovať neprítomný procesor."
@@ -27896,19 +27935,19 @@ msgstr "Dokument je iba na čítanie"
 msgid "Document has been modified externally"
 msgstr "Dokument bol externe upravený"
 
-#: src/BufferView.cpp:1110
+#: src/BufferView.cpp:1148
 msgid "This portion of the document is deleted."
-msgstr "Táto časť dokumentu je vymazaná."
+msgstr "Táto časť dokumenta je vymazaná."
 
 #: src/BufferView.cpp:1153 src/BufferView.cpp:2212
 #: src/frontends/qt/GuiView.cpp:4104 src/frontends/qt/GuiView.cpp:4192
 msgid "Absolute filename expected."
 msgstr "Očakáva sa absolútna cesta súboru."
 
-#: src/BufferView.cpp:1383 src/BufferView.cpp:1415
+#: src/BufferView.cpp:1422 src/BufferView.cpp:1454
 #, c-format
 msgid "The document class `%1$s' could not be loaded."
-msgstr "Nepodarilo sa nahrať triedu dokumentu `%1$s'."
+msgstr "Nepodarilo sa nahrať triedu dokumenta `%1$s'."
 
 #: src/BufferView.cpp:1441
 msgid "No further undo information"
@@ -28079,7 +28118,7 @@ msgstr ""
 "ktoré sa v aktuálnom kódovaní %2$s nedajú reprezentovať.\n"
 "Príslušné glyfy budú pri exporte do LaTeX-u vynechané.\n"
 "\n"
-"Vyberte vhodné kódovanie dokumentu (napr. utf8)\n"
+"Vyberte vhodné kódovanie dokumenta (napr. utf8)\n"
 "alebo zmeňte písanie iniciál autora."
 
 #: src/Changes.cpp:405
@@ -28102,7 +28141,7 @@ msgstr ""
 "ktoré sa v aktuálnom kódovaní %2$s nedajú reprezentovať.\n"
 "Príslušné glyfy budú pri exporte do LaTeX-u vynechané.\n"
 "\n"
-"Vyberte vhodné kódovanie dokumentu (napr. utf8)\n"
+"Vyberte vhodné kódovanie dokumenta (napr. utf8)\n"
 "alebo zmeňte písanie mena autora."
 
 #: src/Chktex.cpp:65
@@ -28589,22 +28628,22 @@ msgstr "LaTeX backend potrebuje vaše oprávnenie"
 msgid "An external converter requires your authorization"
 msgstr "Spúšťanie externého konvertora potrebuje vaše oprávnenie"
 
-#: src/Converter.cpp:360
+#: src/Converter.cpp:366
 msgid ""
 "<p>Should LaTeX backends be allowed to run external programs?</p><p><b>Allow "
 "them only if you trust the origin/sender of the LyX document!</b></p>"
 msgstr ""
 "<p>Chcete aby LaTeX backendy umožňovali spúšťať externé príkazy?</"
-"p><p><b>Povoľte len keď dôverujete pôvodu/odosielateľovi tohto LyX dokumentu!"
+"p><p><b>Povoľte len keď dôverujete pôvodu/odosielateľovi tohto LyX dokumenta!"
 "</b></p> "
 
-#: src/Converter.cpp:363
+#: src/Converter.cpp:369
 msgid ""
 "<p>Would you like to run this converter?</p><p><b>Only run if you trust the "
 "origin/sender of the LyX document!</b></p>"
 msgstr ""
 "<p>Chcete tento konvertor spustiť?</p><p><b>Spustite len keď dôverujete "
-"pôvodu/odosielateľovi tohto LyX dokumentu!</b></p> "
+"pôvodu/odosielateľovi tohto LyX dokumenta!</b></p> "
 
 #: src/Converter.cpp:367
 msgid "Do &not allow"
@@ -28843,7 +28882,7 @@ msgid ""
 "Do you want to add it to the document's branch list?"
 msgstr ""
 "Vlepená vetva %1$s nie je definovaná.\n"
-"Chcete ju uložiť do zoznamu vetiev tohto dokumentu?"
+"Chcete ju uložiť do zoznamu vetiev tohto dokumenta?"
 
 #: src/CutAndPaste.cpp:440
 msgid "Unknown branch"
@@ -29486,12 +29525,12 @@ msgstr ""
 "Považovať spojené slová ako sú \"kedytedy\" namiesto \"kedy tedy\" ako "
 "správne slová?"
 
-#: src/LyXRC.cpp:3038
+#: src/LyXRC.cpp:3110
 msgid ""
 "Specify an alternate language. The default is to use the language of the "
 "document."
 msgstr ""
-"Nastavenie alternatívneho jazyka. Implicitne sa použije jazyk dokumentu."
+"Nastavenie alternatívneho jazyka. Implicitne sa použije jazyk dokumenta."
 
 #: src/LyXRC.cpp:3046
 msgid ""
@@ -29580,13 +29619,13 @@ msgstr ""
 "LyX normálne neaktualizuje pozíciu kurzora, ak ste pohli posuvníkom. "
 "Nastavte túto voľbu, ak preferujete mať pozíciu kurzora na obrazovke."
 
-#: src/LyXRC.cpp:3107
+#: src/LyXRC.cpp:3179
 msgid ""
 "LyX normally doesn't allow the user to scroll further than the bottom of the "
 "document. Set to true if you prefer to scroll the bottom of the document to "
 "the top of the screen"
 msgstr ""
-"LyX normálne nepovoľuje skrolovať pod koniec dokumentu. Nastavte túto voľbu, "
+"LyX normálne nepovoľuje skrolovať pod koniec dokumenta. Nastavte túto voľbu, "
 "ak preferujete skrolovať koniec až na vrchol obrazovky"
 
 #: src/LyXRC.cpp:3111
@@ -29691,29 +29730,29 @@ msgstr ""
 "potrebovať napríklad vtedy, keď budete chcieť písať dokument v Slovenčine na "
 "americkej klávesnici."
 
-#: src/LyXRC.cpp:3183
+#: src/LyXRC.cpp:3255
 msgid ""
 "Select if a language switching command is needed at the beginning of the "
 "document."
-msgstr "Vyberte, ak je príkaz pre zmenu jazyku potrebný na začiatku dokumentu."
+msgstr "Vyberte, ak je príkaz pre zmenu jazyku potrebný na začiatku dokumenta."
 
-#: src/LyXRC.cpp:3187
+#: src/LyXRC.cpp:3259
 msgid ""
 "Select if a language switching command is needed at the end of the document."
-msgstr "Vyberte, ak je príkaz pre zmenu jazyku potrebný na konci dokumentu."
+msgstr "Vyberte, ak je príkaz pre zmenu jazyku potrebný na konci dokumenta."
 
-#: src/LyXRC.cpp:3191
+#: src/LyXRC.cpp:3263
 msgid ""
 "The LaTeX command for changing from the language of the document to another "
 "language. E.g. \\selectlanguage{$$lang} where $$lang is substituted by the "
 "name of the second language."
 msgstr ""
-"LaTeX príkaz pre zmenu z jazyka dokumentu do iného jazyka. Napr. "
+"LaTeX príkaz pre zmenu z jazyka dokumenta do iného jazyka. Napr. "
 "\\selectlanguage{$$lang}, kde $$lang je nahradené názvom druhého jazyka."
 
-#: src/LyXRC.cpp:3195
+#: src/LyXRC.cpp:3267
 msgid "The LaTeX command for changing back to the language of the document."
-msgstr "LaTeX-ov príkaz pre návrat k pôvodnému jazyku dokumentu."
+msgstr "LaTeX-ov príkaz pre návrat k pôvodnému jazyku dokumenta."
 
 #: src/LyXRC.cpp:3199
 msgid "The LaTeX command for local changing of the language."
@@ -29734,12 +29773,12 @@ msgstr ""
 "Príkaz LaTeX-u pre načítanie jazykového balíka. Napr. "
 "\"\\usepackage{babel}\", \"\\usepackage{omega}\"."
 
-#: src/LyXRC.cpp:3211
+#: src/LyXRC.cpp:3283
 msgid ""
 "De-select if you don't want babel to be used when the language of the "
 "document is the default language."
 msgstr ""
-"Zrušte výber ak nechcete použiť babel, ak jazyk dokumentu je prednastavený "
+"Zrušte výber ak nechcete použiť babel, ak jazyk dokumenta je prednastavený "
 "jazyk."
 
 #: src/LyXRC.cpp:3215
@@ -29754,12 +29793,12 @@ msgstr "Zrušte výber keď nechcete nahrávať súbory otvorené v poslednom se
 msgid "De-select if you don't want LyX to create backup files."
 msgstr "Zrušte výber ak nechcete, aby LyX vytváral záložné súbory."
 
-#: src/LyXRC.cpp:3227
+#: src/LyXRC.cpp:3299
 msgid ""
 "Select to control the highlighting of words with a language foreign to that "
 "of the document."
 msgstr ""
-"Vyberte pre kontrolu vyzdvihnutia slov ktoré nie sú v jazyku dokumentu."
+"Vyberte pre kontrolu vyzdvihnutia slov ktoré nie sú v jazyku dokumenta."
 
 #: src/LyXRC.cpp:3235
 msgid "The scrolling speed of the mouse wheel."
@@ -29853,13 +29892,13 @@ msgid ""
 "Select to have visual bidi cursor movement, unselect for logical movement."
 msgstr "Vyberte pre vizuálny/logický pohyb kurzoru v dvojsmernom móde (bidi)."
 
-#: src/LyXRC.cpp:3318
+#: src/LyXRC.cpp:3390
 msgid ""
 "Specify whether, closing the last view of an open document, LyX should close "
 "the document (yes), hide it (no), or ask the user (ask)."
 msgstr ""
 "Definuje čo by sa malo robiť pri zavieraní posledného náhľadu otvoreného "
-"dokumentu. LyX by mal zavrieť dokument(yes), skryť ho(no), alebo pýtať sa čo "
+"dokumenta. LyX by mal zavrieť dokument(yes), skryť ho(no), alebo pýtať sa čo "
 "zrobiť(ask)."
 
 #: src/LyXRC.cpp:3322
@@ -29934,7 +29973,7 @@ msgstr ""
 "Cesta, ktorú vám LyX pri voľbe šablóny ponúkne. Prázdnou hodnotou bude "
 "nastavený adresár, z ktorého bol LyX spustený."
 
-#: src/LyXRC.cpp:3383
+#: src/LyXRC.cpp:3455
 msgid ""
 "Specify those directories which should be prepended to the TEXINPUTS "
 "environment variable.\n"
@@ -29942,7 +29981,7 @@ msgid ""
 msgstr ""
 "Určite adresári, ktoré by mali byť pridané do premennej TEXINPUTS pred "
 "ostatnými adresármi.\n"
-"'.' reprezentuje aktuálny adresár dokumentu. Použite miestny formát pre daný "
+"'.' reprezentuje aktuálny adresár dokumenta. Použite miestny formát pre daný "
 "operačný systém."
 
 #: src/LyXRC.cpp:3390
@@ -30027,14 +30066,14 @@ msgid ""
 "\n"
 "Do you want to revert to the older version?"
 msgstr ""
-"Návrat k uloženej verzii dokumentu %1$s znamená stratu všetkých súčasných "
+"Návrat k uloženej verzii dokumenta %1$s znamená stratu všetkých súčasných "
 "zmien.\n"
 "\n"
 "Chcete prejsť späť k staršej uloženej verzii ?"
 
 #: src/LyXVC.cpp:309
 msgid "Revert to stored version of document?"
-msgstr "Vrátiť sa k uloženej verzii dokumentu?"
+msgstr "Vrátiť sa k uloženej verzii dokumenta?"
 
 #: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4241
 msgid "&Revert"
@@ -30694,7 +30733,7 @@ msgid ""
 "%1$s\n"
 "could not be read."
 msgstr ""
-"Požadovaná šablóna dokumentu\n"
+"Požadovaná šablóna dokumenta\n"
 "%1$s\n"
 "sa nedá čítať."
 
@@ -30832,7 +30871,7 @@ msgstr "Triedny štandard"
 
 #: src/frontends/qt/FloatPlacement.cpp:184
 msgid "Document Default"
-msgstr "Štandardné nastavenia dokumentu"
+msgstr "Štandardné nastavenia dokumenta"
 
 #: src/frontends/qt/FloatPlacement.h:38 src/frontends/qt/GuiDocument.cpp:1775
 msgid "Float Settings"
@@ -31088,14 +31127,14 @@ msgstr "Nemôžem iterovať viac ako %1$d krát"
 msgid "Applied \"%1$s\" to %2$d buffer(s)"
 msgstr "\"%1$s\" uplatnené pre %2$d dokument(y)"
 
-#: src/frontends/qt/GuiApplication.cpp:2183
+#: src/frontends/qt/GuiApplication.cpp:2230
 #, c-format
 msgid "Document defaults saved in %1$s"
-msgstr "Štandardy dokumentu uložené v %1$s"
+msgstr "Štandardy dokumenta uložené v %1$s"
 
-#: src/frontends/qt/GuiApplication.cpp:2187
+#: src/frontends/qt/GuiApplication.cpp:2234
 msgid "Unable to save document defaults"
-msgstr "Nedajú sa uložiť štandardné definície dokumentu"
+msgstr "Nedajú sa uložiť štandardné definície dokumenta"
 
 #: src/frontends/qt/GuiApplication.cpp:2417
 #: src/frontends/qt/GuiApplication.cpp:2432
@@ -31220,7 +31259,7 @@ msgstr ""
 
 #: src/frontends/qt/GuiBibtex.cpp:136 src/frontends/qt/GuiBibtex.cpp:303
 msgid "Document Encoding"
-msgstr "Kódovanie dokumentu"
+msgstr "Kódovanie dokumenta"
 
 #: src/frontends/qt/GuiBibtex.cpp:274
 msgid "Database"
@@ -31778,9 +31817,9 @@ msgstr "Vyberte Unicode (utf8) kódovanie."
 msgid "Use language-dependent traditional encodings."
 msgstr "Použiť kódovanie ako pôvodne špecificky odkázané jazykom."
 
-#: src/frontends/qt/GuiDocument.cpp:993
+#: src/frontends/qt/GuiDocument.cpp:1003
 msgid "Select a custom, document-wide encoding."
-msgstr "Vyberte vlastné kódovanie tohto dokumentu."
+msgstr "Vyberte vlastné kódovanie tohto dokumenta."
 
 #: src/frontends/qt/GuiDocument.cpp:1002
 msgid "Standard Unicode support by the ``inputenc'' package."
@@ -32051,9 +32090,9 @@ msgid "Input listings parameters below. Enter ? for a list of parameters."
 msgstr ""
 "Poniže vkladajte parametre pre výpis. Na prehľad parametrov vložte znak '?'."
 
-#: src/frontends/qt/GuiDocument.cpp:1759
+#: src/frontends/qt/GuiDocument.cpp:1773
 msgid "Document Class"
-msgstr "Trieda dokumentu"
+msgstr "Trieda dokumenta"
 
 #: src/frontends/qt/GuiDocument.cpp:1762
 msgid "Local Layout"
@@ -32165,7 +32204,7 @@ msgstr "Schémy dokumentov LyX-u (*.layout)"
 msgid "Local layout file"
 msgstr "Lokálny súbor pre schému"
 
-#: src/frontends/qt/GuiDocument.cpp:2830
+#: src/frontends/qt/GuiDocument.cpp:2848
 msgid ""
 "The layout file you have selected is a local layout\n"
 "file, not one in the system or user directory.\n"
@@ -32175,7 +32214,7 @@ msgstr ""
 "Súbor schémy, ktorý ste zvolili je lokálnym\n"
 "súborom, a nie je ani v systémovom ani v užívateľskom adresáre.\n"
 "Váš dokument bude mať problémy kým súbor schémy\n"
-"nedržíte v adresáre dokumentu."
+"nedržíte v adresáre dokumenta."
 
 #: src/frontends/qt/GuiDocument.cpp:2834
 msgid "&Set Layout"
@@ -32257,9 +32296,9 @@ msgstr "%1$s, %2$s a %3$s"
 msgid "%1$s (unavailable)"
 msgstr "%1$s (nedostupný)"
 
-#: src/frontends/qt/GuiDocument.cpp:3261
+#: src/frontends/qt/GuiDocument.cpp:3276
 msgid "Module provided by document class."
-msgstr "Modul poskytnutý triedou dokumentu."
+msgstr "Modul poskytnutý triedou dokumenta."
 
 #: src/frontends/qt/GuiDocument.cpp:3269
 #, c-format
@@ -32352,15 +32391,15 @@ msgstr "Nenájdený"
 msgid "Assigned master does not include this file"
 msgstr "Hlavný dokument nezahrňuje tento súbor"
 
-#: src/frontends/qt/GuiDocument.cpp:5005
+#: src/frontends/qt/GuiDocument.cpp:5025
 #, c-format
 msgid ""
 "You must include this file in the document\n"
 "'%1$s' in order to use the master document\n"
 "feature."
 msgstr ""
-"Musíte zahrnúť tento súbor do dokumentu\n"
-"'%1$s' keď chcete používať vlastnosti hlavného dokumentu."
+"Musíte zahrnúť tento súbor do dokumenta\n"
+"'%1$s' keď chcete používať vlastnosti hlavného dokumenta."
 
 #: src/frontends/qt/GuiDocument.cpp:5009
 msgid "Could not load master"
@@ -32702,7 +32741,7 @@ msgstr "Čas (Pevný)"
 
 #: src/frontends/qt/GuiInfo.cpp:76
 msgid "Document Information"
-msgstr "Informácie dokumentu"
+msgstr "Informácie dokumenta"
 
 #: src/frontends/qt/GuiInfo.cpp:77
 msgid "Version Control Information"
@@ -33359,9 +33398,9 @@ msgstr "Klasické"
 msgid "Oxygen"
 msgstr "Oxygen"
 
-#: src/frontends/qt/GuiPrefs.cpp:2633
+#: src/frontends/qt/GuiPrefs.cpp:2682
 msgid "Document Handling"
-msgstr "Ovládanie dokumentu"
+msgstr "Ovládanie dokumenta"
 
 #: src/frontends/qt/GuiPrefs.cpp:2740
 msgid "Control"
@@ -33574,7 +33613,7 @@ msgstr "Kontrola pravopisu vo výbere skončila, nenašli sa žiadne chyby."
 msgid ""
 "We reached the end of the document, would you like to continue from the "
 "beginning?"
-msgstr "Došli sme na koniec dokumentu, chcete pokračovať od začiatku?"
+msgstr "Došli sme na koniec dokumenta, chcete pokračovať od začiatku?"
 
 #: src/frontends/qt/GuiSpellchecker.cpp:560
 msgid "Spell checker has no dictionaries."
@@ -34205,7 +34244,7 @@ msgstr "novýsúbor"
 msgid "Select LyX document to insert"
 msgstr "Vyberte LyX dokument na vloženie"
 
-#: src/frontends/qt/GuiView.cpp:2802
+#: src/frontends/qt/GuiView.cpp:2997
 #, c-format
 msgid ""
 "It is suggested to save the template in a subdirectory\n"
@@ -34214,7 +34253,7 @@ msgid ""
 "Do you want to create it?"
 msgstr ""
 "Navrhuje sa uložiť šablónu do pod-adresára\n"
-"vhodné pre jazyk dokumentu (%1$s).\n"
+"vhodné pre jazyk dokumenta (%1$s).\n"
 "Tento pod-adresár ešte neexistuje.\n"
 "Chcete ho vytvoriť?"
 
@@ -34339,7 +34378,7 @@ msgstr "Premenovať a uložiť ?"
 msgid "&Retry"
 msgstr "Z&opakuj"
 
-#: src/frontends/qt/GuiView.cpp:3145
+#: src/frontends/qt/GuiView.cpp:3340
 #, c-format
 msgid ""
 "Last view on document %1$s is being closed.\n"
@@ -34351,7 +34390,7 @@ msgid ""
 "To remove this question, set your preference in:\n"
 "  Tools->Preferences->Look&Feel->UserInterface\n"
 msgstr ""
-"Posledný náhľad dokumentu %1$s sa zaviera.\n"
+"Posledný náhľad dokumenta %1$s sa zaviera.\n"
 "Chcete ho zavrieť alebo len skryť?\n"
 "\n"
 "Skryté dokumenty možno zase vidieť cez\n"
@@ -34493,9 +34532,9 @@ msgstr ""
 msgid "Export Error"
 msgstr "Chyba pri exporte"
 
-#: src/frontends/qt/GuiView.cpp:3893
+#: src/frontends/qt/GuiView.cpp:4088
 msgid "Error cloning the Buffer."
-msgstr "Chyba pri klonovaní pamäte dokumentu."
+msgstr "Chyba pri klonovaní pamäte dokumenta."
 
 #: src/frontends/qt/GuiView.cpp:4044 src/frontends/qt/GuiView.cpp:4064
 msgid "Exporting ..."
@@ -34517,23 +34556,23 @@ msgstr "Vyberte súbor na vloženie"
 msgid "All Files (*)"
 msgstr "Všetky súbory (*)"
 
-#: src/frontends/qt/GuiView.cpp:4229
+#: src/frontends/qt/GuiView.cpp:4424
 #, c-format
 msgid ""
 "The current version will be lost. Are you sure you want to load the version "
 "on disk of the document %1$s?"
 msgstr ""
 "Bude to strata aktuálnej verzie. Naozaj sa chcete vrátiť ku uloženej verzii "
-"dokumentu %1$s?"
+"dokumenta %1$s?"
 
-#: src/frontends/qt/GuiView.cpp:4236
+#: src/frontends/qt/GuiView.cpp:4431
 #, c-format
 msgid ""
 "Any changes will be lost. Are you sure you want to revert to the saved "
 "version of the document %1$s?"
 msgstr ""
 "Všetky zmeny sa stratia. Naozaj sa chcete vrátiť ku pôvodnej verzii "
-"dokumentu %1$s ?"
+"dokumenta %1$s ?"
 
 #: src/frontends/qt/GuiView.cpp:4239
 msgid "Revert to saved document?"
@@ -34734,9 +34773,9 @@ msgstr "Aktualizovať [%1$s]|k"
 msgid "(No Custom Insets Defined)"
 msgstr "(Niet vlastných definovaných vložiek)"
 
-#: src/frontends/qt/Menus.cpp:1339
+#: src/frontends/qt/Menus.cpp:1355
 msgid "(No Document Open)"
-msgstr "(Bez otvoreného dokumentu)"
+msgstr "(Bez otvoreného dokumenta)"
 
 #: src/frontends/qt/Menus.cpp:1348
 msgid "Master Document"
@@ -34857,10 +34896,10 @@ msgstr "dynamické"
 msgid "static[[Quotes]]"
 msgstr "nemenné"
 
-#: src/frontends/qt/Menus.cpp:1906
+#: src/frontends/qt/Menus.cpp:1965
 #, c-format
 msgid "Reset to document default (%1$s, %2$s)|o"
-msgstr "Nastaviť na štandard dokumentu (%1$s, %2$s)|o"
+msgstr "Nastaviť na štandard dokumenta (%1$s, %2$s)|o"
 
 #: src/frontends/qt/Menus.cpp:1913
 #, c-format
@@ -36599,11 +36638,11 @@ msgstr ""
 
 #: src/lyxfind.cpp:364
 msgid "Search reached end of document, continuing from beginning."
-msgstr "Hľadanie došlo na koniec dokumentu, pokračuje od začiatku."
+msgstr "Hľadanie došlo na koniec dokumenta, pokračuje od začiatku."
 
 #: src/lyxfind.cpp:365
 msgid "Search reached beginning of document, continuing from end."
-msgstr "Hľadanie došlo na začiatok dokumentu, pokračuje od konca."
+msgstr "Hľadanie došlo na začiatok dokumenta, pokračuje od konca."
 
 #: src/lyxfind.cpp:657
 msgid "String not found in selection."
@@ -37135,7 +37174,7 @@ msgstr ""
 
 #: src/support/lassert.cpp:84
 msgid "Buffer Error!"
-msgstr "Chyba v pamäti dokumentu!"
+msgstr "Chyba v pamäti dokumenta!"
 
 #: src/support/lassert.cpp:91
 msgid ""
@@ -37237,6 +37276,9 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Neznámy používateľ"
 
+#~ msgid "e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
+#~ msgstr "napr.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
+
 #~ msgid ""
 #~ "If this is checked, an intermediate surface will be used for painting. "
 #~ "This may be needed in some cases to have proper display, but breaks "

commit e2adad20e82b42efd146ef9a05079cc80e027fb9
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Feb 13 10:28:00 2022 +0100

    Small doc addition concerning \DocumentMetadata

diff --git a/lib/doc/UserGuide.lyx b/lib/doc/UserGuide.lyx
index f5d5648..4cf4ce5 100644
--- a/lib/doc/UserGuide.lyx
+++ b/lib/doc/UserGuide.lyx
@@ -8973,14 +8973,12 @@ Verbatim
 \end_layout
 
 \begin_layout Verbatim
-
 This is Verbatim.
 \end_layout
 
 \begin_layout Verbatim
 \noindent
 \align block
-
 The following 2 lines are empty:
 \end_layout
 
@@ -8993,7 +8991,6 @@ The following 2 lines are empty:
 \end_layout
 
 \begin_layout Verbatim
-
 Almost everything is allowed in Verbatim:"%&$§#~'`
 \backslash
 }][{|
@@ -9017,7 +9014,6 @@ Verbatim
 \end_layout
 
 \begin_layout Verbatim*
-
 This is Verbatim*.
 \end_layout
 
@@ -36310,7 +36306,7 @@ Local Layout
 
 \begin_layout Standard
 
-\change_inserted -712698321 1644657160
+\change_inserted -712698321 1644744249
 The 
 \family sans
 Document Metadata
@@ -36328,9 +36324,13 @@ pdfversion=1.7, lang=de-DE
 \series default
 ).
  At the point of writing this, the list of options is still rather small
- and not very well documented, but it is expected that in the future, rather
- fundamental PDF properties (such as structure tagging for accessibility
- reasons and different PDF standards such as PDF/A) can be set this way.
+ and not very well documented (look for a file called 
+\emph on
+documentmetadata-support.pdf
+\emph default
+), but it is expected that in the future, rather fundamental PDF properties
+ (such as structure tagging for accessibility reasons and different PDF
+ standards such as PDF/A) can be set this way.
 \end_layout
 
 \begin_layout Standard
diff --git a/lib/doc/de/UserGuide.lyx b/lib/doc/de/UserGuide.lyx
index 0f1c9b0..b29b96f 100644
--- a/lib/doc/de/UserGuide.lyx
+++ b/lib/doc/de/UserGuide.lyx
@@ -33488,7 +33488,12 @@ pdfversion=1.7, lang=de-DE
 \series default
 ).
  Zum Zeitpunkt, als dies hier geschrieben wurde, ist die Liste möglicher
- Optionen noch klein und schlecht dokumentiert.
+ Optionen noch klein und schlecht dokumentiert (suchen Sie nach einer Datei
+ namens 
+\emph on
+documentmetadata-support.pdf
+\emph default
+).
  Es ist aber zu erwarten, dass zukünftig sehr fundamentale PDF-Eigenschaften
  (wie etwa strukturiertes Tagging für barrierefreie Dokumente oder verschiedene
  PDF-Standards wie PDF/A) auf diese Weise eingestellt werden können.

commit 777ccce5617aea9b15f27902b9133146eff4e87b
Author: Enrico Forestieri <forenr at lyx.org>
Date:   Sun Feb 13 04:57:27 2022 +0100

    Fix bug #12466
    
    Amend 109ea2be by reintroducing the command prefix that was
    inadvertently removed. The prefix sets the proper environment
    for latex.

diff --git a/src/support/ForkedCalls.cpp b/src/support/ForkedCalls.cpp
index e770c4d..b946215 100644
--- a/src/support/ForkedCalls.cpp
+++ b/src/support/ForkedCalls.cpp
@@ -305,6 +305,8 @@ int ForkedCall::generateChild()
 	if (command_.empty())
 		return 1;
 
+	string const prefixed_command = cmd_prefix_ + command_;
+
 #if !defined (_WIN32)
 	// POSIX
 
@@ -312,8 +314,8 @@ int ForkedCall::generateChild()
 	// in a contiguous block of memory. The array contains pointers
 	// to each word.
 	// Don't forget the terminating `\0' character.
-	char const * const c_str = command_.c_str();
-	vector<char> vec(c_str, c_str + command_.size() + 1);
+	char const * const c_str = prefixed_command.c_str();
+	vector<char> vec(c_str, c_str + prefixed_command.size() + 1);
 
 	// Splitting the command up into an array of words means replacing
 	// the whitespace between words with '\0'. Life is complicated
@@ -377,7 +379,7 @@ int ForkedCall::generateChild()
 	if (lyxerr.debugging(Debug::FILES)) {
 		vector<char *>::iterator ait = argv.begin();
 		vector<char *>::iterator const aend = argv.end();
-		lyxerr << "<command>\n\t" << command_
+		lyxerr << "<command>\n\t" << prefixed_command
 		       << "\n\tInterpreted as:\n\n";
 		for (; ait != aend; ++ait)
 			if (*ait)

commit 2ab548b6f6bfb2bee01f8cc6c8a3dd1561646400
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Feb 12 17:42:13 2022 +0100

    Fix tooltip and layout

diff --git a/src/frontends/qt/ui/PDFSupportUi.ui b/src/frontends/qt/ui/PDFSupportUi.ui
index 51a144c..b3ea170 100644
--- a/src/frontends/qt/ui/PDFSupportUi.ui
+++ b/src/frontends/qt/ui/PDFSupportUi.ui
@@ -454,11 +454,11 @@
          <attribute name="title">
           <string>Additional O&ptions</string>
          </attribute>
-         <layout class="QGridLayout" name="gridLayout">
+         <layout class="QGridLayout" name="gridLayout_9">
           <item row="0" column="0">
            <widget class="QGroupBox" name="groupBox_3">
             <property name="toolTip">
-             <string>Document metadata and PDF settings (as specified in LaTeX 06/2022 and later)</string>
+             <string>Additional hyperref options (comma-separated) to be passed via \hypersetup.</string>
             </property>
             <property name="title">
              <string>Hyperse&tup</string>

commit e937161444cdf29579f06190bd8b6d52172d7c58
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Feb 12 17:41:04 2022 +0100

    de.po

diff --git a/po/de.gmo b/po/de.gmo
index fd73b49..b25fa6c 100644
Binary files a/po/de.gmo and b/po/de.gmo differ
diff --git a/po/de.po b/po/de.po
index 077eaef..06508e9 100644
--- a/po/de.po
+++ b/po/de.po
@@ -88,14 +88,14 @@
 #   type                 -> Art
 #   view(er)             -> ansehen / Ansicht / Betrachter
 #   wrap                 -> umflossenes Gleitobjekt
-# Jürgen Spitzmüller <spitz at lyx.org>, 2009-2021.
+# Jürgen Spitzmüller <spitz at lyx.org>, 2009-2022.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.4git\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2021-12-29 17:56+0100\n"
-"PO-Revision-Date: 2021-12-29 18:00+0100\n"
+"POT-Creation-Date: 2022-02-12 17:36+0100\n"
+"PO-Revision-Date: 2022-02-12 17:40+0100\n"
 "Last-Translator: Jürgen Spitzmüller <spitz at lyx.org>\n"
 "Language-Team: Deutsch <lyx-docs at lists.lyx.org>\n"
 "Language: de\n"
@@ -470,9 +470,9 @@ msgstr "Wählt einen Stil aus einem lokalen Ordner"
 msgid "Add L&ocal..."
 msgstr "L&okalen hinzufügen..."
 
-#: src/frontends/qt/ui/BibtexUi.ui:304 lib/layouts/beamer.layout:518
-#: lib/layouts/beamer.layout:547 lib/layouts/beamer.layout:558
-#: lib/layouts/beamer.layout:586 lib/layouts/beamer.layout:689
+#: src/frontends/qt/ui/BibtexUi.ui:304 lib/layouts/beamer.layout:520
+#: lib/layouts/beamer.layout:549 lib/layouts/beamer.layout:560
+#: lib/layouts/beamer.layout:588 lib/layouts/beamer.layout:691
 #: lib/layouts/chessboard.module:31 lib/layouts/chessboard.module:61
 #: lib/layouts/chessboard.module:139 lib/layouts/fixme.module:68
 #: lib/layouts/fixme.module:103 lib/layouts/fixme.module:146
@@ -565,9 +565,9 @@ msgstr "Art der inneren Box"
 #: src/frontends/qt/ui/ListingsUi.ui:105 src/frontends/qt/ui/TabularUi.ui:1200
 #: src/frontends/qt/ui/TabularUi.ui:1219 src/frontends/qt/ui/TabularUi.ui:1267
 #: src/frontends/qt/GuiBox.cpp:420 src/frontends/qt/GuiBox.cpp:630
-#: src/frontends/qt/GuiDocument.cpp:124 src/frontends/qt/GuiGraphics.cpp:576
-#: src/frontends/qt/GuiMathMatrix.cpp:33 src/frontends/qt/GuiPrefs.cpp:2328
-#: src/frontends/qt/GuiPrefs.cpp:2351
+#: src/frontends/qt/GuiDocument.cpp:124 src/frontends/qt/GuiGraphics.cpp:582
+#: src/frontends/qt/GuiMathMatrix.cpp:33 src/frontends/qt/GuiPrefs.cpp:2327
+#: src/frontends/qt/GuiPrefs.cpp:2350
 msgid "None"
 msgstr "Keine"
 
@@ -668,7 +668,7 @@ msgstr "Dehnen"
 
 #: src/frontends/qt/ui/BoxUi.ui:265 src/frontends/qt/ui/ListingsUi.ui:110
 #: src/frontends/qt/ui/TabularUi.ui:344 src/frontends/qt/ui/TabularUi.ui:1553
-#: src/frontends/qt/ui/WrapUi.ui:47 src/frontends/qt/GuiDocument.cpp:1552
+#: src/frontends/qt/ui/WrapUi.ui:47 src/frontends/qt/GuiDocument.cpp:1554
 #: src/frontends/qt/GuiParagraph.cpp:115 src/frontends/qt/GuiTabular.cpp:1042
 msgid "Left"
 msgstr "Links"
@@ -681,7 +681,7 @@ msgstr "Zentriert"
 
 #: src/frontends/qt/ui/BoxUi.ui:275 src/frontends/qt/ui/ListingsUi.ui:115
 #: src/frontends/qt/ui/TabularUi.ui:354 src/frontends/qt/ui/WrapUi.ui:52
-#: src/frontends/qt/GuiDocument.cpp:1554 src/frontends/qt/GuiParagraph.cpp:116
+#: src/frontends/qt/GuiDocument.cpp:1556 src/frontends/qt/GuiParagraph.cpp:116
 #: src/frontends/qt/GuiTabular.cpp:1044
 msgid "Right"
 msgstr "Rechts"
@@ -767,7 +767,7 @@ msgid "Remove the selected branch"
 msgstr "Den ausgewählten Zweig entfernen"
 
 #: src/frontends/qt/ui/BranchesUi.ui:74 src/frontends/qt/ui/IndicesUi.ui:165
-#: src/Buffer.cpp:4736 src/Buffer.cpp:4749
+#: src/Buffer.cpp:4733 src/Buffer.cpp:4746
 msgid "&Remove"
 msgstr "&Entfernen"
 
@@ -842,17 +842,17 @@ msgid "Add A&ll"
 msgstr "A&lle hinzufügen"
 
 #: src/frontends/qt/ui/BranchesUnknownUi.ui:58 src/Buffer.cpp:1458
-#: src/Buffer.cpp:4710 src/Buffer.cpp:4820 src/LyXVC.cpp:114 src/LyXVC.cpp:310
+#: src/Buffer.cpp:4707 src/Buffer.cpp:4817 src/LyXVC.cpp:114 src/LyXVC.cpp:310
 #: src/buffer_funcs.cpp:56 src/frontends/qt/GuiBranches.cpp:226
-#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiDocument.cpp:2844
-#: src/frontends/qt/GuiParagraph.cpp:177 src/frontends/qt/GuiPrefs.cpp:3415
-#: src/frontends/qt/GuiView.cpp:2838 src/frontends/qt/GuiView.cpp:3070
-#: src/frontends/qt/GuiView.cpp:3094 src/frontends/qt/GuiView.cpp:3108
-#: src/frontends/qt/GuiView.cpp:3210 src/frontends/qt/GuiView.cpp:3255
-#: src/frontends/qt/GuiView.cpp:3310 src/frontends/qt/GuiView.cpp:3544
-#: src/frontends/qt/GuiView.cpp:3558 src/frontends/qt/GuiView.cpp:3660
-#: src/frontends/qt/GuiView.cpp:3685 src/frontends/qt/GuiView.cpp:4389
-#: src/frontends/qt/GuiView.cpp:4396 src/insets/InsetBibtex.cpp:153
+#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiDocument.cpp:2852
+#: src/frontends/qt/GuiParagraph.cpp:177 src/frontends/qt/GuiPrefs.cpp:3414
+#: src/frontends/qt/GuiView.cpp:2875 src/frontends/qt/GuiView.cpp:3107
+#: src/frontends/qt/GuiView.cpp:3131 src/frontends/qt/GuiView.cpp:3145
+#: src/frontends/qt/GuiView.cpp:3247 src/frontends/qt/GuiView.cpp:3292
+#: src/frontends/qt/GuiView.cpp:3347 src/frontends/qt/GuiView.cpp:3581
+#: src/frontends/qt/GuiView.cpp:3595 src/frontends/qt/GuiView.cpp:3697
+#: src/frontends/qt/GuiView.cpp:3722 src/frontends/qt/GuiView.cpp:4426
+#: src/frontends/qt/GuiView.cpp:4433 src/insets/InsetBibtex.cpp:153
 msgid "&Cancel"
 msgstr "&Abbrechen"
 
@@ -865,7 +865,7 @@ msgstr "Nicht definierte Zweige, die in diesem Dokument verwendet werden."
 msgid "&Undefined Branches:"
 msgstr "&Undefinierte Zweige:"
 
-#: src/frontends/qt/ui/BulletsUi.ui:17 src/frontends/qt/ui/PDFSupportUi.ui:421
+#: src/frontends/qt/ui/BulletsUi.ui:17 src/frontends/qt/ui/PDFSupportUi.ui:406
 msgid "&Level:"
 msgstr "&Ebene:"
 
@@ -893,17 +893,17 @@ msgstr "&Größe:"
 #: src/frontends/qt/GuiDocument.cpp:120 src/frontends/qt/GuiDocument.cpp:866
 #: src/frontends/qt/GuiDocument.cpp:886 src/frontends/qt/GuiDocument.cpp:1058
 #: src/frontends/qt/GuiDocument.cpp:1143 src/frontends/qt/GuiDocument.cpp:1189
-#: src/frontends/qt/GuiDocument.cpp:1200 src/frontends/qt/GuiDocument.cpp:1428
-#: src/frontends/qt/GuiDocument.cpp:1546 src/frontends/qt/GuiDocument.cpp:1553
-#: src/frontends/qt/GuiDocument.cpp:2586 src/frontends/qt/GuiDocument.cpp:2673
-#: src/frontends/qt/GuiDocument.cpp:2674 src/frontends/qt/GuiDocument.cpp:2675
-#: src/frontends/qt/GuiDocument.cpp:2695 src/frontends/qt/GuiDocument.cpp:2702
-#: src/frontends/qt/GuiDocument.cpp:2709 src/frontends/qt/GuiDocument.cpp:2799
-#: src/frontends/qt/GuiDocument.cpp:3405 src/frontends/qt/GuiDocument.cpp:4890
+#: src/frontends/qt/GuiDocument.cpp:1200 src/frontends/qt/GuiDocument.cpp:1430
+#: src/frontends/qt/GuiDocument.cpp:1548 src/frontends/qt/GuiDocument.cpp:1555
+#: src/frontends/qt/GuiDocument.cpp:2590 src/frontends/qt/GuiDocument.cpp:2677
+#: src/frontends/qt/GuiDocument.cpp:2678 src/frontends/qt/GuiDocument.cpp:2679
+#: src/frontends/qt/GuiDocument.cpp:2703 src/frontends/qt/GuiDocument.cpp:2710
+#: src/frontends/qt/GuiDocument.cpp:2717 src/frontends/qt/GuiDocument.cpp:2807
+#: src/frontends/qt/GuiDocument.cpp:3413 src/frontends/qt/GuiDocument.cpp:4908
 #: src/frontends/qt/GuiExternal.cpp:76 src/frontends/qt/GuiGraphics.cpp:71
 #: src/frontends/qt/GuiIndices.cpp:58 src/frontends/qt/GuiListings.cpp:160
-#: src/frontends/qt/GuiListings.cpp:167 src/frontends/qt/GuiPrefs.cpp:2484
-#: src/frontends/qt/GuiPrefs.cpp:2630 src/frontends/qt/GuiPrintNomencl.cpp:47
+#: src/frontends/qt/GuiListings.cpp:167 src/frontends/qt/GuiPrefs.cpp:2483
+#: src/frontends/qt/GuiPrefs.cpp:2629 src/frontends/qt/GuiPrintNomencl.cpp:47
 #: src/frontends/qt/GuiTabularCreate.cpp:107
 #: src/frontends/qt/GuiViewSource.cpp:341
 msgid "Default"
@@ -1096,8 +1096,8 @@ msgstr "S&prache:"
 #: lib/layouts/bicaption.module:16 lib/layouts/europasscv.layout:440
 #: lib/layouts/europasscv.layout:475 lib/layouts/europasscv.layout:482
 #: lib/layouts/europecv.layout:321 lib/layouts/europecv.layout:327
-#: lib/layouts/moderncv.layout:580 src/frontends/qt/GuiDocument.cpp:1777
-#: src/frontends/qt/GuiPrefs.cpp:2431 src/frontends/qt/Menus.cpp:938
+#: lib/layouts/moderncv.layout:580 src/frontends/qt/GuiDocument.cpp:1781
+#: src/frontends/qt/GuiPrefs.cpp:2430 src/frontends/qt/Menus.cpp:938
 msgid "Language"
 msgstr "Sprache"
 
@@ -1290,7 +1290,7 @@ msgid "Greyed-out notes:"
 msgstr "Grauschrift-Notizen:"
 
 #: src/frontends/qt/ui/ColorUi.ui:118 src/frontends/qt/ui/ColorUi.ui:256
-#: src/frontends/qt/GuiDocument.cpp:2215 src/frontends/qt/GuiDocument.cpp:2245
+#: src/frontends/qt/GuiDocument.cpp:2219 src/frontends/qt/GuiDocument.cpp:2249
 msgid "&Change..."
 msgstr "&Änderung..."
 
@@ -1413,7 +1413,7 @@ msgstr ""
 msgid "&Workarea only"
 msgstr "&Nur im Arbeitsbereich"
 
-#: src/frontends/qt/ui/DelimiterUi.ui:122 src/frontends/qt/GuiDelimiter.cpp:375
+#: src/frontends/qt/ui/DelimiterUi.ui:122 src/frontends/qt/GuiDelimiter.cpp:376
 msgid "TeX Code: "
 msgstr "TeX-Code: "
 
@@ -1455,7 +1455,7 @@ msgstr ""
 msgid "Save as Document Defaults"
 msgstr "Als Dokument-Voreinstellung speichern"
 
-#: src/frontends/qt/ui/ERTUi.ui:38 src/frontends/qt/GuiPrefs.cpp:1319
+#: src/frontends/qt/ui/ERTUi.ui:38 src/frontends/qt/GuiPrefs.cpp:1323
 msgid "Display"
 msgstr "Anzeige"
 
@@ -1610,12 +1610,12 @@ msgid "Scale"
 msgstr "Größe"
 
 #: src/frontends/qt/ui/ExternalUi.ui:494 src/frontends/qt/ui/GraphicsUi.ui:153
-#: src/frontends/qt/GuiGraphics.cpp:476
+#: src/frontends/qt/GuiGraphics.cpp:482
 msgid "Height of image in output"
 msgstr "Höhe des Bilds bei der Ausgabe"
 
 #: src/frontends/qt/ui/ExternalUi.ui:504 src/frontends/qt/ui/GraphicsUi.ui:121
-#: src/frontends/qt/GuiGraphics.cpp:475
+#: src/frontends/qt/GuiGraphics.cpp:481
 msgid "Width of image in output"
 msgstr "Breite des Bilds bei der Ausgabe"
 
@@ -2104,7 +2104,7 @@ msgstr ""
 "Legt die Höhe der Grafik fest. Falls nicht ausgewählt, wird die Höhe "
 "automatisch bestimmt."
 
-#: src/frontends/qt/ui/GraphicsUi.ui:166 src/frontends/qt/GuiGraphics.cpp:474
+#: src/frontends/qt/ui/GraphicsUi.ui:166 src/frontends/qt/GuiGraphics.cpp:480
 msgid "Set &height:"
 msgstr "&Höhe festlegen:"
 
@@ -2118,7 +2118,7 @@ msgstr ""
 "Legt die Breite der Grafik fest. Falls nicht ausgewählt, wird die Breite "
 "automatisch bestimmt."
 
-#: src/frontends/qt/ui/GraphicsUi.ui:186 src/frontends/qt/GuiGraphics.cpp:473
+#: src/frontends/qt/ui/GraphicsUi.ui:186 src/frontends/qt/GuiGraphics.cpp:479
 msgid "Set &width:"
 msgstr "&Breite festlegen:"
 
@@ -2312,8 +2312,8 @@ msgstr "Den Abstand auch nach einem Zeilenumbruch einfügen"
 #: lib/layouts/acmart.layout:694 lib/layouts/acmart.layout:712
 #: lib/layouts/amsdefs.inc:190 lib/layouts/maa-monthly.layout:165
 #: lib/layouts/maa-monthly.layout:169 lib/layouts/minimalistic.module:27
-#: lib/layouts/scrlttr2.layout:271 lib/layouts/stdinsets.inc:578
-#: lib/layouts/stdinsets.inc:581
+#: lib/layouts/scrlttr2.layout:271 lib/layouts/stdinsets.inc:579
+#: lib/layouts/stdinsets.inc:582
 msgid "URL"
 msgstr "URL"
 
@@ -2747,10 +2747,10 @@ msgid "&Syntax Highlighting Package:"
 msgstr "&Paket zur Code-Hervorhebung:"
 
 #: src/frontends/qt/ui/ListingsUi.ui:14 lib/layouts/numreport.inc:37
-#: lib/layouts/stdcounters.inc:77 lib/layouts/stdinsets.inc:337
-#: lib/layouts/stdinsets.inc:343 lib/layouts/stdinsets.inc:392
-#: lib/layouts/stdinsets.inc:398 src/insets/InsetCaption.cpp:410
-#: src/insets/InsetListings.cpp:611 src/insets/InsetListings.cpp:612
+#: lib/layouts/stdcounters.inc:77 lib/layouts/stdinsets.inc:338
+#: lib/layouts/stdinsets.inc:344 lib/layouts/stdinsets.inc:393
+#: lib/layouts/stdinsets.inc:399 src/insets/InsetCaption.cpp:410
+#: src/insets/InsetListings.cpp:612 src/insets/InsetListings.cpp:613
 msgid "Listing"
 msgstr "Listing"
 
@@ -3424,7 +3424,7 @@ msgstr "Bilder"
 
 #: src/frontends/qt/ui/OutputUi.ui:279 lib/layouts/aapaper.layout:63
 #: lib/layouts/egs.layout:712 lib/languages:146
-#: src/frontends/qt/GuiDocument.cpp:1607 src/frontends/qt/GuiErrorList.cpp:50
+#: src/frontends/qt/GuiDocument.cpp:1609 src/frontends/qt/GuiErrorList.cpp:50
 #: src/frontends/qt/GuiLog.cpp:282 src/frontends/qt/GuiPrefs.cpp:642
 msgid "LaTeX"
 msgstr "LaTeX"
@@ -3502,108 +3502,126 @@ msgstr ""
 msgid "Put fra&gile content out of moving arguments"
 msgstr "&Zerbrechlichen Inhalt aus beweglichen Argumenten verschieben"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:38
+#: src/frontends/qt/ui/PDFSupportUi.ui:23
 msgid "&Use hyperref support"
 msgstr "Hyperref-Unterstützung &benutzen"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:72
+#: src/frontends/qt/ui/PDFSupportUi.ui:57
 msgid "&General"
 msgstr "&Allgemein"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:119
+#: src/frontends/qt/ui/PDFSupportUi.ui:104
 msgid "Header Information"
 msgstr "Dokument-Informationen"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:134
+#: src/frontends/qt/ui/PDFSupportUi.ui:119
 msgid "&Title:"
 msgstr "&Titel:"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:147
+#: src/frontends/qt/ui/PDFSupportUi.ui:132
 msgid "&Author:"
 msgstr "&Autor:"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:160
+#: src/frontends/qt/ui/PDFSupportUi.ui:145
 msgid "Sub&ject:"
 msgstr "Th&ema:"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:173
+#: src/frontends/qt/ui/PDFSupportUi.ui:158
 msgid "&Keywords:"
 msgstr "&Schlagwörter:"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:206
+#: src/frontends/qt/ui/PDFSupportUi.ui:191
 msgid ""
 "If not stated explicitly, fill title and author from appropriate environments"
 msgstr ""
 "Wenn Titel und Autor nicht angegeben sind, versuche diese Angaben aus dem "
 "Dokument zu erhalten"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:209
+#: src/frontends/qt/ui/PDFSupportUi.ui:194
 msgid "Automatically fi&ll header"
 msgstr "Informationen a&utomatisch eintragen"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:216
+#: src/frontends/qt/ui/PDFSupportUi.ui:201
 msgid "Enable fullscreen PDF presentation"
 msgstr "Vollbild-PDF-Präsentation zulassen"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:219
+#: src/frontends/qt/ui/PDFSupportUi.ui:204
 msgid "Load in &fullscreen mode"
 msgstr "Im Vollbildmodus ö&ffnen"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:229
+#: src/frontends/qt/ui/PDFSupportUi.ui:214
 msgid "H&yperlinks"
 msgstr "H&yperlinks"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:280
+#: src/frontends/qt/ui/PDFSupportUi.ui:265
 msgid "Allows link text to break across lines."
 msgstr "Erlaubt das Umbrechen von Links am Zeilenende."
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:283
+#: src/frontends/qt/ui/PDFSupportUi.ui:268
 msgid "B&reak links over lines"
 msgstr "Links am Zeilenende &umbrechen"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:290
+#: src/frontends/qt/ui/PDFSupportUi.ui:275
 msgid "No &frames around links"
 msgstr "Kein &Rahmen um Links"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:300
+#: src/frontends/qt/ui/PDFSupportUi.ui:285
 msgid "C&olor links"
 msgstr "&Links einfärben"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:307
+#: src/frontends/qt/ui/PDFSupportUi.ui:292
 msgid "Bibliographical backreferences"
 msgstr "Bibliographische Rückverweise"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:310
+#: src/frontends/qt/ui/PDFSupportUi.ui:295
 msgid "B&ackreferences:"
 msgstr "Rück&verweise:"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:339
+#: src/frontends/qt/ui/PDFSupportUi.ui:324
 msgid "&Bookmarks"
 msgstr "&Lesezeichen"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:360
+#: src/frontends/qt/ui/PDFSupportUi.ui:345
 msgid "G&enerate bookmarks (toc)"
 msgstr "L&esezeichen erzeugen (Inhaltsverz.)"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:390
+#: src/frontends/qt/ui/PDFSupportUi.ui:375
 msgid "&Numbered bookmarks"
 msgstr "&Nummerierte Lesezeichen"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:397
+#: src/frontends/qt/ui/PDFSupportUi.ui:382
 msgid "&Open bookmark tree"
 msgstr "Lesezeichen-Strukturbaum ö&ffnen"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:431
+#: src/frontends/qt/ui/PDFSupportUi.ui:416
 msgid "Number of levels"
 msgstr "Anzahl der Lesezeichen Ebenen"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:473
+#: src/frontends/qt/ui/PDFSupportUi.ui:455
 msgid "Additional O&ptions"
 msgstr "Zusätzliche O&ptionen"
 
-#: src/frontends/qt/ui/PDFSupportUi.ui:509
-msgid "e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
-msgstr "z. B.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
+#: src/frontends/qt/ui/PDFSupportUi.ui:461
+msgid ""
+"Additional hyperref options (comma-separated) to be passed via \\hypersetup."
+msgstr ""
+"Zusätzliche Hyperref-Optionen (durch Komma getrennt). Diese werden via "
+"\\hypersetup übergeben."
+
+#: src/frontends/qt/ui/PDFSupportUi.ui:464
+msgid "Hyperse&tup"
+msgstr "Hyperse&tup"
+
+#: src/frontends/qt/ui/PDFSupportUi.ui:487
+msgid ""
+"Document metadata and PDF settings (as specified in LaTeX 06/2022 and later)"
+msgstr ""
+"Metadaten des Dokuments und PDF-Einstellungen (wie seit LaTeX 06/2022 "
+"spezifiziert)"
+
+#: src/frontends/qt/ui/PDFSupportUi.ui:490
+msgid "Document &Metadata"
+msgstr "&Metadaten des Dokuments"
 
 #: src/frontends/qt/ui/PageLayoutUi.ui:20
 msgid "Paper Format"
@@ -3634,7 +3652,7 @@ msgstr "&Querformat"
 
 #: src/frontends/qt/ui/PageLayoutUi.ui:162
 #: lib/layouts/customHeadersFooters.module:3 lib/layouts/landscape.module:3
-#: lib/layouts/multicol.module:3 src/frontends/qt/GuiDocument.cpp:1775
+#: lib/layouts/multicol.module:3 src/frontends/qt/GuiDocument.cpp:1779
 msgid "Page Layout"
 msgstr "Seitenlayout"
 
@@ -3681,10 +3699,10 @@ msgstr "Doppelt"
 #: src/frontends/qt/GuiDocument.cpp:867 src/frontends/qt/GuiDocument.cpp:873
 #: src/frontends/qt/GuiDocument.cpp:881 src/frontends/qt/GuiDocument.cpp:997
 #: src/frontends/qt/GuiDocument.cpp:1064 src/frontends/qt/GuiDocument.cpp:1150
-#: src/frontends/qt/GuiDocument.cpp:1201 src/frontends/qt/GuiDocument.cpp:1547
+#: src/frontends/qt/GuiDocument.cpp:1201 src/frontends/qt/GuiDocument.cpp:1549
 #: src/frontends/qt/GuiHSpace.cpp:57 src/frontends/qt/GuiPrefs.cpp:816
 #: src/frontends/qt/GuiPrefs.cpp:844 src/frontends/qt/GuiPrefs.cpp:871
-#: src/frontends/qt/GuiPrefs.cpp:2330 src/frontends/qt/GuiPrefs.cpp:2353
+#: src/frontends/qt/GuiPrefs.cpp:2329 src/frontends/qt/GuiPrefs.cpp:2352
 #: src/frontends/qt/GuiPrintNomencl.cpp:51 src/insets/InsetInfo.cpp:236
 #: src/insets/InsetInfo.cpp:246 src/insets/InsetInfo.cpp:250
 #: src/insets/InsetInfo.cpp:259 src/insets/InsetInfo.cpp:321
@@ -3939,8 +3957,8 @@ msgid "&Modify"
 msgstr "&Ändern"
 
 #: src/frontends/qt/ui/PrefConvertersUi.ui:286
-#: src/frontends/qt/ui/PrefShortcutsUi.ui:61 src/frontends/qt/GuiPrefs.cpp:3151
-#: src/frontends/qt/GuiPrefs.cpp:3237
+#: src/frontends/qt/ui/PrefShortcutsUi.ui:61 src/frontends/qt/GuiPrefs.cpp:3150
+#: src/frontends/qt/GuiPrefs.cpp:3236
 msgid "Remo&ve"
 msgstr "&Entfernen"
 
@@ -4032,17 +4050,6 @@ msgstr ""
 msgid "&Underline change tracking additions"
 msgstr "Hinzufügungen im Änderungsmodus &unterstreichen"
 
-#: src/frontends/qt/ui/PrefDisplayUi.ui:164
-msgid ""
-"If this is checked, an intermediate surface will be used for painting. This "
-"may be needed in some cases to have proper display, but breaks subpixel "
-"aliasing."
-msgstr ""
-
-#: src/frontends/qt/ui/PrefDisplayUi.ui:167
-msgid "Use &backing store to display text"
-msgstr ""
-
 #: src/frontends/qt/ui/PrefDocHandlingUi.ui:26
 msgid "Session Handling"
 msgstr "Sitzungshandhabung"
@@ -4503,7 +4510,7 @@ msgstr ""
 "soll"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:77
-#: src/frontends/qt/GuiDocument.cpp:1060 src/frontends/qt/GuiDocument.cpp:2716
+#: src/frontends/qt/GuiDocument.cpp:1060 src/frontends/qt/GuiDocument.cpp:2724
 #: src/frontends/qt/GuiPrefs.cpp:815 src/frontends/qt/GuiPrefs.cpp:843
 msgid "Automatic"
 msgstr "Automatisch"
@@ -6240,8 +6247,8 @@ msgstr "Nur Haupttext"
 msgid "Select the output format"
 msgstr "Ausgabeformat wählen"
 
-#: src/frontends/qt/ui/WorkAreaUi.ui:82 src/frontends/qt/GuiView.cpp:3685
-#: src/frontends/qt/GuiView.cpp:4389
+#: src/frontends/qt/ui/WorkAreaUi.ui:82 src/frontends/qt/GuiView.cpp:3722
+#: src/frontends/qt/GuiView.cpp:4426
 msgid "&Reload"
 msgstr "Ne&u laden"
 
@@ -6778,10 +6785,10 @@ msgstr "Abbildungsanmerkungen"
 #: lib/layouts/acmsiggraph-0-92.layout:44 lib/layouts/acmsiggraph.layout:36
 #: lib/layouts/agutex.layout:33 lib/layouts/amsart.layout:33
 #: lib/layouts/amsbook.layout:34 lib/layouts/apa.layout:26
-#: lib/layouts/apax.inc:22 lib/layouts/beamer.layout:65
-#: lib/layouts/beamer.layout:1209 lib/layouts/beamer.layout:1236
-#: lib/layouts/beamer.layout:1263 lib/layouts/beamer.layout:1388
-#: lib/layouts/beamer.layout:1425 lib/layouts/broadway.layout:179
+#: lib/layouts/apax.inc:22 lib/layouts/beamer.layout:67
+#: lib/layouts/beamer.layout:1211 lib/layouts/beamer.layout:1238
+#: lib/layouts/beamer.layout:1265 lib/layouts/beamer.layout:1390
+#: lib/layouts/beamer.layout:1427 lib/layouts/broadway.layout:179
 #: lib/layouts/cl2emult.layout:152 lib/layouts/db_stdclass.inc:17
 #: lib/layouts/dtk.layout:33 lib/layouts/egs.layout:20
 #: lib/layouts/elsart.layout:51 lib/layouts/elsarticle.layout:36
@@ -6822,7 +6829,7 @@ msgid "Text of a note in a figure"
 msgstr "Text einer Abbildungsanmerkung"
 
 #: lib/layouts/AEA.layout:156 lib/layouts/apax.inc:240
-#: lib/layouts/beamer.layout:1437 lib/layouts/powerdot.layout:228
+#: lib/layouts/beamer.layout:1439 lib/layouts/powerdot.layout:228
 msgid "Note:"
 msgstr "Notiz:"
 
@@ -6840,7 +6847,7 @@ msgstr "Text einer Tabellenanmerkung"
 
 #: lib/layouts/AEA.layout:180 lib/layouts/IEEEtran.layout:49
 #: lib/layouts/acmart.layout:548 lib/layouts/acmart.layout:552
-#: lib/layouts/beamer.layout:1376 lib/layouts/elsart.layout:306
+#: lib/layouts/beamer.layout:1378 lib/layouts/elsart.layout:306
 #: lib/layouts/elsart.layout:310 lib/layouts/foils.layout:248
 #: lib/layouts/heb-article.layout:28 lib/layouts/ijmpc.layout:421
 #: lib/layouts/ijmpd.layout:428 lib/layouts/ijmpd.layout:431
@@ -7025,7 +7032,7 @@ msgid "Conjecture"
 msgstr "Vermutung"
 
 #: lib/layouts/AEA.layout:241 lib/layouts/acmart.layout:587
-#: lib/layouts/beamer.layout:1292 lib/layouts/elsart.layout:381
+#: lib/layouts/beamer.layout:1294 lib/layouts/elsart.layout:381
 #: lib/layouts/foils.layout:281 lib/layouts/heb-article.layout:66
 #: lib/layouts/ijmpc.layout:442 lib/layouts/ijmpd.layout:457
 #: lib/layouts/ijmpd.layout:460 lib/layouts/llncs.layout:353
@@ -7073,7 +7080,7 @@ msgid "Criterion"
 msgstr "Kriterium"
 
 #: lib/layouts/AEA.layout:256 lib/layouts/acmart.layout:615
-#: lib/layouts/beamer.layout:1330 lib/layouts/elsart.layout:417
+#: lib/layouts/beamer.layout:1332 lib/layouts/elsart.layout:417
 #: lib/layouts/foils.layout:295 lib/layouts/heb-article.layout:86
 #: lib/layouts/llncs.layout:367 lib/layouts/siamltex.layout:128
 #: lib/layouts/svmono.layout:34 lib/layouts/theorems-ams-bytype.inc:180
@@ -7099,7 +7106,7 @@ msgid "Definition"
 msgstr "Definition"
 
 #: lib/layouts/AEA.layout:263 lib/layouts/acmart.layout:629
-#: lib/layouts/beamer.layout:1342 lib/layouts/elsart.layout:442
+#: lib/layouts/beamer.layout:1344 lib/layouts/elsart.layout:442
 #: lib/layouts/linguistics.module:18 lib/layouts/llncs.layout:374
 #: lib/layouts/svmono.layout:74 lib/layouts/theorems-ams-bytype.inc:207
 #: lib/layouts/theorems-ams-bytype.inc:217
@@ -7120,7 +7127,7 @@ msgstr "Definition"
 #: lib/layouts/theorems-without-preamble.inc:240
 #: lib/layouts/theorems-without-preamble.inc:243 lib/layouts/theorems.inc:204
 #: lib/layouts/theorems.inc:213 lib/layouts/theorems.inc:216
-#: src/frontends/qt/GuiDocument.cpp:1354
+#: src/frontends/qt/GuiDocument.cpp:1356
 msgid "Example"
 msgstr "Beispiel"
 
@@ -7150,7 +7157,7 @@ msgid "Exercise"
 msgstr "Aufgabe"
 
 #: lib/layouts/AEA.layout:277 lib/layouts/acmart.layout:594
-#: lib/layouts/beamer.layout:1364 lib/layouts/elsart.layout:372
+#: lib/layouts/beamer.layout:1366 lib/layouts/elsart.layout:372
 #: lib/layouts/foils.layout:274 lib/layouts/heb-article.layout:56
 #: lib/layouts/ijmpc.layout:446 lib/layouts/ijmpd.layout:465
 #: lib/layouts/ijmpd.layout:468 lib/layouts/llncs.layout:388
@@ -7344,7 +7351,7 @@ msgid "Caption"
 msgstr "Legende"
 
 #: lib/layouts/AEA.layout:344 lib/layouts/IEEEtran.layout:448
-#: lib/layouts/beamer.layout:1370 lib/layouts/elsart.layout:342
+#: lib/layouts/beamer.layout:1372 lib/layouts/elsart.layout:342
 #: lib/layouts/foils.layout:309 lib/layouts/heb-article.layout:106
 #: lib/layouts/ijmpc.layout:399 lib/layouts/ijmpd.layout:405
 #: lib/layouts/llncs.layout:408 lib/layouts/siamltex.layout:157
@@ -7397,7 +7404,7 @@ msgstr "IEEE Transactions"
 #: lib/layouts/acmsiggraph-0-92.layout:43 lib/layouts/acmsiggraph.layout:35
 #: lib/layouts/agutex.layout:32 lib/layouts/amsart.layout:32
 #: lib/layouts/amsbook.layout:33 lib/layouts/apa.layout:25
-#: lib/layouts/apax.inc:21 lib/layouts/beamer.layout:64
+#: lib/layouts/apax.inc:21 lib/layouts/beamer.layout:66
 #: lib/layouts/broadway.layout:178 lib/layouts/chess.layout:30
 #: lib/layouts/cl2emult.layout:151 lib/layouts/db_stdclass.inc:16
 #: lib/layouts/dtk.layout:32 lib/layouts/egs.layout:19
@@ -7417,7 +7424,7 @@ msgstr "IEEE Transactions"
 #: lib/layouts/scrlttr2.layout:19 lib/layouts/siamltex.layout:37
 #: lib/layouts/sigplanconf.layout:41 lib/layouts/simplecv.layout:18
 #: lib/layouts/slides.layout:61 lib/layouts/stdclass.inc:28
-#: lib/layouts/stdinsets.inc:687 lib/layouts/stdletter.inc:12
+#: lib/layouts/stdinsets.inc:688 lib/layouts/stdletter.inc:12
 #: lib/layouts/svcommon.inc:26 lib/layouts/tufte-book.layout:35
 #: src/insets/InsetRef.cpp:597
 msgid "Standard"
@@ -7429,7 +7436,7 @@ msgstr "Standard"
 #: lib/layouts/acmart.layout:145 lib/layouts/acmsiggraph-0-92.layout:165
 #: lib/layouts/acmsiggraph.layout:141 lib/layouts/agutex.layout:56
 #: lib/layouts/amsdefs.inc:27 lib/layouts/apa.layout:42 lib/layouts/apax.inc:38
-#: lib/layouts/beamer.layout:984 lib/layouts/beamerposter.layout:21
+#: lib/layouts/beamer.layout:986 lib/layouts/beamerposter.layout:21
 #: lib/layouts/broadway.layout:192 lib/layouts/cl2emult.layout:41
 #: lib/layouts/copernicus.layout:34 lib/layouts/docbook-book.layout:18
 #: lib/layouts/docbook-chapter.layout:14 lib/layouts/docbook-section.layout:14
@@ -7472,7 +7479,7 @@ msgstr "Kleinschreibung"
 #: lib/layouts/achemso.layout:84 lib/layouts/acmart.layout:81
 #: lib/layouts/acmsiggraph-0-92.layout:178 lib/layouts/acmsiggraph.layout:154
 #: lib/layouts/amsdefs.inc:57 lib/layouts/apa.layout:139
-#: lib/layouts/apax.inc:80 lib/layouts/beamer.layout:1048
+#: lib/layouts/apax.inc:80 lib/layouts/beamer.layout:1050
 #: lib/layouts/beamerposter.layout:31 lib/layouts/broadway.layout:210
 #: lib/layouts/cl2emult.layout:63 lib/layouts/copernicus.layout:61
 #: lib/layouts/ectaart.layout:131 lib/layouts/ectaart.layout:217
@@ -7494,7 +7501,7 @@ msgstr "Kleinschreibung"
 msgid "Author"
 msgstr "Autor"
 
-#: lib/layouts/IEEEtran.layout:129 lib/layouts/beamer.layout:1061
+#: lib/layouts/IEEEtran.layout:129 lib/layouts/beamer.layout:1063
 msgid "Short Author|S"
 msgstr "Autor (Kurzform)|z"
 
@@ -7588,7 +7595,7 @@ msgstr "Anhänge"
 #: lib/layouts/acmsiggraph.layout:305 lib/layouts/agutex.layout:167
 #: lib/layouts/agutex.layout:177 lib/layouts/agutex.layout:197
 #: lib/layouts/agutex.layout:223 lib/layouts/amsdefs.inc:266
-#: lib/layouts/apa.layout:244 lib/layouts/beamer.layout:1169
+#: lib/layouts/apa.layout:244 lib/layouts/beamer.layout:1171
 #: lib/layouts/copernicus.layout:437 lib/layouts/egs.layout:588
 #: lib/layouts/egs.layout:639 lib/layouts/elsarticle.layout:333
 #: lib/layouts/europasscv.layout:539 lib/layouts/europecv.layout:380
@@ -7627,7 +7634,7 @@ msgstr "Peer-Review-Titel"
 #: lib/layouts/ijmpc.layout:496 lib/layouts/ijmpc.layout:498
 #: lib/layouts/ijmpd.layout:520 lib/layouts/ijmpd.layout:522
 #: lib/layouts/kluwer.layout:364 lib/layouts/kluwer.layout:377
-#: lib/examples/Articles:0 src/RowPainter.cpp:373
+#: lib/examples/Articles:0 src/RowPainter.cpp:374
 msgid "Appendix"
 msgstr "Anhang"
 
@@ -7644,7 +7651,7 @@ msgstr "Kurztitel für den Anhang"
 #: lib/layouts/aapaper.layout:234 lib/layouts/aastex.layout:450
 #: lib/layouts/aguplus.inc:172 lib/layouts/aguplus.inc:174
 #: lib/layouts/agutex.layout:219 lib/layouts/amsbook.layout:121
-#: lib/layouts/amsdefs.inc:265 lib/layouts/beamer.layout:1168
+#: lib/layouts/amsdefs.inc:265 lib/layouts/beamer.layout:1170
 #: lib/layouts/book.layout:24 lib/layouts/book.layout:26
 #: lib/layouts/cl2emult.layout:115 lib/layouts/copernicus.layout:433
 #: lib/layouts/egs.layout:638 lib/layouts/elsarticle.layout:329
@@ -7664,13 +7671,13 @@ msgstr "Kurztitel für den Anhang"
 #: lib/layouts/stdstruct.inc:59 lib/layouts/svcommon.inc:657
 #: lib/layouts/tufte-book.layout:298 lib/layouts/tufte-book.layout:300
 #: lib/layouts/tufte-handout.layout:77 lib/examples/Articles:0
-#: src/frontends/qt/GuiDocument.cpp:1781 src/insets/InsetBibtex.cpp:957
+#: src/frontends/qt/GuiDocument.cpp:1785 src/insets/InsetBibtex.cpp:957
 msgid "Bibliography"
 msgstr "Literaturverzeichnis"
 
 #: lib/layouts/IEEEtran.layout:389 lib/layouts/aastex.layout:464
 #: lib/layouts/aastex.layout:485 lib/layouts/agutex.layout:235
-#: lib/layouts/amsdefs.inc:281 lib/layouts/beamer.layout:1183
+#: lib/layouts/amsdefs.inc:281 lib/layouts/beamer.layout:1185
 #: lib/layouts/cl2emult.layout:130 lib/layouts/copernicus.layout:449
 #: lib/layouts/egs.layout:654 lib/layouts/elsarticle.layout:345
 #: lib/layouts/ijmpc.layout:540 lib/layouts/ijmpd.layout:564
@@ -7687,7 +7694,7 @@ msgstr "Literaturverzeichnis"
 
 #: lib/layouts/IEEEtran.layout:398 lib/layouts/aastex.layout:474
 #: lib/layouts/agutex.layout:244 lib/layouts/amsdefs.inc:293
-#: lib/layouts/beamer.layout:1192 lib/layouts/cl2emult.layout:139
+#: lib/layouts/beamer.layout:1194 lib/layouts/cl2emult.layout:139
 #: lib/layouts/copernicus.layout:457 lib/layouts/egs.layout:662
 #: lib/layouts/elsarticle.layout:354 lib/layouts/ijmpc.layout:549
 #: lib/layouts/ijmpd.layout:573 lib/layouts/iopart.layout:346
@@ -7701,7 +7708,7 @@ msgstr "Lit.-Vorspann"
 
 #: lib/layouts/IEEEtran.layout:399 lib/layouts/aastex.layout:475
 #: lib/layouts/agutex.layout:245 lib/layouts/amsdefs.inc:294
-#: lib/layouts/beamer.layout:1193 lib/layouts/cl2emult.layout:140
+#: lib/layouts/beamer.layout:1195 lib/layouts/cl2emult.layout:140
 #: lib/layouts/copernicus.layout:458 lib/layouts/egs.layout:663
 #: lib/layouts/elsarticle.layout:355 lib/layouts/ijmpc.layout:550
 #: lib/layouts/ijmpd.layout:574 lib/layouts/iopart.layout:347
@@ -7715,7 +7722,7 @@ msgstr "Literaturverzeichnis-Vorspann"
 
 #: lib/layouts/IEEEtran.layout:400 lib/layouts/aastex.layout:476
 #: lib/layouts/agutex.layout:246 lib/layouts/amsdefs.inc:295
-#: lib/layouts/beamer.layout:1194 lib/layouts/cl2emult.layout:141
+#: lib/layouts/beamer.layout:1196 lib/layouts/cl2emult.layout:141
 #: lib/layouts/copernicus.layout:459 lib/layouts/egs.layout:664
 #: lib/layouts/elsarticle.layout:356 lib/layouts/ijmpc.layout:551
 #: lib/layouts/ijmpd.layout:575 lib/layouts/iopart.layout:348
@@ -7769,7 +7776,7 @@ msgid "BiographyNoPhoto"
 msgstr "Biographie ohne Foto"
 
 #: lib/layouts/IEEEtran.layout:449 lib/layouts/acmart.layout:553
-#: lib/layouts/beamer.layout:1293 lib/layouts/elsart.layout:311
+#: lib/layouts/beamer.layout:1295 lib/layouts/elsart.layout:311
 #: lib/layouts/elsart.layout:343 lib/layouts/foils.layout:249
 #: lib/layouts/heb-article.layout:29 lib/layouts/heb-article.layout:107
 #: lib/layouts/ijmpc.layout:402 lib/layouts/ijmpd.layout:408
@@ -7792,7 +7799,7 @@ msgstr "Beweis (alternativ)"
 msgid "An alternative proof string"
 msgstr "Eine alternative Bezeichnung für den Beweis"
 
-#: lib/layouts/IEEEtran.layout:468 lib/layouts/beamer.layout:1373
+#: lib/layouts/IEEEtran.layout:468 lib/layouts/beamer.layout:1375
 #: lib/layouts/foils.layout:312 lib/layouts/llncs.layout:411
 #: lib/layouts/siamltex.layout:176 lib/layouts/svcommon.inc:748
 #: lib/layouts/svmono.layout:103 lib/layouts/svmono.layout:107
@@ -7945,7 +7952,7 @@ msgstr "Astronomy & Astrophysics"
 
 #: lib/layouts/aa.layout:69 lib/layouts/aapaper.inc:9
 #: lib/layouts/aapaper.layout:81 lib/layouts/acm-sigs.inc:10
-#: lib/layouts/acmart.layout:160 lib/layouts/beamer.layout:1021
+#: lib/layouts/acmart.layout:160 lib/layouts/beamer.layout:1023
 #: lib/layouts/beamerposter.layout:26 lib/layouts/kluwer.layout:136
 #: lib/layouts/llncs.layout:135 lib/layouts/scrclass.inc:217
 #: lib/layouts/sigplanconf.layout:138 lib/layouts/svcommon.inc:356
@@ -7981,7 +7988,7 @@ msgstr "Danksagungen."
 #: lib/layouts/aapaper.layout:139 lib/layouts/aastex.layout:97
 #: lib/layouts/aguplus.inc:29 lib/layouts/amsart.layout:66
 #: lib/layouts/amsbook.layout:57 lib/layouts/apa.layout:339
-#: lib/layouts/apax.inc:438 lib/layouts/beamer.layout:288
+#: lib/layouts/apax.inc:438 lib/layouts/beamer.layout:290
 #: lib/layouts/egs.layout:33 lib/layouts/europasscv.layout:264
 #: lib/layouts/europecv.layout:193 lib/layouts/isprs.layout:160
 #: lib/layouts/iucr.layout:47 lib/layouts/jss.layout:25
@@ -8004,7 +8011,7 @@ msgstr "Abschnitt"
 #: lib/layouts/aapaper.layout:149 lib/layouts/aastex.layout:110
 #: lib/layouts/aguplus.inc:44 lib/layouts/amsart.layout:107
 #: lib/layouts/amsbook.layout:67 lib/layouts/apa.layout:350
-#: lib/layouts/apax.inc:449 lib/layouts/beamer.layout:350
+#: lib/layouts/apax.inc:449 lib/layouts/beamer.layout:352
 #: lib/layouts/egs.layout:56 lib/layouts/isprs.layout:172
 #: lib/layouts/iucr.layout:53 lib/layouts/jss.layout:29
 #: lib/layouts/kluwer.layout:72 lib/layouts/latex8.layout:59
@@ -8022,7 +8029,7 @@ msgstr "Unterabschnitt"
 #: lib/layouts/aapaper.layout:161 lib/layouts/aastex.layout:123
 #: lib/layouts/amsart.layout:130 lib/layouts/amsbook.layout:76
 #: lib/layouts/apa.layout:360 lib/layouts/apax.inc:459
-#: lib/layouts/beamer.layout:412 lib/layouts/isprs.layout:182
+#: lib/layouts/beamer.layout:414 lib/layouts/isprs.layout:182
 #: lib/layouts/iucr.layout:61 lib/layouts/jss.layout:33
 #: lib/layouts/kluwer.layout:82 lib/layouts/llncs.layout:67
 #: lib/layouts/ltugboat.layout:90 lib/layouts/memoir.layout:129
@@ -8038,7 +8045,7 @@ msgstr "Unterunterabschnitt"
 #: lib/layouts/aa.layout:253 lib/layouts/aapaper.layout:99
 #: lib/layouts/aapaper.layout:202 lib/layouts/aastex.layout:265
 #: lib/layouts/acmart.layout:133 lib/layouts/amsdefs.inc:82
-#: lib/layouts/beamer.layout:1120 lib/layouts/beamerposter.layout:41
+#: lib/layouts/beamer.layout:1122 lib/layouts/beamerposter.layout:41
 #: lib/layouts/dinbrief.layout:218 lib/layouts/egs.layout:550
 #: lib/layouts/foils.layout:169 lib/layouts/frletter.layout:24
 #: lib/layouts/g-brief.layout:199 lib/layouts/g-brief2.layout:54
@@ -8058,7 +8065,7 @@ msgstr "Datum"
 msgid "institutemark"
 msgstr "Institutsfußnotenmarke"
 
-#: lib/layouts/aa.layout:273 lib/layouts/beamer.layout:1103
+#: lib/layouts/aa.layout:273 lib/layouts/beamer.layout:1105
 msgid "Institute Mark"
 msgstr "Institutsmarke"
 
@@ -8110,7 +8117,7 @@ msgstr "Ergebnisse Ihrer Arbeit"
 msgid "Key words."
 msgstr "Schlagwörter."
 
-#: lib/layouts/aa.layout:395 lib/layouts/beamer.layout:1076
+#: lib/layouts/aa.layout:395 lib/layouts/beamer.layout:1078
 #: lib/layouts/beamerposter.layout:36 lib/layouts/cl2emult.layout:81
 #: lib/layouts/llncs.layout:231 lib/layouts/sciposter.layout:24
 #: lib/layouts/svcommon.inc:384
@@ -8161,20 +8168,20 @@ msgid "Obsolete"
 msgstr "Veraltet"
 
 #: lib/layouts/aapaper.layout:50 lib/layouts/apa.layout:391
-#: lib/layouts/apax.inc:490 lib/layouts/beamer.layout:82
+#: lib/layouts/apax.inc:490 lib/layouts/beamer.layout:84
 #: lib/layouts/egs.layout:203 lib/layouts/powerdot.layout:264
 #: lib/layouts/simplecv.layout:108 lib/layouts/stdlists.inc:13
 msgid "Itemize"
 msgstr "Auflistung"
 
 #: lib/layouts/aapaper.layout:53 lib/layouts/apa.layout:427
-#: lib/layouts/apax.inc:527 lib/layouts/beamer.layout:131
+#: lib/layouts/apax.inc:527 lib/layouts/beamer.layout:133
 #: lib/layouts/egs.layout:166 lib/layouts/powerdot.layout:326
 #: lib/layouts/stdlists.inc:52
 msgid "Enumerate"
 msgstr "Aufzählung"
 
-#: lib/layouts/aapaper.layout:56 lib/layouts/beamer.layout:186
+#: lib/layouts/aapaper.layout:56 lib/layouts/beamer.layout:188
 #: lib/layouts/egs.layout:239 lib/layouts/hollywood.layout:130
 #: lib/layouts/paper.layout:110 lib/layouts/scrclass.inc:55
 #: lib/layouts/scrlettr.layout:21 lib/layouts/scrlttr2.layout:33
@@ -8186,8 +8193,8 @@ msgstr "Beschreibung"
 #: lib/layouts/aapaper.layout:59 lib/layouts/algorithm2e.module:34
 #: lib/layouts/apa.layout:392 lib/layouts/apa.layout:428
 #: lib/layouts/apa.layout:466 lib/layouts/apax.inc:491 lib/layouts/apax.inc:528
-#: lib/layouts/apax.inc:566 lib/layouts/beamer.layout:83
-#: lib/layouts/beamer.layout:132 lib/layouts/beamer.layout:187
+#: lib/layouts/apax.inc:566 lib/layouts/beamer.layout:85
+#: lib/layouts/beamer.layout:134 lib/layouts/beamer.layout:189
 #: lib/layouts/egs.layout:139 lib/layouts/egs.layout:167
 #: lib/layouts/egs.layout:204 lib/layouts/enumitem.module:88
 #: lib/layouts/europasscv.layout:400 lib/layouts/foils.layout:87
@@ -8238,9 +8245,9 @@ msgstr "Alternative Zugehörigkeit:"
 msgid "And"
 msgstr "Und"
 
-#: lib/layouts/aastex.layout:256 src/frontends/qt/GuiDocument.cpp:3144
-#: src/frontends/qt/GuiDocument.cpp:3156 src/frontends/qt/GuiDocument.cpp:3282
-#: src/frontends/qt/GuiDocument.cpp:3301
+#: lib/layouts/aastex.layout:256 src/frontends/qt/GuiDocument.cpp:3152
+#: src/frontends/qt/GuiDocument.cpp:3164 src/frontends/qt/GuiDocument.cpp:3290
+#: src/frontends/qt/GuiDocument.cpp:3309
 msgid "and"
 msgstr "und"
 
@@ -8490,15 +8497,15 @@ msgstr "American Chemical Society (ACS)"
 
 #: lib/layouts/achemso.layout:75 lib/layouts/amsdefs.inc:41
 #: lib/layouts/apa.layout:291 lib/layouts/apax.inc:390
-#: lib/layouts/beamer.layout:260 lib/layouts/beamer.layout:315
-#: lib/layouts/beamer.layout:377 lib/layouts/beamer.layout:439
-#: lib/layouts/beamer.layout:998 lib/layouts/europecv.layout:201
+#: lib/layouts/beamer.layout:262 lib/layouts/beamer.layout:317
+#: lib/layouts/beamer.layout:379 lib/layouts/beamer.layout:441
+#: lib/layouts/beamer.layout:1000 lib/layouts/europecv.layout:201
 #: lib/layouts/iopart.layout:67 lib/layouts/jasatex.layout:75
 #: lib/layouts/memoir.layout:68 lib/layouts/revtex4-x.inc:245
 #: lib/layouts/scrclass.inc:142 lib/layouts/scrclass.inc:155
 #: lib/layouts/scrclass.inc:168 lib/layouts/scrclass.inc:324
 #: lib/layouts/scrclass.inc:349 lib/layouts/siamltex.layout:206
-#: lib/layouts/simplecv.layout:52 lib/layouts/stdinsets.inc:694
+#: lib/layouts/simplecv.layout:52 lib/layouts/stdinsets.inc:695
 #: lib/layouts/stdsections.inc:32 lib/layouts/stdsections.inc:76
 #: lib/layouts/stdsections.inc:117 lib/layouts/tufte-book.layout:98
 #: lib/layouts/tufte-book.layout:129 lib/layouts/tufte-handout.layout:40
@@ -8961,7 +8968,7 @@ msgstr "Randnotiz (nur sigchi-a)"
 msgid "Margin figure (sigchi-a only)"
 msgstr "Randabbildung (nur sigchi-a)"
 
-#: lib/layouts/acmart.layout:526 lib/layouts/beamer.layout:1726
+#: lib/layouts/acmart.layout:526 lib/layouts/beamer.layout:1728
 #: lib/layouts/powerdot.layout:577 lib/layouts/sciposter.layout:109
 #: lib/layouts/stdfloats.inc:33 lib/layouts/tufte-book.layout:292
 msgid "List of Figures"
@@ -8971,7 +8978,7 @@ msgstr "Abbildungsverzeichnis"
 msgid "Margin table (sigchi-a only)"
 msgstr "Randtabelle (nur sigchi-a)"
 
-#: lib/layouts/acmart.layout:539 lib/layouts/beamer.layout:1713
+#: lib/layouts/acmart.layout:539 lib/layouts/beamer.layout:1715
 #: lib/layouts/powerdot.layout:560 lib/layouts/sciposter.layout:123
 #: lib/layouts/stdfloats.inc:18 lib/layouts/tufte-book.layout:276
 msgid "List of Tables"
@@ -8984,7 +8991,7 @@ msgstr "Tabellenverzeichnis"
 msgid "Definitions & Theorems"
 msgstr "Definitionen & Theoreme"
 
-#: lib/layouts/acmart.layout:562 lib/layouts/beamer.layout:1322
+#: lib/layouts/acmart.layout:562 lib/layouts/beamer.layout:1324
 #: lib/layouts/theorems-ams-bytype.inc:40
 #: lib/layouts/theorems-ams-chap-bytype.inc:82 lib/layouts/theorems-ams.inc:37
 #: lib/layouts/theorems-bytype.inc:35 lib/layouts/theorems-named.module:22
@@ -8992,7 +8999,7 @@ msgstr "Definitionen & Theoreme"
 msgid "Additional Theorem Text"
 msgstr "Zusätzlicher Theoremtext"
 
-#: lib/layouts/acmart.layout:563 lib/layouts/beamer.layout:1323
+#: lib/layouts/acmart.layout:563 lib/layouts/beamer.layout:1325
 #: lib/layouts/theorems-ams-bytype.inc:41
 #: lib/layouts/theorems-ams-chap-bytype.inc:83 lib/layouts/theorems-ams.inc:38
 #: lib/layouts/theorems-bytype.inc:36 lib/layouts/theorems-named.module:23
@@ -9289,7 +9296,7 @@ msgid "American Geophysical Union (AGUPLUS Manuscript)"
 msgstr "American Geophysical Union (AGUPLUS-Manuskript)"
 
 #: lib/layouts/aguplus.inc:37 lib/layouts/amsart.layout:77
-#: lib/layouts/amsbook.layout:86 lib/layouts/beamer.layout:332
+#: lib/layouts/amsbook.layout:86 lib/layouts/beamer.layout:334
 #: lib/layouts/egs.layout:676 lib/layouts/isprs.layout:192
 #: lib/layouts/spie.layout:32 lib/layouts/stdstarsections.inc:43
 #: lib/layouts/svcommon.inc:278
@@ -9297,7 +9304,7 @@ msgid "Section*"
 msgstr "Abschnitt*"
 
 #: lib/layouts/aguplus.inc:52 lib/layouts/amsart.layout:119
-#: lib/layouts/amsbook.layout:95 lib/layouts/beamer.layout:394
+#: lib/layouts/amsbook.layout:95 lib/layouts/beamer.layout:396
 #: lib/layouts/egs.layout:696 lib/layouts/isprs.layout:203
 #: lib/layouts/stdstarsections.inc:58 lib/layouts/svcommon.inc:286
 msgid "Subsection*"
@@ -9414,7 +9421,7 @@ msgstr "Bildtafel"
 msgid "Planotable"
 msgstr "Plano-Tabelle"
 
-#: lib/layouts/aguplus.inc:211 lib/layouts/beamer.layout:1708
+#: lib/layouts/aguplus.inc:211 lib/layouts/beamer.layout:1710
 #: lib/layouts/powerdot.layout:553 lib/layouts/powerdot.layout:631
 #: lib/layouts/sciposter.layout:118 lib/layouts/stdfloats.inc:13
 #: lib/ui/stdtoolbars.inc:153 src/insets/Inset.cpp:104
@@ -9492,9 +9499,9 @@ msgstr "Spezialabschnitt"
 msgid "SpecialSection*"
 msgstr "Spezialabschnitt*"
 
-#: lib/layouts/amsart.layout:98 lib/layouts/beamer.layout:334
-#: lib/layouts/beamer.layout:396 lib/layouts/beamer.layout:458
-#: lib/layouts/memoir.layout:248 lib/layouts/stdinsets.inc:712
+#: lib/layouts/amsart.layout:98 lib/layouts/beamer.layout:336
+#: lib/layouts/beamer.layout:398 lib/layouts/beamer.layout:460
+#: lib/layouts/memoir.layout:248 lib/layouts/stdinsets.inc:713
 #: lib/layouts/stdstarsections.inc:15 lib/layouts/stdstarsections.inc:30
 #: lib/layouts/stdstarsections.inc:45 lib/layouts/stdstarsections.inc:60
 #: lib/layouts/stdstarsections.inc:75 lib/layouts/stdstarsections.inc:90
@@ -9503,7 +9510,7 @@ msgid "Unnumbered"
 msgstr "Unnummeriert"
 
 #: lib/layouts/amsart.layout:140 lib/layouts/amsbook.layout:103
-#: lib/layouts/beamer.layout:456 lib/layouts/isprs.layout:212
+#: lib/layouts/beamer.layout:458 lib/layouts/isprs.layout:212
 #: lib/layouts/stdstarsections.inc:73 lib/layouts/svcommon.inc:294
 msgid "Subsubsection*"
 msgstr "Unterunterabschnitt*"
@@ -9528,8 +9535,8 @@ msgstr "Kapitel-Aufgaben"
 #: lib/layouts/amsbook.layout:166 lib/layouts/apa.layout:412
 #: lib/layouts/apa.layout:450 lib/layouts/apa.layout:486
 #: lib/layouts/apax.inc:512 lib/layouts/apax.inc:550 lib/layouts/apax.inc:586
-#: lib/layouts/beamer.layout:107 lib/layouts/beamer.layout:160
-#: lib/layouts/beamer.layout:203 lib/layouts/beamer.layout:788
+#: lib/layouts/beamer.layout:109 lib/layouts/beamer.layout:162
+#: lib/layouts/beamer.layout:205 lib/layouts/beamer.layout:790
 #: lib/layouts/egs.layout:154 lib/layouts/egs.layout:188
 #: lib/layouts/egs.layout:224 lib/layouts/egs.layout:259
 #: lib/layouts/europasscv.layout:405 lib/layouts/foils.layout:105
@@ -9547,8 +9554,8 @@ msgstr "Listenvorspann"
 #: lib/layouts/amsbook.layout:167 lib/layouts/apa.layout:413
 #: lib/layouts/apa.layout:451 lib/layouts/apa.layout:487
 #: lib/layouts/apax.inc:513 lib/layouts/apax.inc:551 lib/layouts/apax.inc:587
-#: lib/layouts/beamer.layout:108 lib/layouts/beamer.layout:161
-#: lib/layouts/beamer.layout:204 lib/layouts/beamer.layout:789
+#: lib/layouts/beamer.layout:110 lib/layouts/beamer.layout:163
+#: lib/layouts/beamer.layout:206 lib/layouts/beamer.layout:791
 #: lib/layouts/egs.layout:155 lib/layouts/egs.layout:189
 #: lib/layouts/egs.layout:225 lib/layouts/egs.layout:260
 #: lib/layouts/europasscv.layout:406 lib/layouts/foils.layout:106
@@ -9566,8 +9573,8 @@ msgstr "Listenvorspann"
 #: lib/layouts/amsbook.layout:168 lib/layouts/apa.layout:414
 #: lib/layouts/apa.layout:452 lib/layouts/apa.layout:488
 #: lib/layouts/apax.inc:514 lib/layouts/apax.inc:552 lib/layouts/apax.inc:588
-#: lib/layouts/beamer.layout:109 lib/layouts/beamer.layout:162
-#: lib/layouts/beamer.layout:205 lib/layouts/beamer.layout:790
+#: lib/layouts/beamer.layout:111 lib/layouts/beamer.layout:164
+#: lib/layouts/beamer.layout:207 lib/layouts/beamer.layout:792
 #: lib/layouts/egs.layout:156 lib/layouts/egs.layout:190
 #: lib/layouts/egs.layout:226 lib/layouts/egs.layout:261
 #: lib/layouts/europasscv.layout:407 lib/layouts/foils.layout:107
@@ -9714,13 +9721,13 @@ msgid "Centered"
 msgstr "Zentriert"
 
 #: lib/layouts/apa.layout:285 lib/layouts/apax.inc:384
-#: lib/layouts/stdinsets.inc:688 src/insets/InsetCaption.cpp:436
+#: lib/layouts/stdinsets.inc:689 src/insets/InsetCaption.cpp:436
 msgid "standard"
 msgstr "Standard"
 
 #: lib/layouts/apa.layout:292 lib/layouts/apax.inc:391
 #: lib/layouts/scrclass.inc:325 lib/layouts/scrclass.inc:350
-#: lib/layouts/stdinsets.inc:695
+#: lib/layouts/stdinsets.inc:696
 msgid "The caption as it appears in the list of figures/tables"
 msgstr "Die Legende, wie sie im Abbildungs-/Tabellenverzeichnis erscheint"
 
@@ -9743,7 +9750,7 @@ msgstr "Unterparagraph"
 
 #: lib/layouts/apa.layout:408 lib/layouts/apa.layout:446
 #: lib/layouts/apax.inc:508 lib/layouts/apax.inc:546
-#: lib/layouts/beamer.layout:95 lib/layouts/beamer.layout:148
+#: lib/layouts/beamer.layout:97 lib/layouts/beamer.layout:150
 #: lib/layouts/egs.layout:184 lib/layouts/egs.layout:220
 #: lib/layouts/europasscv.layout:428 lib/layouts/powerdot.layout:299
 #: lib/layouts/powerdot.layout:364 lib/layouts/stdlists.inc:33
@@ -9753,7 +9760,7 @@ msgstr "Benutzerdef. Aufzählung|z"
 
 #: lib/layouts/apa.layout:409 lib/layouts/apa.layout:447
 #: lib/layouts/apax.inc:509 lib/layouts/apax.inc:547
-#: lib/layouts/beamer.layout:96 lib/layouts/beamer.layout:149
+#: lib/layouts/beamer.layout:98 lib/layouts/beamer.layout:151
 #: lib/layouts/egs.layout:185 lib/layouts/egs.layout:221
 #: lib/layouts/europasscv.layout:429 lib/layouts/powerdot.layout:300
 #: lib/layouts/powerdot.layout:365 lib/layouts/stdlists.inc:34
@@ -9803,7 +9810,7 @@ msgstr "Fünf Zugehörigkeiten"
 msgid "SixAffiliations"
 msgstr "Sechs Zugehörigkeiten"
 
-#: lib/layouts/apax.inc:227 lib/layouts/beamer.layout:1655
+#: lib/layouts/apax.inc:227 lib/layouts/beamer.layout:1657
 #: lib/layouts/elsart.layout:470 lib/layouts/fixme.module:108
 #: lib/layouts/iopart.layout:106 lib/layouts/llncs.layout:394
 #: lib/layouts/powerdot.layout:215 lib/layouts/slides.layout:170
@@ -9883,8 +9890,8 @@ msgstr "Beamer-Aufsatz (Standardklasse)"
 msgid "Article (Standard Class)"
 msgstr "Article (Standardklasse)"
 
-#: lib/layouts/article.layout:21 lib/layouts/beamer.layout:246
-#: lib/layouts/beamer.layout:275 lib/layouts/memoir.layout:66
+#: lib/layouts/article.layout:21 lib/layouts/beamer.layout:248
+#: lib/layouts/beamer.layout:277 lib/layouts/memoir.layout:66
 #: lib/layouts/mwart.layout:25 lib/layouts/paper.layout:55
 #: lib/layouts/scrartcl.layout:22 lib/layouts/scrclass.inc:77
 #: lib/layouts/stdcounters.inc:9 lib/layouts/stdsections.inc:12
@@ -9910,61 +9917,61 @@ msgstr "Beamer"
 msgid "Presentations"
 msgstr "Präsentationen"
 
-#: lib/layouts/beamer.layout:88 lib/layouts/beamer.layout:137
-#: lib/layouts/beamer.layout:192 lib/layouts/beamer.layout:503
-#: lib/layouts/beamer.layout:571 lib/layouts/beamer.layout:629
-#: lib/layouts/beamer.layout:659 lib/layouts/beamer.layout:875
-#: lib/layouts/beamer.layout:904 lib/layouts/beamer.layout:1227
-#: lib/layouts/beamer.layout:1252 lib/layouts/beamer.layout:1279
-#: lib/layouts/beamer.layout:1445
+#: lib/layouts/beamer.layout:90 lib/layouts/beamer.layout:139
+#: lib/layouts/beamer.layout:194 lib/layouts/beamer.layout:505
+#: lib/layouts/beamer.layout:573 lib/layouts/beamer.layout:631
+#: lib/layouts/beamer.layout:661 lib/layouts/beamer.layout:877
+#: lib/layouts/beamer.layout:906 lib/layouts/beamer.layout:1229
+#: lib/layouts/beamer.layout:1254 lib/layouts/beamer.layout:1281
+#: lib/layouts/beamer.layout:1447
 msgid "Overlay Specifications|v"
 msgstr "Overlay-Spezifikation"
 
-#: lib/layouts/beamer.layout:89 lib/layouts/beamer.layout:138
-#: lib/layouts/beamer.layout:193
+#: lib/layouts/beamer.layout:91 lib/layouts/beamer.layout:140
+#: lib/layouts/beamer.layout:195
 msgid "Overlay specifications for this list"
 msgstr "Overlay-Spezifikation für diese Liste"
 
-#: lib/layouts/beamer.layout:99 lib/layouts/beamer.layout:152
-#: lib/layouts/beamer.layout:213 lib/layouts/beamer.layout:798
+#: lib/layouts/beamer.layout:101 lib/layouts/beamer.layout:154
+#: lib/layouts/beamer.layout:215 lib/layouts/beamer.layout:800
 #: lib/layouts/powerdot.layout:303 lib/layouts/powerdot.layout:368
 msgid "Item Overlay Specifications"
 msgstr "Eintrags-Overlay-Spezifikation"
 
-#: lib/layouts/beamer.layout:100 lib/layouts/beamer.layout:153
-#: lib/layouts/beamer.layout:214 lib/layouts/beamer.layout:628
-#: lib/layouts/beamer.layout:658 lib/layouts/beamer.layout:799
-#: lib/layouts/beamer.layout:874 lib/layouts/beamer.layout:903
-#: lib/layouts/beamer.layout:1226 lib/layouts/beamer.layout:1251
-#: lib/layouts/beamer.layout:1278 lib/layouts/beamer.layout:1444
+#: lib/layouts/beamer.layout:102 lib/layouts/beamer.layout:155
+#: lib/layouts/beamer.layout:216 lib/layouts/beamer.layout:630
+#: lib/layouts/beamer.layout:660 lib/layouts/beamer.layout:801
+#: lib/layouts/beamer.layout:876 lib/layouts/beamer.layout:905
+#: lib/layouts/beamer.layout:1228 lib/layouts/beamer.layout:1253
+#: lib/layouts/beamer.layout:1280 lib/layouts/beamer.layout:1446
 #: lib/layouts/powerdot.layout:304 lib/layouts/powerdot.layout:369
 msgid "On Slide"
 msgstr "Auf Folie"
 
-#: lib/layouts/beamer.layout:101 lib/layouts/beamer.layout:154
-#: lib/layouts/beamer.layout:215 lib/layouts/beamer.layout:800
+#: lib/layouts/beamer.layout:103 lib/layouts/beamer.layout:156
+#: lib/layouts/beamer.layout:217 lib/layouts/beamer.layout:802
 #: lib/layouts/powerdot.layout:305 lib/layouts/powerdot.layout:370
 msgid "Overlay specifications for this item"
 msgstr "Overlay-Spezifikation für diesen Eintrag"
 
-#: lib/layouts/beamer.layout:144
+#: lib/layouts/beamer.layout:146
 msgid "Mini Template"
 msgstr "Mini-Vorlage"
 
-#: lib/layouts/beamer.layout:145
+#: lib/layouts/beamer.layout:147
 msgid "Mini template for this list (see beamer manual for details)"
 msgstr "Mini-Vorlage für diese Liste (siehe Beamer-Anleitung)"
 
-#: lib/layouts/beamer.layout:199
+#: lib/layouts/beamer.layout:201
 msgid "Longest label|s"
 msgstr "Längste Marke"
 
-#: lib/layouts/beamer.layout:200
+#: lib/layouts/beamer.layout:202
 msgid "The longest label in this list (to determine the indendation width)"
 msgstr "Die Längste Marke in dieser Liste (gibt die Einzugsbreite vor)"
 
-#: lib/layouts/beamer.layout:247 lib/layouts/beamer.layout:289
-#: lib/layouts/beamer.layout:351 lib/layouts/beamer.layout:413
+#: lib/layouts/beamer.layout:249 lib/layouts/beamer.layout:291
+#: lib/layouts/beamer.layout:353 lib/layouts/beamer.layout:415
 #: lib/layouts/egs.layout:34 lib/layouts/egs.layout:57
 #: lib/layouts/europasscv.layout:265 lib/layouts/europecv.layout:194
 #: lib/layouts/foils.layout:46 lib/layouts/ltugboat.layout:49
@@ -9980,473 +9987,473 @@ msgstr "Die Längste Marke in dieser Liste (gibt die Einzugsbreite vor)"
 msgid "Sectioning"
 msgstr "Gliederung"
 
-#: lib/layouts/beamer.layout:252 lib/layouts/beamer.layout:307
-#: lib/layouts/beamer.layout:340 lib/layouts/beamer.layout:369
-#: lib/layouts/beamer.layout:402 lib/layouts/beamer.layout:431
-#: lib/layouts/beamer.layout:464
+#: lib/layouts/beamer.layout:254 lib/layouts/beamer.layout:309
+#: lib/layouts/beamer.layout:342 lib/layouts/beamer.layout:371
+#: lib/layouts/beamer.layout:404 lib/layouts/beamer.layout:433
+#: lib/layouts/beamer.layout:466
 msgid "Mode"
 msgstr "Modus"
 
-#: lib/layouts/beamer.layout:253 lib/layouts/beamer.layout:308
-#: lib/layouts/beamer.layout:341 lib/layouts/beamer.layout:370
-#: lib/layouts/beamer.layout:403 lib/layouts/beamer.layout:432
-#: lib/layouts/beamer.layout:465
+#: lib/layouts/beamer.layout:255 lib/layouts/beamer.layout:310
+#: lib/layouts/beamer.layout:343 lib/layouts/beamer.layout:372
+#: lib/layouts/beamer.layout:405 lib/layouts/beamer.layout:434
+#: lib/layouts/beamer.layout:467
 msgid "Mode Specification|S"
 msgstr "Modus-Spezifikation|z"
 
-#: lib/layouts/beamer.layout:254 lib/layouts/beamer.layout:309
-#: lib/layouts/beamer.layout:342 lib/layouts/beamer.layout:371
-#: lib/layouts/beamer.layout:404 lib/layouts/beamer.layout:433
-#: lib/layouts/beamer.layout:466
+#: lib/layouts/beamer.layout:256 lib/layouts/beamer.layout:311
+#: lib/layouts/beamer.layout:344 lib/layouts/beamer.layout:373
+#: lib/layouts/beamer.layout:406 lib/layouts/beamer.layout:435
+#: lib/layouts/beamer.layout:468
 msgid "Specify in which mode (article, presentation etc.) this header appears"
 msgstr ""
 "Geben Sie an, in welchem Modus (Artikel, Präsentation usw.) diese "
 "Überschrift erscheinen soll"
 
-#: lib/layouts/beamer.layout:261 lib/layouts/memoir.layout:69
+#: lib/layouts/beamer.layout:263 lib/layouts/memoir.layout:69
 #: lib/layouts/scrclass.inc:143 lib/layouts/stdsections.inc:33
 #: lib/layouts/tufte-handout.layout:41
 msgid "The part as it appears in the table of contents/running headers"
 msgstr "Der Teil, wie er im Inhaltsverzeichnis/Kolumnentitel erscheint"
 
-#: lib/layouts/beamer.layout:304
+#: lib/layouts/beamer.layout:306
 msgid "Section \\arabic{section}"
 msgstr "Abschnitt \\arabic{section}"
 
-#: lib/layouts/beamer.layout:316 lib/layouts/scrclass.inc:169
+#: lib/layouts/beamer.layout:318 lib/layouts/scrclass.inc:169
 #: lib/layouts/simplecv.layout:53 lib/layouts/stdsections.inc:118
 #: lib/layouts/tufte-book.layout:130
 msgid "The section as it appears in the table of contents/running headers"
 msgstr ""
 "Der Abschnittstitel, wie er im Inhaltsverzeichnis/Kolumnentitel erscheint"
 
-#: lib/layouts/beamer.layout:328 lib/layouts/numarticle.inc:11
+#: lib/layouts/beamer.layout:330 lib/layouts/numarticle.inc:11
 #: lib/layouts/powerdot.layout:254
 msgid "\\Alph{section}"
 msgstr "\\Alph{section}"
 
-#: lib/layouts/beamer.layout:366
+#: lib/layouts/beamer.layout:368
 msgid "Subsection \\arabic{section}.\\arabic{subsection}"
 msgstr "Unterabschnitt \\arabic{section}.\\arabic{subsection}"
 
-#: lib/layouts/beamer.layout:378
+#: lib/layouts/beamer.layout:380
 msgid "The subsection as it appears in the table of contents/running headers"
 msgstr ""
 "Der Unterabschnittstitel, wie er im Inhaltsverzeichnis/Kolumnentitel "
 "erscheint"
 
-#: lib/layouts/beamer.layout:390
+#: lib/layouts/beamer.layout:392
 msgid "\\arabic{section}.\\arabic{subsection}"
 msgstr "\\arabic{section}.\\arabic{subsection}"
 
-#: lib/layouts/beamer.layout:428
+#: lib/layouts/beamer.layout:430
 msgid ""
 "Subsubsection \\arabic{section}.\\arabic{subsection}.\\arabic{subsubsection}"
 msgstr ""
 "Unterunterabschnitt \\arabic{section}.\\arabic{subsection}."
 "\\arabic{subsubsection}"
 
-#: lib/layouts/beamer.layout:440
+#: lib/layouts/beamer.layout:442
 msgid ""
 "The subsubsection as it appears in the table of contents/running headers"
 msgstr ""
 "Der Unterunterabschnittstitel, wie er im Inhaltsverzeichnis/Kolumnentitel "
 "erscheint"
 
-#: lib/layouts/beamer.layout:452
+#: lib/layouts/beamer.layout:454
 msgid "\\arabic{section}.\\arabic{subsection}.\\arabic{subsubsection}"
 msgstr "\\arabic{section}.\\arabic{subsection}.\\arabic{subsubsection}"
 
-#: lib/layouts/beamer.layout:479 lib/layouts/beamer.layout:485
+#: lib/layouts/beamer.layout:481 lib/layouts/beamer.layout:487
 msgid "Frame"
 msgstr "Rahmen"
 
-#: lib/layouts/beamer.layout:480 lib/layouts/beamer.layout:565
-#: lib/layouts/beamer.layout:612 lib/layouts/beamer.layout:643
+#: lib/layouts/beamer.layout:482 lib/layouts/beamer.layout:567
+#: lib/layouts/beamer.layout:614 lib/layouts/beamer.layout:645
 msgid "Frames"
 msgstr "Rahmen"
 
-#: lib/layouts/beamer.layout:502 lib/layouts/beamer.layout:937
-#: lib/layouts/beamer.layout:1314 lib/layouts/beamer.layout:1471
-#: lib/layouts/beamer.layout:1491 lib/layouts/beamer.layout:1511
-#: lib/layouts/beamer.layout:1531 lib/layouts/beamer.layout:1551
-#: lib/layouts/beamer.layout:1572 lib/layouts/beamer.layout:1593
-#: lib/layouts/beamer.layout:1614 lib/layouts/beamer.layout:1635
-#: lib/layouts/beamer.layout:1663 lib/layouts/pdfform.module:124
+#: lib/layouts/beamer.layout:504 lib/layouts/beamer.layout:939
+#: lib/layouts/beamer.layout:1316 lib/layouts/beamer.layout:1473
+#: lib/layouts/beamer.layout:1493 lib/layouts/beamer.layout:1513
+#: lib/layouts/beamer.layout:1533 lib/layouts/beamer.layout:1553
+#: lib/layouts/beamer.layout:1574 lib/layouts/beamer.layout:1595
+#: lib/layouts/beamer.layout:1616 lib/layouts/beamer.layout:1637
+#: lib/layouts/beamer.layout:1665 lib/layouts/pdfform.module:124
 msgid "Action"
 msgstr "Aktion"
 
-#: lib/layouts/beamer.layout:504 lib/layouts/beamer.layout:572
+#: lib/layouts/beamer.layout:506 lib/layouts/beamer.layout:574
 msgid "Overlay specifications for this frame"
 msgstr "Overlay-Spezifikation für diesen Rahmen"
 
-#: lib/layouts/beamer.layout:510 lib/layouts/beamer.layout:578
+#: lib/layouts/beamer.layout:512 lib/layouts/beamer.layout:580
 msgid "Default Overlay Specifications"
 msgstr "Standard-Overlay-Spezifikation"
 
-#: lib/layouts/beamer.layout:511 lib/layouts/beamer.layout:579
+#: lib/layouts/beamer.layout:513 lib/layouts/beamer.layout:581
 msgid "Default overlay specifications within this frame"
 msgstr "Standard-Overlay-Spezifikation für diesen Rahmen"
 
-#: lib/layouts/beamer.layout:517 lib/layouts/beamer.layout:546
-#: lib/layouts/beamer.layout:557 lib/layouts/beamer.layout:585
+#: lib/layouts/beamer.layout:519 lib/layouts/beamer.layout:548
+#: lib/layouts/beamer.layout:559 lib/layouts/beamer.layout:587
 msgid "Frame Options"
 msgstr "Rahmen-Optionen"
 
-#: lib/layouts/beamer.layout:519 lib/layouts/beamer.layout:548
-#: lib/layouts/beamer.layout:559 lib/layouts/beamer.layout:587
+#: lib/layouts/beamer.layout:521 lib/layouts/beamer.layout:550
+#: lib/layouts/beamer.layout:561 lib/layouts/beamer.layout:589
 msgid "Frame options (see beamer manual)"
 msgstr "Rahmen-Optionen (siehe Beamer-Anleitung)"
 
-#: lib/layouts/beamer.layout:522
+#: lib/layouts/beamer.layout:524
 msgid "Frame Title"
 msgstr "Rahmentitel"
 
-#: lib/layouts/beamer.layout:523
+#: lib/layouts/beamer.layout:525
 msgid "Enter the frame title here"
 msgstr "Geben Sie hier den Rahmentitel ein"
 
-#: lib/layouts/beamer.layout:542
+#: lib/layouts/beamer.layout:544
 msgid "PlainFrame"
 msgstr "Schlichter Rahmen"
 
-#: lib/layouts/beamer.layout:544
+#: lib/layouts/beamer.layout:546
 msgid "Frame (plain)"
 msgstr "Rahmen (schlicht)"
 
-#: lib/layouts/beamer.layout:553
+#: lib/layouts/beamer.layout:555
 msgid "FragileFrame"
 msgstr "Fragiler Rahmen"
 
-#: lib/layouts/beamer.layout:555
+#: lib/layouts/beamer.layout:557
 msgid "Frame (fragile)"
 msgstr "Rahmen (fragil)"
 
-#: lib/layouts/beamer.layout:564
+#: lib/layouts/beamer.layout:566
 msgid "AgainFrame"
 msgstr "RahmenNochmal"
 
-#: lib/layouts/beamer.layout:570 lib/layouts/powerdot.layout:135
+#: lib/layouts/beamer.layout:572 lib/layouts/powerdot.layout:135
 #: lib/layouts/seminar.layout:111 lib/layouts/slides.layout:92
 #: src/frontends/qt/GuiDocument.cpp:136
 msgid "Slide"
 msgstr "Folie"
 
-#: lib/layouts/beamer.layout:599
+#: lib/layouts/beamer.layout:601
 msgid "Repeat frame with label"
 msgstr "Rahmen mit folgender Marke wiederholen:"
 
-#: lib/layouts/beamer.layout:611
+#: lib/layouts/beamer.layout:613
 msgid "FrameTitle"
 msgstr "Rahmentitel"
 
-#: lib/layouts/beamer.layout:630 lib/layouts/beamer.layout:660
-#: lib/layouts/beamer.layout:876 lib/layouts/beamer.layout:905
-#: lib/layouts/beamer.layout:939 lib/layouts/beamer.layout:1228
-#: lib/layouts/beamer.layout:1253 lib/layouts/beamer.layout:1280
-#: lib/layouts/beamer.layout:1316 lib/layouts/beamer.layout:1446
-#: lib/layouts/beamer.layout:1473 lib/layouts/beamer.layout:1493
-#: lib/layouts/beamer.layout:1513 lib/layouts/beamer.layout:1533
-#: lib/layouts/beamer.layout:1553 lib/layouts/beamer.layout:1574
-#: lib/layouts/beamer.layout:1595 lib/layouts/beamer.layout:1616
-#: lib/layouts/beamer.layout:1637 lib/layouts/beamer.layout:1665
+#: lib/layouts/beamer.layout:632 lib/layouts/beamer.layout:662
+#: lib/layouts/beamer.layout:878 lib/layouts/beamer.layout:907
+#: lib/layouts/beamer.layout:941 lib/layouts/beamer.layout:1230
+#: lib/layouts/beamer.layout:1255 lib/layouts/beamer.layout:1282
+#: lib/layouts/beamer.layout:1318 lib/layouts/beamer.layout:1448
+#: lib/layouts/beamer.layout:1475 lib/layouts/beamer.layout:1495
+#: lib/layouts/beamer.layout:1515 lib/layouts/beamer.layout:1535
+#: lib/layouts/beamer.layout:1555 lib/layouts/beamer.layout:1576
+#: lib/layouts/beamer.layout:1597 lib/layouts/beamer.layout:1618
+#: lib/layouts/beamer.layout:1639 lib/layouts/beamer.layout:1667
 msgid "Specify the overlay settings (see beamer manual)"
 msgstr ""
 "Legen Sie hier die Overlay-Spezifikationen fest (siehe Beamer-Anleitung)"
 
-#: lib/layouts/beamer.layout:636
+#: lib/layouts/beamer.layout:638
 msgid "Short Frame Title|S"
 msgstr "Rahmentitel (Kurzform)|z"
 
-#: lib/layouts/beamer.layout:637
+#: lib/layouts/beamer.layout:639
 msgid "A short form of the frame title used in some themes"
 msgstr "Eine Kurzform des Rahmentitels, die in manchen Themen verwendet wird"
 
-#: lib/layouts/beamer.layout:642
+#: lib/layouts/beamer.layout:644
 msgid "FrameSubtitle"
 msgstr "RahmenUntertitel"
 
-#: lib/layouts/beamer.layout:672 lib/layouts/moderncv.layout:395
+#: lib/layouts/beamer.layout:674 lib/layouts/moderncv.layout:395
 #: lib/layouts/moderncv.layout:412
 msgid "Column"
 msgstr "Spalte"
 
-#: lib/layouts/beamer.layout:673 lib/layouts/beamer.layout:698
-#: lib/layouts/beamer.layout:699 lib/layouts/beamer.layout:709
+#: lib/layouts/beamer.layout:675 lib/layouts/beamer.layout:700
+#: lib/layouts/beamer.layout:701 lib/layouts/beamer.layout:711
 #: lib/layouts/moderncv.layout:373 lib/layouts/multicol.module:15
 msgid "Columns"
 msgstr "Spalten"
 
-#: lib/layouts/beamer.layout:685
+#: lib/layouts/beamer.layout:687
 msgid "Start column (increase depth!), width:"
 msgstr "Starte Spalte (erhöhe Tiefe!), Breite:"
 
-#: lib/layouts/beamer.layout:688 lib/layouts/powerdot.layout:504
+#: lib/layouts/beamer.layout:690 lib/layouts/powerdot.layout:504
 msgid "Column Options"
 msgstr "Spaltenoptionen"
 
-#: lib/layouts/beamer.layout:690
+#: lib/layouts/beamer.layout:692
 msgid "Column options (see beamer manual)"
 msgstr "Spaltenoptionen (siehe Beamer-Anleitung)"
 
-#: lib/layouts/beamer.layout:711
+#: lib/layouts/beamer.layout:713
 msgid "Column Placement Options"
 msgstr "Spalten-Platzierungsoptionen"
 
-#: lib/layouts/beamer.layout:712
+#: lib/layouts/beamer.layout:714
 msgid "Column placement options (t, T, c, b)"
 msgstr "Spalten-Platzierungsoptionen (t, T, c, b)"
 
-#: lib/layouts/beamer.layout:729
+#: lib/layouts/beamer.layout:731
 msgid "ColumnsCenterAligned"
 msgstr "Spalten mittig ausgerichtet"
 
-#: lib/layouts/beamer.layout:732
+#: lib/layouts/beamer.layout:734
 msgid "Columns (center aligned)"
 msgstr "Spalten (mittig ausgerichtet)"
 
-#: lib/layouts/beamer.layout:736
+#: lib/layouts/beamer.layout:738
 msgid "ColumnsTopAligned"
 msgstr "Spalten oben ausgerichtet"
 
-#: lib/layouts/beamer.layout:739
+#: lib/layouts/beamer.layout:741
 msgid "Columns (top aligned)"
 msgstr "Spalten (oben ausgerichtet)"
 
-#: lib/layouts/beamer.layout:748 lib/layouts/powerdot.layout:518
+#: lib/layouts/beamer.layout:750 lib/layouts/powerdot.layout:518
 msgid "Pause"
 msgstr "Pause"
 
-#: lib/layouts/beamer.layout:749 lib/layouts/beamer.layout:777
-#: lib/layouts/beamer.layout:823 lib/layouts/beamer.layout:855
-#: lib/layouts/beamer.layout:884 lib/layouts/powerdot.layout:519
+#: lib/layouts/beamer.layout:751 lib/layouts/beamer.layout:779
+#: lib/layouts/beamer.layout:825 lib/layouts/beamer.layout:857
+#: lib/layouts/beamer.layout:886 lib/layouts/powerdot.layout:519
 msgid "Overlays"
 msgstr "Overlays"
 
-#: lib/layouts/beamer.layout:755 lib/layouts/powerdot.layout:525
+#: lib/layouts/beamer.layout:757 lib/layouts/powerdot.layout:525
 msgid "Pause number"
 msgstr "Pausennummer"
 
-#: lib/layouts/beamer.layout:756 lib/layouts/powerdot.layout:526
+#: lib/layouts/beamer.layout:758 lib/layouts/powerdot.layout:526
 msgid "Number of slide where the context below the pause gets visible"
 msgstr ""
 "Nummer der Folie, auf der der Text unterhalb dieser Pause sichtbar wird"
 
-#: lib/layouts/beamer.layout:767 lib/layouts/powerdot.layout:537
+#: lib/layouts/beamer.layout:769 lib/layouts/powerdot.layout:537
 msgid "_ _ _ _ _ _ _ _ _ _ _ _ _ _"
 msgstr "_ _ _ _ _ _ _ _ _ _ _ _ _ _"
 
-#: lib/layouts/beamer.layout:776 lib/layouts/beamer.layout:815
+#: lib/layouts/beamer.layout:778 lib/layouts/beamer.layout:817
 msgid "Overprint"
 msgstr "Überdruck"
 
-#: lib/layouts/beamer.layout:783
+#: lib/layouts/beamer.layout:785
 msgid "Overprint Area Width"
 msgstr "Überdruckbereichsbreite"
 
-#: lib/layouts/beamer.layout:784 lib/layouts/europasscv.layout:246
+#: lib/layouts/beamer.layout:786 lib/layouts/europasscv.layout:246
 #: lib/layouts/graphicboxes.module:49 lib/layouts/moderncv.layout:400
 #: lib/layouts/sectionbox.module:22 src/frontends/qt/GuiBox.cpp:71
 msgid "Width"
 msgstr "Breite"
 
-#: lib/layouts/beamer.layout:785
+#: lib/layouts/beamer.layout:787
 msgid "The width of the overprint area (default: text width)"
 msgstr "Die Breite des Überdruckbereichs (Voreinstellung: Textbreite)"
 
-#: lib/layouts/beamer.layout:822
+#: lib/layouts/beamer.layout:824
 msgid "OverlayArea"
 msgstr "ÜberlagerungsBereich"
 
-#: lib/layouts/beamer.layout:832
+#: lib/layouts/beamer.layout:834
 msgid "Overlayarea"
 msgstr "Überlagerungsbereich"
 
-#: lib/layouts/beamer.layout:842
+#: lib/layouts/beamer.layout:844
 msgid "Overlay Area Width"
 msgstr "Überlagerungsbereichsbreite"
 
-#: lib/layouts/beamer.layout:843
+#: lib/layouts/beamer.layout:845
 msgid "The width of the overlay area"
 msgstr "Die Breite des Überlagerungsbereichs"
 
-#: lib/layouts/beamer.layout:847
+#: lib/layouts/beamer.layout:849
 msgid "Overlay Area Height"
 msgstr "Überlagerungsbereichshöhe"
 
-#: lib/layouts/beamer.layout:848 lib/layouts/graphicboxes.module:56
+#: lib/layouts/beamer.layout:850 lib/layouts/graphicboxes.module:56
 #: lib/layouts/moderncv.layout:288 src/frontends/qt/GuiBox.cpp:70
 msgid "Height"
 msgstr "Höhe"
 
-#: lib/layouts/beamer.layout:849
+#: lib/layouts/beamer.layout:851
 msgid "The height of the overlay area"
 msgstr "Die Höhe des Überlagerungsbereichs"
 
-#: lib/layouts/beamer.layout:854 lib/layouts/beamer.layout:1563
-#: lib/layouts/beamer.layout:1565 lib/layouts/powerdot.layout:660
+#: lib/layouts/beamer.layout:856 lib/layouts/beamer.layout:1565
+#: lib/layouts/beamer.layout:1567 lib/layouts/powerdot.layout:660
 msgid "Uncover"
 msgstr "Aufdecken"
 
-#: lib/layouts/beamer.layout:864
+#: lib/layouts/beamer.layout:866
 msgid "Uncovered on slides"
 msgstr "Aufgedeckt auf Folien"
 
-#: lib/layouts/beamer.layout:883 lib/layouts/beamer.layout:1542
-#: lib/layouts/beamer.layout:1544 lib/layouts/powerdot.layout:666
+#: lib/layouts/beamer.layout:885 lib/layouts/beamer.layout:1544
+#: lib/layouts/beamer.layout:1546 lib/layouts/powerdot.layout:666
 msgid "Only"
 msgstr "Nur"
 
-#: lib/layouts/beamer.layout:893
+#: lib/layouts/beamer.layout:895
 msgid "Only on slides"
 msgstr "Nur auf Folien"
 
-#: lib/layouts/beamer.layout:917
+#: lib/layouts/beamer.layout:919
 msgid "Block"
 msgstr "Block"
 
-#: lib/layouts/beamer.layout:918
+#: lib/layouts/beamer.layout:920
 msgid "Blocks"
 msgstr "Blöcke"
 
-#: lib/layouts/beamer.layout:927
+#: lib/layouts/beamer.layout:929
 msgid "Block:"
 msgstr "Block:"
 
-#: lib/layouts/beamer.layout:938
+#: lib/layouts/beamer.layout:940
 msgid "Action Specification|S"
 msgstr "Aktionsspezifikation"
 
-#: lib/layouts/beamer.layout:945
+#: lib/layouts/beamer.layout:947
 msgid "Block Title"
 msgstr "Blocktitel"
 
-#: lib/layouts/beamer.layout:946
+#: lib/layouts/beamer.layout:948
 msgid "Enter the block title here"
 msgstr "Geben Sie hier den Blocktitel ein"
 
-#: lib/layouts/beamer.layout:961
+#: lib/layouts/beamer.layout:963
 msgid "ExampleBlock"
 msgstr "BeispielBlock"
 
-#: lib/layouts/beamer.layout:964
+#: lib/layouts/beamer.layout:966
 msgid "Example Block:"
 msgstr "Beispiel-Block:"
 
-#: lib/layouts/beamer.layout:970
+#: lib/layouts/beamer.layout:972
 msgid "AlertBlock"
 msgstr "AlarmBlock"
 
-#: lib/layouts/beamer.layout:973
+#: lib/layouts/beamer.layout:975
 msgid "Alert Block:"
 msgstr "Alarm-Block:"
 
-#: lib/layouts/beamer.layout:985 lib/layouts/beamer.layout:1022
-#: lib/layouts/beamer.layout:1049 lib/layouts/beamer.layout:1077
-#: lib/layouts/beamer.layout:1121 lib/layouts/beamer.layout:1144
+#: lib/layouts/beamer.layout:987 lib/layouts/beamer.layout:1024
+#: lib/layouts/beamer.layout:1051 lib/layouts/beamer.layout:1079
+#: lib/layouts/beamer.layout:1123 lib/layouts/beamer.layout:1146
 msgid "Titling"
 msgstr "Titelei"
 
-#: lib/layouts/beamer.layout:999
+#: lib/layouts/beamer.layout:1001
 msgid "Short title which appears in the sidebar/header"
 msgstr "Kurztitel, der in der Seitenleiste/Kopfzeile erscheint"
 
-#: lib/layouts/beamer.layout:1013
+#: lib/layouts/beamer.layout:1015
 msgid "Title (Plain Frame)"
 msgstr "Titel (schlichter Rahmen)"
 
-#: lib/layouts/beamer.layout:1035
+#: lib/layouts/beamer.layout:1037
 msgid "Short Subtitle|S"
 msgstr "Untertitel (Kurzform)|z"
 
-#: lib/layouts/beamer.layout:1036
+#: lib/layouts/beamer.layout:1038
 msgid "Short subtitle which appears in the sidebar/header"
 msgstr "Kurzform des Untertitels, die in der Seitenleiste/Kopfzeile erscheint"
 
-#: lib/layouts/beamer.layout:1062
+#: lib/layouts/beamer.layout:1064
 msgid "Short author which appears in the sidebar/header"
 msgstr "Kurzform des Autors, die in der Seitenleiste/Kopfzeile erscheint"
 
-#: lib/layouts/beamer.layout:1089
+#: lib/layouts/beamer.layout:1091
 msgid "Short Institute|S"
 msgstr "Institut (Kurzform)|z"
 
-#: lib/layouts/beamer.layout:1090
+#: lib/layouts/beamer.layout:1092
 msgid "Short institute which appears in the sidebar/header"
 msgstr "Kurzform des Instituts, die in der Seitenleiste/Kopfzeile erscheint"
 
-#: lib/layouts/beamer.layout:1099
+#: lib/layouts/beamer.layout:1101
 msgid "InstituteMark"
 msgstr "Institutsfußnotenmarke"
 
-#: lib/layouts/beamer.layout:1133
+#: lib/layouts/beamer.layout:1135
 msgid "Short Date|S"
 msgstr "Datum (Kurzform)|z"
 
-#: lib/layouts/beamer.layout:1134
+#: lib/layouts/beamer.layout:1136
 msgid "Short date which appears in the sidebar/header"
 msgstr "Kurzform des Datums, die in der Seitenleiste/Kopfzeile erscheint"
 
-#: lib/layouts/beamer.layout:1143 lib/layouts/beamerposter.layout:46
+#: lib/layouts/beamer.layout:1145 lib/layouts/beamerposter.layout:46
 msgid "TitleGraphic"
 msgstr "Titelgrafik"
 
-#: lib/layouts/beamer.layout:1208 lib/layouts/egs.layout:103
+#: lib/layouts/beamer.layout:1210 lib/layouts/egs.layout:103
 #: lib/layouts/powerdot.layout:426 lib/layouts/stdlayouts.inc:12
 msgid "Quotation"
 msgstr "Zitat (lang)"
 
-#: lib/layouts/beamer.layout:1235 lib/layouts/egs.layout:122
+#: lib/layouts/beamer.layout:1237 lib/layouts/egs.layout:122
 #: lib/layouts/moderncv.layout:305 lib/layouts/powerdot.layout:448
 #: lib/layouts/stdlayouts.inc:37
 msgid "Quote"
 msgstr "Zitat (kurz)"
 
-#: lib/layouts/beamer.layout:1260 lib/layouts/egs.layout:277
+#: lib/layouts/beamer.layout:1262 lib/layouts/egs.layout:277
 #: lib/layouts/powerdot.layout:468 lib/layouts/stdlayouts.inc:60
 msgid "Verse"
 msgstr "Gedicht"
 
-#: lib/layouts/beamer.layout:1302 lib/layouts/foils.layout:340
+#: lib/layouts/beamer.layout:1304 lib/layouts/foils.layout:340
 #: lib/layouts/theorems-starred.inc:78
 msgid "Corollary."
 msgstr "Korollar."
 
-#: lib/layouts/beamer.layout:1315 lib/layouts/beamer.layout:1472
-#: lib/layouts/beamer.layout:1492 lib/layouts/beamer.layout:1512
-#: lib/layouts/beamer.layout:1532 lib/layouts/beamer.layout:1552
-#: lib/layouts/beamer.layout:1573 lib/layouts/beamer.layout:1594
-#: lib/layouts/beamer.layout:1615 lib/layouts/beamer.layout:1636
-#: lib/layouts/beamer.layout:1664
+#: lib/layouts/beamer.layout:1317 lib/layouts/beamer.layout:1474
+#: lib/layouts/beamer.layout:1494 lib/layouts/beamer.layout:1514
+#: lib/layouts/beamer.layout:1534 lib/layouts/beamer.layout:1554
+#: lib/layouts/beamer.layout:1575 lib/layouts/beamer.layout:1596
+#: lib/layouts/beamer.layout:1617 lib/layouts/beamer.layout:1638
+#: lib/layouts/beamer.layout:1666
 msgid "Action Specifications|S"
 msgstr "Aktionsspezifikation"
 
-#: lib/layouts/beamer.layout:1333 lib/layouts/foils.layout:354
+#: lib/layouts/beamer.layout:1335 lib/layouts/foils.layout:354
 #: lib/layouts/theorems-starred.inc:174
 msgid "Definition."
 msgstr "Definition."
 
-#: lib/layouts/beamer.layout:1336
+#: lib/layouts/beamer.layout:1338
 msgid "Definitions"
 msgstr "Definitionen"
 
-#: lib/layouts/beamer.layout:1339
+#: lib/layouts/beamer.layout:1341
 msgid "Definitions."
 msgstr "Definitionen."
 
-#: lib/layouts/beamer.layout:1345 lib/layouts/theorems-starred.inc:200
+#: lib/layouts/beamer.layout:1347 lib/layouts/theorems-starred.inc:200
 msgid "Example."
 msgstr "Beispiel."
 
-#: lib/layouts/beamer.layout:1352
+#: lib/layouts/beamer.layout:1354
 msgid "Examples"
 msgstr "Beispiele"
 
-#: lib/layouts/beamer.layout:1355
+#: lib/layouts/beamer.layout:1357
 msgid "Examples."
 msgstr "Beispiele."
 
-#: lib/layouts/beamer.layout:1358 lib/layouts/theorems-ams-bytype.inc:160
+#: lib/layouts/beamer.layout:1360 lib/layouts/theorems-ams-bytype.inc:160
 #: lib/layouts/theorems-ams-bytype.inc:169
 #: lib/layouts/theorems-ams-bytype.inc:172
 #: lib/layouts/theorems-ams-chap-bytype.inc:222
@@ -10467,102 +10474,102 @@ msgstr "Beispiele."
 msgid "Fact"
 msgstr "Fakt"
 
-#: lib/layouts/beamer.layout:1361 lib/layouts/theorems-starred.inc:154
+#: lib/layouts/beamer.layout:1363 lib/layouts/theorems-starred.inc:154
 msgid "Fact."
 msgstr "Fakt."
 
-#: lib/layouts/beamer.layout:1367 lib/layouts/foils.layout:333
+#: lib/layouts/beamer.layout:1369 lib/layouts/foils.layout:333
 #: lib/layouts/theorems-starred.inc:97
 msgid "Lemma."
 msgstr "Lemma."
 
-#: lib/layouts/beamer.layout:1379 lib/layouts/foils.layout:326
+#: lib/layouts/beamer.layout:1381 lib/layouts/foils.layout:326
 #: lib/layouts/theorems-named.module:18 lib/layouts/theorems-starred.inc:32
 msgid "Theorem."
 msgstr "Theorem."
 
-#: lib/layouts/beamer.layout:1387 lib/layouts/egs.layout:730
+#: lib/layouts/beamer.layout:1389 lib/layouts/egs.layout:730
 #: lib/layouts/lyxmacros.inc:12
 msgid "LyX-Code"
 msgstr "LyX-Code"
 
-#: lib/layouts/beamer.layout:1424
+#: lib/layouts/beamer.layout:1426
 msgid "NoteItem"
 msgstr "NotizStichpunkt"
 
-#: lib/layouts/beamer.layout:1462 lib/layouts/beamer.layout:1464
+#: lib/layouts/beamer.layout:1464 lib/layouts/beamer.layout:1466
 #: src/FontInfo.cpp:48 src/frontends/qt/GuiCharacter.cpp:138
 msgid "Bold"
 msgstr "Fett"
 
-#: lib/layouts/beamer.layout:1482 lib/layouts/ectaart.layout:178
+#: lib/layouts/beamer.layout:1484 lib/layouts/ectaart.layout:178
 msgid "Emphasize"
 msgstr "Hervorhebung"
 
-#: lib/layouts/beamer.layout:1484
+#: lib/layouts/beamer.layout:1486
 msgid "Emph."
 msgstr "Hervg."
 
-#: lib/layouts/beamer.layout:1502 lib/layouts/beamer.layout:1504
+#: lib/layouts/beamer.layout:1504 lib/layouts/beamer.layout:1506
 msgid "Alert"
 msgstr "Alarm"
 
-#: lib/layouts/beamer.layout:1522 lib/layouts/beamer.layout:1524
+#: lib/layouts/beamer.layout:1524 lib/layouts/beamer.layout:1526
 #: lib/layouts/svcommon.inc:73 lib/layouts/svcommon.inc:100
 #: lib/layouts/svcommon.inc:107
 msgid "Structure"
 msgstr "Struktur"
 
-#: lib/layouts/beamer.layout:1584 lib/layouts/beamer.layout:1586
+#: lib/layouts/beamer.layout:1586 lib/layouts/beamer.layout:1588
 #: lib/layouts/powerdot.layout:644
 msgid "Visible"
 msgstr "Sichtbar"
 
-#: lib/layouts/beamer.layout:1605 lib/layouts/beamer.layout:1607
+#: lib/layouts/beamer.layout:1607 lib/layouts/beamer.layout:1609
 msgid "Invisible"
 msgstr "Unsichtbar"
 
-#: lib/layouts/beamer.layout:1626 lib/layouts/beamer.layout:1628
+#: lib/layouts/beamer.layout:1628 lib/layouts/beamer.layout:1630
 msgid "Alternative"
 msgstr "Alternativ"
 
-#: lib/layouts/beamer.layout:1644
+#: lib/layouts/beamer.layout:1646
 msgid "Default Text"
 msgstr "Standardtext"
 
-#: lib/layouts/beamer.layout:1645
+#: lib/layouts/beamer.layout:1647
 msgid "Enter the default text here"
 msgstr "Geben Sie hier den Standardtext ein"
 
-#: lib/layouts/beamer.layout:1653
+#: lib/layouts/beamer.layout:1655
 msgid "Beamer Note"
 msgstr "Beamer-Notiz"
 
-#: lib/layouts/beamer.layout:1671
+#: lib/layouts/beamer.layout:1673
 msgid "Note Options"
 msgstr "Notiz-Optionen"
 
-#: lib/layouts/beamer.layout:1672
+#: lib/layouts/beamer.layout:1674
 msgid "Specifiy note options (see beamer manual)"
 msgstr "Geben Sie hier Notiz-Optionen ein (siehe Beamer-Anleitung)"
 
-#: lib/layouts/beamer.layout:1677
+#: lib/layouts/beamer.layout:1679
 msgid "ArticleMode"
 msgstr "Artikelmodus"
 
-#: lib/layouts/beamer.layout:1683
+#: lib/layouts/beamer.layout:1685
 msgid "Article"
 msgstr "Aufsatz"
 
-#: lib/layouts/beamer.layout:1688
+#: lib/layouts/beamer.layout:1690
 msgid "PresentationMode"
 msgstr "Präsentationsmodus"
 
-#: lib/layouts/beamer.layout:1694
+#: lib/layouts/beamer.layout:1696
 msgid "Presentation"
 msgstr "Präsentation"
 
-#: lib/layouts/beamer.layout:1721 lib/layouts/powerdot.layout:570
+#: lib/layouts/beamer.layout:1723 lib/layouts/powerdot.layout:570
 #: lib/layouts/powerdot.layout:627 lib/layouts/sciposter.layout:104
 #: lib/layouts/stdfloats.inc:28
 msgid "Figure"
@@ -12703,8 +12710,8 @@ msgid "Fixme Error"
 msgstr "Fixme-Fehler"
 
 #: lib/layouts/fixme.module:83 src/frontends/qt/GuiCompare.cpp:199
-#: src/frontends/qt/GuiDocument.cpp:2857 src/frontends/qt/GuiDocument.cpp:2931
-#: src/frontends/qt/GuiDocument.cpp:4828
+#: src/frontends/qt/GuiDocument.cpp:2865 src/frontends/qt/GuiDocument.cpp:2939
+#: src/frontends/qt/GuiDocument.cpp:4846
 msgid "Error"
 msgstr "Fehler"
 
@@ -17028,11 +17035,11 @@ msgstr "Fußnote ##"
 msgid "\\fnsymbol{thanks}"
 msgstr "\\fnsymbol{thanks}"
 
-#: lib/layouts/stdfloatnames.inc:5 lib/layouts/stdinsets.inc:558
+#: lib/layouts/stdfloatnames.inc:5 lib/layouts/stdinsets.inc:559
 msgid "Tables"
 msgstr "Tabellen"
 
-#: lib/layouts/stdfloatnames.inc:6 lib/layouts/stdinsets.inc:559
+#: lib/layouts/stdfloatnames.inc:6 lib/layouts/stdinsets.inc:560
 msgid "Figures"
 msgstr "Abbildungen"
 
@@ -17060,7 +17067,7 @@ msgstr "Fußnoten"
 msgid "Notes"
 msgstr "Notizen"
 
-#: lib/layouts/stdinsets.inc:14 src/frontends/qt/GuiDocument.cpp:1788
+#: lib/layouts/stdinsets.inc:14 src/frontends/qt/GuiDocument.cpp:1792
 msgid "Branches"
 msgstr "Zweige"
 
@@ -17084,49 +17091,49 @@ msgstr "Fußnote"
 msgid "Greyedout"
 msgstr "Grauschrift"
 
-#: lib/layouts/stdinsets.inc:207 src/insets/InsetERT.cpp:189
-#: src/insets/InsetERT.cpp:190
+#: lib/layouts/stdinsets.inc:208 src/insets/InsetERT.cpp:542
+#: src/insets/InsetERT.cpp:543
 msgid "ERT"
 msgstr "ERT"
 
-#: lib/layouts/stdinsets.inc:293 lib/layouts/stdinsets.inc:299
+#: lib/layouts/stdinsets.inc:294 lib/layouts/stdinsets.inc:300
 msgid "Listings[[List of Listings]]"
 msgstr "Programmlistings"
 
-#: lib/layouts/stdinsets.inc:316 lib/layouts/stdinsets.inc:322
+#: lib/layouts/stdinsets.inc:317 lib/layouts/stdinsets.inc:323
 #: src/insets/InsetTOC.cpp:77
 msgid "List of Listings"
 msgstr "Verzeichnis der Programmlistings"
 
-#: lib/layouts/stdinsets.inc:350 src/frontends/qt/GuiDocument.cpp:1786
+#: lib/layouts/stdinsets.inc:351 src/frontends/qt/GuiDocument.cpp:1790
 msgid "Listings[[inset]]"
 msgstr "Programmlistings"
 
-#: lib/layouts/stdinsets.inc:417
+#: lib/layouts/stdinsets.inc:418
 msgid "Idx"
 msgstr "Stichwort"
 
-#: lib/layouts/stdinsets.inc:608
+#: lib/layouts/stdinsets.inc:609
 msgid "Argument"
 msgstr "Argument"
 
-#: lib/layouts/stdinsets.inc:714
+#: lib/layouts/stdinsets.inc:715
 msgid "unlabelled"
 msgstr "ohne Marke"
 
-#: lib/layouts/stdinsets.inc:721
+#: lib/layouts/stdinsets.inc:722
 msgid "Preview"
 msgstr "Vorschau"
 
-#: lib/layouts/stdinsets.inc:755 lib/layouts/stdinsets.inc:763
+#: lib/layouts/stdinsets.inc:756 lib/layouts/stdinsets.inc:764
 msgid "see equation[[nomencl]]"
 msgstr "siehe Gleichung"
 
-#: lib/layouts/stdinsets.inc:756 lib/layouts/stdinsets.inc:764
+#: lib/layouts/stdinsets.inc:757 lib/layouts/stdinsets.inc:765
 msgid "page[[nomencl]]"
 msgstr "Seite"
 
-#: lib/layouts/stdinsets.inc:757 lib/layouts/stdinsets.inc:765
+#: lib/layouts/stdinsets.inc:758 lib/layouts/stdinsets.inc:766
 msgid "Nomenclature[[output]]"
 msgstr "Nomenklatur"
 
@@ -19642,7 +19649,7 @@ msgid "Copy as Reference|R"
 msgstr "Als Querverweis kopieren|k"
 
 #: lib/ui/stdcontext.inc:61 lib/ui/stdcontext.inc:375 lib/ui/stdmenus.inc:108
-#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1568
+#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1571
 #: src/mathed/InsetMathNest.cpp:555
 msgid "Cut"
 msgstr "Ausschneiden"
@@ -19653,7 +19660,7 @@ msgid "Copy"
 msgstr "Kopieren"
 
 #: lib/ui/stdcontext.inc:63 lib/ui/stdcontext.inc:377 lib/ui/stdmenus.inc:110
-#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1512
+#: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1515
 #: src/frontends/qt/GuiToolbar.cpp:441 src/mathed/InsetMathGrid.cpp:1565
 #: src/mathed/InsetMathNest.cpp:533
 msgid "Paste"
@@ -21969,7 +21976,7 @@ msgid "Fractions"
 msgstr "Brüche"
 
 #: lib/ui/stdtoolbars.inc:219 lib/ui/stdtoolbars.inc:442
-#: src/frontends/qt/GuiDocument.cpp:1773
+#: src/frontends/qt/GuiDocument.cpp:1777
 msgid "Fonts"
 msgstr "Schriften"
 
@@ -21986,7 +21993,7 @@ msgid "Big operators"
 msgstr "Große Operatoren"
 
 #: lib/ui/stdtoolbars.inc:223 lib/ui/stdtoolbars.inc:690
-#: src/frontends/qt/GuiDocument.cpp:5165
+#: src/frontends/qt/GuiDocument.cpp:5183
 msgid "Miscellaneous"
 msgstr "Verschiedenes"
 
@@ -26846,7 +26853,7 @@ msgstr "MS-Word Office-Open XML"
 msgid "Table (CSV)"
 msgstr "Tabelle (CSV)"
 
-#: lib/configure.py:856 src/frontends/qt/GuiView.cpp:1630
+#: lib/configure.py:856 src/frontends/qt/GuiView.cpp:1655
 #: src/mathed/InsetMathMacroTemplate.cpp:538
 msgid "LyX"
 msgstr "LyX"
@@ -26939,11 +26946,11 @@ msgstr "gnuplot"
 msgid "gnuplot|Gnuplot"
 msgstr "gnuplot|Gnuplot"
 
-#: lib/configure.py:1346
+#: lib/configure.py:1350
 msgid "LyX Archive (zip)"
 msgstr "LyX-Archiv (zip)"
 
-#: lib/configure.py:1349
+#: lib/configure.py:1353
 msgid "LyX Archive (tar.gz)"
 msgstr "LyX-Archiv (tar.gz)"
 
@@ -27040,7 +27047,7 @@ msgstr "Noweb2LyX"
 msgid "Noweb Listerrors"
 msgstr "Noweb-Fehlerbericht"
 
-#: lib/examples/Articles:0 src/frontends/qt/GuiDocument.cpp:1771
+#: lib/examples/Articles:0 src/frontends/qt/GuiDocument.cpp:1775
 msgid "Modules"
 msgstr "Module"
 
@@ -27290,7 +27297,7 @@ msgstr ""
 "\\lyxdeleted im LaTeX-Vorspann neu."
 
 #: src/Buffer.cpp:1086 src/BufferParams.cpp:475 src/frontends/qt/GuiLog.cpp:293
-#: src/insets/InsetIndex.cpp:651
+#: src/insets/InsetIndex.cpp:674
 msgid "Index"
 msgstr "Stichwortverzeichnis"
 
@@ -27366,7 +27373,7 @@ msgstr ""
 "%1$s stammt von einer neueren LyX-Version, aber das lyx2lyx-Skript konnte "
 "das Dokument nicht konvertieren."
 
-#: src/Buffer.cpp:1445 src/Buffer.cpp:4720 src/Buffer.cpp:4829
+#: src/Buffer.cpp:1445 src/Buffer.cpp:4717 src/Buffer.cpp:4826
 msgid "File is read-only"
 msgstr "Datei ist schreibgeschützt"
 
@@ -27390,8 +27397,8 @@ msgid "Overwrite modified file?"
 msgstr "Modifizierte Datei überschreiben?"
 
 #: src/Buffer.cpp:1458 src/Exporter.cpp:50
-#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiView.cpp:2838
-#: src/frontends/qt/GuiView.cpp:3107 src/frontends/qt/GuiView.cpp:3210
+#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiView.cpp:2875
+#: src/frontends/qt/GuiView.cpp:3144 src/frontends/qt/GuiView.cpp:3247
 msgid "&Overwrite"
 msgstr "&Überschreiben"
 
@@ -27631,7 +27638,7 @@ msgstr "Zweig \"%1$s\" existiert bereits."
 msgid "Error viewing the output file."
 msgstr "Fehler bei der Ansicht der Ausgabedatei."
 
-#: src/Buffer.cpp:3370 src/frontends/qt/GuiView.cpp:2669
+#: src/Buffer.cpp:3370 src/frontends/qt/GuiView.cpp:2706
 #: src/frontends/qt/Validator.cpp:241 src/insets/ExternalSupport.cpp:394
 #: src/insets/InsetGraphics.cpp:692 src/insets/InsetInclude.cpp:606
 msgid "Invalid filename"
@@ -27672,57 +27679,57 @@ msgstr ""
 "Die Pfade zu Ihren BibTeX-Datenbanken enthalten Leerzeichen.\n"
 "BiBTeX wird die Datenbanken nicht finden."
 
-#: src/Buffer.cpp:4091
+#: src/Buffer.cpp:4088
 #, c-format
 msgid "Preview source code for paragraph %1$d"
 msgstr "Quellcode für Absatz %1$d vorschauen"
 
-#: src/Buffer.cpp:4096
+#: src/Buffer.cpp:4093
 #, c-format
 msgid "Preview source code from paragraph %1$s to %2$s"
 msgstr "Quellcode von Absatz %1$s bis %2$s vorschauen"
 
-#: src/Buffer.cpp:4151
+#: src/Buffer.cpp:4148
 msgid "Preview source code"
 msgstr "Quellcode vorschauen"
 
-#: src/Buffer.cpp:4153
+#: src/Buffer.cpp:4150
 msgid "Preview preamble"
 msgstr "Vorschau des Vorspanns"
 
-#: src/Buffer.cpp:4155
+#: src/Buffer.cpp:4152
 msgid "Preview body"
 msgstr "Vorschau des Haupttextes"
 
-#: src/Buffer.cpp:4171
+#: src/Buffer.cpp:4168
 msgid "Plain text does not have a preamble."
 msgstr "Einfacher Text hat keinen Vorspann."
 
-#: src/Buffer.cpp:4308
+#: src/Buffer.cpp:4305
 msgid "Autosaving current document..."
 msgstr "Automatisches Speichern des aktuellen Dokuments..."
 
-#: src/Buffer.cpp:4433
+#: src/Buffer.cpp:4430
 #, c-format
 msgid "No information for exporting the format %1$s."
 msgstr "Keine Informationen vorhanden, um das Format %1$s zu exportieren."
 
-#: src/Buffer.cpp:4437
+#: src/Buffer.cpp:4434
 #, c-format
 msgid "Hint: use non-TeX fonts or set input encoding  to '%1$s'"
 msgstr ""
 "Tipp: Verwenden Sie keine TeX-Schriften oder stellen Sie als Kodierung "
 "'%1$s' ein."
 
-#: src/Buffer.cpp:4439
+#: src/Buffer.cpp:4436
 msgid "Couldn't export file"
 msgstr "Die Datei konnte nicht exportiert werden"
 
-#: src/Buffer.cpp:4507 src/frontends/qt/GuiView.cpp:2811
+#: src/Buffer.cpp:4504 src/frontends/qt/GuiView.cpp:2848
 msgid "File name error"
 msgstr "Fehler im Dateinamen"
 
-#: src/Buffer.cpp:4508
+#: src/Buffer.cpp:4505
 #, c-format
 msgid ""
 "The directory path to the document\n"
@@ -27735,21 +27742,21 @@ msgstr ""
 "enthält Leerzeichen, aber Ihre TeX-Installation erlaubt dies nicht. Bitte "
 "speichern Sie Ihr Dokument in einem Verzeichnis ohne Leerzeichen."
 
-#: src/Buffer.cpp:4597 src/Buffer.cpp:4627 src/frontends/qt/GuiView.cpp:868
+#: src/Buffer.cpp:4594 src/Buffer.cpp:4624 src/frontends/qt/GuiView.cpp:872
 msgid "Document export cancelled."
 msgstr "Der Export des Dokuments wurde abgebrochen."
 
-#: src/Buffer.cpp:4630
+#: src/Buffer.cpp:4627
 #, c-format
 msgid "Document exported as %1$s to file `%2$s'"
 msgstr "Dokument wurde als %1$s in die Datei ,%2$s` exportiert."
 
-#: src/Buffer.cpp:4637
+#: src/Buffer.cpp:4634
 #, c-format
 msgid "Document exported as %1$s"
 msgstr "Dokument als %1$s exportiert"
 
-#: src/Buffer.cpp:4706
+#: src/Buffer.cpp:4703
 #, c-format
 msgid ""
 "An emergency save of the document %1$s exists.\n"
@@ -27760,23 +27767,23 @@ msgstr ""
 "\n"
 "Soll die Notspeicherung wiederhergestellt werden?"
 
-#: src/Buffer.cpp:4709
+#: src/Buffer.cpp:4706
 msgid "Load emergency save?"
 msgstr "Notspeicherung laden?"
 
-#: src/Buffer.cpp:4710
+#: src/Buffer.cpp:4707
 msgid "&Recover"
 msgstr "&Wiederherstellen"
 
-#: src/Buffer.cpp:4710
+#: src/Buffer.cpp:4707
 msgid "&Load Original"
 msgstr "&Original laden"
 
-#: src/Buffer.cpp:4710
+#: src/Buffer.cpp:4707
 msgid "&Only show difference"
 msgstr "Nur &Unterschiede zeigen"
 
-#: src/Buffer.cpp:4721
+#: src/Buffer.cpp:4718
 #, c-format
 msgid ""
 "An emergency file is successfully loaded, but the original file %1$s is "
@@ -27786,15 +27793,15 @@ msgstr ""
 "%1$s ist schreibgeschützt.\n"
 "Bitte speichern Sie die Datei unter einem neuen Namen."
 
-#: src/Buffer.cpp:4728
+#: src/Buffer.cpp:4725
 msgid "Document was successfully recovered."
 msgstr "Dokument wurde erfolgreich wiederhergestellt."
 
-#: src/Buffer.cpp:4730
+#: src/Buffer.cpp:4727
 msgid "Document was NOT successfully recovered."
 msgstr "Dokument wurde NICHT erfolgreich wiederhergestellt."
 
-#: src/Buffer.cpp:4731
+#: src/Buffer.cpp:4728
 #, c-format
 msgid ""
 "Remove emergency file now?\n"
@@ -27804,31 +27811,31 @@ msgstr ""
 "%1$s\n"
 "jetzt löschen?"
 
-#: src/Buffer.cpp:4735 src/Buffer.cpp:4747
+#: src/Buffer.cpp:4732 src/Buffer.cpp:4744
 msgid "Delete emergency file?"
 msgstr "Notspeicherung löschen?"
 
-#: src/Buffer.cpp:4736 src/Buffer.cpp:4749
+#: src/Buffer.cpp:4733 src/Buffer.cpp:4746
 msgid "&Keep"
 msgstr "&Behalten"
 
-#: src/Buffer.cpp:4740
+#: src/Buffer.cpp:4737
 msgid "Emergency file deleted"
 msgstr "Notspeicherung gelöscht"
 
-#: src/Buffer.cpp:4741
+#: src/Buffer.cpp:4738
 msgid "Do not forget to save your file now!"
 msgstr "Vergessen Sie nicht, ihre Datei jetzt zu speichern!"
 
-#: src/Buffer.cpp:4748
+#: src/Buffer.cpp:4745
 msgid "Remove emergency file now?"
 msgstr "Notspeicherungsdatei jetzt löschen?"
 
-#: src/Buffer.cpp:4771
+#: src/Buffer.cpp:4768
 msgid "Can't rename emergency file!"
 msgstr "Notspeicherungsdatei kann nicht umbenannt werden!"
 
-#: src/Buffer.cpp:4772
+#: src/Buffer.cpp:4769
 msgid ""
 "LyX was unable to rename the emergency file. You should do so manually. "
 "Otherwise, you will be asked about it again the next time you try to load "
@@ -27839,11 +27846,11 @@ msgstr ""
 "wieder danach gefragt, und Ihre Datei könnte mit einer dann nicht mehr "
 "aktuellen Notspeicherung überschrieben werden."
 
-#: src/Buffer.cpp:4777
+#: src/Buffer.cpp:4774
 msgid "Emergency File Renames"
 msgstr "Umbenennung der Notspeicherung"
 
-#: src/Buffer.cpp:4778
+#: src/Buffer.cpp:4775
 #, c-format
 msgid ""
 "Emergency file renamed as:\n"
@@ -27852,7 +27859,7 @@ msgstr ""
 "Notspeicherung umbenannt als:\n"
 " %1$s"
 
-#: src/Buffer.cpp:4817
+#: src/Buffer.cpp:4814
 #, c-format
 msgid ""
 "The backup of the document %1$s is newer.\n"
@@ -27863,19 +27870,19 @@ msgstr ""
 "\n"
 "Stattdessen die Sicherung laden?"
 
-#: src/Buffer.cpp:4819
+#: src/Buffer.cpp:4816
 msgid "Load backup?"
 msgstr "Sicherung laden?"
 
-#: src/Buffer.cpp:4820
+#: src/Buffer.cpp:4817
 msgid "&Load backup"
 msgstr "&Sicherung laden"
 
-#: src/Buffer.cpp:4820
+#: src/Buffer.cpp:4817
 msgid "Load &original"
 msgstr "&Original laden"
 
-#: src/Buffer.cpp:4830
+#: src/Buffer.cpp:4827
 #, c-format
 msgid ""
 "A backup file is successfully loaded, but the original file %1$s is marked "
@@ -27885,16 +27892,16 @@ msgstr ""
 "%1$s ist schreibgeschützt.\n"
 "Bitte speichern Sie die Datei unter einem neuen Namen."
 
-#: src/Buffer.cpp:5232 src/insets/InsetCaption.cpp:404
+#: src/Buffer.cpp:5206 src/insets/InsetCaption.cpp:404
 msgid "Senseless!!! "
 msgstr "Sinnlos!!! "
 
-#: src/Buffer.cpp:5496
+#: src/Buffer.cpp:5470
 #, c-format
 msgid "Document %1$s reloaded."
 msgstr "Dokument %1$s neu geladen."
 
-#: src/Buffer.cpp:5499
+#: src/Buffer.cpp:5473
 #, c-format
 msgid "Could not reload document %1$s."
 msgstr "Kann Dokument %1$s nicht neu laden."
@@ -28006,36 +28013,59 @@ msgstr ""
 msgid "Document class not available"
 msgstr "Die Dokumentklasse ist nicht verfügbar"
 
-#: src/BufferParams.cpp:1098 src/Color.cpp:281
-#: src/frontends/qt/GuiDocument.cpp:3534
+#: src/BufferParams.cpp:1100 src/Color.cpp:281
+#: src/frontends/qt/GuiDocument.cpp:3542
 msgid "greyedout inset text"
 msgstr "Grauschrift-Einfügungstext"
 
-#: src/BufferParams.cpp:1811 src/BufferParams.cpp:2254 src/Encoding.cpp:253
-#: src/Paragraph.cpp:3013 src/frontends/qt/LaTeXHighlighter.cpp:123
-#: src/frontends/qt/LaTeXHighlighter.cpp:216
+#: src/BufferParams.cpp:1718 src/BufferParams.cpp:1872
+#: src/BufferParams.cpp:2315 src/Encoding.cpp:253 src/Paragraph.cpp:3014
+#: src/frontends/qt/LaTeXHighlighter.cpp:143
+#: src/frontends/qt/LaTeXHighlighter.cpp:257
 #: src/insets/InsetCommandParams.cpp:508 src/insets/InsetCommandParams.cpp:516
 #: src/insets/InsetGraphics.cpp:886 src/insets/InsetGraphics.cpp:894
-#: src/insets/InsetListings.cpp:298 src/insets/InsetListings.cpp:306
-#: src/insets/InsetListings.cpp:331 src/mathed/MathExtern.cpp:1440
+#: src/insets/InsetListings.cpp:299 src/insets/InsetListings.cpp:307
+#: src/insets/InsetListings.cpp:332 src/mathed/MathExtern.cpp:1440
 #: src/mathed/MathExtern.cpp:1514
 msgid "LyX Warning: "
 msgstr "LyX-Warnung: "
 
-#: src/BufferParams.cpp:1812 src/BufferParams.cpp:2255 src/Encoding.cpp:254
-#: src/Paragraph.cpp:3014 src/insets/InsetCommandParams.cpp:509
-#: src/insets/InsetCommandParams.cpp:517 src/insets/InsetGraphics.cpp:887
-#: src/insets/InsetGraphics.cpp:895 src/insets/InsetListings.cpp:299
-#: src/insets/InsetListings.cpp:307 src/mathed/MathExtern.cpp:1441
-#: src/mathed/MathExtern.cpp:1515
+#: src/BufferParams.cpp:1719 src/BufferParams.cpp:1873
+#: src/BufferParams.cpp:2316 src/Encoding.cpp:254 src/Paragraph.cpp:3015
+#: src/insets/InsetCommandParams.cpp:509 src/insets/InsetCommandParams.cpp:517
+#: src/insets/InsetGraphics.cpp:887 src/insets/InsetGraphics.cpp:895
+#: src/insets/InsetListings.cpp:300 src/insets/InsetListings.cpp:308
+#: src/mathed/MathExtern.cpp:1441 src/mathed/MathExtern.cpp:1515
 msgid "uncodable character"
 msgstr "unkodierbares Zeichen"
 
-#: src/BufferParams.cpp:1825
+#: src/BufferParams.cpp:1732
+msgid "Uncodable character in document metadata"
+msgstr "Unkodierbares Zeichen in Dokument-Metadaten"
+
+#: src/BufferParams.cpp:1734
+#, c-format
+msgid ""
+"The metadata of your document contains glyphs that are unknown in the "
+"current document encoding (namely %1$s).\n"
+"These glyphs are omitted  from the output, which may result in incomplete "
+"output.\n"
+"\n"
+"Please select an appropriate document encoding\n"
+"(such as utf8) or change the preamble code accordingly."
+msgstr ""
+"Die Metadaten Ihres Dokuments enthalten Zeichen, die in der aktuellen "
+"Kodierung nicht dargestellt werden können (nämlich: %1$s).\n"
+"Die betroffenen Zeichen werden in der LaTeX-Ausgabe weggelassen.\n"
+"\n"
+"Wählen Sie eine passende Kodierung (bspw. utf8)\n"
+"oder ändern Sie den LaTeX-Code im Vorspann."
+
+#: src/BufferParams.cpp:1886
 msgid "Uncodable character in class options"
 msgstr "Unkodierbare Zeichen in den Klassenoptionen"
 
-#: src/BufferParams.cpp:1827
+#: src/BufferParams.cpp:1888
 #, c-format
 msgid ""
 "The class options of your document contain glyphs that are unknown in the "
@@ -28053,11 +28083,11 @@ msgstr ""
 "Wählen Sie eine passende Kodierung (bspw. utf8)\n"
 "oder ändern Sie den LaTeX-Code im Vorspann."
 
-#: src/BufferParams.cpp:2268
+#: src/BufferParams.cpp:2329
 msgid "Uncodable character in user preamble"
 msgstr "Unkodierbares Zeichen im Benutzervorspann"
 
-#: src/BufferParams.cpp:2270
+#: src/BufferParams.cpp:2331
 #, c-format
 msgid ""
 "The user preamble of your document contains glyphs that are unknown in the "
@@ -28075,7 +28105,7 @@ msgstr ""
 "Wählen Sie eine passende Kodierung (bspw. utf8)\n"
 "oder ändern Sie den LaTeX-Code im Vorspann."
 
-#: src/BufferParams.cpp:2585
+#: src/BufferParams.cpp:2646
 #, c-format
 msgid ""
 "The layout file:\n"
@@ -28090,11 +28120,11 @@ msgstr ""
 "Formaten wird benutzt werden. LyX wird nicht in der Lage sein eine korrekte\n"
 "Ausgabe zu erzeugen."
 
-#: src/BufferParams.cpp:2591
+#: src/BufferParams.cpp:2652
 msgid "Document class not found"
 msgstr "Dokumentklasse nicht gefunden"
 
-#: src/BufferParams.cpp:2598
+#: src/BufferParams.cpp:2659
 #, c-format
 msgid ""
 "Due to some error in it, the layout file:\n"
@@ -28109,23 +28139,23 @@ msgstr ""
 "korrekte\n"
 "Ausgabe erzeugen können."
 
-#: src/BufferParams.cpp:2604 src/BufferView.cpp:1424 src/BufferView.cpp:1456
+#: src/BufferParams.cpp:2665 src/BufferView.cpp:1424 src/BufferView.cpp:1456
 msgid "Could not load class"
 msgstr "Konnte Klasse nicht laden"
 
-#: src/BufferParams.cpp:2649
+#: src/BufferParams.cpp:2710
 msgid "Error reading internal layout information"
 msgstr "Fehler beim Einlesen interner Format-Informationen"
 
-#: src/BufferParams.cpp:2650 src/TextClass.cpp:1952 src/TextClass.cpp:1985
+#: src/BufferParams.cpp:2711 src/TextClass.cpp:1952 src/TextClass.cpp:1985
 msgid "Read Error"
 msgstr "Lesefehler"
 
-#: src/BufferParams.cpp:3655
+#: src/BufferParams.cpp:3726
 msgid "No bibliography processor found!"
 msgstr "Kein Literaturverzeichnis-Prozessor gefunden!"
 
-#: src/BufferParams.cpp:3657
+#: src/BufferParams.cpp:3728
 #, c-format
 msgid ""
 "The bibliography processor requested by this document (%1$s) is not "
@@ -28139,11 +28169,11 @@ msgstr ""
 "Literaturverweise erzeugt werden.\n"
 "Bitte reparieren Sie Ihr System!"
 
-#: src/BufferParams.cpp:3665
+#: src/BufferParams.cpp:3736
 msgid "Requested bibliography processor not found!"
 msgstr "Verlangter Literaturverzeichnis-Prozessor nicht gefunden!"
 
-#: src/BufferParams.cpp:3667
+#: src/BufferParams.cpp:3738
 #, c-format
 msgid ""
 "The bibliography processor requested by this document (%1$s) is not "
@@ -28184,7 +28214,7 @@ msgid "This portion of the document is deleted."
 msgstr "Dieser Teil des Dokuments wird gelöscht."
 
 #: src/BufferView.cpp:1191 src/BufferView.cpp:2254
-#: src/frontends/qt/GuiView.cpp:4259 src/frontends/qt/GuiView.cpp:4347
+#: src/frontends/qt/GuiView.cpp:4296 src/frontends/qt/GuiView.cpp:4384
 msgid "Absolute filename expected."
 msgstr "Ein absoluter Dateipfad wird erwartet."
 
@@ -28295,7 +28325,7 @@ msgstr "Dokument %1$s ist eingefügt."
 msgid "Could not insert document %1$s"
 msgstr "Das Dokument %1$s konnte nicht eingefügt werden"
 
-#: src/BufferView.cpp:3572
+#: src/BufferView.cpp:3569
 #, c-format
 msgid ""
 "Could not read the specified document\n"
@@ -28306,11 +28336,11 @@ msgstr ""
 "konnte aufgrund des folgenden Fehlers\n"
 "nicht gelesen werden: %2$s"
 
-#: src/BufferView.cpp:3574
+#: src/BufferView.cpp:3571
 msgid "Could not read file"
 msgstr "Die Datei konnte nicht gelesen werden"
 
-#: src/BufferView.cpp:3581
+#: src/BufferView.cpp:3578
 #, c-format
 msgid ""
 "%1$s\n"
@@ -28319,17 +28349,17 @@ msgstr ""
 "%1$s\n"
 "ist nicht lesbar."
 
-#: src/BufferView.cpp:3582 src/frontends/qt/qt_helpers.cpp:311
+#: src/BufferView.cpp:3579 src/frontends/qt/qt_helpers.cpp:311
 #: src/frontends/qt/qt_helpers.cpp:314 src/frontends/qt/qt_helpers.cpp:320
 #: src/output.cpp:39
 msgid "Could not open file"
 msgstr "Die Datei konnte nicht geöffnet werden"
 
-#: src/BufferView.cpp:3589
+#: src/BufferView.cpp:3586
 msgid "Reading not UTF-8 encoded file"
 msgstr "Lese nicht-UTF-8-kodierte Datei"
 
-#: src/BufferView.cpp:3590
+#: src/BufferView.cpp:3587
 msgid ""
 "The file is not UTF-8 encoded.\n"
 "It will be read as local 8Bit-encoded.\n"
@@ -28803,7 +28833,7 @@ msgstr "übernehmen"
 msgid "ignore"
 msgstr "ignorieren"
 
-#: src/Converter.cpp:306
+#: src/Converter.cpp:312
 #, c-format
 msgid ""
 "<p>The following LaTeX backend has been configured to allow execution of "
@@ -28820,11 +28850,11 @@ msgstr ""
 "Einstellung, die Sie gewählt haben, das Privileg nur den Dokumenten zu "
 "gewähren, die es benötigen (und denen Sie vertrauen).</p>"
 
-#: src/Converter.cpp:315
+#: src/Converter.cpp:321
 msgid "Security Warning"
 msgstr "Sicherheitswarnung"
 
-#: src/Converter.cpp:328
+#: src/Converter.cpp:334
 #, c-format
 msgid ""
 "<p>The following LaTeX backend has been requested to allow execution of "
@@ -28838,7 +28868,7 @@ msgstr ""
 "gefährliche, wenn ein in böswilliger Absicht erzeugtes LyX-Dokument dies "
 "verlangt.</p>"
 
-#: src/Converter.cpp:335
+#: src/Converter.cpp:341
 #, c-format
 msgid ""
 "<p>The requested operation requires the use of a converter from %2$s to %3$s:"
@@ -28852,11 +28882,11 @@ msgstr ""
 "gefährliche, wenn ein in böswilliger Absicht erzeugtes LyX-Dokument dies "
 "verlangt.</p>"
 
-#: src/Converter.cpp:345
+#: src/Converter.cpp:351
 msgid "An external converter is disabled for security reasons"
 msgstr "Ein externer Konverter wurde aus Sicherheitsgründen deaktiviert"
 
-#: src/Converter.cpp:347
+#: src/Converter.cpp:353
 msgid ""
 "<p><b>Your current preference settings forbid its execution.</b></p><p>(To "
 "change this setting, go to <i>Preferences &#x25b9; File Handling &#x25b9; "
@@ -28868,15 +28898,15 @@ msgstr ""
 "Konverter</i> und deaktivieren Sie <i>Sicherheit &#x25b9; Verbiete die "
 "Verwendung autorisierungspflichtiger Konverter</i>.)"
 
-#: src/Converter.cpp:356
+#: src/Converter.cpp:362
 msgid "A LaTeX backend requires your authorization"
 msgstr "Ein LaTeX-Prozessor muss von Ihnen autorisiert werden"
 
-#: src/Converter.cpp:357
+#: src/Converter.cpp:363
 msgid "An external converter requires your authorization"
 msgstr "Ein externer Konverter muss von Ihnen autorisiert werden"
 
-#: src/Converter.cpp:360
+#: src/Converter.cpp:366
 msgid ""
 "<p>Should LaTeX backends be allowed to run external programs?</p><p><b>Allow "
 "them only if you trust the origin/sender of the LyX document!</b></p>"
@@ -28885,7 +28915,7 @@ msgstr ""
 "p><p><b>Erlauben Sie dies nur, wenn Sie der Herkunft des LyX-Dokuments "
 "vertrauen!</b></p>"
 
-#: src/Converter.cpp:363
+#: src/Converter.cpp:369
 msgid ""
 "<p>Would you like to run this converter?</p><p><b>Only run if you trust the "
 "origin/sender of the LyX document!</b></p>"
@@ -28893,35 +28923,35 @@ msgstr ""
 "<p>Möchten Sie diesen Konverter ausführen?</p><p><b>Tun Sie dies nur, wenn "
 "Sie der Herkunft des LyX-Dokuments vertrauen!</b></p>"
 
-#: src/Converter.cpp:367
+#: src/Converter.cpp:373
 msgid "Do &not allow"
 msgstr "&Nicht erlauben"
 
-#: src/Converter.cpp:367
+#: src/Converter.cpp:373
 msgid "Do &not run"
 msgstr "&Nicht ausführen"
 
-#: src/Converter.cpp:368
+#: src/Converter.cpp:374
 msgid "A&llow"
 msgstr "&Erlauben"
 
-#: src/Converter.cpp:368
+#: src/Converter.cpp:374
 msgid "&Run"
 msgstr "Aus&führen"
 
-#: src/Converter.cpp:370
+#: src/Converter.cpp:376
 msgid "&Always allow for this document"
 msgstr "Für dieses &Dokument immer erlauben"
 
-#: src/Converter.cpp:371
+#: src/Converter.cpp:377
 msgid "&Always run for this document"
 msgstr "Für dieses &Dokument immer ausführen"
 
-#: src/Converter.cpp:441 src/Converter.cpp:686 src/Converter.cpp:715
+#: src/Converter.cpp:447 src/Converter.cpp:693 src/Converter.cpp:722
 msgid "Converter killed"
 msgstr "Konverter getötet"
 
-#: src/Converter.cpp:442 src/Converter.cpp:687 src/Converter.cpp:716
+#: src/Converter.cpp:448 src/Converter.cpp:694 src/Converter.cpp:723
 #, c-format
 msgid ""
 "The following converter was killed by the user.\n"
@@ -28930,12 +28960,12 @@ msgstr ""
 "Der folgende Konverter wurde vom Benutzer getötet:\n"
 " %1$s\n"
 
-#: src/Converter.cpp:461 src/Converter.cpp:744 src/Converter.cpp:767
-#: src/Converter.cpp:809
+#: src/Converter.cpp:467 src/Converter.cpp:751 src/Converter.cpp:774
+#: src/Converter.cpp:816
 msgid "Cannot convert file"
 msgstr "Die Datei kann nicht konvertiert werden"
 
-#: src/Converter.cpp:462
+#: src/Converter.cpp:468
 #, c-format
 msgid ""
 "No information for converting %1$s format files to %2$s.\n"
@@ -28945,11 +28975,11 @@ msgstr ""
 "konvertieren.\n"
 "Definieren Sie einen Konverter in den Einstellungen."
 
-#: src/Converter.cpp:567 src/frontends/qt/GuiDocument.cpp:2000
+#: src/Converter.cpp:573 src/frontends/qt/GuiDocument.cpp:2004
 msgid "Pygments driver command not found!"
 msgstr "Pygments-Treiberbefehl nicht gefunden!"
 
-#: src/Converter.cpp:568 src/frontends/qt/GuiDocument.cpp:2001
+#: src/Converter.cpp:574 src/frontends/qt/GuiDocument.cpp:2005
 msgid ""
 "The driver command necessary to use the minted package\n"
 "(pygmentize) has not been found. Make sure you have\n"
@@ -28971,15 +29001,15 @@ msgstr ""
 "\n"
 "Ersetzen Sie dabei ,Treiber` durch den Namen des Treibers."
 
-#: src/Converter.cpp:662 src/Format.cpp:708 src/Format.cpp:778
+#: src/Converter.cpp:669 src/Format.cpp:708 src/Format.cpp:778
 msgid "Executing command: "
 msgstr "Befehl wird ausgeführt: "
 
-#: src/Converter.cpp:727
+#: src/Converter.cpp:734
 msgid "Process Killed"
 msgstr "Prozess getötet"
 
-#: src/Converter.cpp:728
+#: src/Converter.cpp:735
 #, c-format
 msgid ""
 "The conversion process was killed while running:\n"
@@ -28988,11 +29018,11 @@ msgstr ""
 "Der Konvertierungsprozess wurde getötet, während folgender Prozess lief:\n"
 "%1$s"
 
-#: src/Converter.cpp:733
+#: src/Converter.cpp:740
 msgid "Process Timed Out"
 msgstr "Prozesszeit abgelaufen"
 
-#: src/Converter.cpp:734
+#: src/Converter.cpp:741
 #, c-format
 msgid ""
 "The conversion process:\n"
@@ -29003,15 +29033,15 @@ msgstr ""
 "wurde wegen Zeitüberschreitung abgebrochen:\n"
 "%1$s"
 
-#: src/Converter.cpp:739
+#: src/Converter.cpp:746
 msgid "Build errors"
 msgstr "Fehler bei der Erstellung"
 
-#: src/Converter.cpp:740
+#: src/Converter.cpp:747
 msgid "There were errors during the build process."
 msgstr "Während des Erstellungsprozesses sind Fehler aufgetreten."
 
-#: src/Converter.cpp:745
+#: src/Converter.cpp:752
 #, c-format
 msgid ""
 "An error occurred while running:\n"
@@ -29021,40 +29051,40 @@ msgstr ""
 "%1$s\n"
 "ist ein Fehler aufgetreten"
 
-#: src/Converter.cpp:768
+#: src/Converter.cpp:775
 #, c-format
 msgid "Could not move a temporary directory from %1$s to %2$s."
 msgstr ""
 "Ein temporäres Verzeichnis konnte nicht von %1$s nach %2$s verschoben werden."
 
-#: src/Converter.cpp:811
+#: src/Converter.cpp:818
 #, c-format
 msgid "Could not copy a temporary file from %1$s to %2$s."
 msgstr "Eine temporäre Datei konnte nicht von %1$s nach %2$s kopiert werden."
 
-#: src/Converter.cpp:812
+#: src/Converter.cpp:819
 #, c-format
 msgid "Could not move a temporary file from %1$s to %2$s."
 msgstr ""
 "Eine temporäre Datei konnte nicht von %1$s nach %2$s verschoben werden."
 
-#: src/Converter.cpp:852
+#: src/Converter.cpp:859
 msgid "Running LaTeX..."
 msgstr "LaTeX wird ausgeführt..."
 
-#: src/Converter.cpp:869
+#: src/Converter.cpp:876
 msgid "Export canceled"
 msgstr "Export abgebrochen"
 
-#: src/Converter.cpp:870
+#: src/Converter.cpp:877
 msgid "The export process was terminated by the user."
 msgstr "Der Export-Prozess wurde vom Benutzer beendet."
 
-#: src/Converter.cpp:880
+#: src/Converter.cpp:887
 msgid "Undefined reference"
 msgstr "Undefinierter Verweis"
 
-#: src/Converter.cpp:881
+#: src/Converter.cpp:888
 msgid ""
 "Undefined references or citations were found during the build.\n"
 "Please check the warnings in the LaTeX log (Document > LaTeX Log)."
@@ -29063,7 +29093,7 @@ msgstr ""
 "Bitte prüfen Sie die Warnungen im LaTeX-Protokoll (Dokument > LateX-"
 "Protokoll)."
 
-#: src/Converter.cpp:893
+#: src/Converter.cpp:900
 #, c-format
 msgid ""
 "LaTeX did not run successfully. Additionally, LyX could not locate the LaTeX "
@@ -29072,11 +29102,11 @@ msgstr ""
 "LaTeX wurde nicht erfolgreich ausgeführt. Außerdem konnte LyX die LaTeX-"
 "Protokolldatei %1$s nicht finden."
 
-#: src/Converter.cpp:896 src/Converter.cpp:903
+#: src/Converter.cpp:903 src/Converter.cpp:910
 msgid "LaTeX failed"
 msgstr "LaTeX ist fehlgeschlagen"
 
-#: src/Converter.cpp:899
+#: src/Converter.cpp:906
 #, c-format
 msgid ""
 "The external program\n"
@@ -29089,11 +29119,11 @@ msgstr ""
 "wurde mit einem Fehler beendet. Es wird empfohlen, dass Sie die\n"
 "Ursache des Programmfehlers beheben (prüfen Sie die Fehlermeldungen). "
 
-#: src/Converter.cpp:905
+#: src/Converter.cpp:912
 msgid "Output is empty"
 msgstr "Die Ausgabe ist leer"
 
-#: src/Converter.cpp:906
+#: src/Converter.cpp:913
 msgid "No output file was generated."
 msgstr "Es wurde keine Ausgabedatei erzeugt."
 
@@ -29201,7 +29231,7 @@ msgstr "&Nicht überschreiben"
 msgid "Overwrite &all"
 msgstr "&Alle überschreiben"
 
-#: src/Exporter.cpp:51 src/frontends/qt/GuiView.cpp:788
+#: src/Exporter.cpp:51 src/frontends/qt/GuiView.cpp:792
 msgid "&Cancel export"
 msgstr "Export &abbrechen"
 
@@ -29225,17 +29255,17 @@ msgid "Number %1$s"
 msgstr "Nummer %1$s"
 
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:148
-#: src/frontends/qt/GuiDocument.cpp:4890 src/frontends/qt/GuiListings.cpp:167
+#: src/frontends/qt/GuiDocument.cpp:4908 src/frontends/qt/GuiListings.cpp:167
 msgid "Roman"
 msgstr "Serifenschrift"
 
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:4890 src/frontends/qt/GuiListings.cpp:167
+#: src/frontends/qt/GuiDocument.cpp:4908 src/frontends/qt/GuiListings.cpp:167
 msgid "Sans Serif"
 msgstr "Serifenlos"
 
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:150
-#: src/frontends/qt/GuiDocument.cpp:4890 src/frontends/qt/GuiListings.cpp:167
+#: src/frontends/qt/GuiDocument.cpp:4908 src/frontends/qt/GuiListings.cpp:167
 msgid "Typewriter"
 msgstr "Schreibmaschine"
 
@@ -29319,7 +29349,7 @@ msgstr "Eigenname %1$s, "
 msgid "Cannot view file"
 msgstr "Datei kann nicht betrachtet werden"
 
-#: src/Format.cpp:633 src/frontends/qt/GuiView.cpp:3949
+#: src/Format.cpp:633 src/frontends/qt/GuiView.cpp:3986
 #, c-format
 msgid "File does not exist: %1$s"
 msgstr "Die Datei existiert nicht: %1$s"
@@ -30380,7 +30410,7 @@ msgstr "LyX-VK: Protokollmeldung"
 msgid "(no log message)"
 msgstr "(keine Protokollmeldung)"
 
-#: src/LyXVC.cpp:252 src/frontends/qt/GuiView.cpp:3812
+#: src/LyXVC.cpp:252 src/frontends/qt/GuiView.cpp:3849
 msgid "LyX VC: Log Message"
 msgstr "LyX VK: Protokollmeldung"
 
@@ -30401,7 +30431,7 @@ msgstr ""
 msgid "Revert to stored version of document?"
 msgstr "Zur gespeicherten Version des Dokuments zurückkehren?"
 
-#: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4396
+#: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4433
 msgid "&Revert"
 msgstr "&Wiederherstellen"
 
@@ -30538,40 +30568,40 @@ msgstr "Bereits im Regexp-Modus"
 msgid "Regexp editor mode"
 msgstr "Regexp-Editor-Modus"
 
-#: src/Text3.cpp:1602
+#: src/Text3.cpp:1605
 msgid "Layout "
 msgstr "Format "
 
-#: src/Text3.cpp:1603 src/Text3.cpp:2173
+#: src/Text3.cpp:1606 src/Text3.cpp:2176
 msgid " not known"
 msgstr " unbekannt"
 
-#: src/Text3.cpp:2172
+#: src/Text3.cpp:2175
 msgid "Table Style "
 msgstr "Tabellenstil"
 
-#: src/Text3.cpp:2365 src/frontends/qt/GuiApplication.cpp:1873
+#: src/Text3.cpp:2368 src/frontends/qt/GuiApplication.cpp:1873
 msgid "Missing argument"
 msgstr "Fehlendes Argument"
 
-#: src/Text3.cpp:2534
+#: src/Text3.cpp:2537
 msgid "Invalid argument (number exceeds stack size)!"
 msgstr "Ungültiges Argument (Zahl größer als Zwischenspeicher)!"
 
-#: src/Text3.cpp:2538
+#: src/Text3.cpp:2541
 msgid "Invalid argument (must be a non-negative number)!"
 msgstr "Ungültiges Argument (muss eine nicht-negative Zahl sein)!"
 
-#: src/Text3.cpp:2543 src/Text3.cpp:2561
+#: src/Text3.cpp:2546 src/Text3.cpp:2564
 #, c-format
 msgid "Text properties applied: %1$s"
 msgstr "Angewendete Texteigenschaften: %1$s"
 
-#: src/Text3.cpp:2720
+#: src/Text3.cpp:2723
 msgid "Path to thesaurus directory not set!"
 msgstr "Pfad zum Thesaurus-Wörterbuch nicht festlegt!"
 
-#: src/Text3.cpp:2721
+#: src/Text3.cpp:2724
 msgid ""
 "The path to the thesaurus directory has not been specified.\n"
 "The thesaurus is not functional.\n"
@@ -30583,7 +30613,7 @@ msgstr ""
 "Im Benutzerhandbuch, Abschnitt 6.15.11, finden Sie Hinweise,\n"
 "um den Thesaurus einzurichten."
 
-#: src/Text3.cpp:2847 src/Text3.cpp:2858
+#: src/Text3.cpp:2850 src/Text3.cpp:2861
 msgid "Paragraph layout set"
 msgstr "Absatzformat festgelegt"
 
@@ -30707,8 +30737,8 @@ msgstr ""
 msgid "Error reading cite engine %1$s\n"
 msgstr "Fehler beim Lesen der Zitierformatdatei %1$s\n"
 
-#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:477
-#: src/insets/InsetIndex.cpp:498
+#: src/TocBackend.cpp:270 src/insets/InsetIndex.cpp:500
+#: src/insets/InsetIndex.cpp:521
 msgid "unknown type!"
 msgstr "unbekannter Typ!"
 
@@ -30741,7 +30771,7 @@ msgstr "Marken und Querverweise"
 msgid "Broken References and Citations"
 msgstr "Ungültige Literatur- und Querverweise"
 
-#: src/TocBackend.cpp:296 src/frontends/qt/GuiDocument.cpp:1770
+#: src/TocBackend.cpp:296 src/frontends/qt/GuiDocument.cpp:1774
 msgid "Child Documents"
 msgstr "Unterdokumente"
 
@@ -30765,7 +30795,7 @@ msgstr "Prüfen Sie, ob das Programm GNU RCS auf Ihrem System installiert ist."
 #: src/VCBackend.cpp:934 src/VCBackend.cpp:993 src/VCBackend.cpp:1052
 #: src/VCBackend.cpp:1060 src/VCBackend.cpp:1348 src/VCBackend.cpp:1450
 #: src/VCBackend.cpp:1456 src/VCBackend.cpp:1479 src/VCBackend.cpp:1964
-#: src/frontends/qt/GuiView.cpp:3728 src/frontends/qt/GuiView.cpp:3771
+#: src/frontends/qt/GuiView.cpp:3765 src/frontends/qt/GuiView.cpp:3808
 msgid "Revision control error."
 msgstr "Fehler der Versionskontrolle."
 
@@ -30965,14 +30995,14 @@ msgstr ""
 "Fortfahren?"
 
 #: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
-#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1896
+#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1895
 #: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
 #: src/lyxfind.cpp:694 src/lyxfind.cpp:722
 msgid "&Yes"
 msgstr "&Ja"
 
 #: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
-#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1896
+#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1895
 #: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
 #: src/lyxfind.cpp:694 src/lyxfind.cpp:722
 msgid "&No"
@@ -31030,7 +31060,7 @@ msgstr ""
 "Möchten Sie die Änderungen verwerfen und zur gespeicherten Version "
 "zurückkehren?"
 
-#: src/buffer_funcs.cpp:55 src/frontends/qt/GuiView.cpp:4387
+#: src/buffer_funcs.cpp:55 src/frontends/qt/GuiView.cpp:4424
 msgid "Reload saved document?"
 msgstr "Gespeichertes Dokument neu laden?"
 
@@ -31117,7 +31147,7 @@ msgid "Cancel"
 msgstr "Abbrechen"
 
 #: src/frontends/qt/ButtonController.cpp:224
-#: src/frontends/qt/GuiCompare.cpp:191 src/frontends/qt/GuiDelimiter.cpp:412
+#: src/frontends/qt/GuiCompare.cpp:191 src/frontends/qt/GuiDelimiter.cpp:413
 #: src/frontends/qt/GuiSymbols.cpp:348
 msgid "Close"
 msgstr "Schließen"
@@ -31216,8 +31246,8 @@ msgstr ""
 "Eingabetaste)"
 
 #: src/frontends/qt/FloatPlacement.cpp:182
-#: src/frontends/qt/GuiDocument.cpp:1149 src/frontends/qt/GuiDocument.cpp:2717
-#: src/frontends/qt/GuiDocument.cpp:2744
+#: src/frontends/qt/GuiDocument.cpp:1149 src/frontends/qt/GuiDocument.cpp:2725
+#: src/frontends/qt/GuiDocument.cpp:2752
 msgid "Class Default"
 msgstr "Klassenvoreinstellungen"
 
@@ -31225,7 +31255,7 @@ msgstr "Klassenvoreinstellungen"
 msgid "Document Default"
 msgstr "Dokumentvoreinstellung"
 
-#: src/frontends/qt/FloatPlacement.h:38 src/frontends/qt/GuiDocument.cpp:1785
+#: src/frontends/qt/FloatPlacement.h:38 src/frontends/qt/GuiDocument.cpp:1789
 msgid "Float Settings"
 msgstr "Gleitobjekt-Einstellungen"
 
@@ -31341,7 +31371,7 @@ msgstr "Über LyX"
 msgid "About %1"
 msgstr "Über %1"
 
-#: src/frontends/qt/GuiApplication.cpp:737 src/frontends/qt/GuiPrefs.cpp:3529
+#: src/frontends/qt/GuiApplication.cpp:737 src/frontends/qt/GuiPrefs.cpp:3528
 msgid "Preferences"
 msgstr "Einstellungen"
 
@@ -31395,7 +31425,7 @@ msgstr "Befehl ist deaktiviert"
 msgid "Bad debug value `%1$s'."
 msgstr "Falscher Debug-Wert ,%1$s'."
 
-#: src/frontends/qt/GuiApplication.cpp:1463 src/frontends/qt/GuiView.cpp:2165
+#: src/frontends/qt/GuiApplication.cpp:1463 src/frontends/qt/GuiView.cpp:2214
 msgid "Command not allowed without a buffer open"
 msgstr "Dieser Befehl ist nur bei geöffnetem Dokument möglich"
 
@@ -31488,16 +31518,16 @@ msgstr "Dokument-Standardeinstellungen gespeichert in %1$s"
 msgid "Unable to save document defaults"
 msgstr "Die Dokument-Standardeinstellungen können nicht gespeichert werden"
 
-#: src/frontends/qt/GuiApplication.cpp:2468
-#: src/frontends/qt/GuiApplication.cpp:2483
+#: src/frontends/qt/GuiApplication.cpp:2474
+#: src/frontends/qt/GuiApplication.cpp:2489
 msgid "Unknown function."
 msgstr "Unbekannte Funktion."
 
-#: src/frontends/qt/GuiApplication.cpp:3013
+#: src/frontends/qt/GuiApplication.cpp:3024
 msgid "The current document was closed."
 msgstr "Das aktuelle Dokument wurde geschlossen."
 
-#: src/frontends/qt/GuiApplication.cpp:3023
+#: src/frontends/qt/GuiApplication.cpp:3034
 msgid ""
 "LyX has caught an exception, it will now attempt to save all unsaved "
 "documents and exit.\n"
@@ -31509,12 +31539,12 @@ msgstr ""
 "\n"
 "Exception: "
 
-#: src/frontends/qt/GuiApplication.cpp:3027
-#: src/frontends/qt/GuiApplication.cpp:3033
+#: src/frontends/qt/GuiApplication.cpp:3038
+#: src/frontends/qt/GuiApplication.cpp:3044
 msgid "Software exception Detected"
 msgstr "Softwareausnahme erkannt"
 
-#: src/frontends/qt/GuiApplication.cpp:3031
+#: src/frontends/qt/GuiApplication.cpp:3042
 msgid ""
 "LyX has caught some really weird exception, it will now attempt to save all "
 "unsaved documents and exit."
@@ -31522,12 +31552,12 @@ msgstr ""
 "LyX hat einen ziemlich seltsamen Fehler entdeckt. Das Programm wird jetzt "
 "versuchen, alle ungespeicherten Dateien zu speichern, und dann beendet."
 
-#: src/frontends/qt/GuiApplication.cpp:3337
-#: src/frontends/qt/GuiApplication.cpp:3349
+#: src/frontends/qt/GuiApplication.cpp:3348
+#: src/frontends/qt/GuiApplication.cpp:3360
 msgid "Could not find UI definition file"
 msgstr "Die Benutzeroberflächen-Definitionsdatei konnte nicht gefunden werden"
 
-#: src/frontends/qt/GuiApplication.cpp:3338
+#: src/frontends/qt/GuiApplication.cpp:3349
 #, c-format
 msgid ""
 "Error while reading the included file\n"
@@ -31538,13 +31568,13 @@ msgstr ""
 "%1$s.\n"
 "Bitte überprüfen Sie Ihre Installation."
 
-#: src/frontends/qt/GuiApplication.cpp:3344
+#: src/frontends/qt/GuiApplication.cpp:3355
 msgid "Could not find default UI file"
 msgstr ""
 "Die Standard-Benutzeroberflächen-Definitionsdatei konnte nicht gefunden "
 "werden"
 
-#: src/frontends/qt/GuiApplication.cpp:3345
+#: src/frontends/qt/GuiApplication.cpp:3356
 msgid ""
 "LyX could not find the default UI file!\n"
 "Please check your installation."
@@ -31553,7 +31583,7 @@ msgstr ""
 "für die Benutzeroberfläche!\n"
 "Bitte überprüfen Sie Ihre Installation."
 
-#: src/frontends/qt/GuiApplication.cpp:3350
+#: src/frontends/qt/GuiApplication.cpp:3361
 #, c-format
 msgid ""
 "Error while reading the configuration file\n"
@@ -31664,12 +31694,12 @@ msgstr "alle Literaturverzeichnisse"
 
 #: src/frontends/qt/GuiBibtex.cpp:456 src/frontends/qt/GuiBibtex.cpp:466
 #: src/frontends/qt/GuiCompare.cpp:163 src/frontends/qt/GuiCompare.cpp:167
-#: src/frontends/qt/GuiDocument.cpp:2895 src/frontends/qt/GuiExternal.cpp:677
-#: src/frontends/qt/GuiGraphics.cpp:789 src/frontends/qt/GuiInclude.cpp:380
+#: src/frontends/qt/GuiDocument.cpp:2903 src/frontends/qt/GuiExternal.cpp:677
+#: src/frontends/qt/GuiGraphics.cpp:826 src/frontends/qt/GuiInclude.cpp:380
 #: src/frontends/qt/GuiLyXFiles.cpp:368 src/frontends/qt/GuiLyXFiles.cpp:374
-#: src/frontends/qt/GuiView.cpp:2578 src/frontends/qt/GuiView.cpp:2637
-#: src/frontends/qt/GuiView.cpp:2777 src/frontends/qt/GuiView.cpp:2911
-#: src/frontends/qt/GuiView.cpp:3031 src/frontends/qt/GuiView.cpp:3153
+#: src/frontends/qt/GuiView.cpp:2615 src/frontends/qt/GuiView.cpp:2674
+#: src/frontends/qt/GuiView.cpp:2814 src/frontends/qt/GuiView.cpp:2948
+#: src/frontends/qt/GuiView.cpp:3068 src/frontends/qt/GuiView.cpp:3190
 msgid "D&ocuments"
 msgstr "Do&kumente"
 
@@ -31751,7 +31781,7 @@ msgid "Filename Suffix"
 msgstr "Erweitere Dateinamen"
 
 #: src/frontends/qt/GuiBranches.cpp:135 src/frontends/qt/GuiBranches.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:3331 src/frontends/qt/GuiDocument.cpp:4626
+#: src/frontends/qt/GuiDocument.cpp:3339 src/frontends/qt/GuiDocument.cpp:4644
 #: src/frontends/qt/GuiProgressView.cpp:144
 #: src/frontends/qt/GuiProgressView.cpp:158
 #: src/frontends/qt/GuiProgressView.cpp:179
@@ -31759,8 +31789,8 @@ msgid "Yes"
 msgstr "Ja"
 
 #: src/frontends/qt/GuiBranches.cpp:135 src/frontends/qt/GuiBranches.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:3330 src/frontends/qt/GuiDocument.cpp:3957
-#: src/frontends/qt/GuiDocument.cpp:4625
+#: src/frontends/qt/GuiDocument.cpp:3338 src/frontends/qt/GuiDocument.cpp:3972
+#: src/frontends/qt/GuiDocument.cpp:4643
 #: src/frontends/qt/GuiProgressView.cpp:110
 #: src/frontends/qt/GuiProgressView.cpp:143
 #: src/frontends/qt/GuiProgressView.cpp:179
@@ -32030,10 +32060,10 @@ msgstr "%1$s Dateien"
 msgid "Choose a filename to save the pasted graphic as"
 msgstr "Wählen Sie einen Dateinamen, um die eingefügte Grafik zu speichern als"
 
-#: src/frontends/qt/GuiClipboard.cpp:220 src/frontends/qt/GuiView.cpp:2655
-#: src/frontends/qt/GuiView.cpp:2796 src/frontends/qt/GuiView.cpp:2812
-#: src/frontends/qt/GuiView.cpp:2824 src/frontends/qt/GuiView.cpp:2841
-#: src/frontends/qt/GuiView.cpp:2926 src/frontends/qt/GuiView.cpp:4359
+#: src/frontends/qt/GuiClipboard.cpp:220 src/frontends/qt/GuiView.cpp:2692
+#: src/frontends/qt/GuiView.cpp:2833 src/frontends/qt/GuiView.cpp:2849
+#: src/frontends/qt/GuiView.cpp:2861 src/frontends/qt/GuiView.cpp:2878
+#: src/frontends/qt/GuiView.cpp:2963 src/frontends/qt/GuiView.cpp:4396
 msgid "Canceled."
 msgstr "Abgebrochen."
 
@@ -32063,8 +32093,8 @@ msgid "Select document"
 msgstr "Dokument wählen"
 
 #: src/frontends/qt/GuiCompare.cpp:157 src/frontends/qt/GuiLyXFiles.cpp:367
-#: src/frontends/qt/GuiView.cpp:2582 src/frontends/qt/GuiView.cpp:2641
-#: src/frontends/qt/GuiView.cpp:2915 src/frontends/qt/GuiView.cpp:3042
+#: src/frontends/qt/GuiView.cpp:2619 src/frontends/qt/GuiView.cpp:2678
+#: src/frontends/qt/GuiView.cpp:2952 src/frontends/qt/GuiView.cpp:3079
 msgid "LyX Documents (*.lyx)"
 msgstr "LyX-Dokumente (*.lyx)"
 
@@ -32116,15 +32146,15 @@ msgstr "Bigg"
 msgid "Math Delimiter"
 msgstr "Mathe-Trennzeichen"
 
-#: src/frontends/qt/GuiDelimiter.cpp:271 src/frontends/qt/GuiDelimiter.cpp:274
+#: src/frontends/qt/GuiDelimiter.cpp:272 src/frontends/qt/GuiDelimiter.cpp:275
 msgid "(None)"
 msgstr "(Kein)"
 
-#: src/frontends/qt/GuiDelimiter.cpp:272 src/frontends/qt/GuiDelimiter.cpp:275
+#: src/frontends/qt/GuiDelimiter.cpp:273 src/frontends/qt/GuiDelimiter.cpp:276
 msgid "No Delimiter"
 msgstr "Kein Trennzeichen"
 
-#: src/frontends/qt/GuiDelimiter.cpp:280
+#: src/frontends/qt/GuiDelimiter.cpp:281
 msgid "Variable"
 msgstr "Variabel"
 
@@ -32398,54 +32428,54 @@ msgstr "JIS B5"
 msgid "JIS B6"
 msgstr "JIS B6"
 
-#: src/frontends/qt/GuiDocument.cpp:1355
+#: src/frontends/qt/GuiDocument.cpp:1357
 msgid "Numbered"
 msgstr "Nummeriert"
 
-#: src/frontends/qt/GuiDocument.cpp:1356
+#: src/frontends/qt/GuiDocument.cpp:1358
 msgid "Appears in TOC"
 msgstr "Erscheint im Inhaltsverzeichnis"
 
-#: src/frontends/qt/GuiDocument.cpp:1444
+#: src/frontends/qt/GuiDocument.cpp:1446
 msgid "Package"
 msgstr "Paket"
 
-#: src/frontends/qt/GuiDocument.cpp:1444
+#: src/frontends/qt/GuiDocument.cpp:1446
 msgid "Load automatically"
 msgstr "Automatisch laden"
 
-#: src/frontends/qt/GuiDocument.cpp:1445
+#: src/frontends/qt/GuiDocument.cpp:1447
 msgid "Load always"
 msgstr "Immer laden"
 
-#: src/frontends/qt/GuiDocument.cpp:1445
+#: src/frontends/qt/GuiDocument.cpp:1447
 msgid "Do not load"
 msgstr "Nicht laden"
 
-#: src/frontends/qt/GuiDocument.cpp:1457
+#: src/frontends/qt/GuiDocument.cpp:1459
 msgid "The AMS LaTeX packages are always used"
 msgstr "Die AMS-LaTeX-Pakete werden immer verwendet"
 
-#: src/frontends/qt/GuiDocument.cpp:1460
+#: src/frontends/qt/GuiDocument.cpp:1462
 #, c-format
 msgid "The LaTeX package %1$s is always used"
 msgstr "Das LaTeX-Paket %1$s wird immer verwendet"
 
-#: src/frontends/qt/GuiDocument.cpp:1465
+#: src/frontends/qt/GuiDocument.cpp:1467
 msgid "The AMS LaTeX packages are never used"
 msgstr "Die AMS-LaTeX-Pakete werden nie verwendet"
 
-#: src/frontends/qt/GuiDocument.cpp:1468
+#: src/frontends/qt/GuiDocument.cpp:1470
 #, c-format
 msgid "The LaTeX package %1$s is never used"
 msgstr "Das LaTeX-Paket %1$s wird nie verwendet"
 
-#: src/frontends/qt/GuiDocument.cpp:1605 src/frontends/qt/GuiDocument.cpp:2874
+#: src/frontends/qt/GuiDocument.cpp:1607 src/frontends/qt/GuiDocument.cpp:2882
 #, c-format
 msgid "%1$s [Class '%2$s']"
 msgstr "%1$s [Klasse '%2$s']"
 
-#: src/frontends/qt/GuiDocument.cpp:1608
+#: src/frontends/qt/GuiDocument.cpp:1610
 #, c-format
 msgid ""
 "Class not found by LyX. Please check if you have the matching %1$s class and "
@@ -32454,83 +32484,83 @@ msgstr ""
 "Klasse wurde von LyX nicht gefunden. Bitte prüfen Sie, ob Sie die "
 "entsprechende %1$s-Klasse und alle nötigen Pakete (%2$s) installiert haben."
 
-#: src/frontends/qt/GuiDocument.cpp:1670
+#: src/frontends/qt/GuiDocument.cpp:1672
 msgid "All avail. modules"
 msgstr "Alle verf. Module"
 
-#: src/frontends/qt/GuiDocument.cpp:1762 src/frontends/qt/GuiDocument.cpp:1986
+#: src/frontends/qt/GuiDocument.cpp:1766 src/frontends/qt/GuiDocument.cpp:1990
 msgid "Input listings parameters below. Enter ? for a list of parameters."
 msgstr ""
 "Geben Sie unten Listing-Parameter ein. Geben Sie '?' für eine Liste gültiger "
 "Parameter ein."
 
-#: src/frontends/qt/GuiDocument.cpp:1769
+#: src/frontends/qt/GuiDocument.cpp:1773
 msgid "Document Class"
 msgstr "Dokumentklasse"
 
-#: src/frontends/qt/GuiDocument.cpp:1772
+#: src/frontends/qt/GuiDocument.cpp:1776
 msgid "Local Layout"
 msgstr "Lokales Format"
 
-#: src/frontends/qt/GuiDocument.cpp:1774
+#: src/frontends/qt/GuiDocument.cpp:1778
 msgid "Text Layout"
 msgstr "Textformat"
 
-#: src/frontends/qt/GuiDocument.cpp:1776
+#: src/frontends/qt/GuiDocument.cpp:1780
 msgid "Page Margins"
 msgstr "Seitenränder"
 
-#: src/frontends/qt/GuiDocument.cpp:1778 src/frontends/qt/GuiPrefs.cpp:1076
+#: src/frontends/qt/GuiDocument.cpp:1782 src/frontends/qt/GuiPrefs.cpp:1080
 msgid "Colors"
 msgstr "Farben"
 
-#: src/frontends/qt/GuiDocument.cpp:1779
+#: src/frontends/qt/GuiDocument.cpp:1783
 msgid "Change Tracking"
 msgstr "Änderungsverfolgung"
 
-#: src/frontends/qt/GuiDocument.cpp:1780
+#: src/frontends/qt/GuiDocument.cpp:1784
 msgid "Numbering & TOC"
 msgstr "Nummerierung & Inhaltsverzeichnis"
 
-#: src/frontends/qt/GuiDocument.cpp:1782
+#: src/frontends/qt/GuiDocument.cpp:1786
 msgid "Indexes"
 msgstr "Stichwortverzeichnis"
 
-#: src/frontends/qt/GuiDocument.cpp:1783
+#: src/frontends/qt/GuiDocument.cpp:1787
 msgid "PDF Properties"
 msgstr "PDF-Eigenschaften"
 
-#: src/frontends/qt/GuiDocument.cpp:1784
+#: src/frontends/qt/GuiDocument.cpp:1788
 msgid "Math Options"
 msgstr "Mathe-Optionen"
 
-#: src/frontends/qt/GuiDocument.cpp:1787
+#: src/frontends/qt/GuiDocument.cpp:1791
 msgid "Bullets"
 msgstr "Auflistungszeichen"
 
-#: src/frontends/qt/GuiDocument.cpp:1789
+#: src/frontends/qt/GuiDocument.cpp:1793
 msgid "Formats[[output]]"
 msgstr "Formate"
 
-#: src/frontends/qt/GuiDocument.cpp:1790
+#: src/frontends/qt/GuiDocument.cpp:1794
 msgid "LaTeX Preamble"
 msgstr "LaTeX-Vorspann"
 
-#: src/frontends/qt/GuiDocument.cpp:2095 src/frontends/qt/GuiDocument.cpp:2181
+#: src/frontends/qt/GuiDocument.cpp:2099 src/frontends/qt/GuiDocument.cpp:2185
 msgid "Class defaults"
 msgstr "Klassenvoreinstellung"
 
-#: src/frontends/qt/GuiDocument.cpp:2095 src/frontends/qt/GuiDocument.cpp:2181
+#: src/frontends/qt/GuiDocument.cpp:2099 src/frontends/qt/GuiDocument.cpp:2185
 msgid "Package defaults"
 msgstr "Paketvoreinstellung"
 
-#: src/frontends/qt/GuiDocument.cpp:2098 src/frontends/qt/GuiDocument.cpp:2184
+#: src/frontends/qt/GuiDocument.cpp:2102 src/frontends/qt/GuiDocument.cpp:2188
 msgid "If no value is given, the defaults as set by the class are used."
 msgstr ""
 "Wenn kein Wert angegeben wird, werden die Voreinstellungen der Klasse "
 "verwendet."
 
-#: src/frontends/qt/GuiDocument.cpp:2099 src/frontends/qt/GuiDocument.cpp:2185
+#: src/frontends/qt/GuiDocument.cpp:2103 src/frontends/qt/GuiDocument.cpp:2189
 msgid ""
 "If no value is given, the defaults as set by the geometry package or a "
 "package/class overriding geometry's defaults are used."
@@ -32539,49 +32569,49 @@ msgstr ""
 "Pakets oder eines Pakets bzw. der Klasse verwendet, falls diese die Geometry-"
 "Voreinstellungen überschreiben."
 
-#: src/frontends/qt/GuiDocument.cpp:2228 src/frontends/qt/GuiDocument.cpp:2258
+#: src/frontends/qt/GuiDocument.cpp:2232 src/frontends/qt/GuiDocument.cpp:2262
 msgid "&Default..."
 msgstr "Stan&dard..."
 
-#: src/frontends/qt/GuiDocument.cpp:2459
+#: src/frontends/qt/GuiDocument.cpp:2463
 msgid "Direct (No inputenc)"
 msgstr "Direkt (ohne inputenc)"
 
-#: src/frontends/qt/GuiDocument.cpp:2461
+#: src/frontends/qt/GuiDocument.cpp:2465
 msgid "Direct (XeTeX/LuaTeX)"
 msgstr "Direkt (XeTeX/LuaTeX)"
 
-#: src/frontends/qt/GuiDocument.cpp:2647 src/frontends/qt/GuiDocument.cpp:4301
-#: src/frontends/qt/GuiDocument.cpp:4310 src/frontends/qt/GuiDocument.cpp:4319
-#: src/frontends/qt/GuiDocument.cpp:4328
+#: src/frontends/qt/GuiDocument.cpp:2651 src/frontends/qt/GuiDocument.cpp:4316
+#: src/frontends/qt/GuiDocument.cpp:4325 src/frontends/qt/GuiDocument.cpp:4334
+#: src/frontends/qt/GuiDocument.cpp:4343
 msgid " (not installed)"
 msgstr " (nicht installiert)"
 
-#: src/frontends/qt/GuiDocument.cpp:2676
+#: src/frontends/qt/GuiDocument.cpp:2680
 msgid "Non-TeX Fonts Default"
 msgstr "Voreinstellung Nicht-TeX Schriften"
 
-#: src/frontends/qt/GuiDocument.cpp:2678
+#: src/frontends/qt/GuiDocument.cpp:2682
 msgid " (not available)"
 msgstr " (nicht verfügbar)"
 
-#: src/frontends/qt/GuiDocument.cpp:2679
+#: src/frontends/qt/GuiDocument.cpp:2683
 msgid "Class Default (TeX Fonts)"
 msgstr "Klassenvoreinstellungen (TeX-Schriften)"
 
-#: src/frontends/qt/GuiDocument.cpp:2826
+#: src/frontends/qt/GuiDocument.cpp:2834
 msgid "Lay&outs"
 msgstr "F&ormatdateien"
 
-#: src/frontends/qt/GuiDocument.cpp:2828
+#: src/frontends/qt/GuiDocument.cpp:2836
 msgid "LyX Layout (*.layout)"
 msgstr "LyX-Formatdatei (*.layout)"
 
-#: src/frontends/qt/GuiDocument.cpp:2830 src/frontends/qt/GuiDocument.cpp:2839
+#: src/frontends/qt/GuiDocument.cpp:2838 src/frontends/qt/GuiDocument.cpp:2847
 msgid "Local layout file"
 msgstr "Lokale Formatdatei"
 
-#: src/frontends/qt/GuiDocument.cpp:2840
+#: src/frontends/qt/GuiDocument.cpp:2848
 msgid ""
 "The layout file you have selected is a local layout\n"
 "file, not one in the system or user directory.\n"
@@ -32594,35 +32624,35 @@ msgstr ""
 "kann, müssen Sie sicherstellen, dass die Formatdatei\n"
 "nicht verschoben wird."
 
-#: src/frontends/qt/GuiDocument.cpp:2844
+#: src/frontends/qt/GuiDocument.cpp:2852
 msgid "&Set Layout"
 msgstr "&Layout übernehmen"
 
-#: src/frontends/qt/GuiDocument.cpp:2858
+#: src/frontends/qt/GuiDocument.cpp:2866
 msgid "Unable to read local layout file."
 msgstr "Lokale Formatdatei kann nicht gelesen werden."
 
-#: src/frontends/qt/GuiDocument.cpp:2875
+#: src/frontends/qt/GuiDocument.cpp:2883
 msgid "This is a local layout file."
 msgstr "Dies ist eine lokale Formatdatei."
 
-#: src/frontends/qt/GuiDocument.cpp:2889
+#: src/frontends/qt/GuiDocument.cpp:2897
 msgid "Select master document"
 msgstr "Hauptdokument wählen"
 
-#: src/frontends/qt/GuiDocument.cpp:2893
+#: src/frontends/qt/GuiDocument.cpp:2901
 msgid "LyX Files (*.lyx)"
 msgstr "LyX-Dokumente (*.lyx)"
 
 # , c-format
 # , c-format
-#: src/frontends/qt/GuiDocument.cpp:2917 src/frontends/qt/GuiDocument.cpp:3218
-#: src/frontends/qt/GuiDocument.cpp:4817
+#: src/frontends/qt/GuiDocument.cpp:2925 src/frontends/qt/GuiDocument.cpp:3226
+#: src/frontends/qt/GuiDocument.cpp:4835
 msgid "Unapplied changes"
 msgstr "Nicht übernommene Änderungen"
 
-#: src/frontends/qt/GuiDocument.cpp:2918 src/frontends/qt/GuiDocument.cpp:3219
-#: src/frontends/qt/GuiDocument.cpp:4818
+#: src/frontends/qt/GuiDocument.cpp:2926 src/frontends/qt/GuiDocument.cpp:3227
+#: src/frontends/qt/GuiDocument.cpp:4836
 msgid ""
 "Some changes in the dialog were not yet applied.\n"
 "If you do not apply now, they will be lost after this action."
@@ -32631,86 +32661,86 @@ msgstr ""
 "Wenn Sie sie jetzt nicht anwenden, werden sie nach dieser\n"
 "Aktion verlorengehen."
 
-#: src/frontends/qt/GuiDocument.cpp:2920 src/frontends/qt/GuiDocument.cpp:3221
-#: src/frontends/qt/GuiDocument.cpp:4820
+#: src/frontends/qt/GuiDocument.cpp:2928 src/frontends/qt/GuiDocument.cpp:3229
+#: src/frontends/qt/GuiDocument.cpp:4838
 msgid "&Apply"
 msgstr "&Anwenden"
 
-#: src/frontends/qt/GuiDocument.cpp:2920 src/frontends/qt/GuiDocument.cpp:3221
-#: src/frontends/qt/GuiDocument.cpp:4820
+#: src/frontends/qt/GuiDocument.cpp:2928 src/frontends/qt/GuiDocument.cpp:3229
+#: src/frontends/qt/GuiDocument.cpp:4838
 msgid "&Dismiss"
 msgstr "&Ablehnen"
 
-#: src/frontends/qt/GuiDocument.cpp:2931 src/frontends/qt/GuiDocument.cpp:4828
+#: src/frontends/qt/GuiDocument.cpp:2939 src/frontends/qt/GuiDocument.cpp:4846
 msgid "Unable to set document class."
 msgstr "Kann Dokumentklasse nicht einstellen."
 
-#: src/frontends/qt/GuiDocument.cpp:3097
+#: src/frontends/qt/GuiDocument.cpp:3105
 msgid "Basic numerical"
 msgstr "Einfach nummerisch"
 
-#: src/frontends/qt/GuiDocument.cpp:3100
+#: src/frontends/qt/GuiDocument.cpp:3108
 msgid "Author-year"
 msgstr "Autor-Jahr"
 
-#: src/frontends/qt/GuiDocument.cpp:3103
+#: src/frontends/qt/GuiDocument.cpp:3111
 msgid "Author-number"
 msgstr "Autor-Nummer"
 
-#: src/frontends/qt/GuiDocument.cpp:3143
+#: src/frontends/qt/GuiDocument.cpp:3151
 #, c-format
 msgid "%1$s and %2$s"
 msgstr "%1$s und %2$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3150
+#: src/frontends/qt/GuiDocument.cpp:3158
 #, c-format
 msgid "%1$s, %2$s"
 msgstr "%1$s, %2$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3155
+#: src/frontends/qt/GuiDocument.cpp:3163
 #, c-format
 msgid "%1$s, %2$s, and %3$s"
 msgstr "%1$s, %2$s und %3$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3169
+#: src/frontends/qt/GuiDocument.cpp:3177
 #, c-format
 msgid "%1$s (unavailable)"
 msgstr "%1$s (nicht verfügbar)"
 
-#: src/frontends/qt/GuiDocument.cpp:3268
+#: src/frontends/qt/GuiDocument.cpp:3276
 msgid "Module provided by document class."
 msgstr "Von der Dokumentklasse bereitgestelltes Modul."
 
-#: src/frontends/qt/GuiDocument.cpp:3276
+#: src/frontends/qt/GuiDocument.cpp:3284
 #, c-format
 msgid "<p><b>Category:</b> %1$s.</p>"
 msgstr "<p><b>Kategorie:</b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3286
+#: src/frontends/qt/GuiDocument.cpp:3294
 #, c-format
 msgid "<p><b>Package(s) required:</b> %1$s.</p>"
 msgstr "<p><b>Benötigte Pakete:</b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3292
+#: src/frontends/qt/GuiDocument.cpp:3300
 msgid "or"
 msgstr "oder"
 
-#: src/frontends/qt/GuiDocument.cpp:3295
+#: src/frontends/qt/GuiDocument.cpp:3303
 #, c-format
 msgid "<p><b>Modules required:</b> %1$s.</p>"
 msgstr "<p><b>Benötigte Module:</b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3304
+#: src/frontends/qt/GuiDocument.cpp:3312
 #, c-format
 msgid "<p><b>Modules excluded:</b> %1$s.</p>"
 msgstr "<p><b>Ausgeschlossene Module:</b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3309
+#: src/frontends/qt/GuiDocument.cpp:3317
 #, c-format
 msgid "<p><b>Filename:</b> <tt>%1$s.module</tt>.</p>"
 msgstr "<p><b>Dateiname:</b> <tt>%1$s.module</tt>.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3314
+#: src/frontends/qt/GuiDocument.cpp:3322
 msgid ""
 "<p><font color=red><b>WARNING: Some required packages are unavailable!</b></"
 "font></p>"
@@ -32718,61 +32748,61 @@ msgstr ""
 "<p><font color=red><b>WARNUNG: Einige benötigte Pakete sind nicht verfügbar!"
 "</b></font></p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3959
+#: src/frontends/qt/GuiDocument.cpp:3974
 msgid "per part"
 msgstr "pro Teil"
 
-#: src/frontends/qt/GuiDocument.cpp:3961
+#: src/frontends/qt/GuiDocument.cpp:3976
 msgid "per chapter"
 msgstr "pro Kapitel"
 
-#: src/frontends/qt/GuiDocument.cpp:3963
+#: src/frontends/qt/GuiDocument.cpp:3978
 msgid "per section"
 msgstr "pro Abschnitt"
 
-#: src/frontends/qt/GuiDocument.cpp:3965
+#: src/frontends/qt/GuiDocument.cpp:3980
 msgid "per subsection"
 msgstr "pro Unterabschnitt"
 
-#: src/frontends/qt/GuiDocument.cpp:3966
+#: src/frontends/qt/GuiDocument.cpp:3981
 msgid "per child document"
 msgstr "pro Unterdokument"
 
-#: src/frontends/qt/GuiDocument.cpp:3993
+#: src/frontends/qt/GuiDocument.cpp:4008
 #, c-format
 msgid "%1$s (not available)"
 msgstr "%1$s (nicht verfügbar)"
 
-#: src/frontends/qt/GuiDocument.cpp:4221
+#: src/frontends/qt/GuiDocument.cpp:4236
 msgid "[No options predefined]"
 msgstr "[Keine Optionen vordefiniert]"
 
-#: src/frontends/qt/GuiDocument.cpp:4488
+#: src/frontends/qt/GuiDocument.cpp:4503
 msgid "C&ustomize Hyperref Options"
 msgstr "H&yperref-Optionen anpassen"
 
-#: src/frontends/qt/GuiDocument.cpp:4490
+#: src/frontends/qt/GuiDocument.cpp:4505
 msgid "&Use Hyperref Support"
 msgstr "Hyperref-Unterstützung &verwenden"
 
-#: src/frontends/qt/GuiDocument.cpp:4840
+#: src/frontends/qt/GuiDocument.cpp:4858
 msgid "Can't set layout!"
 msgstr "Kann Format nicht verwenden!"
 
-#: src/frontends/qt/GuiDocument.cpp:4841
+#: src/frontends/qt/GuiDocument.cpp:4859
 #, c-format
 msgid "Unable to set layout for ID: %1$s"
 msgstr "Kann Format für ID '%1$s' nicht verwenden"
 
-#: src/frontends/qt/GuiDocument.cpp:4944
+#: src/frontends/qt/GuiDocument.cpp:4962
 msgid "Not Found"
 msgstr "Nicht gefunden"
 
-#: src/frontends/qt/GuiDocument.cpp:5006
+#: src/frontends/qt/GuiDocument.cpp:5024
 msgid "Assigned master does not include this file"
 msgstr "Zugewiesenes Hauptdokument bettet diese Datei nicht ein"
 
-#: src/frontends/qt/GuiDocument.cpp:5007
+#: src/frontends/qt/GuiDocument.cpp:5025
 #, c-format
 msgid ""
 "You must include this file in the document\n"
@@ -32783,11 +32813,11 @@ msgstr ""
 "'%1$s' einbetten, sonst bleibt die\n"
 "vorgenommene Zuordnung des Hauptdokuments wirkungslos."
 
-#: src/frontends/qt/GuiDocument.cpp:5011
+#: src/frontends/qt/GuiDocument.cpp:5029
 msgid "Could not load master"
 msgstr "Konnte das Hauptdokument nicht laden"
 
-#: src/frontends/qt/GuiDocument.cpp:5012
+#: src/frontends/qt/GuiDocument.cpp:5030
 #, c-format
 msgid ""
 "The master document '%1$s'\n"
@@ -32796,23 +32826,23 @@ msgstr ""
 "Das Hauptdokument '%1$s'\n"
 "konnte nicht geladen werden."
 
-#: src/frontends/qt/GuiDocument.cpp:5162
+#: src/frontends/qt/GuiDocument.cpp:5180
 msgid "%1 (missing req.)"
 msgstr "%1 (fehlende Vor.)"
 
-#: src/frontends/qt/GuiDocument.cpp:5174
+#: src/frontends/qt/GuiDocument.cpp:5192
 msgid "personal module"
 msgstr "persönliches Modul"
 
-#: src/frontends/qt/GuiDocument.cpp:5174
+#: src/frontends/qt/GuiDocument.cpp:5192
 msgid "distributed module"
 msgstr "mitgeliefertes Modul"
 
-#: src/frontends/qt/GuiDocument.cpp:5175
+#: src/frontends/qt/GuiDocument.cpp:5193
 msgid "<b>Module name:</b> <i>%1</i> (%2)"
 msgstr "<b>Modulname:</b> <i>%1</i> (%2)"
 
-#: src/frontends/qt/GuiDocument.cpp:5181
+#: src/frontends/qt/GuiDocument.cpp:5199
 msgid "<b>Note:</b> Some requirements for this module are missing!"
 msgstr ""
 "<b>Achtung:</b> Einige Voraussetzungen für dieses Modul sind nicht gegeben!"
@@ -32948,43 +32978,43 @@ msgstr "Gruppe bereits definiert!"
 msgid "A graphics group with the name '%1$s' already exists."
 msgstr "Eine Grafikgruppe des Namens '%1$s' existiert bereits."
 
-#: src/frontends/qt/GuiGraphics.cpp:468
+#: src/frontends/qt/GuiGraphics.cpp:474
 msgid "Set max. &width:"
 msgstr "Max. &Breite festlegen:"
 
-#: src/frontends/qt/GuiGraphics.cpp:469
+#: src/frontends/qt/GuiGraphics.cpp:475
 msgid "Set max. &height:"
 msgstr "Max. &Höhe festlegen:"
 
-#: src/frontends/qt/GuiGraphics.cpp:470
+#: src/frontends/qt/GuiGraphics.cpp:476
 msgid "Maximal width of image in output"
 msgstr "Maximale Breite des Bilds bei der Ausgabe"
 
-#: src/frontends/qt/GuiGraphics.cpp:471
+#: src/frontends/qt/GuiGraphics.cpp:477
 msgid "Maximal height of image in output"
 msgstr "Maximale Höhe des Bilds bei der Ausgabe"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:40
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:40
 msgid "bp"
 msgstr "bp"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:40
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:40
 msgid "cm"
 msgstr "cm"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:41
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:41
 msgid "mm"
 msgstr "mm"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:41
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:41
 msgid "in[[unit of measure]]"
 msgstr "in"
 
-#: src/frontends/qt/GuiGraphics.cpp:776
+#: src/frontends/qt/GuiGraphics.cpp:813
 msgid "Select graphics file"
 msgstr "Wählen Sie eine Grafikdatei"
 
-#: src/frontends/qt/GuiGraphics.cpp:788
+#: src/frontends/qt/GuiGraphics.cpp:825
 msgid "&Clipart"
 msgstr "&Clipart"
 
@@ -33495,17 +33525,17 @@ msgstr ""
 msgid "Select example file"
 msgstr "Wählen Sie eine Beispieldatei"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:369 src/frontends/qt/GuiView.cpp:2638
-#: src/frontends/qt/GuiView.cpp:2778 src/frontends/qt/GuiView.cpp:2912
+#: src/frontends/qt/GuiLyXFiles.cpp:369 src/frontends/qt/GuiView.cpp:2675
+#: src/frontends/qt/GuiView.cpp:2815 src/frontends/qt/GuiView.cpp:2949
 msgid "&Examples"
 msgstr "&Beispiele"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:373 src/frontends/qt/GuiView.cpp:2577
+#: src/frontends/qt/GuiLyXFiles.cpp:373 src/frontends/qt/GuiView.cpp:2614
 msgid "Select template file"
 msgstr "Wählen Sie eine Vorlagendatei"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:375 src/frontends/qt/GuiView.cpp:2579
-#: src/frontends/qt/GuiView.cpp:3032
+#: src/frontends/qt/GuiLyXFiles.cpp:375 src/frontends/qt/GuiView.cpp:2616
+#: src/frontends/qt/GuiView.cpp:3069
 msgid "&Templates"
 msgstr "&Vorlagen"
 
@@ -33632,7 +33662,7 @@ msgstr ""
 "Normalerweise müssen Sie diese Breite nicht festlegen, da die maximale "
 "Breite aller Punkte verwendet wird."
 
-#: src/frontends/qt/GuiParagraph.cpp:175 src/frontends/qt/GuiView.cpp:3310
+#: src/frontends/qt/GuiParagraph.cpp:175 src/frontends/qt/GuiView.cpp:3347
 msgid "&Close"
 msgstr "&Schließen"
 
@@ -33669,71 +33699,71 @@ msgstr "&Befehl:"
 msgid "Screen Fonts"
 msgstr "Bildschirmschriften"
 
-#: src/frontends/qt/GuiPrefs.cpp:1401
+#: src/frontends/qt/GuiPrefs.cpp:1400
 msgid "Paths"
 msgstr "Pfade"
 
-#: src/frontends/qt/GuiPrefs.cpp:1488
+#: src/frontends/qt/GuiPrefs.cpp:1487
 msgid "Select directory for example files"
 msgstr "Wählen Sie ein Verzeichnis für Beispieldateien"
 
-#: src/frontends/qt/GuiPrefs.cpp:1497
+#: src/frontends/qt/GuiPrefs.cpp:1496
 msgid "Select a document templates directory"
 msgstr "Wählen Sie ein Verzeichnis für die Dokumentvorlagen"
 
-#: src/frontends/qt/GuiPrefs.cpp:1506
+#: src/frontends/qt/GuiPrefs.cpp:1505
 msgid "Select a temporary directory"
 msgstr "Wählen Sie ein temporäres Verzeichnis"
 
-#: src/frontends/qt/GuiPrefs.cpp:1515
+#: src/frontends/qt/GuiPrefs.cpp:1514
 msgid "Select a backups directory"
 msgstr "Wählen Sie ein Verzeichnis für Sicherungen"
 
-#: src/frontends/qt/GuiPrefs.cpp:1524
+#: src/frontends/qt/GuiPrefs.cpp:1523
 msgid "Select a document directory"
 msgstr "Wählen Sie ein Dokumentverzeichnis"
 
-#: src/frontends/qt/GuiPrefs.cpp:1533
+#: src/frontends/qt/GuiPrefs.cpp:1532
 msgid "Set the path to the thesaurus dictionaries"
 msgstr "Den Pfad zum Thesaurus-Wörterbuch festlegen"
 
-#: src/frontends/qt/GuiPrefs.cpp:1542
+#: src/frontends/qt/GuiPrefs.cpp:1541
 msgid "Set the path to the Hunspell dictionaries"
 msgstr "Den Pfad zu den Hunspell-Wörterbüchern festlegen"
 
-#: src/frontends/qt/GuiPrefs.cpp:1551
+#: src/frontends/qt/GuiPrefs.cpp:1550
 msgid "Give a filename for the LyX server pipe"
 msgstr "Geben Sie einen Dateinamen für die LyX-Server-Weiterleitung an"
 
-#: src/frontends/qt/GuiPrefs.cpp:1564 src/frontends/qt/GuiSpellchecker.cpp:642
+#: src/frontends/qt/GuiPrefs.cpp:1563 src/frontends/qt/GuiSpellchecker.cpp:642
 msgid "Spellchecker"
 msgstr "Rechtschreibprüfung"
 
-#: src/frontends/qt/GuiPrefs.cpp:1570
+#: src/frontends/qt/GuiPrefs.cpp:1569
 msgid "Native"
 msgstr "Nativ"
 
-#: src/frontends/qt/GuiPrefs.cpp:1576
+#: src/frontends/qt/GuiPrefs.cpp:1575
 msgid "Aspell"
 msgstr "Aspell"
 
-#: src/frontends/qt/GuiPrefs.cpp:1579
+#: src/frontends/qt/GuiPrefs.cpp:1578
 msgid "Enchant"
 msgstr "Enchant"
 
-#: src/frontends/qt/GuiPrefs.cpp:1582
+#: src/frontends/qt/GuiPrefs.cpp:1581
 msgid "Hunspell"
 msgstr "Hunspell"
 
-#: src/frontends/qt/GuiPrefs.cpp:1655
+#: src/frontends/qt/GuiPrefs.cpp:1654
 msgid "Converters"
 msgstr "Konverter"
 
-#: src/frontends/qt/GuiPrefs.cpp:1895
+#: src/frontends/qt/GuiPrefs.cpp:1894
 msgid "SECURITY WARNING!"
 msgstr "SICHERHEITSWARNUNG!"
 
-#: src/frontends/qt/GuiPrefs.cpp:1895
+#: src/frontends/qt/GuiPrefs.cpp:1894
 msgid ""
 "Unchecking this option has the effect that potentially harmful converters "
 "would be run without asking your permission first. This is UNSAFE and NOT "
@@ -33746,15 +33776,15 @@ msgstr ""
 "tun. Sind Sie sicher, dass Sie fortfahren möchten? Die empfohlene und "
 "sichere Antwort ist NEIN!"
 
-#: src/frontends/qt/GuiPrefs.cpp:2015
+#: src/frontends/qt/GuiPrefs.cpp:2014
 msgid "File Formats"
 msgstr "Dateiformate"
 
-#: src/frontends/qt/GuiPrefs.cpp:2258 src/frontends/qt/GuiPrefs.cpp:2410
+#: src/frontends/qt/GuiPrefs.cpp:2257 src/frontends/qt/GuiPrefs.cpp:2409
 msgid "Format in use"
 msgstr "Format wird verwendet"
 
-#: src/frontends/qt/GuiPrefs.cpp:2259
+#: src/frontends/qt/GuiPrefs.cpp:2258
 msgid ""
 "You cannot change a format's short name if the format is used by a "
 "converter. Please remove the converter first."
@@ -33762,17 +33792,17 @@ msgstr ""
 "Der Kurztitel eines Formats, das von einem Konverter verwendet wird, kann "
 "nicht umbenannt werden. Bitte entfernen Sie zunächst den Konverter."
 
-#: src/frontends/qt/GuiPrefs.cpp:2411
+#: src/frontends/qt/GuiPrefs.cpp:2410
 msgid "Cannot remove a Format used by a Converter. Remove the converter first."
 msgstr ""
 "Ein Format, das von einem Konverter verwendet wird, kann nicht entfernt "
 "werden. Bitte entfernen Sie zunächst den Konverter."
 
-#: src/frontends/qt/GuiPrefs.cpp:2511
+#: src/frontends/qt/GuiPrefs.cpp:2510
 msgid "LyX needs to be restarted!"
 msgstr "LyX muss neu gestartet werden!"
 
-#: src/frontends/qt/GuiPrefs.cpp:2512
+#: src/frontends/qt/GuiPrefs.cpp:2511
 msgid ""
 "The change of user interface language will be fully effective only after a "
 "restart."
@@ -33780,82 +33810,82 @@ msgstr ""
 "Die Änderung der Sprache der Benutzeroberfläche wird erst nach einem "
 "Neustart von LyX wirksam."
 
-#: src/frontends/qt/GuiPrefs.cpp:2612
+#: src/frontends/qt/GuiPrefs.cpp:2611
 msgid "User Interface"
 msgstr "Benutzeroberfläche"
 
-#: src/frontends/qt/GuiPrefs.cpp:2631
+#: src/frontends/qt/GuiPrefs.cpp:2630
 msgid "Classic"
 msgstr "Klassisch"
 
-#: src/frontends/qt/GuiPrefs.cpp:2632
+#: src/frontends/qt/GuiPrefs.cpp:2631
 msgid "Oxygen"
 msgstr "Oxygen"
 
-#: src/frontends/qt/GuiPrefs.cpp:2683
+#: src/frontends/qt/GuiPrefs.cpp:2682
 msgid "Document Handling"
 msgstr "Dokument-Handhabung"
 
-#: src/frontends/qt/GuiPrefs.cpp:2790
+#: src/frontends/qt/GuiPrefs.cpp:2789
 msgid "Control"
 msgstr "Kontrolle"
 
-#: src/frontends/qt/GuiPrefs.cpp:2911
+#: src/frontends/qt/GuiPrefs.cpp:2910
 msgid "Shortcuts"
 msgstr "Tastenkürzel"
 
-#: src/frontends/qt/GuiPrefs.cpp:2918
+#: src/frontends/qt/GuiPrefs.cpp:2917
 msgid "Function"
 msgstr "Funktion"
 
-#: src/frontends/qt/GuiPrefs.cpp:2919
+#: src/frontends/qt/GuiPrefs.cpp:2918
 msgid "Shortcut"
 msgstr "Tastenkürzel"
 
-#: src/frontends/qt/GuiPrefs.cpp:2996
+#: src/frontends/qt/GuiPrefs.cpp:2995
 msgid "Cursor, Mouse and Editing Functions"
 msgstr "Cursor-, Maus- und Bearbeitungsfunktionen"
 
-#: src/frontends/qt/GuiPrefs.cpp:3000
+#: src/frontends/qt/GuiPrefs.cpp:2999
 msgid "Mathematical Symbols"
 msgstr "Mathematische Symbole"
 
-#: src/frontends/qt/GuiPrefs.cpp:3004
+#: src/frontends/qt/GuiPrefs.cpp:3003
 msgid "Document and Window"
 msgstr "Dokument und Arbeitsbereich"
 
-#: src/frontends/qt/GuiPrefs.cpp:3008
+#: src/frontends/qt/GuiPrefs.cpp:3007
 msgid "Font, Layouts and Textclasses"
 msgstr "Schriften, Absatzformate und Textklassen"
 
-#: src/frontends/qt/GuiPrefs.cpp:3012
+#: src/frontends/qt/GuiPrefs.cpp:3011
 msgid "System and Miscellaneous"
 msgstr "System und Verschiedenes"
 
-#: src/frontends/qt/GuiPrefs.cpp:3149 src/frontends/qt/GuiPrefs.cpp:3209
+#: src/frontends/qt/GuiPrefs.cpp:3148 src/frontends/qt/GuiPrefs.cpp:3208
 msgid "Res&tore"
 msgstr "Zurüc&ksetzen"
 
-#: src/frontends/qt/GuiPrefs.cpp:3377 src/frontends/qt/GuiPrefs.cpp:3386
-#: src/frontends/qt/GuiPrefs.cpp:3392 src/frontends/qt/GuiPrefs.cpp:3456
+#: src/frontends/qt/GuiPrefs.cpp:3376 src/frontends/qt/GuiPrefs.cpp:3385
+#: src/frontends/qt/GuiPrefs.cpp:3391 src/frontends/qt/GuiPrefs.cpp:3455
 msgid "Failed to create shortcut"
 msgstr "Erstellen des Tastenkürzels fehlgeschlagen"
 
-#: src/frontends/qt/GuiPrefs.cpp:3378
+#: src/frontends/qt/GuiPrefs.cpp:3377
 msgid "Unknown or invalid LyX function"
 msgstr "Unbekannte oder ungültige LyX-Funktion"
 
-#: src/frontends/qt/GuiPrefs.cpp:3387
+#: src/frontends/qt/GuiPrefs.cpp:3386
 msgid "This LyX function is hidden and cannot be bound."
 msgstr ""
 "Dies ist eine versteckte LyX-Funktion. Sie kann nicht mit einer "
 "Tastenkombination belegt werden."
 
-#: src/frontends/qt/GuiPrefs.cpp:3393
+#: src/frontends/qt/GuiPrefs.cpp:3392
 msgid "Invalid or empty key sequence"
 msgstr "Ungültige oder leere Tastensequenz"
 
-#: src/frontends/qt/GuiPrefs.cpp:3408
+#: src/frontends/qt/GuiPrefs.cpp:3407
 #, c-format
 msgid ""
 "Shortcut `%1$s' is already bound to %2$s.\n"
@@ -33865,19 +33895,19 @@ msgstr ""
 "Sind Sie sicher, dass Sie dies aufheben und das\n"
 "Tastenkürzel mit %3$s belegen wollen?"
 
-#: src/frontends/qt/GuiPrefs.cpp:3414
+#: src/frontends/qt/GuiPrefs.cpp:3413
 msgid "Redefine shortcut?"
 msgstr "Tastenkürzel neu definieren?"
 
-#: src/frontends/qt/GuiPrefs.cpp:3415
+#: src/frontends/qt/GuiPrefs.cpp:3414
 msgid "&Redefine"
 msgstr "&Neu Definieren"
 
-#: src/frontends/qt/GuiPrefs.cpp:3457
+#: src/frontends/qt/GuiPrefs.cpp:3456
 msgid "Can not insert shortcut to the list"
 msgstr "Kann Tastenkürzel nicht in Liste einfügen"
 
-#: src/frontends/qt/GuiPrefs.cpp:3488
+#: src/frontends/qt/GuiPrefs.cpp:3487
 msgid "Identity"
 msgstr "Identität"
 
@@ -34403,7 +34433,7 @@ msgstr "verankert"
 msgid "Vertical Space Settings"
 msgstr "Einstellungen für vertikalen Abstand"
 
-#: src/frontends/qt/GuiView.cpp:154
+#: src/frontends/qt/GuiView.cpp:156
 msgid ""
 "The Document\n"
 "Processor[[welcome banner]]"
@@ -34411,33 +34441,33 @@ msgstr ""
 "Die bessere\n"
 "Textverarbeitung"
 
-#: src/frontends/qt/GuiView.cpp:155
+#: src/frontends/qt/GuiView.cpp:157
 msgid "1.0[[possibly scale the welcome banner text size]]"
 msgstr "1.1"
 
-#: src/frontends/qt/GuiView.cpp:158
+#: src/frontends/qt/GuiView.cpp:160
 msgid "version "
 msgstr "Version "
 
-#: src/frontends/qt/GuiView.cpp:158
+#: src/frontends/qt/GuiView.cpp:160
 msgid "unknown version"
 msgstr "unbekannte Version"
 
-#: src/frontends/qt/GuiView.cpp:647
+#: src/frontends/qt/GuiView.cpp:648
 msgid "Workarea zoom level. Drag, use Ctrl-+/- or Shift-Mousewheel to adjust."
 msgstr ""
 "Skalierung des Arbeitsbereichs. Um dies anzupassen, verwenden Sie den "
 "Schieber, Strg-+/- oder Umschalt-Mausrad."
 
-#: src/frontends/qt/GuiView.cpp:689 src/frontends/qt/GuiView.cpp:799
-#: src/frontends/qt/GuiView.cpp:969 src/frontends/qt/Menus.cpp:1843
+#: src/frontends/qt/GuiView.cpp:690 src/frontends/qt/GuiView.cpp:803
+#: src/frontends/qt/GuiView.cpp:973 src/frontends/qt/Menus.cpp:1843
 #: src/frontends/qt/Menus.cpp:1847 src/frontends/qt/Menus.cpp:1851
 #: src/frontends/qt/Menus.cpp:1855 src/frontends/qt/Menus.cpp:1859
 #: src/frontends/qt/Menus.cpp:1863
 msgid "[[ZOOM]]%1$d%"
 msgstr "%1$d%"
 
-#: src/frontends/qt/GuiView.cpp:705
+#: src/frontends/qt/GuiView.cpp:709
 msgid ""
 "WARNING: LaTeX is allowed to execute external commands for this document. "
 "Right click to change."
@@ -34445,114 +34475,118 @@ msgstr ""
 "ACHTUNG: LaTeX darf für dieses Dokument beliebige externe Befehle ausführen. "
 "Um dies zu ändern, klicken Sie die rechte Maustaste."
 
-#: src/frontends/qt/GuiView.cpp:784
+#: src/frontends/qt/GuiView.cpp:788
 msgid "Cancel Export?"
 msgstr "Export abbrechen?"
 
-#: src/frontends/qt/GuiView.cpp:785
+#: src/frontends/qt/GuiView.cpp:789
 msgid "Do you want to cancel the background export process?"
 msgstr "Wollen Sie den Exportvorgang im Hintergrund abbrechen?"
 
-#: src/frontends/qt/GuiView.cpp:788
+#: src/frontends/qt/GuiView.cpp:792
 msgid "Co&ntinue"
 msgstr "&Fortfahren"
 
-#: src/frontends/qt/GuiView.cpp:865
+#: src/frontends/qt/GuiView.cpp:869
 #, c-format
 msgid "Successful export to format: %1$s"
 msgstr "Export in das Format %1$s erfolgreich"
 
-#: src/frontends/qt/GuiView.cpp:874
+#: src/frontends/qt/GuiView.cpp:878
 #, c-format
 msgid "Error while exporting format: %1$s"
 msgstr "Fehler beim Export in das Formats %1$s"
 
-#: src/frontends/qt/GuiView.cpp:877
+#: src/frontends/qt/GuiView.cpp:881
 #, c-format
 msgid "Successful preview of format: %1$s"
 msgstr "Erfolgreiche Vorschau des Formats %1$s"
 
-#: src/frontends/qt/GuiView.cpp:880
+#: src/frontends/qt/GuiView.cpp:884
 #, c-format
 msgid "Error while previewing format: %1$s"
 msgstr "Fehler bei der Vorschau des Formats %1$s"
 
-#: src/frontends/qt/GuiView.cpp:883
+#: src/frontends/qt/GuiView.cpp:887
 #, c-format
 msgid "Conversion cancelled while previewing format: %1$s"
 msgstr "Abbruch der Ausgabe bei der Vorschau des Formats %1$s"
 
-#: src/frontends/qt/GuiView.cpp:1236
+#: src/frontends/qt/GuiView.cpp:1239
 msgid "Exit LyX"
 msgstr "LyX beenden"
 
-#: src/frontends/qt/GuiView.cpp:1237
+#: src/frontends/qt/GuiView.cpp:1240
 msgid "LyX could not be closed because documents are being processed by LyX."
 msgstr ""
 "LyX konnte nicht geschlossen werden, da gerade Dokumente von LyX verarbeitet "
 "werden."
 
-#: src/frontends/qt/GuiView.cpp:1385
+#: src/frontends/qt/GuiView.cpp:1388
 #, c-format
 msgid "%1$s (modified externally)"
 msgstr "%1$s (extern bearbeitet)"
 
-#: src/frontends/qt/GuiView.cpp:1508
+#: src/frontends/qt/GuiView.cpp:1511
 msgid "Welcome to LyX!"
 msgstr "Willkommen bei LyX!"
 
-#: src/frontends/qt/GuiView.cpp:2045
+#: src/frontends/qt/GuiView.cpp:2070
 msgid "Automatic save done."
 msgstr "Automatische Speicherung abgeschlossen."
 
-#: src/frontends/qt/GuiView.cpp:2046
+#: src/frontends/qt/GuiView.cpp:2071
 msgid "Automatic save failed!"
 msgstr "Die automatische Speicherung ist fehlgeschlagen!"
 
-#: src/frontends/qt/GuiView.cpp:2102
+#: src/frontends/qt/GuiView.cpp:2151
 msgid "Command not allowed without any document open"
 msgstr "Dieser Befehl ist nur bei geöffnetem Dokument möglich"
 
-#: src/frontends/qt/GuiView.cpp:2171
+#: src/frontends/qt/GuiView.cpp:2220
 msgid "Invalid argument of master-buffer-forall"
 msgstr "Ungültiges Argument für master-buffer-forall"
 
-#: src/frontends/qt/GuiView.cpp:2289
+#: src/frontends/qt/GuiView.cpp:2338
 msgid "Function toolbar-set requires two arguments!"
 msgstr "Die Funktion toolbar-set erfordert zwei Argumente!"
 
-#: src/frontends/qt/GuiView.cpp:2296
+#: src/frontends/qt/GuiView.cpp:2345
 #, c-format
 msgid "Invalid argument \"%1$s\" to function toolbar-set!"
 msgstr "Ungültiges Argument \"%1$s\" der Funktion toolbar-set!"
 
-#: src/frontends/qt/GuiView.cpp:2312 src/frontends/qt/GuiView.cpp:2325
-#: src/frontends/qt/GuiView.cpp:2342
+#: src/frontends/qt/GuiView.cpp:2361 src/frontends/qt/GuiView.cpp:2374
+#: src/frontends/qt/GuiView.cpp:2391
 #, c-format
 msgid "Unknown toolbar \"%1$s\""
 msgstr "Unbekannte Werkzeugleiste \"%1$s\""
 
-#: src/frontends/qt/GuiView.cpp:2463 src/frontends/qt/GuiView.cpp:2476
+#: src/frontends/qt/GuiView.cpp:2509
 msgid "Zoom level cannot be less than %1$d%."
 msgstr "Der Skalierungsfaktor darf nicht kleiner als %1$d% sein."
 
-#: src/frontends/qt/GuiView.cpp:2606
+#: src/frontends/qt/GuiView.cpp:2514
+msgid "Zoom level cannot be more than %1$d%."
+msgstr "Der Skalierungsfaktor darf nicht größer als %1$d% sein."
+
+#: src/frontends/qt/GuiView.cpp:2643
 msgid "Document not loaded."
 msgstr "Dokument nicht geladen."
 
-#: src/frontends/qt/GuiView.cpp:2636
+#: src/frontends/qt/GuiView.cpp:2673
 msgid "Select document to open"
 msgstr "Wählen Sie das zu öffnende Dokument"
 
-#: src/frontends/qt/GuiView.cpp:2642
+#: src/frontends/qt/GuiView.cpp:2679
 msgid "LyX Document Backups (*.lyx~)"
 msgstr "LyX-Dokument-Backups (*.lyx~)"
 
-#: src/frontends/qt/GuiView.cpp:2643
+#: src/frontends/qt/GuiView.cpp:2680
 msgid "All Files (*.*)"
 msgstr "Alle Dateien (*.*)"
 
-#: src/frontends/qt/GuiView.cpp:2670
+#: src/frontends/qt/GuiView.cpp:2707
 #, c-format
 msgid ""
 "The directory in the given path\n"
@@ -34563,40 +34597,40 @@ msgstr ""
 "%1$s\n"
 "existiert nicht."
 
-#: src/frontends/qt/GuiView.cpp:2687
+#: src/frontends/qt/GuiView.cpp:2724
 #, c-format
 msgid "Opening document %1$s..."
 msgstr "Öffne Dokument %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:2692
+#: src/frontends/qt/GuiView.cpp:2729
 #, c-format
 msgid "Document %1$s opened."
 msgstr "Dokument %1$s ist geöffnet."
 
-#: src/frontends/qt/GuiView.cpp:2695
+#: src/frontends/qt/GuiView.cpp:2732
 msgid "Version control detected."
 msgstr "Versionskontrolle erkannt."
 
-#: src/frontends/qt/GuiView.cpp:2697
+#: src/frontends/qt/GuiView.cpp:2734
 #, c-format
 msgid "Could not open document %1$s"
 msgstr "Das Dokument %1$s konnte nicht geöffnet werden"
 
-#: src/frontends/qt/GuiView.cpp:2725
+#: src/frontends/qt/GuiView.cpp:2762
 msgid "Couldn't import file"
 msgstr "Die Datei konnte nicht importiert werden"
 
-#: src/frontends/qt/GuiView.cpp:2726
+#: src/frontends/qt/GuiView.cpp:2763
 #, c-format
 msgid "No information for importing the format %1$s."
 msgstr "Keine Informationen vorhanden, um das Format %1$s zu importieren."
 
-#: src/frontends/qt/GuiView.cpp:2773
+#: src/frontends/qt/GuiView.cpp:2810
 #, c-format
 msgid "Select %1$s file to import"
 msgstr "Wählen Sie die einzufügende %1$s-Datei"
 
-#: src/frontends/qt/GuiView.cpp:2808
+#: src/frontends/qt/GuiView.cpp:2845
 #, c-format
 msgid ""
 "The file name '%1$s' is invalid!\n"
@@ -34605,8 +34639,8 @@ msgstr ""
 "Der Dateiname '%1$s' ist ungültig!\n"
 "Import wird abgebrochen."
 
-#: src/frontends/qt/GuiView.cpp:2835 src/frontends/qt/GuiView.cpp:3102
-#: src/frontends/qt/GuiView.cpp:3205
+#: src/frontends/qt/GuiView.cpp:2872 src/frontends/qt/GuiView.cpp:3139
+#: src/frontends/qt/GuiView.cpp:3242
 #, c-format
 msgid ""
 "The document %1$s already exists.\n"
@@ -34617,33 +34651,33 @@ msgstr ""
 "\n"
 "Möchten Sie dieses Dokument überschreiben?"
 
-#: src/frontends/qt/GuiView.cpp:2837 src/frontends/qt/GuiView.cpp:3106
-#: src/frontends/qt/GuiView.cpp:3209
+#: src/frontends/qt/GuiView.cpp:2874 src/frontends/qt/GuiView.cpp:3143
+#: src/frontends/qt/GuiView.cpp:3246
 msgid "Overwrite document?"
 msgstr "Dokument überschreiben?"
 
-#: src/frontends/qt/GuiView.cpp:2846
+#: src/frontends/qt/GuiView.cpp:2883
 #, c-format
 msgid "Importing %1$s..."
 msgstr "Importiere %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:2849
+#: src/frontends/qt/GuiView.cpp:2886
 msgid "imported."
 msgstr "wurde eingefügt."
 
-#: src/frontends/qt/GuiView.cpp:2851
+#: src/frontends/qt/GuiView.cpp:2888
 msgid "file not imported!"
 msgstr "Datei wurde nicht importiert!"
 
-#: src/frontends/qt/GuiView.cpp:2877
+#: src/frontends/qt/GuiView.cpp:2914
 msgid "newfile"
 msgstr "Neues_Dokument"
 
-#: src/frontends/qt/GuiView.cpp:2910
+#: src/frontends/qt/GuiView.cpp:2947
 msgid "Select LyX document to insert"
 msgstr "Wählen Sie das einzufügende LyX-Dokument"
 
-#: src/frontends/qt/GuiView.cpp:2957
+#: src/frontends/qt/GuiView.cpp:2994
 #, c-format
 msgid ""
 "It is suggested to save the template in a subdirectory\n"
@@ -34656,23 +34690,23 @@ msgstr ""
 "Dieser Unterordner existiert aber noch nicht.\n"
 "Soll er angelegt werden?"
 
-#: src/frontends/qt/GuiView.cpp:2962
+#: src/frontends/qt/GuiView.cpp:2999
 msgid "Create Language Directory?"
 msgstr "Sprach-Unterorder erstellen?"
 
-#: src/frontends/qt/GuiView.cpp:2963 src/frontends/qt/GuiView.cpp:2994
+#: src/frontends/qt/GuiView.cpp:3000 src/frontends/qt/GuiView.cpp:3031
 msgid "&Yes, Create"
 msgstr "&Ja, erstellen"
 
-#: src/frontends/qt/GuiView.cpp:2963 src/frontends/qt/GuiView.cpp:2994
+#: src/frontends/qt/GuiView.cpp:3000 src/frontends/qt/GuiView.cpp:3031
 msgid "&No, Save Template in Parent Directory"
 msgstr "&Nein, speichere Vorlage im Hauptordner"
 
-#: src/frontends/qt/GuiView.cpp:2966 src/frontends/qt/GuiView.cpp:2997
+#: src/frontends/qt/GuiView.cpp:3003 src/frontends/qt/GuiView.cpp:3034
 msgid "Subdirectory creation failed!"
 msgstr "Erstellung des Unterordners fehlgeschlagen!"
 
-#: src/frontends/qt/GuiView.cpp:2967 src/frontends/qt/GuiView.cpp:2998
+#: src/frontends/qt/GuiView.cpp:3004 src/frontends/qt/GuiView.cpp:3035
 msgid ""
 "Could not create subdirectory.\n"
 "The template will be saved in the parent directory."
@@ -34680,7 +34714,7 @@ msgstr ""
 "Der Unterordner konnte leider nicht erstellt werden\n"
 "Die Vorlage wird im Hauptordner gespeichert."
 
-#: src/frontends/qt/GuiView.cpp:2988
+#: src/frontends/qt/GuiView.cpp:3025
 #, c-format
 msgid ""
 "It is suggested to save the template in a subdirectory\n"
@@ -34693,19 +34727,19 @@ msgstr ""
 "Dieser Unterordner existiert aber noch nicht.\n"
 "Soll er angelegt werden?"
 
-#: src/frontends/qt/GuiView.cpp:2993
+#: src/frontends/qt/GuiView.cpp:3030
 msgid "Create Category Directory?"
 msgstr "Kategorien-Ordner erstellen?"
 
-#: src/frontends/qt/GuiView.cpp:3028
+#: src/frontends/qt/GuiView.cpp:3065
 msgid "Choose a filename to save template as"
 msgstr "Wählen Sie einen Dateinamen für die Vorlage"
 
-#: src/frontends/qt/GuiView.cpp:3029
+#: src/frontends/qt/GuiView.cpp:3066
 msgid "Choose a filename to save document as"
 msgstr "Wählen Sie einen Dateinamen für das Dokument"
 
-#: src/frontends/qt/GuiView.cpp:3065
+#: src/frontends/qt/GuiView.cpp:3102
 #, c-format
 msgid ""
 "The file\n"
@@ -34720,17 +34754,17 @@ msgstr ""
 "Bitte schließen Sie sie, wenn Sie sie überschreiben möchten.\n"
 "Möchten Sie statt dessen einen neuen Dateinamen wählen?"
 
-#: src/frontends/qt/GuiView.cpp:3069
+#: src/frontends/qt/GuiView.cpp:3106
 msgid "Chosen File Already Open"
 msgstr "Ausgewählte Datei bereits geöffnet"
 
-#: src/frontends/qt/GuiView.cpp:3070 src/frontends/qt/GuiView.cpp:3092
-#: src/frontends/qt/GuiView.cpp:3108 src/frontends/qt/GuiView.cpp:3210
-#: src/frontends/qt/GuiView.cpp:3255
+#: src/frontends/qt/GuiView.cpp:3107 src/frontends/qt/GuiView.cpp:3129
+#: src/frontends/qt/GuiView.cpp:3145 src/frontends/qt/GuiView.cpp:3247
+#: src/frontends/qt/GuiView.cpp:3292
 msgid "&Rename"
 msgstr "&Umbenennen"
 
-#: src/frontends/qt/GuiView.cpp:3085
+#: src/frontends/qt/GuiView.cpp:3122
 #, c-format
 msgid ""
 "The document %1$s is already registered.\n"
@@ -34741,27 +34775,27 @@ msgstr ""
 "\n"
 "Möchten Sie einen anderen Namen wählen?"
 
-#: src/frontends/qt/GuiView.cpp:3090
+#: src/frontends/qt/GuiView.cpp:3127
 msgid "Rename document?"
 msgstr "Dokument umbenennen?"
 
-#: src/frontends/qt/GuiView.cpp:3090
+#: src/frontends/qt/GuiView.cpp:3127
 msgid "Copy document?"
 msgstr "Dokument kopieren?"
 
-#: src/frontends/qt/GuiView.cpp:3092
+#: src/frontends/qt/GuiView.cpp:3129
 msgid "&Copy"
 msgstr "&Kopieren"
 
-#: src/frontends/qt/GuiView.cpp:3152
+#: src/frontends/qt/GuiView.cpp:3189
 msgid "Choose a filename to export the document as"
 msgstr "Wählen Sie einen Dateinamen für das exportierte Dokument"
 
-#: src/frontends/qt/GuiView.cpp:3156
+#: src/frontends/qt/GuiView.cpp:3193
 msgid "Guess from extension (*.*)"
 msgstr "Von der Dateierweiterung ableiten (*.*)"
 
-#: src/frontends/qt/GuiView.cpp:3251
+#: src/frontends/qt/GuiView.cpp:3288
 #, c-format
 msgid ""
 "The document %1$s could not be saved.\n"
@@ -34772,15 +34806,15 @@ msgstr ""
 "\n"
 "Möchten Sie das Dokument umbenennen und erneut versuchen?"
 
-#: src/frontends/qt/GuiView.cpp:3254
+#: src/frontends/qt/GuiView.cpp:3291
 msgid "Rename and save?"
 msgstr "Umbenennen und speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3255
+#: src/frontends/qt/GuiView.cpp:3292
 msgid "&Retry"
 msgstr "&Wiederholen"
 
-#: src/frontends/qt/GuiView.cpp:3300
+#: src/frontends/qt/GuiView.cpp:3337
 #, c-format
 msgid ""
 "Last view on document %1$s is being closed.\n"
@@ -34802,25 +34836,25 @@ msgstr ""
 "die Voreinstellung in  Werkzeuge > Einstellungen ... >\n"
 "Aussehen & Handhabung > Benutzeroberfläche.\n"
 
-#: src/frontends/qt/GuiView.cpp:3309
+#: src/frontends/qt/GuiView.cpp:3346
 msgid "Close or hide document?"
 msgstr "Dokument schließen oder verbergen?"
 
-#: src/frontends/qt/GuiView.cpp:3310
+#: src/frontends/qt/GuiView.cpp:3347
 msgid "&Hide"
 msgstr "&Verbergen"
 
-#: src/frontends/qt/GuiView.cpp:3407
+#: src/frontends/qt/GuiView.cpp:3444
 msgid "Close document"
 msgstr "Dokument schließen"
 
-#: src/frontends/qt/GuiView.cpp:3408
+#: src/frontends/qt/GuiView.cpp:3445
 msgid "Document could not be closed because it is being processed by LyX."
 msgstr ""
 "Dokument konnte nicht geschlossen werden, da es gerade von LyX verarbeitet "
 "wird."
 
-#: src/frontends/qt/GuiView.cpp:3540 src/frontends/qt/GuiView.cpp:3655
+#: src/frontends/qt/GuiView.cpp:3577 src/frontends/qt/GuiView.cpp:3692
 #, c-format
 msgid ""
 "The document %1$s has not been saved yet.\n"
@@ -34831,16 +34865,16 @@ msgstr ""
 "\n"
 "Möchten Sie das Dokument speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3543 src/frontends/qt/GuiView.cpp:3658
+#: src/frontends/qt/GuiView.cpp:3580 src/frontends/qt/GuiView.cpp:3695
 msgid "Save new document?"
 msgstr "Neues Dokument speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3544 src/frontends/qt/GuiView.cpp:3558
-#: src/frontends/qt/GuiView.cpp:3660
+#: src/frontends/qt/GuiView.cpp:3581 src/frontends/qt/GuiView.cpp:3595
+#: src/frontends/qt/GuiView.cpp:3697
 msgid "&Save"
 msgstr "&Speichern"
 
-#: src/frontends/qt/GuiView.cpp:3549
+#: src/frontends/qt/GuiView.cpp:3586
 #, c-format
 msgid ""
 "The document %1$s has unsaved changes.\n"
@@ -34851,7 +34885,7 @@ msgstr ""
 "sind nicht gespeichert.\n"
 "Möchten Sie das Dokument speichern oder die Änderungen verwerfen?"
 
-#: src/frontends/qt/GuiView.cpp:3552
+#: src/frontends/qt/GuiView.cpp:3589
 #, c-format
 msgid ""
 "The document %1$s has not been saved yet.\n"
@@ -34862,19 +34896,19 @@ msgstr ""
 "\n"
 "Möchten Sie das Dokument speichern oder es endgültig verwerfen?"
 
-#: src/frontends/qt/GuiView.cpp:3556 src/frontends/qt/GuiView.cpp:3652
+#: src/frontends/qt/GuiView.cpp:3593 src/frontends/qt/GuiView.cpp:3689
 msgid "Save changed document?"
 msgstr "Geändertes Dokument speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3556
+#: src/frontends/qt/GuiView.cpp:3593
 msgid "Save document?"
 msgstr "Dokument speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3558
+#: src/frontends/qt/GuiView.cpp:3595
 msgid "&Discard"
 msgstr "&Verwerfen"
 
-#: src/frontends/qt/GuiView.cpp:3649
+#: src/frontends/qt/GuiView.cpp:3686
 #, c-format
 msgid ""
 "The document %1$s has unsaved changes.\n"
@@ -34885,7 +34919,7 @@ msgstr ""
 "\n"
 "Möchten Sie das Dokument speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3681
+#: src/frontends/qt/GuiView.cpp:3718
 #, c-format
 msgid ""
 "Document \n"
@@ -34897,37 +34931,37 @@ msgstr ""
 "wurde extern verändert. Wollen Sie es erneut laden?\n"
 "Alle lokalen Veränderungen werden dann verworfen."
 
-#: src/frontends/qt/GuiView.cpp:3684
+#: src/frontends/qt/GuiView.cpp:3721
 msgid "Reload externally changed document?"
 msgstr "Extern geändertes Dokument neu laden?"
 
-#: src/frontends/qt/GuiView.cpp:3729
+#: src/frontends/qt/GuiView.cpp:3766
 msgid "Document could not be checked in."
 msgstr "Das Dokument konnte nicht eingecheckt werden."
 
-#: src/frontends/qt/GuiView.cpp:3772
+#: src/frontends/qt/GuiView.cpp:3809
 msgid "Error when setting the locking property."
 msgstr "Fehler beim Setzen der Dateisperrung."
 
-#: src/frontends/qt/GuiView.cpp:3821
+#: src/frontends/qt/GuiView.cpp:3858
 msgid "Directory is not accessible."
 msgstr "Das Verzeichnis ist nicht lesbar."
 
-#: src/frontends/qt/GuiView.cpp:3898
+#: src/frontends/qt/GuiView.cpp:3935
 #, c-format
 msgid "Opening child document %1$s..."
 msgstr "Öffne Unterdokument %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:3956
+#: src/frontends/qt/GuiView.cpp:3993
 #, c-format
 msgid "No buffer for file: %1$s."
 msgstr "Kein Pufferspeicher für Datei: %1$s."
 
-#: src/frontends/qt/GuiView.cpp:3966
+#: src/frontends/qt/GuiView.cpp:4003
 msgid "Inverse Search Failed"
 msgstr "Rückwärtssuche gescheitert"
 
-#: src/frontends/qt/GuiView.cpp:3967
+#: src/frontends/qt/GuiView.cpp:4004
 msgid ""
 "Invalid position requested by inverse search.\n"
 "You may need to update the viewed document."
@@ -34935,35 +34969,35 @@ msgstr ""
 "Die Rückwärtssuche wollte eine ungültige Position anspringen.\n"
 "Bitte aktualisieren Sie das ausgegebene Dokument."
 
-#: src/frontends/qt/GuiView.cpp:4047
+#: src/frontends/qt/GuiView.cpp:4084
 msgid "Export Error"
 msgstr "Exportfehler"
 
-#: src/frontends/qt/GuiView.cpp:4048
+#: src/frontends/qt/GuiView.cpp:4085
 msgid "Error cloning the Buffer."
 msgstr "Fehler beim Klonen des Pufferspeichers."
 
-#: src/frontends/qt/GuiView.cpp:4199 src/frontends/qt/GuiView.cpp:4219
+#: src/frontends/qt/GuiView.cpp:4236 src/frontends/qt/GuiView.cpp:4256
 msgid "Exporting ..."
 msgstr "Exportiere ..."
 
-#: src/frontends/qt/GuiView.cpp:4228
+#: src/frontends/qt/GuiView.cpp:4265
 msgid "Previewing ..."
 msgstr "Generiere Vorschau ..."
 
-#: src/frontends/qt/GuiView.cpp:4266
+#: src/frontends/qt/GuiView.cpp:4303
 msgid "Document not loaded"
 msgstr "Dokument nicht geladen"
 
-#: src/frontends/qt/GuiView.cpp:4353
+#: src/frontends/qt/GuiView.cpp:4390
 msgid "Select file to insert"
 msgstr "Wählen Sie das einzufügende Dokument"
 
-#: src/frontends/qt/GuiView.cpp:4356
+#: src/frontends/qt/GuiView.cpp:4393
 msgid "All Files (*)"
 msgstr "Alle Dateien (*)"
 
-#: src/frontends/qt/GuiView.cpp:4384
+#: src/frontends/qt/GuiView.cpp:4421
 #, c-format
 msgid ""
 "The current version will be lost. Are you sure you want to load the version "
@@ -34973,7 +35007,7 @@ msgstr ""
 "dass Sie die auf der Festplatte gespeicherte Version des Dokuments %1$s "
 "laden möchten?"
 
-#: src/frontends/qt/GuiView.cpp:4391
+#: src/frontends/qt/GuiView.cpp:4428
 #, c-format
 msgid ""
 "Any changes will be lost. Are you sure you want to revert to the saved "
@@ -34982,61 +35016,61 @@ msgstr ""
 "Alle Änderungen gehen verloren. Sind Sie sicher, dass Sie zur gespeicherten "
 "Version des Dokuments %1$s zurückkehren möchten?"
 
-#: src/frontends/qt/GuiView.cpp:4394
+#: src/frontends/qt/GuiView.cpp:4431
 msgid "Revert to saved document?"
 msgstr "Gespeichertes Dokument neu laden?"
 
-#: src/frontends/qt/GuiView.cpp:4411
+#: src/frontends/qt/GuiView.cpp:4448
 msgid "Buffer export reset."
 msgstr "Export zurückgesetzt."
 
-#: src/frontends/qt/GuiView.cpp:4434
+#: src/frontends/qt/GuiView.cpp:4471
 msgid "Saving all documents..."
 msgstr "Speichere alle Dokumente..."
 
-#: src/frontends/qt/GuiView.cpp:4444
+#: src/frontends/qt/GuiView.cpp:4481
 msgid "All documents saved."
 msgstr "Alle Dokumente wurden gespeichert."
 
-#: src/frontends/qt/GuiView.cpp:4483
+#: src/frontends/qt/GuiView.cpp:4520
 msgid "Developer mode is now enabled."
 msgstr "Der Entwicklermodus ist nun aktiviert."
 
-#: src/frontends/qt/GuiView.cpp:4485
+#: src/frontends/qt/GuiView.cpp:4522
 msgid "Developer mode is now disabled."
 msgstr "Der Entwicklermodus ist nun deaktiviert."
 
-#: src/frontends/qt/GuiView.cpp:4517
+#: src/frontends/qt/GuiView.cpp:4554
 msgid "Toolbars unlocked."
 msgstr "Werkzeugleisten nicht verankert."
 
-#: src/frontends/qt/GuiView.cpp:4519
+#: src/frontends/qt/GuiView.cpp:4556
 msgid "Toolbars locked."
 msgstr "Werkzeugleisten verankert."
 
-#: src/frontends/qt/GuiView.cpp:4531
+#: src/frontends/qt/GuiView.cpp:4568
 #, c-format
 msgid "Icon size set to %1$dx%2$d."
 msgstr "Eingestellte Symbolgröße: %1$dx%2$d."
 
-#: src/frontends/qt/GuiView.cpp:4620
+#: src/frontends/qt/GuiView.cpp:4657
 #, c-format
 msgid "%1$s unknown command!"
 msgstr "LFUN_UI_TOGGLE %1$s unbekannter Befehl!"
 
-#: src/frontends/qt/GuiView.cpp:4724
+#: src/frontends/qt/GuiView.cpp:4746
 msgid "Zoom level is now %1$d% (default value: %2$d%)"
 msgstr "Aktueller Skalierungsfaktor: %1$d% (Standardwert: %2$d%)"
 
-#: src/frontends/qt/GuiView.cpp:4783
+#: src/frontends/qt/GuiView.cpp:4805
 msgid "Please, preview the document first."
 msgstr "Bitte geben Sie das Dokument zunächst aus."
 
-#: src/frontends/qt/GuiView.cpp:4799
+#: src/frontends/qt/GuiView.cpp:4821
 msgid "Couldn't proceed."
 msgstr "Konnte nicht fortfahren."
 
-#: src/frontends/qt/GuiView.cpp:5156
+#: src/frontends/qt/GuiView.cpp:5178
 msgid "Disable Shell Escape"
 msgstr "Erlaubnis zum Aufruf externer Programme widerrufen"
 
@@ -35605,7 +35639,7 @@ msgid "active"
 msgstr "aktiv"
 
 #: src/insets/InsetBranch.cpp:70 src/insets/InsetBranch.cpp:72
-#: src/insets/InsetIndex.cpp:659
+#: src/insets/InsetIndex.cpp:682
 msgid "non-active"
 msgstr "inaktiv"
 
@@ -35641,11 +35675,11 @@ msgstr "Zweig (Hauptdokument): "
 msgid "Branch (undefined): "
 msgstr "Zweig (undefiniert): "
 
-#: src/insets/InsetBranch.cpp:190
+#: src/insets/InsetBranch.cpp:192
 msgid "Branch state changes in master document"
 msgstr "Änderung des Zweigstatus im Hauptdokument"
 
-#: src/insets/InsetBranch.cpp:191
+#: src/insets/InsetBranch.cpp:193
 #, c-format
 msgid ""
 "The state of the branch '%1$s' was changed in the master file. Please make "
@@ -36113,19 +36147,19 @@ msgstr ""
 "Bitte legen Sie die Sortierung manuell fest. Hinweise\n"
 "zum Vorgehen finden Sie im Benutzerhandbuch."
 
-#: src/insets/InsetIndex.cpp:470
+#: src/insets/InsetIndex.cpp:493
 msgid "Index Entry"
 msgstr "Stichwort"
 
-#: src/insets/InsetIndex.cpp:656
+#: src/insets/InsetIndex.cpp:679
 msgid "Unknown index type!"
 msgstr "Unbekannter Index-Typ!"
 
-#: src/insets/InsetIndex.cpp:657
+#: src/insets/InsetIndex.cpp:680
 msgid "All indexes"
 msgstr "Alle Indexe"
 
-#: src/insets/InsetIndex.cpp:661
+#: src/insets/InsetIndex.cpp:684
 msgid "subindex"
 msgstr "Unterindex"
 
@@ -36424,15 +36458,15 @@ msgstr "DUPLIKAT: "
 msgid "Horizontal line"
 msgstr "Horizontale Linie"
 
-#: src/insets/InsetListings.cpp:332
+#: src/insets/InsetListings.cpp:333
 msgid "no more lstline delimiters available"
 msgstr "keine lst-line-Begrenzungszeichen verfügbar"
 
-#: src/insets/InsetListings.cpp:337
+#: src/insets/InsetListings.cpp:338
 msgid "Running out of delimiters"
 msgstr "Die Begrenzungszeichen sind ausgegangen"
 
-#: src/insets/InsetListings.cpp:338
+#: src/insets/InsetListings.cpp:339
 msgid ""
 "For inline program listings, one character must be reserved\n"
 "as a delimiter. One of the listings, however, uses all available\n"
@@ -36446,11 +36480,11 @@ msgstr ""
 "verfügbar ist. Einstweilen wurde an der entsprechenden Stelle eine Warnung\n"
 "in das Dokument eingefügt, Sie müssen das Problem allerdings lösen!"
 
-#: src/insets/InsetListings.cpp:419 src/insets/InsetListings.cpp:428
+#: src/insets/InsetListings.cpp:420 src/insets/InsetListings.cpp:429
 msgid "Uncodable characters in listings inset"
 msgstr "Unkodierbare Zeichen in Programmlisting"
 
-#: src/insets/InsetListings.cpp:420
+#: src/insets/InsetListings.cpp:421
 #, c-format
 msgid ""
 "The following characters in one of the program listings are\n"
@@ -36471,7 +36505,7 @@ msgstr ""
 "verwenden'\n"
 "auszuwählen."
 
-#: src/insets/InsetListings.cpp:429
+#: src/insets/InsetListings.cpp:430
 #, c-format
 msgid ""
 "The following characters in one of the program listings are\n"
@@ -37321,11 +37355,11 @@ msgstr ""
 "Das angegebene Dokument %1$s\n"
 "konnte nicht geöffnet werden."
 
-#: src/output_latex.cpp:1650
+#: src/output_latex.cpp:1658
 msgid "Error in latexParagraphs"
 msgstr "Fehler in latexParagraphs"
 
-#: src/output_latex.cpp:1651
+#: src/output_latex.cpp:1659
 #, c-format
 msgid ""
 "You are using at least one layout (%1$s) intended for the title, after using "
@@ -37714,6 +37748,9 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Unbekannter Benutzer"
 
+#~ msgid "e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
+#~ msgstr "z. B.: pdfstartview=XYZ, plainpages=false, pdfpagelabels"
+
 #~ msgid "Preferred &Language:"
 #~ msgstr "Bevorzugte S&prache:"
 

commit b3ae129de79a7e5dcc0080097b2b1319565a67c1
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Feb 12 17:11:18 2022 +0100

    Update tex2lyx tests

diff --git a/src/tex2lyx/test/CJK.lyx.lyx b/src/tex2lyx/test/CJK.lyx.lyx
index 1eabb8c..6addbc4 100644
--- a/src/tex2lyx/test/CJK.lyx.lyx
+++ b/src/tex2lyx/test/CJK.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/CJKutf8.lyx.lyx b/src/tex2lyx/test/CJKutf8.lyx.lyx
index 807031d..585d14a 100644
--- a/src/tex2lyx/test/CJKutf8.lyx.lyx
+++ b/src/tex2lyx/test/CJKutf8.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/DummyDocument.lyx.lyx b/src/tex2lyx/test/DummyDocument.lyx.lyx
index 3337671..b5fb085 100644
--- a/src/tex2lyx/test/DummyDocument.lyx.lyx
+++ b/src/tex2lyx/test/DummyDocument.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/Dummy~Document.lyx.lyx b/src/tex2lyx/test/Dummy~Document.lyx.lyx
index 761e495..872addf 100644
--- a/src/tex2lyx/test/Dummy~Document.lyx.lyx
+++ b/src/tex2lyx/test/Dummy~Document.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx b/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx
index d99a57b..47b8e32 100644
--- a/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx
+++ b/src/tex2lyx/test/XeTeX-polyglossia.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/algo2e.lyx.lyx b/src/tex2lyx/test/algo2e.lyx.lyx
index 559f788..756fa0b 100644
--- a/src/tex2lyx/test/algo2e.lyx.lyx
+++ b/src/tex2lyx/test/algo2e.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/beamer.lyx.lyx b/src/tex2lyx/test/beamer.lyx.lyx
index 45e8f6f..5b00841 100644
--- a/src/tex2lyx/test/beamer.lyx.lyx
+++ b/src/tex2lyx/test/beamer.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/box-color-size-space-align.lyx.lyx b/src/tex2lyx/test/box-color-size-space-align.lyx.lyx
index 81c279c..28ea2b5 100644
--- a/src/tex2lyx/test/box-color-size-space-align.lyx.lyx
+++ b/src/tex2lyx/test/box-color-size-space-align.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/listpreamble.lyx.lyx b/src/tex2lyx/test/listpreamble.lyx.lyx
index 4ffea66..a0fc0b0 100644
--- a/src/tex2lyx/test/listpreamble.lyx.lyx
+++ b/src/tex2lyx/test/listpreamble.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/tabular-x-test.lyx.lyx b/src/tex2lyx/test/tabular-x-test.lyx.lyx
index b72ea5c..b3f4c54 100644
--- a/src/tex2lyx/test/tabular-x-test.lyx.lyx
+++ b/src/tex2lyx/test/tabular-x-test.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/test-insets-basic.lyx.lyx b/src/tex2lyx/test/test-insets-basic.lyx.lyx
index 6dba919..89978a9 100644
--- a/src/tex2lyx/test/test-insets-basic.lyx.lyx
+++ b/src/tex2lyx/test/test-insets-basic.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/test-insets.lyx.lyx b/src/tex2lyx/test/test-insets.lyx.lyx
index 903ec9f..3388b76 100644
--- a/src/tex2lyx/test/test-insets.lyx.lyx
+++ b/src/tex2lyx/test/test-insets.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/test-memoir.lyx.lyx b/src/tex2lyx/test/test-memoir.lyx.lyx
index 3a23aad..83e55b0 100644
--- a/src/tex2lyx/test/test-memoir.lyx.lyx
+++ b/src/tex2lyx/test/test-memoir.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/test-minted.lyx.lyx b/src/tex2lyx/test/test-minted.lyx.lyx
index 178119d..83bdf26 100644
--- a/src/tex2lyx/test/test-minted.lyx.lyx
+++ b/src/tex2lyx/test/test-minted.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/test-modules.lyx.lyx b/src/tex2lyx/test/test-modules.lyx.lyx
index 67f0507..19993f4 100644
--- a/src/tex2lyx/test/test-modules.lyx.lyx
+++ b/src/tex2lyx/test/test-modules.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/test-refstyle-theorems.lyx.lyx b/src/tex2lyx/test/test-refstyle-theorems.lyx.lyx
index 8983667..0362611 100644
--- a/src/tex2lyx/test/test-refstyle-theorems.lyx.lyx
+++ b/src/tex2lyx/test/test-refstyle-theorems.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/test-scr.lyx.lyx b/src/tex2lyx/test/test-scr.lyx.lyx
index 4a9151d..b2fc4f4 100644
--- a/src/tex2lyx/test/test-scr.lyx.lyx
+++ b/src/tex2lyx/test/test-scr.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/test-structure.lyx.lyx b/src/tex2lyx/test/test-structure.lyx.lyx
index fcdbbc7..112f055 100644
--- a/src/tex2lyx/test/test-structure.lyx.lyx
+++ b/src/tex2lyx/test/test-structure.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/test.lyx.lyx b/src/tex2lyx/test/test.lyx.lyx
index 61e1f25..b62ff5c 100644
--- a/src/tex2lyx/test/test.lyx.lyx
+++ b/src/tex2lyx/test/test.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
diff --git a/src/tex2lyx/test/verbatim.lyx.lyx b/src/tex2lyx/test/verbatim.lyx.lyx
index 11098ca..4f86b6e 100644
--- a/src/tex2lyx/test/verbatim.lyx.lyx
+++ b/src/tex2lyx/test/verbatim.lyx.lyx
@@ -1,5 +1,5 @@
 #LyX file created by tex2lyx 2.4
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true

commit 1da80d4d8ff4295a5f35cbf0130eef1d89a46b44
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Feb 12 17:10:34 2022 +0100

    Add basic support for \DeclareMetadata
    
    File format change

diff --git a/development/FORMAT b/development/FORMAT
index 28014ee..dd95edf 100644
--- a/development/FORMAT
+++ b/development/FORMAT
@@ -7,6 +7,12 @@ changes happened in particular if possible. A good example would be
 
 -----------------------
 
+2022-02-11 Jürgen Spitzmüller <spitz at lyx.org> 
+	* Format incremented to 609: \\begin_metadata ... \\end_metadata buffer param.
+	  This takes a list of keyvals for the new \\DocumentMetadata command
+	  (introduced in LaTeX 06/2022) which must be output at the very begin
+	  of the document (before \\documentclass).
+
 2021-03-23 Thibaut Cuvelier <tcuvelier at lyx.org> 
  	* Format incremented to 608: DocBook MathML-namespace prefix with the
  	  \docbook_mathml_prefix buffer parameter (enumerated value:
diff --git a/lib/chkconfig.ltx b/lib/chkconfig.ltx
index 660710b..d2613e9 100644
--- a/lib/chkconfig.ltx
+++ b/lib/chkconfig.ltx
@@ -242,6 +242,8 @@
 \TestLaTeXVersion{2020/10/01}
 % This robustifies LaTeX commands
 \TestLaTeXVersion{2021/06/01}
+% Introduction of \\DocumentMetadata
+\TestLaTeXVersion{2022/06/01}
 
 %%% And now, the list of available languages
 % The trick is to know that \the\everyjob contains something like
diff --git a/lib/doc/UserGuide.lyx b/lib/doc/UserGuide.lyx
index 123c09a..f5d5648 100644
--- a/lib/doc/UserGuide.lyx
+++ b/lib/doc/UserGuide.lyx
@@ -1,5 +1,5 @@
 #LyX 2.4 created this file. For more info see https://www.lyx.org/
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
@@ -8973,12 +8973,14 @@ Verbatim
 \end_layout
 
 \begin_layout Verbatim
+
 This is Verbatim.
 \end_layout
 
 \begin_layout Verbatim
 \noindent
 \align block
+
 The following 2 lines are empty:
 \end_layout
 
@@ -8991,6 +8993,7 @@ The following 2 lines are empty:
 \end_layout
 
 \begin_layout Verbatim
+
 Almost everything is allowed in Verbatim:"%&$§#~'`
 \backslash
 }][{|
@@ -9014,6 +9017,7 @@ Verbatim
 \end_layout
 
 \begin_layout Verbatim*
+
 This is Verbatim*.
 \end_layout
 
@@ -35811,16 +35815,61 @@ PDF properties
 \end_layout
 
 \begin_layout Standard
+
+\change_deleted -712698321 1644655914
 The 
+\change_unchanged
+
 \family sans
 Document\SpecialChar menuseparator
 Settings\SpecialChar menuseparator
 PDF Properties
 \family default
- dialog allows you to set up special options for the PDF output of your
- document.
- All these options are provided by the \SpecialChar LaTeX
--package 
+ 
+\change_deleted -712698321 1644655917
+dialog 
+\change_unchanged
+allows you to set up 
+\change_deleted -712698321 1644651900
+special options
+\change_inserted -712698321 1644651929
+specifics
+\change_unchanged
+ 
+\change_deleted -712698321 1644651937
+for
+\change_inserted -712698321 1644651944
+of your document's
+\change_unchanged
+ 
+\change_deleted -712698321 1644655939
+the 
+\change_unchanged
+PDF output
+\change_deleted -712698321 1644651948
+ of your document
+\change_unchanged
+.
+ 
+\change_deleted -712698321 1644651614
+All
+\change_inserted -712698321 1644651616
+Most of
+\change_unchanged
+ these 
+\change_deleted -712698321 1644651959
+options
+\change_inserted -712698321 1644651961
+specifics
+\change_unchanged
+ are provided by the \SpecialChar LaTeX
+
+\change_deleted -712698321 1644651813
+-
+\change_inserted -712698321 1644651814
+ 
+\change_unchanged
+package 
 \series bold
 hyperref
 \series default
@@ -35835,10 +35884,63 @@ status collapsed
 
 \end_inset
 
- which will link all cross-references in the DVI- and PDF-output.
+
+\change_inserted -712698321 1644653717
+ which you need to enable by clicking 
+\family sans
+Use Hyperref Support
+\family default
+ in order to set the PDF properties (if the package is already loaded by
+ your document class or another package, the checkbox you need to click
+ is labeled 
+\family sans
+Customize Hyperref Options
+\family default
+ instead).
+ Among other things, hyperref
+\change_deleted -712698321 1644651887
+ which
+\change_unchanged
+ 
+\change_deleted -712698321 1644653821
+will 
+\change_inserted -712698321 1644653851
+ hyper
+\change_unchanged
+link
+\change_inserted -712698321 1644653826
+s
+\change_unchanged
+ all 
+\change_inserted -712698321 1644653859
+URLs and 
+\change_unchanged
+cross-references in the 
+\change_deleted -712698321 1644653786
+DVI- and 
+\change_unchanged
+PDF
+\change_inserted -712698321 1644653751
+ 
+\change_deleted -712698321 1644653751
+-
+\change_unchanged
+output.
  This means that the reader of your document will be able to click on a
- table of contents entry or on a reference to move to the cross-referenced
- part of the document.
+\change_inserted -712698321 1644653878
+n URL, a
+\change_unchanged
+ table of contents entry or on a reference to 
+\change_inserted -712698321 1644653918
+open a website or to 
+\change_unchanged
+move to the cross-referenced part of the document.
+
+\change_inserted -712698321 1644653971
+ Furthermore, you can set PDF metadata (such as document author and title),
+ or determine how the PDF is being opened by the reader program.
+\change_unchanged
+
 \end_layout
 
 \begin_layout Standard
@@ -35847,8 +35949,11 @@ The header information in the dialog tab
 General
 \family default
  is saved together with the PDF as file properties.
- Many programs are able to extract this information, for example, automatically
- to recognize who the author is and what the PDF is about.
+ Many programs are able to extract this information, for example, 
+\change_deleted -712698321 1644656745
+automatically 
+\change_unchanged
+to recognize who the author is and what the PDF is about.
  This is very useful to sort, classify or use PDFs for bibliography issues.
  When the option 
 \family sans
@@ -35862,9 +35967,15 @@ fill
 
 header
 \family default
- is set, \SpecialChar LyX
- tries to extract the header information from your document title
- and author entries.
+ is set, 
+\change_deleted -712698321 1644654039
+\SpecialChar LyX
+
+\change_inserted -712698321 1644654041
+hyperref
+\change_unchanged
+ tries to extract the header information from your document title and author
+ entries.
  The option 
 \family sans
 Load
@@ -35885,12 +35996,51 @@ mode
 \end_layout
 
 \begin_layout Standard
-You can specify in the dialog tab 
+
+\change_deleted -712698321 1644654066
+You can specify i
+\change_inserted -712698321 1644654066
+I
+\change_unchanged
+n the dialog tab 
 \family sans
 Hyperlinks
 \family default
- how the links will look and if links for bibliographical backreferences
- are created.
+ 
+\change_inserted -712698321 1644654103
+you can customize the
+\change_deleted -712698321 1644654105
+how
+\change_inserted -712698321 1644654109
+ look of
+\change_unchanged
+ 
+\change_deleted -712698321 1644654087
+the
+\change_inserted -712698321 1644654087
+such
+\change_unchanged
+ links
+\change_inserted -712698321 1644654147
+, and you can specify
+\change_unchanged
+ 
+\change_inserted -712698321 1644654275
+if and which 
+\change_deleted -712698321 1644654283
+will look and if links for 
+\change_unchanged
+bibliographical backreferences are created
+\change_inserted -712698321 1644654335
+.
+ 
+\family sans
+Backreferences
+\family default
+ are links inserted at the end of bibliographic entries pointing to either
+ sections, pages or slides on which these entries are being cited
+\change_unchanged
+.
  The 
 \family sans
 Break
@@ -35971,21 +36121,47 @@ green
 \end_layout
 
 \begin_layout Standard
-but you can change these in the field 
+but you can change these in the 
+\change_deleted -712698321 1644651692
+field
+\change_inserted -712698321 1644651692
+tab
+\change_unchanged
+ 
 \family sans
-Additional options
+Additional 
+\change_deleted -712698321 1644656056
+o
+\change_inserted -712698321 1644656056
+O
+\change_unchanged
+ptions
 \family default
 .
- For example, in this document they were changed with the additional options:
+ For example, in this document they were changed with the
+\change_inserted -712698321 1644651709
+se
+\change_unchanged
+ additional options
+\change_inserted -712698321 1644651730
+ added to 
+\family sans
+Hypersetup
+\change_unchanged
+
+\family default
+:
 \end_layout
 
-\begin_layout Standard
+\begin_layout Quote
 
 \series bold
 linkcolor=black, citecolor=black, urlcolor=blue, filecolor=blue
 \end_layout
 
 \begin_layout Standard
+
+\change_deleted -712698321 1644654422
 If the option 
 \family sans
 Backreferences
@@ -35993,6 +36169,8 @@ Backreferences
  is set, the hyperlinks will appear in the bibliography after the different
  entries, showing, depending on the option selected, the number of the section,
  slide or page where the entry is referenced.
+\change_unchanged
+
 \end_layout
 
 \begin_layout Standard
@@ -36000,20 +36178,56 @@ In the dialog tab
 \family sans
 Bookmarks
 \family default
- you can specify if PDF-bookmarks should be created for every section of
- your document to make it easier for readers to navigate through the document.
+ you can specify if PDF
+\change_inserted -712698321 1644654456
+ 
+\change_deleted -712698321 1644654456
+-
+\change_unchanged
+bookmarks 
+\change_inserted -712698321 1644654511
+(shown as a collapsible outline in the PDF reader) 
+\change_unchanged
+should be created for every section of your document to make it easier for
+ readers to navigate through the document.
  You can decide if the bookmarks should be numbered like your document sections
  or not.
- With the 
+ 
+\change_deleted -712698321 1644654607
+With
+\change_inserted -712698321 1644654609
+By checking
+\change_unchanged
+ 
+\change_deleted -712698321 1644654594
+the
+\change_unchanged
+ 
 \family sans
-Open bookmarks
+Open bookmark
+\change_inserted -712698321 1644654550
+ tree
+\change_deleted -712698321 1644654551
+s
+\change_inserted -712698321 1644654802
+ 
 \family default
+you can instruct the PDF reader to uncollapse the outliner when opening
+ the PDF.
+
+\change_unchanged
  
 \family sans
 Level
 \family default
- you can specify what sectioning level should be displayed in the bookmarks
+ 
+\change_inserted -712698321 1644654838
+determines up to which level this uncollapsing is done.
+\change_deleted -712698321 1644654687
+you can specify what sectioning level should be displayed in the bookmarks
  when opening the PDF.
+
+\change_unchanged
  For example level
 \begin_inset space ~
 \end_inset
@@ -36022,10 +36236,106 @@ Level
 \begin_inset space ~
 \end_inset
 
-1 will only display the sections.
+1 will only display the sections
+\change_inserted -712698321 1644654724
+ (collapsing the rest)
+\change_unchanged
+.
+\change_inserted -712698321 1644656154
+
 \end_layout
 
 \begin_layout Standard
+
+\change_inserted -712698321 1644657105
+In the 
+\family sans
+Additional Options
+\family default
+ dialog tab you can insert hyperref options which are not among the ones
+ described above as a comma-separated list (please refer to the hyperref
+ manual 
+\begin_inset CommandInset citation
+LatexCommand cite
+key "hyperref"
+literal "true"
+
+\end_inset
+
+ for a full list and documentation of possible options).
+ Note that these options will be passed to hyperref via 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted -712698321 1644656321
+
+\backslash
+hypersetup
+\change_unchanged
+
+\end_layout
+
+\end_inset
+
+, not via the package options.
+ This will exclude some options that can only be specified via the latter.
+ If you need to use one of those options, you can set them by adding
+\end_layout
+
+\begin_layout Quote
+
+\change_inserted -712698321 1644656496
+
+\series bold
+PackageOptions hyperref option1,option1
+\change_unchanged
+
+\end_layout
+
+\begin_layout Standard
+
+\change_inserted -712698321 1644656431
+in 
+\family sans
+Document\SpecialChar menuseparator
+Settings\SpecialChar menuseparator
+Local Layout
+\family default
+ (but only if hyperref is not loaded by your document class).
+\change_unchanged
+
+\end_layout
+
+\begin_layout Standard
+
+\change_inserted -712698321 1644657160
+The 
+\family sans
+Document Metadata
+\family default
+ input widget allows you to insert PDF properties that are independent of
+ the hyperref package and rely on some (rather new) \SpecialChar LaTeX
+ core features.
+ This requires \SpecialChar LaTeX
+ version 06/2022 at least (with earlier versions, input is
+ simply ignored).
+ The widget expects a comma-separated list of key-value options (such as
+ 
+\series bold
+pdfversion=1.7, lang=de-DE
+\series default
+).
+ At the point of writing this, the list of options is still rather small
+ and not very well documented, but it is expected that in the future, rather
+ fundamental PDF properties (such as structure tagging for accessibility
+ reasons and different PDF standards such as PDF/A) can be set this way.
+\end_layout
+
+\begin_layout Standard
+
+\change_deleted -712698321 1644656978
 PDF properties are also used in this document.
  When you look in its document settings, you can see that some additional
  
@@ -36042,6 +36352,8 @@ literal "true"
 \end_inset
 
 .
+\change_unchanged
+
 \end_layout
 
 \begin_layout Section
diff --git a/lib/doc/de/UserGuide.lyx b/lib/doc/de/UserGuide.lyx
index 2c819dd..0f1c9b0 100644
--- a/lib/doc/de/UserGuide.lyx
+++ b/lib/doc/de/UserGuide.lyx
@@ -1,5 +1,5 @@
 #LyX 2.4 created this file. For more info see https://www.lyx.org/
-\lyxformat 608
+\lyxformat 609
 \begin_document
 \begin_header
 \save_transient_properties true
@@ -8752,10 +8752,12 @@ Unformatiert
 \end_layout
 
 \begin_layout Verbatim
+
 Dies ist Unformatiert.
 \end_layout
 
 \begin_layout Verbatim
+
 Die folgenden 2 Zeilen sind leer:
 \end_layout
 
@@ -8768,6 +8770,7 @@ Die folgenden 2 Zeilen sind leer:
 \end_layout
 
 \begin_layout Verbatim
+
 Fast alles ist in Unformatiert erlaubt:"%&$§#~'`
 \backslash
 }][{|
@@ -8791,6 +8794,7 @@ Unformatiert
 \end_layout
 
 \begin_layout Verbatim*
+
 Dies ist Unformatiert*.
 \end_layout
 
@@ -33204,9 +33208,9 @@ Dokument-Einstellungen
 \family sans
 PDF-Eigenschaften
 \family default
- spezielle Optionen für die PDF-Ausgabe eines Dokuments setzen.
- Alle Optionen stammen vom \SpecialChar LaTeX
--Paket 
+ Spezifika für die PDF-Ausgabe eines Dokuments bestimmen.
+ Die meisten Spezifika werden mithilfe des \SpecialChar LaTeX
+-Pakets 
 \series bold
 hyperref
 \series default
@@ -33221,18 +33225,29 @@ status collapsed
 
 \end_inset
 
-.
+ gesetzt, das Sie durch anklicken von 
+\family sans
+Hyperref-Unterstützung verwenden
+\family default
+ zunächst aktivieren müssen (falls das Paket bereits durch die Dokumentklasse
+ oder ein anderes Paket geladen wurde, klicken Sie statt dessen 
+\family sans
+Hyperref-Optionen anpassen
+\family default
+).
 \end_layout
 
 \begin_layout Standard
 
 \series bold
-hyperref
+Hyperref
 \series default
- wird in der DVI- oder PDF-Ausgabe alle Querverweise verlinken, so dass
- ein Leser, der die DVI- oder PDF-Ausgabe auf seinem PC liest, einen Querverweis
- anklicken kann und so zur entsprechenden Stelle gelangt, wie es auch im
- Internet passiert.
+ verlinkt unter anderem alle URLs und Querverweise in der PDF-Ausgabe, so
+ dass Leser:innen eine URL oder einen Querverweis anklicken und so zur entsprech
+enden Webseite oder Stelle im Dokument gelangt können.
+ Weiterhin können Sie etwa PDF-Metadaten (wie Autor:in oder Titel des Dokuments)
+ eingeben oder festlegen, wie ein PDF-Reader die Datei öffnet.
+ 
 \end_layout
 
 \begin_layout Standard
@@ -33259,9 +33274,8 @@ automatisch
 
 eintragen
 \family default
- angekreuzt, versucht \SpecialChar LyX
-, diese Informationen aus dem Titel und dem Autor
- des Dokuments zu gewinnen.
+ angekreuzt, versucht hyperref, diese Informationen aus dem Titel und den
+ Autorangaben des Dokuments zu gewinnen.
  Die Option 
 \family sans
 Im
@@ -33283,12 +33297,12 @@ Auf der Karteikarte
 \family sans
 Hyperlinks
 \family default
- können Sie festlegen, wie die Querverweise aussehen sollen, und ob bibliografis
-che Rückverweise angelegt werden sollen.
-\end_layout
-
-\begin_layout Standard
-Mit die Option 
+ können Sie festlegen, wie Querverweise aussehen sollen, und ob bzw.
+ welche bibliografischen Rückverweise angelegt werden sollen.
+ Rückverweise sind Verweise, die am Ende eines Literatureintrags eingefügt
+ werden und die entweder auf Abschnitte, Seiten oder Folien verlinken, auf
+ denen ein entsprechender Eintrag zitiert wurde.
+ Mit die Option 
 \family sans
 Links am Zeilenende umbrechen
 \family default
@@ -33357,7 +33371,7 @@ grün
 \end_layout
 
 \begin_layout Standard
-die aber im Feld 
+die aber in der Karteikarte 
 \family sans
 Zusätzliche Optionen
 \family default
@@ -33370,7 +33384,7 @@ B.
  in diesem Dokument mit den Optionen
 \end_layout
 
-\begin_layout Standard
+\begin_layout Quote
 
 \series bold
 linkcolor=black, citecolor=black, urlcolor=blue, filecolor=blue
@@ -33381,52 +33395,39 @@ getan.
 \end_layout
 
 \begin_layout Standard
-Wenn die Option 
-\family sans
-Rückverweise
-\family default
- ausgewählt ist, erscheinen die Hyperlinks im Literaturverzeichnis hinter
- den Einträgen, je nach Einstellung, als Nummer des Abschnitts, der Folie
- oder Seite in/auf der sie referenziert sind.
-\end_layout
-
-\begin_layout Standard
 In der Karteikarte 
 \family sans
 Lesezeichen
 \family default
- können Sie festlegen, ob welche erzeugt und auch nummeriert werden sollen.
- Das erleichtert es Lesern, durch die PDF-Ausgabe des Dokuments zu navigieren.
+ können Sie festlegen, ob eine Navigationsstruktur (die als einklappbare
+ hierarchische Liste von Kapiteln, Abschnitten usw.
+ im PDF-Reader angezeigt wird) angelegt werden soll.
+ Dies erleichtert es Leser:innen, durch die PDF-Ausgabe des Dokuments zu
+ navigieren.
+ Sie können festlegen, ob die Einträge dieser Liste, analog zu den Kapiteln
+ und Abschnitten, nummeriert werden soll oder nicht.
  Mit 
 \family sans
+Lesezeichen-Strukturbaum öffnen
+\family default
+ können Sie den PDF-Reader instruieren, diese Navigationsstruktur beim öffnen
+ auszuklappen, mit 
+\family sans
 Ebene
 \family default
- legen Sie fest, welche Lesezeichen angezeigt werden sollen.
- 2 zum Beispiel zeigt die Lesezeichen aller Abschnitte und Unterabschnitte,
- während 1 nur Abschnitte berücksichtigt.
+ legen Sie fest, bis zu welcher Ebene ausgeklappt werden soll.
+ 2 zum Beispiel öffnet die Lesezeichen aller Abschnitte und Unterabschnitte,
+ während 1 nur Abschnitte ausklappt.
 \end_layout
 
 \begin_layout Standard
-Auch in diesem Handbuch werden PDF-Eigenschaften benutzt, wie Sie im Dialogfenst
-er 
-\family sans
-Dokument-Einstellungen
-\family default
- sehen können.
- Dort sehen Sie auch, dass 
+In der Karteikarte 
 \family sans
-Zusätzliche
-\begin_inset space \space{}
-\end_inset
-
-Optionen
+Zusätzliche Optionen
 \family default
- benutzt werden.
- Genaueres dazu finden Sie im 
-\series bold
-hyperref
-\series default
--Handbuch 
+ können Sie eine durch Kommata getrennte Liste von weiteren Hyperref-Optionen
+ eingeben, die oben nicht beschrieben sind (eine vollständige Liste und
+ Beschreibung finden Sie im Hyperref-Handbuch 
 \begin_inset CommandInset citation
 LatexCommand cite
 key "hyperref"
@@ -33434,7 +33435,63 @@ literal "true"
 
 \end_inset
 
-.
+).
+ Beachten Sie, dass diese Optionen über das Makro 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\backslash
+hypersetup
+\end_layout
+
+\end_inset
+
+ an Hyperref übergeben werden, nicht in Form von Paket-Optionen.
+ Das ist deshalb wichtig, weil manche Optionen nur in letzterer Form funktionier
+en.
+ Wenn Sie eine von diesen brauchen, können Sie sie mittels
+\end_layout
+
+\begin_layout Quote
+
+\series bold
+PackageOptions hyperref option1,option1
+\end_layout
+
+\begin_layout Standard
+in 
+\family sans
+Dokument\SpecialChar menuseparator
+Einstellungen\SpecialChar menuseparator
+Lokales Format
+\family default
+ übergeben (was aber nur funktioniert, wenn hyperref nicht von Ihrer Dokumentkla
+sse geladen wird).
+\end_layout
+
+\begin_layout Standard
+Das Eingabefeld 
+\family sans
+Metadaten des Dokuments
+\family default
+ erlaubt es Ihnen, PDF-Eigenschaften unabhängig von hyperref festzulegen.
+ Dies greift auf eine Kernfunktion von \SpecialChar LaTeX
+ zurück, die allerdings erst seit
+ der Version 06/2022 verfügbar ist (wenn Sie eine ältere Version haben,
+ werden Eingaben in dieses Feld schlicht ignoriert).
+ Das Eingabefeld erwartet durch Kommata getrennte Schlüssel-Wert-Optionen
+ (wie 
+\series bold
+pdfversion=1.7, lang=de-DE
+\series default
+).
+ Zum Zeitpunkt, als dies hier geschrieben wurde, ist die Liste möglicher
+ Optionen noch klein und schlecht dokumentiert.
+ Es ist aber zu erwarten, dass zukünftig sehr fundamentale PDF-Eigenschaften
+ (wie etwa strukturiertes Tagging für barrierefreie Dokumente oder verschiedene
+ PDF-Standards wie PDF/A) auf diese Weise eingestellt werden können.
 \end_layout
 
 \begin_layout Section
diff --git a/lib/lyx2lyx/lyx_2_4.py b/lib/lyx2lyx/lyx_2_4.py
index 3fed7ee..9dfaeae 100644
--- a/lib/lyx2lyx/lyx_2_4.py
+++ b/lib/lyx2lyx/lyx_2_4.py
@@ -27,11 +27,12 @@ from datetime import (datetime, date, time)
 # Uncomment only what you need to import, please.
 
 from parser_tools import (count_pars_in_inset, del_complete_lines, del_token,
-    find_end_of_inset, find_end_of_layout, find_token, find_token_backwards,
-    find_token_exact, find_re, get_bool_value, get_containing_inset,
-    get_containing_layout, get_option_value, get_value, get_quoted_value)
+     find_end_of, find_end_of_inset, find_end_of_layout, find_token,
+     find_token_backwards, find_token_exact, find_re, get_bool_value,
+     get_containing_inset, get_containing_layout, get_option_value, get_value,
+     get_quoted_value)
 #    del_value, 
-#    find_complete_lines, find_end_of,
+#    find_complete_lines,
 #    find_re, find_substring,
 #    is_in_inset, set_bool_value
 #    find_tokens, check_token
@@ -4413,6 +4414,19 @@ def revert_docbook_mathml_prefix(document):
             return
         del document.header[i]
 
+def revert_document_metadata(document):
+    """Revert document metadata"""
+    i = 0
+    while True:
+        i = find_token(document.header, "\\begin_metadata", i)
+        if i == -1:
+            return
+        j = find_end_of(document.header, i, "\\begin_metadata", "\\end_metadata")
+        if j == -1:
+            # this should not happen
+            break
+        document.header[i : j + 1] = []
+
 ##
 # Conversion hub
 #
@@ -4482,10 +4496,12 @@ convert = [
            [605, [convert_vcolumns2]],
            [606, [convert_koma_frontispiece]],
            [607, []],
-           [608, []]
+           [608, []],
+           [609, []]
           ]
 
-revert =  [[607, [revert_docbook_mathml_prefix]],
+revert =  [[608, [revert_document_metadata]],
+           [607, [revert_docbook_mathml_prefix]],
            [606, [revert_spellchecker_ignore]],
            [605, [revert_koma_frontispiece]],
            [604, [revert_vcolumns2]],
diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index fc559a4..95aa913 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -807,6 +807,8 @@ string BufferParams::readToken(Lexer & lex, string const & token,
 				origin.replace(0, sysdirprefix.length() - 1,
 					package().system_support().absFileName());
 		}
+	} else if (token == "\\begin_metadata") {
+		readDocumentMetadata(lex);
 	} else if (token == "\\begin_preamble") {
 		readPreamble(lex);
 	} else if (token == "\\begin_local_layout") {
@@ -1255,6 +1257,15 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
 						baseClass()->name()), "layout"))
 	   << '\n';
 
+	// then document metadata
+	if (!document_metadata.empty()) {
+		// remove '\n' from the end of document_metadata
+		docstring const tmpmd = rtrim(document_metadata, "\n");
+		os << "\\begin_metadata\n"
+		   << to_utf8(tmpmd)
+		   << "\n\\end_metadata\n";
+	}
+
 	// then the preamble
 	if (!preamble.empty()) {
 		// remove '\n' from the end of preamble
@@ -1688,6 +1699,56 @@ void BufferParams::validate(LaTeXFeatures & features) const
 bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
 			      FileName const & filepath) const
 {
+	// DocumentMetadata must come before anything else
+	if (features.isAvailable("LaTeX-2022/06/01")
+	    && !containsOnly(document_metadata, " \n\t")) {
+		// Check if the user preamble contains uncodable glyphs
+		odocstringstream doc_metadata;
+		docstring uncodable_glyphs;
+		Encoding const * const enc = features.runparams().encoding;
+		if (enc) {
+			for (char_type c : document_metadata) {
+				if (!enc->encodable(c)) {
+					docstring const glyph(1, c);
+					LYXERR0("Uncodable character '"
+						<< glyph
+						<< "' in document metadata!");
+					uncodable_glyphs += glyph;
+					if (features.runparams().dryrun) {
+						doc_metadata << "<" << _("LyX Warning: ")
+						   << _("uncodable character") << " '";
+						doc_metadata.put(c);
+						doc_metadata << "'>";
+					}
+				} else
+					doc_metadata.put(c);
+			}
+		} else
+			doc_metadata << document_metadata;
+
+		// On BUFFER_VIEW|UPDATE, warn user if we found uncodable glyphs
+		if (!features.runparams().dryrun && !uncodable_glyphs.empty()) {
+			frontend::Alert::warning(
+				_("Uncodable character in document metadata"),
+				support::bformat(
+				  _("The metadata of your document contains glyphs "
+				    "that are unknown in the current document encoding "
+				    "(namely %1$s).\nThese glyphs are omitted "
+				    " from the output, which may result in "
+				    "incomplete output."
+				    "\n\nPlease select an appropriate "
+				    "document encoding\n"
+				    "(such as utf8) or change the "
+				    "preamble code accordingly."),
+				  uncodable_glyphs));
+		}
+		if (!doc_metadata.str().empty()) {
+			os << "\\DocumentMetadata{\n"
+			   << doc_metadata.str()
+			   << "}\n";
+		}
+	}
+
 	// http://www.tug.org/texmf-dist/doc/latex/base/fixltx2e.pdf
 	// !! To use the Fix-cm package, load it before \documentclass, and use the command
 	// \RequirePackage to do so, rather than the normal \usepackage
@@ -2881,6 +2942,16 @@ void BufferParams::readPreamble(Lexer & lex)
 }
 
 
+void BufferParams::readDocumentMetadata(Lexer & lex)
+{
+	if (lex.getString() != "\\begin_metadata")
+		lyxerr << "Error (BufferParams::readDocumentMetadata):"
+			"consistency check failed." << endl;
+
+	document_metadata = lex.getLongString(from_ascii("\\end_metadata"));
+}
+
+
 void BufferParams::readLocalLayout(Lexer & lex, bool forced)
 {
 	string const expected = forced ? "\\begin_forced_local_layout" :
diff --git a/src/BufferParams.h b/src/BufferParams.h
index 38649e7..890d884 100644
--- a/src/BufferParams.h
+++ b/src/BufferParams.h
@@ -367,6 +367,8 @@ public:
 	std::string origin;
 	///
 	docstring preamble;
+	/// DocumentMetadata as introduced by LaTeX 2022/06
+	docstring document_metadata;
 	///
 	std::string options;
 	/// use the class options defined in the layout?
@@ -620,6 +622,8 @@ private:
 	///
 	void readPreamble(Lexer &);
 	///
+	void readDocumentMetadata(Lexer &);
+	///
 	void readLocalLayout(Lexer &, bool);
 	///
 	void readLanguage(Lexer &);
diff --git a/src/frontends/qt/GuiDocument.cpp b/src/frontends/qt/GuiDocument.cpp
index 812b8e2..714953c 100644
--- a/src/frontends/qt/GuiDocument.cpp
+++ b/src/frontends/qt/GuiDocument.cpp
@@ -1722,7 +1722,9 @@ GuiDocument::GuiDocument(GuiView & lv)
 		this, SLOT(change_adaptor()));
 	connect(pdfSupportModule->fullscreenCB, SIGNAL(toggled(bool)),
 		this, SLOT(change_adaptor()));
-	connect(pdfSupportModule->optionsLE, SIGNAL(textChanged(QString)),
+	connect(pdfSupportModule->optionsTE, SIGNAL(textChanged()),
+		this, SLOT(change_adaptor()));
+	connect(pdfSupportModule->metadataTE, SIGNAL(textChanged()),
 		this, SLOT(change_adaptor()));
 
 	pdfSupportModule->titleLE->setValidator(new NoNewLineValidator(
@@ -1733,8 +1735,8 @@ GuiDocument::GuiDocument(GuiView & lv)
 		pdfSupportModule->subjectLE));
 	pdfSupportModule->keywordsLE->setValidator(new NoNewLineValidator(
 		pdfSupportModule->keywordsLE));
-	pdfSupportModule->optionsLE->setValidator(new NoNewLineValidator(
-		pdfSupportModule->optionsLE));
+	(void) new LaTeXHighlighter(pdfSupportModule->optionsTE->document(), true, true);
+	(void) new LaTeXHighlighter(pdfSupportModule->metadataTE->document(), true, true);
 
 	for (int i = 0; backref_opts[i][0]; ++i)
 		pdfSupportModule->backrefCO->addItem(qt_(backref_opts_gui[i]));
@@ -3911,7 +3913,14 @@ void GuiDocument::applyView()
 	else
 		pdf.pagemode.clear();
 	pdf.quoted_options = pdf.quoted_options_check(
-				fromqstr(pdfSupportModule->optionsLE->text()));
+				fromqstr(pdfSupportModule->optionsTE->toPlainText()));
+#if QT_VERSION < 0x060000
+	bp_.document_metadata = qstring_to_ucs4(pdfSupportModule->metadataTE->toPlainText()
+						.trimmed().replace(QRegExp("\n+"), "\n"));
+#else
+	bp_.document_metadata = qstring_to_ucs4(pdfSupportModule->metadataTE->toPlainText()
+						.trimmed().replace(QRegularExpression("\n+"), "\n"));
+#endif
 
 	// change tracking
 	bp_.track_changes = changesModule->trackChangesCB->isChecked();
@@ -4519,9 +4528,12 @@ void GuiDocument::paramsToDialog()
 	pdfSupportModule->fullscreenCB->setChecked
 		(pdf.pagemode == pdf.pagemode_fullscreen);
 
-	pdfSupportModule->optionsLE->setText(
+	pdfSupportModule->optionsTE->setPlainText(
 		toqstr(pdf.quoted_options));
 
+	pdfSupportModule->metadataTE->setPlainText(
+		toqstr(bp_.document_metadata));
+
 	// change tracking
 	changesModule->trackChangesCB->setChecked(bp_.track_changes);
 	changesModule->outputChangesCB->setChecked(bp_.output_changes);
diff --git a/src/frontends/qt/LaTeXHighlighter.cpp b/src/frontends/qt/LaTeXHighlighter.cpp
index f33db5d..80e7a09 100644
--- a/src/frontends/qt/LaTeXHighlighter.cpp
+++ b/src/frontends/qt/LaTeXHighlighter.cpp
@@ -20,8 +20,8 @@ namespace lyx {
 namespace frontend {
 
 
-LaTeXHighlighter::LaTeXHighlighter(QTextDocument * parent, bool at_letter)
-	: QSyntaxHighlighter(parent), at_letter_(at_letter)
+LaTeXHighlighter::LaTeXHighlighter(QTextDocument * parent, bool at_letter, bool keyval)
+	: QSyntaxHighlighter(parent), at_letter_(at_letter), keyval_(keyval)
 {
 	auto blend = [](QColor color1, QColor color2) {
 		int r = 0.5 * (color1.red() + color2.red());
@@ -38,12 +38,32 @@ LaTeXHighlighter::LaTeXHighlighter(QTextDocument * parent, bool at_letter)
 	mathFormat.setForeground(blend(Qt::red, text_color));
 	warningFormat.setForeground(Qt::red);
 	warningFormat.setFontWeight(QFont::Bold);
+	keyFormat.setForeground(blend(Qt::darkRed, text_color));
+	keyFormat.setFontWeight(QFont::Bold);
+	valFormat.setForeground(blend(Qt::darkGreen, text_color));
 }
 
 
 void LaTeXHighlighter::highlightBlock(QString const & text)
 {
 #if QT_VERSION < 0x060000
+	// keyval
+	if (keyval_) {
+		// Highlight key-val options. Used in some option widgets.
+		static const QRegExp exprKeyvalkey("[^=,]+");
+		static const QRegExp exprKeyvalval("[^,]+");
+		int kvindex = exprKeyvalkey.indexIn(text);
+		while (kvindex >= 0) {
+			int length = exprKeyvalkey.matchedLength();
+			setFormat(kvindex, length, keyFormat);
+			int kvvindex = exprKeyvalval.indexIn(text, kvindex + length);
+			if (kvvindex > 0) {
+				length += exprKeyvalval.matchedLength();
+				setFormat(kvvindex, length, valFormat);
+			}
+			kvindex = exprKeyvalkey.indexIn(text, kvindex + length);
+		}
+	}
 	// $ $
 	static const QRegExp exprMath("\\$[^\\$]*\\$");
 	int index = exprMath.indexIn(text);
@@ -129,6 +149,27 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
 		index = exprWarning.indexIn(text, index + length);
 	}
 #else
+	// keyval
+	if (keyval_) {
+		// Highlight key-val options. Used in some option widgets.
+		static const QRegularExpression exprKeyvalkey("[^=,]+");
+		static const QRegularExpression exprKeyvalval("[^,]+");
+		QRegularExpressionMatch matchkey = exprKeyvalkey.match(text);
+		int kvindex = matchkey.capturedStart(0);
+		while (kvindex >= 0) {
+			int length = matchkey.capturedLength(0);
+			setFormat(kvindex, length, keyFormat);
+			QRegularExpressionMatch matchval =
+				exprKeyvalval.match(text, kvindex + length);
+			int kvvindex = matchval.capturedStart(0);
+			if (kvvindex > 0) {
+				length += matchval.capturedLength(0);
+				setFormat(kvvindex, length, valFormat);
+			}
+			matchkey = exprKeyvalkey.match(text, kvindex + length);
+			kvindex = matchkey.capturedStart(0);
+		}
+	}
 	// $ $
 	static const QRegularExpression exprMath("\\$[^\\$]*\\$");
 	QRegularExpressionMatch match = exprMath.match(text);
diff --git a/src/frontends/qt/LaTeXHighlighter.h b/src/frontends/qt/LaTeXHighlighter.h
index 47df8b9..7a80d1f 100644
--- a/src/frontends/qt/LaTeXHighlighter.h
+++ b/src/frontends/qt/LaTeXHighlighter.h
@@ -25,7 +25,9 @@ namespace frontend {
 class LaTeXHighlighter : public QSyntaxHighlighter
 {
 public:
-	explicit LaTeXHighlighter(QTextDocument * parent, bool at_letter = false);
+	explicit LaTeXHighlighter(QTextDocument * parent,
+				  bool at_letter = false,
+				  bool keyval = false);
 
 protected:
 	void highlightBlock(QString const & text) override;
@@ -35,8 +37,12 @@ private:
 	QTextCharFormat keywordFormat;
 	QTextCharFormat mathFormat;
 	QTextCharFormat warningFormat;
+	QTextCharFormat keyFormat;
+	QTextCharFormat valFormat;
 	// is at a letter? (as in the preamble)
 	bool const at_letter_;
+	// highlight keyval options?
+	bool const keyval_;
 };
 
 } // namespace frontend
diff --git a/src/frontends/qt/ui/PDFSupportUi.ui b/src/frontends/qt/ui/PDFSupportUi.ui
index 1e45f21..51a144c 100644
--- a/src/frontends/qt/ui/PDFSupportUi.ui
+++ b/src/frontends/qt/ui/PDFSupportUi.ui
@@ -6,29 +6,14 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>437</width>
-    <height>488</height>
+    <width>485</width>
+    <height>530</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
-  <layout class="QGridLayout">
-   <property name="leftMargin">
-    <number>9</number>
-   </property>
-   <property name="topMargin">
-    <number>9</number>
-   </property>
-   <property name="rightMargin">
-    <number>9</number>
-   </property>
-   <property name="bottomMargin">
-    <number>9</number>
-   </property>
-   <property name="spacing">
-    <number>6</number>
-   </property>
+  <layout class="QGridLayout" name="gridLayout_2">
    <item row="0" column="0">
     <widget class="QGroupBox" name="use_hyperrefGB">
      <property name="focusPolicy">
@@ -465,58 +450,57 @@
           </item>
          </layout>
         </widget>
+        <widget class="QWidget" name="tab_4">
+         <attribute name="title">
+          <string>Additional O&ptions</string>
+         </attribute>
+         <layout class="QGridLayout" name="gridLayout">
+          <item row="0" column="0">
+           <widget class="QGroupBox" name="groupBox_3">
+            <property name="toolTip">
+             <string>Document metadata and PDF settings (as specified in LaTeX 06/2022 and later)</string>
+            </property>
+            <property name="title">
+             <string>Hyperse&tup</string>
+            </property>
+            <layout class="QGridLayout" name="gridLayout_8">
+             <item row="0" column="0">
+              <widget class="QTextEdit" name="optionsTE">
+               <property name="acceptRichText">
+                <bool>false</bool>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+         </layout>
+        </widget>
        </widget>
       </item>
-      <item row="1" column="0">
-       <widget class="QGroupBox" name="groupBox_3">
-        <property name="title">
-         <string>Additional O&ptions</string>
-        </property>
-        <property name="flat">
-         <bool>true</bool>
-        </property>
-        <property name="checkable">
-         <bool>false</bool>
-        </property>
-        <property name="checked">
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QGroupBox" name="groupBox">
+     <property name="toolTip">
+      <string>Document metadata and PDF settings (as specified in LaTeX 06/2022 and later)</string>
+     </property>
+     <property name="title">
+      <string>Document &Metadata</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_7">
+      <item row="0" column="0">
+       <widget class="QTextEdit" name="metadataTE">
+        <property name="acceptRichText">
          <bool>false</bool>
         </property>
-        <layout class="QGridLayout">
-         <property name="leftMargin">
-          <number>9</number>
-         </property>
-         <property name="topMargin">
-          <number>9</number>
-         </property>
-         <property name="rightMargin">
-          <number>9</number>
-         </property>
-         <property name="bottomMargin">
-          <number>9</number>
-         </property>
-         <property name="spacing">
-          <number>6</number>
-         </property>
-         <item row="0" column="0">
-          <widget class="QLineEdit" name="optionsLE">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-           <property name="toolTip">
-            <string>e.g.: pdfstartview=XYZ, plainpages=false, pdfpagelabels</string>
-           </property>
-          </widget>
-         </item>
-        </layout>
        </widget>
       </item>
      </layout>
     </widget>
    </item>
-   <item row="1" column="0">
+   <item row="2" column="0">
     <spacer>
      <property name="orientation">
       <enum>Qt::Vertical</enum>
diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp
index e14176e..3588086 100644
--- a/src/tex2lyx/Preamble.cpp
+++ b/src/tex2lyx/Preamble.cpp
@@ -1950,6 +1950,11 @@ bool Preamble::writeLyXHeader(ostream & os, bool subdoc, string const & outfiled
 	   << "\\save_transient_properties " << h_save_transient_properties << "\n"
 	   << "\\origin " << origin << "\n"
 	   << "\\textclass " << h_textclass << "\n";
+	if (!h_doc_metadata.empty()) {
+		os << "\\begin_metadata\n"
+		   << h_doc_metadata
+		   << "\n\\end_metadata\n";
+	}
 	string const raw = subdoc ? empty_string() : h_preamble.str();
 	if (!raw.empty()) {
 		os << "\\begin_preamble\n";
@@ -2793,6 +2798,11 @@ void Preamble::parse(Parser & p, string const & forceclass,
 			continue;
 		}
 
+		if (t.cs() == "DocumentMetadata") {
+			h_doc_metadata = trimSpaceAndEol(p.getArg('{', '}'));
+			continue;
+		}
+
 		if (t.cs() == "usepackage") {
 			string const options = p.getArg('[', ']');
 			string const name = p.getArg('{', '}');
diff --git a/src/tex2lyx/Preamble.h b/src/tex2lyx/Preamble.h
index 8bdb358..1a03ae3 100644
--- a/src/tex2lyx/Preamble.h
+++ b/src/tex2lyx/Preamble.h
@@ -148,6 +148,7 @@ private:
 	int index_number;
 
 	std::ostringstream h_preamble;
+	std::string h_doc_metadata;
 	std::string h_backgroundcolor;
 	std::string h_multibib;
 	std::string h_biblio_style;
diff --git a/src/version.h b/src/version.h
index aba9db0..bdf6cee 100644
--- a/src/version.h
+++ b/src/version.h
@@ -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 608 // tcuvelier: \\docbook_mathml_prefix
-#define LYX_FORMAT_TEX2LYX 608
+#define LYX_FORMAT_LYX 609 // spitz: document metadata
+#define LYX_FORMAT_TEX2LYX 609
 
 #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
 #ifndef _MSC_VER

commit 027545a2e607e86eec77bb4486c4b339c969049e
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Feb 12 15:10:14 2022 +0100

    Whitespace

diff --git a/src/frontends/qt/GuiDocument.cpp b/src/frontends/qt/GuiDocument.cpp
index 4067d6c..812b8e2 100644
--- a/src/frontends/qt/GuiDocument.cpp
+++ b/src/frontends/qt/GuiDocument.cpp
@@ -265,15 +265,15 @@ class ModuleSelectionManager : public GuiSelectionManager
 public:
 	///
 	ModuleSelectionManager(QObject * parent,
-						   QTreeView * availableLVarg,
-						   QTreeView * selectedLVarg,
-						   QPushButton * addPBarg,
-						   QPushButton * delPBarg,
-						   QPushButton * upPBarg,
-						   QPushButton * downPBarg,
-						   QStandardItemModel * availableModelarg,
-						   GuiIdListModel * selectedModelarg,
-	                       GuiDocument const * container)
+			       QTreeView * availableLVarg,
+			       QTreeView * selectedLVarg,
+			       QPushButton * addPBarg,
+			       QPushButton * delPBarg,
+			       QPushButton * upPBarg,
+			       QPushButton * downPBarg,
+			       QStandardItemModel * availableModelarg,
+			       GuiIdListModel * selectedModelarg,
+			       GuiDocument const * container)
 		: GuiSelectionManager(parent, availableLVarg, selectedLVarg, addPBarg, delPBarg,
 							  upPBarg, downPBarg, availableModelarg, selectedModelarg),
 		  container_(container)
@@ -933,9 +933,9 @@ GuiDocument::GuiDocument(GuiView & lv)
 	connect(outputModule->tableoutCB, SIGNAL(currentIndexChanged(int)),
 		this, SLOT(change_adaptor()));
 	connect(outputModule->mathmlprefixCB, SIGNAL(currentIndexChanged(int)),
-        this, SLOT(change_adaptor()));
+		this, SLOT(change_adaptor()));
 
-    connect(outputModule->shellescapeCB, SIGNAL(stateChanged(int)),
+	connect(outputModule->shellescapeCB, SIGNAL(stateChanged(int)),
 		this, SLOT(shellescapeChanged()));
 	connect(outputModule->outputsyncCB, SIGNAL(toggled(bool)),
 		this, SLOT(setOutputSync(bool)));
@@ -1331,6 +1331,7 @@ GuiDocument::GuiDocument(GuiView & lv)
 	connect(colorModule->delBoxBackgroundTB, SIGNAL(clicked()),
 		this, SLOT(deleteBoxBackgroundColor()));
 
+
 	// change tracking
 	changesModule = new UiWidget<Ui::ChangeTrackingUi>(this);
 	connect(changesModule->trackChangesCB, SIGNAL(clicked()),
@@ -1340,6 +1341,7 @@ GuiDocument::GuiDocument(GuiView & lv)
 	connect(changesModule->changeBarsCB, SIGNAL(clicked()),
 		this, SLOT(change_adaptor()));
 
+
 	// numbering
 	numberingModule = new UiWidget<Ui::NumberingUi>(this);
 	connect(numberingModule->depthSL, SIGNAL(valueChanged(int)),
@@ -1762,7 +1764,7 @@ GuiDocument::GuiDocument(GuiView & lv)
 		qt_("Input listings parameters below. Enter ? for a list of parameters."));
 
 	for (int i = 0; lst_packages[i][0]; ++i)
-            listingsModule->packageCO->addItem(lst_packages[i]);
+		listingsModule->packageCO->addItem(lst_packages[i]);
 
 
 	// add the panels

commit a7c58e2ff3899fc9544296575efb6ae1061ef3f8
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Fri Feb 11 17:07:57 2022 +0100

    Do not output hyperref option unicode with recent hyperref versions
    
    unicode is true by default anyway, and it is now easier to opt out
    via PackageOptions

diff --git a/lib/chkconfig.ltx b/lib/chkconfig.ltx
index fe3ce0d..660710b 100644
--- a/lib/chkconfig.ltx
+++ b/lib/chkconfig.ltx
@@ -586,6 +586,9 @@
 \TestPackageVersion{babel}{2017/11/03}
 % This introduces multiple paragraphs in multirows
 \TestPackageVersion{multirow}{2021/01/29}
+% With this version, hyperref option unicode is true
+% by default
+\TestPackageVersion{hyperref}{2021/02/04}
 
 %%% Document classes
 % The list of layout files has been put in this file here by the
diff --git a/src/PDFOptions.cpp b/src/PDFOptions.cpp
index ee2193f..1a15b0b 100644
--- a/src/PDFOptions.cpp
+++ b/src/PDFOptions.cpp
@@ -14,6 +14,7 @@
 #include "PDFOptions.h"
 
 #include "Encoding.h"
+#include "LaTeXFeatures.h"
 #include "Lexer.h"
 #include "OutputParams.h"
 #include "texstream.h"
@@ -105,10 +106,10 @@ void PDFOptions::writeLaTeX(OutputParams & runparams, otexstream & os,
 		opt += runparams.hyperref_driver + ",";
 
 	// Since LyX uses unicode, also set the PDF strings to unicode strings
-	// with the hyperref option "unicode". (With Xe/LuaTeX and pTeX,
-	// unicode=true is the default, with Japanese (platex), the option
-	// leads to errors (even if the input encoding is UTF-8).)
-	if (!runparams.isFullUnicode() && !runparams.use_japanese)
+	// with the hyperref option "unicode". This is only needed with pdflatex.
+	// As of 2021/02/04, unicode=true is default.
+	if (!LaTeXFeatures::isAvailable("hyperref-2021/02/04")
+	     && !runparams.isFullUnicode() && !runparams.use_japanese)
 		opt += "unicode=true,";
 
 	// only use the hyperref settings if hyperref is enabled by the user
@@ -118,7 +119,8 @@ void PDFOptions::writeLaTeX(OutputParams & runparams, otexstream & os,
 		// explicitly given
 		if (pdfusetitle && title.empty() && author.empty())
 			opt += "pdfusetitle,";
-		opt += "\n ";
+		if (!opt.empty())
+			opt += "\n ";
 		opt += "bookmarks=" + convert<string>(bookmarks) + ',';
 		if (bookmarks) {
 			opt += "bookmarksnumbered=" + convert<string>(bookmarksnumbered) + ',';
@@ -127,7 +129,8 @@ void PDFOptions::writeLaTeX(OutputParams & runparams, otexstream & os,
 				opt += "bookmarksopenlevel="
 				+ convert<string>(bookmarksopenlevel) + ',';
 		}
-		opt += "\n ";
+		if (!opt.empty())
+			opt += "\n ";
 		opt += "breaklinks=" + convert<string>(breaklinks) + ',';
 		opt += "pdfborder={0 0 ";
 		opt += (pdfborder ? '0' : '1');

commit cd995a2bc6449c8d9d3dee494ecffcf9abdcb50f
Author: Stephan Witt <switt at lyx.org>
Date:   Wed Feb 9 10:59:18 2022 +0100

    Avoid static members zoom_min_ and zoom_max_
    
    Some compilers cannot use static class members by reference. std::min() and std::max() are passing parameters by const reference.

diff --git a/src/frontends/qt/GuiView.h b/src/frontends/qt/GuiView.h
index bd39d26..27d230b 100644
--- a/src/frontends/qt/GuiView.h
+++ b/src/frontends/qt/GuiView.h
@@ -519,9 +519,9 @@ private:
 	/// from the default zoom pref
 	double zoom_ratio_ = 1.0;
 	/// Minimum zoom percentage
-	static int const zoom_min_ = 10;
+	int const zoom_min_ = 10;
 	/// Maximum zoom percentage
-	static int const zoom_max_ = 1000;
+	int const zoom_max_ = 1000;
 
 	// movability flag of all toolbars
 	bool toolbarsMovable_;

commit 9faeaacfa8c871b7be56c7825b4c4878435ae26f
Author: Kornel Benko <kornel at lyx.org>
Date:   Tue Feb 8 19:54:16 2022 +0100

    Update sk.po

diff --git a/po/sk.po b/po/sk.po
index 7e2c7d2..3848bb6 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -3,13 +3,13 @@
 #
 # Zdenko Podobný <zdpo at mailbox.sk>, 2003, 2006.
 # Kornel Benko <Kornel.Benko at berlin.de>, 2009.
-# Kornel Benko <kornel at lyx.org>, 2009-2021.
+# Kornel Benko <kornel at lyx.org>, 2009-2022.
 msgid ""
 msgstr ""
 "Project-Id-Version: LyX-2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2021-12-29 19:07+0100\n"
-"PO-Revision-Date: 2021-12-29 18:12+0000\n"
+"POT-Creation-Date: 2022-02-08 19:47+0100\n"
+"PO-Revision-Date: 2022-02-08 18:52+0000\n"
 "Last-Translator: Kornel Benko <kornel at lyx.org>\n"
 "Language-Team: Slovak <kornel at lyx.org>\n"
 "Language: sk\n"
@@ -3877,19 +3877,6 @@ msgstr ""
 msgid "&Underline change tracking additions"
 msgstr "&Podčiarknuť adície sledovaných zmien"
 
-#: src/frontends/qt/ui/PrefDisplayUi.ui:164
-msgid ""
-"If this is checked, an intermediate surface will be used for painting. This "
-"may be needed in some cases to have proper display, but breaks subpixel "
-"aliasing."
-msgstr ""
-"Keď zaškrtnuté, bude sa používať vnútorná plocha na kresbu. Môže to byť "
-"potrebné pre slušný displej. Ale porúša zarovnávanie pod-pixlov."
-
-#: src/frontends/qt/ui/PrefDisplayUi.ui:167
-msgid "Use &backing store to display text"
-msgstr "Používať zálohové ukladanie na zobrazenie &textu"
-
 #: src/frontends/qt/ui/PrefDocHandlingUi.ui:26
 msgid "Session Handling"
 msgstr "Riadenie sedenia"
@@ -34103,9 +34090,13 @@ msgstr "Neplatný argument \"%1$s\" funkcie toolbar-set!"
 msgid "Unknown toolbar \"%1$s\""
 msgstr "Neznáma lišta nástrojov \"%1$s\""
 
-#: src/frontends/qt/GuiView.cpp:2313 src/frontends/qt/GuiView.cpp:2326
+#: src/frontends/qt/GuiView.cpp:2509
 msgid "Zoom level cannot be less than %1$d%."
-msgstr "Stupeň lupy nesmie byť menší ako %1$d%."
+msgstr "Stupeň lupy nesmie byť nižší ako %1$d%."
+
+#: src/frontends/qt/GuiView.cpp:2514
+msgid "Zoom level cannot be more than %1$d%."
+msgstr "Stupeň lupy nesmie byť vyšší ako %1$d%."
 
 #: src/frontends/qt/GuiView.cpp:2455
 msgid "Document not loaded."
@@ -37246,6 +37237,17 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Neznámy používateľ"
 
+#~ msgid ""
+#~ "If this is checked, an intermediate surface will be used for painting. "
+#~ "This may be needed in some cases to have proper display, but breaks "
+#~ "subpixel aliasing."
+#~ msgstr ""
+#~ "Keď zaškrtnuté, bude sa používať vnútorná plocha na kresbu. Môže to byť "
+#~ "potrebné pre slušný displej. Ale porúša zarovnávanie pod-pixlov."
+
+#~ msgid "Use &backing store to display text"
+#~ msgstr "Používať zálohové ukladanie na zobrazenie &textu"
+
 #~ msgid "Preferred &Language:"
 #~ msgstr "&Preferenčný Jazyk:"
 

commit 5259b6ba62fd4e31c260d73cbdfdb66847afcb98
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Feb 8 19:42:17 2022 +0100

    Set a maximum value to zoom level
    
    The minimal vamue is set to 10%, let's set the max to 1000%. This
    avoids crashes when characters are too large.
    
    The code is refactored to be more compact and the tests are more precise.
    
    Fixes bug #12452.

diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index 5cf4fce..43b835e 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -643,8 +643,7 @@ GuiView::GuiView(int id)
 	zoom_ratio_ = settings.value("zoom_ratio", 1.0).toDouble();
 	// Actual zoom value: default zoom + fractional offset
 	int zoom = (int)(lyxrc.defaultZoom * zoom_ratio_);
-	if (zoom < static_cast<int>(zoom_min_))
-		zoom = zoom_min_;
+	zoom = min(max(zoom, zoom_min_), zoom_max_);
 	zoom_slider_->setValue(zoom);
 	zoom_slider_->setToolTip(qt_("Workarea zoom level. Drag, use Ctrl-+/- or Shift-Mousewheel to adjust."));
 
@@ -982,8 +981,7 @@ bool GuiView::restoreLayout()
 	zoom_ratio_ = settings.value("zoom_ratio", 1.0).toDouble();
 	// Actual zoom value: default zoom + fractional offset
 	int zoom = (int)(lyxrc.defaultZoom * zoom_ratio_);
-	if (zoom < static_cast<int>(zoom_min_))
-		zoom = zoom_min_;
+	zoom = min(max(zoom, zoom_min_), zoom_max_);
 	setCurrentZoom(zoom);
 	devel_mode_ = settings.value("devel_mode", devel_mode_).toBool();
 	settings.beginGroup("views");
@@ -2100,6 +2098,30 @@ void GuiView::resetAutosaveTimers()
 }
 
 
+namespace {
+
+double zoomRatio(FuncRequest const & cmd, double const zr)
+{
+	if (cmd.argument().empty()) {
+		if (cmd.action() == LFUN_BUFFER_ZOOM)
+			return 1.0;
+		else if (cmd.action() == LFUN_BUFFER_ZOOM_IN)
+			return zr + 0.1;
+		else // cmd.action() == LFUN_BUFFER_ZOOM_OUT
+			return zr - 0.1;
+	} else {
+		if (cmd.action() == LFUN_BUFFER_ZOOM)
+			return convert<int>(cmd.argument()) / double(lyxrc.defaultZoom);
+		else if (cmd.action() == LFUN_BUFFER_ZOOM_IN)
+			return zr + convert<int>(cmd.argument()) / 100.0;
+		else // cmd.action() == LFUN_BUFFER_ZOOM_OUT
+			return zr - convert<int>(cmd.argument()) / 100.0;
+	}
+}
+
+}
+
+
 bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
 {
 	bool enable = true;
@@ -2479,37 +2501,25 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
 		break;
 
 	case LFUN_BUFFER_ZOOM_OUT:
-	case LFUN_BUFFER_ZOOM_IN: {
-		// only diff between these two is that the default for ZOOM_OUT
-		// is a neg. number
-		bool const neg_zoom =
-			convert<int>(cmd.argument()) < 0 ||
-			(cmd.action() == LFUN_BUFFER_ZOOM_OUT && cmd.argument().empty());
-		if (lyxrc.currentZoom <= zoom_min_ && neg_zoom) {
+	case LFUN_BUFFER_ZOOM_IN:
+	case LFUN_BUFFER_ZOOM: {
+		int const zoom = (int)(lyxrc.defaultZoom * zoomRatio(cmd, zoom_ratio_));
+		if (zoom < zoom_min_) {
 			docstring const msg =
 				bformat(_("Zoom level cannot be less than %1$d%."), zoom_min_);
 			flag.message(msg);
 			enable = false;
-		} else
-			enable = doc_buffer;
-		break;
-	}
-
-	case LFUN_BUFFER_ZOOM: {
-		bool const less_than_min_zoom =
-			!cmd.argument().empty() && convert<int>(cmd.argument()) < zoom_min_;
-		if (lyxrc.currentZoom <= zoom_min_ && less_than_min_zoom) {
+		} else if (zoom > zoom_max_) {
 			docstring const msg =
-				bformat(_("Zoom level cannot be less than %1$d%."), zoom_min_);
+				bformat(_("Zoom level cannot be more than %1$d%."), zoom_max_);
 			flag.message(msg);
 			enable = false;
-		} else if (cmd.argument().empty() && lyxrc.currentZoom == lyxrc.defaultZoom)
-			enable = false;
-		else
+		} else
 			enable = doc_buffer;
 		break;
 	}
 
+
 	case LFUN_BUFFER_MOVE_NEXT:
 	case LFUN_BUFFER_MOVE_PREVIOUS:
 		// we do not cycle when moving
@@ -4725,26 +4735,11 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
 		case LFUN_BUFFER_ZOOM_IN:
 		case LFUN_BUFFER_ZOOM_OUT:
 		case LFUN_BUFFER_ZOOM: {
-			if (cmd.argument().empty()) {
-				if (cmd.action() == LFUN_BUFFER_ZOOM)
-					zoom_ratio_ = 1.0;
-				else if (cmd.action() == LFUN_BUFFER_ZOOM_IN)
-					zoom_ratio_ += 0.1;
-				else
-					zoom_ratio_ -= 0.1;
-			} else {
-				if (cmd.action() == LFUN_BUFFER_ZOOM)
-					zoom_ratio_ = convert<int>(cmd.argument()) / double(lyxrc.defaultZoom);
-				else if (cmd.action() == LFUN_BUFFER_ZOOM_IN)
-					zoom_ratio_ += convert<int>(cmd.argument()) / 100.0;
-				else
-					zoom_ratio_ -= convert<int>(cmd.argument()) / 100.0;
-			}
+			zoom_ratio_ = zoomRatio(cmd, zoom_ratio_);
 
 			// Actual zoom value: default zoom + fractional extra value
 			int zoom = (int)(lyxrc.defaultZoom * zoom_ratio_);
-			if (zoom < static_cast<int>(zoom_min_))
-				zoom = zoom_min_;
+			zoom = min(max(zoom, zoom_min_), zoom_max_);
 
 			setCurrentZoom(zoom);
 
diff --git a/src/frontends/qt/GuiView.h b/src/frontends/qt/GuiView.h
index 9ad3610..bd39d26 100644
--- a/src/frontends/qt/GuiView.h
+++ b/src/frontends/qt/GuiView.h
@@ -520,6 +520,8 @@ private:
 	double zoom_ratio_ = 1.0;
 	/// Minimum zoom percentage
 	static int const zoom_min_ = 10;
+	/// Maximum zoom percentage
+	static int const zoom_max_ = 1000;
 
 	// movability flag of all toolbars
 	bool toolbarsMovable_;

commit 2e07736c175d1b1c23f13996cd80c654cbc5c035
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Tue Feb 8 12:15:31 2022 -0500

    Uninvert Hazard.*systemF tests
    
    Our .lyx document was updated by Jürgen at e071d5fe.

diff --git a/development/autotests/invertedTests b/development/autotests/invertedTests
index 303d80c..ffef561 100644
--- a/development/autotests/invertedTests
+++ b/development/autotests/invertedTests
@@ -226,12 +226,6 @@ export/export/latex/languages/supported-languages_polyglossia_XeTeX_(dvi3|pdf5)_
 # Is there a new version fixing the problem?
 export/examples/Articles/Astronomy_%26_Astrophysics_(dvi3|pdf5)_texF
 
-# Gives the following error:
-# # ! Package hpstatement Error: H or P statement "H251"
-# # (hpstatement)                is not defined.
-# seems to be polyglossia-related (dvi3 worked with babel)
-export/examples/Modules/Hazard_and_Precautionary_Statements_.*_systemF
-
 # These files use packages that are not compatible with the newest LuaTeX. We
 # could potentially fix these by loading the luatex85 package early in the
 # LyX-generated preamble, but it seems it's better to wait until the packages

commit 52c4ff290bf9ce2e791e5dd972ffdb6bb2095fc2
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Mon Feb 7 22:13:37 2022 -0500

    ctests: log a fixed issue

diff --git a/development/autotests/ctests-costs-benefits.txt b/development/autotests/ctests-costs-benefits.txt
index 06fb87d..6be712c 100644
--- a/development/autotests/ctests-costs-benefits.txt
+++ b/development/autotests/ctests-costs-benefits.txt
@@ -64,6 +64,9 @@ Fix    : 489bf46a, e3489d54
 Report : https://www.mail-archive.com/search?l=mid&q=20220205184128.4clckanaufwmx5z4%40gary
 Fix    : d66c27de
 
+Report : https://www.mail-archive.com/search?l=mid&q=20220206142559.rpgwki7wruhtasxp%40gary
+Fix    : f71f71d0
+
 
 Examples where upstream (e.g., LaTeX packages) bugs were fixed (more quickly)
 because of ctests:

commit e071d5fe295f956ccbdc9ca4eb8403badb9f01bc
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Feb 7 17:07:50 2022 +0100

    HP-Statements example: update
    
    Some of the examples used here seem to be no longer supported by
    the hpstatement package and lead to errors.

diff --git a/lib/examples/Modules/Hazard_and_Precautionary_Statements.lyx b/lib/examples/Modules/Hazard_and_Precautionary_Statements.lyx
index 3711819..1097b6d 100644
--- a/lib/examples/Modules/Hazard_and_Precautionary_Statements.lyx
+++ b/lib/examples/Modules/Hazard_and_Precautionary_Statements.lyx
@@ -1,5 +1,5 @@
 #LyX 2.4 created this file. For more info see https://www.lyx.org/
-\lyxformat 600
+\lyxformat 608
 \begin_document
 \begin_header
 \save_transient_properties true
@@ -35,9 +35,9 @@ hpstatement
 \font_default_family default
 \use_non_tex_fonts false
 \font_sc false
+\font_roman_osf false
 \font_sans_osf false
 \font_typewriter_osf false
-\font_roman_osf false
 \font_sf_scale 100 100
 \font_tt_scale 100 100
 \use_microtype false
@@ -84,8 +84,8 @@ hpstatement
 \justification true
 \use_refstyle 1
 \use_minted 0
-\notefontcolor #0000ff
 \use_lineno 0
+\notefontcolor #0000ff
 \index Index
 \shortcut idx
 \color #008000
@@ -101,12 +101,16 @@ hpstatement
 \papercolumns 1
 \papersides 1
 \paperpagestyle default
+\tablestyle default
 \tracking_changes false
-\postpone_fragile_content false
 \output_changes false
+\change_bars false
+\postpone_fragile_content false
 \html_math_output 0
 \html_css_as_file 0
 \html_be_strict false
+\docbook_table_output 0
+\docbook_mathml_prefix 1
 \end_header
 
 \begin_body
@@ -287,13 +291,13 @@ Some statements allow you to choose between certain alternatives.
 \end_layout
 
 \begin_layout Description
-P210.1 leads to: 
+P250.1 leads to: 
 \begin_inset Flex H-P number
 status open
 
 \begin_layout Plain Layout
 
-P210.1
+P250.1
 \end_layout
 
 \end_inset
@@ -312,13 +316,13 @@ status open
 \end_layout
 
 \begin_layout Description
-P210.2 leads to: 
+P250.2 leads to: 
 \begin_inset Flex H-P number
 status open
 
 \begin_layout Plain Layout
 
-P210.2
+P250.2
 \end_layout
 
 \end_inset
@@ -349,13 +353,13 @@ The alternative number
 \end_layout
 
 \begin_layout Description
-P210.0 leads to: 
+P250.0 leads to: 
 \begin_inset Flex H-P number
 status open
 
 \begin_layout Plain Layout
 
-P210.0
+P250.0
 \end_layout
 
 \end_inset
@@ -401,7 +405,7 @@ In this example the text
 \begin_inset Quotes eld
 \end_inset
 
-sunglasses
+hands
 \begin_inset Quotes erd
 \end_inset
 
@@ -415,7 +419,7 @@ status open
 
 \begin_layout Plain Layout
 
-P280
+P264
 \end_layout
 
 \end_inset
@@ -431,12 +435,12 @@ status open
 
 \begin_layout Plain Layout
 
-sunglasses
+hands
 \end_layout
 
 \end_inset
 
-P280
+P264
 \end_layout
 
 \end_inset

commit f71f71d01336d02aeefe9dbfbfa8d681959d6ac9
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Feb 7 16:21:20 2022 +0100

    Amend 0789f2f2ae43
    
    Use getFont() which considers fonts_default_family adjustments

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index f178dd5..48b8519 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -2539,9 +2539,10 @@ void Paragraph::latex(BufferParams const & bparams,
 	pos_type body_pos = beginOfBody();
 	unsigned int column = 0;
 
-	// If we are inside an non inheritFont() inset, the outerfont is the default font
+	// If we are inside an non inheritFont() inset,
+	// the outerfont is the buffer's main font
 	Font const real_outerfont =
-		inInset().inheritFont() ? outerfont : Font(bparams.documentClass().defaultfont());
+		inInset().inheritFont() ? outerfont : Font(bparams.getFont());
 
 	if (body_pos > 0) {
 		// the optional argument is kept in curly brackets in

commit a1d297b2cc82bfb025c94e37a59827d25de0a4e1
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Mon Feb 7 04:49:32 2022 +0100

    DocBook: add a TODO for a newly discovered bug.

diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp
index c578c03..fef2467 100644
--- a/src/insets/InsetIndex.cpp
+++ b/src/insets/InsetIndex.cpp
@@ -189,6 +189,8 @@ void InsetIndex::latex(otexstream & ios, OutputParams const & runparams_in) cons
 void InsetIndex::docbook(XMLStream & xs, OutputParams const & runparams) const
 {
 	// Get the content of the inset as LaTeX, as some things may be encoded as ERT (like {}).
+	// TODO: if there is an ERT within the index term, its conversion should be tried, in case it becomes useful;
+	//  otherwise, ERTs should become comments. For now, they are just copied as-is, which is barely satisfactory.
 	odocstringstream odss;
 	otexstream ots(odss);
 	InsetText::latex(ots, runparams);

commit 35588958ea9fe018eb3f89c1c4e50f9c6e748587
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Mon Feb 7 04:47:40 2022 +0100

    DocBook: in ERTs, allow the use of \string.

diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp
index 397f118..50b5daa 100644
--- a/src/insets/InsetERT.cpp
+++ b/src/insets/InsetERT.cpp
@@ -30,7 +30,7 @@
 #include "support/TempFile.h"
 
 #include <sstream>
-
+#include <regex>
 #include <iostream>
 
 using namespace std;
@@ -436,26 +436,52 @@ void InsetERT::docbook(XMLStream & xs, OutputParams const & runparams) const
 //		auto lay = getLayout();
 //	}
 
-	// Try to recognise some commands to have a nicer DocBook output. First step: some commands have a direct mapping
-	// to DocBook, mostly because the mapping is simply text or an XML entity.
-	docstring os_trimmed = trim(os.str());
+	// Try to recognise some commands to have a nicer DocBook output.
 	bool output_as_comment = true;
 
-	auto command_raw_translation = raw_latex_encoding_to_unicode_xml.find(os_trimmed);
-	if (command_raw_translation != raw_latex_encoding_to_unicode_xml.end()) {
-		xs << command_raw_translation->second;
-		output_as_comment = false;
-	} else {
-		// If the trimmed ERT ends with {}, try a mapping without it.
-		auto os_braces = os_trimmed.find(from_ascii("{}"));
-
-		if (os_braces != lyx::docstring::npos) {
-			auto key = os_trimmed.substr(0, os_braces);
-			auto command_braces_translation = raw_latex_encoding_to_unicode_xml.find(key);
-
-			if (command_braces_translation != raw_latex_encoding_to_unicode_xml.end()) {
-				xs << command_braces_translation->second;
-				output_as_comment = false;
+	// First step: some commands have a direct mapping to DocBook, mostly because the mapping is simply text or
+	// an XML entity.
+	{
+		docstring os_trimmed = trim(os.str());
+
+		auto command_raw_translation = raw_latex_encoding_to_unicode_xml.find(os_trimmed);
+		if (command_raw_translation != raw_latex_encoding_to_unicode_xml.end()) {
+			xs << command_raw_translation->second;
+			output_as_comment = false;
+		} else {
+			// If the trimmed ERT ends with {}, try a mapping without it.
+			auto os_braces = os_trimmed.find(from_ascii("{}"));
+
+			if (os_braces != lyx::docstring::npos) {
+				auto key = os_trimmed.substr(0, os_braces);
+				auto command_braces_translation = raw_latex_encoding_to_unicode_xml.find(key);
+
+				if (command_braces_translation != raw_latex_encoding_to_unicode_xml.end()) {
+					xs << command_braces_translation->second;
+					output_as_comment = false;
+				}
+			}
+		}
+	}
+
+	// Second step: the command \string can be ignored. If that's the only command in the ERT, then done.
+	// There may be several occurrences. (\string is 7 characters long.)
+	if (os.str().length() >= 7) {
+		docstring os_str = os.str();
+
+		while (os_str.length() >= 7) {
+			auto os_text = os_str.find(from_ascii("\\string"));
+
+			if (os_text != lyx::docstring::npos && !std::isalpha(static_cast<int>(os_str[os_text + 7]))) {
+				os_str = os_str.substr(0, os_text) + os_str.substr(os_text + 7, os_str.length());
+
+				if (os_str.find('\\') == std::string::npos) {
+					xs << os_str;
+					output_as_comment = false;
+					break;
+				}
+			} else {
+				break;
 			}
 		}
 	}

commit f6edfaa1511cc08b6987da89ebafefeffc2acbf9
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Mon Feb 7 03:24:11 2022 +0100

    DocBook: refactor ERT recognition as a map, add many coded letters.

diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp
index 87abc63..397f118 100644
--- a/src/insets/InsetERT.cpp
+++ b/src/insets/InsetERT.cpp
@@ -88,6 +88,311 @@ int InsetERT::plaintext(odocstringstream & os,
 }
 
 
+static const std::map<docstring, docstring> raw_latex_encoding_to_unicode_xml{
+		// Punctuation.
+		{from_ascii("\\textquotesingle"), from_ascii("'")},
+		{from_ascii("!`"), from_ascii("¡")}, // inverted exclamation mark
+		{from_ascii("?`"), from_ascii("¿")}, // inverted interrogation mark
+
+		// Logos.
+		{from_ascii("\\LaTeX"), from_ascii("LaTeX")},
+		{from_ascii("\\LaTeXe"), from_ascii("LaTeX2&#x03b5;")}, // LaTeX 2 epsilon
+		{from_ascii("\\LyX"), from_ascii("LyX")},
+		{from_ascii("\\TeX"), from_ascii("TeX")},
+
+		// Accentuated letters (alphabetical order of description, ligatures after accents).
+		// Missing letters are only indicated for vowels (only few consonants have diacritics).
+		// Only symbols that can be expressed as one Unicode characters are present; symbols with more than one
+		// diacritic are also omitted.
+		{from_ascii("\\`{a}"), from_ascii("á")}, // a acute
+		{from_ascii("\\` a"), from_ascii("á")},
+		{from_ascii("\\`{A}"), from_ascii("Á")}, // A acute
+		{from_ascii("\\` A"), from_ascii("Á")},
+		{from_ascii("\\u{a}"), from_ascii("ă")}, // a breve
+		{from_ascii("\\u a"), from_ascii("ă")},
+		{from_ascii("\\u{A}"), from_ascii("Ă")}, // A breve
+		{from_ascii("\\u A"), from_ascii("Ă")},
+		{from_ascii("\\v{a}"), from_ascii("ǎ")}, // a caron
+		{from_ascii("\\v a"), from_ascii("ǎ")},
+		{from_ascii("\\v{A}"), from_ascii("Ǎ")}, // A caron
+		{from_ascii("\\v A"), from_ascii("Ǎ")},
+		// No a cedilla.
+		{from_ascii("\\^{a}"), from_ascii("â")}, // a circumflex
+		{from_ascii("\\^ a"), from_ascii("â")},
+		{from_ascii("\\^{A}"), from_ascii("Â")}, // A circumflex
+		{from_ascii("\\^ A"), from_ascii("Â")},
+		{from_ascii("\\\"{a}"), from_ascii("ä")}, // a diaeresis
+		{from_ascii("\\\" a"), from_ascii("ä")},
+		{from_ascii("\\\"{A}"), from_ascii("Ä")}, // A diaeresis
+		{from_ascii("\\\" A"), from_ascii("Ä")},
+		// No a double acute.
+		{from_ascii("\\`{a}"), from_ascii("à")}, // a grave
+		{from_ascii("\\` a"), from_ascii("à")},
+		{from_ascii("\\`{A}"), from_ascii("À")}, // A grave
+		{from_ascii("\\` A"), from_ascii("À")},
+		{from_ascii("\\~{a}"), from_ascii("ã")}, // a tilde
+		{from_ascii("\\~ a"), from_ascii("ã")},
+		{from_ascii("\\~{A}"), from_ascii("Ã")}, // A tilde
+		{from_ascii("\\~ A"), from_ascii("Ã")},
+		{from_ascii("\\aa"), from_ascii("å")}, // a ring
+		{from_ascii("\\r{a}"), from_ascii("å")},
+		{from_ascii("\\r a"), from_ascii("å")},
+		{from_ascii("\\AA"), from_ascii("Å")}, // A ring
+		{from_ascii("\\r{A}"), from_ascii("Å")},
+		{from_ascii("\\r A"), from_ascii("Å")},
+		{from_ascii("\\ae"), from_ascii("æ")}, // ae ligature
+		{from_ascii("\\AE"), from_ascii("Æ")}, // AE ligature
+		{from_ascii("\\v{c}"), from_ascii("č")}, // c caron
+		{from_ascii("\\v c"), from_ascii("č")},
+		{from_ascii("\\v{C}"), from_ascii("Č")}, // C caron
+		{from_ascii("\\v C"), from_ascii("Č")},
+		{from_ascii("\\c{c}"), from_ascii("Ç")}, // c cedilla
+		{from_ascii("\\c c"), from_ascii("Ç")},
+		{from_ascii("\\c{C}"), from_ascii("ç")}, // C cedilla
+		{from_ascii("\\c C"), from_ascii("ç")},
+		{from_ascii("\\v{d}"), from_ascii("ď")}, // d caron
+		{from_ascii("\\v d"), from_ascii("ď")},
+		{from_ascii("\\v{D}"), from_ascii("Ď")}, // D caron
+		{from_ascii("\\v D"), from_ascii("Ď")},
+		{from_ascii("\\`{e}"), from_ascii("é")}, // e acute
+		{from_ascii("\\` e"), from_ascii("é")},
+		{from_ascii("\\`{E}"), from_ascii("É")}, // E acute
+		{from_ascii("\\` E"), from_ascii("É")},
+		{from_ascii("\\u{e}"), from_ascii("ĕ")}, // e breve
+		{from_ascii("\\u e"), from_ascii("ĕ")},
+		{from_ascii("\\u{E}"), from_ascii("Ĕ")}, // E breve
+		{from_ascii("\\u E"), from_ascii("Ĕ")},
+		{from_ascii("\\v{e}"), from_ascii("ě")}, // e caron
+		{from_ascii("\\v e"), from_ascii("ě")},
+		{from_ascii("\\v{E}"), from_ascii("Ě")}, // E caron
+		{from_ascii("\\v E"), from_ascii("Ě")},
+		{from_ascii("\\c{e}"), from_ascii("ȩ")}, // e cedilla
+		{from_ascii("\\c e"), from_ascii("ȩ")},
+		{from_ascii("\\c{E}"), from_ascii("Ȩ")}, // E cedilla
+		{from_ascii("\\c E"), from_ascii("Ȩ")},
+		{from_ascii("\\^{e}"), from_ascii("ê")}, // e circumflex
+		{from_ascii("\\^ e"), from_ascii("ê")},
+		{from_ascii("\\^{E}"), from_ascii("Ê")}, // E circumflex
+		{from_ascii("\\^ E"), from_ascii("Ê")},
+		{from_ascii("\\\"{e}"), from_ascii("ë")}, // e diaeresis
+		{from_ascii("\\\" e"), from_ascii("ë")},
+		{from_ascii("\\\"{E}"), from_ascii("Ë")}, // E diaeresis
+		{from_ascii("\\\" E"), from_ascii("Ë")},
+		// No e double acute.
+		{from_ascii("\\`{e}"), from_ascii("è")}, // e grave
+		{from_ascii("\\` e"), from_ascii("è")},
+		{from_ascii("\\`{E}"), from_ascii("È")}, // E grave
+		{from_ascii("\\` E"), from_ascii("È")},
+		{from_ascii("\\~{e}"), from_ascii("ẽ")}, // e tilde
+		{from_ascii("\\~ e"), from_ascii("ẽ")},
+		{from_ascii("\\~{E}"), from_ascii("Ẽ")}, // E tilde
+		{from_ascii("\\~ E"), from_ascii("Ẽ")},
+		// No e ring.
+		{from_ascii("\\u{g}"), from_ascii("ğ")}, // g breve
+		{from_ascii("\\u g"), from_ascii("ğ")},
+		{from_ascii("\\u{G}"), from_ascii("Ğ")}, // G breve
+		{from_ascii("\\u G"), from_ascii("Ğ")},
+		{from_ascii("\\v{g}"), from_ascii("ǧ")}, // g caron
+		{from_ascii("\\v g"), from_ascii("ǧ")},
+		{from_ascii("\\v{G}"), from_ascii("Ǧ")}, // G caron
+		{from_ascii("\\v G"), from_ascii("Ǧ")},
+		{from_ascii("\\c{g}"), from_ascii("ģ")}, // g cedilla
+		{from_ascii("\\c g"), from_ascii("ģ")},
+		{from_ascii("\\c{G}"), from_ascii("Ģ")}, // G cedilla
+		{from_ascii("\\c G"), from_ascii("Ģ")},
+		{from_ascii("\\i"), from_ascii("ı")}, // i dotless
+		{from_ascii("\\`{i}"), from_ascii("í")}, // i acute
+		{from_ascii("\\` i"), from_ascii("í")},
+		{from_ascii("\\`{I}"), from_ascii("Í")}, // I acute
+		{from_ascii("\\` I"), from_ascii("Í")},
+		{from_ascii("\\u{i}"), from_ascii("ĭ")}, // i breve
+		{from_ascii("\\u i"), from_ascii("ĭ")},
+		{from_ascii("\\u{I}"), from_ascii("Ĭ")}, // I breve
+		{from_ascii("\\u I"), from_ascii("Ĭ")},
+		{from_ascii("\\v{i}"), from_ascii("ǐ")}, // i caron
+		{from_ascii("\\v i"), from_ascii("ǐ")},
+		{from_ascii("\\v{I}"), from_ascii("Ǐ")}, // I caron
+		{from_ascii("\\v I"), from_ascii("Ǐ")},
+		// No i cedilla.
+		{from_ascii("\\^{i}"), from_ascii("î")}, // i circumflex
+		{from_ascii("\\^ i"), from_ascii("î")},
+		{from_ascii("\\^{I}"), from_ascii("Î")}, // I circumflex
+		{from_ascii("\\^ I"), from_ascii("ï")},
+		{from_ascii("\\\"{i}"), from_ascii("ï")}, // i diaeresis
+		{from_ascii("\\\" i"), from_ascii("ë")},
+		{from_ascii("\\\"{I}"), from_ascii("ë")}, // I diaeresis
+		{from_ascii("\\\" I"), from_ascii("Ï")},
+		// No i double acute.
+		{from_ascii("\\`{i}"), from_ascii("ì")}, // i grave
+		{from_ascii("\\` i"), from_ascii("ì")},
+		{from_ascii("\\`{I}"), from_ascii("Ì")}, // I grave
+		{from_ascii("\\` I"), from_ascii("Ì")},
+		{from_ascii("\\~{i}"), from_ascii("ĩ")}, // i tilde
+		{from_ascii("\\~ i"), from_ascii("ĩ")},
+		{from_ascii("\\~{I}"), from_ascii("Ĩ")}, // I tilde
+		{from_ascii("\\~ I"), from_ascii("Ĩ")},
+		// No i ring.
+		{from_ascii("\\j"), from_ascii("ȷ")}, // j dotless
+		{from_ascii("\\v{k}"), from_ascii("Ǩ")}, // k caron
+		{from_ascii("\\v k"), from_ascii("Ǩ")},
+		{from_ascii("\\v{K}"), from_ascii("ǩ")}, // K caron
+		{from_ascii("\\v K"), from_ascii("ǩ")},
+		{from_ascii("\\c{k}"), from_ascii("ķ")}, // k cedilla
+		{from_ascii("\\c k"), from_ascii("ķ")},
+		{from_ascii("\\c{K}"), from_ascii("Ķ")}, // K cedilla
+		{from_ascii("\\c K"), from_ascii("Ķ")},
+		{from_ascii("\\v{l}"), from_ascii("ľ")}, // l caron
+		{from_ascii("\\v l"), from_ascii("ľ")},
+		{from_ascii("\\v{L}"), from_ascii("Ľ")}, // L caron
+		{from_ascii("\\v L"), from_ascii("Ľ")},
+		{from_ascii("\\c{l}"), from_ascii("ļ")}, // l cedilla
+		{from_ascii("\\c l"), from_ascii("ļ")},
+		{from_ascii("\\c{L}"), from_ascii("Ļ")}, // L cedilla
+		{from_ascii("\\c L"), from_ascii("Ļ")},
+		{from_ascii("\\l"), from_ascii("ł")}, // l stroke
+		{from_ascii("\\L"), from_ascii("Ł")}, // L stroke
+		{from_ascii("\\v{n}"), from_ascii("ň")}, // n caron
+		{from_ascii("\\v n"), from_ascii("ň")},
+		{from_ascii("\\v{N}"), from_ascii("Ň")}, // N caron
+		{from_ascii("\\v N"), from_ascii("Ň")},
+		{from_ascii("\\c{n}"), from_ascii("ņ")}, // n cedilla
+		{from_ascii("\\c n"), from_ascii("ņ")},
+		{from_ascii("\\c{N}"), from_ascii("Ņ")}, // N cedilla
+		{from_ascii("\\c N"), from_ascii("Ņ")},
+		{from_ascii("\\~{n}"), from_ascii("ñ")}, // n tilde
+		{from_ascii("\\~ n"), from_ascii("ñ")},
+		{from_ascii("\\~{N}"), from_ascii("Ñ")}, // N tilde
+		{from_ascii("\\~ N"), from_ascii("Ñ")},
+		{from_ascii("\\`{o}"), from_ascii("ó")}, // o acute
+		{from_ascii("\\` o"), from_ascii("ó")},
+		{from_ascii("\\`{O}"), from_ascii("Ó")}, // O acute
+		{from_ascii("\\` O"), from_ascii("Ó")},
+		{from_ascii("\\u{o}"), from_ascii("ŏ")}, // o breve
+		{from_ascii("\\u o"), from_ascii("ŏ")},
+		{from_ascii("\\u{O}"), from_ascii("Ŏ")}, // O breve
+		{from_ascii("\\u O"), from_ascii("Ŏ")},
+		{from_ascii("\\v{o}"), from_ascii("ǒ")}, // o caron
+		{from_ascii("\\v o"), from_ascii("ǒ")},
+		{from_ascii("\\v{O}"), from_ascii("Ǒ")}, // O caron
+		{from_ascii("\\v O"), from_ascii("Ǒ")},
+		// No o cedilla.
+		{from_ascii("\\^{o}"), from_ascii("ô")}, // o circumflex
+		{from_ascii("\\^ o"), from_ascii("ô")},
+		{from_ascii("\\^{O}"), from_ascii("Ô")}, // O circumflex
+		{from_ascii("\\^ O"), from_ascii("Ô")},
+		{from_ascii("\\\"{o}"), from_ascii("ö")}, // o diaeresis
+		{from_ascii("\\\" o"), from_ascii("ö")},
+		{from_ascii("\\\"{O}"), from_ascii("Ö")}, // O diaeresis
+		{from_ascii("\\\" O"), from_ascii("Ö")},
+		{from_ascii("\\H{o}"), from_ascii("ő")}, // o double acute
+		{from_ascii("\\H o"), from_ascii("ő")},
+		{from_ascii("\\H{O}"), from_ascii("Ő")}, // O double acute
+		{from_ascii("\\H O"), from_ascii("Ő")},
+		{from_ascii("\\`{o}"), from_ascii("ò")}, // o grave
+		{from_ascii("\\` o"), from_ascii("ò")},
+		{from_ascii("\\`{O}"), from_ascii("Ò")}, // O grave
+		{from_ascii("\\` O"), from_ascii("Ò")},
+		{from_ascii("\\o"), from_ascii("ø")}, // o stroke
+		{from_ascii("\\O"), from_ascii("Ø")}, // O stroke
+		{from_ascii("\\~{o}"), from_ascii("õ")}, // o tilde
+		{from_ascii("\\~ o"), from_ascii("õ")},
+		{from_ascii("\\~{O}"), from_ascii("Õ")}, // O tilde
+		{from_ascii("\\~ O"), from_ascii("Õ")},
+		// No o ring.
+		{from_ascii("\\oe"), from_ascii("œ")}, // oe ligature
+		{from_ascii("\\OE"), from_ascii("Œ")}, // OE ligature
+		{from_ascii("\\v{r}"), from_ascii("ř")}, // r caron
+		{from_ascii("\\v r"), from_ascii("ř")},
+		{from_ascii("\\v{R}"), from_ascii("Ř")}, // R caron
+		{from_ascii("\\v R"), from_ascii("Ř")},
+		{from_ascii("\\c{r}"), from_ascii("ŗ")}, // r cedilla
+		{from_ascii("\\c r"), from_ascii("ŗ")},
+		{from_ascii("\\c{R}"), from_ascii("Ŗ")}, // R cedilla
+		{from_ascii("\\c R"), from_ascii("Ŗ")},
+		{from_ascii("\\v{s}"), from_ascii("š")}, // s caron
+		{from_ascii("\\v s"), from_ascii("š")},
+		{from_ascii("\\v{S}"), from_ascii("Š")}, // S caron
+		{from_ascii("\\v S"), from_ascii("Š")},
+		{from_ascii("\\c{s}"), from_ascii("ş")}, // s cedilla
+		{from_ascii("\\c s"), from_ascii("ş")},
+		{from_ascii("\\c{S}"), from_ascii("Ş")}, // S cedilla
+		{from_ascii("\\c S"), from_ascii("Ş")},
+		{from_ascii("\\v{t}"), from_ascii("ť")}, // t caron
+		{from_ascii("\\v t"), from_ascii("ť")},
+		{from_ascii("\\v{T}"), from_ascii("Ť")}, // T caron
+		{from_ascii("\\v T"), from_ascii("Ť")},
+		{from_ascii("\\c{t}"), from_ascii("ţ")}, // t cedilla
+		{from_ascii("\\c t"), from_ascii("ţ")},
+		{from_ascii("\\c{T}"), from_ascii("Ţ")}, // T cedilla
+		{from_ascii("\\c T"), from_ascii("Ţ")},
+		{from_ascii("\\`{u}"), from_ascii("ú")}, // u acute
+		{from_ascii("\\` u"), from_ascii("ú")},
+		{from_ascii("\\`{U}"), from_ascii("Ú")}, // U acute
+		{from_ascii("\\` U"), from_ascii("Ú")},
+		{from_ascii("\\u{u}"), from_ascii("ŭ")}, // u breve
+		{from_ascii("\\u u"), from_ascii("ŭ")},
+		{from_ascii("\\u{U}"), from_ascii("Ŭ")}, // U breve
+		{from_ascii("\\u U"), from_ascii("Ŭ")},
+		{from_ascii("\\v{u}"), from_ascii("ǔ")}, // u caron
+		{from_ascii("\\v u"), from_ascii("ǔ")},
+		{from_ascii("\\v{U}"), from_ascii("Ǔ")}, // U caron
+		{from_ascii("\\v U"), from_ascii("Ǔ")},
+		// No u cedilla.
+		{from_ascii("\\^{u}"), from_ascii("û")}, // u circumflex
+		{from_ascii("\\^ u"), from_ascii("û")},
+		{from_ascii("\\^{U}"), from_ascii("Û")}, // U circumflex
+		{from_ascii("\\^ U"), from_ascii("Û")},
+		{from_ascii("\\\"{u}"), from_ascii("ü")}, // u diaeresis
+		{from_ascii("\\\" u"), from_ascii("ü")},
+		{from_ascii("\\\"{U}"), from_ascii("Ü")}, // U diaeresis
+		{from_ascii("\\\" U"), from_ascii("Ü")},
+		{from_ascii("\\H{u}"), from_ascii("ű")}, // u double acute
+		{from_ascii("\\H u"), from_ascii("ű")},
+		{from_ascii("\\H{U}"), from_ascii("Ű")}, // U double acute
+		{from_ascii("\\H U"), from_ascii("Ű")},
+		{from_ascii("\\`{u}"), from_ascii("ù")}, // u grave
+		{from_ascii("\\` u"), from_ascii("ù")},
+		{from_ascii("\\`{U}"), from_ascii("Ù")}, // U grave
+		{from_ascii("\\` U"), from_ascii("Ù")},
+		{from_ascii("\\~{u}"), from_ascii("ũ")}, // u tilde
+		{from_ascii("\\~ u"), from_ascii("ũ")},
+		{from_ascii("\\~{U}"), from_ascii("Ũ")}, // U tilde
+		{from_ascii("\\~ U"), from_ascii("Ũ")},
+		{from_ascii("\\r{u}"), from_ascii("å")}, // u ring
+		{from_ascii("\\r u"), from_ascii("ů")},
+		{from_ascii("\\r{U}"), from_ascii("ů")}, // U ring
+		{from_ascii("\\r U"), from_ascii("Ů")},
+		{from_ascii("\\`{y}"), from_ascii("ý")}, // y acute
+		{from_ascii("\\` y"), from_ascii("ý")},
+		{from_ascii("\\`{Y}"), from_ascii("Ý")}, // Y acute
+		{from_ascii("\\` Y"), from_ascii("Ý")},
+		{from_ascii("\\v{z}"), from_ascii("ž")}, // z caron
+		{from_ascii("\\v z"), from_ascii("ž")},
+		{from_ascii("\\v{Z}"), from_ascii("Ž")}, // Z caron
+		{from_ascii("\\v Z"), from_ascii("Ž")},
+		// No y breve.
+		// No y cedilla.
+		{from_ascii("\\^{y}"), from_ascii("ŷ")}, // y circumflex
+		{from_ascii("\\^ y"), from_ascii("ŷ")},
+		{from_ascii("\\^{Y}"), from_ascii("Ŷ")}, // Y circumflex
+		{from_ascii("\\^ Y"), from_ascii("Ŷ")},
+		{from_ascii("\\\"{y}"), from_ascii("ÿ")}, // y diaeresis
+		{from_ascii("\\\" y"), from_ascii("ÿ")},
+		{from_ascii("\\\"{Y}"), from_ascii("Ÿ")}, // Y diaeresis
+		{from_ascii("\\\" Y"), from_ascii("Ÿ")},
+		// No y double acute.
+		{from_ascii("\\`{y}"), from_ascii("ỳ")}, // y grave
+		{from_ascii("\\` y"), from_ascii("ỳ")},
+		{from_ascii("\\`{Y}"), from_ascii("Ỳ")}, // Y grave
+		{from_ascii("\\` Y"), from_ascii("Ỳ")},
+		{from_ascii("\\~{y}"), from_ascii("ỹ")}, // y tilde
+		{from_ascii("\\~ y"), from_ascii("ỹ")},
+		{from_ascii("\\~{Y}"), from_ascii("Ỹ")}, // Y tilde
+		{from_ascii("\\~ Y"), from_ascii("Ỹ")},
+		// No y ring.
+};
+
+
 void InsetERT::docbook(XMLStream & xs, OutputParams const & runparams) const
 {
 	auto const begin = paragraphs().begin();
@@ -131,26 +436,36 @@ void InsetERT::docbook(XMLStream & xs, OutputParams const & runparams) const
 //		auto lay = getLayout();
 //	}
 
-	// Output the ERT as a comment with the appropriate escaping if the command is not recognised.
-	if (trim(os.str()) == from_ascii("\\textquotesingle")) {
-		xs << "'";
-	} else if (trim(os.str()) == from_ascii("\\TeX") || trim(os.str()) == from_ascii("\\TeX{}")) {
-	    xs << "TeX";
-	} else if (trim(os.str()) == from_ascii("\\LaTeX") || trim(os.str()) == from_ascii("\\LaTeX{}")) {
-	    xs << "LaTeX";
-	} else if (trim(os.str()) == from_ascii("\\LaTeXe") || trim(os.str()) == from_ascii("\\LaTeXe{}")) {
-	    xs << "LaTeX2&#x03b5;";
-	} else if (trim(os.str()) == from_ascii("\\LyX") || trim(os.str()) == from_ascii("\\LyX{}")) {
-	    xs << "LyX";
-	} else if (trim(os.str()) == from_ascii("\\oe") || trim(os.str()) == from_ascii("\\oe{}")) {
-	    xs << "œ";
-	} else if (trim(os.str()) == from_ascii("\\OE") || trim(os.str()) == from_ascii("\\OE{}")) {
-	    xs << "Œ";
+	// Try to recognise some commands to have a nicer DocBook output. First step: some commands have a direct mapping
+	// to DocBook, mostly because the mapping is simply text or an XML entity.
+	docstring os_trimmed = trim(os.str());
+	bool output_as_comment = true;
+
+	auto command_raw_translation = raw_latex_encoding_to_unicode_xml.find(os_trimmed);
+	if (command_raw_translation != raw_latex_encoding_to_unicode_xml.end()) {
+		xs << command_raw_translation->second;
+		output_as_comment = false;
 	} else {
-        xs << XMLStream::ESCAPE_NONE << "<!-- ";
-        xs << XMLStream::ESCAPE_COMMENTS << os.str();
-        xs << XMLStream::ESCAPE_NONE << " -->";
-    }
+		// If the trimmed ERT ends with {}, try a mapping without it.
+		auto os_braces = os_trimmed.find(from_ascii("{}"));
+
+		if (os_braces != lyx::docstring::npos) {
+			auto key = os_trimmed.substr(0, os_braces);
+			auto command_braces_translation = raw_latex_encoding_to_unicode_xml.find(key);
+
+			if (command_braces_translation != raw_latex_encoding_to_unicode_xml.end()) {
+				xs << command_braces_translation->second;
+				output_as_comment = false;
+			}
+		}
+	}
+
+	// Otherwise, output the ERT as a comment with the appropriate escaping if the command is not recognised.
+	if (output_as_comment) {
+		xs << XMLStream::ESCAPE_NONE << "<!-- ";
+		xs << XMLStream::ESCAPE_COMMENTS << os.str();
+		xs << XMLStream::ESCAPE_NONE << " -->";
+	}
 }
 
 

commit cd82b125d1d9b52f16ea13c6d3bc9cae3022cec7
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Mon Feb 7 01:02:19 2022 +0100

    DocBook: in ERTs, recognise \oe.

diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp
index 7c231b3..87abc63 100644
--- a/src/insets/InsetERT.cpp
+++ b/src/insets/InsetERT.cpp
@@ -142,6 +142,10 @@ void InsetERT::docbook(XMLStream & xs, OutputParams const & runparams) const
 	    xs << "LaTeX2&#x03b5;";
 	} else if (trim(os.str()) == from_ascii("\\LyX") || trim(os.str()) == from_ascii("\\LyX{}")) {
 	    xs << "LyX";
+	} else if (trim(os.str()) == from_ascii("\\oe") || trim(os.str()) == from_ascii("\\oe{}")) {
+	    xs << "œ";
+	} else if (trim(os.str()) == from_ascii("\\OE") || trim(os.str()) == from_ascii("\\OE{}")) {
+	    xs << "Œ";
 	} else {
         xs << XMLStream::ESCAPE_NONE << "<!-- ";
         xs << XMLStream::ESCAPE_COMMENTS << os.str();

commit 812ce48e78652c58e99700f3d4868bddd9944382
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Mon Feb 7 00:27:58 2022 +0100

    DocBook: in ERTs, recognise calls to the logos (as in InsetSpecialChar).

diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp
index 6923f15..7c231b3 100644
--- a/src/insets/InsetERT.cpp
+++ b/src/insets/InsetERT.cpp
@@ -133,7 +133,15 @@ void InsetERT::docbook(XMLStream & xs, OutputParams const & runparams) const
 
 	// Output the ERT as a comment with the appropriate escaping if the command is not recognised.
 	if (trim(os.str()) == from_ascii("\\textquotesingle")) {
-	    xs << "'";
+		xs << "'";
+	} else if (trim(os.str()) == from_ascii("\\TeX") || trim(os.str()) == from_ascii("\\TeX{}")) {
+	    xs << "TeX";
+	} else if (trim(os.str()) == from_ascii("\\LaTeX") || trim(os.str()) == from_ascii("\\LaTeX{}")) {
+	    xs << "LaTeX";
+	} else if (trim(os.str()) == from_ascii("\\LaTeXe") || trim(os.str()) == from_ascii("\\LaTeXe{}")) {
+	    xs << "LaTeX2&#x03b5;";
+	} else if (trim(os.str()) == from_ascii("\\LyX") || trim(os.str()) == from_ascii("\\LyX{}")) {
+	    xs << "LyX";
 	} else {
         xs << XMLStream::ESCAPE_NONE << "<!-- ";
         xs << XMLStream::ESCAPE_COMMENTS << os.str();

commit 122b452b20b96cb9608af85f7d71ab7977764c10
Author: Daniel Ramoeller <d.lyx at web.de>
Date:   Sat Nov 13 10:24:53 2021 +0100

    Display manually set itemize symbols
    
    Display manually set itemize symbols and their size in the work area.
    
    Fix for bug #2277.
    
    Also fixes a problem with document settings changed() not correctly emitted.

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index cfdb9d9..729d7a6 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -5157,31 +5157,8 @@ void Buffer::Impl::setLabel(ParIterator & it, UpdateType utype) const
 
 	switch(layout.labeltype) {
 	case LABEL_ITEMIZE: {
-		// At some point of time we should do something more
-		// clever here, like:
-		//   par.params().labelString(
-		//    bp.user_defined_bullet(par.itemdepth).getText());
-		// for now, use a simple hardcoded label
-		docstring itemlabel;
-		switch (par.itemdepth) {
-		case 0:
-			// • U+2022 BULLET
-			itemlabel = char_type(0x2022);
-			break;
-		case 1:
-			// – U+2013 EN DASH
-			itemlabel = char_type(0x2013);
-			break;
-		case 2:
-			// ∗ U+2217 ASTERISK OPERATOR
-			itemlabel = char_type(0x2217);
-			break;
-		case 3:
-			// · U+00B7 MIDDLE DOT
-			itemlabel = char_type(0x00b7);
-			break;
-		}
-		par.params().labelString(itemlabel);
+		par.params().labelString(
+			bp.user_defined_bullet(par.itemdepth).getUnicode());
 		break;
 	}
 
diff --git a/src/Bullet.cpp b/src/Bullet.cpp
index 1f4ef6a..1e61777 100644
--- a/src/Bullet.cpp
+++ b/src/Bullet.cpp
@@ -54,7 +54,7 @@ Bullet::Bullet(int f, int c, int s)
 
 
 Bullet::Bullet(docstring const & t)
-	: font(MIN), character(MIN), size(MIN), user_text(1), text(t)
+	: font(MIN), character(MIN), size(MIN), user_text(1), text(t), unicode(t)
 {
 	testInvariant();
 }
@@ -98,6 +98,7 @@ void Bullet::setText(docstring const & t)
 	font = character = size = MIN;
 	user_text = 1;
 	text = t;
+	unicode = t;
 	testInvariant();
 }
 
@@ -120,6 +121,16 @@ int Bullet::getSize() const
 }
 
 
+FontSize Bullet::getFontSize() const
+{
+
+	if (size >= 0)
+		return bulletFontSize(size);
+	else
+		return INHERIT_SIZE;
+}
+
+
 Bullet & Bullet::operator=(Bullet const & b)
 {
 	b.testInvariant();
@@ -128,6 +139,7 @@ Bullet & Bullet::operator=(Bullet const & b)
 	size = b.size;
 	user_text = b.user_text;
 	text = b.text;
+	unicode = b.unicode;
 	this->testInvariant();
 	return *this;
 }
@@ -141,6 +153,14 @@ docstring const & Bullet::getText() const
 }
 
 
+docstring const & Bullet::getUnicode() const
+{
+	if (user_text == 0)
+		generateText();
+	return unicode;
+}
+
+
 bool operator==(const Bullet & b1, const Bullet & b2)
 {
 	bool result = false;
@@ -176,6 +196,7 @@ void Bullet::generateText() const
 
 	if ((font >= 0) && (character >= 0)) {
 		text = bulletEntry(font, character);
+		unicode = bulletUnicode(font, character);
 		if (size >= 0)
 			text = bulletSize(size) + text;
 		user_text = -1;
@@ -345,6 +366,153 @@ docstring const Bullet::bulletEntry(int f, int c)
 	return from_ascii(BulletPanels[f][c]);
 }
 
+
+FontSize Bullet::bulletFontSize(int s)
+{
+	// see comment at bulletSize
+	static FontSize BulletFontSize[SIZEMAX] = {
+		TINY_SIZE, SCRIPT_SIZE, FOOTNOTE_SIZE, SMALL_SIZE, NORMAL_SIZE,
+		LARGE_SIZE, LARGER_SIZE, LARGEST_SIZE, HUGE_SIZE, HUGER_SIZE
+	};
+
+	return BulletFontSize[s];
+}
+
+
+docstring const Bullet::bulletUnicode(int f, int c)
+{
+	// see comment at bulletEntry
+	static int UnicodeBulletPanel0[CHARMAX] = {
+		/* standard */
+		0x02013, 0x22A2,
+		0x022A3, 0x0266D, 0x0266E,
+		0x0266F, 0x02217, 0x022C6,
+		0x02022, 0x02218, 0x022C5,
+		0x02020, 0x025B3,
+		0x025BD, 0x025C3,
+		0x025B9, 0x025C1, 0x025B7,
+		0x02295, 0x02296, 0x02297,
+		0x02298, 0x02299, 0x02660,
+		0x022C4, 0x025C7,  /* \square */ 0x025FB,
+		0x02662, 0x02661,
+		0x02663, 0x02192, 0x02933,
+		0x021C0, 0x021C1,
+		0x021D2, 0x0227B
+	};
+	static int UnicodeBulletPanel1[CHARMAX] = {
+		/* amssymb */
+		0x021DB, 0x021A3,
+		0x021A0, 0x021DD,
+		0x021AC, 0x022B8,
+		0x022A0, 0x0229E, 0x0229F,
+		0x022A1, 0x022C7, 0x022AA,
+		0x022D6, 0x022D7, 0x02720,
+		0x02605, 0x02713, 0x022A9,
+		0x0223D, 0x0223C,
+		0x02B1D, 0x0229D,
+		0x0229B, 0x025CE,
+		0x022B2, 0x022B3,
+		0x025B3, 0x025BD,
+		0x025CA, 0x025FB, 0x025C0,
+		0x025B6, 0x025B4,
+		0x025BE, 0x029EB,
+		0x025FC
+	};
+	static int UnicodeBulletPanel2[CHARMAX] = {
+		/* psnfss1 */
+		0x025CF, 0x0274D,
+		0x025D7, 0x02295,
+		0x02297, 0x02022,
+		0x02727, 0x02726,
+		0x02756, 0x025C6,
+		0x025CA, 0x022C5,
+		0x02751, 0x02752,
+		0x0274F, 0x02750,
+		0x02206, 0x02207,
+		0x02758, 0x02759,
+		0x0275A, 0x025A0,
+		0x025B2, 0x025BC,
+		0x02217, 0x02723,
+		0x02722, 0x02732,
+		0x02731, 0x027A4,
+		0x02762, 0x02763,
+		0x02766, 0x02767,
+		0x027A2, 0x027A3
+	};
+	static int UnicodeBulletPanel3[CHARMAX] = {
+		/* psnfss2 */
+		0x0260E, 0x02706,
+		0x02702, 0x02704,
+		0x02707, 0x02708,
+		0x02709, 0x0261B,
+		0x0261E, 0x0270C,
+		0x0270D, 0x0270F,
+		0x02715, 0x02716,
+		0x0271B, 0x02719,
+		0x0271E, 0x0271D,
+		0x02717, 0x02718,
+		0x0271A, 0x0271C,
+		0x0271F, 0x02720,
+		0x02713, 0x02714,
+		0x02660, 0x02663,
+		0x02666, 0x02665,
+		0x02764, 0x02765,
+		0x02660, 0x02663,
+		0x02666, 0x02665
+	};
+	static int UnicodeBulletPanel4[CHARMAX] = {
+		/* psnfss3 */
+		0x02721, 0x0272C,
+		0x0272B, 0x02B51,
+		0x02730, 0x0272A,
+		0x0272E, 0x0272D,
+		0x0272F, 0x02735,
+		0x0273A, 0x02742,
+		0x02733, 0x02734,
+		0x02736, 0x02737,
+		0x02738, 0x02739,
+		0x0273C, 0x0273B,
+		0x0273D, 0x02749,
+		0x0273E, 0x02743,
+		0x02747, 0x02748,
+		0x0274A, 0x0274B,
+		0x02724, 0x02725,
+		0x02744, 0x02745,
+		0x02746, 0x02740,
+		0x0273F, 0x02741
+	};
+	static int UnicodeBulletPanel5[CHARMAX] = {
+		/* psnfss4 */
+		0x0279F, 0x027A0,
+		0x027A1, 0x027A8,
+		0x027A5, 0x027A6,
+		0x027AE, 0x027AD,
+		0x027AC, 0x027AB,
+		0x027AA, 0x027A9,
+		0x027AF, 0x027B1,
+		0x027BA, 0x027BB,
+		0x02711, 0x02712,
+		0x02799, 0x027B5,
+		0x027B3, 0x027B8,
+		0x027BC, 0x027BD,
+		0x0279B, 0x02192,
+		0x0279D, 0x0279E,
+		0x0279C, 0x02794,
+		0x02192, 0x021D2,
+		0x027BE, 0x027B2,
+		0x027A7, 0x02212
+	};  /* string const BulletPanels[][] */
+
+	static int * UnicodeBulletPanels[FONTMAX] = {
+		UnicodeBulletPanel0, UnicodeBulletPanel1,
+		UnicodeBulletPanel2, UnicodeBulletPanel3,
+		UnicodeBulletPanel4, UnicodeBulletPanel5
+	};
+
+	return docstring(1, char_type(UnicodeBulletPanels[f][c]));
+}
+
+
 void Bullet::testInvariant() const
 {
 #ifdef ENABLE_ASSERTIONS
diff --git a/src/Bullet.h b/src/Bullet.h
index 5fd2d2c..b31602c 100644
--- a/src/Bullet.h
+++ b/src/Bullet.h
@@ -13,6 +13,8 @@
 #ifndef BULLET_H
 #define BULLET_H
 
+#include "FontEnums.h"
+
 #include "support/docstring.h"
 
 
@@ -42,8 +44,12 @@ public:
 	///
 	int getSize() const;
 	///
+	FontSize getFontSize() const;
+	///
 	docstring const & getText() const;
 	///
+	docstring const & getUnicode() const;
+	///
 	Bullet & operator=(Bullet const &);
 	///
 	friend bool operator==(Bullet const &, Bullet const &);
@@ -75,7 +81,13 @@ private:
 	///
 	void generateText() const;
 	///
+	void generateUnicode() const;
+	///
 	static docstring const bulletSize(int);
+	///
+	static FontSize bulletFontSize(int);
+	///
+	static docstring const bulletUnicode(int, int);
 
 	///
 	int font;
@@ -101,6 +113,7 @@ private:
 	    and size settings.
 	*/
 	mutable docstring text;
+	mutable docstring unicode;
 };
 
 
diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp
index cffdcf2..84848ec 100644
--- a/src/RowPainter.cpp
+++ b/src/RowPainter.cpp
@@ -18,6 +18,7 @@
 #include "Cursor.h"
 #include "BufferParams.h"
 #include "BufferView.h"
+#include "Bullet.h"
 #include "Changes.h"
 #include "Language.h"
 #include "Layout.h"
@@ -426,13 +427,26 @@ void RowPainter::paintLabel() const
 	if (str.empty())
 		return;
 
+	// different font for label separation and string
 	Layout const & layout = par_.layout();
 	FontInfo const font = labelFont(false);
 	FontMetrics const & fm = theFontMetrics(font);
+	FontInfo lfont = font;
+
+	// bullet?
+	if (layout.labeltype == LABEL_ITEMIZE) {
+		// get label font size from document properties
+		lfont.setSize(pi_.base.bv->buffer().params().user_defined_bullet(par_.itemdepth).getFontSize());
+		// realize to avoid assertion
+		lfont.realize(sane_font);
+	}
+
+	FontMetrics const & lfm = theFontMetrics(lfont);
+
 	int const x = row_.isRTL() ? row_.width() + fm.width(layout.labelsep)
-	                           : row_.left_margin - fm.width(layout.labelsep) - fm.width(str);
+	                           : row_.left_margin - fm.width(layout.labelsep) - lfm.width(str);
 
-	pi_.pain.text(int(xo_) + x, yo_, str, font);
+	pi_.pain.text(int(xo_) + x, yo_, str, lfont);
 }
 
 
diff --git a/src/frontends/qt/BulletsModule.cpp b/src/frontends/qt/BulletsModule.cpp
index 0572f67..3c9e42e 100644
--- a/src/frontends/qt/BulletsModule.cpp
+++ b/src/frontends/qt/BulletsModule.cpp
@@ -174,8 +174,8 @@ QPixmap getSelectedPixmap(QPixmap pixmap, QSize const icon_size)
 void BulletsModule::setupPanel(QListWidget * lw, QString const & panelname,
 	int const font, string const folder)
 {
-	connect(lw, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
-		this, SLOT(bulletSelected(QListWidgetItem *, QListWidgetItem*)));
+	connect(lw, SIGNAL(itemClicked(QListWidgetItem *)),
+		this, SLOT(bulletSelected(QListWidgetItem *)));
 
 	// add panelname to combox
 	bulletpaneCO->addItem(panelname);
@@ -250,12 +250,18 @@ void BulletsModule::init()
 }
 
 
-void BulletsModule::bulletSelected(QListWidgetItem * item, QListWidgetItem *)
+void BulletsModule::bulletSelected(QListWidgetItem * item)
 {
+	int const level = levelLW->currentRow();
+
+	// no change
+	if (bullets_[level].getFont() == bulletpaneCO->currentIndex()
+		&& bullets_[level].getCharacter() == item->type())
+		return;
+
 	// unselect previous item
 	selectItem(current_font_, current_char_, false);
 
-	int const level = levelLW->currentRow();
 	bullets_[level].setCharacter(item->type());
 	bullets_[level].setFont(bulletpaneCO->currentIndex());
 	current_font_ = bulletpaneCO->currentIndex();
diff --git a/src/frontends/qt/BulletsModule.h b/src/frontends/qt/BulletsModule.h
index 5f05f14..dc28659 100644
--- a/src/frontends/qt/BulletsModule.h
+++ b/src/frontends/qt/BulletsModule.h
@@ -44,7 +44,7 @@ protected Q_SLOTS:
 	void on_bulletsizeCO_activated(int level);
 	void on_customCB_clicked(bool);
 	void on_customLE_textEdited(const QString &);
-	void bulletSelected(QListWidgetItem *, QListWidgetItem *);
+	void bulletSelected(QListWidgetItem *);
 	void showLevel(int);
 
 private:

commit 9185fb8cccf4c2a8b3bae9dca7a81e2eb02232d0
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Sun Feb 6 08:13:12 2022 -0500

    ctests: log a fixed issue

diff --git a/development/autotests/ctests-costs-benefits.txt b/development/autotests/ctests-costs-benefits.txt
index 18495ce..06fb87d 100644
--- a/development/autotests/ctests-costs-benefits.txt
+++ b/development/autotests/ctests-costs-benefits.txt
@@ -61,6 +61,9 @@ Benefit: 14 days (https://www.lyx.org/trac/ticket/12303)
 Report : https://www.mail-archive.com/search?l=mid&q=20211205190238.edrtqmg3fkdr7gbo%40poole
 Fix    : 489bf46a, e3489d54
 
+Report : https://www.mail-archive.com/search?l=mid&q=20220205184128.4clckanaufwmx5z4%40gary
+Fix    : d66c27de
+
 
 Examples where upstream (e.g., LaTeX packages) bugs were fixed (more quickly)
 because of ctests:

commit d66c27de667b9230548f9af2640e95cccaa2aae9
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Feb 6 10:02:17 2022 +0100

    Don't set open_font to false if lang hasn't been closed

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index e29f268..f178dd5 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -2787,12 +2787,12 @@ void Paragraph::latex(BufferParams const & bparams,
 				column += Changes::latexMarkChange(os, bparams,
 					Change(Change::UNCHANGED), Change(Change::DELETED), rp);
 			}
-			open_font = false;
 			// Has the language been closed in the latexWriteEndChanges() call above?
 			langClosed = running_font.language() != basefont.language()
 					&& running_font.language() != nextfont.language()
 					&& (running_font.language()->encoding()->package() != Encoding::CJK);
 			running_font = basefont;
+			open_font &= !langClosed;
 		}
 
 		// if necessary, close language environment before opening CJK

commit 643cbfe557a61cef62a9c4c19c80029735f8bd4b
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Feb 6 06:44:29 2022 +0100

    DocBook: don't force outputting an <abstract> when it would only contain comments.
    
    Before this patch, LyX would forcibly create an <abstract> tag even when there was no abstract in the document; this behaviour is sometimes desirable, but not when the abstract only contains comments (that's not valid DocBook: there must be a paragraph or assimilated within the abstract).

diff --git a/src/output_docbook.cpp b/src/output_docbook.cpp
index 71d3b83..5458e7a 100644
--- a/src/output_docbook.cpp
+++ b/src/output_docbook.cpp
@@ -1020,12 +1020,20 @@ void outputDocBookInfo(
 			}
 		}
 
-		// Actually output the abstract if there is something to do. Don't count line feeds or spaces in this,
-		// even though they must be properly output if there is some abstract.
+		// Actually output the abstract if there is something to do. Don't count line feeds, spaces, or comments
+		// in this -- even though line feeds and spaces must be properly output if there is some abstract.
 		abstract = os2.str();
 		docstring cleaned = abstract;
 		cleaned.erase(std::remove_if(cleaned.begin(), cleaned.end(), lyx::isSpace), cleaned.end());
 
+		size_t beginComment;
+		size_t endComment;
+		while ((beginComment = cleaned.find(from_ascii("<!--"))) != lyx::docstring::npos) {
+			if ((endComment = cleaned.find(from_ascii("-->"), beginComment)) != lyx::docstring::npos) {
+				cleaned.erase(cleaned.begin() + beginComment, cleaned.begin() + endComment + 3);
+			}
+		}
+
 		// Nothing? Then there is no abstract!
 		if (cleaned.empty())
 			hasAbstract = false;

commit 34ea4080ec3795de496f46197b086dbef8463980
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Feb 6 06:20:50 2022 +0100

    DocBook: support @ in index when used for sorting.

diff --git a/autotests/export/docbook/index.lyx b/autotests/export/docbook/index.lyx
new file mode 100644
index 0000000..875e633
--- /dev/null
+++ b/autotests/export/docbook/index.lyx
@@ -0,0 +1,147 @@
+#LyX 2.4 created this file. For more info see https://www.lyx.org/
+\lyxformat 608
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass article
+\use_default_options true
+\maintain_unincluded_children no
+\language american
+\language_package default
+\inputencoding utf8
+\fontencoding auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_roman_osf false
+\font_sans_osf false
+\font_typewriter_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\float_placement class
+\float_alignment class
+\paperfontsize default
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\use_minted 0
+\use_lineno 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style english
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tablestyle default
+\tracking_changes false
+\output_changes false
+\change_bars false
+\postpone_fragile_content true
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\docbook_table_output 0
+\docbook_mathml_prefix 1
+\end_header
+
+\begin_body
+
+\begin_layout Title
+Index tests
+\end_layout
+
+\begin_layout Standard
+Text
+\begin_inset Index idx
+status open
+
+\begin_layout Plain Layout
+Text
+\end_layout
+
+\end_inset
+
+
+\begin_inset Index idx
+status open
+
+\begin_layout Plain Layout
+SortedAs at Text
+\end_layout
+
+\end_inset
+
+
+\begin_inset Index idx
+status open
+
+\begin_layout Plain Layout
+Primary!Secondary
+\end_layout
+
+\end_inset
+
+
+\begin_inset Index idx
+status open
+
+\begin_layout Plain Layout
+SortedPrimary at Primary!Secondary
+\end_layout
+
+\end_inset
+
+
+\begin_inset Index idx
+status open
+
+\begin_layout Plain Layout
+Primary!Secondary!Tertiary
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\end_body
+\end_document
diff --git a/autotests/export/docbook/index.xml b/autotests/export/docbook/index.xml
new file mode 100644
index 0000000..21e73c5
--- /dev/null
+++ b/autotests/export/docbook/index.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This DocBook file was created by LyX 2.4.0dev
+  See https://www.lyx.org/ for more information -->
+<article xml:lang="en_US" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xi="http://www.w3.org/2001/XInclude" version="5.2">
+<title>Index tests</title>
+<para>Text<indexterm><primary>Text</primary></indexterm><indexterm><primary sortas='SortedAs'>Text</primary></indexterm><indexterm><primary>Primary</primary><secondary>Secondary</secondary></indexterm><indexterm><primary sortas='SortedPrimary'>Primary</primary><secondary>Secondary</secondary></indexterm><indexterm><primary>Primary</primary><secondary>Secondary</secondary><tertiary>Tertiary</tertiary></indexterm>.</para>
+</article>
\ No newline at end of file
diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp
index 7b4bb88..c578c03 100644
--- a/src/insets/InsetIndex.cpp
+++ b/src/insets/InsetIndex.cpp
@@ -194,16 +194,15 @@ void InsetIndex::docbook(XMLStream & xs, OutputParams const & runparams) const
 	InsetText::latex(ots, runparams);
 	docstring latexString = trim(odss.str());
 
-	// Check whether there are unsupported things.
-	if (latexString.find(from_utf8("@")) != latexString.npos) {
-		docstring error = from_utf8("Unsupported feature: an index entry contains an @. "
+	// Check whether there are unsupported things. @ is supported, but only for sorting, without specific formatting.
+	if (latexString.find(from_utf8("@\\")) != lyx::docstring::npos) {
+		docstring error = from_utf8("Unsupported feature: an index entry contains an @\\. "
 									"Complete entry: \"") + latexString + from_utf8("\"");
 		LYXERR0(error);
 		xs << XMLStream::ESCAPE_NONE << (from_utf8("<!-- Output Error: ") + error + from_utf8(" -->\n"));
-		// TODO: implement @ using the sortas attribute (on primary, secondary, tertiary).
 	}
 
-	// Handle several indices.
+	// Handle several indices (indicated in the inset instead of the raw latexString).
 	docstring indexType = from_utf8("");
 	if (buffer().masterBuffer()->params().use_indices) {
 		indexType += " type=\"" + params_.index + "\"";
@@ -212,14 +211,25 @@ void InsetIndex::docbook(XMLStream & xs, OutputParams const & runparams) const
 	// Split the string into its main constituents: terms, and command (see, see also, range).
 	size_t positionVerticalBar = latexString.find(from_ascii("|")); // What comes before | is (sub)(sub)entries.
 	docstring indexTerms = latexString.substr(0, positionVerticalBar);
-	docstring command = latexString.substr(positionVerticalBar + 1);
+	docstring command;
+	if (positionVerticalBar != lyx::docstring::npos) {
+		command =  latexString.substr(positionVerticalBar + 1);
+	}
+
+	// Handle sorting issues, with @.
+	vector<docstring> sortingElements = getVectorFromString(indexTerms, from_ascii("@"), false);
+	docstring sortAs;
+	if (sortingElements.size() == 2) {
+		sortAs = sortingElements[0];
+		indexTerms = sortingElements[1];
+	}
 
 	// Handle primary, secondary, and tertiary terms (entries, subentries, and subsubentries, for LaTeX).
 	vector<docstring> terms = getVectorFromString(indexTerms, from_ascii("!"), false);
 
-	// Handle ranges. Happily, (| and |) can only be at the end of the string! However, | may be trapped by the
-	bool hasStartRange = latexString.find(from_ascii("|(")) != latexString.npos;
-	bool hasEndRange = latexString.find(from_ascii("|)")) != latexString.npos;
+	// Handle ranges. Happily, (| and |) can only be at the end of the string!
+	bool hasStartRange = latexString.find(from_ascii("|(")) != lyx::docstring::npos;
+	bool hasEndRange = latexString.find(from_ascii("|)")) != lyx::docstring::npos;
 	if (hasStartRange || hasEndRange) {
 		// Remove the ranges from the command if they do not appear at the beginning.
 		size_t index = 0;
@@ -258,7 +268,7 @@ void InsetIndex::docbook(XMLStream & xs, OutputParams const & runparams) const
 		} else {
 			see = list;
 
-			if (see.find(from_ascii(",")) != see.npos) {
+			if (see.find(from_ascii(",")) != std::string::npos) {
 				docstring error = from_utf8("Several index terms found as \"see\"! Only one is acceptable. "
 											"Complete entry: \"") + latexString + from_utf8("\"");
 				LYXERR0(error);
@@ -275,6 +285,12 @@ void InsetIndex::docbook(XMLStream & xs, OutputParams const & runparams) const
 	// If there are such things in the index entry, then this code may miserably fail. For example, for "Peter|(textbf",
 	// no range will be detected.
 	// TODO: Could handle formatting as significance="preferred"?
+	if (!command.empty()) {
+		docstring error = from_utf8("Unsupported feature: an index entry contains a | with an unsupported command, ")
+				          + command + from_utf8(". ") + from_utf8("Complete entry: \"") + latexString + from_utf8("\"");
+		LYXERR0(error);
+		xs << XMLStream::ESCAPE_NONE << (from_utf8("<!-- Output Error: ") + error + from_utf8(" -->\n"));
+	}
 
     // Write all of this down.
 	if (terms.empty() && !hasEndRange) {
@@ -335,7 +351,12 @@ void InsetIndex::docbook(XMLStream & xs, OutputParams const & runparams) const
 		} else {
 			xs << xml::StartTag("indexterm", attrs);
 			if (!terms.empty()) { // hasEndRange has no content.
-				xs << xml::StartTag("primary");
+				docstring attr;
+				if (!sortAs.empty()) {
+					attr = from_utf8("sortas='") + sortAs + from_utf8("'");
+				}
+
+				xs << xml::StartTag("primary", attr);
 				xs << terms[0];
 				xs << xml::EndTag("primary");
 			}

commit 1eb19cb8e3835fceb658bc5e4ac5264641cb7b5d
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Feb 6 05:35:07 2022 +0100

    Amend 109ea2be4a21ca93d22ab25703b3352a50fbbe3b
    
    The Windows code wasn't adapted when a variable was renamed (unlike the Linux one).

diff --git a/src/support/ForkedCalls.cpp b/src/support/ForkedCalls.cpp
index f0b2c7e..e770c4d 100644
--- a/src/support/ForkedCalls.cpp
+++ b/src/support/ForkedCalls.cpp
@@ -408,7 +408,7 @@ int ForkedCall::generateChild()
 
 	startup.cb = sizeof(STARTUPINFO);
 
-	if (CreateProcess(0, (LPSTR)line.c_str(), 0, 0, FALSE,
+	if (CreateProcess(0, (LPSTR)command_.c_str(), 0, 0, FALSE,
 		CREATE_NO_WINDOW, 0, 0, &startup, &process)) {
 		CloseHandle(process.hThread);
 		cpid = (pid_t)process.hProcess;

commit 0370cc428c684d2d000d4b84a7e899ff8b82d5f5
Author: Kornel Benko <kornel at lyx.org>
Date:   Sat Feb 5 20:04:06 2022 +0100

    Tools(listFontWithLang.pl): Discard use of deprecated perl-module Getopt::Mixed
    
    According to CTAN, this module is effectively obsolete.
    Using Getopt::Long instead now, since it is also part
    of the standard Perl distribution.

diff --git a/development/tools/GetOptions.pm b/development/tools/GetOptions.pm
index 3141ee1..489a099 100644
--- a/development/tools/GetOptions.pm
+++ b/development/tools/GetOptions.pm
@@ -10,7 +10,7 @@
 # Full author contact details are available in the file CREDITS
 # or at https://www.lyx.org/Credits
 #
-# Used as wrapper for Getopt::Mixed
+# Used as wrapper for Getopt::Long
 # as
 #    use GetOptions;
 #    ...
@@ -33,9 +33,9 @@ BEGIN {
 }
 
 use warnings;
-use Getopt::Mixed;
+use Getopt::Long;
 
-sub makeOpts();            # Create option spec for Getopt::Mixed::init()
+sub makeLongOpts();        # Create option spec for Getopt::Long::GetOptions();
 sub makeHelp();            # Create help-string to describe options
 
 # Following fields for a parameter can be defined:
@@ -69,15 +69,24 @@ sub handleOptions($)
   $optionsDef{v}->{comment} = "Display recognized params";
   $optionsDef{v}->{Sort} = 1;
 
-  my %options = ("help" => 0);
-  my $opts = &makeOpts();
+  use vars qw(%options);
+  %options = ("help" => 0);
 
-  Getopt::Mixed::init($opts);
-  while( my( $option, $value, $pretty ) = Getopt::Mixed::nextOption()) {
+  {
+    my $roptr = &makeLongOpts();
+    my $p = Getopt::Long::Parser->new;
+    $p->configure("bundling");
+    $p->getoptions(%{$roptr});
+  }
+
+  # Callback routine called by $p->getoptions().
+  sub handleopts($$$)
+  {
+    my ($option, $value, $unknown) = @_;
     if (defined($optionsDef{$option})) {
       my $fieldname = $optionsDef{$option}->{fieldname};
       if (exists($options{$fieldname}) && ($option ne "h")) {
-	print "Option $option already set\n";
+        print "Option $option already set\n";
         if (defined($options{$fieldname})) {
           print "Value \"$value\" would overwrite ";
           if (ref($options{$fieldname}) eq "ARRAY") {
@@ -87,8 +96,8 @@ sub handleOptions($)
             print "\"$options{$fieldname}\"\n";
           }
         }
-	$option = "h";
-	$fieldname = "help";
+        $option = "h";
+        $fieldname = "help";
       }
       if ($option eq "h") {
         print "Syntax: $0 options xxxx ...\n";
@@ -111,7 +120,6 @@ sub handleOptions($)
     }
   }
 
-  Getopt::Mixed::cleanup();
   if (exists($options{verbose})) {
     printf("Found following options:\n    %-16soptvalue\n", "option");
     print "    " . "-" x 32 . "\n";
@@ -139,29 +147,25 @@ sub handleOptions($)
 
 #############################################################
 
-# Create option spec for Getopt::Mixed::init()
-sub makeOpts()
+# Create option spec for Getopt::Long::GetOptions()
+sub makeLongOpts()
 {
-  my $first = 1;
-  my $opts = "";
+  my %opts = ();
   for my $ex (sort keys %optionsDef) {
     my $e = $optionsDef{$ex};
-    if (! $first) {
-      $opts .= " ";
-    }
-    $first = 0;
-    $opts .= $ex;
+    my $type = "";
     if (defined($e->{type})) {
-      my $tp = $e->{type};
-      $opts .= $tp;
+      $type = $e->{type};
     }
+    my $optx = $ex;
     if (defined($e->{alias})) {
       for my $a (@{$e->{alias}}) {
-        $opts .= " $a>$ex";
+        $optx .= "|$a";
       }
     }
+    $opts{"$optx$type"} = \&handleopts;
   }
-  return($opts);
+  return \%opts;        # to be used by Getopt::Long();
 }
 
 sub sortHelp

commit 28dd7b7de3527638ea8772815ec27439f87fddda
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Fri Feb 4 17:24:16 2022 +0100

    Do not set open_font true if none was open

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index a08f3ac..e29f268 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -2894,7 +2894,7 @@ void Paragraph::latex(BufferParams const & bparams,
 				}
 			} else {
 				running_font = current_font;
-				open_font = !langClosed;
+				open_font &= !langClosed;
 			}
 		}
 

commit cc4ed5e04b41e86e51f44d467680fc597fb94079
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Fri Feb 4 17:23:52 2022 +0100

    Do not try to pop from an empty stack

diff --git a/src/Font.cpp b/src/Font.cpp
index 26218ee..3ba04eb 100644
--- a/src/Font.cpp
+++ b/src/Font.cpp
@@ -631,7 +631,7 @@ int Font::latexWriteEndChanges(otexstream & os, BufferParams const & bparams,
 		bool const using_begin_end =
 			runparams.use_polyglossia ||
 				!lyxrc.language_command_end.empty();
-		if (using_begin_end)
+		if (using_begin_end && !languageStackEmpty())
 			popLanguageName();
 	}
 
diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index da97d12..a08f3ac 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -2805,7 +2805,8 @@ void Paragraph::latex(BufferParams const & bparams,
 			string end_tag = subst(lang_end_command, "$$lang", running_lang);
 			os << from_ascii(end_tag);
 			column += end_tag.length();
-			popLanguageName();
+			if (!languageStackEmpty())
+				popLanguageName();
 		}
 
 		// Switch file encoding if necessary (and allowed)
diff --git a/src/output_latex.cpp b/src/output_latex.cpp
index ac22116..f6c7375 100644
--- a/src/output_latex.cpp
+++ b/src/output_latex.cpp
@@ -607,6 +607,14 @@ void popLanguageName()
 }
 
 
+bool languageStackEmpty()
+{
+	OutputState * state = getOutputState();
+
+	return state->lang_switch_depth_.empty();
+}
+
+
 string const & openLanguageName()
 {
 	OutputState * state = getOutputState();
@@ -1768,7 +1776,7 @@ void latexParagraphs(Buffer const & buf,
 			<< '\n';
 		// If we have language_auto_begin, the stack will
 		// already be empty, nothing to pop()
-		if (using_begin_end && !lyxrc.language_auto_begin)
+		if (using_begin_end && langOpenedAtThisLevel(state))
 			popLanguageName();
 	}
 
diff --git a/src/output_latex.h b/src/output_latex.h
index af40a86..311b2e6 100644
--- a/src/output_latex.h
+++ b/src/output_latex.h
@@ -37,6 +37,9 @@ void pushLanguageName(std::string const & lang, bool localswitch = false);
  */
 void popLanguageName();
 
+// Check if we have an empty language stack
+bool languageStackEmpty();
+
 /** Return a reference to the last active language opened with
     polyglossia or when using begin/end commands. If none or when
     using babel with only a begin command, return a reference to

commit 59cabde9e3fda6bb6b8b1103f93ba23a3eb7802d
Author: Kornel Benko <kornel at lyx.org>
Date:   Mon Jan 31 13:43:37 2022 +0100

    Tools(listFontWithLang.pl): Only Haramo.*Gothic fonts are sans serif
    
    (Harano.*Mincho are serif fonts, so don't treat them as 'sans')

diff --git a/development/tools/listFontWithLang.pl b/development/tools/listFontWithLang.pl
index 562ac4c..ee14a90 100644
--- a/development/tools/listFontWithLang.pl
+++ b/development/tools/listFontWithLang.pl
@@ -409,7 +409,7 @@ my %sansFonts = (
   "e" => qr/^(electron|engebrechtre)/i,
   "f" => qr/^(fandolhei|fetamont|fira|font awesome 5|forgotten)/i,
   "g" => qr/^g(ardiner|aruda|fs ?neo|illius|ood ?times|ranada|raph|uanine|unplay)/i,
-  "h" => qr/^(hack|hani|haramain|harano|harmattan|hor\b)/i,
+  "h" => qr/^(hack|hani|haramain|harano.*gothic|harmattan|hor\b)/i,
   "i" => qr/^(ibm ?(plex ?mono|3270)|ikarius|inconsolata|induni.?h|iwona)/i,
   "j" => qr/^j(ara|ura|s ?math.?bbold)/i,
   "k" => qr/^(kalimati|kanji|karla|karma|kayrawan|kenyan|keraleeyam|khalid|khmer [or]|kiloji|klaudia|ko[mn]atu|kp ?mono|kurier|kustom)/i,

commit b6010badfa9d055147c653615ab5e0c571592797
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Fri Jan 28 20:16:38 2022 +0100

    Oops ! fixup 8c047143efbd

diff --git a/src/frontends/qt/GuiCompleter.cpp b/src/frontends/qt/GuiCompleter.cpp
index 33462b3..a40bdca 100644
--- a/src/frontends/qt/GuiCompleter.cpp
+++ b/src/frontends/qt/GuiCompleter.cpp
@@ -655,7 +655,7 @@ void GuiCompleter::activate()
 
 void GuiCompleter::tab()
 {
-	BufferView const & bv = gui_->bufferView();
+	BufferView & bv = gui_->bufferView();
 	Cursor cur = bv.cursor();
 	cur.screenUpdateFlags(Update::None);
 

commit 8c047143efbda1a5bae6445b85f0f771b3bc6fb0
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Fri Jan 28 19:48:18 2022 +0100

    Code cleanup in GuiCompleter
    
    processUpdateFlags does nothing if the update flags are None==0.

diff --git a/src/frontends/qt/GuiCompleter.cpp b/src/frontends/qt/GuiCompleter.cpp
index 6effd3d..33462b3 100644
--- a/src/frontends/qt/GuiCompleter.cpp
+++ b/src/frontends/qt/GuiCompleter.cpp
@@ -348,8 +348,7 @@ void GuiCompleter::updateVisibility(bool start, bool keep)
 
 	updateVisibility(cur, start, keep);
 
-	if (cur.result().screenUpdate())
-		gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
+	gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 }
 
 
@@ -597,8 +596,7 @@ void GuiCompleter::showPopup()
 	showPopup(cur);
 
 	// redraw if needed
-	if (cur.result().screenUpdate())
-		gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
+	gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 }
 
 
@@ -610,8 +608,7 @@ void GuiCompleter::showInline()
 	showInline(cur);
 
 	// redraw if needed
-	if (cur.result().screenUpdate())
-		gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
+	gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 }
 
 
@@ -643,8 +640,7 @@ void GuiCompleter::hideInline()
 	hideInline(cur);
 
 	// redraw if needed
-	if (cur.result().screenUpdate())
-		gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
+	gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 }
 
 
@@ -659,8 +655,8 @@ void GuiCompleter::activate()
 
 void GuiCompleter::tab()
 {
-	BufferView * bv = &gui_->bufferView();
-	Cursor cur = bv->cursor();
+	BufferView const & bv = gui_->bufferView();
+	Cursor cur = bv.cursor();
 	cur.screenUpdateFlags(Update::None);
 
 	// check that inline completion is active
@@ -703,8 +699,7 @@ void GuiCompleter::tab()
 		updateVisibility(false, false);
 
 		// redraw if needed
-		if (cur.result().screenUpdate())
-			gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
+		bv.processUpdateFlags(cur.result().screenUpdate());
 		return;
 	}
 	docstring nextchar = completion.substr(prefix.size(), 1);
@@ -717,7 +712,7 @@ void GuiCompleter::tab()
 	prefix = cur.inset().completionPrefix(cur);
 	docstring postfix = longestCompletion.substr(min(longestCompletion.size(), prefix.size()));
 	cur.inset().insertCompletion(cur, postfix, false);
-	old_cursor_ = bv->cursor();
+	old_cursor_ = bv.cursor();
 	updatePrefix(cur);
 
 	// show popup without delay because the completion was not unique
@@ -727,8 +722,7 @@ void GuiCompleter::tab()
 		popup_timer_.start(0);
 
 	// redraw if needed
-	if (cur.result().screenUpdate())
-		gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
+	bv.processUpdateFlags(cur.result().screenUpdate());
 }
 
 
@@ -895,8 +889,7 @@ void GuiCompleter::popupActivated(const QString & completion)
 	hidePopup();
 	hideInline(cur);
 
-	if (cur.result().screenUpdate())
-		gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
+	gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 	cur.endUndoGroup();
 }
 
@@ -912,8 +905,7 @@ void GuiCompleter::popupHighlighted(const QString & completion)
 	if (inlineVisible())
 		updateInline(cur, completion);
 
-	if (cur.result().screenUpdate())
-		gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
+	gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 }
 
 } // namespace frontend

commit 33c68d7750e4615747b27b1963ba63f53ff912ac
Author: Pavel Sanda <sanda at lyx.org>
Date:   Fri Jan 28 18:12:45 2022 +0100

    Revert 65b674ba4eff.
    
    We do not for what crash was this fix intended, but we know
    that the fix introduced freeze in xhtml exports (e.g. merged manual).
    
    https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg216835.html

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 7cb5ac2..cfdb9d9 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -3547,9 +3547,6 @@ void Buffer::collectChildren(ListOfBuffers & children, bool grand_children) cons
 	// loop over children
 	for (auto const & p : d->children_positions) {
 		Buffer * child = const_cast<Buffer *>(p.first);
-		// This can happen when called during GUI operations
-		if (!theBufferList().isLoaded(child))
-			continue;
 		// No duplicates
 		ListOfBuffers::const_iterator bit = find(children.begin(), children.end(), child);
 		if (bit != children.end())

commit f400a2cfa9b5552c103da0b7e336b6964dfa5b2d
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Fri Jan 28 17:13:30 2022 +0100

    Force redraw after completion
    
    Inside a math inset when completing macro names, it could lead to crashes.
    
    Note that this processUpdateFlags is present when outside of this if() branch.

diff --git a/src/frontends/qt/GuiCompleter.cpp b/src/frontends/qt/GuiCompleter.cpp
index 6fd39d3..6effd3d 100644
--- a/src/frontends/qt/GuiCompleter.cpp
+++ b/src/frontends/qt/GuiCompleter.cpp
@@ -701,6 +701,10 @@ void GuiCompleter::tab()
 		hidePopup();
 		hideInline(cur);
 		updateVisibility(false, false);
+
+		// redraw if needed
+		if (cur.result().screenUpdate())
+			gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 		return;
 	}
 	docstring nextchar = completion.substr(prefix.size(), 1);

commit 29b386640ef8318d25164b2c54c7c115750a6042
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Thu Jan 27 17:27:15 2022 -0500

    Comment: link to Beamer enumitem feature request

diff --git a/lib/layouts/beamer.layout b/lib/layouts/beamer.layout
index f3a5ff9..d824522 100644
--- a/lib/layouts/beamer.layout
+++ b/lib/layouts/beamer.layout
@@ -18,6 +18,8 @@ Input stdinsets.inc
 
 # Beamer does not work with enumitem.
 # See bug #7047.
+# For upstream (Beamer) feature request:
+#   https://github.com/josephwright/beamer/issues/342
 ExcludesModule enumitem
 
 # General textclass parameters

commit 79a2ac575cd40291e8cc7e8c4a3f4072670367b7
Author: José Matos <jamatos at lyx.org>
Date:   Thu Jan 27 18:32:57 2022 +0000

    Replace $${python} directly in the converter constructor

diff --git a/src/Converter.cpp b/src/Converter.cpp
index c00941d..7bb998d 100644
--- a/src/Converter.cpp
+++ b/src/Converter.cpp
@@ -148,6 +148,12 @@ void Converter::readFlags()
 }
 
 
+void Converter::setCommand(std::string const & command)
+{
+	command_ = subst(command, token_python, os::python());
+}
+
+
 Converter const * Converters::getConverter(string const & from,
 					    string const & to) const
 {
diff --git a/src/Converter.h b/src/Converter.h
index 5197e34..091dbcd 100644
--- a/src/Converter.h
+++ b/src/Converter.h
@@ -58,7 +58,7 @@ public:
 	///
 	std::string const command() const { return command_; }
 	///
-	void setCommand(std::string const & command) { command_ = command; }
+	void setCommand(std::string const & command);
 	///
 	std::string const flags() const { return flags_; }
 	///
@@ -144,7 +144,7 @@ public:
 		FAILURE = 1,
 		KILLED  = 1000
 	};
-	
+
 	///
 	Converter const & get(int i) const { return converterlist_[i]; }
 	///

commit b73ab0256d113571174fed4b2a3405fe8c44d297
Author: José Matos <jamatos at lyx.org>
Date:   Thu Jan 27 15:37:45 2022 +0000

    Fix compilation with gcc-12

diff --git a/src/insets/InsetListings.cpp b/src/insets/InsetListings.cpp
index 57df06e..67a0462 100644
--- a/src/insets/InsetListings.cpp
+++ b/src/insets/InsetListings.cpp
@@ -41,6 +41,7 @@
 #include "frontends/alert.h"
 #include "frontends/Application.h"
 
+#include <cstring>
 #include <regex>
 #include <sstream>
 

commit 2da183bf4f69847e30c9c9ab8a32548432a8a8b1
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Mon Jan 24 19:19:46 2022 +0100

    Check layout type when inserting inset over selection
    
    When inserting inset over a selection, the layout is transferred if
    the inset covers full paragraphs.
    
    This is not the right policy in the case of environments. Until proper
    code is written and tested, limit ourselves to command layouts.
    
    Fixes bug #12251.

diff --git a/src/Text3.cpp b/src/Text3.cpp
index a87169b..529e756 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -299,8 +299,11 @@ static bool doInsertInset(Cursor & cur, Text * text,
 			 * paragraph and the inset allows setting layout
 			 * FIXME: this does not work as expected when change tracking is on
 			 *   However, we do not really know what to do in this case.
+			 * FIXME: figure out a good test in the environment case (see #12251).
 			 */
-			if (cur.paragraph().empty() && !inset->forcePlainLayout()) {
+			if (cur.paragraph().layout().isCommand()
+			     && cur.paragraph().empty()
+			     && !inset->forcePlainLayout()) {
 				cur.paragraph().setPlainOrDefaultLayout(bparams.documentClass());
 				move_layout = true;
 			}

commit 6c98ac5a7b63606333672969b7b23cbc42f6b57d
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Jan 23 20:55:18 2022 +0100

    Fix breaking of MANUAL_LABEL paragraph when label is too long
    
    Typical example is a Labeling layout which label is an inline equation
    larger than the screen. Before this commit, the row would not get
    broken at all.
    
    Two parts in the patch:
    
    1/ when breaking the row in shortenIfNeeded, mark the last element as
       AlwaysBreakAfter instead of BreakAfter, in case the next element is
       NoBreakBefore.
    
    2/ when nothing could be done, as last resort keep the first element
       of the row only.

diff --git a/src/Row.cpp b/src/Row.cpp
index d1921a6..f2d4aaf 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -537,7 +537,7 @@ void moveElements(Row::Elements & from, Row::Elements::iterator const & it,
 	to.insert(to.end(), it, from.end());
 	from.erase(it, from.end());
 	if (!from.empty())
-		from.back().row_flags = (from.back().row_flags & ~AfterFlags) | BreakAfter;
+		from.back().row_flags = (from.back().row_flags & ~AfterFlags) | AlwaysBreakAfter;
 }
 
 }
@@ -645,7 +645,9 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 		return tail;
 	}
 
-	return Elements();
+	// cit == beg; remove all elements after the first one.
+	moveElements(elements_, cit + 1, tail);
+	return tail;
 }
 
 

commit f8f86a1a8172fa8b66ffaf7e04c0b723ee2b4866
Author: Kornel Benko <kornel at lyx.org>
Date:   Sun Jan 23 20:13:26 2022 +0100

    Next runtime messages to be ommitted if compiled with clang using flag '-fsanitize'.
    
    Prevent the return of impossible values for 'enum flags'.
    For instance the result of '~Update::Force' at src/BufferView.cpp:3025 without this patch
    is '4294967293'.

diff --git a/src/update_flags.h b/src/update_flags.h
index 0efa541..517bfb6 100644
--- a/src/update_flags.h
+++ b/src/update_flags.h
@@ -46,7 +46,7 @@ inline flags operator&(flags const f, flags const g)
 
 inline flags operator~(flags const f)
 {
-	return static_cast<flags>(~int(f));
+	return static_cast<flags>(~int(f) & 0x3f);
 }
 
 } // namespace Update

commit ec3a44fef59129ba4492ddf30de81fa329e631d5
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Jan 23 19:34:11 2022 +0100

    brkstr2str_pos: avoid case where length is negative
    
    The string that Qt sees is not the original string, since we add
    zero-width nonbreaking spaces around it, plus an override character to
    force rendering direction. This means that translating positions
    between these two representation can be a bit tricky.
    
    We use a max(foo, 0) here to make sure that our intermediate
    computation is postive.
    
    Fixes part of bug #12452.

diff --git a/src/frontends/qt/GuiFontMetrics.cpp b/src/frontends/qt/GuiFontMetrics.cpp
index d827f2f..e7f61c6 100644
--- a/src/frontends/qt/GuiFontMetrics.cpp
+++ b/src/frontends/qt/GuiFontMetrics.cpp
@@ -535,7 +535,7 @@ docstring::size_type brkstr2str_pos(QString brkstr, docstring const & str, int p
 	 */
 	// The variable `brkStrOffset' is here to account for the extra leading characters.
 	// The ending character zerow_nbsp has to be ignored if the line is complete.
-	int const qlen = pos - brkStrOffset - (pos == brkstr.length());
+	int const qlen = max(pos - brkStrOffset - (pos == brkstr.length()), 0);
 #if QT_VERSION < 0x040801 || QT_VERSION >= 0x050100
 	auto const len = qstring_to_ucs4(brkstr.mid(brkStrOffset, qlen)).length();
 	// Avoid warning

commit 942538c02d840753e16981636998e0c60c752b73
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Jan 22 09:30:25 2022 +0100

    Fix bug 12459
    
    When checking for branch color, take into account that some branches
    are defined in the master document only, some only in the child.

diff --git a/src/insets/InsetBranch.cpp b/src/insets/InsetBranch.cpp
index 66cc6ef..be8e551 100644
--- a/src/insets/InsetBranch.cpp
+++ b/src/insets/InsetBranch.cpp
@@ -136,9 +136,11 @@ ColorCode InsetBranch::backgroundColor(PainterInfo const & pi) const
 {
 	if (params_.branch.empty())
 		return Inset::backgroundColor(pi);
+	string const branch_id = (buffer().masterParams().branchlist().find(params_.branch))
+			? convert<string>(buffer().masterParams().branchlist().id())
+			: convert<string>(buffer().params().branchlist().id());
 	// FIXME UNICODE
-	string const branchcol = "branch" + convert<string>(buffer().params().branchlist().id())
-			+ to_utf8(params_.branch);
+	string const branchcol = "branch" + branch_id + to_utf8(params_.branch);
 	ColorCode c = lcolor.getFromLyXName(branchcol);
 	if (c == Color_none)
 		c = Color_error;

commit 2764ed20c2a3294d4177189ba690a123238c87bd
Author: Kornel Benko <kornel at lyx.org>
Date:   Fri Jan 21 11:02:09 2022 +0100

    Omit runtime messages if compiled with clang using flag '-fsanitize'.
    
    Setting sufficiently high value allows to use
    ColorCode enums for new up to 32000 branch insets.
    Previous setting printed messages if using more than 25 new branch insets.
    "'ColorCode' ... src/Color.cpp:435:10: runtime error:
    load of value 128, which is not a valid value for type"

diff --git a/src/ColorCode.h b/src/ColorCode.h
index f2f4521..e1a6b0a 100644
--- a/src/ColorCode.h
+++ b/src/ColorCode.h
@@ -238,7 +238,8 @@ enum ColorCode {
 	/// Color for regexp frame
 	Color_regexpframe,
 	/// For ignoring updates of a color
-	Color_ignore
+	Color_ignore,
+	Color_max = 500
 };
 
 

commit a64244b844e613aa0f739e050aa23168ff21fce9
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Wed Jan 19 18:08:47 2022 +0100

    Fixup 7485225c: better placement of deph bar
    
    Fixes #12243.

diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp
index c49b5e6..cffdcf2 100644
--- a/src/RowPainter.cpp
+++ b/src/RowPainter.cpp
@@ -343,9 +343,9 @@ void RowPainter::paintDepthBar() const
 	for (depth_type i = 1; i <= depth; ++i) {
 		int const w = nestMargin() / 5;
 		int x = int(xo_) + w * i;
-		// consider the bufferview left margin if we're drawing outermost text
+		// only consider the changebar space if we're drawing outermost text
 		if (text_.isMainText())
-			x += pi_.base.bv->leftMargin();
+			x += pi_.base.bv->leftMargin() - changebarMargin();
 
 		int const starty = yo_ - row_.ascent();
 		int const h =  row_.height() - 1 - (i - next_depth - 1) * 3;

commit da3c3796ee96473fbcede4c33545dc16fe53580d
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Mon Jan 17 17:33:21 2022 +0100

    Make LABEL_MANUAL label breakable when larger than the screen.
    
    This is what the situation was in 2.3.X.

diff --git a/src/Row.cpp b/src/Row.cpp
index ef1495f..d1921a6 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -460,12 +460,12 @@ void Row::add(pos_type const pos, Inset const * ins, Dimension const & dim,
 
 
 void Row::add(pos_type const pos, char_type const c,
-              Font const & f, Change const & ch, bool can_break)
+              Font const & f, Change const & ch)
 {
 	if (!sameString(f, ch)) {
 		finalizeLast();
 		Element e(STRING, pos, f, ch);
-		e.row_flags = can_break ? CanBreakInside : Inline;
+		e.row_flags = CanBreakInside;
 		elements_.push_back(e);
 	}
 	back().str += c;
diff --git a/src/Row.h b/src/Row.h
index 62ee6cf..4c4bfce 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -250,7 +250,7 @@ public:
 		 Font const & f, Change const & ch);
 	///
 	void add(pos_type pos, char_type const c,
-	         Font const & f, Change const & ch, bool can_break);
+	         Font const & f, Change const & ch);
 	///
 	void addVirtual(pos_type pos, docstring const & s,
 			Font const & f, Change const & ch);
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 19a5e8f..f68292a 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -916,10 +916,10 @@ Row TextMetrics::tokenizeParagraph(pit_type const pit) const
 			// ⤶ U+2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
 			// ¶ U+00B6 PILCROW SIGN
 			char_type const screen_char = (c == 0x2028) ? 0x2936 : 0x00B6;
-			row.add(i, screen_char, *fi, par.lookupChange(i), i >= body_pos);
+			row.add(i, screen_char, *fi, par.lookupChange(i));
 		} else
 			// row elements before body are unbreakable
-			row.add(i, c, *fi, par.lookupChange(i), i >= body_pos);
+			row.add(i, c, *fi, par.lookupChange(i));
 
 		// add inline completion width
 		// draw logically behind the previous character

commit 6f7505300ed7b4bd1f78bea076b6469e7e9cc32d
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Mon Jan 17 15:14:05 2022 +0100

    When clearing a row, always clear the whole text area width
    
    It is not a good idea to take into account the horizontal scrolling
    that may have happened. For example, this leads to display glitches
    when a Description label is larger than text width.
    
    This explains why SingleParUpdate strategy did not work with home/end
    on a long row.

diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 25b33b9..2bf7d2a 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -3391,15 +3391,12 @@ void BufferView::checkCursorScrollOffset()
 
 	//lyxerr << "cur_x=" << cur_x << ", offset=" << offset << ", row.wid=" << row.width() << ", margin=" << MARGIN << endl;
 
-	if (offset != d->horiz_scroll_offset_)
+	if (offset != d->horiz_scroll_offset_) {
 		LYXERR(Debug::PAINTING, "Horiz. scroll offset changed from "
 		       << d->horiz_scroll_offset_ << " to " << offset);
-
-	if (d->update_strategy_ == NoScreenUpdate
-	    && offset != d->horiz_scroll_offset_) {
-		// FIXME: if one uses SingleParUpdate, then home/end
-		// will not work on long rows. Why?
-		d->update_strategy_ = FullScreenUpdate;
+		row.changed(true);
+		if (d->update_strategy_ == NoScreenUpdate)
+			d->update_strategy_ = SingleParUpdate;
 	}
 
 	d->horiz_scroll_offset_ = offset;
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index f227164..19a5e8f 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -2039,9 +2039,9 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type const pit, int const
 		// already cleared because of a full repaint.
 		if (!pi.full_repaint && row.changed()) {
 			LYXERR(Debug::PAINTING, "Clear rect@("
-			       << max(row_x, 0) << ", " << y - row.ascent() << ")="
+			       << x << ", " << y - row.ascent() << ")="
 			       << width() << " x " << row.height());
-			pi.pain.fillRectangle(row_x, y - row.ascent(),
+			pi.pain.fillRectangle(x, y - row.ascent(),
 			                      width(), row.height(), pi.background_color);
 		}
 

commit 4f158ecfc8e2ad174f8593c15d273534420f67a2
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Mon Jan 17 11:58:49 2022 +0100

    Fix computation of LABEL_MANUAL label separation
    
    The spacing of Labeling, Description and friends shall be computed
    when breaking the row, not when tokenizing it. Indeed, this is the
    right place to determine its correct value.
    
    To this end add a new MARGINSPACE row element type.
    
    This allows to remove TextMetrics::labelEnd, which is not used anymore.

diff --git a/src/Row.cpp b/src/Row.cpp
index 423768f..ef1495f 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -114,6 +114,7 @@ pos_type Row::Element::x2pos(int &x) const
 		break;
 	case INSET:
 	case SPACE:
+	case MARGINSPACE:
 		// those elements contain only one position. Round to
 		// the closest side.
 		if (x > (full_width() + 1) / 2) {
@@ -313,6 +314,9 @@ ostream & operator<<(ostream & os, Row::Element const & e)
 		break;
 	case Row::SPACE:
 		os << "SPACE: ";
+		break;
+	case Row::MARGINSPACE:
+		os << "MARGINSPACE: ";
 	}
 	os << "width=" << e.full_width() << ", row_flags=" << e.row_flags;
 	return os;
@@ -498,6 +502,18 @@ void Row::addSpace(pos_type const pos, int const width,
 }
 
 
+void Row::addMarginSpace(pos_type const pos, int const width,
+		   Font const & f, Change const & ch)
+{
+	finalizeLast();
+	Element e(MARGINSPACE, pos, f, ch);
+	e.dim.wid = width;
+	e.row_flags = NoBreakBefore;
+	elements_.push_back(e);
+	dim_.wid += e.dim.wid;
+}
+
+
 void Row::push_back(Row::Element const & e)
 {
 	dim_.wid += e.dim.wid;
diff --git a/src/Row.h b/src/Row.h
index aba7913..62ee6cf 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -50,7 +50,10 @@ public:
 		// An inset
 		INSET,
 		// Some spacing described by its width, not a string
-		SPACE
+		SPACE,
+		// Spacing until the left margin, with a minimal value given
+		// by the initial width
+		MARGINSPACE
 	};
 
 /**
@@ -253,6 +256,8 @@ public:
 			Font const & f, Change const & ch);
 	///
 	void addSpace(pos_type pos, int width, Font const & f, Change const & ch);
+	///
+	void addMarginSpace(pos_type pos, int width, Font const & f, Change const & ch);
 
 	///
 	typedef std::vector<Element> Elements;
diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp
index b7b479b..c49b5e6 100644
--- a/src/RowPainter.cpp
+++ b/src/RowPainter.cpp
@@ -564,6 +564,7 @@ void RowPainter::paintText()
 			break;
 
 		case Row::SPACE:
+		case Row::MARGINSPACE:
 			paintTextDecoration(e);
 		}
 
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 0c87d10..f227164 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -786,15 +786,6 @@ int TextMetrics::labelFill(Row const & row) const
 }
 
 
-int TextMetrics::labelEnd(pit_type const pit) const
-{
-	// labelEnd is only needed if the layout fills a flushleft label.
-	if (text_->getPar(pit).layout().margintype != MARGIN_MANUAL)
-		return 0;
-	// return the beginning of the body
-	return leftMargin(pit);
-}
-
 namespace {
 
 /**
@@ -901,16 +892,12 @@ Row TextMetrics::tokenizeParagraph(pit_type const pit) const
 			Dimension dim = bv_->coordCache().insets().dim(ins);
 			row.add(i, ins, dim, *fi, par.lookupChange(i));
 		} else if (c == ' ' && i + 1 == body_pos) {
-			// There is a space at i, but it should not be
-			// added as a separator, because it is just
-			// before body_pos. Instead, insert some spacing to
-			// align text
+			// This space is an \item separator. Represent it with a
+			// special space element, which dimension will be computed
+			// in breakRow.
 			FontMetrics const & fm = theFontMetrics(text_->labelFont(par));
-			// this is needed to make sure that the row width is correct
-			row.finalizeLast();
-			int const add = max(fm.width(par.layout().labelsep),
-			                    labelEnd(pit) - row.width());
-			row.addSpace(i, add, *fi, par.lookupChange(i));
+			int const wid = fm.width(par.layout().labelsep);
+			row.addMarginSpace(i, wid, *fi, par.lookupChange(i));
 		} else if (c == '\t')
 			row.addSpace(i, theFontMetrics(*fi).width(from_ascii("    ")),
 			             *fi, par.lookupChange(i));
@@ -920,7 +907,7 @@ Row TextMetrics::tokenizeParagraph(pit_type const pit) const
 			 * U+2029 PARAGRAPH SEPARATOR
 
 			 * These are special unicode characters that break
-			 * lines/pragraphs. Not handling them lead to trouble wrt
+			 * lines/pragraphs. Not handling them leads to trouble wrt
 			 * Qt QTextLayout formatting. We add a visible character
 			 * on screen so that the user can see that something is
 			 * happening.
@@ -1139,6 +1126,8 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 		Row::Elements tail;
 		elt.splitAt(width - rows.back().width(), next_width, false, tail);
 		Row & rb = rows.back();
+		if (elt.type == Row::MARGINSPACE)
+			elt.dim.wid = max(elt.dim.wid, leftMargin(bigrow.pit()) - rb.width());
 		rb.push_back(elt);
 		rb.finalizeLast();
 		if (rb.width() > width) {
diff --git a/src/TextMetrics.h b/src/TextMetrics.h
index e38ba71..cf53faa 100644
--- a/src/TextMetrics.h
+++ b/src/TextMetrics.h
@@ -148,9 +148,6 @@ private:
 	/// the minimum space a manual label needs on the screen in pixels
 	int labelFill(Row const & row) const;
 
-	/// FIXME??
-	int labelEnd(pit_type const pit) const;
-
 	// Turn paragraph oh index \c pit into a single row
 	Row tokenizeParagraph(pit_type pit) const;
 

commit c638caddd84e281235cb9941940829d015a671aa
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Thu Jan 13 19:34:46 2022 +0100

    Compilation fix for Qt4

diff --git a/src/frontends/qt/GuiFontMetrics.cpp b/src/frontends/qt/GuiFontMetrics.cpp
index 0dc0de5..d827f2f 100644
--- a/src/frontends/qt/GuiFontMetrics.cpp
+++ b/src/frontends/qt/GuiFontMetrics.cpp
@@ -19,6 +19,7 @@
 
 #include "support/convert.h"
 #include "support/lassert.h"
+#include "support/lstrings.h" // for breakString_helper with qt4
 #include "support/lyxlib.h"
 #include "support/debug.h"
 
@@ -624,7 +625,7 @@ GuiFontMetrics::breakString_helper(docstring const & s, int first_wid, int wid,
 		// FIXME: this is slower than it could be but we'll get rid of Qt4 anyway
 		docstring const ss = s.substr(pos, epos - pos);
 		int const wid = width(ss);
-		int const nspc_wid = i + 1 < tl.lineCount() ? wid : width(trim(ss));
+		int const nspc_wid = i + 1 < tl.lineCount() ? wid : width(rtrim(ss));
 #endif
 		breaks.emplace_back(epos - pos, wid, nspc_wid);
 		pos = epos;

commit 473a4f2648268713b4a90bc8ece9237e469fdf20
Author: jpc <jpc at lyx.org>
Date:   Thu Jan 13 17:39:49 2022 +0100

             Update & solve shortcut conflict in fr.po

diff --git a/po/fr.gmo b/po/fr.gmo
index 092bd3d..1063fe5 100644
Binary files a/po/fr.gmo and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
index 7f7e4a5..87f2247 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -362,15 +362,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2021-11-05 17:50+0100\n"
-"PO-Revision-Date: 2021-11-05 17:52+0100\n"
+"POT-Creation-Date: 2022-01-13 17:37+0100\n"
+"PO-Revision-Date: 2022-01-13 17:39+0100\n"
 "Last-Translator: Jean-Pierre Chrétien <jeanpierre.chretien at free.fr>\n"
 "Language-Team: lyxfr\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.2.1\n"
+"X-Generator: Poedit 2.4.2\n"
 
 #: src/frontends/qt/ui/AboutUi.ui:27
 msgid "Version"
@@ -834,9 +834,9 @@ msgstr "Type de boîte intérieure"
 #: src/frontends/qt/ui/ListingsUi.ui:105 src/frontends/qt/ui/TabularUi.ui:1200
 #: src/frontends/qt/ui/TabularUi.ui:1219 src/frontends/qt/ui/TabularUi.ui:1267
 #: src/frontends/qt/GuiBox.cpp:420 src/frontends/qt/GuiBox.cpp:630
-#: src/frontends/qt/GuiDocument.cpp:124 src/frontends/qt/GuiGraphics.cpp:576
-#: src/frontends/qt/GuiMathMatrix.cpp:33 src/frontends/qt/GuiPrefs.cpp:2323
-#: src/frontends/qt/GuiPrefs.cpp:2346
+#: src/frontends/qt/GuiDocument.cpp:124 src/frontends/qt/GuiGraphics.cpp:582
+#: src/frontends/qt/GuiMathMatrix.cpp:33 src/frontends/qt/GuiPrefs.cpp:2327
+#: src/frontends/qt/GuiPrefs.cpp:2350
 msgid "None"
 msgstr "Aucun"
 
@@ -1112,15 +1112,15 @@ msgstr "Ajouter &tout"
 #: src/frontends/qt/ui/BranchesUnknownUi.ui:58 src/Buffer.cpp:1458
 #: src/Buffer.cpp:4710 src/Buffer.cpp:4820 src/LyXVC.cpp:114 src/LyXVC.cpp:310
 #: src/buffer_funcs.cpp:56 src/frontends/qt/GuiBranches.cpp:226
-#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiDocument.cpp:2844
-#: src/frontends/qt/GuiParagraph.cpp:177 src/frontends/qt/GuiPrefs.cpp:3410
-#: src/frontends/qt/GuiView.cpp:2835 src/frontends/qt/GuiView.cpp:3067
-#: src/frontends/qt/GuiView.cpp:3091 src/frontends/qt/GuiView.cpp:3105
-#: src/frontends/qt/GuiView.cpp:3207 src/frontends/qt/GuiView.cpp:3252
-#: src/frontends/qt/GuiView.cpp:3307 src/frontends/qt/GuiView.cpp:3541
-#: src/frontends/qt/GuiView.cpp:3555 src/frontends/qt/GuiView.cpp:3657
-#: src/frontends/qt/GuiView.cpp:3682 src/frontends/qt/GuiView.cpp:4386
-#: src/frontends/qt/GuiView.cpp:4393 src/insets/InsetBibtex.cpp:153
+#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiDocument.cpp:2848
+#: src/frontends/qt/GuiParagraph.cpp:177 src/frontends/qt/GuiPrefs.cpp:3414
+#: src/frontends/qt/GuiView.cpp:2865 src/frontends/qt/GuiView.cpp:3097
+#: src/frontends/qt/GuiView.cpp:3121 src/frontends/qt/GuiView.cpp:3135
+#: src/frontends/qt/GuiView.cpp:3237 src/frontends/qt/GuiView.cpp:3282
+#: src/frontends/qt/GuiView.cpp:3337 src/frontends/qt/GuiView.cpp:3571
+#: src/frontends/qt/GuiView.cpp:3585 src/frontends/qt/GuiView.cpp:3687
+#: src/frontends/qt/GuiView.cpp:3712 src/frontends/qt/GuiView.cpp:4416
+#: src/frontends/qt/GuiView.cpp:4423 src/insets/InsetBibtex.cpp:153
 msgid "&Cancel"
 msgstr "&Annuler"
 
@@ -1165,13 +1165,13 @@ msgstr "&Taille :"
 #: src/frontends/qt/GuiDocument.cpp:1546 src/frontends/qt/GuiDocument.cpp:1553
 #: src/frontends/qt/GuiDocument.cpp:2586 src/frontends/qt/GuiDocument.cpp:2673
 #: src/frontends/qt/GuiDocument.cpp:2674 src/frontends/qt/GuiDocument.cpp:2675
-#: src/frontends/qt/GuiDocument.cpp:2695 src/frontends/qt/GuiDocument.cpp:2702
-#: src/frontends/qt/GuiDocument.cpp:2709 src/frontends/qt/GuiDocument.cpp:2799
-#: src/frontends/qt/GuiDocument.cpp:3405 src/frontends/qt/GuiDocument.cpp:4890
+#: src/frontends/qt/GuiDocument.cpp:2699 src/frontends/qt/GuiDocument.cpp:2706
+#: src/frontends/qt/GuiDocument.cpp:2713 src/frontends/qt/GuiDocument.cpp:2803
+#: src/frontends/qt/GuiDocument.cpp:3409 src/frontends/qt/GuiDocument.cpp:4894
 #: src/frontends/qt/GuiExternal.cpp:76 src/frontends/qt/GuiGraphics.cpp:71
 #: src/frontends/qt/GuiIndices.cpp:58 src/frontends/qt/GuiListings.cpp:160
-#: src/frontends/qt/GuiListings.cpp:167 src/frontends/qt/GuiPrefs.cpp:2479
-#: src/frontends/qt/GuiPrefs.cpp:2625 src/frontends/qt/GuiPrintNomencl.cpp:47
+#: src/frontends/qt/GuiListings.cpp:167 src/frontends/qt/GuiPrefs.cpp:2483
+#: src/frontends/qt/GuiPrefs.cpp:2629 src/frontends/qt/GuiPrintNomencl.cpp:47
 #: src/frontends/qt/GuiTabularCreate.cpp:107
 #: src/frontends/qt/GuiViewSource.cpp:341
 msgid "Default"
@@ -1365,7 +1365,7 @@ msgstr "Lan&gue :"
 #: lib/layouts/europasscv.layout:475 lib/layouts/europasscv.layout:482
 #: lib/layouts/europecv.layout:321 lib/layouts/europecv.layout:327
 #: lib/layouts/moderncv.layout:580 src/frontends/qt/GuiDocument.cpp:1777
-#: src/frontends/qt/GuiPrefs.cpp:2426 src/frontends/qt/Menus.cpp:938
+#: src/frontends/qt/GuiPrefs.cpp:2430 src/frontends/qt/Menus.cpp:938
 msgid "Language"
 msgstr "Langue"
 
@@ -1677,7 +1677,7 @@ msgstr ""
 msgid "&Workarea only"
 msgstr "&Zone de travail uniquement"
 
-#: src/frontends/qt/ui/DelimiterUi.ui:122 src/frontends/qt/GuiDelimiter.cpp:375
+#: src/frontends/qt/ui/DelimiterUi.ui:122 src/frontends/qt/GuiDelimiter.cpp:376
 msgid "TeX Code: "
 msgstr "Code TeX : "
 
@@ -1718,7 +1718,7 @@ msgstr ""
 msgid "Save as Document Defaults"
 msgstr "Enregistrer comme valeurs implicites"
 
-#: src/frontends/qt/ui/ERTUi.ui:38 src/frontends/qt/GuiPrefs.cpp:1319
+#: src/frontends/qt/ui/ERTUi.ui:38 src/frontends/qt/GuiPrefs.cpp:1323
 msgid "Display"
 msgstr "Affichage écran"
 
@@ -1876,12 +1876,12 @@ msgid "Scale"
 msgstr "Échelle"
 
 #: src/frontends/qt/ui/ExternalUi.ui:494 src/frontends/qt/ui/GraphicsUi.ui:153
-#: src/frontends/qt/GuiGraphics.cpp:476
+#: src/frontends/qt/GuiGraphics.cpp:482
 msgid "Height of image in output"
 msgstr "Hauteur de l'image en sortie"
 
 #: src/frontends/qt/ui/ExternalUi.ui:504 src/frontends/qt/ui/GraphicsUi.ui:121
-#: src/frontends/qt/GuiGraphics.cpp:475
+#: src/frontends/qt/GuiGraphics.cpp:481
 msgid "Width of image in output"
 msgstr "Largeur de l'image en sortie"
 
@@ -2370,7 +2370,7 @@ msgstr "Taille sortie"
 msgid "Sets height of graphic. Leave unchecked to set automatically."
 msgstr "Fixer la hauteur du graphique. Automatique si non coché."
 
-#: src/frontends/qt/ui/GraphicsUi.ui:166 src/frontends/qt/GuiGraphics.cpp:474
+#: src/frontends/qt/ui/GraphicsUi.ui:166 src/frontends/qt/GuiGraphics.cpp:480
 msgid "Set &height:"
 msgstr "&Hauteur :"
 
@@ -2382,7 +2382,7 @@ msgstr "Échelle &graphique (%) :"
 msgid "Sets width of graphic. Leave unchecked to set automatically."
 msgstr "Fixer la largeur du graphique. Automatique si non coché."
 
-#: src/frontends/qt/ui/GraphicsUi.ui:186 src/frontends/qt/GuiGraphics.cpp:473
+#: src/frontends/qt/ui/GraphicsUi.ui:186 src/frontends/qt/GuiGraphics.cpp:479
 msgid "Set &width:"
 msgstr "&Largeur :"
 
@@ -2577,8 +2577,8 @@ msgstr "Insérer l'espacement même après un saut de page"
 #: lib/layouts/acmart.layout:694 lib/layouts/acmart.layout:712
 #: lib/layouts/amsdefs.inc:190 lib/layouts/maa-monthly.layout:165
 #: lib/layouts/maa-monthly.layout:169 lib/layouts/minimalistic.module:27
-#: lib/layouts/scrlttr2.layout:271 lib/layouts/stdinsets.inc:578
-#: lib/layouts/stdinsets.inc:581
+#: lib/layouts/scrlttr2.layout:271 lib/layouts/stdinsets.inc:579
+#: lib/layouts/stdinsets.inc:582
 msgid "URL"
 msgstr "URL"
 
@@ -3005,9 +3005,9 @@ msgid "&Syntax Highlighting Package:"
 msgstr "&Paquetage d'accentuation de la syntaxe :"
 
 #: src/frontends/qt/ui/ListingsUi.ui:14 lib/layouts/numreport.inc:37
-#: lib/layouts/stdcounters.inc:77 lib/layouts/stdinsets.inc:337
-#: lib/layouts/stdinsets.inc:343 lib/layouts/stdinsets.inc:392
-#: lib/layouts/stdinsets.inc:398 src/insets/InsetCaption.cpp:410
+#: lib/layouts/stdcounters.inc:77 lib/layouts/stdinsets.inc:338
+#: lib/layouts/stdinsets.inc:344 lib/layouts/stdinsets.inc:393
+#: lib/layouts/stdinsets.inc:399 src/insets/InsetCaption.cpp:410
 #: src/insets/InsetListings.cpp:611 src/insets/InsetListings.cpp:612
 msgid "Listing"
 msgstr "Listing"
@@ -3942,7 +3942,7 @@ msgstr "Double"
 #: src/frontends/qt/GuiDocument.cpp:1201 src/frontends/qt/GuiDocument.cpp:1547
 #: src/frontends/qt/GuiHSpace.cpp:57 src/frontends/qt/GuiPrefs.cpp:816
 #: src/frontends/qt/GuiPrefs.cpp:844 src/frontends/qt/GuiPrefs.cpp:871
-#: src/frontends/qt/GuiPrefs.cpp:2325 src/frontends/qt/GuiPrefs.cpp:2348
+#: src/frontends/qt/GuiPrefs.cpp:2329 src/frontends/qt/GuiPrefs.cpp:2352
 #: src/frontends/qt/GuiPrintNomencl.cpp:51 src/insets/InsetInfo.cpp:236
 #: src/insets/InsetInfo.cpp:246 src/insets/InsetInfo.cpp:250
 #: src/insets/InsetInfo.cpp:259 src/insets/InsetInfo.cpp:321
@@ -4198,8 +4198,8 @@ msgid "&Modify"
 msgstr "&Modifier"
 
 #: src/frontends/qt/ui/PrefConvertersUi.ui:286
-#: src/frontends/qt/ui/PrefShortcutsUi.ui:61 src/frontends/qt/GuiPrefs.cpp:3146
-#: src/frontends/qt/GuiPrefs.cpp:3232
+#: src/frontends/qt/ui/PrefShortcutsUi.ui:61 src/frontends/qt/GuiPrefs.cpp:3150
+#: src/frontends/qt/GuiPrefs.cpp:3236
 msgid "Remo&ve"
 msgstr "&Enlever"
 
@@ -4479,7 +4479,7 @@ msgstr ""
 "Définir un patron de recherche (voir le Manuel de l’utilisateur pour la "
 "syntaxe)"
 
-#: src/frontends/qt/ui/PrefEditUi.ui:167 src/LyXRC.cpp:3142
+#: src/frontends/qt/ui/PrefEditUi.ui:167 src/LyXRC.cpp:3175
 msgid ""
 "Configure the width of the text cursor. Automatic zoom-controlled cursor "
 "width used when set to 0."
@@ -4756,7 +4756,7 @@ msgstr ""
 "documents"
 
 #: src/frontends/qt/ui/PrefLanguageUi.ui:77
-#: src/frontends/qt/GuiDocument.cpp:1060 src/frontends/qt/GuiDocument.cpp:2716
+#: src/frontends/qt/GuiDocument.cpp:1060 src/frontends/qt/GuiDocument.cpp:2720
 #: src/frontends/qt/GuiPrefs.cpp:815 src/frontends/qt/GuiPrefs.cpp:843
 msgid "Automatic"
 msgstr "Automatique"
@@ -4857,7 +4857,7 @@ msgstr ""
 msgid "&Mark additional languages"
 msgstr "&Marquer les langues additionnelles"
 
-#: src/frontends/qt/ui/PrefLanguageUi.ui:199 src/LyXRC.cpp:3270
+#: src/frontends/qt/ui/PrefLanguageUi.ui:199 src/LyXRC.cpp:3303
 msgid ""
 "Select to use the current keyboard language, as set from the operating "
 "system, as default input language."
@@ -5056,7 +5056,7 @@ msgstr "Autres options"
 msgid "Output &line length:"
 msgstr "&Longueur de la ligne exportée :"
 
-#: src/frontends/qt/ui/PrefOutputUi.ui:186 src/LyXRC.cpp:3081
+#: src/frontends/qt/ui/PrefOutputUi.ui:186 src/LyXRC.cpp:3114
 msgid ""
 "The maximum line length of exported plain text/LaTeX/SGML files. If set to "
 "0, paragraphs are output in a single line; if the line length is > 0, "
@@ -6503,8 +6503,8 @@ msgstr "Seulement le corps"
 msgid "Select the output format"
 msgstr "Sélectionner le format de sortie"
 
-#: src/frontends/qt/ui/WorkAreaUi.ui:82 src/frontends/qt/GuiView.cpp:3682
-#: src/frontends/qt/GuiView.cpp:4386
+#: src/frontends/qt/ui/WorkAreaUi.ui:82 src/frontends/qt/GuiView.cpp:3712
+#: src/frontends/qt/GuiView.cpp:4416
 msgid "&Reload"
 msgstr "&Recharger"
 
@@ -7067,7 +7067,7 @@ msgstr "Notes de figure"
 #: lib/layouts/stdlayouts.inc:38 lib/layouts/stdlayouts.inc:63
 #: lib/layouts/stdlayouts.inc:85 lib/layouts/stdletter.inc:13
 #: lib/layouts/svcommon.inc:27 lib/layouts/svcommon.inc:710
-#: lib/layouts/svcommon.inc:721 lib/layouts/tufte-book.layout:236
+#: lib/layouts/svcommon.inc:721 lib/layouts/tufte-book.layout:242
 msgid "MainText"
 msgstr "Corps"
 
@@ -7675,7 +7675,7 @@ msgstr "Transactions IEEE"
 #: lib/layouts/scrlttr2.layout:19 lib/layouts/siamltex.layout:37
 #: lib/layouts/sigplanconf.layout:41 lib/layouts/simplecv.layout:18
 #: lib/layouts/slides.layout:61 lib/layouts/stdclass.inc:28
-#: lib/layouts/stdinsets.inc:687 lib/layouts/stdletter.inc:12
+#: lib/layouts/stdinsets.inc:688 lib/layouts/stdletter.inc:12
 #: lib/layouts/svcommon.inc:26 lib/layouts/tufte-book.layout:35
 #: src/insets/InsetRef.cpp:597
 msgid "Standard"
@@ -7920,7 +7920,7 @@ msgstr "Titre court pour l'annexe"
 #: lib/layouts/scrreprt.layout:12 lib/layouts/scrreprt.layout:14
 #: lib/layouts/siamltex.layout:339 lib/layouts/simplecv.layout:196
 #: lib/layouts/stdstruct.inc:59 lib/layouts/svcommon.inc:657
-#: lib/layouts/tufte-book.layout:292 lib/layouts/tufte-book.layout:294
+#: lib/layouts/tufte-book.layout:298 lib/layouts/tufte-book.layout:300
 #: lib/layouts/tufte-handout.layout:77 lib/examples/Articles:0
 #: src/frontends/qt/GuiDocument.cpp:1781 src/insets/InsetBibtex.cpp:957
 msgid "Bibliography"
@@ -8498,9 +8498,9 @@ msgstr "Autre affiliation :"
 msgid "And"
 msgstr "Et"
 
-#: lib/layouts/aastex.layout:256 src/frontends/qt/GuiDocument.cpp:3144
-#: src/frontends/qt/GuiDocument.cpp:3156 src/frontends/qt/GuiDocument.cpp:3282
-#: src/frontends/qt/GuiDocument.cpp:3301
+#: lib/layouts/aastex.layout:256 src/frontends/qt/GuiDocument.cpp:3148
+#: src/frontends/qt/GuiDocument.cpp:3160 src/frontends/qt/GuiDocument.cpp:3286
+#: src/frontends/qt/GuiDocument.cpp:3305
 msgid "and"
 msgstr "et"
 
@@ -8757,7 +8757,7 @@ msgstr "American Chemical Society (ACS)"
 #: lib/layouts/scrclass.inc:142 lib/layouts/scrclass.inc:155
 #: lib/layouts/scrclass.inc:168 lib/layouts/scrclass.inc:324
 #: lib/layouts/scrclass.inc:349 lib/layouts/siamltex.layout:206
-#: lib/layouts/simplecv.layout:52 lib/layouts/stdinsets.inc:694
+#: lib/layouts/simplecv.layout:52 lib/layouts/stdinsets.inc:695
 #: lib/layouts/stdsections.inc:32 lib/layouts/stdsections.inc:76
 #: lib/layouts/stdsections.inc:117 lib/layouts/tufte-book.layout:98
 #: lib/layouts/tufte-book.layout:129 lib/layouts/tufte-handout.layout:40
@@ -9222,7 +9222,7 @@ msgstr "Fi)gure en marge (uniquement sigchi-a)"
 
 #: lib/layouts/acmart.layout:526 lib/layouts/beamer.layout:1726
 #: lib/layouts/powerdot.layout:577 lib/layouts/sciposter.layout:109
-#: lib/layouts/stdfloats.inc:33 lib/layouts/tufte-book.layout:286
+#: lib/layouts/stdfloats.inc:33 lib/layouts/tufte-book.layout:292
 msgid "List of Figures"
 msgstr "Liste des figures"
 
@@ -9232,7 +9232,7 @@ msgstr "Tableau en marge (uniquement sigchi-a)"
 
 #: lib/layouts/acmart.layout:539 lib/layouts/beamer.layout:1713
 #: lib/layouts/powerdot.layout:560 lib/layouts/sciposter.layout:123
-#: lib/layouts/stdfloats.inc:18 lib/layouts/tufte-book.layout:270
+#: lib/layouts/stdfloats.inc:18 lib/layouts/tufte-book.layout:276
 msgid "List of Tables"
 msgstr "Liste des tableaux"
 
@@ -9753,7 +9753,7 @@ msgstr "Section-spéciale*"
 
 #: lib/layouts/amsart.layout:98 lib/layouts/beamer.layout:334
 #: lib/layouts/beamer.layout:396 lib/layouts/beamer.layout:458
-#: lib/layouts/memoir.layout:248 lib/layouts/stdinsets.inc:712
+#: lib/layouts/memoir.layout:248 lib/layouts/stdinsets.inc:713
 #: lib/layouts/stdstarsections.inc:15 lib/layouts/stdstarsections.inc:30
 #: lib/layouts/stdstarsections.inc:45 lib/layouts/stdstarsections.inc:60
 #: lib/layouts/stdstarsections.inc:75 lib/layouts/stdstarsections.inc:90
@@ -9973,13 +9973,13 @@ msgid "Centered"
 msgstr "Centré"
 
 #: lib/layouts/apa.layout:285 lib/layouts/apax.inc:384
-#: lib/layouts/stdinsets.inc:688 src/insets/InsetCaption.cpp:436
+#: lib/layouts/stdinsets.inc:689 src/insets/InsetCaption.cpp:436
 msgid "standard"
 msgstr "standard"
 
 #: lib/layouts/apa.layout:292 lib/layouts/apax.inc:391
 #: lib/layouts/scrclass.inc:325 lib/layouts/scrclass.inc:350
-#: lib/layouts/stdinsets.inc:695
+#: lib/layouts/stdinsets.inc:696
 msgid "The caption as it appears in the list of figures/tables"
 msgstr "La légende telle qu'elle apparaîtra dans la liste des figures/tableaux"
 
@@ -12971,8 +12971,8 @@ msgid "Fixme Error"
 msgstr "Erreur Fixme"
 
 #: lib/layouts/fixme.module:83 src/frontends/qt/GuiCompare.cpp:199
-#: src/frontends/qt/GuiDocument.cpp:2857 src/frontends/qt/GuiDocument.cpp:2931
-#: src/frontends/qt/GuiDocument.cpp:4828
+#: src/frontends/qt/GuiDocument.cpp:2861 src/frontends/qt/GuiDocument.cpp:2935
+#: src/frontends/qt/GuiDocument.cpp:4832
 msgid "Error"
 msgstr "Erreur"
 
@@ -17309,11 +17309,11 @@ msgstr "NoteDeBasDePage # #"
 msgid "\\fnsymbol{thanks}"
 msgstr "\\fnsymbol{thanks}"
 
-#: lib/layouts/stdfloatnames.inc:5 lib/layouts/stdinsets.inc:558
+#: lib/layouts/stdfloatnames.inc:5 lib/layouts/stdinsets.inc:559
 msgid "Tables"
 msgstr "Tableaux"
 
-#: lib/layouts/stdfloatnames.inc:6 lib/layouts/stdinsets.inc:559
+#: lib/layouts/stdfloatnames.inc:6 lib/layouts/stdinsets.inc:560
 msgid "Figures"
 msgstr "Figures"
 
@@ -17365,49 +17365,49 @@ msgstr "bas"
 msgid "Greyedout"
 msgstr "Grisée"
 
-#: lib/layouts/stdinsets.inc:207 src/insets/InsetERT.cpp:189
+#: lib/layouts/stdinsets.inc:208 src/insets/InsetERT.cpp:189
 #: src/insets/InsetERT.cpp:190
 msgid "ERT"
 msgstr "TeX"
 
-#: lib/layouts/stdinsets.inc:293 lib/layouts/stdinsets.inc:299
+#: lib/layouts/stdinsets.inc:294 lib/layouts/stdinsets.inc:300
 msgid "Listings[[List of Listings]]"
 msgstr "Liste des listings"
 
-#: lib/layouts/stdinsets.inc:316 lib/layouts/stdinsets.inc:322
+#: lib/layouts/stdinsets.inc:317 lib/layouts/stdinsets.inc:323
 #: src/insets/InsetTOC.cpp:77
 msgid "List of Listings"
 msgstr "Liste des listings"
 
-#: lib/layouts/stdinsets.inc:350 src/frontends/qt/GuiDocument.cpp:1786
+#: lib/layouts/stdinsets.inc:351 src/frontends/qt/GuiDocument.cpp:1786
 msgid "Listings[[inset]]"
 msgstr "Listings"
 
-#: lib/layouts/stdinsets.inc:417
+#: lib/layouts/stdinsets.inc:418
 msgid "Idx"
 msgstr "Idx"
 
-#: lib/layouts/stdinsets.inc:608
+#: lib/layouts/stdinsets.inc:609
 msgid "Argument"
 msgstr "Argument"
 
-#: lib/layouts/stdinsets.inc:714
+#: lib/layouts/stdinsets.inc:715
 msgid "unlabelled"
 msgstr "sans étiquette"
 
-#: lib/layouts/stdinsets.inc:721
+#: lib/layouts/stdinsets.inc:722
 msgid "Preview"
 msgstr "Aperçu"
 
-#: lib/layouts/stdinsets.inc:755 lib/layouts/stdinsets.inc:763
+#: lib/layouts/stdinsets.inc:756 lib/layouts/stdinsets.inc:764
 msgid "see equation[[nomencl]]"
 msgstr "voir équation"
 
-#: lib/layouts/stdinsets.inc:756 lib/layouts/stdinsets.inc:764
+#: lib/layouts/stdinsets.inc:757 lib/layouts/stdinsets.inc:765
 msgid "page[[nomencl]]"
 msgstr "page"
 
-#: lib/layouts/stdinsets.inc:757 lib/layouts/stdinsets.inc:765
+#: lib/layouts/stdinsets.inc:758 lib/layouts/stdinsets.inc:766
 msgid "Nomenclature[[output]]"
 msgstr "Liste des symboles"
 
@@ -18644,55 +18644,55 @@ msgstr "note latérale"
 msgid "bibl. entry"
 msgstr "entrée biblio"
 
-#: lib/layouts/tufte-book.layout:176
+#: lib/layouts/tufte-book.layout:180
 msgid "Marginnote"
 msgstr "Note en marge"
 
-#: lib/layouts/tufte-book.layout:180
+#: lib/layouts/tufte-book.layout:184
 msgid "marginnote"
 msgstr "note en marge"
 
-#: lib/layouts/tufte-book.layout:189
+#: lib/layouts/tufte-book.layout:194
 msgid "NewThought"
 msgstr "Nouvelle idée"
 
-#: lib/layouts/tufte-book.layout:193
+#: lib/layouts/tufte-book.layout:198
 msgid "new thought"
 msgstr "nouvelle idée"
 
-#: lib/layouts/tufte-book.layout:206
+#: lib/layouts/tufte-book.layout:212
 msgid "AllCaps"
 msgstr "Tout en capitales"
 
-#: lib/layouts/tufte-book.layout:209
+#: lib/layouts/tufte-book.layout:215
 msgid "allcaps"
 msgstr "tout en capitales"
 
-#: lib/layouts/tufte-book.layout:221
+#: lib/layouts/tufte-book.layout:227
 msgid "SmallCaps"
 msgstr "Petites capitales"
 
-#: lib/layouts/tufte-book.layout:224
+#: lib/layouts/tufte-book.layout:230
 msgid "smallcaps"
 msgstr "petites capitales"
 
-#: lib/layouts/tufte-book.layout:232
+#: lib/layouts/tufte-book.layout:238
 msgid "Full Width"
 msgstr "Pleine largeur"
 
-#: lib/layouts/tufte-book.layout:252
+#: lib/layouts/tufte-book.layout:258
 msgid "Margin Figure"
 msgstr "Figures en marge"
 
-#: lib/layouts/tufte-book.layout:256
+#: lib/layouts/tufte-book.layout:262
 msgid "Margin Table"
 msgstr "Tableau en marge"
 
-#: lib/layouts/tufte-book.layout:262
+#: lib/layouts/tufte-book.layout:268
 msgid "MarginTable"
 msgstr "Tableau en marge"
 
-#: lib/layouts/tufte-book.layout:278
+#: lib/layouts/tufte-book.layout:284
 msgid "MarginFigure"
 msgstr "Figure en marge"
 
@@ -19930,19 +19930,19 @@ msgid "Copy as Reference|R"
 msgstr "Copier comme référence|C"
 
 #: lib/ui/stdcontext.inc:61 lib/ui/stdcontext.inc:375 lib/ui/stdmenus.inc:108
-#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1567
+#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1568
 #: src/mathed/InsetMathNest.cpp:555
 msgid "Cut"
 msgstr "Couper"
 
 #: lib/ui/stdcontext.inc:62 lib/ui/stdcontext.inc:376 lib/ui/stdmenus.inc:109
-#: lib/ui/stdtoolbars.inc:87 src/BufferView.cpp:2268
+#: lib/ui/stdtoolbars.inc:87 src/BufferView.cpp:2269
 msgid "Copy"
 msgstr "Copier"
 
 #: lib/ui/stdcontext.inc:63 lib/ui/stdcontext.inc:377 lib/ui/stdmenus.inc:110
 #: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1512
-#: src/frontends/qt/GuiToolbar.cpp:441 src/mathed/InsetMathGrid.cpp:1560
+#: src/frontends/qt/GuiToolbar.cpp:441 src/mathed/InsetMathGrid.cpp:1565
 #: src/mathed/InsetMathNest.cpp:533
 msgid "Paste"
 msgstr "Coller"
@@ -20634,7 +20634,7 @@ msgstr "Désactiver la branche dans le document maître|e"
 
 #: lib/ui/stdcontext.inc:536
 msgid "Invert Inset|I"
-msgstr "Inverser l'insert|I"
+msgstr "Inverser l'insert|v"
 
 #: lib/ui/stdcontext.inc:537
 msgid "Add Unknown Branch|w"
@@ -20705,6 +20705,10 @@ msgid "Giant-sized Icons"
 msgstr "Icônes de taille gigantesque"
 
 #: lib/ui/stdcontext.inc:732
+msgid "Show Zoom Level|Z"
+msgstr "Afficher le degré de zoom|z"
+
+#: lib/ui/stdcontext.inc:733
 msgid "Show Zoom Slider|S"
 msgstr "Afficher la barre de zoom|z"
 
@@ -22279,7 +22283,7 @@ msgid "Big operators"
 msgstr "Grands opérateurs"
 
 #: lib/ui/stdtoolbars.inc:223 lib/ui/stdtoolbars.inc:690
-#: src/frontends/qt/GuiDocument.cpp:5165
+#: src/frontends/qt/GuiDocument.cpp:5169
 msgid "Miscellaneous"
 msgstr "Divers"
 
@@ -27134,7 +27138,7 @@ msgstr "MS Word Office Open XML|O"
 msgid "Table (CSV)"
 msgstr "Tableau (CSV)"
 
-#: lib/configure.py:856 src/frontends/qt/GuiView.cpp:1628
+#: lib/configure.py:856 src/frontends/qt/GuiView.cpp:1657
 #: src/mathed/InsetMathMacroTemplate.cpp:538
 msgid "LyX"
 msgstr "LyX"
@@ -27227,11 +27231,11 @@ msgstr "gnuplot"
 msgid "gnuplot|Gnuplot"
 msgstr "gnuplot|Gnuplot"
 
-#: lib/configure.py:1346
+#: lib/configure.py:1350
 msgid "LyX Archive (zip)"
 msgstr "Archive LyX (zip)"
 
-#: lib/configure.py:1349
+#: lib/configure.py:1353
 msgid "LyX Archive (tar.gz)"
 msgstr "Archive LyX (tar.gz)"
 
@@ -27309,10 +27313,6 @@ msgid "Localization Test"
 msgstr "Test de localisation"
 
 #: lib/examples/Articles:0
-msgid "PDF-form"
-msgstr "Formulaire PDF"
-
-#: lib/examples/Articles:0
 msgid "Noweb Listerrors"
 msgstr "Liste d'erreurs Noweb"
 
@@ -27321,10 +27321,6 @@ msgid "LilyPond Book"
 msgstr "Livre LilyPond"
 
 #: lib/examples/Articles:0
-msgid "Linguisticsnew"
-msgstr "Linguisticsnew"
-
-#: lib/examples/Articles:0
 msgid "Noweb2LyX"
 msgstr "Noweb2LyX"
 
@@ -27686,8 +27682,8 @@ msgid "Overwrite modified file?"
 msgstr "Écraser le fichier modifié ?"
 
 #: src/Buffer.cpp:1458 src/Exporter.cpp:50
-#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiView.cpp:2835
-#: src/frontends/qt/GuiView.cpp:3104 src/frontends/qt/GuiView.cpp:3207
+#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiView.cpp:2865
+#: src/frontends/qt/GuiView.cpp:3134 src/frontends/qt/GuiView.cpp:3237
 msgid "&Overwrite"
 msgstr "É&craser"
 
@@ -27929,7 +27925,7 @@ msgstr "La branche « %1$s » existe déjà."
 msgid "Error viewing the output file."
 msgstr "Erreur lors de l'affichage du fichier imprimable."
 
-#: src/Buffer.cpp:3370 src/frontends/qt/GuiView.cpp:2666
+#: src/Buffer.cpp:3370 src/frontends/qt/GuiView.cpp:2696
 #: src/frontends/qt/Validator.cpp:241 src/insets/ExternalSupport.cpp:394
 #: src/insets/InsetGraphics.cpp:692 src/insets/InsetInclude.cpp:606
 msgid "Invalid filename"
@@ -28016,7 +28012,7 @@ msgstr ""
 msgid "Couldn't export file"
 msgstr "Exportation du fichier impossible"
 
-#: src/Buffer.cpp:4507 src/frontends/qt/GuiView.cpp:2808
+#: src/Buffer.cpp:4507 src/frontends/qt/GuiView.cpp:2838
 msgid "File name error"
 msgstr "Erreur de nom de fichier"
 
@@ -28034,7 +28030,7 @@ msgstr ""
 "devriez enregistrer le fichier dans un répertoire dont le chemin d'accès ne "
 "contient pas d'espaces."
 
-#: src/Buffer.cpp:4597 src/Buffer.cpp:4627 src/frontends/qt/GuiView.cpp:869
+#: src/Buffer.cpp:4597 src/Buffer.cpp:4627 src/frontends/qt/GuiView.cpp:873
 msgid "Document export cancelled."
 msgstr "Export du document annulé."
 
@@ -28186,12 +28182,12 @@ msgstr ""
 msgid "Senseless!!! "
 msgstr "Inapproprié !!! "
 
-#: src/Buffer.cpp:5487
+#: src/Buffer.cpp:5496
 #, c-format
 msgid "Document %1$s reloaded."
 msgstr "Document %1$s rechargé."
 
-#: src/Buffer.cpp:5490
+#: src/Buffer.cpp:5499
 #, c-format
 msgid "Could not reload document %1$s."
 msgstr "Impossible de recharger le document %1$s."
@@ -28306,12 +28302,12 @@ msgid "Document class not available"
 msgstr "Classe de document non disponible"
 
 #: src/BufferParams.cpp:1098 src/Color.cpp:281
-#: src/frontends/qt/GuiDocument.cpp:3534
+#: src/frontends/qt/GuiDocument.cpp:3538
 msgid "greyedout inset text"
 msgstr "texte d'insert grisé"
 
-#: src/BufferParams.cpp:1811 src/BufferParams.cpp:2253 src/Encoding.cpp:253
-#: src/Paragraph.cpp:3007 src/frontends/qt/LaTeXHighlighter.cpp:123
+#: src/BufferParams.cpp:1811 src/BufferParams.cpp:2254 src/Encoding.cpp:253
+#: src/Paragraph.cpp:3012 src/frontends/qt/LaTeXHighlighter.cpp:123
 #: src/frontends/qt/LaTeXHighlighter.cpp:216
 #: src/insets/InsetCommandParams.cpp:508 src/insets/InsetCommandParams.cpp:516
 #: src/insets/InsetGraphics.cpp:886 src/insets/InsetGraphics.cpp:894
@@ -28321,8 +28317,8 @@ msgstr "texte d'insert grisé"
 msgid "LyX Warning: "
 msgstr "Avertissement LyX : "
 
-#: src/BufferParams.cpp:1812 src/BufferParams.cpp:2254 src/Encoding.cpp:254
-#: src/Paragraph.cpp:3008 src/insets/InsetCommandParams.cpp:509
+#: src/BufferParams.cpp:1812 src/BufferParams.cpp:2255 src/Encoding.cpp:254
+#: src/Paragraph.cpp:3013 src/insets/InsetCommandParams.cpp:509
 #: src/insets/InsetCommandParams.cpp:517 src/insets/InsetGraphics.cpp:887
 #: src/insets/InsetGraphics.cpp:895 src/insets/InsetListings.cpp:299
 #: src/insets/InsetListings.cpp:307 src/mathed/MathExtern.cpp:1441
@@ -28353,11 +28349,11 @@ msgstr ""
 "Choisir un encodage approprié (par exemple utf8)\n"
 "ou modifier les options de classe."
 
-#: src/BufferParams.cpp:2267
+#: src/BufferParams.cpp:2268
 msgid "Uncodable character in user preamble"
 msgstr "Caractère incodable dans le préambule utilisateur"
 
-#: src/BufferParams.cpp:2269
+#: src/BufferParams.cpp:2270
 #, c-format
 msgid ""
 "The user preamble of your document contains glyphs that are unknown in the "
@@ -28376,7 +28372,7 @@ msgstr ""
 "Choisir un encodage approprié (par exemple utf8)\n"
 "ou modifier l'orthographe du nom d'auteur."
 
-#: src/BufferParams.cpp:2584
+#: src/BufferParams.cpp:2585
 #, c-format
 msgid ""
 "The layout file:\n"
@@ -28391,11 +28387,11 @@ msgstr ""
 "sera utilisée. LyX ne pourra pas produire\n"
 "un résultat imprimable correct."
 
-#: src/BufferParams.cpp:2590
+#: src/BufferParams.cpp:2591
 msgid "Document class not found"
 msgstr "Classe de document introuvable"
 
-#: src/BufferParams.cpp:2597
+#: src/BufferParams.cpp:2598
 #, c-format
 msgid ""
 "Due to some error in it, the layout file:\n"
@@ -28410,23 +28406,23 @@ msgstr ""
 "sera utilisée. LyX ne pourra pas produire\n"
 "un résultat imprimable correct."
 
-#: src/BufferParams.cpp:2603 src/BufferView.cpp:1424 src/BufferView.cpp:1456
+#: src/BufferParams.cpp:2604 src/BufferView.cpp:1424 src/BufferView.cpp:1456
 msgid "Could not load class"
 msgstr "Chargement de la classe impossible"
 
-#: src/BufferParams.cpp:2648
+#: src/BufferParams.cpp:2649
 msgid "Error reading internal layout information"
 msgstr "Erreur de lecture du format interne"
 
-#: src/BufferParams.cpp:2649 src/TextClass.cpp:1952 src/TextClass.cpp:1985
+#: src/BufferParams.cpp:2650 src/TextClass.cpp:1952 src/TextClass.cpp:1985
 msgid "Read Error"
 msgstr "Erreur de lecture"
 
-#: src/BufferParams.cpp:3651
+#: src/BufferParams.cpp:3655
 msgid "No bibliography processor found!"
 msgstr "Aucun processeur bibliographique n'a été trouvé !"
 
-#: src/BufferParams.cpp:3653
+#: src/BufferParams.cpp:3657
 #, c-format
 msgid ""
 "The bibliography processor requested by this document (%1$s) is not "
@@ -28439,11 +28435,11 @@ msgstr ""
 "bibliographie ni références ne seront créées.\n"
 "Merci de réparer votre installation !"
 
-#: src/BufferParams.cpp:3661
+#: src/BufferParams.cpp:3665
 msgid "Requested bibliography processor not found!"
 msgstr "Processeur bibliographique requis introuvable !"
 
-#: src/BufferParams.cpp:3663
+#: src/BufferParams.cpp:3667
 #, c-format
 msgid ""
 "The bibliography processor requested by this document (%1$s) is not "
@@ -28482,8 +28478,8 @@ msgstr "Le document a été modifié par une application externe"
 msgid "This portion of the document is deleted."
 msgstr "Cette portion du document est supprimée."
 
-#: src/BufferView.cpp:1191 src/BufferView.cpp:2253
-#: src/frontends/qt/GuiView.cpp:4256 src/frontends/qt/GuiView.cpp:4344
+#: src/BufferView.cpp:1191 src/BufferView.cpp:2254
+#: src/frontends/qt/GuiView.cpp:4286 src/frontends/qt/GuiView.cpp:4374
 msgid "Absolute filename expected."
 msgstr "Chemin absolu requis."
 
@@ -28559,7 +28555,7 @@ msgstr "Un caractère (espaces exclus)"
 msgid "Statistics"
 msgstr "Statistiques"
 
-#: src/BufferView.cpp:2111
+#: src/BufferView.cpp:2112
 #, c-format
 msgid ""
 "`inset-forall' interrupted because number of actions is larger than %1$d"
@@ -28567,35 +28563,35 @@ msgstr ""
 "Interruption de « inset-forall » du fait d'un nombre d'actions supérieur à "
 "%1$d"
 
-#: src/BufferView.cpp:2113
+#: src/BufferView.cpp:2114
 #, c-format
 msgid "Applied \"%1$s\" to %2$d insets"
 msgstr "\"%1$s\" appliqué à %2$d inserts"
 
-#: src/BufferView.cpp:2121
+#: src/BufferView.cpp:2122
 msgid "Branch name"
 msgstr "Nom de la branche"
 
-#: src/BufferView.cpp:2128 src/frontends/qt/GuiBranches.cpp:225
+#: src/BufferView.cpp:2129 src/frontends/qt/GuiBranches.cpp:225
 msgid "Branch already exists"
 msgstr "La branche existe déjà"
 
-#: src/BufferView.cpp:3055
+#: src/BufferView.cpp:3056
 #, c-format
 msgid "Inserting document %1$s..."
 msgstr "Insertion du document %1$s..."
 
-#: src/BufferView.cpp:3071
+#: src/BufferView.cpp:3072
 #, c-format
 msgid "Document %1$s inserted."
 msgstr "Document %1$s inséré."
 
-#: src/BufferView.cpp:3073
+#: src/BufferView.cpp:3074
 #, c-format
 msgid "Could not insert document %1$s"
 msgstr "Impossible d'insérer le document %1$s"
 
-#: src/BufferView.cpp:3571
+#: src/BufferView.cpp:3572
 #, c-format
 msgid ""
 "Could not read the specified document\n"
@@ -28606,11 +28602,11 @@ msgstr ""
 "%1$s\n"
 "à cause de l'erreur : %2$s"
 
-#: src/BufferView.cpp:3573
+#: src/BufferView.cpp:3574
 msgid "Could not read file"
 msgstr "Lecture du fichier impossible"
 
-#: src/BufferView.cpp:3580
+#: src/BufferView.cpp:3581
 #, c-format
 msgid ""
 "%1$s\n"
@@ -28619,17 +28615,17 @@ msgstr ""
 "%1$s\n"
 "est illisible."
 
-#: src/BufferView.cpp:3581 src/frontends/qt/qt_helpers.cpp:311
+#: src/BufferView.cpp:3582 src/frontends/qt/qt_helpers.cpp:311
 #: src/frontends/qt/qt_helpers.cpp:314 src/frontends/qt/qt_helpers.cpp:320
 #: src/output.cpp:39
 msgid "Could not open file"
 msgstr "Ouverture du fichier impossible"
 
-#: src/BufferView.cpp:3588
+#: src/BufferView.cpp:3589
 msgid "Reading not UTF-8 encoded file"
 msgstr "Lecture d'un fichier non encodé en UTF-8"
 
-#: src/BufferView.cpp:3589
+#: src/BufferView.cpp:3590
 msgid ""
 "The file is not UTF-8 encoded.\n"
 "It will be read as local 8Bit-encoded.\n"
@@ -29219,11 +29215,11 @@ msgstr "&Toujours autoriser pour ce document"
 msgid "&Always run for this document"
 msgstr "Toujours ex&écuter pour ce document"
 
-#: src/Converter.cpp:441 src/Converter.cpp:686 src/Converter.cpp:715
+#: src/Converter.cpp:441 src/Converter.cpp:687 src/Converter.cpp:716
 msgid "Converter killed"
 msgstr "Convertisseur interrompu"
 
-#: src/Converter.cpp:442 src/Converter.cpp:687 src/Converter.cpp:716
+#: src/Converter.cpp:442 src/Converter.cpp:688 src/Converter.cpp:717
 #, c-format
 msgid ""
 "The following converter was killed by the user.\n"
@@ -29232,8 +29228,8 @@ msgstr ""
 "Le convertisseur suivant a été interrompu par l'utilisateur.\n"
 " %1$s\n"
 
-#: src/Converter.cpp:461 src/Converter.cpp:744 src/Converter.cpp:767
-#: src/Converter.cpp:809
+#: src/Converter.cpp:461 src/Converter.cpp:745 src/Converter.cpp:768
+#: src/Converter.cpp:810
 msgid "Cannot convert file"
 msgstr "Conversion du fichier impossible"
 
@@ -29273,15 +29269,15 @@ msgstr ""
 "\n"
 "où « pilote » est le nom du pilote."
 
-#: src/Converter.cpp:662 src/Format.cpp:708 src/Format.cpp:778
+#: src/Converter.cpp:663 src/Format.cpp:708 src/Format.cpp:778
 msgid "Executing command: "
 msgstr "Exécution de la commande : "
 
-#: src/Converter.cpp:727
+#: src/Converter.cpp:728
 msgid "Process Killed"
 msgstr "Processus interrompu"
 
-#: src/Converter.cpp:728
+#: src/Converter.cpp:729
 #, c-format
 msgid ""
 "The conversion process was killed while running:\n"
@@ -29290,11 +29286,11 @@ msgstr ""
 "Le processus de conversion a été interrompu lors de l'exécution :\n"
 "%1$s"
 
-#: src/Converter.cpp:733
+#: src/Converter.cpp:734
 msgid "Process Timed Out"
 msgstr "Délai d'exécution du processus expiré"
 
-#: src/Converter.cpp:734
+#: src/Converter.cpp:735
 #, c-format
 msgid ""
 "The conversion process:\n"
@@ -29305,15 +29301,15 @@ msgstr ""
 "%1$s\n"
 "a expiré avant la fin."
 
-#: src/Converter.cpp:739
+#: src/Converter.cpp:740
 msgid "Build errors"
 msgstr "Erreurs de compilation"
 
-#: src/Converter.cpp:740
+#: src/Converter.cpp:741
 msgid "There were errors during the build process."
 msgstr "Il y a eu des erreurs pendant la compilation."
 
-#: src/Converter.cpp:745
+#: src/Converter.cpp:746
 #, c-format
 msgid ""
 "An error occurred while running:\n"
@@ -29322,38 +29318,38 @@ msgstr ""
 "Une erreur s'est produite lors de l'exécution :\n"
 "%1$s"
 
-#: src/Converter.cpp:768
+#: src/Converter.cpp:769
 #, c-format
 msgid "Could not move a temporary directory from %1$s to %2$s."
 msgstr "Impossible de déplacer un répertoire temporaire de %1$s à %2$s."
 
-#: src/Converter.cpp:811
+#: src/Converter.cpp:812
 #, c-format
 msgid "Could not copy a temporary file from %1$s to %2$s."
 msgstr "Impossible de copier un fichier temporaire de %1$s vers %2$s."
 
-#: src/Converter.cpp:812
+#: src/Converter.cpp:813
 #, c-format
 msgid "Could not move a temporary file from %1$s to %2$s."
 msgstr "Impossible de déplacer un fichier temporaire de %1$s à %2$s."
 
-#: src/Converter.cpp:852
+#: src/Converter.cpp:853
 msgid "Running LaTeX..."
 msgstr "Exécution de LaTeX..."
 
-#: src/Converter.cpp:869
+#: src/Converter.cpp:870
 msgid "Export canceled"
 msgstr "Exportation annulée"
 
-#: src/Converter.cpp:870
+#: src/Converter.cpp:871
 msgid "The export process was terminated by the user."
 msgstr "Le processus d'exportation a été interrompu par l'utilisateur."
 
-#: src/Converter.cpp:880
+#: src/Converter.cpp:881
 msgid "Undefined reference"
 msgstr "Référence indéfinie"
 
-#: src/Converter.cpp:881
+#: src/Converter.cpp:882
 msgid ""
 "Undefined references or citations were found during the build.\n"
 "Please check the warnings in the LaTeX log (Document > LaTeX Log)."
@@ -29363,7 +29359,7 @@ msgstr ""
 "Veuillez vérifier les avertissements dans le journal LaTeX (Document > "
 "Fichier journal)."
 
-#: src/Converter.cpp:893
+#: src/Converter.cpp:894
 #, c-format
 msgid ""
 "LaTeX did not run successfully. Additionally, LyX could not locate the LaTeX "
@@ -29372,11 +29368,11 @@ msgstr ""
 "LaTeX ne s'est pas exécuté correctement. En plus, LyX n'a pas pu trouver le "
 "fichier journal LaTeX %1$s."
 
-#: src/Converter.cpp:896 src/Converter.cpp:903
+#: src/Converter.cpp:897 src/Converter.cpp:904
 msgid "LaTeX failed"
 msgstr "Échec de LaTeX"
 
-#: src/Converter.cpp:899
+#: src/Converter.cpp:900
 #, c-format
 msgid ""
 "The external program\n"
@@ -29389,11 +29385,11 @@ msgstr ""
 "s'est terminé avec une erreur. Il est recommandé de corriger l'origine de "
 "l'erreur du programme externe (vérifier les journaux). "
 
-#: src/Converter.cpp:905
+#: src/Converter.cpp:906
 msgid "Output is empty"
 msgstr "La sortie est vide"
 
-#: src/Converter.cpp:906
+#: src/Converter.cpp:907
 msgid "No output file was generated."
 msgstr "Aucun fichier imprimable créé."
 
@@ -29502,7 +29498,7 @@ msgstr "&Conserver le fichier"
 msgid "Overwrite &all"
 msgstr "Écraser &tout"
 
-#: src/Exporter.cpp:51 src/frontends/qt/GuiView.cpp:789
+#: src/Exporter.cpp:51 src/frontends/qt/GuiView.cpp:793
 msgid "&Cancel export"
 msgstr "&Annuler l'exportation"
 
@@ -29526,17 +29522,17 @@ msgid "Number %1$s"
 msgstr "Numéro %1$s"
 
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:148
-#: src/frontends/qt/GuiDocument.cpp:4890 src/frontends/qt/GuiListings.cpp:167
+#: src/frontends/qt/GuiDocument.cpp:4894 src/frontends/qt/GuiListings.cpp:167
 msgid "Roman"
 msgstr "Romain"
 
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:4890 src/frontends/qt/GuiListings.cpp:167
+#: src/frontends/qt/GuiDocument.cpp:4894 src/frontends/qt/GuiListings.cpp:167
 msgid "Sans Serif"
 msgstr "Sans empattement"
 
 #: src/FontInfo.cpp:43 src/frontends/qt/GuiCharacter.cpp:150
-#: src/frontends/qt/GuiDocument.cpp:4890 src/frontends/qt/GuiListings.cpp:167
+#: src/frontends/qt/GuiDocument.cpp:4894 src/frontends/qt/GuiListings.cpp:167
 msgid "Typewriter"
 msgstr "Chasse fixe"
 
@@ -29620,7 +29616,7 @@ msgstr "Nom propre %1$s, "
 msgid "Cannot view file"
 msgstr "Visionnement du fichier impossible"
 
-#: src/Format.cpp:633 src/frontends/qt/GuiView.cpp:3946
+#: src/Format.cpp:633 src/frontends/qt/GuiView.cpp:3976
 #, c-format
 msgid "File does not exist: %1$s"
 msgstr "Fichier inexistant : %1$s"
@@ -30089,7 +30085,7 @@ msgstr "Il manque le nom du fichier à importer pour --import"
 
 # Trouver un meilleur exemple !
 # Je n'en trouve pas en français... JPC
-#: src/LyXRC.cpp:3073
+#: src/LyXRC.cpp:3106
 msgid ""
 "Consider run-together words, such as \"diskdrive\" for \"disk drive\", as "
 "legal words?"
@@ -30097,13 +30093,13 @@ msgstr ""
 "Autoriser ou non les mots composés accolés, comme « diskdrive » pour « disk "
 "drive » ?"
 
-#: src/LyXRC.cpp:3077
+#: src/LyXRC.cpp:3110
 msgid ""
 "Specify an alternate language. The default is to use the language of the "
 "document."
 msgstr "Spécifier une autre langue. La langue implicite est celle du document."
 
-#: src/LyXRC.cpp:3085
+#: src/LyXRC.cpp:3118
 msgid ""
 "De-select if you don't want the current selection to be replaced "
 "automatically by what you type."
@@ -30111,7 +30107,7 @@ msgstr ""
 "Désélectionner si vous ne voulez pas que le texte sélectionné soit remplacé "
 "automatiquement par ce que vous tapez."
 
-#: src/LyXRC.cpp:3089
+#: src/LyXRC.cpp:3122
 msgid ""
 "De-select if you don't want the class options to be reset to defaults after "
 "class change."
@@ -30119,14 +30115,14 @@ msgstr ""
 "Désélectionner si vous ne voulez pas que les options de classe soient "
 "réinitialisées aux valeurs implicites après un changement de classe."
 
-#: src/LyXRC.cpp:3093
+#: src/LyXRC.cpp:3126
 msgid ""
 "The time interval between auto-saves (in seconds). 0 means no auto-save."
 msgstr ""
 "Intervalle de temps entre deux sauvegardes automatiques (en secondes). 0 "
 "signifie pas de sauvegarde automatique."
 
-#: src/LyXRC.cpp:3100
+#: src/LyXRC.cpp:3133
 msgid ""
 "The path for storing backup files. If it is an empty string, LyX will store "
 "the backup file in the same directory as the original file."
@@ -30134,7 +30130,7 @@ msgstr ""
 "Répertoire dans lequel mettre les copies de sauvegarde. Si laissé vide, LyX "
 "mettra la copie de sauvegarde dans le même répertoire que l'original."
 
-#: src/LyXRC.cpp:3104
+#: src/LyXRC.cpp:3137
 msgid ""
 "Define the options of bibtex (cf. man bibtex) or select an alternative "
 "compiler (e.g. mlbibtex or bibulus)."
@@ -30142,11 +30138,11 @@ msgstr ""
 "Définir les options de bibtex (voir man bibtex) ou sélectionner un autre "
 "compilateur (par ex. mlbibtex ou bibulus)."
 
-#: src/LyXRC.cpp:3108
+#: src/LyXRC.cpp:3141
 msgid "Define the options of the bibtex program for PLaTeX (Japanese LaTeX)."
 msgstr "Définir les options du programme BibTeX pour PLaTeX (LaTeX japonais)."
 
-#: src/LyXRC.cpp:3112
+#: src/LyXRC.cpp:3145
 msgid ""
 "Keybindings file. Can either specify an absolute path, or LyX will look in "
 "its global and local bind/ directories."
@@ -30154,11 +30150,11 @@ msgstr ""
 "Fichier de raccourcis clavier (bind). Vous pouvez mettre son chemin absolu, "
 "ou bien LyX cherchera dans ses répertoires bind/ global et local."
 
-#: src/LyXRC.cpp:3116
+#: src/LyXRC.cpp:3149
 msgid "Select to check whether the lastfiles still exist."
 msgstr "Sélectionner pour vérifier si les fichiers récents existent toujours."
 
-#: src/LyXRC.cpp:3120
+#: src/LyXRC.cpp:3153
 msgid ""
 "Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -"
 "n38\" Refer to the ChkTeX documentation."
@@ -30166,7 +30162,7 @@ msgstr ""
 "Définir comment lancer chktex. Par ex. « chktex -n11 -n1 -n3 -n6 -n9 -n22 -"
 "n25 -n30 -n38 ». Voir la documentation de ChkTeX."
 
-#: src/LyXRC.cpp:3127
+#: src/LyXRC.cpp:3160
 msgid ""
 "Forbid use of external converters with 'needauth' option to prevent "
 "undesired effects."
@@ -30174,7 +30170,7 @@ msgstr ""
 "Interdire l'utilisation de convertisseurs externes dotés de l'option "
 "'needauth' pour éviter des effets indésirables."
 
-#: src/LyXRC.cpp:3131
+#: src/LyXRC.cpp:3164
 msgid ""
 "Ask user before calling external converters with 'needauth' option to "
 "prevent undesired effects."
@@ -30182,7 +30178,7 @@ msgstr ""
 "Demander à l'utilisateur avant d'appeler des convertisseurs externes dotés "
 "de l'option 'needauth' pour éviter des effets indésirables."
 
-#: src/LyXRC.cpp:3138
+#: src/LyXRC.cpp:3171
 msgid ""
 "LyX normally doesn't update the cursor position if you move the scrollbar. "
 "Set to true if you'd prefer to always have the cursor on screen."
@@ -30191,7 +30187,7 @@ msgstr ""
 "déplacez avec la barre de défilement. Cochez si vous préférez avoir toujours "
 "le curseur à l'écran."
 
-#: src/LyXRC.cpp:3146
+#: src/LyXRC.cpp:3179
 msgid ""
 "LyX normally doesn't allow the user to scroll further than the bottom of the "
 "document. Set to true if you prefer to scroll the bottom of the document to "
@@ -30201,15 +30197,15 @@ msgstr ""
 "Positionnez sur « vrai » si vous préférez voir la fin du document en haut de "
 "la fenêtre"
 
-#: src/LyXRC.cpp:3150
+#: src/LyXRC.cpp:3183
 msgid "Make Apple key act as Meta and Control key as Ctrl."
 msgstr "Faire agir la touche Apple comme Meta et la touche Control comme Ctrl."
 
-#: src/LyXRC.cpp:3154
+#: src/LyXRC.cpp:3187
 msgid "Use the Mac OS X conventions for cursor movement"
 msgstr "Utiliser la convention Mac OS X pour les mouvements du curseur"
 
-#: src/LyXRC.cpp:3158
+#: src/LyXRC.cpp:3191
 msgid ""
 "Show a small box around a Math Macro with the macro name when the cursor is "
 "inside."
@@ -30217,7 +30213,7 @@ msgstr ""
 "Afficher une petite boîte autour d'une macro mathématique avec le nom de la "
 "macro quand le curseur est à l'intérieur."
 
-#: src/LyXRC.cpp:3162
+#: src/LyXRC.cpp:3195
 msgid ""
 "Command definition file. Can either specify an absolute path, or LyX will "
 "look in its global and local commands/ directories."
@@ -30225,18 +30221,18 @@ msgstr ""
 "Fichier de définition de commandes. Vous pouvez mettre son chemin absolu, ou "
 "bien LyX cherchera dans ses répertoires commands/ global et local."
 
-#: src/LyXRC.cpp:3166
+#: src/LyXRC.cpp:3199
 msgid ""
 "The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts."
 msgstr ""
 "Format implicite utilisé avec LFUN_BUFFER_[VIEW|UPDATE] avec des polices non-"
 "TeX."
 
-#: src/LyXRC.cpp:3170
+#: src/LyXRC.cpp:3203
 msgid "The default format used with LFUN_BUFFER_[VIEW|UPDATE]."
 msgstr "Format implicite utilisé avec LFUN_BUFFER_[VIEW|UPDATE]."
 
-#: src/LyXRC.cpp:3174
+#: src/LyXRC.cpp:3207
 msgid ""
 "Iconify the dialogs when the main window is iconified. (Affects only dialogs "
 "shown after the change has been made.)"
@@ -30244,11 +30240,11 @@ msgstr ""
 "Iconifier les fenêtres auxiliaires quand la fenêtre principale. (N'affecte "
 "que les fenêtres affichées après que le changement a été fait.)"
 
-#: src/LyXRC.cpp:3178
+#: src/LyXRC.cpp:3211
 msgid "Select how LyX will display any graphics."
 msgstr "Déterminer comment LyX affiche tous les graphiques."
 
-#: src/LyXRC.cpp:3182
+#: src/LyXRC.cpp:3215
 msgid ""
 "The default path for your documents. An empty value selects the directory "
 "LyX was started from."
@@ -30256,11 +30252,11 @@ msgstr ""
 "Chemin implicite pour vos documents. Si la valeur est vide, ce sera le "
 "répertoire dans lequel LyX a été lancé."
 
-#: src/LyXRC.cpp:3186
+#: src/LyXRC.cpp:3219
 msgid "Specify additional chars that can be part of a word."
 msgstr "Spécifier des caractères spéciaux pouvant faire partie d'un mot."
 
-#: src/LyXRC.cpp:3190
+#: src/LyXRC.cpp:3223
 msgid ""
 "The path that LyX will set when offering to choose an example. An empty "
 "value selects the directory LyX was started from."
@@ -30268,7 +30264,7 @@ msgstr ""
 "Chemin dans lequel LyX proposera un choix d'exemples. Si la valeur est vide, "
 "ce sera le répertoire dans lequel LyX a été lancé."
 
-#: src/LyXRC.cpp:3197
+#: src/LyXRC.cpp:3230
 msgid ""
 "Define the options of makeindex (cf. man makeindex) or select an alternative "
 "compiler. E.g., using xindy/make-rules, the command string would be "
@@ -30278,12 +30274,12 @@ msgstr ""
 "autre compilateur. Par ex., avec xindy / make-rules, la commande serait « "
 "makeindex.sh -m $$lang »."
 
-#: src/LyXRC.cpp:3201
+#: src/LyXRC.cpp:3234
 msgid "Define the options of the index program for PLaTeX (Japanese LaTeX)."
 msgstr ""
 "Définir les options du programme d'indexation pour PLaTeX (LaTeX japonais)."
 
-#: src/LyXRC.cpp:3205
+#: src/LyXRC.cpp:3238
 msgid ""
 "Define the options of makeindex (cf. man makeindex) to be used for "
 "nomenclatures. This might differ from the index processing options."
@@ -30291,13 +30287,13 @@ msgstr ""
 "Définir les options de makeindex (cf. man makeindex) utilisées pour la liste "
 "des symboles. Elles peuvent différer des options utilisées pour l'index."
 
-#: src/LyXRC.cpp:3209
+#: src/LyXRC.cpp:3242
 msgid "The command to run the python pygments syntax highlighter."
 msgstr ""
 "La commande permettant d'exécuter l'accentuation de syntaxe via pygments "
 "(écrit en python)."
 
-#: src/LyXRC.cpp:3218
+#: src/LyXRC.cpp:3251
 msgid ""
 "Use this to set the correct mapping file for your keyboard. You'll need this "
 "if you for instance want to type German documents on an American keyboard."
@@ -30305,18 +30301,18 @@ msgstr ""
 "Choix du fichier de réaffectation clavier. Vous en avez besoin si vous tapez "
 "par exemple des documents en allemand sur un clavier français."
 
-#: src/LyXRC.cpp:3222
+#: src/LyXRC.cpp:3255
 msgid ""
 "Select if a language switching command is needed at the beginning of the "
 "document."
 msgstr "Sélectionner s'il faut une commande de langue au début du document."
 
-#: src/LyXRC.cpp:3226
+#: src/LyXRC.cpp:3259
 msgid ""
 "Select if a language switching command is needed at the end of the document."
 msgstr "Sélectionner s'il faut une commande de langue à la fin du document."
 
-#: src/LyXRC.cpp:3230
+#: src/LyXRC.cpp:3263
 msgid ""
 "The LaTeX command for changing from the language of the document to another "
 "language. E.g. \\selectlanguage{$$lang} where $$lang is substituted by the "
@@ -30325,15 +30321,15 @@ msgstr ""
 "Commande LaTeX pour passer de la langue du document à une autre langue. Par "
 "exemple \\selectlanguage{$$lang} où $$lang est le nom de la seconde langue."
 
-#: src/LyXRC.cpp:3234
+#: src/LyXRC.cpp:3267
 msgid "The LaTeX command for changing back to the language of the document."
 msgstr "Commande LaTeX pour revenir à la langue du document."
 
-#: src/LyXRC.cpp:3238
+#: src/LyXRC.cpp:3271
 msgid "The LaTeX command for local changing of the language."
 msgstr "Commande LaTeX pour un changement temporaire de langue."
 
-#: src/LyXRC.cpp:3242
+#: src/LyXRC.cpp:3275
 msgid ""
 "De-select if you don't want the language(s) used as an argument to "
 "\\documentclass."
@@ -30341,7 +30337,7 @@ msgstr ""
 "Désélectionner si vous ne voulez pas que la langue soit un paramètre de "
 "\\documentclass."
 
-#: src/LyXRC.cpp:3246
+#: src/LyXRC.cpp:3279
 msgid ""
 "The LaTeX command for loading the language package. E.g. "
 "\"\\usepackage{babel}\", \"\\usepackage{omega}\"."
@@ -30349,7 +30345,7 @@ msgstr ""
 "Commande LaTeX pour charger le paquetage linguistique. Par exemple « "
 "\\usepackage{babel} », « \\usepackage{omega} »."
 
-#: src/LyXRC.cpp:3250
+#: src/LyXRC.cpp:3283
 msgid ""
 "De-select if you don't want babel to be used when the language of the "
 "document is the default language."
@@ -30357,24 +30353,24 @@ msgstr ""
 "Désélectionner si vous ne voulez pas utiliser babel quand la langue du "
 "document est la langue implicite."
 
-#: src/LyXRC.cpp:3254
+#: src/LyXRC.cpp:3287
 msgid "De-select if you do not want LyX to scroll to saved position."
 msgstr ""
 "Désélectionner si vous ne voulez pas que LyX saute à la position qu'il a "
 "enregistré."
 
-#: src/LyXRC.cpp:3258
+#: src/LyXRC.cpp:3291
 msgid "De-select to prevent loading files opened from the last LyX session."
 msgstr ""
 "Décocher pour éviter de charger les fichiers qui étaient ouverts lors de la "
 "dernière session LyX."
 
-#: src/LyXRC.cpp:3262
+#: src/LyXRC.cpp:3295
 msgid "De-select if you don't want LyX to create backup files."
 msgstr ""
 "Désélectionner si vous ne voulez pas que LyX crée des copies de sauvegarde."
 
-#: src/LyXRC.cpp:3266
+#: src/LyXRC.cpp:3299
 msgid ""
 "Select to control the highlighting of words with a language foreign to that "
 "of the document."
@@ -30382,33 +30378,33 @@ msgstr ""
 "Sélectionner pour activer le soulignement des mots dans une langue autre que "
 "celle du document."
 
-#: src/LyXRC.cpp:3274
+#: src/LyXRC.cpp:3307
 msgid "The scrolling speed of the mouse wheel."
 msgstr "Vitesse de défilement de la molette de la souris."
 
-#: src/LyXRC.cpp:3278
+#: src/LyXRC.cpp:3311
 msgid "The completion popup delay."
 msgstr "Temporisation de l'affichage de la fenêtre auxiliaire de complétion."
 
-#: src/LyXRC.cpp:3282
+#: src/LyXRC.cpp:3315
 msgid "Select to display the completion popup in math mode."
 msgstr ""
 "Sélectionner pour afficher la fenêtre auxiliaire de complétion en mode "
 "mathématique."
 
-#: src/LyXRC.cpp:3286
+#: src/LyXRC.cpp:3319
 msgid "Select to display the completion popup in text mode."
 msgstr ""
 "Sélectionner pour afficher la fenêtre auxiliaire de complétion en mode texte."
 
-#: src/LyXRC.cpp:3290
+#: src/LyXRC.cpp:3323
 msgid ""
 "Show the completion popup without delay after non-unique completion attempt."
 msgstr ""
 "Afficher la fenêtre auxiliaire de complétion sans délai après une tentative "
 "de complétion multiple."
 
-#: src/LyXRC.cpp:3294
+#: src/LyXRC.cpp:3327
 msgid ""
 "Show a small triangle on the cursor to indicate that a completion is "
 "available."
@@ -30416,35 +30412,35 @@ msgstr ""
 "Afficher un petit triangle sur le curseur pour indiquer qu'une complétion "
 "est disponible."
 
-#: src/LyXRC.cpp:3298
+#: src/LyXRC.cpp:3331
 msgid "The inline completion delay."
 msgstr "Temporisation de complétion en ligne."
 
-#: src/LyXRC.cpp:3302
+#: src/LyXRC.cpp:3335
 msgid "Select to display the inline completion in math mode."
 msgstr ""
 "Sélectionner pour afficher la complétion en ligne en mode mathématique."
 
-#: src/LyXRC.cpp:3306
+#: src/LyXRC.cpp:3339
 msgid "Select to display the inline completion in text mode."
 msgstr "Sélectionner pour afficher la complétion en ligne en mode texte."
 
-#: src/LyXRC.cpp:3310
+#: src/LyXRC.cpp:3343
 msgid "Use \"...\" to shorten long completions."
 msgstr "Utiliser \"...\" pour raccourcir le complétions longues."
 
-#: src/LyXRC.cpp:3314
+#: src/LyXRC.cpp:3347
 msgid "Allow TeXMacs shorthand, like => converting to \\Rightarrow."
 msgstr "Autoriser les raccourcis TeXMacs, comme => convertie en \\Rightarrow."
 
-#: src/LyXRC.cpp:3318
+#: src/LyXRC.cpp:3351
 #, c-format
 msgid "Maximal number of lastfiles. Up to %1$d can appear in the file menu."
 msgstr ""
 "Nombre maximum de fichiers récents. On peut en avoir jusqu'à %1$d dans le "
 "menu Fichier."
 
-#: src/LyXRC.cpp:3323
+#: src/LyXRC.cpp:3356
 msgid ""
 "Specify those directories which should be prepended to the PATH environment "
 "variable.\n"
@@ -30454,41 +30450,41 @@ msgstr ""
 "d'environnement PATH.\n"
 "Utiliser le format natif du système d'exploitation."
 
-#: src/LyXRC.cpp:3329
+#: src/LyXRC.cpp:3362
 msgid "Shows a typeset preview of things such as math"
 msgstr ""
 "Afficher un aperçu de l'aspect final de certains éléments comme les math"
 
-#: src/LyXRC.cpp:3333
+#: src/LyXRC.cpp:3366
 msgid "Previewed equations will have \"(#)\" labels rather than numbered ones"
 msgstr ""
 "Les équations en aperçu auront des étiquettes « (#) » au lieu d'avoir des "
 "numéros"
 
-#: src/LyXRC.cpp:3337
+#: src/LyXRC.cpp:3370
 msgid "Scale the preview size to suit."
 msgstr "Mettre l'aperçu à l'échelle pour qu'il tienne à l'écran."
 
-#: src/LyXRC.cpp:3341
+#: src/LyXRC.cpp:3374
 msgid "The option to print out in landscape."
 msgstr "Option pour imprimer en format paysage."
 
-#: src/LyXRC.cpp:3345
+#: src/LyXRC.cpp:3378
 msgid "Option to specify the dimensions of the print paper."
 msgstr "Option pour spécifier les dimensions du papier."
 
-#: src/LyXRC.cpp:3349
+#: src/LyXRC.cpp:3382
 msgid "The option to specify paper type."
 msgstr "Option pour spécifier le type de papier."
 
-#: src/LyXRC.cpp:3353
+#: src/LyXRC.cpp:3386
 msgid ""
 "Select to have visual bidi cursor movement, unselect for logical movement."
 msgstr ""
 "Sélectionner pour avoir un mouvement visuel de curseur bidirectionnel, "
 "désélectionner pour un mouvement logique."
 
-#: src/LyXRC.cpp:3357
+#: src/LyXRC.cpp:3390
 msgid ""
 "Specify whether, closing the last view of an open document, LyX should close "
 "the document (yes), hide it (no), or ask the user (ask)."
@@ -30496,7 +30492,7 @@ msgstr ""
 "Spécifier si, en fermant la dernière vue d'un document ouvert, LyX doit "
 "fermer le document (fermer), le cacher (cacher), ou demander (demander)."
 
-#: src/LyXRC.cpp:3361
+#: src/LyXRC.cpp:3394
 msgid ""
 "DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes "
 "wrong, override the setting here."
@@ -30504,12 +30500,12 @@ msgstr ""
 "LyX détecte tout seul la résolution de votre moniteur en DPI (points par "
 "pouce). Si ça ne va pas, changez le réglage ici."
 
-#: src/LyXRC.cpp:3367
+#: src/LyXRC.cpp:3400
 msgid "The screen fonts used to display the text while editing."
 msgstr ""
 "Polices d'écran dans lesquelles s'affiche le texte en cours de modification."
 
-#: src/LyXRC.cpp:3376
+#: src/LyXRC.cpp:3409
 msgid ""
 "Allow bitmap fonts to be resized. If you are using a bitmap font, selecting "
 "this option may make some fonts look blocky in LyX. Deselecting this option "
@@ -30520,12 +30516,12 @@ msgstr ""
 "dans LyX. Si vous décochez cette option, LyX utilise la police bitmap de "
 "taille la plus proche disponible, au lieu de la mettre à l'échelle."
 
-#: src/LyXRC.cpp:3380
+#: src/LyXRC.cpp:3413
 msgid "The font sizes used for calculating the scaling of the screen fonts."
 msgstr ""
 "Tailles de police utilisées pour calculer l'ajustement des polices d'écran."
 
-#: src/LyXRC.cpp:3385
+#: src/LyXRC.cpp:3418
 #, no-c-format
 msgid ""
 "The zoom percentage for screen fonts. A setting of 100% will make the fonts "
@@ -30534,13 +30530,13 @@ msgstr ""
 "Facteur d'agrandissement des polices d'écran. Avec 100% les polices feront à "
 "peu près la même taille que sur le papier."
 
-#: src/LyXRC.cpp:3389
+#: src/LyXRC.cpp:3422
 msgid "Allow session manager to save and restore windows geometry."
 msgstr ""
 "Permettre au gestionnaire de session d'enregistrer et de restaurer la "
 "position des fenêtres."
 
-#: src/LyXRC.cpp:3393
+#: src/LyXRC.cpp:3426
 msgid ""
 "This starts the lyxserver. The pipes get an additional extension \".in\" and "
 "\".out\". Only for advanced users."
@@ -30548,11 +30544,11 @@ msgstr ""
 "Démarrer le serveur LyX. Les tubes reçoivent le suffixe supplémentaire « .in "
 "» et « .out ». Réservé aux utilisateurs expérimentés."
 
-#: src/LyXRC.cpp:3400
+#: src/LyXRC.cpp:3433
 msgid "De-select if you don't want the startup banner."
 msgstr "Désélectionner pour inhiber la bannière de démarrage."
 
-#: src/LyXRC.cpp:3404
+#: src/LyXRC.cpp:3437
 msgid ""
 "LyX will place its temporary directories in this path. They will be deleted "
 "when you quit LyX."
@@ -30560,12 +30556,12 @@ msgstr ""
 "LyX mettra ses répertoires temporaires ici. Ils seront supprimés quand vous "
 "quitterez LyX."
 
-#: src/LyXRC.cpp:3408
+#: src/LyXRC.cpp:3441
 msgid "This is the place where the files of the thesaurus library reside."
 msgstr ""
 "C'est l'endroit où résident les fichiers du dictionnaire des synonymes."
 
-#: src/LyXRC.cpp:3412
+#: src/LyXRC.cpp:3445
 msgid ""
 "The path that LyX will set when offering to choose a template. An empty "
 "value selects the directory LyX was started from."
@@ -30573,7 +30569,7 @@ msgstr ""
 "Chemin dans lequel LyX va chercher les modèles. Si la valeur est vide, ce "
 "sera le répertoire dans lequel LyX a été lancé."
 
-#: src/LyXRC.cpp:3422
+#: src/LyXRC.cpp:3455
 msgid ""
 "Specify those directories which should be prepended to the TEXINPUTS "
 "environment variable.\n"
@@ -30584,7 +30580,7 @@ msgstr ""
 "Un « . » désigne le répertoire courant. Utiliser le format natif du système "
 "d'exploitation."
 
-#: src/LyXRC.cpp:3429
+#: src/LyXRC.cpp:3462
 msgid ""
 "The UI (user interface) file. Can either specify an absolute path, or LyX "
 "will look in its global and local ui/ directories."
@@ -30592,7 +30588,7 @@ msgstr ""
 "Fichier d'interface utilisateur (UI). Vous pouvez mettre son chemin absolu, "
 "ou bien LyX cherchera dans ses répertoires ui/ global et local."
 
-#: src/LyXRC.cpp:3439
+#: src/LyXRC.cpp:3472
 msgid ""
 "Enable use the system colors for some things like main window background and "
 "selection."
@@ -30600,12 +30596,12 @@ msgstr ""
 "Activer les couleurs du système pour quelques objets comme la fenêtre "
 "principale et la sélection."
 
-#: src/LyXRC.cpp:3443
+#: src/LyXRC.cpp:3476
 msgid "Enable the automatic appearance of tool tips in the work area."
 msgstr ""
 "Activer l'affichage automatique des bulles d'aide dans la zone de travail."
 
-#: src/LyXRC.cpp:3447
+#: src/LyXRC.cpp:3480
 msgid "Specify the paper command to DVI viewer (leave empty or use \"-paper\")"
 msgstr ""
 "Spécifier la commande de papier de la visionneuse DVI (laisser vide ou "
@@ -30656,7 +30652,7 @@ msgstr "LyX VC : message de journal"
 msgid "(no log message)"
 msgstr "(aucun message de journal)"
 
-#: src/LyXVC.cpp:252 src/frontends/qt/GuiView.cpp:3809
+#: src/LyXVC.cpp:252 src/frontends/qt/GuiView.cpp:3839
 msgid "LyX VC: Log Message"
 msgstr "LyX VC : Message de journal"
 
@@ -30677,7 +30673,7 @@ msgstr ""
 msgid "Revert to stored version of document?"
 msgstr "Revenir à la version enregistrée du document ?"
 
-#: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4393
+#: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4423
 msgid "&Revert"
 msgstr "&Revenir à la Sauvegarde"
 
@@ -30814,40 +30810,40 @@ msgstr "Déjà en mode « expression régulière »"
 msgid "Regexp editor mode"
 msgstr "Mode « expression régulière »"
 
-#: src/Text3.cpp:1601
+#: src/Text3.cpp:1602
 msgid "Layout "
 msgstr "Environnement "
 
-#: src/Text3.cpp:1602 src/Text3.cpp:2172
+#: src/Text3.cpp:1603 src/Text3.cpp:2173
 msgid " not known"
 msgstr " inconnu"
 
-#: src/Text3.cpp:2171
+#: src/Text3.cpp:2172
 msgid "Table Style "
 msgstr "Style de tableau "
 
-#: src/Text3.cpp:2364 src/frontends/qt/GuiApplication.cpp:1873
+#: src/Text3.cpp:2365 src/frontends/qt/GuiApplication.cpp:1873
 msgid "Missing argument"
 msgstr "Paramètre manquant"
 
-#: src/Text3.cpp:2533
+#: src/Text3.cpp:2534
 msgid "Invalid argument (number exceeds stack size)!"
 msgstr "Argument invalide (le nombre est supérieur à la taille de la pile) !"
 
-#: src/Text3.cpp:2537
+#: src/Text3.cpp:2538
 msgid "Invalid argument (must be a non-negative number)!"
 msgstr "Argument invalide (nombre non négatif obligatoire)"
 
-#: src/Text3.cpp:2542 src/Text3.cpp:2560
+#: src/Text3.cpp:2543 src/Text3.cpp:2561
 #, c-format
 msgid "Text properties applied: %1$s"
 msgstr "Propriétés du texte appliquées : %1$s"
 
-#: src/Text3.cpp:2719
+#: src/Text3.cpp:2720
 msgid "Path to thesaurus directory not set!"
 msgstr "Chemin d'accès au répertoire du thésaurus non précisé !"
 
-#: src/Text3.cpp:2720
+#: src/Text3.cpp:2721
 msgid ""
 "The path to the thesaurus directory has not been specified.\n"
 "The thesaurus is not functional.\n"
@@ -30859,7 +30855,7 @@ msgstr ""
 "Se référer au Guide de l'utilisateur, section 6.15.1, pour\n"
 "les instructions de réglage."
 
-#: src/Text3.cpp:2854 src/Text3.cpp:2865
+#: src/Text3.cpp:2847 src/Text3.cpp:2858
 msgid "Paragraph layout set"
 msgstr "Style du paragraphe redéfini"
 
@@ -31037,7 +31033,7 @@ msgstr "Vérifiez si le paquetage RCS GNU est installé sur votre système."
 #: src/VCBackend.cpp:934 src/VCBackend.cpp:993 src/VCBackend.cpp:1052
 #: src/VCBackend.cpp:1060 src/VCBackend.cpp:1348 src/VCBackend.cpp:1450
 #: src/VCBackend.cpp:1456 src/VCBackend.cpp:1479 src/VCBackend.cpp:1964
-#: src/frontends/qt/GuiView.cpp:3725 src/frontends/qt/GuiView.cpp:3768
+#: src/frontends/qt/GuiView.cpp:3755 src/frontends/qt/GuiView.cpp:3798
 msgid "Revision control error."
 msgstr "Erreur de contrôle de version."
 
@@ -31230,14 +31226,14 @@ msgstr ""
 "Poursuivre ?"
 
 #: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
-#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1891
+#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1895
 #: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
 #: src/lyxfind.cpp:694 src/lyxfind.cpp:722
 msgid "&Yes"
 msgstr "&Oui"
 
 #: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
-#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1891
+#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1895
 #: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
 #: src/lyxfind.cpp:694 src/lyxfind.cpp:722
 msgid "&No"
@@ -31292,7 +31288,7 @@ msgstr ""
 "Le document %1$s est déjà chargé et a été modifié.\n"
 "Voulez-vous revenir à la version enregistrée et ignorer vos modifications ?"
 
-#: src/buffer_funcs.cpp:55 src/frontends/qt/GuiView.cpp:4384
+#: src/buffer_funcs.cpp:55 src/frontends/qt/GuiView.cpp:4414
 msgid "Reload saved document?"
 msgstr "Revenir à la sauvegarde ?"
 
@@ -31378,7 +31374,7 @@ msgid "Cancel"
 msgstr "Annuler"
 
 #: src/frontends/qt/ButtonController.cpp:224
-#: src/frontends/qt/GuiCompare.cpp:191 src/frontends/qt/GuiDelimiter.cpp:412
+#: src/frontends/qt/GuiCompare.cpp:191 src/frontends/qt/GuiDelimiter.cpp:413
 #: src/frontends/qt/GuiSymbols.cpp:348
 msgid "Close"
 msgstr "Fermer"
@@ -31476,8 +31472,8 @@ msgstr ""
 "Entrée)"
 
 #: src/frontends/qt/FloatPlacement.cpp:182
-#: src/frontends/qt/GuiDocument.cpp:1149 src/frontends/qt/GuiDocument.cpp:2717
-#: src/frontends/qt/GuiDocument.cpp:2744
+#: src/frontends/qt/GuiDocument.cpp:1149 src/frontends/qt/GuiDocument.cpp:2721
+#: src/frontends/qt/GuiDocument.cpp:2748
 msgid "Class Default"
 msgstr "Valeurs implicites de la classe"
 
@@ -31600,7 +31596,7 @@ msgstr "À propos de LyX"
 msgid "About %1"
 msgstr "À propos de %1"
 
-#: src/frontends/qt/GuiApplication.cpp:737 src/frontends/qt/GuiPrefs.cpp:3524
+#: src/frontends/qt/GuiApplication.cpp:737 src/frontends/qt/GuiPrefs.cpp:3528
 msgid "Preferences"
 msgstr "Préférences"
 
@@ -31654,7 +31650,7 @@ msgstr "Commande désactivée"
 msgid "Bad debug value `%1$s'."
 msgstr "Valeur de débogage incorrecte « %1$s »."
 
-#: src/frontends/qt/GuiApplication.cpp:1463 src/frontends/qt/GuiView.cpp:2163
+#: src/frontends/qt/GuiApplication.cpp:1463 src/frontends/qt/GuiView.cpp:2192
 msgid "Command not allowed without a buffer open"
 msgstr "Commande non autorisée si aucun tampon n'est ouvert"
 
@@ -31747,16 +31743,16 @@ msgstr "Les valeurs implicites du document ont été enregistrées dans %1$s"
 msgid "Unable to save document defaults"
 msgstr "Impossible d'enregistrer les valeurs implicites du document"
 
-#: src/frontends/qt/GuiApplication.cpp:2468
-#: src/frontends/qt/GuiApplication.cpp:2483
+#: src/frontends/qt/GuiApplication.cpp:2474
+#: src/frontends/qt/GuiApplication.cpp:2489
 msgid "Unknown function."
 msgstr "Fonction inconnue."
 
-#: src/frontends/qt/GuiApplication.cpp:3001
+#: src/frontends/qt/GuiApplication.cpp:3024
 msgid "The current document was closed."
 msgstr "Le document courant était fermé."
 
-#: src/frontends/qt/GuiApplication.cpp:3011
+#: src/frontends/qt/GuiApplication.cpp:3034
 msgid ""
 "LyX has caught an exception, it will now attempt to save all unsaved "
 "documents and exit.\n"
@@ -31768,12 +31764,12 @@ msgstr ""
 "\n"
 "Exception : "
 
-#: src/frontends/qt/GuiApplication.cpp:3015
-#: src/frontends/qt/GuiApplication.cpp:3021
+#: src/frontends/qt/GuiApplication.cpp:3038
+#: src/frontends/qt/GuiApplication.cpp:3044
 msgid "Software exception Detected"
 msgstr "Détection d'une exception logicielle"
 
-#: src/frontends/qt/GuiApplication.cpp:3019
+#: src/frontends/qt/GuiApplication.cpp:3042
 msgid ""
 "LyX has caught some really weird exception, it will now attempt to save all "
 "unsaved documents and exit."
@@ -31781,12 +31777,12 @@ msgstr ""
 "LyX a reçu une exception vraiment sérieuse, il va maintenant essayer "
 "d'enregistrer tous les documents en cours de modification avant de quitter."
 
-#: src/frontends/qt/GuiApplication.cpp:3325
-#: src/frontends/qt/GuiApplication.cpp:3337
+#: src/frontends/qt/GuiApplication.cpp:3348
+#: src/frontends/qt/GuiApplication.cpp:3360
 msgid "Could not find UI definition file"
 msgstr "Fichier descriptif d'interface utilisateur introuvable"
 
-#: src/frontends/qt/GuiApplication.cpp:3326
+#: src/frontends/qt/GuiApplication.cpp:3349
 #, c-format
 msgid ""
 "Error while reading the included file\n"
@@ -31797,11 +31793,11 @@ msgstr ""
 "%1$s.\n"
 "Veuillez vérifier votre installation."
 
-#: src/frontends/qt/GuiApplication.cpp:3332
+#: src/frontends/qt/GuiApplication.cpp:3355
 msgid "Could not find default UI file"
 msgstr "Fichier interface utilisateur implicite introuvable"
 
-#: src/frontends/qt/GuiApplication.cpp:3333
+#: src/frontends/qt/GuiApplication.cpp:3356
 msgid ""
 "LyX could not find the default UI file!\n"
 "Please check your installation."
@@ -31809,7 +31805,7 @@ msgstr ""
 "LyX n'a pu trouver le fichier interface utilisateur implicite !\n"
 "Veuillez vérifier votre installation."
 
-#: src/frontends/qt/GuiApplication.cpp:3338
+#: src/frontends/qt/GuiApplication.cpp:3361
 #, c-format
 msgid ""
 "Error while reading the configuration file\n"
@@ -31918,12 +31914,12 @@ msgstr "toutes les entités de références"
 
 #: src/frontends/qt/GuiBibtex.cpp:456 src/frontends/qt/GuiBibtex.cpp:466
 #: src/frontends/qt/GuiCompare.cpp:163 src/frontends/qt/GuiCompare.cpp:167
-#: src/frontends/qt/GuiDocument.cpp:2895 src/frontends/qt/GuiExternal.cpp:677
-#: src/frontends/qt/GuiGraphics.cpp:789 src/frontends/qt/GuiInclude.cpp:380
+#: src/frontends/qt/GuiDocument.cpp:2899 src/frontends/qt/GuiExternal.cpp:677
+#: src/frontends/qt/GuiGraphics.cpp:826 src/frontends/qt/GuiInclude.cpp:380
 #: src/frontends/qt/GuiLyXFiles.cpp:368 src/frontends/qt/GuiLyXFiles.cpp:374
-#: src/frontends/qt/GuiView.cpp:2575 src/frontends/qt/GuiView.cpp:2634
-#: src/frontends/qt/GuiView.cpp:2774 src/frontends/qt/GuiView.cpp:2908
-#: src/frontends/qt/GuiView.cpp:3028 src/frontends/qt/GuiView.cpp:3150
+#: src/frontends/qt/GuiView.cpp:2605 src/frontends/qt/GuiView.cpp:2664
+#: src/frontends/qt/GuiView.cpp:2804 src/frontends/qt/GuiView.cpp:2938
+#: src/frontends/qt/GuiView.cpp:3058 src/frontends/qt/GuiView.cpp:3180
 msgid "D&ocuments"
 msgstr "Documents|u"
 
@@ -32005,7 +32001,7 @@ msgid "Filename Suffix"
 msgstr "Suffixe du fichier"
 
 #: src/frontends/qt/GuiBranches.cpp:135 src/frontends/qt/GuiBranches.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:3331 src/frontends/qt/GuiDocument.cpp:4626
+#: src/frontends/qt/GuiDocument.cpp:3335 src/frontends/qt/GuiDocument.cpp:4630
 #: src/frontends/qt/GuiProgressView.cpp:144
 #: src/frontends/qt/GuiProgressView.cpp:158
 #: src/frontends/qt/GuiProgressView.cpp:179
@@ -32013,8 +32009,8 @@ msgid "Yes"
 msgstr "Oui"
 
 #: src/frontends/qt/GuiBranches.cpp:135 src/frontends/qt/GuiBranches.cpp:149
-#: src/frontends/qt/GuiDocument.cpp:3330 src/frontends/qt/GuiDocument.cpp:3957
-#: src/frontends/qt/GuiDocument.cpp:4625
+#: src/frontends/qt/GuiDocument.cpp:3334 src/frontends/qt/GuiDocument.cpp:3961
+#: src/frontends/qt/GuiDocument.cpp:4629
 #: src/frontends/qt/GuiProgressView.cpp:110
 #: src/frontends/qt/GuiProgressView.cpp:143
 #: src/frontends/qt/GuiProgressView.cpp:179
@@ -32283,10 +32279,10 @@ msgstr "Fichiers %1$s"
 msgid "Choose a filename to save the pasted graphic as"
 msgstr "Choisir le nom de fichier sous lequel enregistrer le graphique collé"
 
-#: src/frontends/qt/GuiClipboard.cpp:220 src/frontends/qt/GuiView.cpp:2652
-#: src/frontends/qt/GuiView.cpp:2793 src/frontends/qt/GuiView.cpp:2809
-#: src/frontends/qt/GuiView.cpp:2821 src/frontends/qt/GuiView.cpp:2838
-#: src/frontends/qt/GuiView.cpp:2923 src/frontends/qt/GuiView.cpp:4356
+#: src/frontends/qt/GuiClipboard.cpp:220 src/frontends/qt/GuiView.cpp:2682
+#: src/frontends/qt/GuiView.cpp:2823 src/frontends/qt/GuiView.cpp:2839
+#: src/frontends/qt/GuiView.cpp:2851 src/frontends/qt/GuiView.cpp:2868
+#: src/frontends/qt/GuiView.cpp:2953 src/frontends/qt/GuiView.cpp:4386
 msgid "Canceled."
 msgstr "Annulé."
 
@@ -32316,8 +32312,8 @@ msgid "Select document"
 msgstr "Sélectionner le document"
 
 #: src/frontends/qt/GuiCompare.cpp:157 src/frontends/qt/GuiLyXFiles.cpp:367
-#: src/frontends/qt/GuiView.cpp:2579 src/frontends/qt/GuiView.cpp:2638
-#: src/frontends/qt/GuiView.cpp:2912 src/frontends/qt/GuiView.cpp:3039
+#: src/frontends/qt/GuiView.cpp:2609 src/frontends/qt/GuiView.cpp:2668
+#: src/frontends/qt/GuiView.cpp:2942 src/frontends/qt/GuiView.cpp:3069
 msgid "LyX Documents (*.lyx)"
 msgstr "Documents LyX (*.lyx)"
 
@@ -32369,15 +32365,15 @@ msgstr "Bigg"
 msgid "Math Delimiter"
 msgstr "Délimiteurs mathématiques"
 
-#: src/frontends/qt/GuiDelimiter.cpp:271 src/frontends/qt/GuiDelimiter.cpp:274
+#: src/frontends/qt/GuiDelimiter.cpp:272 src/frontends/qt/GuiDelimiter.cpp:275
 msgid "(None)"
 msgstr "(Aucun)"
 
-#: src/frontends/qt/GuiDelimiter.cpp:272 src/frontends/qt/GuiDelimiter.cpp:275
+#: src/frontends/qt/GuiDelimiter.cpp:273 src/frontends/qt/GuiDelimiter.cpp:276
 msgid "No Delimiter"
 msgstr "Sans délimiteur"
 
-#: src/frontends/qt/GuiDelimiter.cpp:280
+#: src/frontends/qt/GuiDelimiter.cpp:281
 msgid "Variable"
 msgstr "Variable"
 
@@ -32692,7 +32688,7 @@ msgstr "Les paquetages LaTeX AMS ne sont jamais utilisés"
 msgid "The LaTeX package %1$s is never used"
 msgstr "Le paquetage LaTeX %1$s n'est jamais utilisé"
 
-#: src/frontends/qt/GuiDocument.cpp:1605 src/frontends/qt/GuiDocument.cpp:2874
+#: src/frontends/qt/GuiDocument.cpp:1605 src/frontends/qt/GuiDocument.cpp:2878
 #, c-format
 msgid "%1$s [Class '%2$s']"
 msgstr "%1$s [classe « %2$s »]"
@@ -32732,7 +32728,7 @@ msgstr "Format du texte"
 msgid "Page Margins"
 msgstr "Marges"
 
-#: src/frontends/qt/GuiDocument.cpp:1778 src/frontends/qt/GuiPrefs.cpp:1076
+#: src/frontends/qt/GuiDocument.cpp:1778 src/frontends/qt/GuiPrefs.cpp:1080
 msgid "Colors"
 msgstr "Couleurs"
 
@@ -32802,9 +32798,9 @@ msgstr "Direct (pas de recours à inputenc)"
 msgid "Direct (XeTeX/LuaTeX)"
 msgstr "Direct (XeTeX/LuaTeX)"
 
-#: src/frontends/qt/GuiDocument.cpp:2647 src/frontends/qt/GuiDocument.cpp:4301
-#: src/frontends/qt/GuiDocument.cpp:4310 src/frontends/qt/GuiDocument.cpp:4319
-#: src/frontends/qt/GuiDocument.cpp:4328
+#: src/frontends/qt/GuiDocument.cpp:2647 src/frontends/qt/GuiDocument.cpp:4305
+#: src/frontends/qt/GuiDocument.cpp:4314 src/frontends/qt/GuiDocument.cpp:4323
+#: src/frontends/qt/GuiDocument.cpp:4332
 msgid " (not installed)"
 msgstr " (pas installé)"
 
@@ -32820,19 +32816,19 @@ msgstr " (indisponible)"
 msgid "Class Default (TeX Fonts)"
 msgstr "Valeurs implicites de la classe (polices TeX)"
 
-#: src/frontends/qt/GuiDocument.cpp:2826
+#: src/frontends/qt/GuiDocument.cpp:2830
 msgid "Lay&outs"
 msgstr "Forma&t|"
 
-#: src/frontends/qt/GuiDocument.cpp:2828
+#: src/frontends/qt/GuiDocument.cpp:2832
 msgid "LyX Layout (*.layout)"
 msgstr "Formats LyX (*.layout)"
 
-#: src/frontends/qt/GuiDocument.cpp:2830 src/frontends/qt/GuiDocument.cpp:2839
+#: src/frontends/qt/GuiDocument.cpp:2834 src/frontends/qt/GuiDocument.cpp:2843
 msgid "Local layout file"
 msgstr "Fichier de format local"
 
-#: src/frontends/qt/GuiDocument.cpp:2840
+#: src/frontends/qt/GuiDocument.cpp:2844
 msgid ""
 "The layout file you have selected is a local layout\n"
 "file, not one in the system or user directory.\n"
@@ -32845,33 +32841,33 @@ msgstr ""
 "Votre document ne peut pas fonctionner avec ce format si vous\n"
 "déplacez le fichier de format un répertoire différent."
 
-#: src/frontends/qt/GuiDocument.cpp:2844
+#: src/frontends/qt/GuiDocument.cpp:2848
 msgid "&Set Layout"
 msgstr "&Sélectionner le format"
 
-#: src/frontends/qt/GuiDocument.cpp:2858
+#: src/frontends/qt/GuiDocument.cpp:2862
 msgid "Unable to read local layout file."
 msgstr "Échec de la lecture d'un fichier de format local."
 
-#: src/frontends/qt/GuiDocument.cpp:2875
+#: src/frontends/qt/GuiDocument.cpp:2879
 msgid "This is a local layout file."
 msgstr "Ceci est un fichier de format local."
 
-#: src/frontends/qt/GuiDocument.cpp:2889
+#: src/frontends/qt/GuiDocument.cpp:2893
 msgid "Select master document"
 msgstr "Sélectionner le document maître"
 
-#: src/frontends/qt/GuiDocument.cpp:2893
+#: src/frontends/qt/GuiDocument.cpp:2897
 msgid "LyX Files (*.lyx)"
 msgstr "Documents LyX (*.lyx)"
 
-#: src/frontends/qt/GuiDocument.cpp:2917 src/frontends/qt/GuiDocument.cpp:3218
-#: src/frontends/qt/GuiDocument.cpp:4817
+#: src/frontends/qt/GuiDocument.cpp:2921 src/frontends/qt/GuiDocument.cpp:3222
+#: src/frontends/qt/GuiDocument.cpp:4821
 msgid "Unapplied changes"
 msgstr "Modifications non appliquées"
 
-#: src/frontends/qt/GuiDocument.cpp:2918 src/frontends/qt/GuiDocument.cpp:3219
-#: src/frontends/qt/GuiDocument.cpp:4818
+#: src/frontends/qt/GuiDocument.cpp:2922 src/frontends/qt/GuiDocument.cpp:3223
+#: src/frontends/qt/GuiDocument.cpp:4822
 msgid ""
 "Some changes in the dialog were not yet applied.\n"
 "If you do not apply now, they will be lost after this action."
@@ -32879,86 +32875,86 @@ msgstr ""
 "Certaines modifications dans le dialogue n'ont pas encore été appliquées. Si "
 "vous ne la appliquez pas maintenant, elles seront perdues après cette action."
 
-#: src/frontends/qt/GuiDocument.cpp:2920 src/frontends/qt/GuiDocument.cpp:3221
-#: src/frontends/qt/GuiDocument.cpp:4820
+#: src/frontends/qt/GuiDocument.cpp:2924 src/frontends/qt/GuiDocument.cpp:3225
+#: src/frontends/qt/GuiDocument.cpp:4824
 msgid "&Apply"
 msgstr "&Appliquer"
 
-#: src/frontends/qt/GuiDocument.cpp:2920 src/frontends/qt/GuiDocument.cpp:3221
-#: src/frontends/qt/GuiDocument.cpp:4820
+#: src/frontends/qt/GuiDocument.cpp:2924 src/frontends/qt/GuiDocument.cpp:3225
+#: src/frontends/qt/GuiDocument.cpp:4824
 msgid "&Dismiss"
 msgstr "Aban&donner"
 
-#: src/frontends/qt/GuiDocument.cpp:2931 src/frontends/qt/GuiDocument.cpp:4828
+#: src/frontends/qt/GuiDocument.cpp:2935 src/frontends/qt/GuiDocument.cpp:4832
 msgid "Unable to set document class."
 msgstr "Impossible d'appliquer la classe du document."
 
-#: src/frontends/qt/GuiDocument.cpp:3097
+#: src/frontends/qt/GuiDocument.cpp:3101
 msgid "Basic numerical"
 msgstr "Numérique de base"
 
-#: src/frontends/qt/GuiDocument.cpp:3100
+#: src/frontends/qt/GuiDocument.cpp:3104
 msgid "Author-year"
 msgstr "Auteur-année"
 
-#: src/frontends/qt/GuiDocument.cpp:3103
+#: src/frontends/qt/GuiDocument.cpp:3107
 msgid "Author-number"
 msgstr "Auteur-numéro"
 
-#: src/frontends/qt/GuiDocument.cpp:3143
+#: src/frontends/qt/GuiDocument.cpp:3147
 #, c-format
 msgid "%1$s and %2$s"
 msgstr "%1$s et %2$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3150
+#: src/frontends/qt/GuiDocument.cpp:3154
 #, c-format
 msgid "%1$s, %2$s"
 msgstr "%1$s, %2$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3155
+#: src/frontends/qt/GuiDocument.cpp:3159
 #, c-format
 msgid "%1$s, %2$s, and %3$s"
 msgstr "%1$s, %2$s and %3$s"
 
-#: src/frontends/qt/GuiDocument.cpp:3169
+#: src/frontends/qt/GuiDocument.cpp:3173
 #, c-format
 msgid "%1$s (unavailable)"
 msgstr "%1$s (indisponible)"
 
-#: src/frontends/qt/GuiDocument.cpp:3268
+#: src/frontends/qt/GuiDocument.cpp:3272
 msgid "Module provided by document class."
 msgstr "Module fourni par la classe de document."
 
-#: src/frontends/qt/GuiDocument.cpp:3276
+#: src/frontends/qt/GuiDocument.cpp:3280
 #, c-format
 msgid "<p><b>Category:</b> %1$s.</p>"
 msgstr "<p><b>Categorie :</b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3286
+#: src/frontends/qt/GuiDocument.cpp:3290
 #, c-format
 msgid "<p><b>Package(s) required:</b> %1$s.</p>"
 msgstr "<p><b>Paquetage(s) requis : </b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3292
+#: src/frontends/qt/GuiDocument.cpp:3296
 msgid "or"
 msgstr "ou"
 
-#: src/frontends/qt/GuiDocument.cpp:3295
+#: src/frontends/qt/GuiDocument.cpp:3299
 #, c-format
 msgid "<p><b>Modules required:</b> %1$s.</p>"
 msgstr "<p><b>Modules requis : </b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3304
+#: src/frontends/qt/GuiDocument.cpp:3308
 #, c-format
 msgid "<p><b>Modules excluded:</b> %1$s.</p>"
 msgstr "<p><b>Modules exclus : </b> %1$s.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3309
+#: src/frontends/qt/GuiDocument.cpp:3313
 #, c-format
 msgid "<p><b>Filename:</b> <tt>%1$s.module</tt>.</p>"
 msgstr "<p><b>Nom de fichier : </b> <tt>%1$s.module</tt>.</p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3314
+#: src/frontends/qt/GuiDocument.cpp:3318
 msgid ""
 "<p><font color=red><b>WARNING: Some required packages are unavailable!</b></"
 "font></p>"
@@ -32966,61 +32962,61 @@ msgstr ""
 "<p><font color=red><b>AVERTISSEMENT : certains paquetages requis ne sont pas "
 "disponibles !</b></font></p>"
 
-#: src/frontends/qt/GuiDocument.cpp:3959
+#: src/frontends/qt/GuiDocument.cpp:3963
 msgid "per part"
 msgstr "par partie"
 
-#: src/frontends/qt/GuiDocument.cpp:3961
+#: src/frontends/qt/GuiDocument.cpp:3965
 msgid "per chapter"
 msgstr "par chapitre"
 
-#: src/frontends/qt/GuiDocument.cpp:3963
+#: src/frontends/qt/GuiDocument.cpp:3967
 msgid "per section"
 msgstr "par section"
 
-#: src/frontends/qt/GuiDocument.cpp:3965
+#: src/frontends/qt/GuiDocument.cpp:3969
 msgid "per subsection"
 msgstr "par sous-section"
 
-#: src/frontends/qt/GuiDocument.cpp:3966
+#: src/frontends/qt/GuiDocument.cpp:3970
 msgid "per child document"
 msgstr "par sous-document"
 
-#: src/frontends/qt/GuiDocument.cpp:3993
+#: src/frontends/qt/GuiDocument.cpp:3997
 #, c-format
 msgid "%1$s (not available)"
 msgstr "%1$s (indisponible)"
 
-#: src/frontends/qt/GuiDocument.cpp:4221
+#: src/frontends/qt/GuiDocument.cpp:4225
 msgid "[No options predefined]"
 msgstr "[Aucune option prédéfinie]"
 
-#: src/frontends/qt/GuiDocument.cpp:4488
+#: src/frontends/qt/GuiDocument.cpp:4492
 msgid "C&ustomize Hyperref Options"
 msgstr "Personnaliser les options h&yperref"
 
-#: src/frontends/qt/GuiDocument.cpp:4490
+#: src/frontends/qt/GuiDocument.cpp:4494
 msgid "&Use Hyperref Support"
 msgstr "&Utiliser le support pour hyperref"
 
-#: src/frontends/qt/GuiDocument.cpp:4840
+#: src/frontends/qt/GuiDocument.cpp:4844
 msgid "Can't set layout!"
 msgstr "Impossible d'appliquer le format !"
 
-#: src/frontends/qt/GuiDocument.cpp:4841
+#: src/frontends/qt/GuiDocument.cpp:4845
 #, c-format
 msgid "Unable to set layout for ID: %1$s"
 msgstr "Impossible d'appliquer le format pour ID : %1$s"
 
-#: src/frontends/qt/GuiDocument.cpp:4944
+#: src/frontends/qt/GuiDocument.cpp:4948
 msgid "Not Found"
 msgstr "Introuvable"
 
-#: src/frontends/qt/GuiDocument.cpp:5006
+#: src/frontends/qt/GuiDocument.cpp:5010
 msgid "Assigned master does not include this file"
 msgstr "Le document maître désigné n'inclut pas ce fichier"
 
-#: src/frontends/qt/GuiDocument.cpp:5007
+#: src/frontends/qt/GuiDocument.cpp:5011
 #, c-format
 msgid ""
 "You must include this file in the document\n"
@@ -33031,11 +33027,11 @@ msgstr ""
 "%1$s' pour pouvoir utiliser les fonctionnalités\n"
 "« document maître »."
 
-#: src/frontends/qt/GuiDocument.cpp:5011
+#: src/frontends/qt/GuiDocument.cpp:5015
 msgid "Could not load master"
 msgstr "Chargement du document maître impossible"
 
-#: src/frontends/qt/GuiDocument.cpp:5012
+#: src/frontends/qt/GuiDocument.cpp:5016
 #, c-format
 msgid ""
 "The master document '%1$s'\n"
@@ -33044,23 +33040,23 @@ msgstr ""
 "Le document maître  %1$s\n"
 " n'a pas pu être chargé."
 
-#: src/frontends/qt/GuiDocument.cpp:5162
+#: src/frontends/qt/GuiDocument.cpp:5166
 msgid "%1 (missing req.)"
 msgstr "%1 (req. manquante)"
 
-#: src/frontends/qt/GuiDocument.cpp:5174
+#: src/frontends/qt/GuiDocument.cpp:5178
 msgid "personal module"
 msgstr "module personnel"
 
-#: src/frontends/qt/GuiDocument.cpp:5174
+#: src/frontends/qt/GuiDocument.cpp:5178
 msgid "distributed module"
 msgstr "module distribué"
 
-#: src/frontends/qt/GuiDocument.cpp:5175
+#: src/frontends/qt/GuiDocument.cpp:5179
 msgid "<b>Module name:</b> <i>%1</i> (%2)"
 msgstr "<b>Nom du module : </b> <i>%1</i> (%2)"
 
-#: src/frontends/qt/GuiDocument.cpp:5181
+#: src/frontends/qt/GuiDocument.cpp:5185
 msgid "<b>Note:</b> Some requirements for this module are missing!"
 msgstr "<b>Nota :</b> certains éléments pour ce module sont manquants !"
 
@@ -33195,43 +33191,43 @@ msgstr "Groupe déjà défini !"
 msgid "A graphics group with the name '%1$s' already exists."
 msgstr "Un groupe de graphiques dénommé '%1$s' existe déjà."
 
-#: src/frontends/qt/GuiGraphics.cpp:468
+#: src/frontends/qt/GuiGraphics.cpp:474
 msgid "Set max. &width:"
 msgstr "Fixer la &largeur max. :"
 
-#: src/frontends/qt/GuiGraphics.cpp:469
+#: src/frontends/qt/GuiGraphics.cpp:475
 msgid "Set max. &height:"
 msgstr "Fixer la &hauteur max. :"
 
-#: src/frontends/qt/GuiGraphics.cpp:470
+#: src/frontends/qt/GuiGraphics.cpp:476
 msgid "Maximal width of image in output"
 msgstr "Largeur maximum de l'image en sortie"
 
-#: src/frontends/qt/GuiGraphics.cpp:471
+#: src/frontends/qt/GuiGraphics.cpp:477
 msgid "Maximal height of image in output"
 msgstr "Hauteur maximum de l'image en sortie"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:40
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:40
 msgid "bp"
 msgstr "bp"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:40
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:40
 msgid "cm"
 msgstr "cm"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:41
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:41
 msgid "mm"
 msgstr "mm"
 
-#: src/frontends/qt/GuiGraphics.cpp:493 src/support/lengthcommon.cpp:41
+#: src/frontends/qt/GuiGraphics.cpp:499 src/support/lengthcommon.cpp:41
 msgid "in[[unit of measure]]"
 msgstr "in"
 
-#: src/frontends/qt/GuiGraphics.cpp:776
+#: src/frontends/qt/GuiGraphics.cpp:813
 msgid "Select graphics file"
 msgstr "Choisir le fichier graphique"
 
-#: src/frontends/qt/GuiGraphics.cpp:788
+#: src/frontends/qt/GuiGraphics.cpp:825
 msgid "&Clipart"
 msgstr "&Clipart"
 
@@ -33743,17 +33739,17 @@ msgstr ""
 msgid "Select example file"
 msgstr "Choisir le fichier d'exemple"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:369 src/frontends/qt/GuiView.cpp:2635
-#: src/frontends/qt/GuiView.cpp:2775 src/frontends/qt/GuiView.cpp:2909
+#: src/frontends/qt/GuiLyXFiles.cpp:369 src/frontends/qt/GuiView.cpp:2665
+#: src/frontends/qt/GuiView.cpp:2805 src/frontends/qt/GuiView.cpp:2939
 msgid "&Examples"
 msgstr "&Exemples"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:373 src/frontends/qt/GuiView.cpp:2574
+#: src/frontends/qt/GuiLyXFiles.cpp:373 src/frontends/qt/GuiView.cpp:2604
 msgid "Select template file"
 msgstr "Choisir le modèle"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:375 src/frontends/qt/GuiView.cpp:2576
-#: src/frontends/qt/GuiView.cpp:3029
+#: src/frontends/qt/GuiLyXFiles.cpp:375 src/frontends/qt/GuiView.cpp:2606
+#: src/frontends/qt/GuiView.cpp:3059
 msgid "&Templates"
 msgstr "&Modèles"
 
@@ -33879,7 +33875,7 @@ msgstr ""
 "En principe, vous n'avez pas à le modifier puisqu'on utilise la plus grande "
 "largeur d'étiquette de tous les éléments."
 
-#: src/frontends/qt/GuiParagraph.cpp:175 src/frontends/qt/GuiView.cpp:3307
+#: src/frontends/qt/GuiParagraph.cpp:175 src/frontends/qt/GuiView.cpp:3337
 msgid "&Close"
 msgstr "&Fermer"
 
@@ -33919,71 +33915,71 @@ msgstr "&Commande :"
 msgid "Screen Fonts"
 msgstr "Polices d'écran"
 
-#: src/frontends/qt/GuiPrefs.cpp:1396
+#: src/frontends/qt/GuiPrefs.cpp:1400
 msgid "Paths"
 msgstr "Répertoires"
 
-#: src/frontends/qt/GuiPrefs.cpp:1483
+#: src/frontends/qt/GuiPrefs.cpp:1487
 msgid "Select directory for example files"
 msgstr "Choisir le répertoire des fichiers d'exemple"
 
-#: src/frontends/qt/GuiPrefs.cpp:1492
+#: src/frontends/qt/GuiPrefs.cpp:1496
 msgid "Select a document templates directory"
 msgstr "Choisir un répertoire de modèles de document"
 
-#: src/frontends/qt/GuiPrefs.cpp:1501
+#: src/frontends/qt/GuiPrefs.cpp:1505
 msgid "Select a temporary directory"
 msgstr "Choisir un répertoire temporaire"
 
-#: src/frontends/qt/GuiPrefs.cpp:1510
+#: src/frontends/qt/GuiPrefs.cpp:1514
 msgid "Select a backups directory"
 msgstr "Choisir un répertoire de sauvegardes automatiques"
 
-#: src/frontends/qt/GuiPrefs.cpp:1519
+#: src/frontends/qt/GuiPrefs.cpp:1523
 msgid "Select a document directory"
 msgstr "Choisir un répertoire de documents"
 
-#: src/frontends/qt/GuiPrefs.cpp:1528
+#: src/frontends/qt/GuiPrefs.cpp:1532
 msgid "Set the path to the thesaurus dictionaries"
 msgstr "Positionner le chemin vers les dictionnaires de synonymes"
 
-#: src/frontends/qt/GuiPrefs.cpp:1537
+#: src/frontends/qt/GuiPrefs.cpp:1541
 msgid "Set the path to the Hunspell dictionaries"
 msgstr "Saisir le chemin d'accès au dictionnaire hunspell"
 
-#: src/frontends/qt/GuiPrefs.cpp:1546
+#: src/frontends/qt/GuiPrefs.cpp:1550
 msgid "Give a filename for the LyX server pipe"
 msgstr "Donnez un nom de fichier au tube du serveur LyX"
 
-#: src/frontends/qt/GuiPrefs.cpp:1559 src/frontends/qt/GuiSpellchecker.cpp:642
+#: src/frontends/qt/GuiPrefs.cpp:1563 src/frontends/qt/GuiSpellchecker.cpp:642
 msgid "Spellchecker"
 msgstr "Correcteur Orthographique"
 
-#: src/frontends/qt/GuiPrefs.cpp:1565
+#: src/frontends/qt/GuiPrefs.cpp:1569
 msgid "Native"
 msgstr "Natif"
 
-#: src/frontends/qt/GuiPrefs.cpp:1571
+#: src/frontends/qt/GuiPrefs.cpp:1575
 msgid "Aspell"
 msgstr "Aspell"
 
-#: src/frontends/qt/GuiPrefs.cpp:1574
+#: src/frontends/qt/GuiPrefs.cpp:1578
 msgid "Enchant"
 msgstr "Enchant"
 
-#: src/frontends/qt/GuiPrefs.cpp:1577
+#: src/frontends/qt/GuiPrefs.cpp:1581
 msgid "Hunspell"
 msgstr "Hunspell"
 
-#: src/frontends/qt/GuiPrefs.cpp:1650
+#: src/frontends/qt/GuiPrefs.cpp:1654
 msgid "Converters"
 msgstr "Convertisseurs"
 
-#: src/frontends/qt/GuiPrefs.cpp:1890
+#: src/frontends/qt/GuiPrefs.cpp:1894
 msgid "SECURITY WARNING!"
 msgstr "AVERTISSEMENT DE SÉCURITÉ !"
 
-#: src/frontends/qt/GuiPrefs.cpp:1890
+#: src/frontends/qt/GuiPrefs.cpp:1894
 msgid ""
 "Unchecking this option has the effect that potentially harmful converters "
 "would be run without asking your permission first. This is UNSAFE and NOT "
@@ -33996,15 +33992,15 @@ msgstr ""
 "ce que vous faisiez. Êtes-vous sûr de vouloir continuer ? La réponse sûre et "
 "recommandée est NON !"
 
-#: src/frontends/qt/GuiPrefs.cpp:2010
+#: src/frontends/qt/GuiPrefs.cpp:2014
 msgid "File Formats"
 msgstr "Formats de fichier"
 
-#: src/frontends/qt/GuiPrefs.cpp:2253 src/frontends/qt/GuiPrefs.cpp:2405
+#: src/frontends/qt/GuiPrefs.cpp:2257 src/frontends/qt/GuiPrefs.cpp:2409
 msgid "Format in use"
 msgstr "Format utilisé"
 
-#: src/frontends/qt/GuiPrefs.cpp:2254
+#: src/frontends/qt/GuiPrefs.cpp:2258
 msgid ""
 "You cannot change a format's short name if the format is used by a "
 "converter. Please remove the converter first."
@@ -34012,17 +34008,17 @@ msgstr ""
 "Impossible de modifier le nom abrégé d'un format utilisé par un "
 "convertisseur. Enlever d'abord le convertisseur."
 
-#: src/frontends/qt/GuiPrefs.cpp:2406
+#: src/frontends/qt/GuiPrefs.cpp:2410
 msgid "Cannot remove a Format used by a Converter. Remove the converter first."
 msgstr ""
 "Impossible d'enlever un Format utilisé par un Convertisseur. Enlevez d'abord "
 "le convertisseur."
 
-#: src/frontends/qt/GuiPrefs.cpp:2506
+#: src/frontends/qt/GuiPrefs.cpp:2510
 msgid "LyX needs to be restarted!"
 msgstr "LyX doit être redémarré !"
 
-#: src/frontends/qt/GuiPrefs.cpp:2507
+#: src/frontends/qt/GuiPrefs.cpp:2511
 msgid ""
 "The change of user interface language will be fully effective only after a "
 "restart."
@@ -34030,80 +34026,80 @@ msgstr ""
 "La modification de la langue de l'interface ne sera complètement effective "
 "qu'après un redémarrage de LyX."
 
-#: src/frontends/qt/GuiPrefs.cpp:2607
+#: src/frontends/qt/GuiPrefs.cpp:2611
 msgid "User Interface"
 msgstr "Interface utilisateur"
 
-#: src/frontends/qt/GuiPrefs.cpp:2626
+#: src/frontends/qt/GuiPrefs.cpp:2630
 msgid "Classic"
 msgstr "Classique"
 
-#: src/frontends/qt/GuiPrefs.cpp:2627
+#: src/frontends/qt/GuiPrefs.cpp:2631
 msgid "Oxygen"
 msgstr "Oxygen"
 
-#: src/frontends/qt/GuiPrefs.cpp:2678
+#: src/frontends/qt/GuiPrefs.cpp:2682
 msgid "Document Handling"
 msgstr "Gestion des documents"
 
-#: src/frontends/qt/GuiPrefs.cpp:2785
+#: src/frontends/qt/GuiPrefs.cpp:2789
 msgid "Control"
 msgstr "Contrôle"
 
-#: src/frontends/qt/GuiPrefs.cpp:2906
+#: src/frontends/qt/GuiPrefs.cpp:2910
 msgid "Shortcuts"
 msgstr "Raccourcis"
 
-#: src/frontends/qt/GuiPrefs.cpp:2913
+#: src/frontends/qt/GuiPrefs.cpp:2917
 msgid "Function"
 msgstr "Fonction"
 
-#: src/frontends/qt/GuiPrefs.cpp:2914
+#: src/frontends/qt/GuiPrefs.cpp:2918
 msgid "Shortcut"
 msgstr "Raccourci"
 
-#: src/frontends/qt/GuiPrefs.cpp:2991
+#: src/frontends/qt/GuiPrefs.cpp:2995
 msgid "Cursor, Mouse and Editing Functions"
 msgstr "Contrôle du curseur, de la souris et de la saisie"
 
-#: src/frontends/qt/GuiPrefs.cpp:2995
+#: src/frontends/qt/GuiPrefs.cpp:2999
 msgid "Mathematical Symbols"
 msgstr "Symboles mathématiques"
 
-#: src/frontends/qt/GuiPrefs.cpp:2999
+#: src/frontends/qt/GuiPrefs.cpp:3003
 msgid "Document and Window"
 msgstr "Document et fenêtre"
 
-#: src/frontends/qt/GuiPrefs.cpp:3003
+#: src/frontends/qt/GuiPrefs.cpp:3007
 msgid "Font, Layouts and Textclasses"
 msgstr "Polices, formats et classes"
 
-#: src/frontends/qt/GuiPrefs.cpp:3007
+#: src/frontends/qt/GuiPrefs.cpp:3011
 msgid "System and Miscellaneous"
 msgstr "Système et divers"
 
-#: src/frontends/qt/GuiPrefs.cpp:3144 src/frontends/qt/GuiPrefs.cpp:3204
+#: src/frontends/qt/GuiPrefs.cpp:3148 src/frontends/qt/GuiPrefs.cpp:3208
 msgid "Res&tore"
 msgstr "&Restaurer"
 
-#: src/frontends/qt/GuiPrefs.cpp:3372 src/frontends/qt/GuiPrefs.cpp:3381
-#: src/frontends/qt/GuiPrefs.cpp:3387 src/frontends/qt/GuiPrefs.cpp:3451
+#: src/frontends/qt/GuiPrefs.cpp:3376 src/frontends/qt/GuiPrefs.cpp:3385
+#: src/frontends/qt/GuiPrefs.cpp:3391 src/frontends/qt/GuiPrefs.cpp:3455
 msgid "Failed to create shortcut"
 msgstr "Échec de la création du raccourci"
 
-#: src/frontends/qt/GuiPrefs.cpp:3373
+#: src/frontends/qt/GuiPrefs.cpp:3377
 msgid "Unknown or invalid LyX function"
 msgstr "Fonction LyX inconnue ou invalide"
 
-#: src/frontends/qt/GuiPrefs.cpp:3382
+#: src/frontends/qt/GuiPrefs.cpp:3386
 msgid "This LyX function is hidden and cannot be bound."
 msgstr "Cette fonction LyX est cachée et ne peut être associée."
 
-#: src/frontends/qt/GuiPrefs.cpp:3388
+#: src/frontends/qt/GuiPrefs.cpp:3392
 msgid "Invalid or empty key sequence"
 msgstr "Séquence de touches invalide ou vide"
 
-#: src/frontends/qt/GuiPrefs.cpp:3403
+#: src/frontends/qt/GuiPrefs.cpp:3407
 #, c-format
 msgid ""
 "Shortcut `%1$s' is already bound to %2$s.\n"
@@ -34113,19 +34109,19 @@ msgstr ""
 "Êtes-vous sûr de vouloir remplacer cette association par une association à "
 "%3$s ?"
 
-#: src/frontends/qt/GuiPrefs.cpp:3409
+#: src/frontends/qt/GuiPrefs.cpp:3413
 msgid "Redefine shortcut?"
 msgstr "Redéfinir le raccourci ?"
 
-#: src/frontends/qt/GuiPrefs.cpp:3410
+#: src/frontends/qt/GuiPrefs.cpp:3414
 msgid "&Redefine"
 msgstr "&Redéfinir"
 
-#: src/frontends/qt/GuiPrefs.cpp:3452
+#: src/frontends/qt/GuiPrefs.cpp:3456
 msgid "Can not insert shortcut to the list"
 msgstr "Échec de l'insertion du raccourci à la liste"
 
-#: src/frontends/qt/GuiPrefs.cpp:3483
+#: src/frontends/qt/GuiPrefs.cpp:3487
 msgid "Identity"
 msgstr "Identité"
 
@@ -34652,7 +34648,7 @@ msgstr "non déplaçable"
 msgid "Vertical Space Settings"
 msgstr "Paramètres d'espacement vertical"
 
-#: src/frontends/qt/GuiView.cpp:154
+#: src/frontends/qt/GuiView.cpp:156
 msgid ""
 "The Document\n"
 "Processor[[welcome banner]]"
@@ -34660,33 +34656,33 @@ msgstr ""
 "Le générateur\n"
 "de documents"
 
-#: src/frontends/qt/GuiView.cpp:155
+#: src/frontends/qt/GuiView.cpp:157
 msgid "1.0[[possibly scale the welcome banner text size]]"
 msgstr "1.1"
 
-#: src/frontends/qt/GuiView.cpp:158
+#: src/frontends/qt/GuiView.cpp:160
 msgid "version "
 msgstr "version "
 
-#: src/frontends/qt/GuiView.cpp:158
+#: src/frontends/qt/GuiView.cpp:160
 msgid "unknown version"
 msgstr "version inconnue"
 
-#: src/frontends/qt/GuiView.cpp:648
+#: src/frontends/qt/GuiView.cpp:649
 msgid "Workarea zoom level. Drag, use Ctrl-+/- or Shift-Mousewheel to adjust."
 msgstr ""
 "Niveau de zoom de la fenêtre de travail. Faire glisser, utiliser Ctrl-+/- ou "
 "Maj-Molette pour ajuster."
 
-#: src/frontends/qt/GuiView.cpp:690 src/frontends/qt/GuiView.cpp:800
-#: src/frontends/qt/GuiView.cpp:969 src/frontends/qt/Menus.cpp:1843
+#: src/frontends/qt/GuiView.cpp:691 src/frontends/qt/GuiView.cpp:804
+#: src/frontends/qt/GuiView.cpp:974 src/frontends/qt/Menus.cpp:1843
 #: src/frontends/qt/Menus.cpp:1847 src/frontends/qt/Menus.cpp:1851
 #: src/frontends/qt/Menus.cpp:1855 src/frontends/qt/Menus.cpp:1859
 #: src/frontends/qt/Menus.cpp:1863
 msgid "[[ZOOM]]%1$d%"
 msgstr "%1$d%"
 
-#: src/frontends/qt/GuiView.cpp:706
+#: src/frontends/qt/GuiView.cpp:710
 msgid ""
 "WARNING: LaTeX is allowed to execute external commands for this document. "
 "Right click to change."
@@ -34694,112 +34690,112 @@ msgstr ""
 "AVERTISSEMENT :  LaTeX peut exécuter des commandes externes dans ce "
 "document. Faites un clic droit pour changer."
 
-#: src/frontends/qt/GuiView.cpp:785
+#: src/frontends/qt/GuiView.cpp:789
 msgid "Cancel Export?"
 msgstr "&Annuler l'exportation ?"
 
-#: src/frontends/qt/GuiView.cpp:786
+#: src/frontends/qt/GuiView.cpp:790
 msgid "Do you want to cancel the background export process?"
 msgstr "Voulez-vous arrêter le processus d'exportation en arrière-plan ?"
 
-#: src/frontends/qt/GuiView.cpp:789
+#: src/frontends/qt/GuiView.cpp:793
 msgid "Co&ntinue"
 msgstr "&Continuer"
 
-#: src/frontends/qt/GuiView.cpp:866
+#: src/frontends/qt/GuiView.cpp:870
 #, c-format
 msgid "Successful export to format: %1$s"
 msgstr "Succès de l'exportation au format : %1$s"
 
-#: src/frontends/qt/GuiView.cpp:875
+#: src/frontends/qt/GuiView.cpp:879
 #, c-format
 msgid "Error while exporting format: %1$s"
 msgstr "Erreur à l'exportation au format : %1$s"
 
-#: src/frontends/qt/GuiView.cpp:878
+#: src/frontends/qt/GuiView.cpp:882
 #, c-format
 msgid "Successful preview of format: %1$s"
 msgstr "Succès de l'aperçu du format : %1$s"
 
-#: src/frontends/qt/GuiView.cpp:881
+#: src/frontends/qt/GuiView.cpp:885
 #, c-format
 msgid "Error while previewing format: %1$s"
 msgstr "Erreur au visionnement du format : %1$s"
 
-#: src/frontends/qt/GuiView.cpp:884
+#: src/frontends/qt/GuiView.cpp:888
 #, c-format
 msgid "Conversion cancelled while previewing format: %1$s"
 msgstr "Conversion annulée pendant le visionnement du format : %1$s"
 
-#: src/frontends/qt/GuiView.cpp:1234
+#: src/frontends/qt/GuiView.cpp:1241
 msgid "Exit LyX"
 msgstr "Quitter LyX"
 
-#: src/frontends/qt/GuiView.cpp:1235
+#: src/frontends/qt/GuiView.cpp:1242
 msgid "LyX could not be closed because documents are being processed by LyX."
 msgstr "Impossible de fermer LyX, des documents sont en cours de traitement."
 
-#: src/frontends/qt/GuiView.cpp:1383
+#: src/frontends/qt/GuiView.cpp:1390
 #, c-format
 msgid "%1$s (modified externally)"
 msgstr "%1$s (modifié par une application externe)"
 
-#: src/frontends/qt/GuiView.cpp:1506
+#: src/frontends/qt/GuiView.cpp:1513
 msgid "Welcome to LyX!"
 msgstr "Bienvenue dans LyX !"
 
-#: src/frontends/qt/GuiView.cpp:2043
+#: src/frontends/qt/GuiView.cpp:2072
 msgid "Automatic save done."
 msgstr "Sauvegarde automatique effective."
 
-#: src/frontends/qt/GuiView.cpp:2044
+#: src/frontends/qt/GuiView.cpp:2073
 msgid "Automatic save failed!"
 msgstr "La sauvegarde automatique a échoué !"
 
-#: src/frontends/qt/GuiView.cpp:2100
+#: src/frontends/qt/GuiView.cpp:2129
 msgid "Command not allowed without any document open"
 msgstr "Commande non autorisée si aucun document n'est ouvert"
 
-#: src/frontends/qt/GuiView.cpp:2169
+#: src/frontends/qt/GuiView.cpp:2198
 msgid "Invalid argument of master-buffer-forall"
 msgstr "Argument invalide pour la commande master-buffer-forall"
 
-#: src/frontends/qt/GuiView.cpp:2287
+#: src/frontends/qt/GuiView.cpp:2316
 msgid "Function toolbar-set requires two arguments!"
 msgstr "La fonction toolbar-set nécessite deux arguments !"
 
-#: src/frontends/qt/GuiView.cpp:2294
+#: src/frontends/qt/GuiView.cpp:2323
 #, c-format
 msgid "Invalid argument \"%1$s\" to function toolbar-set!"
 msgstr "Argument \"%1$s\" invalide pour la fonction toolbar-set !"
 
-#: src/frontends/qt/GuiView.cpp:2310 src/frontends/qt/GuiView.cpp:2323
-#: src/frontends/qt/GuiView.cpp:2340
+#: src/frontends/qt/GuiView.cpp:2339 src/frontends/qt/GuiView.cpp:2352
+#: src/frontends/qt/GuiView.cpp:2369
 #, c-format
 msgid "Unknown toolbar \"%1$s\""
 msgstr "Barre d'outils inconnue \"%1$s\""
 
-#: src/frontends/qt/GuiView.cpp:2460 src/frontends/qt/GuiView.cpp:2473
+#: src/frontends/qt/GuiView.cpp:2490 src/frontends/qt/GuiView.cpp:2503
 msgid "Zoom level cannot be less than %1$d%."
 msgstr "Le niveau de zoom ne peut être inférieur à %1$d%."
 
-#: src/frontends/qt/GuiView.cpp:2603
+#: src/frontends/qt/GuiView.cpp:2633
 msgid "Document not loaded."
 msgstr "Le document n'a pas été chargé."
 
-#: src/frontends/qt/GuiView.cpp:2633
+#: src/frontends/qt/GuiView.cpp:2663
 msgid "Select document to open"
 msgstr "Choisir le document à ouvrir"
 
-#: src/frontends/qt/GuiView.cpp:2639
+#: src/frontends/qt/GuiView.cpp:2669
 msgid "LyX Document Backups (*.lyx~)"
 msgstr "Sauvegardes des documents LyX (*.lyx~)"
 
-#: src/frontends/qt/GuiView.cpp:2640
+#: src/frontends/qt/GuiView.cpp:2670
 msgid "All Files (*.*)"
 msgstr "Tous les fichiers (*.*)"
 
-#: src/frontends/qt/GuiView.cpp:2667
+#: src/frontends/qt/GuiView.cpp:2697
 #, c-format
 msgid ""
 "The directory in the given path\n"
@@ -34810,40 +34806,40 @@ msgstr ""
 "%1$s\n"
 "n'existe pas."
 
-#: src/frontends/qt/GuiView.cpp:2684
+#: src/frontends/qt/GuiView.cpp:2714
 #, c-format
 msgid "Opening document %1$s..."
 msgstr "Ouverture du document %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:2689
+#: src/frontends/qt/GuiView.cpp:2719
 #, c-format
 msgid "Document %1$s opened."
 msgstr "Document %1$s ouvert."
 
-#: src/frontends/qt/GuiView.cpp:2692
+#: src/frontends/qt/GuiView.cpp:2722
 msgid "Version control detected."
 msgstr "Contrôle de version détecté."
 
-#: src/frontends/qt/GuiView.cpp:2694
+#: src/frontends/qt/GuiView.cpp:2724
 #, c-format
 msgid "Could not open document %1$s"
 msgstr "Impossible d'ouvrir le document %1$s"
 
-#: src/frontends/qt/GuiView.cpp:2722
+#: src/frontends/qt/GuiView.cpp:2752
 msgid "Couldn't import file"
 msgstr "Impossible d'importer le fichier"
 
-#: src/frontends/qt/GuiView.cpp:2723
+#: src/frontends/qt/GuiView.cpp:2753
 #, c-format
 msgid "No information for importing the format %1$s."
 msgstr "Pas d'information pour importer le format %1$s."
 
-#: src/frontends/qt/GuiView.cpp:2770
+#: src/frontends/qt/GuiView.cpp:2800
 #, c-format
 msgid "Select %1$s file to import"
 msgstr "Choisir le fichier %1$s à importer"
 
-#: src/frontends/qt/GuiView.cpp:2805
+#: src/frontends/qt/GuiView.cpp:2835
 #, c-format
 msgid ""
 "The file name '%1$s' is invalid!\n"
@@ -34852,8 +34848,8 @@ msgstr ""
 "Le nom de fichier « %1$s » n'est pas valide !\n"
 "Importation interrompue."
 
-#: src/frontends/qt/GuiView.cpp:2832 src/frontends/qt/GuiView.cpp:3099
-#: src/frontends/qt/GuiView.cpp:3202
+#: src/frontends/qt/GuiView.cpp:2862 src/frontends/qt/GuiView.cpp:3129
+#: src/frontends/qt/GuiView.cpp:3232
 #, c-format
 msgid ""
 "The document %1$s already exists.\n"
@@ -34864,33 +34860,33 @@ msgstr ""
 "\n"
 "Voulez-vous écrire par dessus ce document ?"
 
-#: src/frontends/qt/GuiView.cpp:2834 src/frontends/qt/GuiView.cpp:3103
-#: src/frontends/qt/GuiView.cpp:3206
+#: src/frontends/qt/GuiView.cpp:2864 src/frontends/qt/GuiView.cpp:3133
+#: src/frontends/qt/GuiView.cpp:3236
 msgid "Overwrite document?"
 msgstr "Écraser le document ?"
 
-#: src/frontends/qt/GuiView.cpp:2843
+#: src/frontends/qt/GuiView.cpp:2873
 #, c-format
 msgid "Importing %1$s..."
 msgstr "Importe %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:2846
+#: src/frontends/qt/GuiView.cpp:2876
 msgid "imported."
 msgstr "importé."
 
-#: src/frontends/qt/GuiView.cpp:2848
+#: src/frontends/qt/GuiView.cpp:2878
 msgid "file not imported!"
 msgstr "fichier non importé !"
 
-#: src/frontends/qt/GuiView.cpp:2874
+#: src/frontends/qt/GuiView.cpp:2904
 msgid "newfile"
 msgstr "nouveau"
 
-#: src/frontends/qt/GuiView.cpp:2907
+#: src/frontends/qt/GuiView.cpp:2937
 msgid "Select LyX document to insert"
 msgstr "Choisir le document à insérer"
 
-#: src/frontends/qt/GuiView.cpp:2954
+#: src/frontends/qt/GuiView.cpp:2984
 #, c-format
 msgid ""
 "It is suggested to save the template in a subdirectory\n"
@@ -34903,23 +34899,23 @@ msgstr ""
 "Ce sous-répertoire n'existe pas encore.\n"
 "Voulez-vous le créer ?"
 
-#: src/frontends/qt/GuiView.cpp:2959
+#: src/frontends/qt/GuiView.cpp:2989
 msgid "Create Language Directory?"
 msgstr "Créer un répertoire de langue ?"
 
-#: src/frontends/qt/GuiView.cpp:2960 src/frontends/qt/GuiView.cpp:2991
+#: src/frontends/qt/GuiView.cpp:2990 src/frontends/qt/GuiView.cpp:3021
 msgid "&Yes, Create"
 msgstr "&Oui, créer"
 
-#: src/frontends/qt/GuiView.cpp:2960 src/frontends/qt/GuiView.cpp:2991
+#: src/frontends/qt/GuiView.cpp:2990 src/frontends/qt/GuiView.cpp:3021
 msgid "&No, Save Template in Parent Directory"
 msgstr "&Non, enregistrer le modèle dans le répertoire parent"
 
-#: src/frontends/qt/GuiView.cpp:2963 src/frontends/qt/GuiView.cpp:2994
+#: src/frontends/qt/GuiView.cpp:2993 src/frontends/qt/GuiView.cpp:3024
 msgid "Subdirectory creation failed!"
 msgstr "Échec de la création du sous-répertoire !"
 
-#: src/frontends/qt/GuiView.cpp:2964 src/frontends/qt/GuiView.cpp:2995
+#: src/frontends/qt/GuiView.cpp:2994 src/frontends/qt/GuiView.cpp:3025
 msgid ""
 "Could not create subdirectory.\n"
 "The template will be saved in the parent directory."
@@ -34927,7 +34923,7 @@ msgstr ""
 "Impossible de créer le sous-répertoire.\n"
 "Le modèle sera enregistré dans le répertoire parent."
 
-#: src/frontends/qt/GuiView.cpp:2985
+#: src/frontends/qt/GuiView.cpp:3015
 #, c-format
 msgid ""
 "It is suggested to save the template in a subdirectory\n"
@@ -34940,19 +34936,19 @@ msgstr ""
 "Ce sous-répertoire n'existe pas encore.\n"
 "Voulez-vous le créer ?"
 
-#: src/frontends/qt/GuiView.cpp:2990
+#: src/frontends/qt/GuiView.cpp:3020
 msgid "Create Category Directory?"
 msgstr "Créer un répertoire de catégorie ?"
 
-#: src/frontends/qt/GuiView.cpp:3025
+#: src/frontends/qt/GuiView.cpp:3055
 msgid "Choose a filename to save template as"
 msgstr "Choisir le nom du fichier sous lequel enregistrer le modèle"
 
-#: src/frontends/qt/GuiView.cpp:3026
+#: src/frontends/qt/GuiView.cpp:3056
 msgid "Choose a filename to save document as"
 msgstr "Choisir le nom sous lequel enregistrer le fichier"
 
-#: src/frontends/qt/GuiView.cpp:3062
+#: src/frontends/qt/GuiView.cpp:3092
 #, c-format
 msgid ""
 "The file\n"
@@ -34967,17 +34963,17 @@ msgstr ""
 "Merci de le fermer avant d'essayer de l'écraser.\n"
 "Vouez-vous définir un nouveau nom de fichier ?"
 
-#: src/frontends/qt/GuiView.cpp:3066
+#: src/frontends/qt/GuiView.cpp:3096
 msgid "Chosen File Already Open"
 msgstr "Fichier sélectionné déjà ouvert"
 
-#: src/frontends/qt/GuiView.cpp:3067 src/frontends/qt/GuiView.cpp:3089
-#: src/frontends/qt/GuiView.cpp:3105 src/frontends/qt/GuiView.cpp:3207
-#: src/frontends/qt/GuiView.cpp:3252
+#: src/frontends/qt/GuiView.cpp:3097 src/frontends/qt/GuiView.cpp:3119
+#: src/frontends/qt/GuiView.cpp:3135 src/frontends/qt/GuiView.cpp:3237
+#: src/frontends/qt/GuiView.cpp:3282
 msgid "&Rename"
 msgstr "&Renommer"
 
-#: src/frontends/qt/GuiView.cpp:3082
+#: src/frontends/qt/GuiView.cpp:3112
 #, c-format
 msgid ""
 "The document %1$s is already registered.\n"
@@ -34988,27 +34984,27 @@ msgstr ""
 "\n"
 "Voulez-vous choisir un nouveau nom ?"
 
-#: src/frontends/qt/GuiView.cpp:3087
+#: src/frontends/qt/GuiView.cpp:3117
 msgid "Rename document?"
 msgstr "Renommer le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3087
+#: src/frontends/qt/GuiView.cpp:3117
 msgid "Copy document?"
 msgstr "Copier le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3089
+#: src/frontends/qt/GuiView.cpp:3119
 msgid "&Copy"
 msgstr "&Copier"
 
-#: src/frontends/qt/GuiView.cpp:3149
+#: src/frontends/qt/GuiView.cpp:3179
 msgid "Choose a filename to export the document as"
 msgstr "Choisir le nom sous lequel exporter le fichier"
 
-#: src/frontends/qt/GuiView.cpp:3153
+#: src/frontends/qt/GuiView.cpp:3183
 msgid "Guess from extension (*.*)"
 msgstr "Deviner à partir du suffixe (*.*)"
 
-#: src/frontends/qt/GuiView.cpp:3248
+#: src/frontends/qt/GuiView.cpp:3278
 #, c-format
 msgid ""
 "The document %1$s could not be saved.\n"
@@ -35019,15 +35015,15 @@ msgstr ""
 "\n"
 "Voulez-vous renommer le document et essayer à nouveau ?"
 
-#: src/frontends/qt/GuiView.cpp:3251
+#: src/frontends/qt/GuiView.cpp:3281
 msgid "Rename and save?"
 msgstr "Renommer et enregistrer ?"
 
-#: src/frontends/qt/GuiView.cpp:3252
+#: src/frontends/qt/GuiView.cpp:3282
 msgid "&Retry"
 msgstr "&Réessayer"
 
-#: src/frontends/qt/GuiView.cpp:3297
+#: src/frontends/qt/GuiView.cpp:3327
 #, c-format
 msgid ""
 "Last view on document %1$s is being closed.\n"
@@ -35045,24 +35041,24 @@ msgstr ""
 "Les documents cachés peuvent être ré-affichés via\n"
 "Affichage->Caché->...\n"
 
-#: src/frontends/qt/GuiView.cpp:3306
+#: src/frontends/qt/GuiView.cpp:3336
 msgid "Close or hide document?"
 msgstr "Fermer ou cacher le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3307
+#: src/frontends/qt/GuiView.cpp:3337
 msgid "&Hide"
 msgstr "&Cacher"
 
-#: src/frontends/qt/GuiView.cpp:3404
+#: src/frontends/qt/GuiView.cpp:3434
 msgid "Close document"
 msgstr "Fermer le document"
 
-#: src/frontends/qt/GuiView.cpp:3405
+#: src/frontends/qt/GuiView.cpp:3435
 msgid "Document could not be closed because it is being processed by LyX."
 msgstr ""
 "Impossible de fermer le document, il est en cours de traitement par LyX."
 
-#: src/frontends/qt/GuiView.cpp:3537 src/frontends/qt/GuiView.cpp:3652
+#: src/frontends/qt/GuiView.cpp:3567 src/frontends/qt/GuiView.cpp:3682
 #, c-format
 msgid ""
 "The document %1$s has not been saved yet.\n"
@@ -35073,16 +35069,16 @@ msgstr ""
 "\n"
 "Voulez-vous enregistrer le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3540 src/frontends/qt/GuiView.cpp:3655
+#: src/frontends/qt/GuiView.cpp:3570 src/frontends/qt/GuiView.cpp:3685
 msgid "Save new document?"
 msgstr "Enregistrer le nouveau document ?"
 
-#: src/frontends/qt/GuiView.cpp:3541 src/frontends/qt/GuiView.cpp:3555
-#: src/frontends/qt/GuiView.cpp:3657
+#: src/frontends/qt/GuiView.cpp:3571 src/frontends/qt/GuiView.cpp:3585
+#: src/frontends/qt/GuiView.cpp:3687
 msgid "&Save"
 msgstr "&Enregistrer"
 
-#: src/frontends/qt/GuiView.cpp:3546
+#: src/frontends/qt/GuiView.cpp:3576
 #, c-format
 msgid ""
 "The document %1$s has unsaved changes.\n"
@@ -35093,7 +35089,7 @@ msgstr ""
 "\n"
 "Voulez-vous enregistrer le document ou ignorer ces modifications ?"
 
-#: src/frontends/qt/GuiView.cpp:3549
+#: src/frontends/qt/GuiView.cpp:3579
 #, c-format
 msgid ""
 "The document %1$s has not been saved yet.\n"
@@ -35104,19 +35100,19 @@ msgstr ""
 "\n"
 "Voulez-vous enregistrer le document ou bien l'abandonner entièrement ?"
 
-#: src/frontends/qt/GuiView.cpp:3553 src/frontends/qt/GuiView.cpp:3649
+#: src/frontends/qt/GuiView.cpp:3583 src/frontends/qt/GuiView.cpp:3679
 msgid "Save changed document?"
 msgstr "Enregistrer le document modifié ?"
 
-#: src/frontends/qt/GuiView.cpp:3553
+#: src/frontends/qt/GuiView.cpp:3583
 msgid "Save document?"
 msgstr "Enregistrer le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3555
+#: src/frontends/qt/GuiView.cpp:3585
 msgid "&Discard"
 msgstr "I&gnorer"
 
-#: src/frontends/qt/GuiView.cpp:3646
+#: src/frontends/qt/GuiView.cpp:3676
 #, c-format
 msgid ""
 "The document %1$s has unsaved changes.\n"
@@ -35127,7 +35123,7 @@ msgstr ""
 "\n"
 "Voulez-vous enregistrer le document ?"
 
-#: src/frontends/qt/GuiView.cpp:3678
+#: src/frontends/qt/GuiView.cpp:3708
 #, c-format
 msgid ""
 "Document \n"
@@ -35139,37 +35135,37 @@ msgstr ""
 "a été modifié par une application externe. Le recharger maintenant ? Toutes "
 "les modifications locales seront perdues."
 
-#: src/frontends/qt/GuiView.cpp:3681
+#: src/frontends/qt/GuiView.cpp:3711
 msgid "Reload externally changed document?"
 msgstr "Recharger le document modifié par une application externe ?"
 
-#: src/frontends/qt/GuiView.cpp:3726
+#: src/frontends/qt/GuiView.cpp:3756
 msgid "Document could not be checked in."
 msgstr "Impossible d'enregistrer les changements."
 
-#: src/frontends/qt/GuiView.cpp:3769
+#: src/frontends/qt/GuiView.cpp:3799
 msgid "Error when setting the locking property."
 msgstr "Erreur lors du positionnement de la propriété de verrouillage."
 
-#: src/frontends/qt/GuiView.cpp:3818
+#: src/frontends/qt/GuiView.cpp:3848
 msgid "Directory is not accessible."
 msgstr "Répertoire inaccessible."
 
-#: src/frontends/qt/GuiView.cpp:3895
+#: src/frontends/qt/GuiView.cpp:3925
 #, c-format
 msgid "Opening child document %1$s..."
 msgstr "Ouverture du sous-document %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:3953
+#: src/frontends/qt/GuiView.cpp:3983
 #, c-format
 msgid "No buffer for file: %1$s."
 msgstr "Pas de tampon pour le fichier : %1$s."
 
-#: src/frontends/qt/GuiView.cpp:3963
+#: src/frontends/qt/GuiView.cpp:3993
 msgid "Inverse Search Failed"
 msgstr "Échec de la recherche inversée"
 
-#: src/frontends/qt/GuiView.cpp:3964
+#: src/frontends/qt/GuiView.cpp:3994
 msgid ""
 "Invalid position requested by inverse search.\n"
 "You may need to update the viewed document."
@@ -35177,35 +35173,35 @@ msgstr ""
 "Position requise par la recherche inversée invalide.\n"
 "Vous devriez peut-être mettre à jour le document dans la visionneuse."
 
-#: src/frontends/qt/GuiView.cpp:4044
+#: src/frontends/qt/GuiView.cpp:4074
 msgid "Export Error"
 msgstr "Exporter l'erreur"
 
-#: src/frontends/qt/GuiView.cpp:4045
+#: src/frontends/qt/GuiView.cpp:4075
 msgid "Error cloning the Buffer."
 msgstr "Erreur lors du clonage du tampon."
 
-#: src/frontends/qt/GuiView.cpp:4196 src/frontends/qt/GuiView.cpp:4216
+#: src/frontends/qt/GuiView.cpp:4226 src/frontends/qt/GuiView.cpp:4246
 msgid "Exporting ..."
 msgstr "Exportation en cours..."
 
-#: src/frontends/qt/GuiView.cpp:4225
+#: src/frontends/qt/GuiView.cpp:4255
 msgid "Previewing ..."
 msgstr "Visionnement en cours..."
 
-#: src/frontends/qt/GuiView.cpp:4263
+#: src/frontends/qt/GuiView.cpp:4293
 msgid "Document not loaded"
 msgstr "Le document n'a pas été chargé"
 
-#: src/frontends/qt/GuiView.cpp:4350
+#: src/frontends/qt/GuiView.cpp:4380
 msgid "Select file to insert"
 msgstr "Choisir le fichier à insérer"
 
-#: src/frontends/qt/GuiView.cpp:4353
+#: src/frontends/qt/GuiView.cpp:4383
 msgid "All Files (*)"
 msgstr "Tous les fichiers (*)"
 
-#: src/frontends/qt/GuiView.cpp:4381
+#: src/frontends/qt/GuiView.cpp:4411
 #, c-format
 msgid ""
 "The current version will be lost. Are you sure you want to load the version "
@@ -35214,7 +35210,7 @@ msgstr ""
 "La version actuelle sera perdue. Êtes-vous sûr de vouloir revenir à la "
 "dernière version enregistrée du document %1$s ?"
 
-#: src/frontends/qt/GuiView.cpp:4388
+#: src/frontends/qt/GuiView.cpp:4418
 #, c-format
 msgid ""
 "Any changes will be lost. Are you sure you want to revert to the saved "
@@ -35223,61 +35219,61 @@ msgstr ""
 "Toutes les modifications seront perdues. Êtes-vous sûr de vouloir revenir à "
 "la dernière version enregistrée du document %1$s ?"
 
-#: src/frontends/qt/GuiView.cpp:4391
+#: src/frontends/qt/GuiView.cpp:4421
 msgid "Revert to saved document?"
 msgstr "Revenir à la sauvegarde du document ?"
 
-#: src/frontends/qt/GuiView.cpp:4408
+#: src/frontends/qt/GuiView.cpp:4438
 msgid "Buffer export reset."
 msgstr "RaZ exportation du tampon."
 
-#: src/frontends/qt/GuiView.cpp:4431
+#: src/frontends/qt/GuiView.cpp:4461
 msgid "Saving all documents..."
 msgstr "Enregistrement de tous les documents..."
 
-#: src/frontends/qt/GuiView.cpp:4441
+#: src/frontends/qt/GuiView.cpp:4471
 msgid "All documents saved."
 msgstr "Tous les documents sont enregistrés."
 
-#: src/frontends/qt/GuiView.cpp:4480
+#: src/frontends/qt/GuiView.cpp:4510
 msgid "Developer mode is now enabled."
 msgstr "Le mode « développeur » est maintenant actif."
 
-#: src/frontends/qt/GuiView.cpp:4482
+#: src/frontends/qt/GuiView.cpp:4512
 msgid "Developer mode is now disabled."
 msgstr "Le mode « développeur » est maintenant inactif."
 
-#: src/frontends/qt/GuiView.cpp:4514
+#: src/frontends/qt/GuiView.cpp:4544
 msgid "Toolbars unlocked."
 msgstr "Barres d'outils déverrouillées."
 
-#: src/frontends/qt/GuiView.cpp:4516
+#: src/frontends/qt/GuiView.cpp:4546
 msgid "Toolbars locked."
 msgstr "Barres d'outils verrouillées."
 
-#: src/frontends/qt/GuiView.cpp:4528
+#: src/frontends/qt/GuiView.cpp:4558
 #, c-format
 msgid "Icon size set to %1$dx%2$d."
 msgstr "Taille d'icône réglée à %1$dx%2$d."
 
-#: src/frontends/qt/GuiView.cpp:4617
+#: src/frontends/qt/GuiView.cpp:4647
 #, c-format
 msgid "%1$s unknown command!"
 msgstr "%1$s : commande inconnue !"
 
-#: src/frontends/qt/GuiView.cpp:4721
+#: src/frontends/qt/GuiView.cpp:4751
 msgid "Zoom level is now %1$d% (default value: %2$d%)"
 msgstr "Le niveau de zoom est maintenant %1$d% (valeur implicite : %2$d%)"
 
-#: src/frontends/qt/GuiView.cpp:4780
+#: src/frontends/qt/GuiView.cpp:4810
 msgid "Please, preview the document first."
 msgstr "Merci d'afficher d'abord un aperçu du document."
 
-#: src/frontends/qt/GuiView.cpp:4796
+#: src/frontends/qt/GuiView.cpp:4826
 msgid "Couldn't proceed."
 msgstr "Impossible de poursuivre."
 
-#: src/frontends/qt/GuiView.cpp:5151
+#: src/frontends/qt/GuiView.cpp:5183
 msgid "Disable Shell Escape"
 msgstr "Désactiver shell escape"
 
@@ -35290,27 +35286,27 @@ msgstr "Aperçu de code"
 msgid "%1[[preview format name]] Preview"
 msgstr "%1, aperçu"
 
-#: src/frontends/qt/GuiWorkArea.cpp:1530
+#: src/frontends/qt/GuiWorkArea.cpp:1527
 msgid "Close File"
 msgstr "Fermer le fichier"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2072
+#: src/frontends/qt/GuiWorkArea.cpp:2069
 msgid "%1 (read only)"
 msgstr "%1 (en lecture seule)"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2080
+#: src/frontends/qt/GuiWorkArea.cpp:2077
 msgid "%1 (modified externally)"
 msgstr "%1 (modifié par une application externe)"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2103
+#: src/frontends/qt/GuiWorkArea.cpp:2100
 msgid "Hide tab"
 msgstr "Cacher l'onglet"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2109
+#: src/frontends/qt/GuiWorkArea.cpp:2106
 msgid "Close tab"
 msgstr "Fermer l'onglet"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2148
+#: src/frontends/qt/GuiWorkArea.cpp:2145
 msgid "<b>The file %1 changed on disk.</b>"
 msgstr "<b>Le fichier %1 a changé sur le disque.</b>"
 
@@ -36077,15 +36073,15 @@ msgstr "ERREUR : type de flottant non existant : %1$s"
 msgid "float"
 msgstr "flottant"
 
-#: src/insets/InsetFloat.cpp:903
+#: src/insets/InsetFloat.cpp:911
 msgid "Float: "
 msgstr "Flottant : "
 
-#: src/insets/InsetFloat.cpp:906
+#: src/insets/InsetFloat.cpp:914
 msgid "Subfloat: "
 msgstr "Sous-flottant : "
 
-#: src/insets/InsetFloat.cpp:916
+#: src/insets/InsetFloat.cpp:924
 msgid " (sideways)"
 msgstr " (couché)"
 
@@ -37336,28 +37332,28 @@ msgstr "%1$d chaînes remplacées dans le sélection."
 msgid "%1$d strings have been replaced."
 msgstr "%1$d chaînes remplacées."
 
-#: src/lyxfind.cpp:4483
+#: src/lyxfind.cpp:4508
 msgid "One match has been replaced."
 msgstr "Une correspondance a été remplacée."
 
-#: src/lyxfind.cpp:4486
+#: src/lyxfind.cpp:4511
 msgid "Two matches have been replaced."
 msgstr "Deux correspondances ont été remplacées."
 
-#: src/lyxfind.cpp:4489
+#: src/lyxfind.cpp:4514
 #, c-format
 msgid "%1$d matches have been replaced."
 msgstr "%1$d correspondances ont été remplacées."
 
-#: src/lyxfind.cpp:4495
+#: src/lyxfind.cpp:4520
 msgid "Match not found."
 msgstr "Chaîne de caractères introuvable."
 
-#: src/lyxfind.cpp:4501
+#: src/lyxfind.cpp:4526
 msgid "Match has been replaced."
 msgstr "Chaîne de caractères remplacée."
 
-#: src/lyxfind.cpp:4503
+#: src/lyxfind.cpp:4528
 msgid "Match found."
 msgstr "Chaîne de caractères reconnue."
 
@@ -37401,27 +37397,27 @@ msgstr "Décoration : %1$s"
 msgid "Environment: %1$s"
 msgstr "Environnement : %1$s"
 
-#: src/mathed/InsetMathGrid.cpp:1720
+#: src/mathed/InsetMathGrid.cpp:1725
 msgid "Cursor not in table"
 msgstr "Le curseur n'est pas dans le tableau"
 
-#: src/mathed/InsetMathGrid.cpp:1725
+#: src/mathed/InsetMathGrid.cpp:1730
 msgid "Only one row"
 msgstr "Une seule ligne"
 
-#: src/mathed/InsetMathGrid.cpp:1731
+#: src/mathed/InsetMathGrid.cpp:1736
 msgid "Only one column"
 msgstr "Une seule colonne"
 
-#: src/mathed/InsetMathGrid.cpp:1739
+#: src/mathed/InsetMathGrid.cpp:1744
 msgid "No hline to delete"
 msgstr "Pas de ligne horizontale à supprimer"
 
-#: src/mathed/InsetMathGrid.cpp:1748
+#: src/mathed/InsetMathGrid.cpp:1753
 msgid "No vline to delete"
 msgstr "Pas de ligne verticale à supprimer"
 
-#: src/mathed/InsetMathGrid.cpp:1777
+#: src/mathed/InsetMathGrid.cpp:1782
 #, c-format
 msgid "Unknown tabular feature '%1$s'"
 msgstr "Option de tableau inconnue '%1$s'"
@@ -37492,7 +37488,7 @@ msgstr "entré en mode texte math (textrm)"
 msgid "Regular expression editor mode"
 msgstr "Mode d'édition « expression régulière »"
 
-#: src/mathed/InsetMathNest.cpp:1942
+#: src/mathed/InsetMathNest.cpp:1948
 #, c-format
 msgid "Cannot apply %1$s here."
 msgstr "Impossible d'appliquer %1$s ici."
@@ -37556,11 +37552,11 @@ msgstr ""
 "Impossible d'ouvrir le document\n"
 "%1$s."
 
-#: src/output_latex.cpp:1626
+#: src/output_latex.cpp:1650
 msgid "Error in latexParagraphs"
 msgstr "Erreur dans latexParagraphs"
 
-#: src/output_latex.cpp:1627
+#: src/output_latex.cpp:1651
 #, c-format
 msgid ""
 "You are using at least one layout (%1$s) intended for the title, after using "
@@ -37948,6 +37944,12 @@ msgstr ""
 msgid "Unknown user"
 msgstr "Utilisateur inconnu"
 
+#~ msgid "PDF-form"
+#~ msgstr "Formulaire PDF"
+
+#~ msgid "Linguisticsnew"
+#~ msgstr "Linguisticsnew"
+
 #~ msgid "Preferred &Language:"
 #~ msgstr "Lan&gue préférée :"
 

commit d08583089543e4f2b292937676e85370059e7d5a
Author: jpc <jpc at lyx.org>
Date:   Thu Jan 13 17:33:36 2022 +0100

              Update branch inset inversion explanation

diff --git a/lib/doc/fr/UserGuide.lyx b/lib/doc/fr/UserGuide.lyx
index 7712af2..58caa2c 100644
--- a/lib/doc/fr/UserGuide.lyx
+++ b/lib/doc/fr/UserGuide.lyx
@@ -9104,14 +9104,12 @@ Verbatim
 \end_layout
 
 \begin_layout Verbatim
-
 This is Verbatim.
 \end_layout
 
 \begin_layout Verbatim
 \noindent
 \align block
-
 The following 2 lines are empty:
 \end_layout
 
@@ -9124,7 +9122,6 @@ The following 2 lines are empty:
 \end_layout
 
 \begin_layout Verbatim
-
 Almost everything is allowed in Verbatim:"%&$§#~'`
 \backslash
 }][{|
@@ -9157,7 +9154,6 @@ Verbatim
 \end_layout
 
 \begin_layout Verbatim*
-
 This is Verbatim*.
 \end_layout
 
@@ -34791,9 +34787,9 @@ Il existe aussi des inserts de branche inversée, dont le contenu est imprimé
 \emph on
 pas
 \emph default
- active.
- Ceci facilite la saisie de texte alternatif pour différentes versions d'un
- document.
+ active (l'inversion est indiquée par une ~ avant le nom).
+ De tels inserts facilitent la saisie de texte alternatif pour différentes
+ versions d'un document.
  Pour sélectionner l'inversion d'un insert donné, faites un clic droit sur
  le bouton d'insert et choisissez 
 \family sans

commit 854fbc52621f3ecdced7cada98d72da8e8e35428
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Thu Jan 13 17:09:42 2022 +0100

    Revert "Add UI for selecting backing store drawing strategy"
    
    The need for this variable is too rare to deserve being exposed in UI.
    
    This reverts commit a3fd3a09f1aa0b6003fc3cf033e970bb7547a983.

diff --git a/src/frontends/qt/GuiPrefs.cpp b/src/frontends/qt/GuiPrefs.cpp
index 40c0638..2b6b9cd 100644
--- a/src/frontends/qt/GuiPrefs.cpp
+++ b/src/frontends/qt/GuiPrefs.cpp
@@ -1328,7 +1328,6 @@ PrefDisplay::PrefDisplay(GuiPreferences * form)
 	connect(previewSizeSB, SIGNAL(valueChanged(double)), this, SIGNAL(changed()));
 	connect(paragraphMarkerCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
 	connect(ctAdditionsUnderlinedCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
-	connect(ctUseBackingstoreCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
 }
 
 
@@ -1356,8 +1355,6 @@ void PrefDisplay::applyRC(LyXRC & rc) const
 	rc.preview_scale_factor = previewSizeSB->value();
 	rc.paragraph_markers = paragraphMarkerCB->isChecked();
 	rc.ct_additions_underlined = ctAdditionsUnderlinedCB->isChecked();
-	rc.draw_strategy = ctUseBackingstoreCB->isChecked()
-		? LyXRC::DS_BACKINGSTORE : LyXRC::DS_PARTIAL;
 
 	// FIXME!! The graphics cache no longer has a changeDisplay method.
 #if 0
@@ -1387,8 +1384,6 @@ void PrefDisplay::updateRC(LyXRC const & rc)
 	previewSizeSB->setValue(rc.preview_scale_factor);
 	paragraphMarkerCB->setChecked(rc.paragraph_markers);
 	ctAdditionsUnderlinedCB->setChecked(rc.ct_additions_underlined);
-	ctUseBackingstoreCB->setChecked(rc.draw_strategy == LyXRC::DS_BACKINGSTORE);
-	ctUseBackingstoreCB->setHidden(guiApp->needsBackingStore());
 	previewSizeSB->setEnabled(
 		rc.display_graphics
 		&& rc.preview != LyXRC::PREVIEW_OFF);
diff --git a/src/frontends/qt/ui/PrefDisplayUi.ui b/src/frontends/qt/ui/PrefDisplayUi.ui
index 9c09b45..d8a79eb 100644
--- a/src/frontends/qt/ui/PrefDisplayUi.ui
+++ b/src/frontends/qt/ui/PrefDisplayUi.ui
@@ -83,7 +83,7 @@
      </property>
     </spacer>
    </item>
-   <item row="5" column="0">
+   <item row="4" column="0">
     <spacer>
      <property name="orientation">
       <enum>Qt::Vertical</enum>
@@ -158,16 +158,6 @@
      </property>
     </widget>
    </item>
-   <item row="4" column="0" colspan="2">
-    <widget class="QCheckBox" name="ctUseBackingstoreCB">
-     <property name="toolTip">
-      <string>If this is checked, an intermediate surface will be used for painting. This may be needed in some cases to have proper display, but breaks subpixel aliasing.</string>
-     </property>
-     <property name="text">
-      <string>Use &backing store to display text</string>
-     </property>
-    </widget>
-   </item>
   </layout>
  </widget>
  <tabstops>

commit 61d062633cf573ddc1bc3067ff5baf6d62ee9a6c
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Dec 28 20:56:57 2021 +0100

    Better handling of trailing spaces in rows.
    
    When a string is broken at the margin by the Qt algorithm, the space
    at which breaking occurred is automatically skipped in width
    computation. However, the ending space of the string is taken into
    account and is visible for example at paragraph end.
    
    When the trailing space is followed by a displayed inset, then the
    space should be skipped too, which means that the width of the last
    row element has to be recomputed. For the sake of performance, the
    width of the element without trailing spaces is computed in advance in
    FontMetrics::breakString.
    
    This "no space" width will be used when trimming a row element of its trailing
    spaces instead of the original one.
    
    Additionally, do not trim trailing spaces when the row is flushed.
    
    Fixes bug #12449.

diff --git a/src/Row.cpp b/src/Row.cpp
index 6d6d319..423768f 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -172,6 +172,7 @@ bool Row::Element::splitAt(int const width, int next_width, bool force,
 		e.str = str.substr(i, brk.len);
 		e.endpos = e.pos + brk.len;
 		e.dim.wid = brk.wid;
+		e.nspc_wid = brk.nspc_wid;
 		e.row_flags = CanBreakInside | BreakAfter;
 		if (first) {
 			// this element eventually goes to *this
@@ -218,6 +219,7 @@ void Row::Element::rtrim()
 	 */
 	str = support::rtrim(str);
 	endpos = pos + str.length();
+	dim.wid = nspc_wid;
 }
 
 
@@ -338,7 +340,8 @@ ostream & operator<<(ostream & os, Row const & row)
 	   << " descent: " << row.dim_.des
 	   << " separator: " << row.separator
 	   << " label_hfill: " << row.label_hfill
-	   << " row_boundary: " << row.right_boundary() << "\n";
+	   << " right_boundary: " << row.right_boundary()
+	   << " flushed: " << row.flushed() << "\n";
 	// We cannot use the operator above, unfortunately
 	double x = row.left_margin;
 	for (Row::Element const & e : row.elements_) {
diff --git a/src/Row.h b/src/Row.h
index 2c60638..aba7913 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -119,9 +119,11 @@ public:
 		pos_type pos;
 		// first position after the element in the paragraph
 		pos_type endpos;
-		// The dimension of the chunk (does not contains the
+		// The dimension of the chunk (does not contain the
 		// separator correction)
 		Dimension dim;
+		// The width of the element without trailing spaces
+		int nspc_wid = 0;
 
 		// Non-zero only if element is an inset
 		Inset const * inset = nullptr;
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 2cf3ce9..0c87d10 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1069,7 +1069,7 @@ void cleanupRow(Row & row, bool at_end)
 
 	row.endpos(row.back().endpos);
 	// remove trailing spaces on row break
-	if (!at_end)
+	if (!at_end && !row.flushed())
 		row.back().rtrim();
 	// boundary exists when there was no space at the end of row
 	row.right_boundary(!at_end && row.back().endpos == row.endpos());
@@ -1118,9 +1118,9 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 		                             : fcit->row_flags;
 		if (rows.empty() || needsRowBreak(f1, f2)) {
 			if (!rows.empty()) {
-				cleanupRow(rows.back(), false);
 				// Flush row as requested by row flags
 				rows.back().flushed((f1 & Flush) || (f2 & FlushBefore));
+				cleanupRow(rows.back(), false);
 			}
 			pos_type pos = rows.empty() ? 0 : rows.back().endpos();
 			rows.push_back(newRow(*this, bigrow.pit(), pos, is_rtl));
@@ -1155,9 +1155,9 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 	}
 
 	if (!rows.empty()) {
-		cleanupRow(rows.back(), true);
 		// Last row in paragraph is flushed
 		rows.back().flushed(true);
+		cleanupRow(rows.back(), true);
 	}
 
 	return rows;
diff --git a/src/frontends/FontMetrics.h b/src/frontends/FontMetrics.h
index b78bc2d..66cd22d 100644
--- a/src/frontends/FontMetrics.h
+++ b/src/frontends/FontMetrics.h
@@ -126,9 +126,14 @@ public:
 
 	// The places where to break a string and the width of the resulting lines.
 	struct Break {
-		Break(int l, int w) : len(l), wid(w) {}
+		Break(int l, int w, int nsw) : len(l), wid(w), nspc_wid(nsw) {}
+		// Number of characters
 		int len = 0;
+		// text width
 		int wid = 0;
+		// text width when trailing spaces are removed; only makes a
+		// difference for the last break.
+		int nspc_wid = 0;
 	};
 	typedef std::vector<Break> Breaks;
 	/**
diff --git a/src/frontends/qt/GuiFontMetrics.cpp b/src/frontends/qt/GuiFontMetrics.cpp
index e638e10..0dc0de5 100644
--- a/src/frontends/qt/GuiFontMetrics.cpp
+++ b/src/frontends/qt/GuiFontMetrics.cpp
@@ -19,7 +19,6 @@
 
 #include "support/convert.h"
 #include "support/lassert.h"
-#include "support/lstrings.h"
 #include "support/lyxlib.h"
 #include "support/debug.h"
 
@@ -579,9 +578,6 @@ GuiFontMetrics::breakString_helper(docstring const & s, int first_wid, int wid,
 	 */
 	to.setWrapMode(force ? QTextOption::WrapAtWordBoundaryOrAnywhere
 	                     : QTextOption::WordWrap);
-	// Let QTextLine::naturalTextWidth() account for trailing spaces
-	// (horizontalAdvance() still does not).
-	to.setFlags(QTextOption::IncludeTrailingSpaces);
 	tl.setTextOption(to);
 
 	bool first = true;
@@ -600,26 +596,43 @@ GuiFontMetrics::breakString_helper(docstring const & s, int first_wid, int wid,
 	int pos = 0;
 	for (int i = 0 ; i < tl.lineCount() ; ++i) {
 		QTextLine const & line = tl.lineAt(i);
-		int const epos = brkstr2str_pos(qs, s, line.textStart() + line.textLength());
+		int const line_epos = line.textStart() + line.textLength();
+		int const epos = brkstr2str_pos(qs, s, line_epos);
 #if QT_VERSION >= 0x050000
-		int const wid = i + 1 < tl.lineCount() ? iround(line.horizontalAdvance())
-		                                       : iround(line.naturalTextWidth());
+		// This does not take trailing spaces into account, except for the last line.
+		int const wid = iround(line.naturalTextWidth());
+		// If the line is not the last one, trailing space is always omitted.
+		int nspc_wid = wid;
+		// For the last line, compute the width without trailing space
+		if (i + 1 == tl.lineCount()) {
+			// trim_pos points to the last character that is not a space
+			auto trim_pos = s.find_last_not_of(from_ascii(" "));
+			if (trim_pos == docstring::npos)
+				nspc_wid = 0;
+			else if (trim_pos + 1 < s.length()) {
+				int const num_spaces = s.length() - trim_pos - 1;
+				// find the position on the line before trailing
+				// spaces. Remove 1 to account for the ending
+				// non-breaking space of qs.
+				nspc_wid = iround(line.cursorToX(line_epos - num_spaces - 1));
+			}
+		}
 #else
 		// With some monospace fonts, the value of horizontalAdvance()
 		// can be wrong with Qt4. One hypothesis is that the invisible
 		// characters that we use are given a non-null width.
 		// FIXME: this is slower than it could be but we'll get rid of Qt4 anyway
-		int const wid = i + 1 < tl.lineCount() ? width(rtrim(s.substr(pos, epos - pos)))
-		                                       : width(s.substr(pos, epos - pos));
+		docstring const ss = s.substr(pos, epos - pos);
+		int const wid = width(ss);
+		int const nspc_wid = i + 1 < tl.lineCount() ? wid : width(trim(ss));
 #endif
-		breaks.emplace_back(epos - pos, wid);
+		breaks.emplace_back(epos - pos, wid, nspc_wid);
 		pos = epos;
 #if 0
 		// FIXME: should it be kept in some form?
 		if ((force && line.textLength() == brkStrOffset) || line_wid > x)
 			return {-1, line_wid};
 #endif
-
 	}
 
 	return breaks;

commit 28a1744dcd451c36a1f0724aa6afe08de4a8d6a6
Author: Stephan Witt <switt at lyx.org>
Date:   Mon Jan 10 07:48:54 2022 +0100

    #12157 Replace old with new banner in DMG background image

diff --git a/development/LyX-Mac-binary-release.sh b/development/LyX-Mac-binary-release.sh
index 25b1c7a..017a610 100644
--- a/development/LyX-Mac-binary-release.sh
+++ b/development/LyX-Mac-binary-release.sh
@@ -332,7 +332,7 @@ QtBuildDir=${QtBuildDir:-"${LyxBuildDir}"/${QtBuildSubDir:-"qt-build"}}
 
 DictionarySourceDir=${DICTIONARYDIR:-$(dirname "${LyxSourceDir}")/dictionaries}
 DocumentationDir=$(dirname "${LyxSourceDir}")/Documents
-DmgBackground="${LyxSourceDir}"/development/MacOSX/dmg-background.png
+DmgBackground="${LyxSourceDir}"/development/MacOSX/dmg-background.tiff
 
 if [ -z "${LyXVersion}" ]; then
 	LyXVersion=$(grep AC_INIT "${LyxSourceDir}"/configure.ac | cut -d, -f2 | tr -d " []()")
@@ -959,7 +959,7 @@ set_bundle_display_options() {
 	X_BOUNDS=$2
 	Y_BOUNDS=$3
 	Y_POSITION=$((Y_BOUNDS - 65))
-	Y_BOUNDS=$((Y_BOUNDS + 20))
+	Y_BOUNDS=$((Y_BOUNDS + 50))
 	LYX_X_POSITION=$((X_BOUNDS / 4))
 	LYX_Y_POSITION=$Y_POSITION
 	APP_X_POSITION=$((3 * X_BOUNDS / 4))
@@ -997,10 +997,19 @@ set_bundle_display_options() {
 EOF
 }
 
+# The image was made with with inkscape and tiffutil from dmg-background.svgz
+make_image() {
+	INKSCAPE=/Applications/Inkscape.app/Contents/MacOS/inkscape
+	cd "${LyxSourceDir}"/development/MacOSX
+	${INKSCAPE} --export-type=png -w 560 -o dmg-background.png dmg-background.svgz
+	${INKSCAPE} --export-type=png -w 1120 -o dmg-background at 2x.png dmg-background.svgz
+	tiffutil -cathidpicheck dmg-background.png dmg-background at 2x.png -out dmg-background.tiff
+}
+
 make_dmg() {
 	cd "${1}"
 
-	BGSIZE=$(file "$DmgBackground" | awk -F , '/PNG/{print $2 }' | tr x ' ')
+	BGSIZE=$(file "$DmgBackground" | awk -F , '/TIFF/{ print $10 $4 ;}/PNG/{ print $2; }'|sed -e 's/width=//' -e 's/height=//' -e 's/x//')
 	BG_W=$(echo ${BGSIZE} | awk '{print $1 }')
 	BG_H=$(echo ${BGSIZE} | awk '{print $2 }')
 
diff --git a/development/MacOSX/dmg-background.png b/development/MacOSX/dmg-background.png
index 1a513a8..b6feca5 100644
Binary files a/development/MacOSX/dmg-background.png and b/development/MacOSX/dmg-background.png differ
diff --git a/development/MacOSX/dmg-background.svgz b/development/MacOSX/dmg-background.svgz
new file mode 100644
index 0000000..db0d3d6
Binary files /dev/null and b/development/MacOSX/dmg-background.svgz differ
diff --git a/development/MacOSX/dmg-background.tiff b/development/MacOSX/dmg-background.tiff
new file mode 100644
index 0000000..15651a8
Binary files /dev/null and b/development/MacOSX/dmg-background.tiff differ
diff --git a/development/MacOSX/dmg-background at 2x.png b/development/MacOSX/dmg-background at 2x.png
new file mode 100644
index 0000000..e5b5a3b
Binary files /dev/null and b/development/MacOSX/dmg-background at 2x.png differ

commit 678ab325c0a38b475a60a9045691789d115b2491
Author: Stephan Witt <switt at lyx.org>
Date:   Sun Jan 9 22:33:43 2022 +0100

    #12423 fix a focus change problem
    
    The search widget triggers a showEvent() in updateTitle() leading to setting the focus to the default push button.
    The check in updateTitle() for the need to restore the title avoids superfluous show events and avoids the unwanted focus change.

diff --git a/src/frontends/qt/GuiSearch.cpp b/src/frontends/qt/GuiSearch.cpp
index e387ce8..f12d42c 100644
--- a/src/frontends/qt/GuiSearch.cpp
+++ b/src/frontends/qt/GuiSearch.cpp
@@ -649,9 +649,10 @@ void GuiSearch::updateTitle()
 		// remove title bar
 		setTitleBarWidget(new QWidget());
 		titleBarWidget()->hide();
-	} else
+	} else if (titleBarWidget()) {
 		// restore title bar
 		setTitleBarWidget(nullptr);
+	}
 }
 
 

commit 22045e455aeb1ecec4507331e4e171bdf21c116d
Author: Stephan Witt <switt at lyx.org>
Date:   Sun Jan 9 12:29:02 2022 +0100

    #12434 add GUI debug messages for pinch-to-zoom gesture

diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index 91e8229..5cf4fce 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -1632,11 +1632,15 @@ bool GuiView::event(QEvent * e)
 		if (gp) {
 			QPinchGesture *pinch = static_cast<QPinchGesture *>(gp);
 			QPinchGesture::ChangeFlags changeFlags = pinch->changeFlags();
+			qreal totalScaleFactor = pinch->totalScaleFactor();
+			LYXERR(Debug::GUI, "totalScaleFactor: " << totalScaleFactor);
 			if (pinch->state() == Qt::GestureStarted) {
 				initialZoom_ = lyxrc.currentZoom;
+				LYXERR(Debug::GUI, "initialZoom_: " << initialZoom_);
 			}
 			if (changeFlags & QPinchGesture::ScaleFactorChanged) {
-				qreal factor = initialZoom_ * pinch->totalScaleFactor();
+				qreal factor = initialZoom_ * totalScaleFactor;
+				LYXERR(Debug::GUI, "scaleFactor: " << factor);
 				zoomValueChanged(factor);
 			}
 		}

commit 7134ebd7938ee2f2e075d53b83a346b168a622c1
Author: Daniel Ramoeller <d.lyx at web.de>
Date:   Wed Jan 5 15:27:46 2022 +0100

    Pinch to zoom fix
    
    Amendment to fix for #12434.

diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index 6cd97f5..91e8229 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -1632,8 +1632,11 @@ bool GuiView::event(QEvent * e)
 		if (gp) {
 			QPinchGesture *pinch = static_cast<QPinchGesture *>(gp);
 			QPinchGesture::ChangeFlags changeFlags = pinch->changeFlags();
+			if (pinch->state() == Qt::GestureStarted) {
+				initialZoom_ = lyxrc.currentZoom;
+			}
 			if (changeFlags & QPinchGesture::ScaleFactorChanged) {
-				qreal factor = lyxrc.currentZoom*pinch->scaleFactor();
+				qreal factor = initialZoom_ * pinch->totalScaleFactor();
 				zoomValueChanged(factor);
 			}
 		}
diff --git a/src/frontends/qt/GuiView.h b/src/frontends/qt/GuiView.h
index 145a1f2..9ad3610 100644
--- a/src/frontends/qt/GuiView.h
+++ b/src/frontends/qt/GuiView.h
@@ -526,6 +526,9 @@ private:
 
 	// developer mode
 	bool devel_mode_;
+
+	// initial zoom for pinch gesture
+	int initialZoom_;
 };
 
 

commit 65394e1907cbbac7de76cc0c461454cc8e0e89dc
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sat Jan 8 23:03:15 2022 +0100

    fix file name

diff --git a/src/LayoutModuleList.h b/src/LayoutModuleList.h
index 868c1cf..6018029 100644
--- a/src/LayoutModuleList.h
+++ b/src/LayoutModuleList.h
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 /**
- * \file ModuleList.h
+ * \file LayoutModuleList.h
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *

commit 1ed9257c6dc57fc11990b86d5774ac9a8e70cfa6
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Fri Jan 7 17:58:33 2022 +0100

    Document \draw_strategy in release notes
    
    Also trim some whitespace.

diff --git a/lib/RELEASE-NOTES b/lib/RELEASE-NOTES
index 0c7df0f..dc97f29 100644
--- a/lib/RELEASE-NOTES
+++ b/lib/RELEASE-NOTES
@@ -19,14 +19,14 @@
 * Ctrl-click on a cross-reference will now take you to its label.
 
 * Default shortcuts for saving bookmarks have been changed to Alt-NUM, where
-  NUM is the number of the bookmark. (They were previously Shift-F1, etc.) 
+  NUM is the number of the bookmark. (They were previously Shift-F1, etc.)
 
 * This allows Shift-F3 to be used for word-find-backwards (i.e., find previous)
   on Linux and Windows.
 
 * The shortcut to use the selection for a find on macOS is now Cmd-E, as is the
   Apple standard.  The shortcut for find the next occurrence of the current
-  find buffer text is Cmd-G.  The shortcut for toggle of font emphasis has been 
+  find buffer text is Cmd-G.  The shortcut for toggle of font emphasis has been
   changed to Cmd-Ctrl-E.
 
 * Continuous spellcheck is now on by default, but only if the user does not have
@@ -48,12 +48,12 @@
 
 * Documents that use TeX fonts can only be compiled with XeTeX if the input
   encoding is set to "utf8-plain" or "ascii".
-  
-* DocBook support has been revamped and now targets DocBook 5 (i.e. 
-  only XML, SGML is gone). Some supporting files for the previous 
-  implementation have been removed: all examples (lib/examples), 
-  some layouts (existing documents should still work, but with a 
-  DocBook 5 output instead of DocBook 4 SGML). The dependency on 
+
+* DocBook support has been revamped and now targets DocBook 5 (i.e.
+  only XML, SGML is gone). Some supporting files for the previous
+  implementation have been removed: all examples (lib/examples),
+  some layouts (existing documents should still work, but with a
+  DocBook 5 output instead of DocBook 4 SGML). The dependency on
   sgmltools has been removed, this new support is always enabled.
   Having sgmltools installed or not will not change anything in LyX.
 
@@ -68,6 +68,11 @@
 * \citation_search_view lyxpaperview: determines whether external script "lyxpaperview"
   should be used for looking up citation source.
 
+* \draw_strategy partial|backingstore: when this is set to
+  "backingstore", the drawing code will force the use of an
+  intermediate surface, instead of just drawing changed regions on
+  screen. Note that "backingstore" is actually always enforced on
+  macOS and Wayland (default: partial).
 
 !!!The following pref variables were changed in 2.4:
 
@@ -164,7 +169,7 @@
 
 * The examples and templates directories have been completely re-organized.
   They are now much more structured (by means of layout categories) and thus
-  consist of many new subfolders. 
+  consist of many new subfolders.
 
 
 
@@ -232,7 +237,7 @@
 
 * Several ttf fonts (esint10.ttf, stmary10.ttf, wasy10.ttf) were changed
   to reflect the fact that newer Qt libraries do not support displaying certain
-  codepoints anymore (bug #8493, #10161). 
+  codepoints anymore (bug #8493, #10161).
   Distribution packagers need to repack those font files in case they are
   delivering the fonts as a separated package dependent from core LyX
   in order to display correctly math symbols like \oint.

commit d9b9307d14ea5cdf6e6e17d2ccba15048407a3cb
Author: Stephan Witt <switt at lyx.org>
Date:   Wed Jan 5 08:26:18 2022 +0100

    #12451 Adjust color cache on change of dark/light mode

diff --git a/src/frontends/qt/GuiApplication.cpp b/src/frontends/qt/GuiApplication.cpp
index 5cd8f29..b44f2c5 100644
--- a/src/frontends/qt/GuiApplication.cpp
+++ b/src/frontends/qt/GuiApplication.cpp
@@ -2322,6 +2322,12 @@ void GuiApplication::onLocaleChanged()
 }
 
 
+void GuiApplication::onPaletteChanged()
+{
+	colorCache().setPalette(palette());
+}
+
+
 void GuiApplication::handleKeyFunc(FuncCode action)
 {
 	char_type c = 0;
@@ -2977,6 +2983,11 @@ bool GuiApplication::event(QEvent * e)
 		e->accept();
 		return true;
 #endif
+	case QEvent::ApplicationPaletteChange: {
+		// runtime switch from/to dark mode
+		onPaletteChanged();
+		return QApplication::event(e);
+	}
 	default:
 		return QApplication::event(e);
 	}
diff --git a/src/frontends/qt/GuiApplication.h b/src/frontends/qt/GuiApplication.h
index f0c3e1e..e40815e 100644
--- a/src/frontends/qt/GuiApplication.h
+++ b/src/frontends/qt/GuiApplication.h
@@ -230,6 +230,8 @@ private Q_SLOTS:
 	///
 	void onLocaleChanged();
 	///
+	void onPaletteChanged();
+	///
 	void slotProcessFuncRequestQueue() { processFuncRequestQueue(); }
 	///
 #if (QT_VERSION >= 0x050100)

commit d44c63e2c67cad1bd0dda4cf3e0fa09df5b225ad
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Jan 4 18:58:55 2022 +0100

    Set current cursor font when toggling emphasize
    
    The change actually works for all font toggling with implicit selection.
    
    Fixes bug #12450.

diff --git a/src/Text2.cpp b/src/Text2.cpp
index 66dd083..9026740 100644
--- a/src/Text2.cpp
+++ b/src/Text2.cpp
@@ -425,6 +425,7 @@ void Text::toggleFree(Cursor & cur, Font const & font, bool toggleall)
 		cur.clearSelection();
 		cur.top() = resetCursor;
 		cur.resetAnchor();
+		cur.setCurrentFont();
 	}
 }
 

commit 109ea2be4a21ca93d22ab25703b3352a50fbbe3b
Author: José Matos <jamatos at lyx.org>
Date:   Tue Jan 4 00:21:34 2022 +0000

    Add new placeholder $${python} to configure
    
    This ensures that we use a consistent Python interpreter in LyX.
    
    $${python} is replaced by the Python version found.
    
    Users can apply this in preferences and use the same version defined by
    LyX.

diff --git a/lib/configure.py b/lib/configure.py
index 7d9b61c..17ef38f 100644
--- a/lib/configure.py
+++ b/lib/configure.py
@@ -653,7 +653,7 @@ def checkLatex(dtl_tools):
     if dtl_tools:
         # Windows only: DraftDVI
         addToRC(r'''\converter latex      dvi2       "%s"	"latex,hyperref-driver=dvips"
-\converter dvi2       dvi        "python -tt $$s/scripts/clean_dvi.py $$i $$o"	""''' % LATEX)
+\converter dvi2       dvi        "$${python} $$s/scripts/clean_dvi.py $$i $$o"	""''' % LATEX)
     else:
         addToRC(r'\converter latex      dvi        "%s"	"latex,hyperref-driver=dvips"' % LATEX)
     # no latex
@@ -943,7 +943,7 @@ def checkConverterEntries():
     checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex',
         'htmltolatex -input $$i -output $$o', 'htmltolatex.jar -input $$i -output $$o'],
         rc_entry = [ r'\converter html       latex      "%%"	""',
-                     r'\converter html       latex      "python -tt $$s/scripts/html2latexwrapper.py %% $$i $$o"	""',
+                     r'\converter html       latex      "$${python} $$s/scripts/html2latexwrapper.py %% $$i $$o"	""',
                      r'\converter html       latex      "%%"	""',
                      r'\converter html       latex      "%%"	""', '' ])
     #
@@ -964,8 +964,8 @@ def checkConverterEntries():
         ['elyxer.py --html --nofooter --unicode --directory $$r $$i $$o', 'elyxer --html --nofooter --unicode --directory $$r $$i $$o'],
         rc_entry = [ r'\converter lyx      word      "%%"	""' ])
     if elyxer.find('elyxer') >= 0:
-      addToRC(r'''\copier    html       "python -tt $$s/scripts/ext_copy.py -e html,png,jpg,jpeg,css $$i $$o"''')
-      addToRC(r'''\copier    wordhtml       "python -tt $$s/scripts/ext_copy.py -e html,png,jpg,jpeg,css $$i $$o"''')
+      addToRC(r'''\copier    html       "$${python} $$s/scripts/ext_copy.py -e html,png,jpg,jpeg,css $$i $$o"''')
+      addToRC(r'''\copier    wordhtml       "$${python} $$s/scripts/ext_copy.py -e html,png,jpg,jpeg,css $$i $$o"''')
     else:
       # search for HTML converters other than eLyXer
       # On SuSE the scripts have a .sh suffix, and on debian they are in /usr/share/tex4ht/
@@ -974,17 +974,17 @@ def checkConverterEntries():
           'latex2html -no_subdir -split 0 -show_section_numbers $$i', 'hevea -s $$i'],
           rc_entry = [ r'\converter latex      html       "%%"	"needaux"' ])
       if htmlconv.find('htlatex') >= 0 or htmlconv == 'latex2html':
-        addToRC(r'''\copier    html       "python -tt $$s/scripts/ext_copy.py -e html,png,css $$i $$o"''')
+        addToRC(r'''\copier    html       "$${python} $$s/scripts/ext_copy.py -e html,png,css $$i $$o"''')
       else:
-        addToRC(r'''\copier    html       "python -tt $$s/scripts/ext_copy.py $$i $$o"''')
+        addToRC(r'''\copier    html       "$${python} $$s/scripts/ext_copy.py $$i $$o"''')
       path, htmlconv = checkProg('a LaTeX -> HTML (MS Word) converter', ["htlatex $$i 'html,word' 'symbol/!' '-cvalidate'",
           "htlatex.sh $$i 'html,word' 'symbol/!' '-cvalidate'",
           "/usr/share/tex4ht/htlatex $$i 'html,word' 'symbol/!' '-cvalidate'"],
           rc_entry = [ r'\converter latex      wordhtml   "%%"	"needaux"' ])
       if htmlconv.find('htlatex') >= 0:
-        addToRC(r'''\copier    wordhtml       "python -tt $$s/scripts/ext_copy.py -e html,png,css $$i $$o"''')
+        addToRC(r'''\copier    wordhtml       "$${python} $$s/scripts/ext_copy.py -e html,png,css $$i $$o"''')
       else:
-        addToRC(r'''\copier    wordhtml       "python -tt $$s/scripts/ext_copy.py $$i $$o"''')
+        addToRC(r'''\copier    wordhtml       "$${python} $$s/scripts/ext_copy.py $$i $$o"''')
 
 
     # Check if LyXBlogger is installed
@@ -1015,9 +1015,9 @@ def checkConverterEntries():
         xpath = 'none'
     global java
     if xsltproc != '':
-        addToRC(r'\converter docbook5 epub "python $$s/scripts/docbook2epub.py none none \"' + xsltproc + r'\" ' + xpath + ' $$i $$r $$o" ""')
+        addToRC(r'\converter docbook5 epub "$${python} $$s/scripts/docbook2epub.py none none \"' + xsltproc + r'\" ' + xpath + ' $$i $$r $$o" ""')
     elif java != '':
-        addToRC(r'\converter docbook5 epub "python $$s/scripts/docbook2epub.py \"' + java + r'\" none none ' + xpath + ' $$i $$r $$o" ""')
+        addToRC(r'\converter docbook5 epub "$${python} $$s/scripts/docbook2epub.py \"' + java + r'\" none none ' + xpath + ' $$i $$r $$o" ""')
     #
     checkProg('a MS Word Office Open XML converter -> LaTeX', ['pandoc -s -f docx -o $$o -t latex $$i'],
         rc_entry = [ r'\converter word2      latex      "%%"	""' ])
@@ -1089,8 +1089,8 @@ def checkConverterEntries():
     # PDF produced using non-TeX fonts. This does not produce non-unique
     # conversion paths, since a given document either uses TeX fonts or not.
     checkProg('Ghostscript', ["gswin32c", "gswin64c", "gs"],
-        rc_entry = [ r'''\converter pdf2   pdf8       "python -tt $$s/scripts/convert_pdf.py $$i $$o ebook"	""
-\converter pdf4   pdf8       "python -tt $$s/scripts/convert_pdf.py $$i $$o ebook"	""''' ])
+        rc_entry = [ r'''\converter pdf2   pdf8       "$${python} $$s/scripts/convert_pdf.py $$i $$o ebook"	""
+\converter pdf4   pdf8       "$${python} $$s/scripts/convert_pdf.py $$i $$o ebook"	""''' ])
     #
     checkProg('a Beamer info extractor', ['makebeamerinfo -p $$i'],
         rc_entry = [ r'\converter pdf2         beamer.info        "%%"	""' ])
@@ -1116,24 +1116,24 @@ def checkConverterEntries():
 \converter fig        ppm        "fig2dev -L ppm $$i $$o"	""
 \converter fig        svg        "fig2dev -L svg $$i $$o"	""
 \converter fig        png        "fig2dev -L png $$i $$o"	""
-\converter fig        pdftex     "python -tt $$s/scripts/fig2pdftex.py $$i $$o"	""
-\converter fig        pstex      "python -tt $$s/scripts/fig2pstex.py $$i $$o"	""''')
+\converter fig        pdftex     "$${python} $$s/scripts/fig2pdftex.py $$i $$o"	""
+\converter fig        pstex      "$${python} $$s/scripts/fig2pstex.py $$i $$o"	""''')
     #
     if inkscape_stable:
         checkProg('a SVG -> PDFTeX converter', [inkscape_cl],
-            rc_entry = [ r'\converter svg        pdftex     "python -tt $$s/scripts/svg2pdftex.py %% $$p$$i $$p$$o" ""'],
+            rc_entry = [ r'\converter svg        pdftex     "$${python} $$s/scripts/svg2pdftex.py %% $$p$$i $$p$$o" ""'],
             path = [inkscape_path])
         #
         checkProg('a SVG -> PSTeX converter', [inkscape_cl],
-            rc_entry = [ r'\converter svg        pstex     "python -tt $$s/scripts/svg2pstex.py %% $$p$$i $$p$$o" ""'],
+            rc_entry = [ r'\converter svg        pstex     "$${python} $$s/scripts/svg2pstex.py %% $$p$$i $$p$$o" ""'],
             path = [inkscape_path])
     else:
         checkProg('a SVG -> PDFTeX converter', [inkscape_cl],
-            rc_entry = [ r'\converter svg        pdftex     "python -tt $$s/scripts/svg2pdftex.py --unstable %% $$p$$i $$p$$o" ""'],
+            rc_entry = [ r'\converter svg        pdftex     "$${python} $$s/scripts/svg2pdftex.py --unstable %% $$p$$i $$p$$o" ""'],
             path = [inkscape_path])
         #
         checkProg('a SVG -> PSTeX converter', [inkscape_cl],
-            rc_entry = [ r'\converter svg        pstex     "python -tt $$s/scripts/svg2pstex.py --unstable %% $$p$$i $$p$$o" ""'],
+            rc_entry = [ r'\converter svg        pstex     "$${python} $$s/scripts/svg2pstex.py --unstable %% $$p$$i $$p$$o" ""'],
             path = [inkscape_path])
     #
     checkProg('a TIFF -> PS converter', ['tiff2ps $$i > $$o'],
@@ -1248,7 +1248,7 @@ def checkConverterEntries():
     #
     checkProg('Gnuplot', ['gnuplot'],
         rc_entry = [ r'''\Format gnuplot     "gp, gnuplot"    "Gnuplot"     "" "" ""  "vector"	"text/plain"
-\converter gnuplot      pdf6      "python -tt $$s/scripts/gnuplot2pdf.py $$i $$o"    "needauth"''' ])
+\converter gnuplot      pdf6      "$${python} $$s/scripts/gnuplot2pdf.py $$i $$o"    "needauth"''' ])
     #
     # gnumeric/xls/ods to tex
     checkProg('a spreadsheet -> latex converter', ['ssconvert'],
@@ -1260,10 +1260,10 @@ def checkConverterEntries():
 \converter oocalc html_table "ssconvert --export-type=Gnumeric_html:html40frag $$i $$o" ""
 \converter excel  html_table "ssconvert --export-type=Gnumeric_html:html40frag $$i $$o" ""
 \converter excel2 html_table "ssconvert --export-type=Gnumeric_html:html40frag $$i $$o" ""
-\converter gnumeric xhtml_table "python $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
-\converter oocalc xhtml_table "python $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
-\converter excel  xhtml_table "python $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
-\converter excel2 xhtml_table "python $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
+\converter gnumeric xhtml_table "$${python} $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
+\converter oocalc xhtml_table "$${python} $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
+\converter excel  xhtml_table "$${python} $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
+\converter excel2 xhtml_table "$${python} $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
 '''])
 
     path, lilypond = checkProg('a LilyPond -> EPS/PDF/PNG converter', ['lilypond'])
@@ -1327,7 +1327,7 @@ def checkConverterEntries():
                     docbook_lilypond_cmd = cmd
                     if "python" in docbook_lilypond_cmd:
                         docbook_lilypond_cmd = '"' + path + '/lilypond-book"'
-                    addToRC(r'\copier docbook5 "python $$s/scripts/docbook_copy.py ' + docbook_lilypond_cmd.replace('"', r'\"') + r' $$i $$o"')
+                    addToRC(r'\copier docbook5 "$${python} $$s/scripts/docbook_copy.py ' + docbook_lilypond_cmd.replace('"', r'\"') + r' $$i $$o"')
 
                     logger.info('+  found LilyPond-book version %s.' % version_number)
 
@@ -1345,7 +1345,7 @@ def checkConverterEntries():
     # Currently, lyxpak outputs a gzip compressed tar archive on *nix
     # and a zip archive on Windows.
     # So, we configure the appropriate version according to the platform.
-    cmd = r'\converter lyx %s "python -tt $$s/scripts/lyxpak.py $$r/$$f" ""'
+    cmd = r'\converter lyx %s "$${python} $$s/scripts/lyxpak.py $$r/$$f" ""'
     if os.name == 'nt':
         addToRC(r'\Format lyxzip     zip    "LyX Archive (zip)"     "" "" ""  "document,menu=export"	""')
         addToRC(cmd % "lyxzip")
@@ -1359,24 +1359,24 @@ def checkConverterEntries():
     #
     # Entries that do not need checkProg
     addToRC(r'''
-\converter csv        lyx        "python -tt $$s/scripts/csv2lyx.py $$i $$o"	""
-\converter fen        asciichess "python -tt $$s/scripts/fen2ascii.py $$i $$o"	""
-\converter lyx        lyx13x     "python -tt $$s/lyx2lyx/lyx2lyx -V 1.3 -o $$o $$i"	""
-\converter lyx        lyx14x     "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o $$i"	""
-\converter lyx        lyx15x     "python -tt $$s/lyx2lyx/lyx2lyx -V 1.5 -o $$o $$i"	""
-\converter lyx        lyx16x     "python -tt $$s/lyx2lyx/lyx2lyx -V 1.6 -o $$o $$i"	""
-\converter lyx        lyx20x     "python -tt $$s/lyx2lyx/lyx2lyx -V 2.0 -o $$o $$i"	""
-\converter lyx        lyx21x     "python -tt $$s/lyx2lyx/lyx2lyx -V 2.1 -o $$o $$i"	""
-\converter lyx        lyx22x     "python -tt $$s/lyx2lyx/lyx2lyx -V 2.2 -o $$o $$i"	""
-\converter lyx        lyx23x     "python -tt $$s/lyx2lyx/lyx2lyx -V 2.3 -o $$o $$i"	""
-\converter lyx        clyx       "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c big5   $$i"	""
-\converter lyx        jlyx       "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_jp $$i"	""
-\converter lyx        klyx       "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_kr $$i"	""
-\converter clyx       lyx        "python -tt $$s/lyx2lyx/lyx2lyx -c big5   -o $$o $$i"	""
-\converter jlyx       lyx        "python -tt $$s/lyx2lyx/lyx2lyx -c euc_jp -o $$o $$i"	""
-\converter klyx       lyx        "python -tt $$s/lyx2lyx/lyx2lyx -c euc_kr -o $$o $$i"	""
-\converter lyxpreview png        "python -tt $$s/scripts/lyxpreview2bitmap.py --png"	""
-\converter lyxpreview ppm        "python -tt $$s/scripts/lyxpreview2bitmap.py --ppm"	""
+\converter csv        lyx        "$${python} $$s/scripts/csv2lyx.py $$i $$o"	""
+\converter fen        asciichess "$${python} $$s/scripts/fen2ascii.py $$i $$o"	""
+\converter lyx        lyx13x     "$${python} $$s/lyx2lyx/lyx2lyx -V 1.3 -o $$o $$i"	""
+\converter lyx        lyx14x     "$${python} $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o $$i"	""
+\converter lyx        lyx15x     "$${python} $$s/lyx2lyx/lyx2lyx -V 1.5 -o $$o $$i"	""
+\converter lyx        lyx16x     "$${python} $$s/lyx2lyx/lyx2lyx -V 1.6 -o $$o $$i"	""
+\converter lyx        lyx20x     "$${python} $$s/lyx2lyx/lyx2lyx -V 2.0 -o $$o $$i"	""
+\converter lyx        lyx21x     "$${python} $$s/lyx2lyx/lyx2lyx -V 2.1 -o $$o $$i"	""
+\converter lyx        lyx22x     "$${python} $$s/lyx2lyx/lyx2lyx -V 2.2 -o $$o $$i"	""
+\converter lyx        lyx23x     "$${python} $$s/lyx2lyx/lyx2lyx -V 2.3 -o $$o $$i"	""
+\converter lyx        clyx       "$${python} $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c big5   $$i"	""
+\converter lyx        jlyx       "$${python} $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_jp $$i"	""
+\converter lyx        klyx       "$${python} $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_kr $$i"	""
+\converter clyx       lyx        "$${python} $$s/lyx2lyx/lyx2lyx -c big5   -o $$o $$i"	""
+\converter jlyx       lyx        "$${python} $$s/lyx2lyx/lyx2lyx -c euc_jp -o $$o $$i"	""
+\converter klyx       lyx        "$${python} $$s/lyx2lyx/lyx2lyx -c euc_kr -o $$o $$i"	""
+\converter lyxpreview png        "$${python} $$s/scripts/lyxpreview2bitmap.py --png"	""
+\converter lyxpreview ppm        "$${python} $$s/scripts/lyxpreview2bitmap.py --ppm"	""
 ''')
 
 
@@ -1410,11 +1410,11 @@ def checkOtherEntries():
     ## FIXME: MAPLE is not used anywhere
     # path, MAPLE = checkProg('Maple', ['maple'])
     # Add the rest of the entries (no checkProg is required)
-    addToRC(r'''\citation_search_view "python -tt $$s/scripts/lyxpaperview.py"''')
-    addToRC(r'''\copier    fig        "python -tt $$s/scripts/fig_copy.py $$i $$o"
-\copier    pstex      "python -tt $$s/scripts/tex_copy.py $$i $$o $$l"
-\copier    pdftex     "python -tt $$s/scripts/tex_copy.py $$i $$o $$l"
-\copier    program    "python -tt $$s/scripts/ext_copy.py $$i $$o"
+    addToRC(r'''\citation_search_view "$${python} $$s/scripts/lyxpaperview.py"''')
+    addToRC(r'''\copier    fig        "$${python} $$s/scripts/fig_copy.py $$i $$o"
+\copier    pstex      "$${python} $$s/scripts/tex_copy.py $$i $$o $$l"
+\copier    pdftex     "$${python} $$s/scripts/tex_copy.py $$i $$o $$l"
+\copier    program    "$${python} $$s/scripts/ext_copy.py $$i $$o"
 ''')
 
 def _checkForClassExtension(x):
diff --git a/lib/scripts/include_bib.py b/lib/scripts/include_bib.py
index 71fbb61..0fb5afb 100644
--- a/lib/scripts/include_bib.py
+++ b/lib/scripts/include_bib.py
@@ -17,7 +17,7 @@
 # automatically. To set it up, create a format "ltxbbl"; make sure to
 # check it as a document format. Then create a LaTeX-->ltxbbl converter,
 # with the command:
-#   python -tt $$s/scripts/include_bib.py $$i $$o
+#   $${python} $$s/scripts/include_bib.py $$i $$o
 # and give it the flags:
 #   needaux,nice
 # You'll then have it in the export menu.
diff --git a/src/Converter.cpp b/src/Converter.cpp
index 0578026..c00941d 100644
--- a/src/Converter.cpp
+++ b/src/Converter.cpp
@@ -60,7 +60,7 @@ string const token_orig_path("$$r");
 string const token_orig_from("$$f");
 string const token_encoding("$$e");
 string const token_latex_encoding("$$E");
-
+string const token_python("$${python}");
 
 string const add_options(string const & command, string const & options)
 {
@@ -644,6 +644,7 @@ Converters::RetVal Converters::convert(Buffer const * buffer,
 			command = subst(command, token_orig_path, quoteName(onlyPath(orig_from.absFileName())));
 			command = subst(command, token_orig_from, quoteName(onlyFileName(orig_from.absFileName())));
 			command = subst(command, token_encoding, buffer ? buffer->params().encoding().iconvName() : string());
+			command = subst(command, token_python, os::python());
 
 			if (!conv.parselog().empty())
 				command += " 2> " + quoteName(infile2 + ".out");
@@ -684,11 +685,11 @@ Converters::RetVal Converters::convert(Buffer const * buffer,
 				if (res == Systemcall::KILLED) {
 					frontend::Alert::warning(
 						_("Converter killed"),
-						bformat(_("The following converter was killed by the user.\n %1$s\n"), 
+						bformat(_("The following converter was killed by the user.\n %1$s\n"),
 							from_utf8(command)));
 					return KILLED;
 				}
-				
+
 				if (!real_outfile.empty()) {
 					Mover const & mover = getMover(conv.to());
 					if (!mover.rename(outfile, real_outfile))
@@ -713,7 +714,7 @@ Converters::RetVal Converters::convert(Buffer const * buffer,
 					if (res == Systemcall::KILLED) {
 						frontend::Alert::warning(
 							_("Converter killed"),
-							bformat(_("The following converter was killed by the user.\n %1$s\n"), 
+							bformat(_("The following converter was killed by the user.\n %1$s\n"),
 								from_utf8(command)));
 						return KILLED;
 					}
@@ -728,13 +729,13 @@ Converters::RetVal Converters::convert(Buffer const * buffer,
 						bformat(_("The conversion process was killed while running:\n%1$s"),
 							wrapParas(from_utf8(command))));
 					return KILLED;
-				} 
+				}
 				if (res == Systemcall::TIMEOUT) {
 					Alert::information(_("Process Timed Out"),
 						bformat(_("The conversion process:\n%1$s\ntimed out before completing."),
 							wrapParas(from_utf8(command))));
 					return KILLED;
-				} 
+				}
 				if (conv.to() == "program") {
 					Alert::error(_("Build errors"),
 						_("There were errors during the build process."));
diff --git a/src/Mover.cpp b/src/Mover.cpp
index a901d98..16d225b 100644
--- a/src/Mover.cpp
+++ b/src/Mover.cpp
@@ -63,6 +63,7 @@ bool SpecialisedMover::do_copy(FileName const & from, FileName const & to,
 	command = subst(command, "$$i", quoteName(from.toFilesystemEncoding()));
 	command = subst(command, "$$o", quoteName(to.toFilesystemEncoding()));
 	command = subst(command, "$$l", quoteName(latex));
+	command = subst(command, "$${python}", os::python());
 
 	Systemcall one;
 	return one.startscript(Systemcall::Wait, command) == 0;
diff --git a/src/graphics/PreviewLoader.cpp b/src/graphics/PreviewLoader.cpp
index de04e4d..28a0e0f 100644
--- a/src/graphics/PreviewLoader.cpp
+++ b/src/graphics/PreviewLoader.cpp
@@ -34,6 +34,7 @@
 #include "support/filetools.h"
 #include "support/ForkedCalls.h"
 #include "support/lstrings.h"
+#include "support/os.h"
 
 #include "support/TempFile.h"
 
@@ -322,7 +323,7 @@ public:
 		string const file_name = os.str();
 		return make_pair(snippet, FileName(file_name));
 	}
-	
+
 private:
 	string const & to_format_;
 	string const & base_;
@@ -678,7 +679,7 @@ void PreviewLoader::Impl::startLoading(bool wait)
 
 	// The conversion command.
 	ostringstream cs;
-	cs << pconverter_->command()
+	cs << subst(pconverter_->command(), "$${python}", os::python())
 	   << " " << quoteName(latexfile.toFilesystemEncoding())
 	   << " --dpi " << font_scaling_factor_;
 
diff --git a/src/support/ForkedCalls.cpp b/src/support/ForkedCalls.cpp
index e6f5a8e..f0b2c7e 100644
--- a/src/support/ForkedCalls.cpp
+++ b/src/support/ForkedCalls.cpp
@@ -305,11 +305,6 @@ int ForkedCall::generateChild()
 	if (command_.empty())
 		return 1;
 
-	// Make sure that a V2 python is run, if available.
-	string const line = cmd_prefix_ +
-		(prefixIs(command_, "python -tt")
-		 ? os::python() + command_.substr(10) : command_);
-
 #if !defined (_WIN32)
 	// POSIX
 
@@ -317,8 +312,8 @@ int ForkedCall::generateChild()
 	// in a contiguous block of memory. The array contains pointers
 	// to each word.
 	// Don't forget the terminating `\0' character.
-	char const * const c_str = line.c_str();
-	vector<char> vec(c_str, c_str + line.size() + 1);
+	char const * const c_str = command_.c_str();
+	vector<char> vec(c_str, c_str + command_.size() + 1);
 
 	// Splitting the command up into an array of words means replacing
 	// the whitespace between words with '\0'. Life is complicated
@@ -382,7 +377,7 @@ int ForkedCall::generateChild()
 	if (lyxerr.debugging(Debug::FILES)) {
 		vector<char *>::iterator ait = argv.begin();
 		vector<char *>::iterator const aend = argv.end();
-		lyxerr << "<command>\n\t" << line
+		lyxerr << "<command>\n\t" << command_
 		       << "\n\tInterpreted as:\n\n";
 		for (; ait != aend; ++ait)
 			if (*ait)
diff --git a/src/support/Systemcall.cpp b/src/support/Systemcall.cpp
index f3703b8..6c96de1 100644
--- a/src/support/Systemcall.cpp
+++ b/src/support/Systemcall.cpp
@@ -169,7 +169,7 @@ string const parsecmd(string const & incmd, string & infile, string & outfile,
 	bool in_single_quote = false;
 	bool in_double_quote = false;
 	bool escaped = false;
-	string const python_call = "python -tt";
+	string const python_call = os::python();
 	vector<string> outcmd(4);
 	size_t start = 0;
 
diff --git a/src/support/filetools.cpp b/src/support/filetools.cpp
index cfb245c..a3df20a 100644
--- a/src/support/filetools.cpp
+++ b/src/support/filetools.cpp
@@ -410,7 +410,7 @@ FileName const imageLibFileSearch(string & dir, string const & name,
 string const commandPrep(string const & command_in)
 {
 	static string const token_scriptpath = "$$s/";
-	string const python_call = "python -tt";
+	string const python_call = os::python();
 
 	string command = command_in;
 	if (prefixIs(command_in, python_call))

commit 13a7269b9dc9b00f2edf65de38483b99d8fb1dfe
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Mon Jan 3 15:53:56 2022 -0500

    Change LFUN arg from "zoom" to "zoomlevel"
    
    This change is just to be more specific, to help when grepping and
    reading.
    
    The idea is from Daniel
    (https://www.lyx.org/trac/ticket/12420?replyto=11#comment:11).
    
    Amends cc787967 (and thus 49a17aaa).

diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc
index 5051c44..ed9a9da 100644
--- a/lib/ui/stdcontext.inc
+++ b/lib/ui/stdcontext.inc
@@ -729,7 +729,7 @@ Menuset
 	Menu "context-statusbar"
 		ZoomOptions
 		Separator
-		Item "Show Zoom Level|Z" "ui-toggle zoom"
+		Item "Show Zoom Level|Z" "ui-toggle zoomlevel"
 		Item "Show Zoom Slider|S" "ui-toggle zoomslider"
 	End
 
diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index 1680ce6..6cd97f5 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -2374,7 +2374,7 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
 		break;
 
 	case LFUN_UI_TOGGLE:
-		if (cmd.argument() == "zoom") {
+		if (cmd.argument() == "zoomlevel") {
 			flag.setOnOff(zoom_value_ ? zoom_value_->isVisible() : false);
 		} else if (cmd.argument() == "zoomslider") {
 			flag.setOnOff(zoom_slider_ ? zoom_slider_->isVisible() : false);
@@ -4884,7 +4884,7 @@ bool GuiView::lfunUiToggle(string const & ui_component)
 		statusBar()->setVisible(!statusBar()->isVisible());
 	} else if (ui_component == "menubar") {
 		menuBar()->setVisible(!menuBar()->isVisible());
-	} else if (ui_component == "zoom") {
+	} else if (ui_component == "zoomlevel") {
 		zoom_value_->setVisible(!zoom_value_->isVisible());
 	} else if (ui_component == "zoomslider") {
 		zoom_slider_->setVisible(!zoom_slider_->isVisible());

commit 940d3ceeb9e6d8ce216afedf18c898ec075cc27d
Author: José Matos <jamatos at lyx.org>
Date:   Mon Jan 3 19:59:42 2022 +0000

    Make layout2layout compatible with Python 2 and 3

diff --git a/lib/scripts/layout2layout.py b/lib/scripts/layout2layout.py
index 7e40bfb..88ada12 100644
--- a/lib/scripts/layout2layout.py
+++ b/lib/scripts/layout2layout.py
@@ -256,7 +256,7 @@ currentFormat = 95
 # New textclass tag BibInToc
 
 # Incremented to format 77, 6 August 2019 by spitz
-# New textclass tag PageSize (= default page size) 
+# New textclass tag PageSize (= default page size)
 # and textclass option PageSize (= list of available page sizes)
 
 # Incremented to format 78, 6 August 2019 by spitz
@@ -354,7 +354,7 @@ def error(message):
 
 def trim_bom(line):
     " Remove byte order mark."
-    if line[0:3] == "\357\273\277":
+    if line[0:3] == b"\357\273\277":
         return line[3:]
     else:
         return line
@@ -444,8 +444,8 @@ def convert(lines, end_format):
     # for categories
     re_Declaration = re.compile(b'^#\\s*\\Declare\\w+Class.*$')
     re_ExtractCategory = re.compile(b'^(#\\s*\\Declare\\w+Class(?:\\[[^]]*?\\])?){([^(]+?)\\s+\\(([^)]+?)\\)\\s*}\\s*$')
-    ConvDict = {"article": "Articles", "book" : "Books", "letter" : "Letters", "report": "Reports",
-                "presentation" : "Presentations", "curriculum vitae" : "Curricula Vitae", "handout" : "Handouts"}
+    ConvDict = {b"article": b"Articles", b"book": b"Books", b"letter": b"Letters", b"report": b"Reports",
+                b"presentation": b"Presentations", b"curriculum vitae": b"Curricula Vitae", b"handout": b"Handouts"}
     # Arguments
     re_OptArgs = re.compile(b'^(\\s*)OptionalArgs(\\s+)(\\d+)\\D*$', re.IGNORECASE)
     re_ReqArgs = re.compile(b'^(\\s*)RequiredArgs(\\s+)(\\d+)\\D*$', re.IGNORECASE)
@@ -615,7 +615,7 @@ def convert(lines, end_format):
                 continue
             col  = match.group(2)
             if col == "collapsable":
-                lines[i] = match.group(1) + "collapsible"
+                lines[i] = match.group(1) + b"collapsible"
             i += 1
             continue
 
@@ -833,7 +833,7 @@ def convert(lines, end_format):
             # Insert the required number of arguments at the end of the style definition
             match = re_End.match(lines[i])
             if match:
-                newarg = ['']
+                newarg = [b'']
                 # First the optionals (this is the required order pre 2.1)
                 if opts > 0:
                     if opts == 1:
@@ -1283,7 +1283,7 @@ def convert(lines, end_format):
             if latextype == b"item_environment" and label.lower() == b"counter_enumi":
                 lines[labeltype_line] = re_LabelType.sub(b'\\1\\2\\3Enumerate', lines[labeltype_line])
                 # Don't add the LabelCounter line later
-                counter = ""
+                counter = b""
 
             # Replace
             #

commit 11d42ac3dff569f4e1a6bb606dcb99d0ba7adc7b
Author: Stephan Witt <switt at lyx.org>
Date:   Mon Jan 3 10:44:02 2022 +0100

    Remove temporary code comment.

diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index 791a2c2..1680ce6 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -1634,7 +1634,6 @@ bool GuiView::event(QEvent * e)
 			QPinchGesture::ChangeFlags changeFlags = pinch->changeFlags();
 			if (changeFlags & QPinchGesture::ScaleFactorChanged) {
 				qreal factor = lyxrc.currentZoom*pinch->scaleFactor();
-				//factor = ceil(factor/20)*20;
 				zoomValueChanged(factor);
 			}
 		}

commit d4324034300f73f76e5ac34fb1e7653fa6e2ddf5
Author: Stephan Witt <switt at lyx.org>
Date:   Mon Jan 3 07:37:03 2022 +0100

    #12434 add event handler for pinch-to-zoom gesture

diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index ffcbc3d..791a2c2 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -110,6 +110,8 @@
 #include <QTimer>
 #include <QUrl>
 #include <QWindowStateChangeEvent>
+#include <QGestureEvent>
+#include <QPinchGesture>
 
 
 // sync with GuiAlert.cpp
@@ -694,6 +696,9 @@ GuiView::GuiView(int id)
 	connect(statusBar(), SIGNAL(customContextMenuRequested(QPoint)),
 		this, SLOT(showZoomContextMenu()));
 
+	// enable pinch to zoom
+	grabGesture(Qt::PinchGesture);
+
 	int const iconheight = max(int(d.normalIconSize), fm.height());
 	QSize const iconsize(iconheight, iconheight);
 
@@ -1621,6 +1626,21 @@ bool GuiView::event(QEvent * e)
 		return QMainWindow::event(e);
 	}
 
+	case QEvent::Gesture: {
+		QGestureEvent *ge = static_cast<QGestureEvent*>(e);
+		QGesture *gp = ge->gesture(Qt::PinchGesture);
+		if (gp) {
+			QPinchGesture *pinch = static_cast<QPinchGesture *>(gp);
+			QPinchGesture::ChangeFlags changeFlags = pinch->changeFlags();
+			if (changeFlags & QPinchGesture::ScaleFactorChanged) {
+				qreal factor = lyxrc.currentZoom*pinch->scaleFactor();
+				//factor = ceil(factor/20)*20;
+				zoomValueChanged(factor);
+			}
+		}
+		return QMainWindow::event(e);
+	}
+
 	default:
 		return QMainWindow::event(e);
 	}

commit d4cfa5204c3963d5ef99fd9ac263566bc69df21c
Author: Enrico Forestieri <forenr at lyx.org>
Date:   Sun Jan 2 18:49:44 2022 +0100

    Fix bug #12447
    
    Due to a thinko at 1fe75ae7 the code was not using the correct index.

diff --git a/src/frontends/qt/GuiDelimiter.cpp b/src/frontends/qt/GuiDelimiter.cpp
index 3110db7..479db87 100644
--- a/src/frontends/qt/GuiDelimiter.cpp
+++ b/src/frontends/qt/GuiDelimiter.cpp
@@ -262,8 +262,9 @@ GuiDelimiter::GuiDelimiter(GuiView & lv)
 
 	for (int i = 0; i != leftLW->count(); ++i) {
 		MathSymbol const & ms = mathSymbol(getDelimiterName(leftLW->item(i)));
-		QListWidgetItem * rwi = left_list_items_[doMatch(ms.unicode)]->clone();
-		right_list_items_[ms.unicode] = rwi;
+		char_type const rdelim = doMatch(ms.unicode);
+		QListWidgetItem * rwi = left_list_items_[rdelim]->clone();
+		right_list_items_[mathSymbol(texName(rdelim)).unicode] = rwi;
 		rightLW->addItem(rwi);
 	}
 

commit df990b1027bfc87f945e1ce29646bd874c5837fa
Author: Stephan Witt <switt at lyx.org>
Date:   Sat Jan 1 18:47:57 2022 +0100

    Guard new code for builds with OS X 10.11 SDK and lesser (part 2).

diff --git a/src/support/AppleSupport.m b/src/support/AppleSupport.m
index 3a4f864..2c78bd2 100644
--- a/src/support/AppleSupport.m
+++ b/src/support/AppleSupport.m
@@ -42,6 +42,10 @@ void appleCleanupViewMenu() {
 
 
 bool appleUserTabbingPreferenceAlways() {
+#if defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && (__MAC_OS_X_VERSION_MAX_ALLOWED >= 101200)
 	return [NSWindow respondsToSelector:@selector(userTabbingPreference)] &&
 		[NSWindow userTabbingPreference] == NSWindowUserTabbingPreferenceAlways;
+#else
+	return false;
+#endif
 }

commit 718b735dfe9459edab125779593e6074faaf9973
Author: Stephan Witt <switt at lyx.org>
Date:   Sat Jan 1 18:46:32 2022 +0100

    Guard new code for builds with OS X 10.11 SDK and lesser.

diff --git a/src/support/AppleSupport.m b/src/support/AppleSupport.m
index 7657e9d..3a4f864 100644
--- a/src/support/AppleSupport.m
+++ b/src/support/AppleSupport.m
@@ -24,6 +24,7 @@ void appleCleanupEditMenu() {
 
 void appleCleanupViewMenu() {
 
+#if defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && (__MAC_OS_X_VERSION_MAX_ALLOWED >= 101200)
 	// Remove the "Show Tab Bar" menu item from the "View" menu, if supported
 	// See the Apple developer release notes:
 	// What should an application which already has support for tabbing do?
@@ -35,6 +36,8 @@ void appleCleanupViewMenu() {
 
 	// Remove the "Enter Full Screen" menu item from the "View" menu
 	[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSFullScreenMenuItemEverywhere"];
+
+#endif
 }
 
 

commit 47c92834dfd796e1183a75a0f3364b5548b13bff
Author: Stephan Witt <switt at lyx.org>
Date:   Sat Jan 1 16:37:07 2022 +0100

    Correct white space.

diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index d59e64c..ffcbc3d 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -1577,7 +1577,8 @@ bool GuiView::event(QEvent * e)
 			setContentsMargins(0, 0, 0, 0);
 		}
 		return result;
-		}
+	}
+
 	case QEvent::WindowActivate: {
 		GuiView * old_view = guiApp->currentView();
 		if (this == old_view) {

commit 21258638744d5efa24b1a776daeff1fff1abe6d5
Author: Stephan Witt <switt at lyx.org>
Date:   Sat Jan 1 10:06:07 2022 +0100

    Qt6 QFontDatabase is a pure static class. Call the member functions directly.

diff --git a/src/frontends/qt/GuiDocument.cpp b/src/frontends/qt/GuiDocument.cpp
index 3e6df5d..4067d6c 100644
--- a/src/frontends/qt/GuiDocument.cpp
+++ b/src/frontends/qt/GuiDocument.cpp
@@ -2679,8 +2679,12 @@ void GuiDocument::updateFontlist()
 		fontModule->fontsMathCO->addItem(qt_("Class Default (TeX Fonts)"), QString("auto"));
 		fontModule->fontsMathCO->addItem(unimath, QString("default"));
 
+#if QT_VERSION >= 0x060000
+		const QStringList families(QFontDatabase::families());
+#else
 		QFontDatabase fontdb;
-		QStringList families(fontdb.families());
+		const QStringList families(fontdb.families());
+#endif
 		for (auto const & family : families) {
 			fontModule->fontsRomanCO->addItem(family, family);
 			fontModule->fontsSansCO->addItem(family, family);
diff --git a/src/frontends/qt/GuiPrefs.cpp b/src/frontends/qt/GuiPrefs.cpp
index 75deb7c..40c0638 100644
--- a/src/frontends/qt/GuiPrefs.cpp
+++ b/src/frontends/qt/GuiPrefs.cpp
@@ -931,8 +931,12 @@ PrefScreenFonts::PrefScreenFonts(GuiPreferences * form)
 		this, SLOT(selectTypewriter(QString)));
 #endif
 
+#if QT_VERSION >= 0x060000
+	const QStringList families(QFontDatabase::families());
+#else
 	QFontDatabase fontdb;
-	QStringList families(fontdb.families());
+	const QStringList families(fontdb.families());
+#endif
 	for (auto const & family : families) {
 		screenRomanCO->addItem(family);
 		screenSansCO->addItem(family);

commit 64a60c72eae22fcd046d96a3d62a0dcb195c61c0
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Fri Dec 31 14:32:59 2021 +0100

    GuiGraphics: disable "Read from file" button if the values do not differ

diff --git a/src/frontends/qt/GuiGraphics.cpp b/src/frontends/qt/GuiGraphics.cpp
index fd4e8f5..64fa397 100644
--- a/src/frontends/qt/GuiGraphics.cpp
+++ b/src/frontends/qt/GuiGraphics.cpp
@@ -337,6 +337,7 @@ void GuiGraphics::on_newGroupPB_clicked()
 void GuiGraphics::changeBB()
 {
 	bbChanged = isChangedBB();
+	getPB->setEnabled(bbChanged);
 	LYXERR(Debug::GRAPHICS, "[bb_Changed set to " << bbChanged << "]");
 	changed();
 }

commit 8f3fdafd9e4e86c1d99b18648ba25da755158955
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Fri Dec 31 14:32:13 2021 +0100

    GuiGraphics: check more carefully whether we have a changed BB

diff --git a/src/frontends/qt/GuiGraphics.cpp b/src/frontends/qt/GuiGraphics.cpp
index aefe3d0..fd4e8f5 100644
--- a/src/frontends/qt/GuiGraphics.cpp
+++ b/src/frontends/qt/GuiGraphics.cpp
@@ -336,8 +336,8 @@ void GuiGraphics::on_newGroupPB_clicked()
 
 void GuiGraphics::changeBB()
 {
-	bbChanged = true;
-	LYXERR(Debug::GRAPHICS, "[bb_Changed set to true]");
+	bbChanged = isChangedBB();
+	LYXERR(Debug::GRAPHICS, "[bb_Changed set to " << bbChanged << "]");
 	changed();
 }
 
@@ -347,6 +347,10 @@ void GuiGraphics::on_browsePB_clicked()
 	QString const str = browse(filename->text());
 	if (!str.isEmpty()) {
 		filename->setText(str);
+		// read in the bb values of the new file
+		// if there was no explicit custom viewport
+		if (!bbChanged)
+			getBB();
 		changed();
 	}
 }
@@ -355,6 +359,7 @@ void GuiGraphics::on_browsePB_clicked()
 void GuiGraphics::on_getPB_clicked()
 {
 	getBB();
+	bbChanged = false;
 }
 
 
@@ -741,6 +746,37 @@ void GuiGraphics::getBB()
 }
 
 
+bool GuiGraphics::isChangedBB()
+{
+	string const fn = fromqstr(filename->text());
+	if (fn.empty())
+		return false;
+
+	string const bb = readBoundingBox(fn);
+	if (bb.empty())
+		return false;
+
+	// Compare orig bb values with the set ones
+	if (Length(token(bb, ' ', 0) + "bp") !=
+		Length(widgetToDoubleStr(lbX) + fromqstr(lbXunit->currentText())))
+		return true;
+
+	if (Length(token(bb, ' ', 1) + "bp") !=
+		Length(widgetToDoubleStr(lbY) + fromqstr(lbYunit->currentText())))
+		return true;
+
+	if (Length(token(bb, ' ', 2) + "bp") !=
+		Length(widgetToDoubleStr(rtX) + fromqstr(rtXunit->currentText())))
+		return true;
+
+	if (Length(token(bb, ' ', 3) + "bp") !=
+		Length(widgetToDoubleStr(rtY) + fromqstr(rtYunit->currentText())))
+		return true;
+
+	return false;
+}
+
+
 bool GuiGraphics::isValid()
 {
 	return !filename->text().isEmpty();
diff --git a/src/frontends/qt/GuiGraphics.h b/src/frontends/qt/GuiGraphics.h
index 66f614f..2687c08 100644
--- a/src/frontends/qt/GuiGraphics.h
+++ b/src/frontends/qt/GuiGraphics.h
@@ -68,6 +68,8 @@ private:
 
 	/// get bounding box from file
 	void getBB();
+	/// does the bounding box differ from the file?
+	bool isChangedBB();
 	/// Browse for a file
 	QString browse(QString const &) const;
 	/// Read the Bounding Box from a eps or ps-file

commit ec722f3a48ee7f1c774ef504862dcea8276373df
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Fri Dec 31 14:30:09 2021 +0100

    GuiGraphics: read the BB values also for new graphics
    
    that aren't in the cache yet.

diff --git a/src/frontends/qt/GuiGraphics.cpp b/src/frontends/qt/GuiGraphics.cpp
index 6a651fd..aefe3d0 100644
--- a/src/frontends/qt/GuiGraphics.cpp
+++ b/src/frontends/qt/GuiGraphics.cpp
@@ -794,16 +794,17 @@ string GuiGraphics::readBoundingBox(string const & file)
 {
 	FileName const abs_file = support::makeAbsPath(file, fromqstr(bufferFilePath()));
 
-	// try to get it from the file, if possible. Zipped files are
-	// unzipped in the readBB_from_PSFile-Function
+	// With (E)PS files, try to get it from the file, if possible.
+	// Zipped files are unzipped in the readBB_from_PSFile-Function
 	string const bb = graphics::readBB_from_PSFile(abs_file);
 	if (!bb.empty())
 		return bb;
 
-	// we don't, so ask the Graphics Cache if it has loaded the file
+	// With other formats, we try to read the file dimensions
 	int width = 0;
 	int height = 0;
 
+	// First ask the Graphics Cache if it has loaded the file
 	graphics::Cache & gc = graphics::Cache::get();
 	if (gc.inCache(abs_file)) {
 		graphics::Image const * image = gc.item(abs_file)->image();
@@ -812,6 +813,13 @@ string GuiGraphics::readBoundingBox(string const & file)
 			width  = image->width();
 			height = image->height();
 		}
+	} else {
+		// If not, construct a QImage and get the values from that
+		QImage image(toqstr(abs_file.absoluteFilePath()));
+		if (!image.isNull()) {
+			width  = image.width();
+			height = image.height();
+		}
 	}
 
 	return ("0 0 " + convert<string>(width) + ' ' + convert<string>(height));

commit 0789f2f2ae43742da200a27f10403f4c6a68713d
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Fri Dec 3 12:16:40 2021 +0100

    Fix font inside footnote inset
    
    An inset that resets its font (like Footnote) does not care at all
    about enclosing font. Therefore the real starting point is the class
    default font. This avoid cases where the footnote contents is forced
    to \normalsize.
    
    It turns out that the Greyedout note inset, did inherit font but was
    declared as not doing it. This commmit changes the definition by
    adding \normalfont\normalsize so that no inheritance happens.
    
    Note that actually \normalfont resets everything but the font size.
    This does not matter for footnote (which has its own font size) and
    greyedout (which is fixed now), but may matter elsewhere. Also, I do
    not know what the situation with HTML is.

diff --git a/lib/layouts/stdinsets.inc b/lib/layouts/stdinsets.inc
index 2106d23..b604cbe 100644
--- a/lib/layouts/stdinsets.inc
+++ b/lib/layouts/stdinsets.inc
@@ -180,6 +180,7 @@ InsetLayout Note:Greyedout
 	Requires	      color,lyxgreyedout
 	BgColor               greyedoutbg
 	Font
+	  Size                Normal
 	  Color               greyedouttext
 	EndFont
 	LabelFont
diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp
index f321799..ad50374 100644
--- a/src/LaTeXFeatures.cpp
+++ b/src/LaTeXFeatures.cpp
@@ -560,9 +560,9 @@ docstring const lyxgreyedoutDef(bool const rtl, bool const ct, bool const lua, b
 			ods << "  \\if at rl%\n";
 		ods << "    \\everypar{%\n";
 		if (lua)
-			ods << "      \\pardir TRT \\textdir TRT\\textcolor{note_fontcolor}\\ignorespaces%\n";
+			ods << "      \\pardir TRT \\textdir TRT\\normalfont\\normalsize\\textcolor{note_fontcolor}\\ignorespaces%\n";
 		else
-			ods << "      \\textcolor{note_fontcolor}\\beginL\\ignorespaces%\n";
+			ods << "      \\normalfont\\normalsize\\textcolor{note_fontcolor}\\beginL\\ignorespaces%\n";
 		ods << "    }%\n";
 		if (ct)
 			ods << "    \\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}%\n";
@@ -573,7 +573,7 @@ docstring const lyxgreyedoutDef(bool const rtl, bool const ct, bool const lua, b
 		ods << "  \\else%\n";
 		if (ct)
 			ods << "    \\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}%\n";
-		ods << "    \\textcolor{note_fontcolor}\\bgroup\\ignorespaces%\n"
+		ods << "    \\normalfont\\normalsize\\textcolor{note_fontcolor}\\bgroup\\ignorespaces%\n"
 		    << "    \\BODY\\ignorespacesafterend\\egroup%\n"
 		    << "  \\fi%\n"
 		    << "}\n";
@@ -583,7 +583,7 @@ docstring const lyxgreyedoutDef(bool const rtl, bool const ct, bool const lua, b
 		    << "{";
 		if (ct)
 			ods << "\\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}%\n ";
-		ods << "\\textcolor{note_fontcolor}\\bgroup\\ignorespaces}\n"
+		ods << "\\normalfont\\normalsize\\textcolor{note_fontcolor}\\bgroup\\ignorespaces}\n"
 		    << "{\\ignorespacesafterend\\egroup}\n";
 	}
 
diff --git a/src/OutputParams.h b/src/OutputParams.h
index 7ca5c1f..a909ddd 100644
--- a/src/OutputParams.h
+++ b/src/OutputParams.h
@@ -139,7 +139,26 @@ public:
 	mutable int inulemcmd = 0;
 
 	/** the font at the point where the inset is
-	 */
+	 *
+	 * Note from lasgouttes: I have doubts on the semantics of this
+	 * variable. Until this is sorted out, here are some notes on the
+	 * history of local_font.
+	 *
+	 * A research that excludes test and assignment [*] shows that
+	 * this is only used to remember language, which is a different
+	 * story (and not changed by this patch). The only exception being
+	 * in InsetMathHull::getCtObject and InsetMathNest::latex to
+	 * support change tracking in insets, but I am not 100% sure that
+	 * this is required. And historically [**] local_font used to be
+	 * local_lang; it may be good to return to this simpler variable
+	 * later.
+	 *
+	 *  [*] git grep local_font src|grep -v 'local_font [!=]*='
+	 *
+	 * [**] before afed118a, which improved support for InsetLine;
+	 * however, since 0e7ab29f, InsetLine does not depend on the
+	 * current font anymore.
+	*/
 	Font const * local_font = nullptr;
 
 	/** Document language lyx name
diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 1bf48f1..da97d12 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -2539,10 +2539,9 @@ void Paragraph::latex(BufferParams const & bparams,
 	pos_type body_pos = beginOfBody();
 	unsigned int column = 0;
 
-	// If we are inside an non inheritFont() inset, the real outerfont is local_font
-	Font const real_outerfont = (!inInset().inheritFont()
-				     && runparams.local_font != nullptr)
-			? Font(runparams.local_font->fontInfo()) : outerfont;
+	// If we are inside an non inheritFont() inset, the outerfont is the default font
+	Font const real_outerfont =
+		inInset().inheritFont() ? outerfont : Font(bparams.documentClass().defaultfont());
 
 	if (body_pos > 0) {
 		// the optional argument is kept in curly brackets in

commit 77670bc9983392e32abb1cec236e5741b4d8c84b
Author: Stephan Witt <switt at lyx.org>
Date:   Fri Dec 31 13:40:22 2021 +0100

    Reduce the mix of python versions in configure.py in case of running it with python3

diff --git a/lib/configure.py b/lib/configure.py
index bddb94c..7d9b61c 100644
--- a/lib/configure.py
+++ b/lib/configure.py
@@ -1293,7 +1293,7 @@ def checkConverterEntries():
     if lilypond_book:
         found_lilypond_book = False
         # On Windows, the file lilypond-book is not directly callable, it must be passed as argument to python.
-        for cmd in ["lilypond-book", "python \"" + path + "/lilypond-book\""]:
+        for cmd in ["lilypond-book", os.path.basename(sys.executable) + ' "' + path + '/lilypond-book"']:
             version_string = cmdOutput(cmd + " --version")
             if len(version_string) == 0:
                 continue
@@ -1331,9 +1331,8 @@ def checkConverterEntries():
 
                     logger.info('+  found LilyPond-book version %s.' % version_number)
 
-                    # early exit on first match, avoid 2nd try with problematic python call
-                    # 1) in case of configure.py called with "python3" hardcoded "python" call is wrong
-                    # 2) in case of lilypond-book being an executable or shell script the python call is useless
+                    # early exit on first match, avoid 2nd try with python call
+                    # in case of lilypond-book being an executable or shell script the python call is useless
                     break
                 else:
                     logger.info('+  found LilyPond-book, but version %s is too old.' % version_number)

commit 6372f5569e4d6747642f7cbb0fa6e4eac2deab69
Author: Stephan Witt <switt at lyx.org>
Date:   Fri Dec 31 11:54:14 2021 +0100

    Avoid python based lilypond-book detection if it's not needed - e.g. on Mac

diff --git a/lib/configure.py b/lib/configure.py
index 68bdc09..bddb94c 100644
--- a/lib/configure.py
+++ b/lib/configure.py
@@ -1330,6 +1330,11 @@ def checkConverterEntries():
                     addToRC(r'\copier docbook5 "python $$s/scripts/docbook_copy.py ' + docbook_lilypond_cmd.replace('"', r'\"') + r' $$i $$o"')
 
                     logger.info('+  found LilyPond-book version %s.' % version_number)
+
+                    # early exit on first match, avoid 2nd try with problematic python call
+                    # 1) in case of configure.py called with "python3" hardcoded "python" call is wrong
+                    # 2) in case of lilypond-book being an executable or shell script the python call is useless
+                    break
                 else:
                     logger.info('+  found LilyPond-book, but version %s is too old.' % version_number)
         if not found_lilypond_book:

commit 4bdb1ca4c26e275ef1e4bc592a95210f78839bc5
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Thu Dec 30 11:37:12 2021 -0500

    Add comment regarding fsanitize + Clang issue
    
    We could not figure out the root issue, or at least not to the point
    where we felt changing this code considering we could not trigger
    any bug from a user perspective.
    
    For now, we just add a comment in the code.
    
    For more information, see our ML discussion here:
    
      https://www.mail-archive.com/search?l=mid&q=20211227113249.53bf5a63%40admin1-desktop

diff --git a/src/support/socktools.cpp b/src/support/socktools.cpp
index d4aab38..d014f45 100644
--- a/src/support/socktools.cpp
+++ b/src/support/socktools.cpp
@@ -111,6 +111,13 @@ int listen(FileName const & name, int queue)
 	// bind() gives the local address 'name' for 'fd', also creating
 	// the socket special file in the filesystem. bind() returns -1
 	// in case of error
+	//
+	// Using Clang and fsanitize suggests there is an issue here but we do
+	// not understand the code enough to change it and we are not aware of
+	// how to trigger a crash or other issue while using LyX, so we leave
+	// it as is. For ML discussion, see here:
+	//   https://www.mail-archive.com/search?l=mid&q=20211227113249.53bf5a63%40admin1-desktop
+	//
 	if ((::bind (fd, reinterpret_cast<sockaddr *>(&addr), SUN_LEN(&addr))) == -1) {
 		LYXERR0("lyx: Could not bind address '" << name.absFileName()
 		       << "' to socket descriptor: " << strerror(errno));

commit 011be4a959d3d4e4c984f2758dd3e601d6bbe94e
Author: Kornel Benko <kornel at lyx.org>
Date:   Wed Dec 29 19:14:41 2021 +0100

    Update sk.po

diff --git a/po/sk.po b/po/sk.po
index d795056..7e2c7d2 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX-2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2021-12-28 14:01+0100\n"
-"PO-Revision-Date: 2021-12-28 16:33+0000\n"
+"POT-Creation-Date: 2021-12-29 19:07+0100\n"
+"PO-Revision-Date: 2021-12-29 18:12+0000\n"
 "Last-Translator: Kornel Benko <kornel at lyx.org>\n"
 "Language-Team: Slovak <kornel at lyx.org>\n"
 "Language: sk\n"
@@ -20170,8 +20170,8 @@ msgid "Giant-sized Icons"
 msgstr "Gigantické ikony"
 
 #: lib/ui/stdcontext.inc:732
-msgid "Show Zoom Value|Z"
-msgstr "Ukáž hodnotu lupy|h"
+msgid "Show Zoom Level|Z"
+msgstr "Ukáž úroveň lupy|U"
 
 #: lib/ui/stdcontext.inc:733
 msgid "Show Zoom Slider|S"

commit 8a25af029bc4705ee9cb39014a6c19b28ae2901f
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Dec 29 18:00:45 2021 +0100

    de.po

diff --git a/po/de.po b/po/de.po
index b072e11..077eaef 100644
--- a/po/de.po
+++ b/po/de.po
@@ -94,8 +94,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX 2.4git\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2021-11-01 17:59+0100\n"
-"PO-Revision-Date: 2021-11-01 18:00+0100\n"
+"POT-Creation-Date: 2021-12-29 17:56+0100\n"
+"PO-Revision-Date: 2021-12-29 18:00+0100\n"
 "Last-Translator: Jürgen Spitzmüller <spitz at lyx.org>\n"
 "Language-Team: Deutsch <lyx-docs at lists.lyx.org>\n"
 "Language: de\n"
@@ -566,8 +566,8 @@ msgstr "Art der inneren Box"
 #: src/frontends/qt/ui/TabularUi.ui:1219 src/frontends/qt/ui/TabularUi.ui:1267
 #: src/frontends/qt/GuiBox.cpp:420 src/frontends/qt/GuiBox.cpp:630
 #: src/frontends/qt/GuiDocument.cpp:124 src/frontends/qt/GuiGraphics.cpp:576
-#: src/frontends/qt/GuiMathMatrix.cpp:33 src/frontends/qt/GuiPrefs.cpp:2323
-#: src/frontends/qt/GuiPrefs.cpp:2346
+#: src/frontends/qt/GuiMathMatrix.cpp:33 src/frontends/qt/GuiPrefs.cpp:2328
+#: src/frontends/qt/GuiPrefs.cpp:2351
 msgid "None"
 msgstr "Keine"
 
@@ -845,14 +845,14 @@ msgstr "A&lle hinzufügen"
 #: src/Buffer.cpp:4710 src/Buffer.cpp:4820 src/LyXVC.cpp:114 src/LyXVC.cpp:310
 #: src/buffer_funcs.cpp:56 src/frontends/qt/GuiBranches.cpp:226
 #: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiDocument.cpp:2844
-#: src/frontends/qt/GuiParagraph.cpp:177 src/frontends/qt/GuiPrefs.cpp:3410
-#: src/frontends/qt/GuiView.cpp:2825 src/frontends/qt/GuiView.cpp:3057
-#: src/frontends/qt/GuiView.cpp:3081 src/frontends/qt/GuiView.cpp:3095
-#: src/frontends/qt/GuiView.cpp:3197 src/frontends/qt/GuiView.cpp:3242
-#: src/frontends/qt/GuiView.cpp:3297 src/frontends/qt/GuiView.cpp:3531
-#: src/frontends/qt/GuiView.cpp:3545 src/frontends/qt/GuiView.cpp:3647
-#: src/frontends/qt/GuiView.cpp:3672 src/frontends/qt/GuiView.cpp:4376
-#: src/frontends/qt/GuiView.cpp:4383 src/insets/InsetBibtex.cpp:153
+#: src/frontends/qt/GuiParagraph.cpp:177 src/frontends/qt/GuiPrefs.cpp:3415
+#: src/frontends/qt/GuiView.cpp:2838 src/frontends/qt/GuiView.cpp:3070
+#: src/frontends/qt/GuiView.cpp:3094 src/frontends/qt/GuiView.cpp:3108
+#: src/frontends/qt/GuiView.cpp:3210 src/frontends/qt/GuiView.cpp:3255
+#: src/frontends/qt/GuiView.cpp:3310 src/frontends/qt/GuiView.cpp:3544
+#: src/frontends/qt/GuiView.cpp:3558 src/frontends/qt/GuiView.cpp:3660
+#: src/frontends/qt/GuiView.cpp:3685 src/frontends/qt/GuiView.cpp:4389
+#: src/frontends/qt/GuiView.cpp:4396 src/insets/InsetBibtex.cpp:153
 msgid "&Cancel"
 msgstr "&Abbrechen"
 
@@ -902,8 +902,8 @@ msgstr "&Größe:"
 #: src/frontends/qt/GuiDocument.cpp:3405 src/frontends/qt/GuiDocument.cpp:4890
 #: src/frontends/qt/GuiExternal.cpp:76 src/frontends/qt/GuiGraphics.cpp:71
 #: src/frontends/qt/GuiIndices.cpp:58 src/frontends/qt/GuiListings.cpp:160
-#: src/frontends/qt/GuiListings.cpp:167 src/frontends/qt/GuiPrefs.cpp:2479
-#: src/frontends/qt/GuiPrefs.cpp:2625 src/frontends/qt/GuiPrintNomencl.cpp:47
+#: src/frontends/qt/GuiListings.cpp:167 src/frontends/qt/GuiPrefs.cpp:2484
+#: src/frontends/qt/GuiPrefs.cpp:2630 src/frontends/qt/GuiPrintNomencl.cpp:47
 #: src/frontends/qt/GuiTabularCreate.cpp:107
 #: src/frontends/qt/GuiViewSource.cpp:341
 msgid "Default"
@@ -1097,7 +1097,7 @@ msgstr "S&prache:"
 #: lib/layouts/europasscv.layout:475 lib/layouts/europasscv.layout:482
 #: lib/layouts/europecv.layout:321 lib/layouts/europecv.layout:327
 #: lib/layouts/moderncv.layout:580 src/frontends/qt/GuiDocument.cpp:1777
-#: src/frontends/qt/GuiPrefs.cpp:2426 src/frontends/qt/Menus.cpp:938
+#: src/frontends/qt/GuiPrefs.cpp:2431 src/frontends/qt/Menus.cpp:938
 msgid "Language"
 msgstr "Sprache"
 
@@ -3684,7 +3684,7 @@ msgstr "Doppelt"
 #: src/frontends/qt/GuiDocument.cpp:1201 src/frontends/qt/GuiDocument.cpp:1547
 #: src/frontends/qt/GuiHSpace.cpp:57 src/frontends/qt/GuiPrefs.cpp:816
 #: src/frontends/qt/GuiPrefs.cpp:844 src/frontends/qt/GuiPrefs.cpp:871
-#: src/frontends/qt/GuiPrefs.cpp:2325 src/frontends/qt/GuiPrefs.cpp:2348
+#: src/frontends/qt/GuiPrefs.cpp:2330 src/frontends/qt/GuiPrefs.cpp:2353
 #: src/frontends/qt/GuiPrintNomencl.cpp:51 src/insets/InsetInfo.cpp:236
 #: src/insets/InsetInfo.cpp:246 src/insets/InsetInfo.cpp:250
 #: src/insets/InsetInfo.cpp:259 src/insets/InsetInfo.cpp:321
@@ -3939,8 +3939,8 @@ msgid "&Modify"
 msgstr "&Ändern"
 
 #: src/frontends/qt/ui/PrefConvertersUi.ui:286
-#: src/frontends/qt/ui/PrefShortcutsUi.ui:61 src/frontends/qt/GuiPrefs.cpp:3146
-#: src/frontends/qt/GuiPrefs.cpp:3232
+#: src/frontends/qt/ui/PrefShortcutsUi.ui:61 src/frontends/qt/GuiPrefs.cpp:3151
+#: src/frontends/qt/GuiPrefs.cpp:3237
 msgid "Remo&ve"
 msgstr "&Entfernen"
 
@@ -4032,6 +4032,17 @@ msgstr ""
 msgid "&Underline change tracking additions"
 msgstr "Hinzufügungen im Änderungsmodus &unterstreichen"
 
+#: src/frontends/qt/ui/PrefDisplayUi.ui:164
+msgid ""
+"If this is checked, an intermediate surface will be used for painting. This "
+"may be needed in some cases to have proper display, but breaks subpixel "
+"aliasing."
+msgstr ""
+
+#: src/frontends/qt/ui/PrefDisplayUi.ui:167
+msgid "Use &backing store to display text"
+msgstr ""
+
 #: src/frontends/qt/ui/PrefDocHandlingUi.ui:26
 msgid "Session Handling"
 msgstr "Sitzungshandhabung"
@@ -4213,7 +4224,7 @@ msgid "Define search pattern (see UserGuide for syntax)"
 msgstr ""
 "Definiert das Suchmuster (die Syntax ist im Benutzerhandbuch erläutert)"
 
-#: src/frontends/qt/ui/PrefEditUi.ui:167 src/LyXRC.cpp:3142
+#: src/frontends/qt/ui/PrefEditUi.ui:167 src/LyXRC.cpp:3175
 msgid ""
 "Configure the width of the text cursor. Automatic zoom-controlled cursor "
 "width used when set to 0."
@@ -4593,7 +4604,7 @@ msgstr ""
 msgid "&Mark additional languages"
 msgstr "Z&usätzliche Sprachen markieren"
 
-#: src/frontends/qt/ui/PrefLanguageUi.ui:199 src/LyXRC.cpp:3270
+#: src/frontends/qt/ui/PrefLanguageUi.ui:199 src/LyXRC.cpp:3303
 msgid ""
 "Select to use the current keyboard language, as set from the operating "
 "system, as default input language."
@@ -4793,7 +4804,7 @@ msgstr "Weitere Optionen"
 msgid "Output &line length:"
 msgstr "&Zeilenlänge der Ausgabe:"
 
-#: src/frontends/qt/ui/PrefOutputUi.ui:186 src/LyXRC.cpp:3081
+#: src/frontends/qt/ui/PrefOutputUi.ui:186 src/LyXRC.cpp:3114
 msgid ""
 "The maximum line length of exported plain text/LaTeX/SGML files. If set to "
 "0, paragraphs are output in a single line; if the line length is > 0, "
@@ -6229,8 +6240,8 @@ msgstr "Nur Haupttext"
 msgid "Select the output format"
 msgstr "Ausgabeformat wählen"
 
-#: src/frontends/qt/ui/WorkAreaUi.ui:82 src/frontends/qt/GuiView.cpp:3672
-#: src/frontends/qt/GuiView.cpp:4376
+#: src/frontends/qt/ui/WorkAreaUi.ui:82 src/frontends/qt/GuiView.cpp:3685
+#: src/frontends/qt/GuiView.cpp:4389
 msgid "&Reload"
 msgstr "Ne&u laden"
 
@@ -6798,7 +6809,7 @@ msgstr "Abbildungsanmerkungen"
 #: lib/layouts/stdlayouts.inc:38 lib/layouts/stdlayouts.inc:63
 #: lib/layouts/stdlayouts.inc:85 lib/layouts/stdletter.inc:13
 #: lib/layouts/svcommon.inc:27 lib/layouts/svcommon.inc:710
-#: lib/layouts/svcommon.inc:721 lib/layouts/tufte-book.layout:236
+#: lib/layouts/svcommon.inc:721 lib/layouts/tufte-book.layout:242
 msgid "MainText"
 msgstr "Haupttext"
 
@@ -7651,7 +7662,7 @@ msgstr "Kurztitel für den Anhang"
 #: lib/layouts/scrreprt.layout:12 lib/layouts/scrreprt.layout:14
 #: lib/layouts/siamltex.layout:339 lib/layouts/simplecv.layout:196
 #: lib/layouts/stdstruct.inc:59 lib/layouts/svcommon.inc:657
-#: lib/layouts/tufte-book.layout:292 lib/layouts/tufte-book.layout:294
+#: lib/layouts/tufte-book.layout:298 lib/layouts/tufte-book.layout:300
 #: lib/layouts/tufte-handout.layout:77 lib/examples/Articles:0
 #: src/frontends/qt/GuiDocument.cpp:1781 src/insets/InsetBibtex.cpp:957
 msgid "Bibliography"
@@ -8952,7 +8963,7 @@ msgstr "Randabbildung (nur sigchi-a)"
 
 #: lib/layouts/acmart.layout:526 lib/layouts/beamer.layout:1726
 #: lib/layouts/powerdot.layout:577 lib/layouts/sciposter.layout:109
-#: lib/layouts/stdfloats.inc:33 lib/layouts/tufte-book.layout:286
+#: lib/layouts/stdfloats.inc:33 lib/layouts/tufte-book.layout:292
 msgid "List of Figures"
 msgstr "Abbildungsverzeichnis"
 
@@ -8962,7 +8973,7 @@ msgstr "Randtabelle (nur sigchi-a)"
 
 #: lib/layouts/acmart.layout:539 lib/layouts/beamer.layout:1713
 #: lib/layouts/powerdot.layout:560 lib/layouts/sciposter.layout:123
-#: lib/layouts/stdfloats.inc:18 lib/layouts/tufte-book.layout:270
+#: lib/layouts/stdfloats.inc:18 lib/layouts/tufte-book.layout:276
 msgid "List of Tables"
 msgstr "Tabellenverzeichnis"
 
@@ -18348,55 +18359,55 @@ msgstr "Randnotiz (numm.)"
 msgid "bibl. entry"
 msgstr "Literaturverzeichnis-Eintrag"
 
-#: lib/layouts/tufte-book.layout:176
+#: lib/layouts/tufte-book.layout:180
 msgid "Marginnote"
 msgstr "Randnotiz (nicht nummeriert)"
 
-#: lib/layouts/tufte-book.layout:180
+#: lib/layouts/tufte-book.layout:184
 msgid "marginnote"
 msgstr "Randnotiz (nicht numm.)"
 
-#: lib/layouts/tufte-book.layout:189
+#: lib/layouts/tufte-book.layout:194
 msgid "NewThought"
 msgstr "Neuer Gedanke"
 
-#: lib/layouts/tufte-book.layout:193
+#: lib/layouts/tufte-book.layout:198
 msgid "new thought"
 msgstr "Neuer Gedanke"
 
-#: lib/layouts/tufte-book.layout:206
+#: lib/layouts/tufte-book.layout:212
 msgid "AllCaps"
 msgstr "Versalien"
 
-#: lib/layouts/tufte-book.layout:209
+#: lib/layouts/tufte-book.layout:215
 msgid "allcaps"
 msgstr "Versalien"
 
-#: lib/layouts/tufte-book.layout:221
+#: lib/layouts/tufte-book.layout:227
 msgid "SmallCaps"
 msgstr "Kapitälchen"
 
-#: lib/layouts/tufte-book.layout:224
+#: lib/layouts/tufte-book.layout:230
 msgid "smallcaps"
 msgstr "Kapitälchen"
 
-#: lib/layouts/tufte-book.layout:232
+#: lib/layouts/tufte-book.layout:238
 msgid "Full Width"
 msgstr "Volle Breite"
 
-#: lib/layouts/tufte-book.layout:252
+#: lib/layouts/tufte-book.layout:258
 msgid "Margin Figure"
 msgstr "Randabbildung"
 
-#: lib/layouts/tufte-book.layout:256
+#: lib/layouts/tufte-book.layout:262
 msgid "Margin Table"
 msgstr "Randtabelle"
 
-#: lib/layouts/tufte-book.layout:262
+#: lib/layouts/tufte-book.layout:268
 msgid "MarginTable"
 msgstr "Randtabelle"
 
-#: lib/layouts/tufte-book.layout:278
+#: lib/layouts/tufte-book.layout:284
 msgid "MarginFigure"
 msgstr "Randabbildung"
 
@@ -19631,19 +19642,19 @@ msgid "Copy as Reference|R"
 msgstr "Als Querverweis kopieren|k"
 
 #: lib/ui/stdcontext.inc:61 lib/ui/stdcontext.inc:375 lib/ui/stdmenus.inc:108
-#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1567
+#: lib/ui/stdtoolbars.inc:86 src/Text3.cpp:1568
 #: src/mathed/InsetMathNest.cpp:555
 msgid "Cut"
 msgstr "Ausschneiden"
 
 #: lib/ui/stdcontext.inc:62 lib/ui/stdcontext.inc:376 lib/ui/stdmenus.inc:109
-#: lib/ui/stdtoolbars.inc:87 src/BufferView.cpp:2268
+#: lib/ui/stdtoolbars.inc:87 src/BufferView.cpp:2269
 msgid "Copy"
 msgstr "Kopieren"
 
 #: lib/ui/stdcontext.inc:63 lib/ui/stdcontext.inc:377 lib/ui/stdmenus.inc:110
 #: lib/ui/stdtoolbars.inc:88 src/Text3.cpp:1512
-#: src/frontends/qt/GuiToolbar.cpp:441 src/mathed/InsetMathGrid.cpp:1560
+#: src/frontends/qt/GuiToolbar.cpp:441 src/mathed/InsetMathGrid.cpp:1565
 #: src/mathed/InsetMathNest.cpp:533
 msgid "Paste"
 msgstr "Einfügen"
@@ -20404,6 +20415,10 @@ msgid "Giant-sized Icons"
 msgstr "Gigantische Symbole"
 
 #: lib/ui/stdcontext.inc:732
+msgid "Show Zoom Level|Z"
+msgstr "Vergrößerungsfaktor anzeigen|V"
+
+#: lib/ui/stdcontext.inc:733
 msgid "Show Zoom Slider|S"
 msgstr "Schieberegler anzeigen|z"
 
@@ -26831,7 +26846,7 @@ msgstr "MS-Word Office-Open XML"
 msgid "Table (CSV)"
 msgstr "Tabelle (CSV)"
 
-#: lib/configure.py:856 src/frontends/qt/GuiView.cpp:1618
+#: lib/configure.py:856 src/frontends/qt/GuiView.cpp:1630
 #: src/mathed/InsetMathMacroTemplate.cpp:538
 msgid "LyX"
 msgstr "LyX"
@@ -26962,6 +26977,10 @@ msgid "Feynman Diagrams"
 msgstr "Feynman-Diagramme"
 
 #: lib/examples/Articles:0
+msgid "Instant Preview"
+msgstr "Eingebettete Vorschau"
+
+#: lib/examples/Articles:0
 msgid "Itemize Bullets"
 msgstr "Auflistungszeichen"
 
@@ -26982,10 +27001,6 @@ msgid "XY-Pic"
 msgstr "XY-Pic"
 
 #: lib/examples/Articles:0
-msgid "Instant Preview"
-msgstr "Eingebettete Vorschau"
-
-#: lib/examples/Articles:0
 msgid "Graphics and Insets"
 msgstr "Grafiken und Einfügungen"
 
@@ -27010,6 +27025,10 @@ msgid "Hazard and Precautionary Statements"
 msgstr "H- und P-Sätze"
 
 #: lib/examples/Articles:0
+msgid "LilyPond Book"
+msgstr "LilyPond-Buch"
+
+#: lib/examples/Articles:0
 msgid "Multilingual Captions"
 msgstr "Mehrsprachige Legenden"
 
@@ -27021,10 +27040,6 @@ msgstr "Noweb2LyX"
 msgid "Noweb Listerrors"
 msgstr "Noweb-Fehlerbericht"
 
-#: lib/examples/Articles:0
-msgid "LilyPond Book"
-msgstr "LilyPond-Buch"
-
 #: lib/examples/Articles:0 src/frontends/qt/GuiDocument.cpp:1771
 msgid "Modules"
 msgstr "Module"
@@ -27054,6 +27069,10 @@ msgid "Multilingual Typesetting with platex"
 msgstr "Mehrsprachige Dokumente mit platex"
 
 #: lib/examples/Articles:0
+msgid "Hebrew Article (KOMA-Script)"
+msgstr "Hebräischer Aufsatz (KOMA-Script)"
+
+#: lib/examples/Articles:0
 msgid "IEEE Transactions Conference"
 msgstr "IEEE Transactions Conference"
 
@@ -27070,10 +27089,6 @@ msgid "Springers Global Journal Template (V. 3)"
 msgstr "Springers globale Vorlage für Zeitschriften (V. 3)"
 
 #: lib/examples/Articles:0
-msgid "Hebrew Article (KOMA-Script)"
-msgstr "Hebräischer Aufsatz (KOMA-Script)"
-
-#: lib/examples/Articles:0
 msgid "00 Main File"
 msgstr "00 Hauptdatei"
 
@@ -27375,8 +27390,8 @@ msgid "Overwrite modified file?"
 msgstr "Modifizierte Datei überschreiben?"
 
 #: src/Buffer.cpp:1458 src/Exporter.cpp:50
-#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiView.cpp:2825
-#: src/frontends/qt/GuiView.cpp:3094 src/frontends/qt/GuiView.cpp:3197
+#: src/frontends/qt/GuiClipboard.cpp:252 src/frontends/qt/GuiView.cpp:2838
+#: src/frontends/qt/GuiView.cpp:3107 src/frontends/qt/GuiView.cpp:3210
 msgid "&Overwrite"
 msgstr "&Überschreiben"
 
@@ -27616,7 +27631,7 @@ msgstr "Zweig \"%1$s\" existiert bereits."
 msgid "Error viewing the output file."
 msgstr "Fehler bei der Ansicht der Ausgabedatei."
 
-#: src/Buffer.cpp:3370 src/frontends/qt/GuiView.cpp:2656
+#: src/Buffer.cpp:3370 src/frontends/qt/GuiView.cpp:2669
 #: src/frontends/qt/Validator.cpp:241 src/insets/ExternalSupport.cpp:394
 #: src/insets/InsetGraphics.cpp:692 src/insets/InsetInclude.cpp:606
 msgid "Invalid filename"
@@ -27703,7 +27718,7 @@ msgstr ""
 msgid "Couldn't export file"
 msgstr "Die Datei konnte nicht exportiert werden"
 
-#: src/Buffer.cpp:4507 src/frontends/qt/GuiView.cpp:2798
+#: src/Buffer.cpp:4507 src/frontends/qt/GuiView.cpp:2811
 msgid "File name error"
 msgstr "Fehler im Dateinamen"
 
@@ -27720,7 +27735,7 @@ msgstr ""
 "enthält Leerzeichen, aber Ihre TeX-Installation erlaubt dies nicht. Bitte "
 "speichern Sie Ihr Dokument in einem Verzeichnis ohne Leerzeichen."
 
-#: src/Buffer.cpp:4597 src/Buffer.cpp:4627 src/frontends/qt/GuiView.cpp:859
+#: src/Buffer.cpp:4597 src/Buffer.cpp:4627 src/frontends/qt/GuiView.cpp:868
 msgid "Document export cancelled."
 msgstr "Der Export des Dokuments wurde abgebrochen."
 
@@ -27874,12 +27889,12 @@ msgstr ""
 msgid "Senseless!!! "
 msgstr "Sinnlos!!! "
 
-#: src/Buffer.cpp:5487
+#: src/Buffer.cpp:5496
 #, c-format
 msgid "Document %1$s reloaded."
 msgstr "Dokument %1$s neu geladen."
 
-#: src/Buffer.cpp:5490
+#: src/Buffer.cpp:5499
 #, c-format
 msgid "Could not reload document %1$s."
 msgstr "Kann Dokument %1$s nicht neu laden."
@@ -27996,8 +28011,8 @@ msgstr "Die Dokumentklasse ist nicht verfügbar"
 msgid "greyedout inset text"
 msgstr "Grauschrift-Einfügungstext"
 
-#: src/BufferParams.cpp:1811 src/BufferParams.cpp:2253 src/Encoding.cpp:253
-#: src/Paragraph.cpp:3007 src/frontends/qt/LaTeXHighlighter.cpp:123
+#: src/BufferParams.cpp:1811 src/BufferParams.cpp:2254 src/Encoding.cpp:253
+#: src/Paragraph.cpp:3013 src/frontends/qt/LaTeXHighlighter.cpp:123
 #: src/frontends/qt/LaTeXHighlighter.cpp:216
 #: src/insets/InsetCommandParams.cpp:508 src/insets/InsetCommandParams.cpp:516
 #: src/insets/InsetGraphics.cpp:886 src/insets/InsetGraphics.cpp:894
@@ -28007,8 +28022,8 @@ msgstr "Grauschrift-Einfügungstext"
 msgid "LyX Warning: "
 msgstr "LyX-Warnung: "
 
-#: src/BufferParams.cpp:1812 src/BufferParams.cpp:2254 src/Encoding.cpp:254
-#: src/Paragraph.cpp:3008 src/insets/InsetCommandParams.cpp:509
+#: src/BufferParams.cpp:1812 src/BufferParams.cpp:2255 src/Encoding.cpp:254
+#: src/Paragraph.cpp:3014 src/insets/InsetCommandParams.cpp:509
 #: src/insets/InsetCommandParams.cpp:517 src/insets/InsetGraphics.cpp:887
 #: src/insets/InsetGraphics.cpp:895 src/insets/InsetListings.cpp:299
 #: src/insets/InsetListings.cpp:307 src/mathed/MathExtern.cpp:1441
@@ -28038,11 +28053,11 @@ msgstr ""
 "Wählen Sie eine passende Kodierung (bspw. utf8)\n"
 "oder ändern Sie den LaTeX-Code im Vorspann."
 
-#: src/BufferParams.cpp:2267
+#: src/BufferParams.cpp:2268
 msgid "Uncodable character in user preamble"
 msgstr "Unkodierbares Zeichen im Benutzervorspann"
 
-#: src/BufferParams.cpp:2269
+#: src/BufferParams.cpp:2270
 #, c-format
 msgid ""
 "The user preamble of your document contains glyphs that are unknown in the "
@@ -28060,7 +28075,7 @@ msgstr ""
 "Wählen Sie eine passende Kodierung (bspw. utf8)\n"
 "oder ändern Sie den LaTeX-Code im Vorspann."
 
-#: src/BufferParams.cpp:2584
+#: src/BufferParams.cpp:2585
 #, c-format
 msgid ""
 "The layout file:\n"
@@ -28075,11 +28090,11 @@ msgstr ""
 "Formaten wird benutzt werden. LyX wird nicht in der Lage sein eine korrekte\n"
 "Ausgabe zu erzeugen."
 
-#: src/BufferParams.cpp:2590
+#: src/BufferParams.cpp:2591
 msgid "Document class not found"
 msgstr "Dokumentklasse nicht gefunden"
 
-#: src/BufferParams.cpp:2597
+#: src/BufferParams.cpp:2598
 #, c-format
 msgid ""
 "Due to some error in it, the layout file:\n"
@@ -28094,23 +28109,23 @@ msgstr ""
 "korrekte\n"
 "Ausgabe erzeugen können."
 
-#: src/BufferParams.cpp:2603 src/BufferView.cpp:1424 src/BufferView.cpp:1456
+#: src/BufferParams.cpp:2604 src/BufferView.cpp:1424 src/BufferView.cpp:1456
 msgid "Could not load class"
 msgstr "Konnte Klasse nicht laden"
 
-#: src/BufferParams.cpp:2648
+#: src/BufferParams.cpp:2649
 msgid "Error reading internal layout information"
 msgstr "Fehler beim Einlesen interner Format-Informationen"
 
-#: src/BufferParams.cpp:2649 src/TextClass.cpp:1952 src/TextClass.cpp:1985
+#: src/BufferParams.cpp:2650 src/TextClass.cpp:1952 src/TextClass.cpp:1985
 msgid "Read Error"
 msgstr "Lesefehler"
 
-#: src/BufferParams.cpp:3651
+#: src/BufferParams.cpp:3655
 msgid "No bibliography processor found!"
 msgstr "Kein Literaturverzeichnis-Prozessor gefunden!"
 
-#: src/BufferParams.cpp:3653
+#: src/BufferParams.cpp:3657
 #, c-format
 msgid ""
 "The bibliography processor requested by this document (%1$s) is not "
@@ -28124,11 +28139,11 @@ msgstr ""
 "Literaturverweise erzeugt werden.\n"
 "Bitte reparieren Sie Ihr System!"
 
-#: src/BufferParams.cpp:3661
+#: src/BufferParams.cpp:3665
 msgid "Requested bibliography processor not found!"
 msgstr "Verlangter Literaturverzeichnis-Prozessor nicht gefunden!"
 
-#: src/BufferParams.cpp:3663
+#: src/BufferParams.cpp:3667
 #, c-format
 msgid ""
 "The bibliography processor requested by this document (%1$s) is not "
@@ -28168,8 +28183,8 @@ msgstr "Das Dokument wurde extern bearbeitet"
 msgid "This portion of the document is deleted."
 msgstr "Dieser Teil des Dokuments wird gelöscht."
 
-#: src/BufferView.cpp:1191 src/BufferView.cpp:2253
-#: src/frontends/qt/GuiView.cpp:4246 src/frontends/qt/GuiView.cpp:4334
+#: src/BufferView.cpp:1191 src/BufferView.cpp:2254
+#: src/frontends/qt/GuiView.cpp:4259 src/frontends/qt/GuiView.cpp:4347
 msgid "Absolute filename expected."
 msgstr "Ein absoluter Dateipfad wird erwartet."
 
@@ -28245,42 +28260,42 @@ msgstr "Ein Zeichen (ohne Leerzeichen)"
 msgid "Statistics"
 msgstr "Statistik"
 
-#: src/BufferView.cpp:2111
+#: src/BufferView.cpp:2112
 #, c-format
 msgid ""
 "`inset-forall' interrupted because number of actions is larger than %1$d"
 msgstr ""
 ",inset-forall` wurde abgebrochen, da die Zahl der Aktionen %1$d übersteigt"
 
-#: src/BufferView.cpp:2113
+#: src/BufferView.cpp:2114
 #, c-format
 msgid "Applied \"%1$s\" to %2$d insets"
 msgstr "Der Befehl \"%1$s\" wurde auf %2$d Einfügungen angewandt"
 
-#: src/BufferView.cpp:2121
+#: src/BufferView.cpp:2122
 msgid "Branch name"
 msgstr "Name des Zweigs"
 
-#: src/BufferView.cpp:2128 src/frontends/qt/GuiBranches.cpp:225
+#: src/BufferView.cpp:2129 src/frontends/qt/GuiBranches.cpp:225
 msgid "Branch already exists"
 msgstr "Zweig existiert bereits"
 
-#: src/BufferView.cpp:3055
+#: src/BufferView.cpp:3056
 #, c-format
 msgid "Inserting document %1$s..."
 msgstr "Füge Dokument %1$s ein..."
 
-#: src/BufferView.cpp:3071
+#: src/BufferView.cpp:3072
 #, c-format
 msgid "Document %1$s inserted."
 msgstr "Dokument %1$s ist eingefügt."
 
-#: src/BufferView.cpp:3073
+#: src/BufferView.cpp:3074
 #, c-format
 msgid "Could not insert document %1$s"
 msgstr "Das Dokument %1$s konnte nicht eingefügt werden"
 
-#: src/BufferView.cpp:3571
+#: src/BufferView.cpp:3572
 #, c-format
 msgid ""
 "Could not read the specified document\n"
@@ -28291,11 +28306,11 @@ msgstr ""
 "konnte aufgrund des folgenden Fehlers\n"
 "nicht gelesen werden: %2$s"
 
-#: src/BufferView.cpp:3573
+#: src/BufferView.cpp:3574
 msgid "Could not read file"
 msgstr "Die Datei konnte nicht gelesen werden"
 
-#: src/BufferView.cpp:3580
+#: src/BufferView.cpp:3581
 #, c-format
 msgid ""
 "%1$s\n"
@@ -28304,17 +28319,17 @@ msgstr ""
 "%1$s\n"
 "ist nicht lesbar."
 
-#: src/BufferView.cpp:3581 src/frontends/qt/qt_helpers.cpp:311
+#: src/BufferView.cpp:3582 src/frontends/qt/qt_helpers.cpp:311
 #: src/frontends/qt/qt_helpers.cpp:314 src/frontends/qt/qt_helpers.cpp:320
 #: src/output.cpp:39
 msgid "Could not open file"
 msgstr "Die Datei konnte nicht geöffnet werden"
 
-#: src/BufferView.cpp:3588
+#: src/BufferView.cpp:3589
 msgid "Reading not UTF-8 encoded file"
 msgstr "Lese nicht-UTF-8-kodierte Datei"
 
-#: src/BufferView.cpp:3589
+#: src/BufferView.cpp:3590
 msgid ""
 "The file is not UTF-8 encoded.\n"
 "It will be read as local 8Bit-encoded.\n"
@@ -29186,7 +29201,7 @@ msgstr "&Nicht überschreiben"
 msgid "Overwrite &all"
 msgstr "&Alle überschreiben"
 
-#: src/Exporter.cpp:51 src/frontends/qt/GuiView.cpp:779
+#: src/Exporter.cpp:51 src/frontends/qt/GuiView.cpp:788
 msgid "&Cancel export"
 msgstr "Export &abbrechen"
 
@@ -29304,7 +29319,7 @@ msgstr "Eigenname %1$s, "
 msgid "Cannot view file"
 msgstr "Datei kann nicht betrachtet werden"
 
-#: src/Format.cpp:633 src/frontends/qt/GuiView.cpp:3936
+#: src/Format.cpp:633 src/frontends/qt/GuiView.cpp:3949
 #, c-format
 msgid "File does not exist: %1$s"
 msgstr "Die Datei existiert nicht: %1$s"
@@ -29776,7 +29791,7 @@ msgstr ""
 msgid "Missing filename for --import"
 msgstr "Die Option --import verlangt die Angabe eines Dateinamens"
 
-#: src/LyXRC.cpp:3073
+#: src/LyXRC.cpp:3106
 msgid ""
 "Consider run-together words, such as \"diskdrive\" for \"disk drive\", as "
 "legal words?"
@@ -29784,7 +29799,7 @@ msgstr ""
 "Sollen zusammengeschriebene Wörter wie \"Verzeichnisname\" als korrekt "
 "angesehen werden?"
 
-#: src/LyXRC.cpp:3077
+#: src/LyXRC.cpp:3110
 msgid ""
 "Specify an alternate language. The default is to use the language of the "
 "document."
@@ -29793,7 +29808,7 @@ msgstr ""
 "Rechtschreibprüfung verwendet wird. Voreingestellt ist die Sprache des "
 "Dokuments."
 
-#: src/LyXRC.cpp:3085
+#: src/LyXRC.cpp:3118
 msgid ""
 "De-select if you don't want the current selection to be replaced "
 "automatically by what you type."
@@ -29801,7 +29816,7 @@ msgstr ""
 "Deaktivieren Sie diesen Schalter, wenn Sie nicht möchten, dass markierter "
 "Text automatisch durch Ihre Eingabe ersetzt wird."
 
-#: src/LyXRC.cpp:3089
+#: src/LyXRC.cpp:3122
 msgid ""
 "De-select if you don't want the class options to be reset to defaults after "
 "class change."
@@ -29810,14 +29825,14 @@ msgstr ""
 "Klassenoptionen nach einem Klassenwechsel auf den Standardwert zurückgesetzt "
 "werden."
 
-#: src/LyXRC.cpp:3093
+#: src/LyXRC.cpp:3126
 msgid ""
 "The time interval between auto-saves (in seconds). 0 means no auto-save."
 msgstr ""
 "Das Zeitintervall zwischen automatischen Sicherungen (in Sekunden). 0 "
 "bedeutet, dass nicht automatisch gespeichert wird."
 
-#: src/LyXRC.cpp:3100
+#: src/LyXRC.cpp:3133
 msgid ""
 "The path for storing backup files. If it is an empty string, LyX will store "
 "the backup file in the same directory as the original file."
@@ -29825,7 +29840,7 @@ msgstr ""
 "Der Pfad für Sicherungsdateien. Wird nichts angegeben, werden die Kopien im "
 "selben Verzeichnis wie das Original gespeichert."
 
-#: src/LyXRC.cpp:3104
+#: src/LyXRC.cpp:3137
 msgid ""
 "Define the options of bibtex (cf. man bibtex) or select an alternative "
 "compiler (e.g. mlbibtex or bibulus)."
@@ -29833,12 +29848,12 @@ msgstr ""
 "Definieren Sie die Optionen von BibTeX (vgl. die Manpage von bibtex) oder "
 "wählen Sie ein alternatives Programm (z. B. mlbibtex oder bibulus)."
 
-#: src/LyXRC.cpp:3108
+#: src/LyXRC.cpp:3141
 msgid "Define the options of the bibtex program for PLaTeX (Japanese LaTeX)."
 msgstr ""
 "Definiert die Optionen des BibTeX-Prozessors für pLaTeX (japanisches LaTeX)"
 
-#: src/LyXRC.cpp:3112
+#: src/LyXRC.cpp:3145
 msgid ""
 "Keybindings file. Can either specify an absolute path, or LyX will look in "
 "its global and local bind/ directories."
@@ -29847,13 +29862,13 @@ msgstr ""
 "absoluten Pfad angeben oder nur einen Namen. LyX sucht dann in den lokalen "
 "und globalen bind-Verzeichnissen."
 
-#: src/LyXRC.cpp:3116
+#: src/LyXRC.cpp:3149
 msgid "Select to check whether the lastfiles still exist."
 msgstr ""
 "Bitte aktivieren, wenn geprüft werden soll, ob die angegebenen, zuletzt "
 "bearbeiteten Dateien noch existieren."
 
-#: src/LyXRC.cpp:3120
+#: src/LyXRC.cpp:3153
 msgid ""
 "Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -"
 "n38\" Refer to the ChkTeX documentation."
@@ -29862,7 +29877,7 @@ msgstr ""
 "\"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\". Bitte lesen Sie die "
 "Dokumentation von ChkTeX."
 
-#: src/LyXRC.cpp:3127
+#: src/LyXRC.cpp:3160
 msgid ""
 "Forbid use of external converters with 'needauth' option to prevent "
 "undesired effects."
@@ -29870,7 +29885,7 @@ msgstr ""
 "Verbiete die Verwendung von autorisierungspflichtigen Konvertern, um "
 "unbeabsichtigte Folgen zu verhindern."
 
-#: src/LyXRC.cpp:3131
+#: src/LyXRC.cpp:3164
 msgid ""
 "Ask user before calling external converters with 'needauth' option to "
 "prevent undesired effects."
@@ -29879,7 +29894,7 @@ msgstr ""
 "autorisierungspflichtig markiert wurden, um unbeabsichtigte Folgen zu "
 "verhindern."
 
-#: src/LyXRC.cpp:3138
+#: src/LyXRC.cpp:3171
 msgid ""
 "LyX normally doesn't update the cursor position if you move the scrollbar. "
 "Set to true if you'd prefer to always have the cursor on screen."
@@ -29888,7 +29903,7 @@ msgstr ""
 "wenn Sie im Dokument scrollen. Ist dieser Schalter aktiv, wird der Cursor ,"
 "mitgenommen`."
 
-#: src/LyXRC.cpp:3146
+#: src/LyXRC.cpp:3179
 msgid ""
 "LyX normally doesn't allow the user to scroll further than the bottom of the "
 "document. Set to true if you prefer to scroll the bottom of the document to "
@@ -29897,17 +29912,17 @@ msgstr ""
 "Normalerweise kann nur bis zum unteren Rand des Dokuments gescrollt werden. "
 "Ist dieser Schalter aktiv, kann man darüber hinaus scrollen."
 
-#: src/LyXRC.cpp:3150
+#: src/LyXRC.cpp:3183
 msgid "Make Apple key act as Meta and Control key as Ctrl."
 msgstr ""
 "Mit dieser Einstellung verhält sich die Apfeltaste wie die Meta-Taste und "
 "die Control-Taste wie Ctlr."
 
-#: src/LyXRC.cpp:3154
+#: src/LyXRC.cpp:3187
 msgid "Use the Mac OS X conventions for cursor movement"
 msgstr "Mac-OS-X-Konventionen für Cursorbewegungen benutzen"
 
-#: src/LyXRC.cpp:3158
+#: src/LyXRC.cpp:3191
 msgid ""
 "Show a small box around a Math Macro with the macro name when the cursor is "
 "inside."
@@ -29915,7 +29930,7 @@ msgstr ""
 "Zeige eine kleine Box um ein Mathe-Makro mit dem Makronamen, wenn der Cursor "
 "innerhalb des Makros ist."
 
-#: src/LyXRC.cpp:3162
+#: src/LyXRC.cpp:3195
 msgid ""
 "Command definition file. Can either specify an absolute path, or LyX will "
 "look in its global and local commands/ directories."
@@ -29924,18 +29939,18 @@ msgstr ""
 "absoluten Pfad angeben oder LyX sucht in seinen lokalen und globalen "
 "Befehlen/ Verzeichnissen."
 
-#: src/LyXRC.cpp:3166
+#: src/LyXRC.cpp:3199
 msgid ""
 "The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts."
 msgstr ""
 "Das voreingestellte Format, das für LFUN_BUFFER_[VIEW|UPDATE] ohne TeX-"
 "Schriften verwendet wird."
 
-#: src/LyXRC.cpp:3170
+#: src/LyXRC.cpp:3203
 msgid "The default format used with LFUN_BUFFER_[VIEW|UPDATE]."
 msgstr "Das Standardformat, das LFUN_BUFFER_[VIEW|UPDATE] verwendet."
 
-#: src/LyXRC.cpp:3174
+#: src/LyXRC.cpp:3207
 msgid ""
 "Iconify the dialogs when the main window is iconified. (Affects only dialogs "
 "shown after the change has been made.)"
@@ -29943,11 +29958,11 @@ msgstr ""
 "Dialoge werden minimiert, wenn das Hauptfenster minimiert wird (betrifft nur "
 "Dialoge, die nach dem Aktivieren dieser Option geöffnet werden)."
 
-#: src/LyXRC.cpp:3178
+#: src/LyXRC.cpp:3211
 msgid "Select how LyX will display any graphics."
 msgstr "Wählen Sie, wie LyX Grafiken darstellen soll."
 
-#: src/LyXRC.cpp:3182
+#: src/LyXRC.cpp:3215
 msgid ""
 "The default path for your documents. An empty value selects the directory "
 "LyX was started from."
@@ -29955,11 +29970,11 @@ msgstr ""
 "Der Standard-Pfad für Ihre Dokumente. Bei einem leerem Eintrag wird das "
 "Verzeichnis gewählt, aus dem LyX gestartet wurde."
 
-#: src/LyXRC.cpp:3186
+#: src/LyXRC.cpp:3219
 msgid "Specify additional chars that can be part of a word."
 msgstr "Geben Sie Sonderzeichen an, die als Teil eines Wortes erlaubt sind."
 
-#: src/LyXRC.cpp:3190
+#: src/LyXRC.cpp:3223
 msgid ""
 "The path that LyX will set when offering to choose an example. An empty "
 "value selects the directory LyX was started from."
@@ -29967,7 +29982,7 @@ msgstr ""
 "Der Pfad, den LyX bei der Auswahl eines Beispiels voreinstellt. Bei einem "
 "leeren Eintrag wird das Verzeichnis gewählt, aus dem LyX gestartet wurde."
 
-#: src/LyXRC.cpp:3197
+#: src/LyXRC.cpp:3230
 msgid ""
 "Define the options of makeindex (cf. man makeindex) or select an alternative "
 "compiler. E.g., using xindy/make-rules, the command string would be "
@@ -29977,12 +29992,12 @@ msgstr ""
 "Sie ein alternatives Programm. Bei der Verwendung von xindy/make-rules würde "
 "der Befehl z. B. \"makeindex.sh -m $$lang\" lauten."
 
-#: src/LyXRC.cpp:3201
+#: src/LyXRC.cpp:3234
 msgid "Define the options of the index program for PLaTeX (Japanese LaTeX)."
 msgstr ""
 "Definiert die Optionen des Indexprozessors für pLaTeX (japanisches LaTeX)."
 
-#: src/LyXRC.cpp:3205
+#: src/LyXRC.cpp:3238
 msgid ""
 "Define the options of makeindex (cf. man makeindex) to be used for "
 "nomenclatures. This might differ from the index processing options."
@@ -29991,11 +30006,11 @@ msgstr ""
 "Nomenklaturen. Die hier spezifizierten Optionen können von denen des "
 "Indexprozessors abweichen."
 
-#: src/LyXRC.cpp:3209
+#: src/LyXRC.cpp:3242
 msgid "The command to run the python pygments syntax highlighter."
 msgstr "Der Befehl, der die Python-Pygments-Codehervorhebung durchführt."
 
-#: src/LyXRC.cpp:3218
+#: src/LyXRC.cpp:3251
 msgid ""
 "Use this to set the correct mapping file for your keyboard. You'll need this "
 "if you for instance want to type German documents on an American keyboard."
@@ -30004,7 +30019,7 @@ msgstr ""
 "können dies z. B. verwenden, um einfach deutsche Texte auf einer "
 "amerikanischen Tastatur zu schreiben."
 
-#: src/LyXRC.cpp:3222
+#: src/LyXRC.cpp:3255
 msgid ""
 "Select if a language switching command is needed at the beginning of the "
 "document."
@@ -30012,14 +30027,14 @@ msgstr ""
 "Bitte aktivieren, wenn zu Beginn des Dokuments ein besonderer Befehl "
 "benötigt wird, um die Sprache zu aktivieren."
 
-#: src/LyXRC.cpp:3226
+#: src/LyXRC.cpp:3259
 msgid ""
 "Select if a language switching command is needed at the end of the document."
 msgstr ""
 "Bitte aktivieren, wenn am Ende des Dokuments ein besonderer Befehl benötigt "
 "wird, um die Sprache zu deaktivieren."
 
-#: src/LyXRC.cpp:3230
+#: src/LyXRC.cpp:3263
 msgid ""
 "The LaTeX command for changing from the language of the document to another "
 "language. E.g. \\selectlanguage{$$lang} where $$lang is substituted by the "
@@ -30029,15 +30044,15 @@ msgstr ""
 "zu wechseln. Beispiel: \\selectlanguage{$$lang} wobei $$lang durch den Namen "
 "der zweiten Sprache ersetzt wird."
 
-#: src/LyXRC.cpp:3234
+#: src/LyXRC.cpp:3267
 msgid "The LaTeX command for changing back to the language of the document."
 msgstr "Der LaTeX-Befehl, um zur Sprache des Dokuments zurück zu wechseln."
 
-#: src/LyXRC.cpp:3238
+#: src/LyXRC.cpp:3271
 msgid "The LaTeX command for local changing of the language."
 msgstr "Der LaTeX-Befehl, um die Sprache lokal zu ändern."
 
-#: src/LyXRC.cpp:3242
+#: src/LyXRC.cpp:3275
 msgid ""
 "De-select if you don't want the language(s) used as an argument to "
 "\\documentclass."
@@ -30045,7 +30060,7 @@ msgstr ""
 "Deaktivieren Sie diesen Schalter, wenn die Sprache nicht als Argument für "
 "\\documentclass verwendet werden soll."
 
-#: src/LyXRC.cpp:3246
+#: src/LyXRC.cpp:3279
 msgid ""
 "The LaTeX command for loading the language package. E.g. "
 "\"\\usepackage{babel}\", \"\\usepackage{omega}\"."
@@ -30053,7 +30068,7 @@ msgstr ""
 "Der LaTeX-Befehl, um das Sprachpaket zu laden. Beispiel: "
 "\"\\usepackage{babel}\", \"\\usepackage{omega}\"."
 
-#: src/LyXRC.cpp:3250
+#: src/LyXRC.cpp:3283
 msgid ""
 "De-select if you don't want babel to be used when the language of the "
 "document is the default language."
@@ -30061,25 +30076,25 @@ msgstr ""
 "Deaktivieren Sie diesen Schalter, wenn das Paket babel nicht verwendet "
 "werden soll, falls die Sprache des Dokuments die Standardsprache ist."
 
-#: src/LyXRC.cpp:3254
+#: src/LyXRC.cpp:3287
 msgid "De-select if you do not want LyX to scroll to saved position."
 msgstr ""
 "Deaktivieren Sie diesen Schalter, wenn LyX nicht zur gespeicherten Position "
 "springen soll."
 
-#: src/LyXRC.cpp:3258
+#: src/LyXRC.cpp:3291
 msgid "De-select to prevent loading files opened from the last LyX session."
 msgstr ""
 "Deaktivieren Sie diesen Schalter, um das Laden von Dateien zu verhindern, "
 "die bei der letzten LyX-Sitzung geöffnet waren."
 
-#: src/LyXRC.cpp:3262
+#: src/LyXRC.cpp:3295
 msgid "De-select if you don't want LyX to create backup files."
 msgstr ""
 "Deaktivieren Sie diesen Schalter, wenn LyX keine Sicherungsdateien erstellen "
 "soll."
 
-#: src/LyXRC.cpp:3266
+#: src/LyXRC.cpp:3299
 msgid ""
 "Select to control the highlighting of words with a language foreign to that "
 "of the document."
@@ -30087,32 +30102,32 @@ msgstr ""
 "Bitte aktivieren, um Textbereiche mit einer von der Standardsprache des "
 "Dokuments abweichenden Sprache farblich hervorzuheben."
 
-#: src/LyXRC.cpp:3274
+#: src/LyXRC.cpp:3307
 msgid "The scrolling speed of the mouse wheel."
 msgstr "Die Scrollgeschwindigkeit des Mausrads."
 
-#: src/LyXRC.cpp:3278
+#: src/LyXRC.cpp:3311
 msgid "The completion popup delay."
 msgstr "Verzögerung des Vervollständigungs-Popup"
 
-#: src/LyXRC.cpp:3282
+#: src/LyXRC.cpp:3315
 msgid "Select to display the completion popup in math mode."
 msgstr ""
 "Wählen Sie dies, um das Vervollständigungs-Popup im Mathe-Modus anzuzeigen."
 
-#: src/LyXRC.cpp:3286
+#: src/LyXRC.cpp:3319
 msgid "Select to display the completion popup in text mode."
 msgstr ""
 "Wählen Sie dies, um das Vervollständigungs-Popup im Text-Modus anzuzeigen."
 
-#: src/LyXRC.cpp:3290
+#: src/LyXRC.cpp:3323
 msgid ""
 "Show the completion popup without delay after non-unique completion attempt."
 msgstr ""
 "Das Vervollständigungs-Popup wird ohne Verzögerung nach einem mehrdeutigen "
 "Vervollständigungs-Versuch angezeigt."
 
-#: src/LyXRC.cpp:3294
+#: src/LyXRC.cpp:3327
 msgid ""
 "Show a small triangle on the cursor to indicate that a completion is "
 "available."
@@ -30120,36 +30135,36 @@ msgstr ""
 "Zeigt ein kleines Dreieck beim Cursor, um anzuzeigen, dass eine "
 "Vervollständigung verfügbar ist."
 
-#: src/LyXRC.cpp:3298
+#: src/LyXRC.cpp:3331
 msgid "The inline completion delay."
 msgstr "Verzögerung der Wortvervollständigung"
 
-#: src/LyXRC.cpp:3302
+#: src/LyXRC.cpp:3335
 msgid "Select to display the inline completion in math mode."
 msgstr ""
 "Wählen Sie dies, um Inline-Vervollständigung im Mathe-Modus anzuzeigen."
 
-#: src/LyXRC.cpp:3306
+#: src/LyXRC.cpp:3339
 msgid "Select to display the inline completion in text mode."
 msgstr "Wählen Sie dies, um Wortvervollständigung im Text-Modus anzuzeigen."
 
-#: src/LyXRC.cpp:3310
+#: src/LyXRC.cpp:3343
 msgid "Use \"...\" to shorten long completions."
 msgstr "Benutze \"...\" um lange Vervollständigungen zu kürzen."
 
-#: src/LyXRC.cpp:3314
+#: src/LyXRC.cpp:3347
 msgid "Allow TeXMacs shorthand, like => converting to \\Rightarrow."
 msgstr ""
 "Erlaube TeXMacs-Shorthands (z.B. Konvertierung von => zu \\Rightarrow)."
 
-#: src/LyXRC.cpp:3318
+#: src/LyXRC.cpp:3351
 #, c-format
 msgid "Maximal number of lastfiles. Up to %1$d can appear in the file menu."
 msgstr ""
 "Die maximale Anzahl der zuletzt geöffneten Dateien. Bis zu %1$d können im "
 "'Datei'-Menü erscheinen."
 
-#: src/LyXRC.cpp:3323
+#: src/LyXRC.cpp:3356
 msgid ""
 "Specify those directories which should be prepended to the PATH environment "
 "variable.\n"
@@ -30159,40 +30174,40 @@ msgstr ""
 "vorangestellt werden sollen.\n"
 "Verwenden Sie das native Format Ihres Betriebssystems."
 
-#: src/LyXRC.cpp:3329
+#: src/LyXRC.cpp:3362
 msgid "Shows a typeset preview of things such as math"
 msgstr "Zeigt eine exakte Vorschau bspw. von mathematischen Formeln"
 
-#: src/LyXRC.cpp:3333
+#: src/LyXRC.cpp:3366
 msgid "Previewed equations will have \"(#)\" labels rather than numbered ones"
 msgstr ""
 "Gleichungen werden in der Vorschau \"(#)\" anstelle von Nummern als Marken "
 "haben"
 
-#: src/LyXRC.cpp:3337
+#: src/LyXRC.cpp:3370
 msgid "Scale the preview size to suit."
 msgstr "Skaliere die Größe der Vorschau geeignet."
 
-#: src/LyXRC.cpp:3341
+#: src/LyXRC.cpp:3374
 msgid "The option to print out in landscape."
 msgstr "Die Option, um im Querformat zu drucken."
 
-#: src/LyXRC.cpp:3345
+#: src/LyXRC.cpp:3378
 msgid "Option to specify the dimensions of the print paper."
 msgstr "Die Option, um die Seitengröße anzugeben."
 
-#: src/LyXRC.cpp:3349
+#: src/LyXRC.cpp:3382
 msgid "The option to specify paper type."
 msgstr "Die Option, um die Papierart anzugeben."
 
-#: src/LyXRC.cpp:3353
+#: src/LyXRC.cpp:3386
 msgid ""
 "Select to have visual bidi cursor movement, unselect for logical movement."
 msgstr ""
 "Aktivieren für visuelle Cursor-Bewegung, deaktiveren für logische Cursor-"
 "Bewegung im bidirektionalen Modus."
 
-#: src/LyXRC.cpp:3357
+#: src/LyXRC.cpp:3390
 msgid ""
 "Specify whether, closing the last view of an open document, LyX should close "
 "the document (yes), hide it (no), or ask the user (ask)."
@@ -30201,7 +30216,7 @@ msgstr ""
 "dieses Dokument schließt (yes), es verbirgt (no) oder ob nachgefragt werden "
 "soll (ask)."
 
-#: src/LyXRC.cpp:3361
+#: src/LyXRC.cpp:3394
 msgid ""
 "DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes "
 "wrong, override the setting here."
@@ -30210,13 +30225,13 @@ msgstr ""
 "selbsttätig ermittelt. Scheitert dies, können Sie hier den korrekten Wert "
 "vorgeben."
 
-#: src/LyXRC.cpp:3367
+#: src/LyXRC.cpp:3400
 msgid "The screen fonts used to display the text while editing."
 msgstr ""
 "Die Bildschirmschriften, die für die Anzeige des Textes während der "
 "Bearbeitung verwendet werden."
 
-#: src/LyXRC.cpp:3376
+#: src/LyXRC.cpp:3409
 msgid ""
 "Allow bitmap fonts to be resized. If you are using a bitmap font, selecting "
 "this option may make some fonts look blocky in LyX. Deselecting this option "
@@ -30227,13 +30242,13 @@ msgstr ""
 "pixelig erscheinen. Wenn Sie diese Option abwählen, verwendet LyX die "
 "nächstpassende Größe anstatt die Schrift zu skalieren."
 
-#: src/LyXRC.cpp:3380
+#: src/LyXRC.cpp:3413
 msgid "The font sizes used for calculating the scaling of the screen fonts."
 msgstr ""
 "Die Schriftgrößen, die für die Skalierung der Bildschirmschriften verwendet "
 "werden."
 
-#: src/LyXRC.cpp:3385
+#: src/LyXRC.cpp:3418
 #, no-c-format
 msgid ""
 "The zoom percentage for screen fonts. A setting of 100% will make the fonts "
@@ -30242,13 +30257,13 @@ msgstr ""
 "Der prozentuale Skalierungsfaktor für die Bildschirmschriften. Ein Wert von "
 "100% lässt die Zeichen etwa genauso groß erscheinen wie auf Papier."
 
-#: src/LyXRC.cpp:3389
+#: src/LyXRC.cpp:3422
 msgid "Allow session manager to save and restore windows geometry."
 msgstr ""
 "Erlaubt dem Sitzungsmanager, Größen von Fenstern zu speichern und wieder "
 "herzustellen."
 
-#: src/LyXRC.cpp:3393
+#: src/LyXRC.cpp:3426
 msgid ""
 "This starts the lyxserver. The pipes get an additional extension \".in\" and "
 "\".out\". Only for advanced users."
@@ -30257,13 +30272,13 @@ msgstr ""
 "Weiterleitungen erhalten automatisch die Endungen \".in\" und \".out\". "
 "Diese Option ist vor allem für Fortgeschrittene interessant."
 
-#: src/LyXRC.cpp:3400
+#: src/LyXRC.cpp:3433
 msgid "De-select if you don't want the startup banner."
 msgstr ""
 "Deaktivieren Sie diesen Schalter, wenn das Start-Logo nicht angezeigt werden "
 "soll."
 
-#: src/LyXRC.cpp:3404
+#: src/LyXRC.cpp:3437
 msgid ""
 "LyX will place its temporary directories in this path. They will be deleted "
 "when you quit LyX."
@@ -30271,12 +30286,12 @@ msgstr ""
 "In diesem Verzeichnis legt LyX seine temporären Dateien an. Diese werden "
 "gelöscht, wenn Sie LyX beenden."
 
-#: src/LyXRC.cpp:3408
+#: src/LyXRC.cpp:3441
 msgid "This is the place where the files of the thesaurus library reside."
 msgstr ""
 "Dies ist der Ort, an dem sich die Dateien des Thesaurusprogramms befinden."
 
-#: src/LyXRC.cpp:3412
+#: src/LyXRC.cpp:3445
 msgid ""
 "The path that LyX will set when offering to choose a template. An empty "
 "value selects the directory LyX was started from."
@@ -30284,7 +30299,7 @@ msgstr ""
 "Der Pfad, den LyX bei der Auswahl einer Vorlage voreinstellt. Bei einem "
 "leeren Eintrag wird das Verzeichnis gewählt, aus dem LyX gestartet wurde."
 
-#: src/LyXRC.cpp:3422
+#: src/LyXRC.cpp:3455
 msgid ""
 "Specify those directories which should be prepended to the TEXINPUTS "
 "environment variable.\n"
@@ -30295,7 +30310,7 @@ msgstr ""
 "Ein '.' repräsentiert das aktuelle Dokumentverzeichnis. Verwenden Sie das "
 "native Format Ihres Betriebssystems."
 
-#: src/LyXRC.cpp:3429
+#: src/LyXRC.cpp:3462
 msgid ""
 "The UI (user interface) file. Can either specify an absolute path, or LyX "
 "will look in its global and local ui/ directories."
@@ -30304,7 +30319,7 @@ msgstr ""
 "wird. Entweder Sie geben einen absoluten Pfad an oder LyX sucht in den "
 "lokalen und globalen ui-Verzeichnissen."
 
-#: src/LyXRC.cpp:3439
+#: src/LyXRC.cpp:3472
 msgid ""
 "Enable use the system colors for some things like main window background and "
 "selection."
@@ -30312,11 +30327,11 @@ msgstr ""
 "Verwendet die Systemfarben für einige Elemente wie den Hintergrund des "
 "Eingabefensters und Text-Markierungen."
 
-#: src/LyXRC.cpp:3443
+#: src/LyXRC.cpp:3476
 msgid "Enable the automatic appearance of tool tips in the work area."
 msgstr "Automatisches Erscheinen von Tooltips im Arbeitsbereich anschalten."
 
-#: src/LyXRC.cpp:3447
+#: src/LyXRC.cpp:3480
 msgid "Specify the paper command to DVI viewer (leave empty or use \"-paper\")"
 msgstr ""
 "Geben Sie die Papiergrößen-Option für den DVI-Betrachter an (verwenden Sie "
@@ -30365,7 +30380,7 @@ msgstr "LyX-VK: Protokollmeldung"
 msgid "(no log message)"
 msgstr "(keine Protokollmeldung)"
 
-#: src/LyXVC.cpp:252 src/frontends/qt/GuiView.cpp:3799
+#: src/LyXVC.cpp:252 src/frontends/qt/GuiView.cpp:3812
 msgid "LyX VC: Log Message"
 msgstr "LyX VK: Protokollmeldung"
 
@@ -30386,7 +30401,7 @@ msgstr ""
 msgid "Revert to stored version of document?"
 msgstr "Zur gespeicherten Version des Dokuments zurückkehren?"
 
-#: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4383
+#: src/LyXVC.cpp:310 src/frontends/qt/GuiView.cpp:4396
 msgid "&Revert"
 msgstr "&Wiederherstellen"
 
@@ -30523,40 +30538,40 @@ msgstr "Bereits im Regexp-Modus"
 msgid "Regexp editor mode"
 msgstr "Regexp-Editor-Modus"
 
-#: src/Text3.cpp:1601
+#: src/Text3.cpp:1602
 msgid "Layout "
 msgstr "Format "
 
-#: src/Text3.cpp:1602 src/Text3.cpp:2172
+#: src/Text3.cpp:1603 src/Text3.cpp:2173
 msgid " not known"
 msgstr " unbekannt"
 
-#: src/Text3.cpp:2171
+#: src/Text3.cpp:2172
 msgid "Table Style "
 msgstr "Tabellenstil"
 
-#: src/Text3.cpp:2364 src/frontends/qt/GuiApplication.cpp:1873
+#: src/Text3.cpp:2365 src/frontends/qt/GuiApplication.cpp:1873
 msgid "Missing argument"
 msgstr "Fehlendes Argument"
 
-#: src/Text3.cpp:2533
+#: src/Text3.cpp:2534
 msgid "Invalid argument (number exceeds stack size)!"
 msgstr "Ungültiges Argument (Zahl größer als Zwischenspeicher)!"
 
-#: src/Text3.cpp:2537
+#: src/Text3.cpp:2538
 msgid "Invalid argument (must be a non-negative number)!"
 msgstr "Ungültiges Argument (muss eine nicht-negative Zahl sein)!"
 
-#: src/Text3.cpp:2542 src/Text3.cpp:2560
+#: src/Text3.cpp:2543 src/Text3.cpp:2561
 #, c-format
 msgid "Text properties applied: %1$s"
 msgstr "Angewendete Texteigenschaften: %1$s"
 
-#: src/Text3.cpp:2719
+#: src/Text3.cpp:2720
 msgid "Path to thesaurus directory not set!"
 msgstr "Pfad zum Thesaurus-Wörterbuch nicht festlegt!"
 
-#: src/Text3.cpp:2720
+#: src/Text3.cpp:2721
 msgid ""
 "The path to the thesaurus directory has not been specified.\n"
 "The thesaurus is not functional.\n"
@@ -30568,7 +30583,7 @@ msgstr ""
 "Im Benutzerhandbuch, Abschnitt 6.15.11, finden Sie Hinweise,\n"
 "um den Thesaurus einzurichten."
 
-#: src/Text3.cpp:2854 src/Text3.cpp:2865
+#: src/Text3.cpp:2847 src/Text3.cpp:2858
 msgid "Paragraph layout set"
 msgstr "Absatzformat festgelegt"
 
@@ -30750,7 +30765,7 @@ msgstr "Prüfen Sie, ob das Programm GNU RCS auf Ihrem System installiert ist."
 #: src/VCBackend.cpp:934 src/VCBackend.cpp:993 src/VCBackend.cpp:1052
 #: src/VCBackend.cpp:1060 src/VCBackend.cpp:1348 src/VCBackend.cpp:1450
 #: src/VCBackend.cpp:1456 src/VCBackend.cpp:1479 src/VCBackend.cpp:1964
-#: src/frontends/qt/GuiView.cpp:3715 src/frontends/qt/GuiView.cpp:3758
+#: src/frontends/qt/GuiView.cpp:3728 src/frontends/qt/GuiView.cpp:3771
 msgid "Revision control error."
 msgstr "Fehler der Versionskontrolle."
 
@@ -30950,14 +30965,14 @@ msgstr ""
 "Fortfahren?"
 
 #: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
-#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1891
+#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1896
 #: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
 #: src/lyxfind.cpp:694 src/lyxfind.cpp:722
 msgid "&Yes"
 msgstr "&Ja"
 
 #: src/VCBackend.cpp:1522 src/VCBackend.cpp:1526
-#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1891
+#: src/frontends/qt/FindAndReplace.cpp:381 src/frontends/qt/GuiPrefs.cpp:1896
 #: src/lyxfind.cpp:303 src/lyxfind.cpp:330 src/lyxfind.cpp:351
 #: src/lyxfind.cpp:694 src/lyxfind.cpp:722
 msgid "&No"
@@ -31015,7 +31030,7 @@ msgstr ""
 "Möchten Sie die Änderungen verwerfen und zur gespeicherten Version "
 "zurückkehren?"
 
-#: src/buffer_funcs.cpp:55 src/frontends/qt/GuiView.cpp:4374
+#: src/buffer_funcs.cpp:55 src/frontends/qt/GuiView.cpp:4387
 msgid "Reload saved document?"
 msgstr "Gespeichertes Dokument neu laden?"
 
@@ -31326,7 +31341,7 @@ msgstr "Über LyX"
 msgid "About %1"
 msgstr "Über %1"
 
-#: src/frontends/qt/GuiApplication.cpp:737 src/frontends/qt/GuiPrefs.cpp:3524
+#: src/frontends/qt/GuiApplication.cpp:737 src/frontends/qt/GuiPrefs.cpp:3529
 msgid "Preferences"
 msgstr "Einstellungen"
 
@@ -31380,7 +31395,7 @@ msgstr "Befehl ist deaktiviert"
 msgid "Bad debug value `%1$s'."
 msgstr "Falscher Debug-Wert ,%1$s'."
 
-#: src/frontends/qt/GuiApplication.cpp:1463 src/frontends/qt/GuiView.cpp:2153
+#: src/frontends/qt/GuiApplication.cpp:1463 src/frontends/qt/GuiView.cpp:2165
 msgid "Command not allowed without a buffer open"
 msgstr "Dieser Befehl ist nur bei geöffnetem Dokument möglich"
 
@@ -31478,11 +31493,11 @@ msgstr "Die Dokument-Standardeinstellungen können nicht gespeichert werden"
 msgid "Unknown function."
 msgstr "Unbekannte Funktion."
 
-#: src/frontends/qt/GuiApplication.cpp:3001
+#: src/frontends/qt/GuiApplication.cpp:3013
 msgid "The current document was closed."
 msgstr "Das aktuelle Dokument wurde geschlossen."
 
-#: src/frontends/qt/GuiApplication.cpp:3011
+#: src/frontends/qt/GuiApplication.cpp:3023
 msgid ""
 "LyX has caught an exception, it will now attempt to save all unsaved "
 "documents and exit.\n"
@@ -31494,12 +31509,12 @@ msgstr ""
 "\n"
 "Exception: "
 
-#: src/frontends/qt/GuiApplication.cpp:3015
-#: src/frontends/qt/GuiApplication.cpp:3021
+#: src/frontends/qt/GuiApplication.cpp:3027
+#: src/frontends/qt/GuiApplication.cpp:3033
 msgid "Software exception Detected"
 msgstr "Softwareausnahme erkannt"
 
-#: src/frontends/qt/GuiApplication.cpp:3019
+#: src/frontends/qt/GuiApplication.cpp:3031
 msgid ""
 "LyX has caught some really weird exception, it will now attempt to save all "
 "unsaved documents and exit."
@@ -31507,12 +31522,12 @@ msgstr ""
 "LyX hat einen ziemlich seltsamen Fehler entdeckt. Das Programm wird jetzt "
 "versuchen, alle ungespeicherten Dateien zu speichern, und dann beendet."
 
-#: src/frontends/qt/GuiApplication.cpp:3325
 #: src/frontends/qt/GuiApplication.cpp:3337
+#: src/frontends/qt/GuiApplication.cpp:3349
 msgid "Could not find UI definition file"
 msgstr "Die Benutzeroberflächen-Definitionsdatei konnte nicht gefunden werden"
 
-#: src/frontends/qt/GuiApplication.cpp:3326
+#: src/frontends/qt/GuiApplication.cpp:3338
 #, c-format
 msgid ""
 "Error while reading the included file\n"
@@ -31523,13 +31538,13 @@ msgstr ""
 "%1$s.\n"
 "Bitte überprüfen Sie Ihre Installation."
 
-#: src/frontends/qt/GuiApplication.cpp:3332
+#: src/frontends/qt/GuiApplication.cpp:3344
 msgid "Could not find default UI file"
 msgstr ""
 "Die Standard-Benutzeroberflächen-Definitionsdatei konnte nicht gefunden "
 "werden"
 
-#: src/frontends/qt/GuiApplication.cpp:3333
+#: src/frontends/qt/GuiApplication.cpp:3345
 msgid ""
 "LyX could not find the default UI file!\n"
 "Please check your installation."
@@ -31538,7 +31553,7 @@ msgstr ""
 "für die Benutzeroberfläche!\n"
 "Bitte überprüfen Sie Ihre Installation."
 
-#: src/frontends/qt/GuiApplication.cpp:3338
+#: src/frontends/qt/GuiApplication.cpp:3350
 #, c-format
 msgid ""
 "Error while reading the configuration file\n"
@@ -31652,9 +31667,9 @@ msgstr "alle Literaturverzeichnisse"
 #: src/frontends/qt/GuiDocument.cpp:2895 src/frontends/qt/GuiExternal.cpp:677
 #: src/frontends/qt/GuiGraphics.cpp:789 src/frontends/qt/GuiInclude.cpp:380
 #: src/frontends/qt/GuiLyXFiles.cpp:368 src/frontends/qt/GuiLyXFiles.cpp:374
-#: src/frontends/qt/GuiView.cpp:2565 src/frontends/qt/GuiView.cpp:2624
-#: src/frontends/qt/GuiView.cpp:2764 src/frontends/qt/GuiView.cpp:2898
-#: src/frontends/qt/GuiView.cpp:3018 src/frontends/qt/GuiView.cpp:3140
+#: src/frontends/qt/GuiView.cpp:2578 src/frontends/qt/GuiView.cpp:2637
+#: src/frontends/qt/GuiView.cpp:2777 src/frontends/qt/GuiView.cpp:2911
+#: src/frontends/qt/GuiView.cpp:3031 src/frontends/qt/GuiView.cpp:3153
 msgid "D&ocuments"
 msgstr "Do&kumente"
 
@@ -32015,10 +32030,10 @@ msgstr "%1$s Dateien"
 msgid "Choose a filename to save the pasted graphic as"
 msgstr "Wählen Sie einen Dateinamen, um die eingefügte Grafik zu speichern als"
 
-#: src/frontends/qt/GuiClipboard.cpp:220 src/frontends/qt/GuiView.cpp:2642
-#: src/frontends/qt/GuiView.cpp:2783 src/frontends/qt/GuiView.cpp:2799
-#: src/frontends/qt/GuiView.cpp:2811 src/frontends/qt/GuiView.cpp:2828
-#: src/frontends/qt/GuiView.cpp:2913 src/frontends/qt/GuiView.cpp:4346
+#: src/frontends/qt/GuiClipboard.cpp:220 src/frontends/qt/GuiView.cpp:2655
+#: src/frontends/qt/GuiView.cpp:2796 src/frontends/qt/GuiView.cpp:2812
+#: src/frontends/qt/GuiView.cpp:2824 src/frontends/qt/GuiView.cpp:2841
+#: src/frontends/qt/GuiView.cpp:2926 src/frontends/qt/GuiView.cpp:4359
 msgid "Canceled."
 msgstr "Abgebrochen."
 
@@ -32048,8 +32063,8 @@ msgid "Select document"
 msgstr "Dokument wählen"
 
 #: src/frontends/qt/GuiCompare.cpp:157 src/frontends/qt/GuiLyXFiles.cpp:367
-#: src/frontends/qt/GuiView.cpp:2569 src/frontends/qt/GuiView.cpp:2628
-#: src/frontends/qt/GuiView.cpp:2902 src/frontends/qt/GuiView.cpp:3029
+#: src/frontends/qt/GuiView.cpp:2582 src/frontends/qt/GuiView.cpp:2641
+#: src/frontends/qt/GuiView.cpp:2915 src/frontends/qt/GuiView.cpp:3042
 msgid "LyX Documents (*.lyx)"
 msgstr "LyX-Dokumente (*.lyx)"
 
@@ -33480,17 +33495,17 @@ msgstr ""
 msgid "Select example file"
 msgstr "Wählen Sie eine Beispieldatei"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:369 src/frontends/qt/GuiView.cpp:2625
-#: src/frontends/qt/GuiView.cpp:2765 src/frontends/qt/GuiView.cpp:2899
+#: src/frontends/qt/GuiLyXFiles.cpp:369 src/frontends/qt/GuiView.cpp:2638
+#: src/frontends/qt/GuiView.cpp:2778 src/frontends/qt/GuiView.cpp:2912
 msgid "&Examples"
 msgstr "&Beispiele"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:373 src/frontends/qt/GuiView.cpp:2564
+#: src/frontends/qt/GuiLyXFiles.cpp:373 src/frontends/qt/GuiView.cpp:2577
 msgid "Select template file"
 msgstr "Wählen Sie eine Vorlagendatei"
 
-#: src/frontends/qt/GuiLyXFiles.cpp:375 src/frontends/qt/GuiView.cpp:2566
-#: src/frontends/qt/GuiView.cpp:3019
+#: src/frontends/qt/GuiLyXFiles.cpp:375 src/frontends/qt/GuiView.cpp:2579
+#: src/frontends/qt/GuiView.cpp:3032
 msgid "&Templates"
 msgstr "&Vorlagen"
 
@@ -33617,7 +33632,7 @@ msgstr ""
 "Normalerweise müssen Sie diese Breite nicht festlegen, da die maximale "
 "Breite aller Punkte verwendet wird."
 
-#: src/frontends/qt/GuiParagraph.cpp:175 src/frontends/qt/GuiView.cpp:3297
+#: src/frontends/qt/GuiParagraph.cpp:175 src/frontends/qt/GuiView.cpp:3310
 msgid "&Close"
 msgstr "&Schließen"
 
@@ -33654,71 +33669,71 @@ msgstr "&Befehl:"
 msgid "Screen Fonts"
 msgstr "Bildschirmschriften"
 
-#: src/frontends/qt/GuiPrefs.cpp:1396
+#: src/frontends/qt/GuiPrefs.cpp:1401
 msgid "Paths"
 msgstr "Pfade"
 
-#: src/frontends/qt/GuiPrefs.cpp:1483
+#: src/frontends/qt/GuiPrefs.cpp:1488
 msgid "Select directory for example files"
 msgstr "Wählen Sie ein Verzeichnis für Beispieldateien"
 
-#: src/frontends/qt/GuiPrefs.cpp:1492
+#: src/frontends/qt/GuiPrefs.cpp:1497
 msgid "Select a document templates directory"
 msgstr "Wählen Sie ein Verzeichnis für die Dokumentvorlagen"
 
-#: src/frontends/qt/GuiPrefs.cpp:1501
+#: src/frontends/qt/GuiPrefs.cpp:1506
 msgid "Select a temporary directory"
 msgstr "Wählen Sie ein temporäres Verzeichnis"
 
-#: src/frontends/qt/GuiPrefs.cpp:1510
+#: src/frontends/qt/GuiPrefs.cpp:1515
 msgid "Select a backups directory"
 msgstr "Wählen Sie ein Verzeichnis für Sicherungen"
 
-#: src/frontends/qt/GuiPrefs.cpp:1519
+#: src/frontends/qt/GuiPrefs.cpp:1524
 msgid "Select a document directory"
 msgstr "Wählen Sie ein Dokumentverzeichnis"
 
-#: src/frontends/qt/GuiPrefs.cpp:1528
+#: src/frontends/qt/GuiPrefs.cpp:1533
 msgid "Set the path to the thesaurus dictionaries"
 msgstr "Den Pfad zum Thesaurus-Wörterbuch festlegen"
 
-#: src/frontends/qt/GuiPrefs.cpp:1537
+#: src/frontends/qt/GuiPrefs.cpp:1542
 msgid "Set the path to the Hunspell dictionaries"
 msgstr "Den Pfad zu den Hunspell-Wörterbüchern festlegen"
 
-#: src/frontends/qt/GuiPrefs.cpp:1546
+#: src/frontends/qt/GuiPrefs.cpp:1551
 msgid "Give a filename for the LyX server pipe"
 msgstr "Geben Sie einen Dateinamen für die LyX-Server-Weiterleitung an"
 
-#: src/frontends/qt/GuiPrefs.cpp:1559 src/frontends/qt/GuiSpellchecker.cpp:642
+#: src/frontends/qt/GuiPrefs.cpp:1564 src/frontends/qt/GuiSpellchecker.cpp:642
 msgid "Spellchecker"
 msgstr "Rechtschreibprüfung"
 
-#: src/frontends/qt/GuiPrefs.cpp:1565
+#: src/frontends/qt/GuiPrefs.cpp:1570
 msgid "Native"
 msgstr "Nativ"
 
-#: src/frontends/qt/GuiPrefs.cpp:1571
+#: src/frontends/qt/GuiPrefs.cpp:1576
 msgid "Aspell"
 msgstr "Aspell"
 
-#: src/frontends/qt/GuiPrefs.cpp:1574
+#: src/frontends/qt/GuiPrefs.cpp:1579
 msgid "Enchant"
 msgstr "Enchant"
 
-#: src/frontends/qt/GuiPrefs.cpp:1577
+#: src/frontends/qt/GuiPrefs.cpp:1582
 msgid "Hunspell"
 msgstr "Hunspell"
 
-#: src/frontends/qt/GuiPrefs.cpp:1650
+#: src/frontends/qt/GuiPrefs.cpp:1655
 msgid "Converters"
 msgstr "Konverter"
 
-#: src/frontends/qt/GuiPrefs.cpp:1890
+#: src/frontends/qt/GuiPrefs.cpp:1895
 msgid "SECURITY WARNING!"
 msgstr "SICHERHEITSWARNUNG!"
 
-#: src/frontends/qt/GuiPrefs.cpp:1890
+#: src/frontends/qt/GuiPrefs.cpp:1895
 msgid ""
 "Unchecking this option has the effect that potentially harmful converters "
 "would be run without asking your permission first. This is UNSAFE and NOT "
@@ -33731,15 +33746,15 @@ msgstr ""
 "tun. Sind Sie sicher, dass Sie fortfahren möchten? Die empfohlene und "
 "sichere Antwort ist NEIN!"
 
-#: src/frontends/qt/GuiPrefs.cpp:2010
+#: src/frontends/qt/GuiPrefs.cpp:2015
 msgid "File Formats"
 msgstr "Dateiformate"
 
-#: src/frontends/qt/GuiPrefs.cpp:2253 src/frontends/qt/GuiPrefs.cpp:2405
+#: src/frontends/qt/GuiPrefs.cpp:2258 src/frontends/qt/GuiPrefs.cpp:2410
 msgid "Format in use"
 msgstr "Format wird verwendet"
 
-#: src/frontends/qt/GuiPrefs.cpp:2254
+#: src/frontends/qt/GuiPrefs.cpp:2259
 msgid ""
 "You cannot change a format's short name if the format is used by a "
 "converter. Please remove the converter first."
@@ -33747,17 +33762,17 @@ msgstr ""
 "Der Kurztitel eines Formats, das von einem Konverter verwendet wird, kann "
 "nicht umbenannt werden. Bitte entfernen Sie zunächst den Konverter."
 
-#: src/frontends/qt/GuiPrefs.cpp:2406
+#: src/frontends/qt/GuiPrefs.cpp:2411
 msgid "Cannot remove a Format used by a Converter. Remove the converter first."
 msgstr ""
 "Ein Format, das von einem Konverter verwendet wird, kann nicht entfernt "
 "werden. Bitte entfernen Sie zunächst den Konverter."
 
-#: src/frontends/qt/GuiPrefs.cpp:2506
+#: src/frontends/qt/GuiPrefs.cpp:2511
 msgid "LyX needs to be restarted!"
 msgstr "LyX muss neu gestartet werden!"
 
-#: src/frontends/qt/GuiPrefs.cpp:2507
+#: src/frontends/qt/GuiPrefs.cpp:2512
 msgid ""
 "The change of user interface language will be fully effective only after a "
 "restart."
@@ -33765,82 +33780,82 @@ msgstr ""
 "Die Änderung der Sprache der Benutzeroberfläche wird erst nach einem "
 "Neustart von LyX wirksam."
 
-#: src/frontends/qt/GuiPrefs.cpp:2607
+#: src/frontends/qt/GuiPrefs.cpp:2612
 msgid "User Interface"
 msgstr "Benutzeroberfläche"
 
-#: src/frontends/qt/GuiPrefs.cpp:2626
+#: src/frontends/qt/GuiPrefs.cpp:2631
 msgid "Classic"
 msgstr "Klassisch"
 
-#: src/frontends/qt/GuiPrefs.cpp:2627
+#: src/frontends/qt/GuiPrefs.cpp:2632
 msgid "Oxygen"
 msgstr "Oxygen"
 
-#: src/frontends/qt/GuiPrefs.cpp:2678
+#: src/frontends/qt/GuiPrefs.cpp:2683
 msgid "Document Handling"
 msgstr "Dokument-Handhabung"
 
-#: src/frontends/qt/GuiPrefs.cpp:2785
+#: src/frontends/qt/GuiPrefs.cpp:2790
 msgid "Control"
 msgstr "Kontrolle"
 
-#: src/frontends/qt/GuiPrefs.cpp:2906
+#: src/frontends/qt/GuiPrefs.cpp:2911
 msgid "Shortcuts"
 msgstr "Tastenkürzel"
 
-#: src/frontends/qt/GuiPrefs.cpp:2913
+#: src/frontends/qt/GuiPrefs.cpp:2918
 msgid "Function"
 msgstr "Funktion"
 
-#: src/frontends/qt/GuiPrefs.cpp:2914
+#: src/frontends/qt/GuiPrefs.cpp:2919
 msgid "Shortcut"
 msgstr "Tastenkürzel"
 
-#: src/frontends/qt/GuiPrefs.cpp:2991
+#: src/frontends/qt/GuiPrefs.cpp:2996
 msgid "Cursor, Mouse and Editing Functions"
 msgstr "Cursor-, Maus- und Bearbeitungsfunktionen"
 
-#: src/frontends/qt/GuiPrefs.cpp:2995
+#: src/frontends/qt/GuiPrefs.cpp:3000
 msgid "Mathematical Symbols"
 msgstr "Mathematische Symbole"
 
-#: src/frontends/qt/GuiPrefs.cpp:2999
+#: src/frontends/qt/GuiPrefs.cpp:3004
 msgid "Document and Window"
 msgstr "Dokument und Arbeitsbereich"
 
-#: src/frontends/qt/GuiPrefs.cpp:3003
+#: src/frontends/qt/GuiPrefs.cpp:3008
 msgid "Font, Layouts and Textclasses"
 msgstr "Schriften, Absatzformate und Textklassen"
 
-#: src/frontends/qt/GuiPrefs.cpp:3007
+#: src/frontends/qt/GuiPrefs.cpp:3012
 msgid "System and Miscellaneous"
 msgstr "System und Verschiedenes"
 
-#: src/frontends/qt/GuiPrefs.cpp:3144 src/frontends/qt/GuiPrefs.cpp:3204
+#: src/frontends/qt/GuiPrefs.cpp:3149 src/frontends/qt/GuiPrefs.cpp:3209
 msgid "Res&tore"
 msgstr "Zurüc&ksetzen"
 
-#: src/frontends/qt/GuiPrefs.cpp:3372 src/frontends/qt/GuiPrefs.cpp:3381
-#: src/frontends/qt/GuiPrefs.cpp:3387 src/frontends/qt/GuiPrefs.cpp:3451
+#: src/frontends/qt/GuiPrefs.cpp:3377 src/frontends/qt/GuiPrefs.cpp:3386
+#: src/frontends/qt/GuiPrefs.cpp:3392 src/frontends/qt/GuiPrefs.cpp:3456
 msgid "Failed to create shortcut"
 msgstr "Erstellen des Tastenkürzels fehlgeschlagen"
 
-#: src/frontends/qt/GuiPrefs.cpp:3373
+#: src/frontends/qt/GuiPrefs.cpp:3378
 msgid "Unknown or invalid LyX function"
 msgstr "Unbekannte oder ungültige LyX-Funktion"
 
-#: src/frontends/qt/GuiPrefs.cpp:3382
+#: src/frontends/qt/GuiPrefs.cpp:3387
 msgid "This LyX function is hidden and cannot be bound."
 msgstr ""
 "Dies ist eine versteckte LyX-Funktion. Sie kann nicht mit einer "
 "Tastenkombination belegt werden."
 
-#: src/frontends/qt/GuiPrefs.cpp:3388
+#: src/frontends/qt/GuiPrefs.cpp:3393
 msgid "Invalid or empty key sequence"
 msgstr "Ungültige oder leere Tastensequenz"
 
-#: src/frontends/qt/GuiPrefs.cpp:3403
+#: src/frontends/qt/GuiPrefs.cpp:3408
 #, c-format
 msgid ""
 "Shortcut `%1$s' is already bound to %2$s.\n"
@@ -33850,19 +33865,19 @@ msgstr ""
 "Sind Sie sicher, dass Sie dies aufheben und das\n"
 "Tastenkürzel mit %3$s belegen wollen?"
 
-#: src/frontends/qt/GuiPrefs.cpp:3409
+#: src/frontends/qt/GuiPrefs.cpp:3414
 msgid "Redefine shortcut?"
 msgstr "Tastenkürzel neu definieren?"
 
-#: src/frontends/qt/GuiPrefs.cpp:3410
+#: src/frontends/qt/GuiPrefs.cpp:3415
 msgid "&Redefine"
 msgstr "&Neu Definieren"
 
-#: src/frontends/qt/GuiPrefs.cpp:3452
+#: src/frontends/qt/GuiPrefs.cpp:3457
 msgid "Can not insert shortcut to the list"
 msgstr "Kann Tastenkürzel nicht in Liste einfügen"
 
-#: src/frontends/qt/GuiPrefs.cpp:3483
+#: src/frontends/qt/GuiPrefs.cpp:3488
 msgid "Identity"
 msgstr "Identität"
 
@@ -33970,7 +33985,7 @@ msgstr "Von vorne suchen"
 msgid "Click here to change search options"
 msgstr "Klicken, um die Suchoptionen anzupassen"
 
-#: src/frontends/qt/GuiSearch.cpp:568
+#: src/frontends/qt/GuiSearch.cpp:569
 msgid "Search and Replace"
 msgstr "Suchen und Ersetzen"
 
@@ -34408,21 +34423,21 @@ msgstr "Version "
 msgid "unknown version"
 msgstr "unbekannte Version"
 
-#: src/frontends/qt/GuiView.cpp:648
+#: src/frontends/qt/GuiView.cpp:647
 msgid "Workarea zoom level. Drag, use Ctrl-+/- or Shift-Mousewheel to adjust."
 msgstr ""
 "Skalierung des Arbeitsbereichs. Um dies anzupassen, verwenden Sie den "
 "Schieber, Strg-+/- oder Umschalt-Mausrad."
 
-#: src/frontends/qt/GuiView.cpp:680 src/frontends/qt/GuiView.cpp:790
-#: src/frontends/qt/GuiView.cpp:959 src/frontends/qt/Menus.cpp:1843
+#: src/frontends/qt/GuiView.cpp:689 src/frontends/qt/GuiView.cpp:799
+#: src/frontends/qt/GuiView.cpp:969 src/frontends/qt/Menus.cpp:1843
 #: src/frontends/qt/Menus.cpp:1847 src/frontends/qt/Menus.cpp:1851
 #: src/frontends/qt/Menus.cpp:1855 src/frontends/qt/Menus.cpp:1859
 #: src/frontends/qt/Menus.cpp:1863
 msgid "[[ZOOM]]%1$d%"
 msgstr "%1$d%"
 
-#: src/frontends/qt/GuiView.cpp:696
+#: src/frontends/qt/GuiView.cpp:705
 msgid ""
 "WARNING: LaTeX is allowed to execute external commands for this document. "
 "Right click to change."
@@ -34430,114 +34445,114 @@ msgstr ""
 "ACHTUNG: LaTeX darf für dieses Dokument beliebige externe Befehle ausführen. "
 "Um dies zu ändern, klicken Sie die rechte Maustaste."
 
-#: src/frontends/qt/GuiView.cpp:775
+#: src/frontends/qt/GuiView.cpp:784
 msgid "Cancel Export?"
 msgstr "Export abbrechen?"
 
-#: src/frontends/qt/GuiView.cpp:776
+#: src/frontends/qt/GuiView.cpp:785
 msgid "Do you want to cancel the background export process?"
 msgstr "Wollen Sie den Exportvorgang im Hintergrund abbrechen?"
 
-#: src/frontends/qt/GuiView.cpp:779
+#: src/frontends/qt/GuiView.cpp:788
 msgid "Co&ntinue"
 msgstr "&Fortfahren"
 
-#: src/frontends/qt/GuiView.cpp:856
+#: src/frontends/qt/GuiView.cpp:865
 #, c-format
 msgid "Successful export to format: %1$s"
 msgstr "Export in das Format %1$s erfolgreich"
 
-#: src/frontends/qt/GuiView.cpp:865
+#: src/frontends/qt/GuiView.cpp:874
 #, c-format
 msgid "Error while exporting format: %1$s"
 msgstr "Fehler beim Export in das Formats %1$s"
 
-#: src/frontends/qt/GuiView.cpp:868
+#: src/frontends/qt/GuiView.cpp:877
 #, c-format
 msgid "Successful preview of format: %1$s"
 msgstr "Erfolgreiche Vorschau des Formats %1$s"
 
-#: src/frontends/qt/GuiView.cpp:871
+#: src/frontends/qt/GuiView.cpp:880
 #, c-format
 msgid "Error while previewing format: %1$s"
 msgstr "Fehler bei der Vorschau des Formats %1$s"
 
-#: src/frontends/qt/GuiView.cpp:874
+#: src/frontends/qt/GuiView.cpp:883
 #, c-format
 msgid "Conversion cancelled while previewing format: %1$s"
 msgstr "Abbruch der Ausgabe bei der Vorschau des Formats %1$s"
 
-#: src/frontends/qt/GuiView.cpp:1224
+#: src/frontends/qt/GuiView.cpp:1236
 msgid "Exit LyX"
 msgstr "LyX beenden"
 
-#: src/frontends/qt/GuiView.cpp:1225
+#: src/frontends/qt/GuiView.cpp:1237
 msgid "LyX could not be closed because documents are being processed by LyX."
 msgstr ""
 "LyX konnte nicht geschlossen werden, da gerade Dokumente von LyX verarbeitet "
 "werden."
 
-#: src/frontends/qt/GuiView.cpp:1373
+#: src/frontends/qt/GuiView.cpp:1385
 #, c-format
 msgid "%1$s (modified externally)"
 msgstr "%1$s (extern bearbeitet)"
 
-#: src/frontends/qt/GuiView.cpp:1496
+#: src/frontends/qt/GuiView.cpp:1508
 msgid "Welcome to LyX!"
 msgstr "Willkommen bei LyX!"
 
-#: src/frontends/qt/GuiView.cpp:2033
+#: src/frontends/qt/GuiView.cpp:2045
 msgid "Automatic save done."
 msgstr "Automatische Speicherung abgeschlossen."
 
-#: src/frontends/qt/GuiView.cpp:2034
+#: src/frontends/qt/GuiView.cpp:2046
 msgid "Automatic save failed!"
 msgstr "Die automatische Speicherung ist fehlgeschlagen!"
 
-#: src/frontends/qt/GuiView.cpp:2090
+#: src/frontends/qt/GuiView.cpp:2102
 msgid "Command not allowed without any document open"
 msgstr "Dieser Befehl ist nur bei geöffnetem Dokument möglich"
 
-#: src/frontends/qt/GuiView.cpp:2159
+#: src/frontends/qt/GuiView.cpp:2171
 msgid "Invalid argument of master-buffer-forall"
 msgstr "Ungültiges Argument für master-buffer-forall"
 
-#: src/frontends/qt/GuiView.cpp:2277
+#: src/frontends/qt/GuiView.cpp:2289
 msgid "Function toolbar-set requires two arguments!"
 msgstr "Die Funktion toolbar-set erfordert zwei Argumente!"
 
-#: src/frontends/qt/GuiView.cpp:2284
+#: src/frontends/qt/GuiView.cpp:2296
 #, c-format
 msgid "Invalid argument \"%1$s\" to function toolbar-set!"
 msgstr "Ungültiges Argument \"%1$s\" der Funktion toolbar-set!"
 
-#: src/frontends/qt/GuiView.cpp:2300 src/frontends/qt/GuiView.cpp:2313
-#: src/frontends/qt/GuiView.cpp:2330
+#: src/frontends/qt/GuiView.cpp:2312 src/frontends/qt/GuiView.cpp:2325
+#: src/frontends/qt/GuiView.cpp:2342
 #, c-format
 msgid "Unknown toolbar \"%1$s\""
 msgstr "Unbekannte Werkzeugleiste \"%1$s\""
 
-#: src/frontends/qt/GuiView.cpp:2450 src/frontends/qt/GuiView.cpp:2463
+#: src/frontends/qt/GuiView.cpp:2463 src/frontends/qt/GuiView.cpp:2476
 msgid "Zoom level cannot be less than %1$d%."
 msgstr "Der Skalierungsfaktor darf nicht kleiner als %1$d% sein."
 
-#: src/frontends/qt/GuiView.cpp:2593
+#: src/frontends/qt/GuiView.cpp:2606
 msgid "Document not loaded."
 msgstr "Dokument nicht geladen."
 
-#: src/frontends/qt/GuiView.cpp:2623
+#: src/frontends/qt/GuiView.cpp:2636
 msgid "Select document to open"
 msgstr "Wählen Sie das zu öffnende Dokument"
 
-#: src/frontends/qt/GuiView.cpp:2629
+#: src/frontends/qt/GuiView.cpp:2642
 msgid "LyX Document Backups (*.lyx~)"
 msgstr "LyX-Dokument-Backups (*.lyx~)"
 
-#: src/frontends/qt/GuiView.cpp:2630
+#: src/frontends/qt/GuiView.cpp:2643
 msgid "All Files (*.*)"
 msgstr "Alle Dateien (*.*)"
 
-#: src/frontends/qt/GuiView.cpp:2657
+#: src/frontends/qt/GuiView.cpp:2670
 #, c-format
 msgid ""
 "The directory in the given path\n"
@@ -34548,40 +34563,40 @@ msgstr ""
 "%1$s\n"
 "existiert nicht."
 
-#: src/frontends/qt/GuiView.cpp:2674
+#: src/frontends/qt/GuiView.cpp:2687
 #, c-format
 msgid "Opening document %1$s..."
 msgstr "Öffne Dokument %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:2679
+#: src/frontends/qt/GuiView.cpp:2692
 #, c-format
 msgid "Document %1$s opened."
 msgstr "Dokument %1$s ist geöffnet."
 
-#: src/frontends/qt/GuiView.cpp:2682
+#: src/frontends/qt/GuiView.cpp:2695
 msgid "Version control detected."
 msgstr "Versionskontrolle erkannt."
 
-#: src/frontends/qt/GuiView.cpp:2684
+#: src/frontends/qt/GuiView.cpp:2697
 #, c-format
 msgid "Could not open document %1$s"
 msgstr "Das Dokument %1$s konnte nicht geöffnet werden"
 
-#: src/frontends/qt/GuiView.cpp:2712
+#: src/frontends/qt/GuiView.cpp:2725
 msgid "Couldn't import file"
 msgstr "Die Datei konnte nicht importiert werden"
 
-#: src/frontends/qt/GuiView.cpp:2713
+#: src/frontends/qt/GuiView.cpp:2726
 #, c-format
 msgid "No information for importing the format %1$s."
 msgstr "Keine Informationen vorhanden, um das Format %1$s zu importieren."
 
-#: src/frontends/qt/GuiView.cpp:2760
+#: src/frontends/qt/GuiView.cpp:2773
 #, c-format
 msgid "Select %1$s file to import"
 msgstr "Wählen Sie die einzufügende %1$s-Datei"
 
-#: src/frontends/qt/GuiView.cpp:2795
+#: src/frontends/qt/GuiView.cpp:2808
 #, c-format
 msgid ""
 "The file name '%1$s' is invalid!\n"
@@ -34590,8 +34605,8 @@ msgstr ""
 "Der Dateiname '%1$s' ist ungültig!\n"
 "Import wird abgebrochen."
 
-#: src/frontends/qt/GuiView.cpp:2822 src/frontends/qt/GuiView.cpp:3089
-#: src/frontends/qt/GuiView.cpp:3192
+#: src/frontends/qt/GuiView.cpp:2835 src/frontends/qt/GuiView.cpp:3102
+#: src/frontends/qt/GuiView.cpp:3205
 #, c-format
 msgid ""
 "The document %1$s already exists.\n"
@@ -34602,33 +34617,33 @@ msgstr ""
 "\n"
 "Möchten Sie dieses Dokument überschreiben?"
 
-#: src/frontends/qt/GuiView.cpp:2824 src/frontends/qt/GuiView.cpp:3093
-#: src/frontends/qt/GuiView.cpp:3196
+#: src/frontends/qt/GuiView.cpp:2837 src/frontends/qt/GuiView.cpp:3106
+#: src/frontends/qt/GuiView.cpp:3209
 msgid "Overwrite document?"
 msgstr "Dokument überschreiben?"
 
-#: src/frontends/qt/GuiView.cpp:2833
+#: src/frontends/qt/GuiView.cpp:2846
 #, c-format
 msgid "Importing %1$s..."
 msgstr "Importiere %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:2836
+#: src/frontends/qt/GuiView.cpp:2849
 msgid "imported."
 msgstr "wurde eingefügt."
 
-#: src/frontends/qt/GuiView.cpp:2838
+#: src/frontends/qt/GuiView.cpp:2851
 msgid "file not imported!"
 msgstr "Datei wurde nicht importiert!"
 
-#: src/frontends/qt/GuiView.cpp:2864
+#: src/frontends/qt/GuiView.cpp:2877
 msgid "newfile"
 msgstr "Neues_Dokument"
 
-#: src/frontends/qt/GuiView.cpp:2897
+#: src/frontends/qt/GuiView.cpp:2910
 msgid "Select LyX document to insert"
 msgstr "Wählen Sie das einzufügende LyX-Dokument"
 
-#: src/frontends/qt/GuiView.cpp:2944
+#: src/frontends/qt/GuiView.cpp:2957
 #, c-format
 msgid ""
 "It is suggested to save the template in a subdirectory\n"
@@ -34641,23 +34656,23 @@ msgstr ""
 "Dieser Unterordner existiert aber noch nicht.\n"
 "Soll er angelegt werden?"
 
-#: src/frontends/qt/GuiView.cpp:2949
+#: src/frontends/qt/GuiView.cpp:2962
 msgid "Create Language Directory?"
 msgstr "Sprach-Unterorder erstellen?"
 
-#: src/frontends/qt/GuiView.cpp:2950 src/frontends/qt/GuiView.cpp:2981
+#: src/frontends/qt/GuiView.cpp:2963 src/frontends/qt/GuiView.cpp:2994
 msgid "&Yes, Create"
 msgstr "&Ja, erstellen"
 
-#: src/frontends/qt/GuiView.cpp:2950 src/frontends/qt/GuiView.cpp:2981
+#: src/frontends/qt/GuiView.cpp:2963 src/frontends/qt/GuiView.cpp:2994
 msgid "&No, Save Template in Parent Directory"
 msgstr "&Nein, speichere Vorlage im Hauptordner"
 
-#: src/frontends/qt/GuiView.cpp:2953 src/frontends/qt/GuiView.cpp:2984
+#: src/frontends/qt/GuiView.cpp:2966 src/frontends/qt/GuiView.cpp:2997
 msgid "Subdirectory creation failed!"
 msgstr "Erstellung des Unterordners fehlgeschlagen!"
 
-#: src/frontends/qt/GuiView.cpp:2954 src/frontends/qt/GuiView.cpp:2985
+#: src/frontends/qt/GuiView.cpp:2967 src/frontends/qt/GuiView.cpp:2998
 msgid ""
 "Could not create subdirectory.\n"
 "The template will be saved in the parent directory."
@@ -34665,7 +34680,7 @@ msgstr ""
 "Der Unterordner konnte leider nicht erstellt werden\n"
 "Die Vorlage wird im Hauptordner gespeichert."
 
-#: src/frontends/qt/GuiView.cpp:2975
+#: src/frontends/qt/GuiView.cpp:2988
 #, c-format
 msgid ""
 "It is suggested to save the template in a subdirectory\n"
@@ -34678,19 +34693,19 @@ msgstr ""
 "Dieser Unterordner existiert aber noch nicht.\n"
 "Soll er angelegt werden?"
 
-#: src/frontends/qt/GuiView.cpp:2980
+#: src/frontends/qt/GuiView.cpp:2993
 msgid "Create Category Directory?"
 msgstr "Kategorien-Ordner erstellen?"
 
-#: src/frontends/qt/GuiView.cpp:3015
+#: src/frontends/qt/GuiView.cpp:3028
 msgid "Choose a filename to save template as"
 msgstr "Wählen Sie einen Dateinamen für die Vorlage"
 
-#: src/frontends/qt/GuiView.cpp:3016
+#: src/frontends/qt/GuiView.cpp:3029
 msgid "Choose a filename to save document as"
 msgstr "Wählen Sie einen Dateinamen für das Dokument"
 
-#: src/frontends/qt/GuiView.cpp:3052
+#: src/frontends/qt/GuiView.cpp:3065
 #, c-format
 msgid ""
 "The file\n"
@@ -34705,17 +34720,17 @@ msgstr ""
 "Bitte schließen Sie sie, wenn Sie sie überschreiben möchten.\n"
 "Möchten Sie statt dessen einen neuen Dateinamen wählen?"
 
-#: src/frontends/qt/GuiView.cpp:3056
+#: src/frontends/qt/GuiView.cpp:3069
 msgid "Chosen File Already Open"
 msgstr "Ausgewählte Datei bereits geöffnet"
 
-#: src/frontends/qt/GuiView.cpp:3057 src/frontends/qt/GuiView.cpp:3079
-#: src/frontends/qt/GuiView.cpp:3095 src/frontends/qt/GuiView.cpp:3197
-#: src/frontends/qt/GuiView.cpp:3242
+#: src/frontends/qt/GuiView.cpp:3070 src/frontends/qt/GuiView.cpp:3092
+#: src/frontends/qt/GuiView.cpp:3108 src/frontends/qt/GuiView.cpp:3210
+#: src/frontends/qt/GuiView.cpp:3255
 msgid "&Rename"
 msgstr "&Umbenennen"
 
-#: src/frontends/qt/GuiView.cpp:3072
+#: src/frontends/qt/GuiView.cpp:3085
 #, c-format
 msgid ""
 "The document %1$s is already registered.\n"
@@ -34726,27 +34741,27 @@ msgstr ""
 "\n"
 "Möchten Sie einen anderen Namen wählen?"
 
-#: src/frontends/qt/GuiView.cpp:3077
+#: src/frontends/qt/GuiView.cpp:3090
 msgid "Rename document?"
 msgstr "Dokument umbenennen?"
 
-#: src/frontends/qt/GuiView.cpp:3077
+#: src/frontends/qt/GuiView.cpp:3090
 msgid "Copy document?"
 msgstr "Dokument kopieren?"
 
-#: src/frontends/qt/GuiView.cpp:3079
+#: src/frontends/qt/GuiView.cpp:3092
 msgid "&Copy"
 msgstr "&Kopieren"
 
-#: src/frontends/qt/GuiView.cpp:3139
+#: src/frontends/qt/GuiView.cpp:3152
 msgid "Choose a filename to export the document as"
 msgstr "Wählen Sie einen Dateinamen für das exportierte Dokument"
 
-#: src/frontends/qt/GuiView.cpp:3143
+#: src/frontends/qt/GuiView.cpp:3156
 msgid "Guess from extension (*.*)"
 msgstr "Von der Dateierweiterung ableiten (*.*)"
 
-#: src/frontends/qt/GuiView.cpp:3238
+#: src/frontends/qt/GuiView.cpp:3251
 #, c-format
 msgid ""
 "The document %1$s could not be saved.\n"
@@ -34757,15 +34772,15 @@ msgstr ""
 "\n"
 "Möchten Sie das Dokument umbenennen und erneut versuchen?"
 
-#: src/frontends/qt/GuiView.cpp:3241
+#: src/frontends/qt/GuiView.cpp:3254
 msgid "Rename and save?"
 msgstr "Umbenennen und speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3242
+#: src/frontends/qt/GuiView.cpp:3255
 msgid "&Retry"
 msgstr "&Wiederholen"
 
-#: src/frontends/qt/GuiView.cpp:3287
+#: src/frontends/qt/GuiView.cpp:3300
 #, c-format
 msgid ""
 "Last view on document %1$s is being closed.\n"
@@ -34787,25 +34802,25 @@ msgstr ""
 "die Voreinstellung in  Werkzeuge > Einstellungen ... >\n"
 "Aussehen & Handhabung > Benutzeroberfläche.\n"
 
-#: src/frontends/qt/GuiView.cpp:3296
+#: src/frontends/qt/GuiView.cpp:3309
 msgid "Close or hide document?"
 msgstr "Dokument schließen oder verbergen?"
 
-#: src/frontends/qt/GuiView.cpp:3297
+#: src/frontends/qt/GuiView.cpp:3310
 msgid "&Hide"
 msgstr "&Verbergen"
 
-#: src/frontends/qt/GuiView.cpp:3394
+#: src/frontends/qt/GuiView.cpp:3407
 msgid "Close document"
 msgstr "Dokument schließen"
 
-#: src/frontends/qt/GuiView.cpp:3395
+#: src/frontends/qt/GuiView.cpp:3408
 msgid "Document could not be closed because it is being processed by LyX."
 msgstr ""
 "Dokument konnte nicht geschlossen werden, da es gerade von LyX verarbeitet "
 "wird."
 
-#: src/frontends/qt/GuiView.cpp:3527 src/frontends/qt/GuiView.cpp:3642
+#: src/frontends/qt/GuiView.cpp:3540 src/frontends/qt/GuiView.cpp:3655
 #, c-format
 msgid ""
 "The document %1$s has not been saved yet.\n"
@@ -34816,16 +34831,16 @@ msgstr ""
 "\n"
 "Möchten Sie das Dokument speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3530 src/frontends/qt/GuiView.cpp:3645
+#: src/frontends/qt/GuiView.cpp:3543 src/frontends/qt/GuiView.cpp:3658
 msgid "Save new document?"
 msgstr "Neues Dokument speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3531 src/frontends/qt/GuiView.cpp:3545
-#: src/frontends/qt/GuiView.cpp:3647
+#: src/frontends/qt/GuiView.cpp:3544 src/frontends/qt/GuiView.cpp:3558
+#: src/frontends/qt/GuiView.cpp:3660
 msgid "&Save"
 msgstr "&Speichern"
 
-#: src/frontends/qt/GuiView.cpp:3536
+#: src/frontends/qt/GuiView.cpp:3549
 #, c-format
 msgid ""
 "The document %1$s has unsaved changes.\n"
@@ -34836,7 +34851,7 @@ msgstr ""
 "sind nicht gespeichert.\n"
 "Möchten Sie das Dokument speichern oder die Änderungen verwerfen?"
 
-#: src/frontends/qt/GuiView.cpp:3539
+#: src/frontends/qt/GuiView.cpp:3552
 #, c-format
 msgid ""
 "The document %1$s has not been saved yet.\n"
@@ -34847,19 +34862,19 @@ msgstr ""
 "\n"
 "Möchten Sie das Dokument speichern oder es endgültig verwerfen?"
 
-#: src/frontends/qt/GuiView.cpp:3543 src/frontends/qt/GuiView.cpp:3639
+#: src/frontends/qt/GuiView.cpp:3556 src/frontends/qt/GuiView.cpp:3652
 msgid "Save changed document?"
 msgstr "Geändertes Dokument speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3543
+#: src/frontends/qt/GuiView.cpp:3556
 msgid "Save document?"
 msgstr "Dokument speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3545
+#: src/frontends/qt/GuiView.cpp:3558
 msgid "&Discard"
 msgstr "&Verwerfen"
 
-#: src/frontends/qt/GuiView.cpp:3636
+#: src/frontends/qt/GuiView.cpp:3649
 #, c-format
 msgid ""
 "The document %1$s has unsaved changes.\n"
@@ -34870,7 +34885,7 @@ msgstr ""
 "\n"
 "Möchten Sie das Dokument speichern?"
 
-#: src/frontends/qt/GuiView.cpp:3668
+#: src/frontends/qt/GuiView.cpp:3681
 #, c-format
 msgid ""
 "Document \n"
@@ -34882,37 +34897,37 @@ msgstr ""
 "wurde extern verändert. Wollen Sie es erneut laden?\n"
 "Alle lokalen Veränderungen werden dann verworfen."
 
-#: src/frontends/qt/GuiView.cpp:3671
+#: src/frontends/qt/GuiView.cpp:3684
 msgid "Reload externally changed document?"
 msgstr "Extern geändertes Dokument neu laden?"
 
-#: src/frontends/qt/GuiView.cpp:3716
+#: src/frontends/qt/GuiView.cpp:3729
 msgid "Document could not be checked in."
 msgstr "Das Dokument konnte nicht eingecheckt werden."
 
-#: src/frontends/qt/GuiView.cpp:3759
+#: src/frontends/qt/GuiView.cpp:3772
 msgid "Error when setting the locking property."
 msgstr "Fehler beim Setzen der Dateisperrung."
 
-#: src/frontends/qt/GuiView.cpp:3808
+#: src/frontends/qt/GuiView.cpp:3821
 msgid "Directory is not accessible."
 msgstr "Das Verzeichnis ist nicht lesbar."
 
-#: src/frontends/qt/GuiView.cpp:3885
+#: src/frontends/qt/GuiView.cpp:3898
 #, c-format
 msgid "Opening child document %1$s..."
 msgstr "Öffne Unterdokument %1$s..."
 
-#: src/frontends/qt/GuiView.cpp:3943
+#: src/frontends/qt/GuiView.cpp:3956
 #, c-format
 msgid "No buffer for file: %1$s."
 msgstr "Kein Pufferspeicher für Datei: %1$s."
 
-#: src/frontends/qt/GuiView.cpp:3953
+#: src/frontends/qt/GuiView.cpp:3966
 msgid "Inverse Search Failed"
 msgstr "Rückwärtssuche gescheitert"
 
-#: src/frontends/qt/GuiView.cpp:3954
+#: src/frontends/qt/GuiView.cpp:3967
 msgid ""
 "Invalid position requested by inverse search.\n"
 "You may need to update the viewed document."
@@ -34920,35 +34935,35 @@ msgstr ""
 "Die Rückwärtssuche wollte eine ungültige Position anspringen.\n"
 "Bitte aktualisieren Sie das ausgegebene Dokument."
 
-#: src/frontends/qt/GuiView.cpp:4034
+#: src/frontends/qt/GuiView.cpp:4047
 msgid "Export Error"
 msgstr "Exportfehler"
 
-#: src/frontends/qt/GuiView.cpp:4035
+#: src/frontends/qt/GuiView.cpp:4048
 msgid "Error cloning the Buffer."
 msgstr "Fehler beim Klonen des Pufferspeichers."
 
-#: src/frontends/qt/GuiView.cpp:4186 src/frontends/qt/GuiView.cpp:4206
+#: src/frontends/qt/GuiView.cpp:4199 src/frontends/qt/GuiView.cpp:4219
 msgid "Exporting ..."
 msgstr "Exportiere ..."
 
-#: src/frontends/qt/GuiView.cpp:4215
+#: src/frontends/qt/GuiView.cpp:4228
 msgid "Previewing ..."
 msgstr "Generiere Vorschau ..."
 
-#: src/frontends/qt/GuiView.cpp:4253
+#: src/frontends/qt/GuiView.cpp:4266
 msgid "Document not loaded"
 msgstr "Dokument nicht geladen"
 
-#: src/frontends/qt/GuiView.cpp:4340
+#: src/frontends/qt/GuiView.cpp:4353
 msgid "Select file to insert"
 msgstr "Wählen Sie das einzufügende Dokument"
 
-#: src/frontends/qt/GuiView.cpp:4343
+#: src/frontends/qt/GuiView.cpp:4356
 msgid "All Files (*)"
 msgstr "Alle Dateien (*)"
 
-#: src/frontends/qt/GuiView.cpp:4371
+#: src/frontends/qt/GuiView.cpp:4384
 #, c-format
 msgid ""
 "The current version will be lost. Are you sure you want to load the version "
@@ -34958,7 +34973,7 @@ msgstr ""
 "dass Sie die auf der Festplatte gespeicherte Version des Dokuments %1$s "
 "laden möchten?"
 
-#: src/frontends/qt/GuiView.cpp:4378
+#: src/frontends/qt/GuiView.cpp:4391
 #, c-format
 msgid ""
 "Any changes will be lost. Are you sure you want to revert to the saved "
@@ -34967,61 +34982,61 @@ msgstr ""
 "Alle Änderungen gehen verloren. Sind Sie sicher, dass Sie zur gespeicherten "
 "Version des Dokuments %1$s zurückkehren möchten?"
 
-#: src/frontends/qt/GuiView.cpp:4381
+#: src/frontends/qt/GuiView.cpp:4394
 msgid "Revert to saved document?"
 msgstr "Gespeichertes Dokument neu laden?"
 
-#: src/frontends/qt/GuiView.cpp:4398
+#: src/frontends/qt/GuiView.cpp:4411
 msgid "Buffer export reset."
 msgstr "Export zurückgesetzt."
 
-#: src/frontends/qt/GuiView.cpp:4421
+#: src/frontends/qt/GuiView.cpp:4434
 msgid "Saving all documents..."
 msgstr "Speichere alle Dokumente..."
 
-#: src/frontends/qt/GuiView.cpp:4431
+#: src/frontends/qt/GuiView.cpp:4444
 msgid "All documents saved."
 msgstr "Alle Dokumente wurden gespeichert."
 
-#: src/frontends/qt/GuiView.cpp:4470
+#: src/frontends/qt/GuiView.cpp:4483
 msgid "Developer mode is now enabled."
 msgstr "Der Entwicklermodus ist nun aktiviert."
 
-#: src/frontends/qt/GuiView.cpp:4472
+#: src/frontends/qt/GuiView.cpp:4485
 msgid "Developer mode is now disabled."
 msgstr "Der Entwicklermodus ist nun deaktiviert."
 
-#: src/frontends/qt/GuiView.cpp:4504
+#: src/frontends/qt/GuiView.cpp:4517
 msgid "Toolbars unlocked."
 msgstr "Werkzeugleisten nicht verankert."
 
-#: src/frontends/qt/GuiView.cpp:4506
+#: src/frontends/qt/GuiView.cpp:4519
 msgid "Toolbars locked."
 msgstr "Werkzeugleisten verankert."
 
-#: src/frontends/qt/GuiView.cpp:4518
+#: src/frontends/qt/GuiView.cpp:4531
 #, c-format
 msgid "Icon size set to %1$dx%2$d."
 msgstr "Eingestellte Symbolgröße: %1$dx%2$d."
 
-#: src/frontends/qt/GuiView.cpp:4607
+#: src/frontends/qt/GuiView.cpp:4620
 #, c-format
 msgid "%1$s unknown command!"
 msgstr "LFUN_UI_TOGGLE %1$s unbekannter Befehl!"
 
-#: src/frontends/qt/GuiView.cpp:4711
+#: src/frontends/qt/GuiView.cpp:4724
 msgid "Zoom level is now %1$d% (default value: %2$d%)"
 msgstr "Aktueller Skalierungsfaktor: %1$d% (Standardwert: %2$d%)"
 
-#: src/frontends/qt/GuiView.cpp:4770
+#: src/frontends/qt/GuiView.cpp:4783
 msgid "Please, preview the document first."
 msgstr "Bitte geben Sie das Dokument zunächst aus."
 
-#: src/frontends/qt/GuiView.cpp:4786
+#: src/frontends/qt/GuiView.cpp:4799
 msgid "Couldn't proceed."
 msgstr "Konnte nicht fortfahren."
 
-#: src/frontends/qt/GuiView.cpp:5141
+#: src/frontends/qt/GuiView.cpp:5156
 msgid "Disable Shell Escape"
 msgstr "Erlaubnis zum Aufruf externer Programme widerrufen"
 
@@ -35034,27 +35049,27 @@ msgstr "Quelltext-Vorschau"
 msgid "%1[[preview format name]] Preview"
 msgstr "%1-Vorschau"
 
-#: src/frontends/qt/GuiWorkArea.cpp:1530
+#: src/frontends/qt/GuiWorkArea.cpp:1527
 msgid "Close File"
 msgstr "Datei schließen"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2072
+#: src/frontends/qt/GuiWorkArea.cpp:2069
 msgid "%1 (read only)"
 msgstr "%1 (schreibgeschützt)"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2080
+#: src/frontends/qt/GuiWorkArea.cpp:2077
 msgid "%1 (modified externally)"
 msgstr "%1 (extern bearbeitet)"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2103
+#: src/frontends/qt/GuiWorkArea.cpp:2100
 msgid "Hide tab"
 msgstr "Unterfenster verstecken"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2109
+#: src/frontends/qt/GuiWorkArea.cpp:2106
 msgid "Close tab"
 msgstr "Unterfenster schließen"
 
-#: src/frontends/qt/GuiWorkArea.cpp:2148
+#: src/frontends/qt/GuiWorkArea.cpp:2145
 msgid "<b>The file %1 changed on disk.</b>"
 msgstr "<b>Die Datei %1 wurde auf der Festplatte verändert.</b>"
 
@@ -35827,15 +35842,15 @@ msgstr "FEHLER: Unbekannter Gleitobjekt-Typ: %1$s"
 msgid "float"
 msgstr "Gleitobjekt"
 
-#: src/insets/InsetFloat.cpp:903
+#: src/insets/InsetFloat.cpp:911
 msgid "Float: "
 msgstr "Gleitobjekt: "
 
-#: src/insets/InsetFloat.cpp:906
+#: src/insets/InsetFloat.cpp:914
 msgid "Subfloat: "
 msgstr "Untergleitobjekt: "
 
-#: src/insets/InsetFloat.cpp:916
+#: src/insets/InsetFloat.cpp:924
 msgid " (sideways)"
 msgstr " (seitwärts)"
 
@@ -37088,28 +37103,28 @@ msgstr "%1$d Zeichenketten wurden in der Auswahl ersetzt."
 msgid "%1$d strings have been replaced."
 msgstr "%1$d Zeichenketten wurden ersetzt."
 
-#: src/lyxfind.cpp:4483
+#: src/lyxfind.cpp:4508
 msgid "One match has been replaced."
 msgstr "Ein Treffer wurde ersetzt."
 
-#: src/lyxfind.cpp:4486
+#: src/lyxfind.cpp:4511
 msgid "Two matches have been replaced."
 msgstr "Zwei Treffer wurden ersetzt."
 
-#: src/lyxfind.cpp:4489
+#: src/lyxfind.cpp:4514
 #, c-format
 msgid "%1$d matches have been replaced."
 msgstr "%1$d Treffer wurden ersetzt."
 
-#: src/lyxfind.cpp:4495
+#: src/lyxfind.cpp:4520
 msgid "Match not found."
 msgstr "Die Zeichenkette wurde nicht gefunden!"
 
-#: src/lyxfind.cpp:4501
+#: src/lyxfind.cpp:4526
 msgid "Match has been replaced."
 msgstr "Die Zeichenkette wurde ersetzt."
 
-#: src/lyxfind.cpp:4503
+#: src/lyxfind.cpp:4528
 msgid "Match found."
 msgstr "Die Zeichenkette wurde gefunden!"
 
@@ -37151,27 +37166,27 @@ msgstr "Verzierung: %1$s"
 msgid "Environment: %1$s"
 msgstr "Umgebung: %1$s"
 
-#: src/mathed/InsetMathGrid.cpp:1720
+#: src/mathed/InsetMathGrid.cpp:1725
 msgid "Cursor not in table"
 msgstr "Cursor nicht in Tabelle"
 
-#: src/mathed/InsetMathGrid.cpp:1725
+#: src/mathed/InsetMathGrid.cpp:1730
 msgid "Only one row"
 msgstr "Nur eine Zeile"
 
-#: src/mathed/InsetMathGrid.cpp:1731
+#: src/mathed/InsetMathGrid.cpp:1736
 msgid "Only one column"
 msgstr "Nur eine Spalte"
 
-#: src/mathed/InsetMathGrid.cpp:1739
+#: src/mathed/InsetMathGrid.cpp:1744
 msgid "No hline to delete"
 msgstr "Keine horizontale Linie zu löschen"
 
-#: src/mathed/InsetMathGrid.cpp:1748
+#: src/mathed/InsetMathGrid.cpp:1753
 msgid "No vline to delete"
 msgstr "Keine vertikale Linie zu löschen"
 
-#: src/mathed/InsetMathGrid.cpp:1777
+#: src/mathed/InsetMathGrid.cpp:1782
 #, c-format
 msgid "Unknown tabular feature '%1$s'"
 msgstr "Unbekanntes Tabellenmerkmal '%1$s'"
@@ -37242,7 +37257,7 @@ msgstr "Mathe-Textmodus betreten (textrm)"
 msgid "Regular expression editor mode"
 msgstr "Bearbeitungsmodus für reguläre Ausdrücke"
 
-#: src/mathed/InsetMathNest.cpp:1942
+#: src/mathed/InsetMathNest.cpp:1948
 #, c-format
 msgid "Cannot apply %1$s here."
 msgstr "%1$s kann hier nicht angewendet werden."
@@ -37306,11 +37321,11 @@ msgstr ""
 "Das angegebene Dokument %1$s\n"
 "konnte nicht geöffnet werden."
 
-#: src/output_latex.cpp:1626
+#: src/output_latex.cpp:1650
 msgid "Error in latexParagraphs"
 msgstr "Fehler in latexParagraphs"
 
-#: src/output_latex.cpp:1627
+#: src/output_latex.cpp:1651
 #, c-format
 msgid ""
 "You are using at least one layout (%1$s) intended for the title, after using "

commit cc787967f412bbc497078086762619862945dd17
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Wed Dec 29 11:45:01 2021 -0500

    Change "Show Zoom Value" to "Show Zoom Level"
    
    See discussion at #12420.
    
    Amends 49a17aaa.

diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc
index e790492..5051c44 100644
--- a/lib/ui/stdcontext.inc
+++ b/lib/ui/stdcontext.inc
@@ -729,7 +729,7 @@ Menuset
 	Menu "context-statusbar"
 		ZoomOptions
 		Separator
-		Item "Show Zoom Value|Z" "ui-toggle zoom"
+		Item "Show Zoom Level|Z" "ui-toggle zoom"
 		Item "Show Zoom Slider|S" "ui-toggle zoomslider"
 	End
 

commit f40413db1180032f29466187f860600f927962d7
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Wed Dec 29 10:17:53 2021 -0500

    Reg tests for language switching
    
    Use cases from #12352. The files correspond to
    mwe-remove-bottom.23.lyx and mwe-remove-top.23.lyx. The only
    differences are that I changed to FreeSans and FreeSerif for the
    fonts.

diff --git a/autotests/export/latex/lyxbugs-resolved/12352-language-not-closed1.lyx b/autotests/export/latex/lyxbugs-resolved/12352-language-not-closed1.lyx
new file mode 100644
index 0000000..46b617b
--- /dev/null
+++ b/autotests/export/latex/lyxbugs-resolved/12352-language-not-closed1.lyx
@@ -0,0 +1,106 @@
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 544
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass article
+\use_default_options true
+\begin_modules
+tcolorbox
+\end_modules
+\maintain_unincluded_children false
+\language hebrew
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman "default" "FreeSans"
+\font_sans "default" "FreeSerif"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts true
+\font_sc false
+\font_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format pdf4
+\output_sync 1
+\output_sync_macro "\synctex=1"
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date true
+\justification true
+\use_refstyle 1
+\use_minted 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style english
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\bullet 0 2 5 -1
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+
+\lang english
+\begin_inset Flex Color Box
+status open
+
+\begin_layout Plain Layout
+\noindent
+א
+\end_layout
+
+\begin_layout Enumerate
+ב
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/autotests/export/latex/lyxbugs-resolved/12352-language-not-closed2.lyx b/autotests/export/latex/lyxbugs-resolved/12352-language-not-closed2.lyx
new file mode 100644
index 0000000..71d9172
--- /dev/null
+++ b/autotests/export/latex/lyxbugs-resolved/12352-language-not-closed2.lyx
@@ -0,0 +1,105 @@
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 544
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass article
+\use_default_options true
+\begin_modules
+tcolorbox
+\end_modules
+\maintain_unincluded_children false
+\language hebrew
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman "default" "FreeSans"
+\font_sans "default" "FreeSerif"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts true
+\font_sc false
+\font_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format pdf4
+\output_sync 1
+\output_sync_macro "\synctex=1"
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date true
+\justification true
+\use_refstyle 1
+\use_minted 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style english
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\bullet 0 2 5 -1
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+
+\lang english
+\begin_inset Flex Color Box
+status open
+
+\begin_layout Enumerate
+ב
+\end_layout
+
+\begin_layout Plain Layout
+×’
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document

commit 095e533be957d3a47ed361ec6fa68945c7a32f91
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Dec 29 16:07:40 2021 +0100

    Fix language environment with environments at inset begin/end (#12352)

diff --git a/src/output_latex.cpp b/src/output_latex.cpp
index 4589b37..ac22116 100644
--- a/src/output_latex.cpp
+++ b/src/output_latex.cpp
@@ -185,8 +185,9 @@ static TeXEnvironmentData prepareEnvironment(Buffer const & buf,
 		bparams.documentClass().plainLayout() : pit->layout();
 
 	ParagraphList const & paragraphs = text.paragraphs();
+	bool const firstpar = pit == paragraphs.begin();
 	ParagraphList::const_iterator const priorpit =
-		pit == paragraphs.begin() ? pit : prev(pit, 1);
+		firstpar ? pit : prev(pit, 1);
 
 	OutputState * state = getOutputState();
 	bool const use_prev_env_language = state->prev_env_language_ != nullptr
@@ -199,10 +200,13 @@ static TeXEnvironmentData prepareEnvironment(Buffer const & buf,
 	data.par_language = pit->getParLanguage(bparams);
 	Language const * const doc_language = bparams.language;
 	Language const * const prev_par_language =
-		(pit != paragraphs.begin())
-		? (use_prev_env_language ? state->prev_env_language_
-					 : priorpit->getParLanguage(bparams))
-		: doc_language;
+		// use font at inset or document language in first paragraph
+		firstpar ? (runparams.local_font ?
+				    runparams.local_font->language()
+				  : doc_language)
+			 : (use_prev_env_language ?
+				    state->prev_env_language_
+				  : priorpit->getParLanguage(bparams));
 
 	bool const use_polyglossia = runparams.use_polyglossia;
 	string const par_lang = use_polyglossia ?
@@ -219,11 +223,14 @@ static TeXEnvironmentData prepareEnvironment(Buffer const & buf,
 					!lang_end_command.empty();
 
 	// For polyglossia, switch language outside of environment, if possible.
+	// However, if we are at the start of an inset, do not close languages
+	// opened outside.
 	if (par_lang != prev_par_lang) {
-		if ((!using_begin_end || langOpenedAtThisLevel(state)) &&
-		    !lang_end_command.empty() &&
-		    prev_par_lang != doc_lang &&
-		    !prev_par_lang.empty()) {
+		if (!firstpar
+		    && (!using_begin_end || langOpenedAtThisLevel(state))
+		    && !lang_end_command.empty()
+		    && prev_par_lang != doc_lang
+		    && !prev_par_lang.empty()) {
 			os << from_ascii(subst(
 				lang_end_command,
 				"$$lang",
@@ -320,10 +327,12 @@ static TeXEnvironmentData prepareEnvironment(Buffer const & buf,
 
 
 static void finishEnvironment(otexstream & os, OutputParams const & runparams,
-			      TeXEnvironmentData const & data)
+			      TeXEnvironmentData const & data, bool const maintext,
+			      bool const lastpar)
 {
 	OutputState * state = getOutputState();
-	// BufferParams const & bparams = buf.params(); // FIXME: for speedup shortcut below, would require passing of "buf" as argument
+	// BufferParams const & bparams = buf.params();
+	// FIXME: for speedup shortcut below, would require passing of "buf" as argument
 	if (state->open_encoding_ == CJK && data.cjk_nested) {
 		// We need to close the encoding even if it does not change
 		// to do correct environment nesting
@@ -363,6 +372,20 @@ static void finishEnvironment(otexstream & os, OutputParams const & runparams,
 			runparams.encoding = data.prev_encoding;
 			os << setEncoding(data.prev_encoding->iconvName());
 		}
+		// If this is the last par of an inset, the language needs
+		// to be closed after the environment
+		if (lastpar && !maintext) {
+			if (using_begin_end && langOpenedAtThisLevel(state)) {
+				if (isLocalSwitch(state)) {
+					os << "}";
+				} else {
+					os << "\\end{"
+					   << openLanguageName(state)
+					   << "}%\n";
+				}
+				popLanguageName();
+			}
+		}
 	}
 
 	if (data.leftindent_open) {
@@ -462,7 +485,8 @@ void TeXEnvironment(Buffer const & buf, Text const & text,
 			prepareEnvironment(buf, text, par, os, runparams);
 		// Recursive call to TeXEnvironment!
 		TeXEnvironment(buf, text, runparams, pit, os);
-		finishEnvironment(os, runparams, data);
+		bool const lastpar = size_t(pit + 1) >= paragraphs.size();
+		finishEnvironment(os, runparams, data, text.isMainText(), lastpar);
 	}
 
 	if (pit != runparams.par_end)
@@ -1676,7 +1700,8 @@ void latexParagraphs(Buffer const & buf,
 			output_changes = bparams.output_changes;
 		else
 			output_changes = (runparams.for_searchAdv == OutputParams::SearchWithDeleted);
-		if (size_t(pit + 1) < paragraphs.size()) {
+		bool const lastpar = size_t(pit + 1) >= paragraphs.size();
+		if (!lastpar) {
 			ParagraphList::const_iterator nextpar = paragraphs.iterator_at(pit + 1);
 			Paragraph const & cpar = paragraphs.at(pit);
 			if ((par->layout() != nextpar->layout()
@@ -1703,7 +1728,7 @@ void latexParagraphs(Buffer const & buf,
 			prepareEnvironment(buf, text, par, os, runparams);
 		// pit can be changed in TeXEnvironment.
 		TeXEnvironment(buf, text, runparams, pit, os);
-		finishEnvironment(os, runparams, data);
+		finishEnvironment(os, runparams, data, maintext, lastpar);
 	}
 
 	// FIXME: uncomment the content or remove this block

commit f22c5c3c3f4c2cbb9fc852481d60b4f542ac6742
Author: Stephan Witt <switt at lyx.org>
Date:   Wed Dec 29 15:32:59 2021 +0100

    Remove unused local variable

diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index cce87e5..d59e64c 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -207,7 +207,6 @@ public:
 		QStringList titlesegs = htext.split('\n');
 		int wline = 0;
 		int hline = fm.maxHeight();
-		QStringList::const_iterator sit;
 		for (QString const & seg : titlesegs) {
 			if (fm.width(seg) > wline)
 				wline = fm.width(seg);

commit 0f2d711f34da8f3e573d96a87fc31095651c28b7
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Dec 29 14:43:52 2021 +0100

    Fix TOC filtering with slashes (#12359)
    
    Seems the * wildcard does not match these.

diff --git a/src/frontends/qt/TocWidget.cpp b/src/frontends/qt/TocWidget.cpp
index cd346a8..483f008 100644
--- a/src/frontends/qt/TocWidget.cpp
+++ b/src/frontends/qt/TocWidget.cpp
@@ -523,8 +523,13 @@ void TocWidget::filterContents()
 
 	QModelIndexList indices = tocTV->model()->match(
 		tocTV->model()->index(0, 0),
-		Qt::DisplayRole, "*", -1,
-		Qt::MatchFlags(Qt::MatchWildcard|Qt::MatchRecursive));
+		Qt::DisplayRole, ".*", -1,
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
+		Qt::MatchFlags(Qt::MatchRegularExpression|Qt::MatchRecursive));
+#else
+		// deprecated in Qt 5.15.
+		Qt::MatchFlags(Qt::MatchRegExp|Qt::MatchRecursive));
+#endif
 
 	bool const show_active =
 		activeFilterCO->currentIndex() != 2;

commit 992991693530c9c9cf68e456f1fcf04c6773a0a6
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Dec 29 13:44:40 2021 +0100

    Use Noto Sans Tibetan rather than Serif
    
    The sans is more complete and also seems to be more widely distributed.

diff --git a/autotests/export/latex/languages/supported-languages_polyglossia.lyx b/autotests/export/latex/languages/supported-languages_polyglossia.lyx
index 40d2a88..aa1e50f 100644
--- a/autotests/export/latex/languages/supported-languages_polyglossia.lyx
+++ b/autotests/export/latex/languages/supported-languages_polyglossia.lyx
@@ -23,7 +23,7 @@
 \newfontfamily\telugufont{Noto Serif Telugu}
 \newfontfamily\thaanafont{FreeSerif}  % missing script tag in FreeSerif
 %\newfontfamily\thaanafont{Noto Sans Thaana} % works, too
-\newfontfamily\tibetanfont{Noto Serif Tibetan}
+\newfontfamily\tibetanfont{Noto Sans Tibetan}
 
 % Font setup for Japanese (not supported by Polyglossia)
 \usepackage{ifxetex}

commit dbd33f6622a4a62c102c640b80c36dc40a67b846
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Dec 28 18:48:55 2021 +0100

    When row if empty, set endpos correctly.

diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 2b1ee5a..2cf3ce9 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1063,7 +1063,7 @@ Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
 void cleanupRow(Row & row, bool at_end)
 {
 	if (row.empty()) {
-		row.endpos(0);
+		row.endpos(row.pos());
 		return;
 	}
 

commit 4b02748b6d6e61c59e56d4777ab69eeaa36e73cc
Author: Kornel Benko <kornel at lyx.org>
Date:   Tue Dec 28 17:35:18 2021 +0100

    Update sk.po

diff --git a/po/sk.po b/po/sk.po
index 0b3739e..d795056 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LyX-2.4\n"
 "Report-Msgid-Bugs-To: lyx-devel at lists.lyx.org\n"
-"POT-Creation-Date: 2021-11-01 16:40+0100\n"
-"PO-Revision-Date: 2021-11-01 17:11+0000\n"
+"POT-Creation-Date: 2021-12-28 14:01+0100\n"
+"PO-Revision-Date: 2021-12-28 16:33+0000\n"
 "Last-Translator: Kornel Benko <kornel at lyx.org>\n"
 "Language-Team: Slovak <kornel at lyx.org>\n"
 "Language: sk\n"
@@ -3877,6 +3877,19 @@ msgstr ""
 msgid "&Underline change tracking additions"
 msgstr "&Podčiarknuť adície sledovaných zmien"
 
+#: src/frontends/qt/ui/PrefDisplayUi.ui:164
+msgid ""
+"If this is checked, an intermediate surface will be used for painting. This "
+"may be needed in some cases to have proper display, but breaks subpixel "
+"aliasing."
+msgstr ""
+"Keď zaškrtnuté, bude sa používať vnútorná plocha na kresbu. Môže to byť "
+"potrebné pre slušný displej. Ale porúša zarovnávanie pod-pixlov."
+
+#: src/frontends/qt/ui/PrefDisplayUi.ui:167
+msgid "Use &backing store to display text"
+msgstr "Používať zálohové ukladanie na zobrazenie &textu"
+
 #: src/frontends/qt/ui/PrefDocHandlingUi.ui:26
 msgid "Session Handling"
 msgstr "Riadenie sedenia"
@@ -20157,8 +20170,12 @@ msgid "Giant-sized Icons"
 msgstr "Gigantické ikony"
 
 #: lib/ui/stdcontext.inc:732
+msgid "Show Zoom Value|Z"
+msgstr "Ukáž hodnotu lupy|h"
+
+#: lib/ui/stdcontext.inc:733
 msgid "Show Zoom Slider|S"
-msgstr "Ukáž posuvník lupy|U"
+msgstr "Ukáž posuvník lupy|p"
 
 #: lib/ui/stdmenus.inc:30
 msgid "File|F"
@@ -34818,9 +34835,9 @@ msgstr "Popis (%1$s)"
 msgid "Reset to Default (%1$d%)|R"
 msgstr "Nastaviť na Predvolené (%1$d%)|r"
 
-#: src/frontends/qt/Menus.cpp:1837
+#: src/frontends/qt/Menus.cpp:1835
 msgid "Zoom In|I"
-msgstr "Priblížiť|r"
+msgstr "Priblížiť|i"
 
 #: src/frontends/qt/Menus.cpp:1839
 msgid "Zoom Out|O"

commit 44b1afb975bf12cf7ade587e476601826691b4dc
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Tue Dec 28 09:42:31 2021 +0100

    Style

commit d1761d765295f50207dc132465ed6a5b3daa6cdf
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Tue Dec 28 09:42:31 2021 +0100

    Style

diff --git a/src/mathed/InsetMathGrid.cpp b/src/mathed/InsetMathGrid.cpp
index f180b9a..96ec13b 100644
--- a/src/mathed/InsetMathGrid.cpp
+++ b/src/mathed/InsetMathGrid.cpp
@@ -1251,8 +1251,8 @@ void InsetMathGrid::write(TeXMathStream & os,
 	// As of 2018 (with amendment in LaTeX 2021/06),
 	// \\ is a robust command and its protection
 	// is no longer necessary
-	bool const fragile = LaTeXFeatures::isAvailable("LaTeX-2021/06/01") ?
-		false : os.fragile();
+	bool const fragile = os.fragile()
+			&& !LaTeXFeatures::isAvailable("LaTeX-2021/06/01");
 	for (row_type row = beg_row; row < end_row; ++row) {
 		os << verboseHLine(rowinfo_[row].lines);
 		// don't write & and empty cells at end of line,

commit 9ffca92930443a31d743380ffd5df4ce1a619e83
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Mon Dec 27 13:40:56 2021 -0500

    Allow toggling of Zoom elements without buffer
    
    The elements are shown without a buffer so it's nice to be able to
    toggle without one as well.

diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index b7a60fa..cce87e5 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -2356,10 +2356,8 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
 
 	case LFUN_UI_TOGGLE:
 		if (cmd.argument() == "zoom") {
-			enable = doc_buffer;
 			flag.setOnOff(zoom_value_ ? zoom_value_->isVisible() : false);
 		} else if (cmd.argument() == "zoomslider") {
-			enable = doc_buffer;
 			flag.setOnOff(zoom_slider_ ? zoom_slider_->isVisible() : false);
 		} else
 			flag.setOnOff(isFullScreen());

commit 49a17aaa5dc37139eb3deddaf3cbd2606608a0b7
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Mon Dec 27 13:40:13 2021 -0500

    Change label "Show Zoom" to "Show Zoom Value"

diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc
index 8b67cf0..e790492 100644
--- a/lib/ui/stdcontext.inc
+++ b/lib/ui/stdcontext.inc
@@ -729,7 +729,7 @@ Menuset
 	Menu "context-statusbar"
 		ZoomOptions
 		Separator
-		Item "Show Zoom|Z" "ui-toggle zoom"
+		Item "Show Zoom Value|Z" "ui-toggle zoom"
 		Item "Show Zoom Slider|S" "ui-toggle zoomslider"
 	End
 

commit eae56b1194c8bed38bf0751ca9cb4eac76ee54c7
Author: Daniel Ramoeller <d.lyx at web.de>
Date:   Tue Nov 2 09:12:03 2021 +0100

    Hide the zoom in the status bar from the status bar context menu
    
    Fix for #12420.

diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc
index 83e6d9a..8b67cf0 100644
--- a/lib/ui/stdcontext.inc
+++ b/lib/ui/stdcontext.inc
@@ -724,11 +724,12 @@ Menuset
 	End
 
 #
-# Zoom context menu
+# Status bar context menu
 #
-	Menu "context-zoom"
+	Menu "context-statusbar"
 		ZoomOptions
 		Separator
+		Item "Show Zoom|Z" "ui-toggle zoom"
 		Item "Show Zoom Slider|S" "ui-toggle zoomslider"
 	End
 
diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index 1101b89..b7a60fa 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -690,9 +690,9 @@ GuiView::GuiView(int id)
 	zoom_value_->setText(toqstr(bformat(_("[[ZOOM]]%1$d%"), zoom)));
 	statusBar()->addPermanentWidget(zoom_value_);
 	zoom_value_->setEnabled(currentBufferView());
-	zoom_value_->setContextMenuPolicy(Qt::CustomContextMenu);
 
-	connect(zoom_value_, SIGNAL(customContextMenuRequested(QPoint)),
+	statusBar()->setContextMenuPolicy(Qt::CustomContextMenu);
+	connect(statusBar(), SIGNAL(customContextMenuRequested(QPoint)),
 		this, SLOT(showZoomContextMenu()));
 
 	int const iconheight = max(int(d.normalIconSize), fm.height());
@@ -826,7 +826,7 @@ void GuiView::zoomOutPressed()
 
 void GuiView::showZoomContextMenu()
 {
-	QMenu * menu = guiApp->menus().menu(toqstr("context-zoom"), * this);
+	QMenu * menu = guiApp->menus().menu(toqstr("context-statusbar"), * this);
 	if (!menu)
 		return;
 	menu->exec(QCursor::pos());
@@ -946,6 +946,7 @@ void GuiView::saveLayout() const
 		settings.setValue("geometry", saveGeometry());
 	settings.setValue("layout", saveState(0));
 	settings.setValue("icon_size", toqstr(d.iconSize(iconSize())));
+	settings.setValue("zoom_value_visible", zoom_value_->isVisible());
 	settings.setValue("zoom_slider_visible", zoom_slider_->isVisible());
 }
 
@@ -990,6 +991,8 @@ bool GuiView::restoreLayout()
 	//code below is skipped when when ~/.config/LyX is (re)created
 	setIconSize(d.iconSize(settings.value(icon_key).toString()));
 
+	zoom_value_->setVisible(settings.value("zoom_value_visible", true).toBool());
+
 	bool const show_zoom_slider = settings.value("zoom_slider_visible", true).toBool();
 	zoom_slider_->setVisible(show_zoom_slider);
 	zoom_in_->setVisible(show_zoom_slider);
@@ -2352,7 +2355,10 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
 		break;
 
 	case LFUN_UI_TOGGLE:
-		if (cmd.argument() == "zoomslider") {
+		if (cmd.argument() == "zoom") {
+			enable = doc_buffer;
+			flag.setOnOff(zoom_value_ ? zoom_value_->isVisible() : false);
+		} else if (cmd.argument() == "zoomslider") {
 			enable = doc_buffer;
 			flag.setOnOff(zoom_slider_ ? zoom_slider_->isVisible() : false);
 		} else
@@ -4861,6 +4867,8 @@ bool GuiView::lfunUiToggle(string const & ui_component)
 		statusBar()->setVisible(!statusBar()->isVisible());
 	} else if (ui_component == "menubar") {
 		menuBar()->setVisible(!menuBar()->isVisible());
+	} else if (ui_component == "zoom") {
+		zoom_value_->setVisible(!zoom_value_->isVisible());
 	} else if (ui_component == "zoomslider") {
 		zoom_slider_->setVisible(!zoom_slider_->isVisible());
 		zoom_in_->setVisible(zoom_slider_->isVisible());

commit 7ab3c59f006ddaa6a54683a260810217d0272e5e
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Mon Dec 27 19:38:10 2021 +0100

    Typo

diff --git a/src/frontends/qt/GuiFontMetrics.cpp b/src/frontends/qt/GuiFontMetrics.cpp
index e51d40f..e638e10 100644
--- a/src/frontends/qt/GuiFontMetrics.cpp
+++ b/src/frontends/qt/GuiFontMetrics.cpp
@@ -92,7 +92,7 @@ namespace {
 
 // Limit strwidth_cache_ total cost to 1MB of string data.
 int const strwidth_cache_max_cost = 1024 * 1024;
-// Limit breakat_cache_ total cost to 10MB of string data.
+// Limit breakstr_cache_ total cost to 10MB of string data.
 // This is useful for documents with very large insets.
 int const breakstr_cache_max_cost = 10 * 1024 * 1024;
 // Qt 5.x already has its own caching of QTextLayout objects

commit 22cbc3b0cf58270de0b41fc7e5aa2c44ff57a8c1
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Mon Dec 27 11:17:29 2021 -0500

    ctests: uninvert a DocBook export
    
    The export now succeeds, likely due to Jürgen's improvements at
    2eaf30c5.

diff --git a/development/autotests/invertedTests b/development/autotests/invertedTests
index dd217d9..303d80c 100644
--- a/development/autotests/invertedTests
+++ b/development/autotests/invertedTests
@@ -492,7 +492,7 @@ export/examples/Modules/Sweave_docbook5
 # - Figures without image, only an equation.
 export/examples/Modules/Variable-width_Minipages_docbook5
 # - Listing in LyX-Code, i.e. double <programlisting>.
-export/examples/(es|fr)/Modules/Linguistics_docbook5
+export/examples/es/Modules/Linguistics_docbook5
 # - Inlines in inlines (<code> within <personname>), double sidebar.
 export/examples/ko/cjk-ko-doc_docbook5
 # - Metadata in abstract paragraph.

commit 62993294f38378d310f9b48a5edac68abde374f4
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Mon Dec 27 11:09:21 2021 -0500

    Invert two DocBook + LilyPond exports
    
    This is due to an upstream issue:
    
      https://gitlab.com/lilypond/lilypond/-/issues/6187
    
    For ML discussion, see here:
    
      https://www.mail-archive.com/search?l=mid&q=20211102011304.dmrcr7gjpxxwpd4o%40poole

diff --git a/development/autotests/invertedTests b/development/autotests/invertedTests
index 400f80b..dd217d9 100644
--- a/development/autotests/invertedTests
+++ b/development/autotests/invertedTests
@@ -526,6 +526,11 @@ export/export/docbook/SciPoster_docbook5
 # - A figure within a title does not make sense at all, so it cannot be valid
 #   DocBook under any circumstances.
 export/export/latex/lyxbugs-resolved/cprotect/7779-float-in-par-env_docbook5
+# - LilyPond upstream issue:
+#     https://gitlab.com/lilypond/lilypond/-/issues/6187
+#   See also ML discussion:
+#     https://www.mail-archive.com/search?l=mid&q=20211102011304.dmrcr7gjpxxwpd4o%40poole
+export/examples/(|ja/)Modules/LilyPond_Book_docbook5
 
 Sublabel: docbook poster
 # Posters cannot be properly exported, the LyX documents are too far from

commit a7905c5b960cc07ddc801cbc217600e5cd4812f0
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Dec 27 16:31:09 2021 +0100

    Do not protect \\ as of LaTeX 2021/06/01

diff --git a/lib/chkconfig.ltx b/lib/chkconfig.ltx
index 3512887..fe3ce0d 100644
--- a/lib/chkconfig.ltx
+++ b/lib/chkconfig.ltx
@@ -240,6 +240,8 @@
 % This introduces all math and text spaces
 % previously only available via amsmath
 \TestLaTeXVersion{2020/10/01}
+% This robustifies LaTeX commands
+\TestLaTeXVersion{2021/06/01}
 
 %%% And now, the list of available languages
 % The trick is to know that \the\everyjob contains something like
diff --git a/src/mathed/InsetMathGrid.cpp b/src/mathed/InsetMathGrid.cpp
index aa60d6a..f180b9a 100644
--- a/src/mathed/InsetMathGrid.cpp
+++ b/src/mathed/InsetMathGrid.cpp
@@ -772,9 +772,6 @@ docstring InsetMathGrid::eolString(row_type row, bool fragile,
 	if (eol.empty() && row + 1 == nrows() && (nrows() == 1 || !last_eoln))
 		return docstring();
 
-	// FIXME: As of 2018 (with amendment in LaTeX 2021/06),
-	// \\ is a robust command and the following protection
-	// is no longer necessary
 	return (fragile ? "\\protect\\\\" : "\\\\") + eol;
 }
 
@@ -1251,6 +1248,11 @@ void InsetMathGrid::write(TeXMathStream & os,
 {
 	MathEnsurer ensurer(os, false);
 	docstring eol;
+	// As of 2018 (with amendment in LaTeX 2021/06),
+	// \\ is a robust command and its protection
+	// is no longer necessary
+	bool const fragile = LaTeXFeatures::isAvailable("LaTeX-2021/06/01") ?
+		false : os.fragile();
 	for (row_type row = beg_row; row < end_row; ++row) {
 		os << verboseHLine(rowinfo_[row].lines);
 		// don't write & and empty cells at end of line,
@@ -1297,7 +1299,7 @@ void InsetMathGrid::write(TeXMathStream & os,
 			os << eocString(col + nccols - 1, lastcol);
 			col += nccols;
 		}
-		eol = eolString(row, os.fragile(), os.latex(), last_eoln);
+		eol = eolString(row, fragile, os.latex(), last_eoln);
 		os << eol;
 		// append newline only if line wasn't completely empty
 		// and the formula is not written on a single line
@@ -1309,7 +1311,7 @@ void InsetMathGrid::write(TeXMathStream & os,
 	docstring const s = verboseHLine(rowinfo_[nrows()].lines);
 	if (!s.empty()) {
 		if (eol.empty()) {
-			if (os.fragile())
+			if (fragile)
 				os << "\\protect";
 			os << "\\\\";
 		}

commit faa404f063ee1532e647c48e72389ef6f0d6175b
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Mon Dec 27 10:26:04 2021 -0500

    Reg test for protect: xymatrix in figure caption
    
    Use case from #6243.

diff --git a/autotests/export/latex/lyxbugs-resolved/6243-protect-xymatrix-in-caption.lyx b/autotests/export/latex/lyxbugs-resolved/6243-protect-xymatrix-in-caption.lyx
new file mode 100644
index 0000000..174079c
--- /dev/null
+++ b/autotests/export/latex/lyxbugs-resolved/6243-protect-xymatrix-in-caption.lyx
@@ -0,0 +1,108 @@
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 544
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass article
+\use_default_options true
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format default
+\output_sync 1
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\use_minted 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style english
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+\begin_inset Float figure
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\begin_inset Caption Standard
+
+\begin_layout Plain Layout
+\begin_inset Formula $\xymatrix{xyz}
+$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/development/autotests/invertedTests b/development/autotests/invertedTests
index 7ac2113..400f80b 100644
--- a/development/autotests/invertedTests
+++ b/development/autotests/invertedTests
@@ -330,6 +330,10 @@ export/.*/el/.*_(dvi3|pdf5)_texF
 # class is not in TeX Live.
 export/templates/Articles/Econometrica_(dvi3|pdf5)_texF
 
+# xymatrix + LuaTeX
+# Error message says pdfTeX is required for xypdf.
+export/export/latex/lyxbugs-resolved/6243-protect-xymatrix-in-caption_pdf5.*
+
 
 # ================================================
 Sublabel: externalissues

commit 6ac60832e5091c405d74e4879d339212999ea8f2
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Dec 27 12:09:02 2021 +0100

    Add FIXME

diff --git a/src/mathed/InsetMathGrid.cpp b/src/mathed/InsetMathGrid.cpp
index 90f53fd..aa60d6a 100644
--- a/src/mathed/InsetMathGrid.cpp
+++ b/src/mathed/InsetMathGrid.cpp
@@ -772,6 +772,9 @@ docstring InsetMathGrid::eolString(row_type row, bool fragile,
 	if (eol.empty() && row + 1 == nrows() && (nrows() == 1 || !last_eoln))
 		return docstring();
 
+	// FIXME: As of 2018 (with amendment in LaTeX 2021/06),
+	// \\ is a robust command and the following protection
+	// is no longer necessary
 	return (fragile ? "\\protect\\\\" : "\\\\") + eol;
 }
 

commit a5b7eeacaa72d8285fbe20cd12932fd533b2cf97
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Dec 27 11:52:25 2021 +0100

    Remove remaining math cprotection test.
    
    We'll see if someone comes up with a reproducible case, and if so,
    whether ordinary protection works here as well.
    
    See #6243

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 369bda0..1bf48f1 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -4120,17 +4120,6 @@ bool Paragraph::needsCProtection(bool const fragile) const
 			continue;
 		if (ins->needsCProtection(maintext, fragile))
 			return true;
-		// Now check math environments
-		InsetMath const * im = ins->asInsetMath();
-		if (!im || im->cell(0).empty())
-			continue;
-		switch(im->cell(0)[0]->lyxCode()) {
-		case MATH_ENV_CODE:
-			// these need cprotection
-			return true;
-		default:
-			break;
-		}
 	}
 
 	return false;

commit 582fe0990f58625824a0e2521dac6905af897d9c
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Dec 27 11:42:30 2021 +0100

    \protect xymatrix in fragile context
    
    (\cprotect'ion not needed then).

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 17c68fa..369bda0 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -4126,7 +4126,6 @@ bool Paragraph::needsCProtection(bool const fragile) const
 			continue;
 		switch(im->cell(0)[0]->lyxCode()) {
 		case MATH_ENV_CODE:
-		case MATH_XYMATRIX_CODE:
 			// these need cprotection
 			return true;
 		default:
diff --git a/src/mathed/InsetMathXYMatrix.cpp b/src/mathed/InsetMathXYMatrix.cpp
index 7e35fe9..d8f5460 100644
--- a/src/mathed/InsetMathXYMatrix.cpp
+++ b/src/mathed/InsetMathXYMatrix.cpp
@@ -66,6 +66,8 @@ void InsetMathXYMatrix::draw(PainterInfo & pi, int x, int y) const
 void InsetMathXYMatrix::write(TeXMathStream & os) const
 {
 	MathEnsurer ensurer(os);
+	if (os.fragile())
+		os << "\\protect";
 	os << "\\xymatrix";
 	bool open = os.startOuterRow();
 	if (equal_spacing_) {

commit 596b2d16ee6e9534e39fe58d10b1c4ad66cac620
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Dec 27 11:37:59 2021 +0100

    \protect substack in fragile context
    
    (\cprotect'ion not needed then).

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index f09143a..17c68fa 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -4125,7 +4125,6 @@ bool Paragraph::needsCProtection(bool const fragile) const
 		if (!im || im->cell(0).empty())
 			continue;
 		switch(im->cell(0)[0]->lyxCode()) {
-		case MATH_SUBSTACK_CODE:
 		case MATH_ENV_CODE:
 		case MATH_XYMATRIX_CODE:
 			// these need cprotection
diff --git a/src/mathed/InsetMathSubstack.cpp b/src/mathed/InsetMathSubstack.cpp
index ed90338..11678b5 100644
--- a/src/mathed/InsetMathSubstack.cpp
+++ b/src/mathed/InsetMathSubstack.cpp
@@ -100,6 +100,8 @@ void InsetMathSubstack::infoize(odocstream & os) const
 void InsetMathSubstack::write(TeXMathStream & os) const
 {
 	MathEnsurer ensurer(os);
+	if (os.fragile())
+		os << "\\protect";
 	os << "\\substack{";
 	bool open = os.startOuterRow();
 	InsetMathGrid::write(os);

commit 3e4c831f1ee4a0424151e0bfaa73bfa0a02f85d9
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Dec 27 10:24:58 2021 +0100

    Remove obsolete \cprotect'ion (#6243)

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index a33d6d6..f09143a 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -4125,7 +4125,6 @@ bool Paragraph::needsCProtection(bool const fragile) const
 		if (!im || im->cell(0).empty())
 			continue;
 		switch(im->cell(0)[0]->lyxCode()) {
-		case MATH_AMSARRAY_CODE:
 		case MATH_SUBSTACK_CODE:
 		case MATH_ENV_CODE:
 		case MATH_XYMATRIX_CODE:

commit 542445d07d0b45aca66115a693b29fc07966d7f5
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Thu Nov 18 16:36:29 2021 +0100

    When pasting text, keep line breaks when "parbreak is newline"
    
    This is much easier for listings, ERT or Verbatim.
    
    Fixes bug #8026.

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 6b960cd..a33d6d6 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -2269,6 +2269,12 @@ bool Paragraph::isPassThru() const
 }
 
 
+bool Paragraph::parbreakIsNewline() const
+{
+	return inInset().getLayout().parbreakIsNewline() || d->layout_->parbreak_is_newline;
+}
+
+
 bool Paragraph::isPartOfTextSequence() const
 {
 	for (pos_type i = 0; i < size(); ++i) {
diff --git a/src/Paragraph.h b/src/Paragraph.h
index d6e4a76..01ccd25 100644
--- a/src/Paragraph.h
+++ b/src/Paragraph.h
@@ -239,6 +239,8 @@ public:
 	///
 	bool isPassThru() const;
 	///
+	bool parbreakIsNewline() const;
+	///
 	bool isPartOfTextSequence() const;
 	///
 	pos_type size() const;
diff --git a/src/Text3.cpp b/src/Text3.cpp
index 1623996..a87169b 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -1521,7 +1521,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 				pasteFromStack(cur, bv->buffer().errorList("Paste"), 0);
 			else if (theClipboard().hasTextContents()) {
 				if (pasteClipboardText(cur, bv->buffer().errorList("Paste"),
-				                       true, Clipboard::AnyTextType))
+				                       !cur.paragraph().parbreakIsNewline(),
+					                   Clipboard::AnyTextType))
 					tryGraphics = false;
 			}
 			if (tryGraphics && theClipboard().hasGraphicsContents())

commit 51e92a5a97a35b80e47442c4aecb8c4c5c4df90b
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Dec 26 02:26:50 2021 +0100

    DocBook: more explicit comment.

diff --git a/src/insets/InsetFloat.cpp b/src/insets/InsetFloat.cpp
index 3f4c0db..cb05e49 100644
--- a/src/insets/InsetFloat.cpp
+++ b/src/insets/InsetFloat.cpp
@@ -792,7 +792,8 @@ void docbookNoSubfigures(XMLStream & xs, OutputParams const & runparams, const I
 		hasCaption = !osCaptionContent.str().empty();
 	}
 
-	// Organisation: <float> <title if any/> <contents without title/> </float>.
+	// Organisation: <float with xml:id if any> <title if any/> <contents without title nor xml:id/> </float>.
+	// Titles and xml:id are generated with specific insets and must be dealt with using OutputParams.
 
 	// - Generate the attributes for the float tag.
 	docstring attr = docstring();

commit db1a443a70eb6d7c30371f2cc9242634ec2fe951
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Dec 26 02:24:23 2021 +0100

    DocBook: update basic.xml for the latest MathML and DocBook changes.

diff --git a/autotests/export/docbook/basic.xml b/autotests/export/docbook/basic.xml
index 3a0db66..b589ee6 100644
--- a/autotests/export/docbook/basic.xml
+++ b/autotests/export/docbook/basic.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- This DocBook file was created by LyX 2.4.0dev
-  See http://www.lyx.org/ for more information -->
+  See https://www.lyx.org/ for more information -->
 <article xml:lang="en_US" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xi="http://www.w3.org/2001/XInclude" version="5.2">
 <info>
 <title>I am a title</title>
@@ -12,7 +12,6 @@
 <para>I am an abstract</para>
 <para>I am also an abstract</para>
 </abstract>
-
 </info>
 <para>I am a standard paragraph. </para>
 <section xml:id="sec.Sec-1">
@@ -22,46 +21,95 @@
 <blockquote>
 <para>I am a quote<inlineequation>
 <alt role='tex'>\,with\,a\,formula</alt>
- <m:math>
+<m:math display="inline">
  
+<m:mrow>
  <m:mrow>
-  <m:mrow><m:mspace width="6px" /><m:mi>w</m:mi><m:mi>i</m:mi><m:mi>t</m:mi><m:mi>h</m:mi><m:mspace width="6px" /><m:mi>a</m:mi><m:mspace width="6px" /><m:mi>f</m:mi><m:mi>o</m:mi><m:mi>r</m:mi><m:mi>m</m:mi><m:mi>u</m:mi><m:mi>l</m:mi><m:mi>a</m:mi>
-  </m:mrow>
+  <m:mspace width="6px"/>
+  <m:mi>w</m:mi>
+  <m:mi>i</m:mi>
+  <m:mi>t</m:mi>
+  <m:mi>h</m:mi>
+  <m:mspace width="6px"/>
+  <m:mi>a</m:mi>
+  <m:mspace width="6px"/>
+  <m:mi>f</m:mi>
+  <m:mi>o</m:mi>
+  <m:mi>r</m:mi>
+  <m:mi>m</m:mi>
+  <m:mi>u</m:mi>
+  <m:mi>l</m:mi>
+  <m:mi>a</m:mi>
  </m:mrow>
- </m:math>
+</m:mrow>
+</m:math>
 </inlineequation>. </para>
 </blockquote>
 <para>Now, we're outside quotes.</para>
 <informalequation>
 <alt role='tex'>Formula!</alt>
- <m:math>
+<m:math display="block">
  
+<m:mrow>
  <m:mrow>
-  <m:mrow><m:mi>F</m:mi><m:mi>o</m:mi><m:mi>r</m:mi><m:mi>m</m:mi><m:mi>u</m:mi><m:mi>l</m:mi><m:mi>a</m:mi><m:mo>!</m:mo>
-  </m:mrow>
+  <m:mi>F</m:mi>
+  <m:mi>o</m:mi>
+  <m:mi>r</m:mi>
+  <m:mi>m</m:mi>
+  <m:mi>u</m:mi>
+  <m:mi>l</m:mi>
+  <m:mi>a</m:mi>
+  <m:mo>!</m:mo>
  </m:mrow>
- </m:math>
+</m:mrow>
+</m:math>
 </informalequation>
 <informalequation xml:id="eq.EQ.">
 <alt role='tex'>\text{I am a formula with a ref.}\label{eq:EQ.}</alt>
- <m:math>
+<m:math display="block">
  
- <m:mrow>
-  <m:mstyle mathvariant='normal'>
-   <m:mrow><m:mi>I</m:mi> <m:mi>a</m:mi><m:mi>m</m:mi> <m:mi>a</m:mi> <m:mi>f</m:mi><m:mi>o</m:mi><m:mi>r</m:mi><m:mi>m</m:mi><m:mi>u</m:mi><m:mi>l</m:mi><m:mi>a</m:mi> <m:mi>w</m:mi><m:mi>i</m:mi><m:mi>t</m:mi><m:mi>h</m:mi> <m:mi>a</m:mi> <m:mi>r</m:mi><m:mi>e</m:mi><m:mi>f</m:mi><m:mn>.</m:mn>
-   </m:mrow>
-  </m:mstyle>
- </m:mrow>
- </m:math>
+<m:mtable displaystyle='true'>
+ <m:mtr>
+  <m:mtd>
+   <m:mstyle mathvariant='normal'>
+    <m:mrow>
+     <m:mi>I</m:mi> 
+     <m:mi>a</m:mi>
+     <m:mi>m</m:mi> 
+     <m:mi>a</m:mi> 
+     <m:mi>f</m:mi>
+     <m:mi>o</m:mi>
+     <m:mi>r</m:mi>
+     <m:mi>m</m:mi>
+     <m:mi>u</m:mi>
+     <m:mi>l</m:mi>
+     <m:mi>a</m:mi> 
+     <m:mi>w</m:mi>
+     <m:mi>i</m:mi>
+     <m:mi>t</m:mi>
+     <m:mi>h</m:mi> 
+     <m:mi>a</m:mi> 
+     <m:mi>r</m:mi>
+     <m:mi>e</m:mi>
+     <m:mi>f</m:mi>
+     <m:mn>.</m:mn>
+    </m:mrow>
+   </m:mstyle>
+  </m:mtd>
+  <m:mtd>
+   <m:mtext>(1)</m:mtext>
+  </m:mtd>
+ </m:mtr>
+</m:mtable>
+</m:math>
 </informalequation>
 
 <para>See <xref linkend="sec.Sec-2kqgsdiflhqsdlifgjuzer-povtuizmvnuer-t-vmsrmfli--uh--a--rtpfuo----rtpc.m-ca-rgifzapeu-tvgz" />.</para>
 <para>Also, a formula with an user-defined macro that outputs well in LaTeX but cannot in MathML: <inlineequation>
 <alt role='tex'>\testmacro</alt>
-<mathphrase>MathML export failed. Please report this as a bug.</mathphrase>
+<mathphrase>MathML export failed. Please report this as a bug to the LyX developers: https://www.lyx.org/trac.</mathphrase>
 </inlineequation>. </para>
-<!-- \latexCommandThatShouldBeCommented -->
-<section>
+<!-- \latexCommandThatShouldBeCommented --><section>
 <title>I am the first subsection</title>
 <para>I am the only paragraph of the first subsection. </para>
 </section>
@@ -131,19 +179,33 @@ I am no more code. </para>
 <caption>I am a table caption below the table.</caption>
 <tbody>
 <tr>
-<td align='center' valign='top'>Table 1</td>
-<td align='center' valign='top'>Table 2</td>
-<td align='center' valign='top'>Table 3</td>
+<td align='center' valign='top'>
+<para>Table 1</para>
+</td>
+<td align='center' valign='top'>
+<para>Table 2</para>
+</td>
+<td align='center' valign='top'>
+<para>Table 3</para>
+</td>
 </tr>
 <tr>
-<td align='center' valign='top'>Row 1</td>
+<td align='center' valign='top'>
+<para>Row 1</para>
+</td>
 <td align='center' valign='top'></td>
-<td align='center' valign='top'>Col 3, row 1</td>
+<td align='center' valign='top'>
+<para>Col 3, row 1</para>
+</td>
 </tr>
 <tr>
-<td align='center' valign='top'>Row 2</td>
+<td align='center' valign='top'>
+<para>Row 2</para>
+</td>
 <td align='center' valign='top'></td>
-<td align='center' valign='top'>Col 3, row 2</td>
+<td align='center' valign='top'>
+<para>Col 3, row 2</para>
+</td>
 </tr>
 </tbody>
 </table>
@@ -151,38 +213,66 @@ I am no more code. </para>
 <caption>I am a table caption above the table.</caption>
 <tbody>
 <tr>
-<td align='center' valign='top'>Table 1</td>
-<td align='center' valign='top'>Table 2</td>
-<td align='center' valign='top'>Table 3</td>
+<td align='center' valign='top'>
+<para>Table 1</para>
+</td>
+<td align='center' valign='top'>
+<para>Table 2</para>
+</td>
+<td align='center' valign='top'>
+<para>Table 3</para>
+</td>
 </tr>
 <tr>
-<td align='center' valign='top'>Row 1</td>
+<td align='center' valign='top'>
+<para>Row 1</para>
+</td>
 <td align='center' valign='top'></td>
-<td align='center' valign='top'>Col 3, row 1</td>
+<td align='center' valign='top'>
+<para>Col 3, row 1</para>
+</td>
 </tr>
 <tr>
-<td align='center' valign='top'>Row 2</td>
+<td align='center' valign='top'>
+<para>Row 2</para>
+</td>
 <td align='center' valign='top'></td>
-<td align='center' valign='top'>Col 3, row 2</td>
+<td align='center' valign='top'>
+<para>Col 3, row 2</para>
+</td>
 </tr>
 </tbody>
 </table>
 <informaltable>
 <tbody>
 <tr>
-<td align='center' valign='top'>Table that has no caption 1</td>
-<td align='center' valign='top'>Table that has no caption 2</td>
-<td align='center' valign='top'>Table that has no caption 3</td>
+<td align='center' valign='top'>
+<para>Table that has no caption 1</para>
+</td>
+<td align='center' valign='top'>
+<para>Table that has no caption 2</para>
+</td>
+<td align='center' valign='top'>
+<para>Table that has no caption 3</para>
+</td>
 </tr>
 <tr>
-<td align='center' valign='top'>Row 1</td>
+<td align='center' valign='top'>
+<para>Row 1</para>
+</td>
 <td align='center' valign='top'></td>
-<td align='center' valign='top'>Col 3, row 1</td>
+<td align='center' valign='top'>
+<para>Col 3, row 1</para>
+</td>
 </tr>
 <tr>
-<td align='center' valign='top'>Row 2</td>
+<td align='center' valign='top'>
+<para>Row 2</para>
+</td>
 <td align='center' valign='top'></td>
-<td align='center' valign='top'>Col 3, row 2</td>
+<td align='center' valign='top'>
+<para>Col 3, row 2</para>
+</td>
 </tr>
 </tbody>
 </informaltable>

commit 4c27a7307e48533f1002d9c6fd1d7cacbe727383
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Dec 26 02:24:06 2021 +0100

    Amend c734504d to fix a very bad nullptr dereferencing...

diff --git a/src/insets/InsetFloat.cpp b/src/insets/InsetFloat.cpp
index fc82d5c..3f4c0db 100644
--- a/src/insets/InsetFloat.cpp
+++ b/src/insets/InsetFloat.cpp
@@ -759,8 +759,7 @@ void docbookGenerateFillerTable(XMLStream & xs, BufferParams::TableOutput format
 
 
 void docbookNoSubfigures(XMLStream & xs, OutputParams const & runparams, const InsetCaption * caption,
-                         const InsetLabel * label, Floating const & ftype, const InsetFloat * thisFloat)
-{
+                         const InsetLabel * label, Floating const & ftype, const InsetFloat * thisFloat) {
 	// Ensure there is no label output, it is supposed to be handled as xml:id.
 	OutputParams rpNoLabel = runparams;
 	if (label)
@@ -775,15 +774,23 @@ void docbookNoSubfigures(XMLStream & xs, OutputParams const & runparams, const I
 
 	// Generate the contents of the float (to check for emptiness).
 	odocstringstream osFloatContent;
-	XMLStream xsFloatContent(osFloatContent);
-	thisFloat->InsetText::docbook(xsFloatContent, rpNoTitle);
-	bool hasFloat = !osFloatContent.str().empty();
+	bool hasFloat = false;
+
+	if (thisFloat) {
+		XMLStream xsFloatContent(osFloatContent);
+		thisFloat->InsetText::docbook(xsFloatContent, rpNoTitle);
+		hasFloat = !osFloatContent.str().empty();
+	}
 
 	// Do the same for the caption.
 	odocstringstream osCaptionContent;
-	XMLStream xsCaptionContent(osCaptionContent);
-	caption->getCaptionAsDocBook(xsCaptionContent, rpNoLabel);
-	bool hasCaption = !osCaptionContent.str().empty();
+	bool hasCaption = false;
+
+	if (caption != nullptr) {
+		XMLStream xsCaptionContent(osCaptionContent);
+		caption->getCaptionAsDocBook(xsCaptionContent, rpNoLabel);
+		hasCaption = !osCaptionContent.str().empty();
+	}
 
 	// Organisation: <float> <title if any/> <contents without title/> </float>.
 

commit 81274c8da7bfaa9d785036f97bd199f31e002077
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Dec 26 02:14:34 2021 +0100

    Remove code that has been commented out for a long time.

diff --git a/src/insets/InsetFloat.cpp b/src/insets/InsetFloat.cpp
index 97d8061..fc82d5c 100644
--- a/src/insets/InsetFloat.cpp
+++ b/src/insets/InsetFloat.cpp
@@ -827,11 +827,6 @@ void docbookNoSubfigures(XMLStream & xs, OutputParams const & runparams, const I
 
 void InsetFloat::docbook(XMLStream & xs, OutputParams const & runparams) const
 {
-//	if (runparams.docbook_in_par) {
-//		xs << xml::EndTag("para");
-//		xs << xml::CR();
-//	}
-
 	const InsetCaption* caption = getCaptionInset();
 	const InsetLabel* label = getLabelInset();
 
@@ -855,11 +850,6 @@ void InsetFloat::docbook(XMLStream & xs, OutputParams const & runparams) const
 		docbookSubfigures(xs, runparams, caption, label, subfigures);
 	else
 		docbookNoSubfigures(xs, runparams, caption, label, ftype, this);
-
-//	if (runparams.docbook_in_par) {
-//		xs << xml::CR();
-//		xs << xml::StartTag("para");
-//	}
 }
 
 

commit 9d64a2f2f6ee96421a729a18200f8524e6982dfe
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Thu Dec 23 21:24:28 2021 -0500

    ctests: invert a docbook test for a cprotect case
    
    The strange example file does not make sense for Docbook, as
    described by Thibaut on the ML here:
    
      https://www.mail-archive.com/search?l=mid&q=CAK0LPyiHCsUMo0ZCbFrRBRTCD7G-rhw-z8G1of2kFGebBLddtA%40mail.gmail.com

diff --git a/development/autotests/invertedTests b/development/autotests/invertedTests
index 2857677..7ac2113 100644
--- a/development/autotests/invertedTests
+++ b/development/autotests/invertedTests
@@ -519,6 +519,9 @@ export/templates/Articles/IEEE_Transactions(.*)_docbook5
 # - Bibliography in the middle of the document (potentially fixable, but complicated, because some documents have
 #   several bibliographies, like books with one bibliography per chapter), subsections.
 export/export/docbook/SciPoster_docbook5
+# - A figure within a title does not make sense at all, so it cannot be valid
+#   DocBook under any circumstances.
+export/export/latex/lyxbugs-resolved/cprotect/7779-float-in-par-env_docbook5
 
 Sublabel: docbook poster
 # Posters cannot be properly exported, the LyX documents are too far from

commit c734504d3b4bac795627e1c4fa5b2e27b15e8653
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Dec 24 01:08:24 2021 +0100

    DocBook: in InsetFloat, detect the presence of a caption by generating it.
    
    This catches the case where the caption only contains a comment, as in export/export/latex/lyxbugs-resolved/cprotect/9313-comment-in-figure-float-caption. No duplicate work is performed to ensure the same level of performance as before.

diff --git a/src/insets/InsetFloat.cpp b/src/insets/InsetFloat.cpp
index db74e9e..97d8061 100644
--- a/src/insets/InsetFloat.cpp
+++ b/src/insets/InsetFloat.cpp
@@ -774,11 +774,20 @@ void docbookNoSubfigures(XMLStream & xs, OutputParams const & runparams, const I
 		rpNoTitle.docbook_in_table = true;
 
 	// Generate the contents of the float (to check for emptiness).
-	odocstringstream os2;
-	XMLStream xs2(os2);
-	thisFloat->InsetText::docbook(xs2, rpNoTitle);
+	odocstringstream osFloatContent;
+	XMLStream xsFloatContent(osFloatContent);
+	thisFloat->InsetText::docbook(xsFloatContent, rpNoTitle);
+	bool hasFloat = !osFloatContent.str().empty();
+
+	// Do the same for the caption.
+	odocstringstream osCaptionContent;
+	XMLStream xsCaptionContent(osCaptionContent);
+	caption->getCaptionAsDocBook(xsCaptionContent, rpNoLabel);
+	bool hasCaption = !osCaptionContent.str().empty();
 
 	// Organisation: <float> <title if any/> <contents without title/> </float>.
+
+	// - Generate the attributes for the float tag.
 	docstring attr = docstring();
 	if (label)
 		attr += "xml:id=\"" + xml::cleanID(label->screenLabel()) + "\"";
@@ -789,28 +798,29 @@ void docbookNoSubfigures(XMLStream & xs, OutputParams const & runparams, const I
 	}
 
 	// - Open the float tag.
-	xs << xml::StartTag(ftype.docbookTag(caption != nullptr), attr);
+	xs << xml::StartTag(ftype.docbookTag(hasCaption), attr);
 	xs << xml::CR();
 
 	// - Generate the caption.
-	if (caption) {
+	if (hasCaption) {
 		string const &titleTag = ftype.docbookCaption();
 		xs << xml::StartTag(titleTag);
-		caption->getCaptionAsDocBook(xs, rpNoLabel);
+		xs << XMLStream::ESCAPE_NONE << osCaptionContent.str();
 		xs << xml::EndTag(titleTag);
 		xs << xml::CR();
 	}
 
-	// - Output the actual content of the float.
-	if (!os2.str().empty())
-		xs << XMLStream::ESCAPE_NONE << os2.str();
+	// - Output the actual content of the float or some dummy content (to ensure that the output
+	// document is valid).
+	if (hasFloat)
+		xs << XMLStream::ESCAPE_NONE << osFloatContent.str();
 	else if (ftype.docbookFloatType() == "table")
 		docbookGenerateFillerTable(xs, thisFloat->buffer().params().docbook_table_output);
 	else
 		docbookGenerateFillerMedia(xs);
 
 	// - Close the float.
-	xs << xml::EndTag(ftype.docbookTag(caption != nullptr));
+	xs << xml::EndTag(ftype.docbookTag(hasCaption));
 	xs << xml::CR();
 }
 

commit e056cab792632f960ddcf3be114cd60769189cc9
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Thu Dec 23 15:10:26 2021 -0500

    Reg test for cprotect: float in par environment
    
    File from #7779.

diff --git a/autotests/export/latex/lyxbugs-resolved/cprotect/7779-float-in-par-env.lyx b/autotests/export/latex/lyxbugs-resolved/cprotect/7779-float-in-par-env.lyx
new file mode 100644
index 0000000..fe7e031
--- /dev/null
+++ b/autotests/export/latex/lyxbugs-resolved/cprotect/7779-float-in-par-env.lyx
@@ -0,0 +1,94 @@
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
+\begin_document
+\begin_header
+\textclass article
+\use_default_options true
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman default
+\font_sans default
+\font_typewriter default
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_amsmath 1
+\use_esint 1
+\use_mhchem 1
+\use_mathdots 1
+\cite_engine basic
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\use_refstyle 1
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\quotes_language english
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Paragraph
+\begin_inset Float figure
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+a
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Caption
+
+\begin_layout Plain Layout
+b
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+c
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document

commit 4b8bb0057382a817ca25c609cb77292e53a781df
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Wed Dec 22 22:45:39 2021 -0500

    Reg test for cprotect: comment in figure caption
    
    File from #9313.

diff --git a/autotests/export/latex/lyxbugs-resolved/cprotect/9313-comment-in-figure-float-caption.lyx b/autotests/export/latex/lyxbugs-resolved/cprotect/9313-comment-in-figure-float-caption.lyx
new file mode 100644
index 0000000..06cb3ca
--- /dev/null
+++ b/autotests/export/latex/lyxbugs-resolved/cprotect/9313-comment-in-figure-float-caption.lyx
@@ -0,0 +1,104 @@
+#LyX 2.1 created this file. For more info see http://www.lyx.org/
+\lyxformat 474
+\begin_document
+\begin_header
+\textclass article
+\use_default_options true
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman default
+\font_sans default
+\font_typewriter default
+\font_math auto
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\quotes_language english
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+\begin_inset Float figure
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\begin_inset Caption Standard
+
+\begin_layout Plain Layout
+\begin_inset Note Comment
+status collapsed
+
+\begin_layout Plain Layout
+This is a comment within a figure float caption
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document

commit 87bea678638b3431e31eb5f850b6cf33360e1684
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Wed Dec 22 21:58:56 2021 -0500

    Regression test for cprotect, #7116
    
    Start a new directory of cprotect tests. There are many situations
    where cprotect is needed so we can add files covering various
    situations as we find them.
    
    This particular test covers the case of special characters in URL
    insets in footnotes.

diff --git a/autotests/export/latex/lyxbugs-resolved/cprotect/7116-special-chars-in-url-in-footnote.lyx b/autotests/export/latex/lyxbugs-resolved/cprotect/7116-special-chars-in-url-in-footnote.lyx
new file mode 100644
index 0000000..3f9af42
--- /dev/null
+++ b/autotests/export/latex/lyxbugs-resolved/cprotect/7116-special-chars-in-url-in-footnote.lyx
@@ -0,0 +1,170 @@
+#LyX 2.1 created this file. For more info see http://www.lyx.org/
+\lyxformat 474
+\begin_document
+\begin_header
+\textclass article
+\use_default_options false
+\maintain_unincluded_children false
+\language british
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman default
+\font_sans default
+\font_typewriter default
+\font_math auto
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize a4paper
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\quotes_language english
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+\begin_inset Foot
+status open
+
+\begin_layout Plain Layout
+\begin_inset Flex URL
+status open
+
+\begin_layout Plain Layout
+
+http://example.com/%20foo
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+\begin_layout Plain Layout
+\begin_inset Flex URL
+status open
+
+\begin_layout Plain Layout
+
+http://example.com/%20foo
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Float figure
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Caption Standard
+
+\begin_layout Plain Layout
+\begin_inset Flex URL
+status open
+
+\begin_layout Plain Layout
+
+http://example.com/%20foo
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document

commit 942121f4b6af42ef1ae99cffee1e79ca1cf7d5f3
Author: Kornel Benko <kornel at lyx.org>
Date:   Tue Dec 21 14:16:49 2021 +0100

    FindAdv: Added handling of some missing Hebrew characters

diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 4310d16..6f780c1 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1585,6 +1585,30 @@ void static fillMissingUnicodesymbols()
   addAccents("\\gimel", getutf8(0x05d2));
   addAccents("\\hebdalet", getutf8(0x05d3));
   addAccents("\\daleth", getutf8(0x05d3));
+  addAccents("\\hebhe", getutf8(0x05d4));
+  addAccents("\\hebvav", getutf8(0x05d5));
+  addAccents("\\hebzayin", getutf8(0x05d6));
+  addAccents("\\hebhet", getutf8(0x05d7));
+  addAccents("\\hebtet", getutf8(0x05d8));
+  addAccents("\\hebyod", getutf8(0x05d9));
+  addAccents("\\hebfinalkaf", getutf8(0x05da));
+  addAccents("\\hebkaf", getutf8(0x05db));
+  addAccents("\\heblamed", getutf8(0x05dc));
+  addAccents("\\hebfinalmem", getutf8(0x05dd));
+  addAccents("\\hebmem", getutf8(0x05de));
+  addAccents("\\hebfinalnun", getutf8(0x05df));
+  addAccents("\\hebnun", getutf8(0x05e0));
+  addAccents("\\hebsamekh", getutf8(0x05e1));
+  addAccents("\\hebayin", getutf8(0x05e2));
+  addAccents("\\hebfinalpe", getutf8(0x05e3));
+  addAccents("\\hebpe", getutf8(0x05e4));
+  addAccents("\\hebfinaltsadi", getutf8(0x05e5));
+  addAccents("\\hebtsadi", getutf8(0x05e6));
+  addAccents("\\hebqof", getutf8(0x05e7));
+  addAccents("\\hebresh", getutf8(0x05e8));
+  addAccents("\\hebshin", getutf8(0x05e9));
+  addAccents("\\hebtav", getutf8(0x05ea));
+
   // Thai characters
   addAccents("\\thaiKoKai", getutf8(0x0e01));
   addAccents("\\thaiKhoKhai", getutf8(0x0e02));

commit c2f2ba57f1275cdf37e38da7e45ce5bb9ee124b9
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Dec 20 12:09:12 2021 +0100

    Do not repeatedly call main_font_encoding()
    
    This method impacts on performance and we store the value anyway in
    the output params.

diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index a41a570..fc559a4 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -1847,7 +1847,8 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
 
 	// if we use fontspec or newtxmath, we have to load the AMS packages here
 	string const ams = features.loadAMSPackages();
-	bool const ot1 = (main_font_encoding() == "default" || main_font_encoding() == "OT1");
+	string const main_font_enc = features.runparams().main_fontenc;
+	bool const ot1 = (main_font_enc == "default" || main_font_enc == "OT1");
 	bool const use_newtxmath =
 		theLaTeXFonts().getLaTeXFont(from_ascii(fontsMath())).getUsedPackage(
 			ot1, false, false) == "newtxmath";
@@ -1887,7 +1888,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
 	// set font encoding
 	// non-TeX fonts use font encoding TU (set by fontspec)
 	if (!useNonTeXFonts && !features.isProvided("fontenc")
-	    && main_font_encoding() != "default") {
+	    && main_font_enc != "default") {
 		// get main font encodings
 		vector<string> fontencs = font_encodings();
 		// get font encodings of secondary languages
@@ -3235,12 +3236,13 @@ string const BufferParams::dvips_options() const
 
 string const BufferParams::main_font_encoding() const
 {
-	if (font_encodings().empty()) {
+	vector<string> const fencs = font_encodings();
+	if (fencs.empty()) {
 		if (ascii_lowercase(language->fontenc(*this)) == "none")
 			return "none";
 		return "default";
 	}
-	return font_encodings().back();
+	return fencs.back();
 }
 
 
@@ -3255,9 +3257,10 @@ vector<string> const BufferParams::font_encodings() const
 		if (!doc_fontenc.empty())
 			// If we have a custom setting, we use only that!
 			return getVectorFromString(doc_fontenc);
-		if (!language->fontenc(*this).empty()
+		string const lfe = language->fontenc(*this);
+		if (!lfe.empty()
 		    && ascii_lowercase(language->fontenc(*this)) != "none") {
-			vector<string> fencs = getVectorFromString(language->fontenc(*this));
+			vector<string> fencs = getVectorFromString(lfe);
 			for (auto & fe : fencs) {
 				if (find(fontencs.begin(), fontencs.end(), fe) == fontencs.end())
 					fontencs.push_back(fe);
@@ -3509,7 +3512,8 @@ string const BufferParams::loadFonts(LaTeXFeatures & features) const
 	}
 
 	// Tex Fonts
-	bool const ot1 = (main_font_encoding() == "default" || main_font_encoding() == "OT1");
+	bool const ot1 = (features.runparams().main_fontenc == "default"
+			  || features.runparams().main_fontenc == "OT1");
 	bool const dryrun = features.runparams().dryrun;
 	bool const complete = (fontsSans() == "default" && fontsTypewriter() == "default");
 	bool const nomath = (fontsMath() != "auto");
diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp
index 0344202..f321799 100644
--- a/src/LaTeXFeatures.cpp
+++ b/src/LaTeXFeatures.cpp
@@ -783,8 +783,8 @@ bool LaTeXFeatures::isProvided(string const & name) const
 	if (params_.useNonTeXFonts)
 		return params_.documentClass().provides(name);
 
-	bool const ot1 = (params_.main_font_encoding() == "default"
-		|| params_.main_font_encoding() == "OT1");
+	bool const ot1 = (runparams().main_fontenc == "default"
+		|| runparams().main_fontenc == "OT1");
 	bool const complete = (params_.fontsSans() == "default"
 		&& params_.fontsTypewriter() == "default");
 	bool const nomath = (params_.fontsMath() == "default");
@@ -1315,8 +1315,8 @@ string const LaTeXFeatures::getPackages() const
 	// if fontspec or newtxmath is used, AMS packages have to be loaded
 	// before fontspec (in BufferParams)
 	string const amsPackages = loadAMSPackages();
-	bool const ot1 = (params_.main_font_encoding() == "default"
-			  || params_.main_font_encoding() == "OT1");
+	bool const ot1 = (runparams().main_fontenc == "default"
+			  || runparams().main_fontenc == "OT1");
 	bool const use_newtxmath =
 		theLaTeXFonts().getLaTeXFont(from_ascii(params_.fontsMath())).getUsedPackage(
 			ot1, false, false) == "newtxmath";
@@ -1584,15 +1584,15 @@ TexString LaTeXFeatures::getMacros() const
 		macros << lyxZWSP_def << '\n';
 
 	if (!usePolyglossia() && mustProvide("textgreek")) {
-	    // ensure LGR font encoding is defined also if fontenc is not loaded by LyX
-	   	if (params_.main_font_encoding() == "default")
+		// ensure LGR font encoding is defined also if fontenc is not loaded by LyX
+		if (runparams().main_fontenc == "default")
 			macros << textgreek_LGR_def;
 		macros << textgreek_def << '\n';
 	}
 
 	if (!usePolyglossia() && mustProvide("textcyrillic")) {
 		// ensure T2A font encoding is set up also if fontenc is not loaded by LyX
-		if (params_.main_font_encoding() == "default")
+		if (runparams().main_fontenc == "default")
 			macros << textcyr_T2A_def;
 		macros << textcyr_def << '\n';
 	}
diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 2408261..6b960cd 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -1240,7 +1240,7 @@ void Paragraph::Private::latexSpecialChar(otexstream & os,
 	//       non-standard font encoding. If we are using such a language,
 	//       we do not output special T1 chars.
 	if (!runparams.inIPA && !running_font.language()->internalFontEncoding()
-	    && !runparams.isFullUnicode() && bparams.main_font_encoding() == "T1"
+	    && !runparams.isFullUnicode() && runparams.main_fontenc == "T1"
 	    && latexSpecialT1(c, os, i, column))
 		return;
 	// NOTE: "fontspec" (non-TeX fonts) sets the font encoding to "TU" (untill 2017 "EU1" or "EU2")
@@ -1532,7 +1532,7 @@ void Paragraph::Private::validate(LaTeXFeatures & features) const
 		if (c == 0x0022) {
 			if (features.runparams().isFullUnicode() && bp.useNonTeXFonts)
 				features.require("textquotedblp");
-			else if (bp.main_font_encoding() != "T1"
+			else if (features.runparams().main_fontenc != "T1"
 				 || ((&owner_->getFontSettings(bp, i))->language()->internalFontEncoding()))
 				features.require("textquotedbl");
 		} else if (ci.textfeature() && contains(ci.textpreamble(), '=')) {
diff --git a/src/insets/InsetQuotes.cpp b/src/insets/InsetQuotes.cpp
index d503e8b..dc6dbba 100644
--- a/src/insets/InsetQuotes.cpp
+++ b/src/insets/InsetQuotes.cpp
@@ -639,11 +639,8 @@ InsetQuotes::InsetQuotes(Buffer * buf, char_type c, QuoteLevel level,
 	bool dynamic = false;
 	if (buf) {
 		global_style_ = buf->masterBuffer()->params().quotes_style;
-		fontenc_ = buf->masterBuffer()->params().main_font_encoding();
 		dynamic = buf->masterBuffer()->params().dynamic_quotes;
 		fontspec_ = buf->masterBuffer()->params().useNonTeXFonts;
-	} else {
-		fontenc_ = "OT1";
 	}
 	if (style.empty())
 		style_ = dynamic ? QuoteStyle::Dynamic : global_style_;
@@ -891,7 +888,7 @@ void InsetQuotes::latex(otexstream & os, OutputParams const & runparams) const
 		// Use internal commands in headings with hyperref
 		// (ligatures not featured in PDF strings)
 		qstr = quoteparams.getLaTeXQuote(quotechar, "int", rtl_);
-	} else if (fontenc_ == "T1"
+	} else if (runparams.main_fontenc == "T1"
 		   && !runparams.local_font->language()->internalFontEncoding()) {
 		// Quotation marks for T1 font encoding
 		// (using ligatures)
@@ -905,7 +902,7 @@ void InsetQuotes::latex(otexstream & os, OutputParams const & runparams) const
 #else
 	} else if ((!runparams.use_babel
 #endif
-		   || (fontenc_ != "T1" && fontenc_ != "OT1"))
+		   || (runparams.main_fontenc != "T1" && runparams.main_fontenc != "OT1"))
 		   || runparams.isFullUnicode()) {
 		// Standard quotation mark macros
 		// These are also used by babel
@@ -1008,7 +1005,6 @@ void InsetQuotes::updateBuffer(ParIterator const & it, UpdateType /* utype*/, bo
 	pass_thru_ = it.paragraph().isPassThru();
 	context_lang_ = font.language()->code();
 	internal_fontenc_ = font.language()->internalFontEncoding();
-	fontenc_ = bp.main_font_encoding();
 	global_style_ = bp.quotes_style;
 	fontspec_ = bp.useNonTeXFonts;
 	rtl_ = font.isRightToLeft();
@@ -1028,7 +1024,8 @@ void InsetQuotes::validate(LaTeXFeatures & features) const
 #else
 	if (!features.useBabel()
 #endif
-	    && !features.runparams().isFullUnicode() && fontenc_ != "T1") {
+	    && !features.runparams().isFullUnicode()
+	    && features.runparams().main_fontenc != "T1") {
 		switch (type) {
 		case 0x201a:
 			features.require("quotesinglbase");
@@ -1065,7 +1062,7 @@ void InsetQuotes::validate(LaTeXFeatures & features) const
 	case 0x0022: {
 		if (features.runparams().isFullUnicode() && fontspec_)
 			features.require("textquotedblp");
-		else if (fontenc_ != "T1" || internal_fontenc_)
+		else if (features.runparams().main_fontenc != "T1" || internal_fontenc_)
 			features.require("textquotedbl");
 		break;
 	}
diff --git a/src/insets/InsetQuotes.h b/src/insets/InsetQuotes.h
index d1f23e4..c4b525c 100644
--- a/src/insets/InsetQuotes.h
+++ b/src/insets/InsetQuotes.h
@@ -200,8 +200,6 @@ private:
 	QuoteLevel level_ = QuoteLevel::Primary;
 	///
 	QuoteStyle global_style_ = QuoteStyle::English;
-	/// Current font encoding
-	std::string fontenc_;
 	/// Code of the contextual language
 	std::string context_lang_;
 	/// Is this in a pass-thru context?

commit 61b8afd893ecdbc15924aaf8f44014b41c5623ef
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Dec 19 15:39:49 2021 +0100

    Paragraph::needsCProtection(): use inset list
    
    rather than checking each pos whether it's an inset or not.
    
    This was a significant performance bottleneck (particularly getInset()
    itself seems slow).

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 7fb46ae..2408261 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -4108,15 +4108,14 @@ bool Paragraph::needsCProtection(bool const fragile) const
 	}
 
 	// now check whether we have insets that need cprotection
-	pos_type size = pos_type(d->text_.size());
-	for (pos_type i = 0; i < size; ++i) {
-		if (!isInset(i))
+	for (auto const & icit : d->insetlist_) {
+		Inset const * ins = icit.inset;
+		if (!ins)
 			continue;
-		Inset const * ins = getInset(i);
 		if (ins->needsCProtection(maintext, fragile))
 			return true;
 		// Now check math environments
-		InsetMath const * im = getInset(i)->asInsetMath();
+		InsetMath const * im = ins->asInsetMath();
 		if (!im || im->cell(0).empty())
 			continue;
 		switch(im->cell(0)[0]->lyxCode()) {

commit a3fd3a09f1aa0b6003fc3cf033e970bb7547a983
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Fri Dec 17 11:12:54 2021 +0100

    Add UI for selecting backing store drawing strategy
    
    The checkbox is hidden when backing store is enforced (wayland,
    macOS). In practice, only X11 and Windows users will see it ; I only
    have evidence of X11 people needing it, I can hide it for Windows
    users too if necessary.
    
    Fixes bug #12119.

diff --git a/src/frontends/qt/GuiPrefs.cpp b/src/frontends/qt/GuiPrefs.cpp
index c1be9b8..75deb7c 100644
--- a/src/frontends/qt/GuiPrefs.cpp
+++ b/src/frontends/qt/GuiPrefs.cpp
@@ -1324,6 +1324,7 @@ PrefDisplay::PrefDisplay(GuiPreferences * form)
 	connect(previewSizeSB, SIGNAL(valueChanged(double)), this, SIGNAL(changed()));
 	connect(paragraphMarkerCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
 	connect(ctAdditionsUnderlinedCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+	connect(ctUseBackingstoreCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
 }
 
 
@@ -1351,6 +1352,8 @@ void PrefDisplay::applyRC(LyXRC & rc) const
 	rc.preview_scale_factor = previewSizeSB->value();
 	rc.paragraph_markers = paragraphMarkerCB->isChecked();
 	rc.ct_additions_underlined = ctAdditionsUnderlinedCB->isChecked();
+	rc.draw_strategy = ctUseBackingstoreCB->isChecked()
+		? LyXRC::DS_BACKINGSTORE : LyXRC::DS_PARTIAL;
 
 	// FIXME!! The graphics cache no longer has a changeDisplay method.
 #if 0
@@ -1380,6 +1383,8 @@ void PrefDisplay::updateRC(LyXRC const & rc)
 	previewSizeSB->setValue(rc.preview_scale_factor);
 	paragraphMarkerCB->setChecked(rc.paragraph_markers);
 	ctAdditionsUnderlinedCB->setChecked(rc.ct_additions_underlined);
+	ctUseBackingstoreCB->setChecked(rc.draw_strategy == LyXRC::DS_BACKINGSTORE);
+	ctUseBackingstoreCB->setHidden(guiApp->needsBackingStore());
 	previewSizeSB->setEnabled(
 		rc.display_graphics
 		&& rc.preview != LyXRC::PREVIEW_OFF);
diff --git a/src/frontends/qt/ui/PrefDisplayUi.ui b/src/frontends/qt/ui/PrefDisplayUi.ui
index d8a79eb..9c09b45 100644
--- a/src/frontends/qt/ui/PrefDisplayUi.ui
+++ b/src/frontends/qt/ui/PrefDisplayUi.ui
@@ -83,7 +83,7 @@
      </property>
     </spacer>
    </item>
-   <item row="4" column="0">
+   <item row="5" column="0">
     <spacer>
      <property name="orientation">
       <enum>Qt::Vertical</enum>
@@ -158,6 +158,16 @@
      </property>
     </widget>
    </item>
+   <item row="4" column="0" colspan="2">
+    <widget class="QCheckBox" name="ctUseBackingstoreCB">
+     <property name="toolTip">
+      <string>If this is checked, an intermediate surface will be used for painting. This may be needed in some cases to have proper display, but breaks subpixel aliasing.</string>
+     </property>
+     <property name="text">
+      <string>Use &backing store to display text</string>
+     </property>
+    </widget>
+   </item>
   </layout>
  </widget>
  <tabstops>

commit c213eb7f75d53165f55e64f0149fec833e5b5b5e
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Thu Dec 16 12:38:19 2021 +0100

    Add lyxrc option to force the use of backing store
    
    LyX relies on a a backing store to draw when running under macOS or
    Wayland, because Qt arbitrarily overwrites parts of the workarea
    before we paint (and we paint only the parts that need to be painted).
    However it seems that this is also necessary on X11 when the WM theme
    is translucid. Since there is no way that I know of to detect this
    situation, this patch adds a LyXRC setting to manually select this
    drawing strategy.
    
    Note that using a backing store is not always a good solution, since
    this disables subpixel aliasing.
    
    At this point there is no UI for the variable.
    
    Fixes bug #12119

diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp
index 62673f4..1316437 100644
--- a/src/LyXRC.cpp
+++ b/src/LyXRC.cpp
@@ -107,6 +107,7 @@ LexerKeyword lyxrcTags[] = {
 	{ "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN },
 	{ "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS },
 	{ "\\document_path", LyXRC::RC_DOCUMENTPATH },
+	{ "\\draw_strategy", LyXRC::RC_DRAW_STRATEGY },
 	{ "\\editor_alternatives", LyXRC::RC_EDITOR_ALTERNATIVES },
 	{ "\\escape_chars", LyXRC::RC_ESC_CHARS },
 	{ "\\example_path", LyXRC::RC_EXAMPLEPATH },
@@ -1134,6 +1135,19 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
 			}
 			break;
 
+		case RC_DRAW_STRATEGY:
+			if (lexrc.next()) {
+				string const tmp = lexrc.getString();
+				if (tmp == "partial")
+					draw_strategy = DS_PARTIAL;
+				else if (tmp == "backingstore")
+					draw_strategy = DS_BACKINGSTORE;
+				else {
+					draw_strategy = DS_PARTIAL;
+					LYXERR0("Unrecognized draw strategy " << tmp <<'"');
+				}
+			}
+			break;
 
 		case RC_LAST:
 			break; // this is just a dummy
@@ -2021,10 +2035,28 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
 		}
 		if (tag != RC_LAST)
 			break;
+		// fall through
+	case RC_DRAW_STRATEGY:
+		if (ignore_system_lyxrc ||
+			draw_strategy != system_lyxrc.draw_strategy) {
+			string status;
+			switch (draw_strategy) {
+			case DS_PARTIAL:
+				status = "partial";
+				break;
+			case DS_BACKINGSTORE:
+				status = "backingstore";
+				break;
+			}
+			os << "\\draw_strategy " << status << '\n';
+		}
+		if (tag != RC_LAST)
+			break;
+		// fall through
 
 	os << "\n#\n"
-			<< "# COLOR SECTION ###################################\n"
-			<< "#\n\n";
+		<< "# COLOR SECTION ###################################\n"
+		<< "#\n\n";
 
 	// fall through
 	case RC_SET_COLOR:
@@ -2910,6 +2942,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
 				package().document_dir() = FileName(lyxrc.document_path);
 		}
 		// fall through
+	case LyXRC::RC_DRAW_STRATEGY:
 	case LyXRC::RC_EDITOR_ALTERNATIVES:
 	case LyXRC::RC_ESC_CHARS:
 	case LyXRC::RC_EXAMPLEPATH:
diff --git a/src/LyXRC.h b/src/LyXRC.h
index 74c0e4c..6e82a6d 100644
--- a/src/LyXRC.h
+++ b/src/LyXRC.h
@@ -189,6 +189,7 @@ public:
 		RC_VIEWER_ALTERNATIVES,
 		RC_VISUAL_CURSOR,
 		RC_CLOSE_BUFFER_WITH_LAST_VIEW,
+		RC_DRAW_STRATEGY,
 		RC_LAST
 	};
 
@@ -573,6 +574,17 @@ public:
 
 	///
 	BookmarksVisibility bookmarks_visibility = BMK_NONE;
+
+	enum DrawStrategy {
+		// draw all (not implemented yet)
+		// FS_FULL,
+		// draw only what has changed
+		DS_PARTIAL,
+		// draw in backing store (only what has changed)
+		DS_BACKINGSTORE
+	};
+	///
+	DrawStrategy draw_strategy = DS_PARTIAL;
 };
 
 
diff --git a/src/frontends/qt/GuiApplication.cpp b/src/frontends/qt/GuiApplication.cpp
index 9e6f18a..5cd8f29 100644
--- a/src/frontends/qt/GuiApplication.cpp
+++ b/src/frontends/qt/GuiApplication.cpp
@@ -2710,6 +2710,18 @@ Menus & GuiApplication::menus()
 }
 
 
+bool GuiApplication::needsBackingStore() const
+{
+	/* Qt on macOS and Wayland does not respect the
+	 * Qt::WA_OpaquePaintEvent attribute and resets the widget backing
+	 * store at each update. Therefore, we use our own backing store
+	 * in these two cases. It is also possible to force the use of the
+	 * backing store for cases like x11 with transparent WM themes.
+	 */
+	return platformName() == "cocoa" || platformName().contains("wayland");
+}
+
+
 QList<int> GuiApplication::viewIds() const
 {
 	return d->views_.keys();
diff --git a/src/frontends/qt/GuiApplication.h b/src/frontends/qt/GuiApplication.h
index 8afdd7f..f0c3e1e 100644
--- a/src/frontends/qt/GuiApplication.h
+++ b/src/frontends/qt/GuiApplication.h
@@ -110,6 +110,9 @@ public:
 	///
 	Menus & menus();
 
+	/// \returns true if painting the workarea requires a backing store.
+	bool needsBackingStore() const;
+
 	/// \name Methods inherited from QApplication class
 	//@{
 	bool notify(QObject * receiver, QEvent * event) override;
diff --git a/src/frontends/qt/GuiWorkArea.cpp b/src/frontends/qt/GuiWorkArea.cpp
index 1d6cd07..e70563b 100644
--- a/src/frontends/qt/GuiWorkArea.cpp
+++ b/src/frontends/qt/GuiWorkArea.cpp
@@ -132,13 +132,10 @@ SyntheticMouseEvent::SyntheticMouseEvent()
 GuiWorkArea::Private::Private(GuiWorkArea * parent)
 	: p(parent), completer_(new GuiCompleter(p, p))
 {
-	/* Qt on macOS and Wayland does not respect the
-	 * Qt::WA_OpaquePaintEvent attribute and resets the widget backing
-	 * store at each update. Therefore, we use our own backing store
-	 * in these two cases.
-	 */
-	use_backingstore_ = guiApp->platformName() == "cocoa"
-		|| guiApp->platformName().contains("wayland");
+	use_backingstore_ = lyxrc.draw_strategy == LyXRC::DS_BACKINGSTORE
+		|| guiApp->needsBackingStore();
+	LYXERR(Debug::WORKAREA, "Drawing strategy is: "
+	                        << (use_backingstore_ ? "backingstore" : "partial"));
 
 	int const time = QApplication::cursorFlashTime() / 2;
 	if (time > 0) {

commit 056ab33f4892d522a154273324dafda08f674bfd
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Wed Dec 15 20:48:20 2021 -0500

    Amend bea7ef04e (find's auto-wrap by default)
    
    The default in the .ui is not considered in
    GuiSearchWidget::restoreSession(), which sets a hard-coded default
    if the stored setting is not found in the session file.
    
    I'll start an ML discussion for whether the code in restoreSession()
    should use the ui's default if the setting is not found in the
    session.

diff --git a/src/frontends/qt/GuiSearch.cpp b/src/frontends/qt/GuiSearch.cpp
index b071d61..e387ce8 100644
--- a/src/frontends/qt/GuiSearch.cpp
+++ b/src/frontends/qt/GuiSearch.cpp
@@ -555,8 +555,8 @@ void GuiSearchWidget::restoreSession(QString const & session_key)
 	act_wholewords_->setChecked(settings.value(session_key + "/words", false).toBool());
 	instantSearchCB->setChecked(settings.value(session_key + "/instant", false).toBool());
 	act_immediate_->setChecked(settings.value(session_key + "/instant", false).toBool());
-	wrapCB->setChecked(settings.value(session_key + "/wrap", false).toBool());
-	act_wrap_->setChecked(settings.value(session_key + "/wrap", false).toBool());
+	wrapCB->setChecked(settings.value(session_key + "/wrap", true).toBool());
+	act_wrap_->setChecked(settings.value(session_key + "/wrap", true).toBool());
 	selectionCB->setChecked(settings.value(session_key + "/selection", false).toBool());
 	act_selection_->setChecked(settings.value(session_key + "/selection", false).toBool());
 	minimized_ = settings.value(session_key + "/minimized", false).toBool();

commit 62ad205dbf99cb0384f864fe6e3f4ebe52de3257
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Wed Dec 15 11:19:18 2021 +0100

    Avoid duplication of words on screen
    
    When giving up splitting a word sequence because it is not enough to
    make the row short enough, make sure to clean up properly.

diff --git a/src/Row.cpp b/src/Row.cpp
index db52b05..6d6d319 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -585,6 +585,7 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 			 */
 			if (wid_brk + cit_brk->dim.wid < w
 			    && dim_.wid - (wid_brk + brk.dim.wid) >= next_width) {
+				tail.clear();
 				break;
 			}
 			end_ = brk.endpos;

commit cb4715d7395ac9b3343862a0a0017e44367768b1
Author: Stephan Witt <switt at lyx.org>
Date:   Sun Dec 12 22:24:23 2021 +0100

    Improved Qt framework configuration detection on macOS, add QtCore5Compat headers to configure based includes

diff --git a/config/qt.m4 b/config/qt.m4
index b9ffe28..05fa9ce 100644
--- a/config/qt.m4
+++ b/config/qt.m4
@@ -44,7 +44,7 @@ AC_DEFUN([QT_CHECK_COMPILE],
 		qt_cv_libname=
 		for libname in $qt_guilibs \
 		               '-framework QtCore -framework QtConcurrent -framework QtSvg -framework QtWidgets -framework QtMacExtras -framework QtGui'\
-		               '-framework QtCore -framework QtConcurrent -framework QtSvg -framework QtSvgWidgets -framework QtWidgets -framework QtGui'\
+		               '-framework QtCore -framework QtConcurrent -framework QtCore5Compat -framework QtSvg -framework QtSvgWidgets -framework QtWidgets -framework QtGui'\
 		               '-framework QtCore -framework QtGui'
 		do
 			QT_TRY_LINK($libname)

commit 4665baac4625326d64ba46200968de44b1f2bb09
Author: Stephan Witt <switt at lyx.org>
Date:   Thu Dec 9 21:58:14 2021 +0100

    Fix an overloaded-virtual warning for type mismatch of event parameter (Qt6)

diff --git a/src/frontends/qt/IconPalette.cpp b/src/frontends/qt/IconPalette.cpp
index 33ceb29..45d774b 100644
--- a/src/frontends/qt/IconPalette.cpp
+++ b/src/frontends/qt/IconPalette.cpp
@@ -54,7 +54,11 @@ void TearOff::mouseReleaseEvent(QMouseEvent * /*event*/)
 }
 
 
+#if QT_VERSION < 0x060000
 void TearOff::enterEvent(QEvent * event)
+#else
+void TearOff::enterEvent(QEnterEvent * event)
+#endif
 {
 	highlighted_ = true;
 	update();
diff --git a/src/frontends/qt/IconPalette.h b/src/frontends/qt/IconPalette.h
index 50c68a3..e9f8101 100644
--- a/src/frontends/qt/IconPalette.h
+++ b/src/frontends/qt/IconPalette.h
@@ -30,7 +30,7 @@ public:
 #if QT_VERSION < 0x060000
 	void enterEvent(QEvent *) override;
 #else
-	void enterEvent(QEvent *);
+	void enterEvent(QEnterEvent *) override;
 #endif
 	void leaveEvent(QEvent *) override;
 	void mouseReleaseEvent (QMouseEvent *) override;

commit 80a901506bfaa91e3479bc562beb18a4e4dd6f3a
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Thu Dec 9 15:16:07 2021 -0500

    languages test file: Use new Tibetan font name
    
    Noto Sans Tibetan was not actually a sans font. On newer systems the
    font is now Noto Serif Tibetan.
    
    See, e.g., the package 'fonts-noto-core' in Ubuntu 21.04.
    
    This change also fixes compilation of
    supported-languages_polyglossia-XeTeX.lyx on Ubuntu 21.10.

diff --git a/autotests/export/latex/languages/supported-languages_polyglossia-XeTeX.lyx b/autotests/export/latex/languages/supported-languages_polyglossia-XeTeX.lyx
index 53e07ad..4d96ef0 100644
--- a/autotests/export/latex/languages/supported-languages_polyglossia-XeTeX.lyx
+++ b/autotests/export/latex/languages/supported-languages_polyglossia-XeTeX.lyx
@@ -22,7 +22,7 @@
 \newfontfamily\telugufont{Noto Serif Telugu}
 \newfontfamily\thaanafont{FreeSerif} % prevent "missing script tag" error
 %\newfontfamily\thaanafont{Noto Sans Thaana} % works, too
-\newfontfamily\tibetanfont{Noto Sans Tibetan}  % wrong family
+\newfontfamily\tibetanfont{Noto Serif Tibetan}
 
 % Font setup for Japanese (not supported by Polyglossia)
 \usepackage{ifxetex}
diff --git a/autotests/export/latex/languages/supported-languages_polyglossia.lyx b/autotests/export/latex/languages/supported-languages_polyglossia.lyx
index aa1e50f..40d2a88 100644
--- a/autotests/export/latex/languages/supported-languages_polyglossia.lyx
+++ b/autotests/export/latex/languages/supported-languages_polyglossia.lyx
@@ -23,7 +23,7 @@
 \newfontfamily\telugufont{Noto Serif Telugu}
 \newfontfamily\thaanafont{FreeSerif}  % missing script tag in FreeSerif
 %\newfontfamily\thaanafont{Noto Sans Thaana} % works, too
-\newfontfamily\tibetanfont{Noto Sans Tibetan}
+\newfontfamily\tibetanfont{Noto Serif Tibetan}
 
 % Font setup for Japanese (not supported by Polyglossia)
 \usepackage{ifxetex}

commit dcef1a9cad5173158e1aeef96bd4e57ad20a64ca
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Thu Dec 9 16:43:16 2021 +0100

    Fix endless loop when breaking text
    
    For some reason, Qt can break strings before the first character
    (although we try to prevent that). The code was not prepared to that,
    now it is.
    
    Remove a forgotten debug statement.

diff --git a/src/Row.cpp b/src/Row.cpp
index 4b9836e..db52b05 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -162,6 +162,12 @@ bool Row::Element::splitAt(int const width, int next_width, bool force,
 	bool first = true;
 	docstring::size_type i = 0;
 	for (FontMetrics::Break const & brk : breaks) {
+		/* For some reason breakString can decide to break before the
+		 * first character (normally we use a 0-width nbsp to prevent
+		 * that). Skip leading empty elements, they are never wanted.
+		 */
+		if (first && brk.len == 0 && breaks.size() > 1)
+			continue;
 		Element e(STRING, pos + i, font, change);
 		e.str = str.substr(i, brk.len);
 		e.endpos = e.pos + brk.len;
@@ -612,7 +618,6 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 	 * splitting this time.
 	 */
 	if (cit->splitAt(w - wid, next_width, true, tail)) {
-		LYXERR0(*cit);
 		end_ = cit->endpos;
 		dim_.wid = wid + cit->dim.wid;
 		// If there are other elements, they should be removed.

commit b461d07b5b4a5711a30924f5cd93f976f2711a6d
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Wed Dec 8 23:03:43 2021 -0500

    ctests: log a fixed issue (fr Linguistics.lyx)

diff --git a/development/autotests/ctests-costs-benefits.txt b/development/autotests/ctests-costs-benefits.txt
index d8b6ab6..18495ce 100644
--- a/development/autotests/ctests-costs-benefits.txt
+++ b/development/autotests/ctests-costs-benefits.txt
@@ -71,3 +71,6 @@ Report : (private message to Jürgen: Message-ID:<20211205192054.zbxij5butj3wdyv
 Fix    : some of the polyglossia commits in the range 1c36dcdc^...bf69288c
 Benefit: Not clear. The regressions were in the development version so they
          could have easily been caught before release.
+
+Report : https://www.mail-archive.com/search?l=mid&q=20211207200100.o27ojaftehrjfcza%40poole
+Fix    : 2eaf30c5

commit 2eaf30c57ec611008267a66066e632c780dd50e3
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Dec 8 09:49:23 2021 +0100

    fr/Linguistics.lyx: fixes
    
    * Fix up markup in and localize examples
    * Remove local layout from lyx2lyx conversion

diff --git a/lib/examples/fr/Modules/Linguistics.lyx b/lib/examples/fr/Modules/Linguistics.lyx
index 72f8657..5b646fa 100644
--- a/lib/examples/fr/Modules/Linguistics.lyx
+++ b/lib/examples/fr/Modules/Linguistics.lyx
@@ -36,76 +36,6 @@
 linguistics
 \end_modules
 \maintain_unincluded_children no
-\begin_local_layout
-### Inserted by lyx2lyx (deprecated ling glosses) ###
-InsetLayout Flex:Tri-Glosse
-  LyXType               custom
-  LabelString           "Tri-Gloss (old version)"
-  MenuString            "Tri-Gloss (old version)"
-  LatexType             environment
-  LatexName             lingglosss
-  Decoration            minimalistic
-  LabelFont
-    Size                Small
-  EndFont
-  MultiPar              true
-  CustomPars            false
-  ForcePlain            true
-  ParbreakIsNewline     true
-  FreeSpacing           true
-  InToc                 true
-  Requires              covington
-  Preamble
-          \def\glosstr{}
-          \@ifundefined{lingglosss}{%
-          \newenvironment{lingglosss}[2][]{
-              \def\glosstr{\glt #1}%
-              \glll #2}
-          {\glosstr\glend}}{}
-  EndPreamble
-  ResetsFont            true
-  Argument 1
-          Decoration    conglomerate
-          LabelString   "Translation"
-          MenuString    "Glosse Translation|s"
-          Tooltip       "Add a translation for the glosse"
-  EndArgument
-End
-### Inserted by lyx2lyx (deprecated ling glosses) ###
-InsetLayout Flex:Glosse
-  LyXType               custom
-  LabelString           "Gloss (old version)"
-  MenuString            "Gloss (old version)"
-  LatexType             environment
-  LatexName             linggloss
-  Decoration            minimalistic
-  LabelFont
-    Size                Small
-  EndFont
-  MultiPar              true
-  CustomPars            false
-  ForcePlain            true
-  ParbreakIsNewline     true
-  FreeSpacing           true
-  Requires              covington
-  Preamble
-          \def\glosstr{}
-          \@ifundefined{linggloss}{%
-          \newenvironment{linggloss}[2][]{
-             \def\glosstr{\glt #1}%
-             \gll #2}
-          {\glosstr\glend}}{}
-  EndPreamble
-  InToc                 true
-  ResetsFont            true
-  Argument 1
-          Decoration    conglomerate
-          LabelString   "Translation"
-          MenuString    "Glosse Translation|s"
-          Tooltip       "Add a translation for the glosse"
-  EndArgument
-End
-\end_local_layout
 \language french
 \language_package default
 \inputencoding utf8
@@ -129,6 +59,8 @@ End
 \output_sync 0
 \bibtex_command default
 \index_command default
+\float_placement class
+\float_alignment class
 \paperfontsize default
 \spacing single
 \use_hyperref true
@@ -771,7 +703,7 @@ Voici un exemple simple pour une glose sur deux lignes:
 status open
 
 \begin_layout Plain Layout
-C'est    un exemple simple
+This is a simple example
 \end_layout
 
 \begin_layout Plain Layout
@@ -779,7 +711,7 @@ C'est    un exemple simple
 status open
 
 \begin_layout Plain Layout
-This is an example simple
+Ceci est un exemple simple
 \end_layout
 
 \end_inset
@@ -792,7 +724,7 @@ This is an example simple
 status open
 
 \begin_layout Plain Layout
-This is a simple example
+Ceci est un exemple simple
 \end_layout
 
 \end_inset
@@ -834,26 +766,18 @@ Nous pouvons aussi créer une glose de trois lignes:
 \end_layout
 
 \begin_layout Standard
-
-\lang english
 \begin_inset Flex Interlinear Gloss (3 Lines)
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 Hoc est aliud exemplum
 \end_layout
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset Argument post:1
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 n.sg.nom 3sg n.sg.nom n.sg.nom
 \end_layout
 
@@ -863,15 +787,11 @@ n.sg.nom 3sg n.sg.nom n.sg.nom
 \end_layout
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset Argument post:2
 status open
 
 \begin_layout Plain Layout
-
-\lang english
-This is another  example
+Ceci est autre exemple
 \end_layout
 
 \end_inset
@@ -880,15 +800,11 @@ This is another  example
 \end_layout
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset Argument post:3
 status open
 
 \begin_layout Plain Layout
-
-\lang english
-This is another example
+Voici un autre exemple
 \end_layout
 
 \end_inset
@@ -898,8 +814,6 @@ This is another example
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset ERT
 status open
 
@@ -948,27 +862,29 @@ exemple numéroté
 \end_layout
 
 \begin_layout Numbered Examples (consecutive)
-
-\lang english
 \begin_inset Flex Interlinear Gloss (3 Lines)
 status open
 
 \begin_layout Plain Layout
-
-\lang english
-Mein Luftkissenfahrzeug ist voller  Aale
+Mein Luftkissenfahrzeug ist voller      Aale
 \end_layout
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset Argument post:1
 status open
 
 \begin_layout Plain Layout
+Mon aéroglisseur             est 
+\begin_inset Flex GroupGlossedWords
+status open
+
+\begin_layout Plain Layout
+plein d'
+\end_layout
 
-\lang english
-My    skeertuig                   is  vol       palings
+\end_inset
+
+ anguilles
 \end_layout
 
 \end_inset
@@ -977,21 +893,15 @@ My    skeertuig                   is  vol       palings
 \end_layout
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset Argument post:2
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 My    hovercraft                 is 
 \begin_inset Flex GroupGlossedWords
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 full of
 \end_layout
 
@@ -1006,15 +916,11 @@ full of
 \end_layout
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset Argument post:3
 status open
 
 \begin_layout Plain Layout
-
-\lang english
-Do you have matches?
+Vous avez des allumettes?
 \end_layout
 
 \end_inset
@@ -1036,20 +942,14 @@ soit vous utilisez l'option de glose
 \end_layout
 
 \begin_layout Standard
-
-\lang english
 \begin_inset Flex Interlinear Gloss (3 Lines)
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset Argument 1
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 ex
 \end_layout
 
@@ -1059,21 +959,15 @@ ex
 \end_layout
 
 \begin_layout Plain Layout
-
-\lang english
 Mein Luftkissenfahrzeug ist voller  Aale
 \end_layout
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset Argument post:1
 status open
 
 \begin_layout Plain Layout
-
-\lang english
-My    skeertuig                   is  vol       palings
+Mon aéroglisseur             est plein d'anguilles
 \end_layout
 
 \end_inset
@@ -1082,21 +976,15 @@ My    skeertuig                   is  vol       palings
 \end_layout
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset Argument post:2
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 My    hovercraft                 is 
 \begin_inset Flex GroupGlossedWords
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 full of
 \end_layout
 
@@ -1111,15 +999,11 @@ full of
 \end_layout
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset Argument post:3
 status open
 
 \begin_layout Plain Layout
-
-\lang english
-Do you have matches?
+Vous avez des allumettes?
 \end_layout
 
 \end_inset
@@ -2018,8 +1902,6 @@ status open
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 x
 \end_layout
 
@@ -2029,11 +1911,11 @@ x
 \end_layout
 
 \begin_layout Plain Layout
-donkey(x)
+âne(x)
 \begin_inset Newline newline
 \end_inset
 
-green(x)
+vert(x)
 \begin_inset Newline newline
 \end_inset
 
@@ -2109,8 +1991,6 @@ status open
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 x
 \begin_inset space ~
 \end_inset
@@ -2124,15 +2004,15 @@ y
 \end_layout
 
 \begin_layout Plain Layout
-John(x)
+Jean(x)
 \begin_inset Newline newline
 \end_inset
 
-donkey(y)
+âne(y)
 \begin_inset Newline newline
 \end_inset
 
-own(x,y)
+posséder(x,y)
 \end_layout
 
 \begin_layout Plain Layout
@@ -2140,8 +2020,6 @@ own(x,y)
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 z
 \begin_inset space ~
 \end_inset
@@ -2167,7 +2045,7 @@ w = y
 \begin_inset Newline newline
 \end_inset
 
-feed(z,w)
+alimenter(z,w)
 \end_layout
 
 \end_inset
@@ -2202,8 +2080,6 @@ status open
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 x
 \begin_inset space ~
 \end_inset
@@ -2217,15 +2093,15 @@ y
 \end_layout
 
 \begin_layout Plain Layout
-John(x)
+Jean(x)
 \begin_inset Newline newline
 \end_inset
 
-donkey(y)
+âne(y)
 \begin_inset Newline newline
 \end_inset
 
-own(x,y)
+posséder(x,y)
 \end_layout
 
 \begin_layout Plain Layout
@@ -2233,8 +2109,6 @@ own(x,y)
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 \begin_inset Formula $\wedge\!\,$
 \end_inset
 
@@ -2251,8 +2125,6 @@ status open
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 z
 \begin_inset space ~
 \end_inset
@@ -2278,7 +2150,7 @@ w = y
 \begin_inset Newline newline
 \end_inset
 
-love(w,z)
+aimer(w,z)
 \end_layout
 
 \end_inset
@@ -2310,8 +2182,6 @@ status open
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 x
 \end_layout
 
@@ -2333,9 +2203,7 @@ x
 status open
 
 \begin_layout Plain Layout
-
-\lang english
-every
+tout
 \end_layout
 
 \end_inset
@@ -2348,8 +2216,6 @@ every
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 x
 \end_layout
 
@@ -2363,8 +2229,6 @@ x
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 y
 \end_layout
 
@@ -2378,11 +2242,11 @@ y
 status open
 
 \begin_layout Plain Layout
-secretary(y)
+secrétaire(y)
 \begin_inset Newline newline
 \end_inset
 
-hire(x,y)
+louer(x,y)
 \end_layout
 
 \end_inset
@@ -2414,8 +2278,6 @@ status open
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 x
 \end_layout
 
@@ -2425,11 +2287,11 @@ x
 \end_layout
 
 \begin_layout Plain Layout
-donkey(x)
+âne(x)
 \begin_inset Newline newline
 \end_inset
 
-green(x)
+vert(x)
 \end_layout
 
 \end_inset
@@ -2456,9 +2318,7 @@ status open
 status open
 
 \begin_layout Plain Layout
-
-\lang english
-A donkey is green
+Un âne est vert
 \end_layout
 
 \end_inset
@@ -2471,8 +2331,6 @@ A donkey is green
 status open
 
 \begin_layout Plain Layout
-
-\lang english
 x
 \end_layout
 
@@ -2482,11 +2340,11 @@ x
 \end_layout
 
 \begin_layout Plain Layout
-donkey(x)
+âne(x)
 \begin_inset Newline newline
 \end_inset
 
-green(x)
+vert(x)
 \end_layout
 
 \end_inset

commit 7513d88350867812de3505bcffb9d2f826e52937
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Wed Dec 8 02:11:48 2021 +0100

    MathML: remove redundant mrow in InsetMathScript.
    
    https://www.lyx.org/trac/attachment/ticket/12221/0006-amends-to-a579128c-a68e9793-a68e9793.patch by lynx

diff --git a/src/mathed/InsetMathScript.cpp b/src/mathed/InsetMathScript.cpp
index a5f286b..73e1ef9 100644
--- a/src/mathed/InsetMathScript.cpp
+++ b/src/mathed/InsetMathScript.cpp
@@ -624,12 +624,15 @@ void InsetMathScript::mathmlize(MathMLStream & ms) const
 	if (!nuc().empty())
 		ms << nuc();
 	else
+		// TODO: is this empty <mrow> required?
 		ms << CTag("mrow");
 
+	// No need to wrap these in an <mrow>, as it's done by MathExtern.
+	// More details in https://www.lyx.org/trac/ticket/12221#comment:10.
 	if (d)
-		ms << MTag("mrow") << down() << ETag("mrow");
+		ms << down();
 	if (u)
-		ms << MTag("mrow") << up() << ETag("mrow");
+		ms << up();
 
 	ms << ETag(tag);
 }

commit d1daa092f6f82ff040109df583f7f55a862e6e4c
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Wed Dec 8 02:02:39 2021 +0100

    MathML: share some code for XArrow.

diff --git a/src/mathed/InsetMathXArrow.cpp b/src/mathed/InsetMathXArrow.cpp
index cd97b7c..c150a44 100644
--- a/src/mathed/InsetMathXArrow.cpp
+++ b/src/mathed/InsetMathXArrow.cpp
@@ -122,30 +122,26 @@ static std::map<string, string> latex_to_xml_entities = {
 };
 
 
-void InsetMathXArrow::mathmlize(MathMLStream & ms) const
+docstring map_latex_to(docstring latex, bool xml = false)
 {
-	std::string arrow;
-
-	if (!ms.xmlMode()) { // Use HTML entities.
-		auto mapping = latex_to_html_entities.find(to_ascii(name_));
-		if (mapping != latex_to_html_entities.end()) {
-			arrow = mapping->second;
-		} else {
-			lyxerr << "mathmlize conversion for '" << name_ << "' not implemented" << endl;
-			LASSERT(false, arrow = latex_to_html_entities["xrightarrow"]);
-		}
-	} else { // Use XML entities.
-		auto mapping = latex_to_xml_entities.find(to_ascii(name_));
-		if (mapping != latex_to_xml_entities.end()) {
-			arrow = mapping->second;
-		} else {
-			lyxerr << "mathmlize XML conversion for '" << name_ << "' not implemented" << endl;
-			LASSERT(false, arrow = latex_to_xml_entities["xrightarrow"]);
-		}
+	auto dict = (xml) ? latex_to_xml_entities : latex_to_html_entities;
+
+	auto mapping = dict.find(to_ascii(latex));
+	if (mapping != dict.end()) {
+		return from_ascii(mapping->second);
+	} else {
+		std::string format = (xml) ? "XML" : "HTML";
+		lyxerr << "mathmlize " << format << " conversion for '" << latex << "' not implemented" << endl;
+		LASSERT(false, return from_ascii(dict["xrightarrow"]));
 	}
+}
+
 
+void InsetMathXArrow::mathmlize(MathMLStream & ms) const
+{
+	docstring arrow = map_latex_to(name_, ms.xmlMode());
 	ms << "<" << from_ascii(ms.namespacedTag("munderover")) << " accent='false' accentunder='false'>"
-	   << MTagInline("mo") << from_ascii(arrow) << ETagInline("mo")
+	   << MTagInline("mo") << arrow << ETagInline("mo")
 	   << cell(1) << cell(0)
 	   << "</" << from_ascii(ms.namespacedTag("munderover"))<< ">";
 }
@@ -153,20 +149,11 @@ void InsetMathXArrow::mathmlize(MathMLStream & ms) const
 
 void InsetMathXArrow::htmlize(HtmlStream & os) const
 {
-	string arrow;
-
-	auto mapping = latex_to_html_entities.find(to_ascii(name_));
-	if (mapping != latex_to_html_entities.end()) {
-		arrow = mapping->second;
-	} else {
-		lyxerr << "htmlize conversion for '" << name_ << "' not implemented" << endl;
-		LASSERT(false, arrow = latex_to_html_entities["xrightarrow"]);
-	}
-
+	docstring arrow = map_latex_to(name_);
 	os << MTag("span", "class='xarrow'")
-		 << MTag("span", "class='xatop'") << cell(0) << ETag("span")
-		 << MTag("span", "class='xabottom'") << from_ascii(arrow) << ETag("span")
-		 << ETag("span");
+	   << MTag("span", "class='xatop'") << cell(0) << ETag("span")
+	   << MTag("span", "class='xabottom'") << arrow << ETag("span")
+	   << ETag("span");
 }
 
 
@@ -176,6 +163,7 @@ void InsetMathXArrow::validate(LaTeXFeatures & features) const
 		features.require("amsmath");
 	else
 		features.require("mathtools");
+
 	if (features.runparams().math_flavor == OutputParams::MathAsHTML)
 		// CSS adapted from eLyXer
 		features.addCSSSnippet(

commit e5eef14414c97908fc88f3cb4d03bb47499c1322
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Wed Dec 8 01:53:56 2021 +0100

    MathML: refactor the XArrow mappings as maps.

diff --git a/src/mathed/InsetMathXArrow.cpp b/src/mathed/InsetMathXArrow.cpp
index dceb794..cd97b7c 100644
--- a/src/mathed/InsetMathXArrow.cpp
+++ b/src/mathed/InsetMathXArrow.cpp
@@ -84,84 +84,68 @@ void InsetMathXArrow::normalize(NormalStream & os) const
 }
 
 
+static std::map<string, string> latex_to_html_entities = {
+		{"xleftarrow", "←"},
+		{"xrightarrow", "→"},
+		{"xhookleftarrow", "↩"},
+		{"xhookrightarrow", "↪"},
+		{"xLeftarrow", "⇐"},
+		{"xRightarrow", "⇒"},
+		{"xleftrightarrow", "↔"},
+		{"xLeftrightarrow", "⇔"},
+		{"xleftharpoondown", "↽"},
+		{"xleftharpoonup", "↼"},
+		{"xleftrightharpoons", "⇋"},
+		{"xrightharpoondown", "⇁"},
+		{"xrightharpoonup", "⇀"},
+		{"xrightleftharpoons", "⇌"},
+		{"xmapsto", "↦"},
+};
+
+
+static std::map<string, string> latex_to_xml_entities = {
+		{"xleftarrow", "&#x2190;"},
+		{"xrightarrow", "&#x2192;"},
+		{"xhookleftarrow", "&#x21a9;"},
+		{"xhookrightarrow", "&#x21aa;"},
+		{"xLeftarrow", "&#x21d0;"},
+		{"xRightarrow", "&#x21d2;"},
+		{"xleftrightarrow", "&#x2194;"},
+		{"xLeftrightarrow", "&#x21d4;"},
+		{"xleftharpoondown", "&#x21bd;"},
+		{"xleftharpoonup", "&#x21bc;"},
+		{"xleftrightharpoons", "&#x21cb;"},
+		{"xrightharpoondown", "&#x21c1;"},
+		{"xrightharpoonup", "&#x21c0;"},
+		{"xrightleftharpoons", "&#x21cc;"},
+		{"xmapsto", "&#x21a6;"},
+};
+
+
 void InsetMathXArrow::mathmlize(MathMLStream & ms) const
 {
-	char const * arrow;
+	std::string arrow;
 
 	if (!ms.xmlMode()) { // Use HTML entities.
-		if (name_ == "xleftarrow")
-			arrow = "←";
-		else if (name_ == "xrightarrow")
-			arrow = "→";
-		else if (name_ == "xhookleftarrow")
-			arrow = "↩";
-		else if (name_ == "xhookrightarrow")
-			arrow = "↪";
-		else if (name_ == "xLeftarrow")
-			arrow = "⇐";
-		else if (name_ == "xRightarrow")
-			arrow = "⇒";
-		else if (name_ == "xleftrightarrow")
-			arrow = "↔";
-		else if (name_ == "xLeftrightarrow")
-			arrow = "⇔";
-		else if (name_ == "xleftharpoondown")
-			arrow = "↽";
-		else if (name_ == "xleftharpoonup")
-			arrow = "↼";
-		else if (name_ == "xleftrightharpoons")
-			arrow = "⇋";
-		else if (name_ == "xrightharpoondown")
-			arrow = "⇁";
-		else if (name_ == "xrightharpoonup")
-			arrow = "⇀";
-		else if (name_ == "xrightleftharpoons")
-			arrow = "⇌";
-		else if (name_ == "xmapsto")
-			arrow = "↦";
-		else {
+		auto mapping = latex_to_html_entities.find(to_ascii(name_));
+		if (mapping != latex_to_html_entities.end()) {
+			arrow = mapping->second;
+		} else {
 			lyxerr << "mathmlize conversion for '" << name_ << "' not implemented" << endl;
-			LASSERT(false, arrow = "→");
+			LASSERT(false, arrow = latex_to_html_entities["xrightarrow"]);
 		}
 	} else { // Use XML entities.
-		if (name_ == "xleftarrow")
-			arrow = "&#x2190;";
-		else if (name_ == "xrightarrow")
-			arrow = "&#x2192;";
-		else if (name_ == "xhookleftarrow")
-			arrow = "&#x21a9;";
-		else if (name_ == "xhookrightarrow")
-			arrow = "&#x21aa;";
-		else if (name_ == "xLeftarrow")
-			arrow = "&#x21d0;";
-		else if (name_ == "xRightarrow")
-			arrow = "&#x21d2;";
-		else if (name_ == "xleftrightarrow")
-			arrow = "&#x2194;";
-		else if (name_ == "xLeftrightarrow")
-			arrow = "&#x21d4;";
-		else if (name_ == "xleftharpoondown")
-			arrow = "&#x21bd;";
-		else if (name_ == "xleftharpoonup")
-			arrow = "&#x21bc;";
-		else if (name_ == "xleftrightharpoons")
-			arrow = "&#x21cb;";
-		else if (name_ == "xrightharpoondown")
-			arrow = "&#x21c1;";
-		else if (name_ == "xrightharpoonup")
-			arrow = "&#x21c0;";
-		else if (name_ == "xrightleftharpoons")
-			arrow = "&#x21cc;";
-		else if (name_ == "xmapsto")
-			arrow = "&#x21a6;";
-		else {
+		auto mapping = latex_to_xml_entities.find(to_ascii(name_));
+		if (mapping != latex_to_xml_entities.end()) {
+			arrow = mapping->second;
+		} else {
 			lyxerr << "mathmlize XML conversion for '" << name_ << "' not implemented" << endl;
-			LASSERT(false, arrow = "&#x2192;");
+			LASSERT(false, arrow = latex_to_xml_entities["xrightarrow"]);
 		}
 	}
 
 	ms << "<" << from_ascii(ms.namespacedTag("munderover")) << " accent='false' accentunder='false'>"
-	   << MTagInline("mo") << arrow << ETagInline("mo")
+	   << MTagInline("mo") << from_ascii(arrow) << ETagInline("mo")
 	   << cell(1) << cell(0)
 	   << "</" << from_ascii(ms.namespacedTag("munderover"))<< ">";
 }
@@ -169,45 +153,19 @@ void InsetMathXArrow::mathmlize(MathMLStream & ms) const
 
 void InsetMathXArrow::htmlize(HtmlStream & os) const
 {
-	char const * arrow;
-
-	if (name_ == "xleftarrow")
-		arrow = "←";
-	else if (name_ == "xrightarrow")
-		arrow = "→";
-	else if (name_ == "xhookleftarrow")
-		arrow = "↩";
-	else if (name_ == "xhookrightarrow")
-		arrow = "↪";
-	else if (name_ == "xLeftarrow")
-		arrow = "⇐";
-	else if (name_ == "xRightarrow")
-		arrow = "⇒";
-	else if (name_ == "xleftrightarrow")
-		arrow = "↔";
-	else if (name_ == "xLeftrightarrow")
-		arrow = "⇔";
-	else if (name_ == "xleftharpoondown")
-		arrow = "↽";
-	else if (name_ == "xleftharpoonup")
-		arrow = "↼";
-	else if (name_ == "xleftrightharpoons")
-		arrow = "⇋";
-	else if (name_ == "xrightharpoondown")
-		arrow = "⇁";
-	else if (name_ == "xrightharpoonup")
-		arrow = "⇀";
-	else if (name_ == "xrightleftharpoons")
-		arrow = "⇌";
-	else if (name_ == "xmapsto")
-		arrow = "↦";
-	else {
+	string arrow;
+
+	auto mapping = latex_to_html_entities.find(to_ascii(name_));
+	if (mapping != latex_to_html_entities.end()) {
+		arrow = mapping->second;
+	} else {
 		lyxerr << "htmlize conversion for '" << name_ << "' not implemented" << endl;
-		LASSERT(false, arrow = "→");
+		LASSERT(false, arrow = latex_to_html_entities["xrightarrow"]);
 	}
+
 	os << MTag("span", "class='xarrow'")
 		 << MTag("span", "class='xatop'") << cell(0) << ETag("span")
-		 << MTag("span", "class='xabottom'") << arrow << ETag("span")
+		 << MTag("span", "class='xabottom'") << from_ascii(arrow) << ETag("span")
 		 << ETag("span");
 }
 

commit f0bf41f5746dd6edd1815b52cf7be72fee1b1d8e
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Wed Dec 8 01:36:24 2021 +0100

    MathML: allow XArrow to stretch.
    
    Based on https://www.lyx.org/trac/ticket/12221#comment:10
    by lynx

diff --git a/src/mathed/InsetMathXArrow.cpp b/src/mathed/InsetMathXArrow.cpp
index a9ed6b0..dceb794 100644
--- a/src/mathed/InsetMathXArrow.cpp
+++ b/src/mathed/InsetMathXArrow.cpp
@@ -161,7 +161,8 @@ void InsetMathXArrow::mathmlize(MathMLStream & ms) const
 	}
 
 	ms << "<" << from_ascii(ms.namespacedTag("munderover")) << " accent='false' accentunder='false'>"
-	   << arrow << cell(1) << cell(0)
+	   << MTagInline("mo") << arrow << ETagInline("mo")
+	   << cell(1) << cell(0)
 	   << "</" << from_ascii(ms.namespacedTag("munderover"))<< ">";
 }
 

commit 68ff3436c99b133da0e90bf10b13ca819558f78e
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Mon Dec 6 22:35:26 2021 +0100

    symbols: update HTML entities and Unicode encodings for Greek letter variations.

diff --git a/lib/symbols b/lib/symbols
index af85929..8086d51 100644
--- a/lib/symbols
+++ b/lib/symbols
@@ -252,7 +252,7 @@ alpha              cmm         174  97 mathord    α       &#x3B1;
 beta               cmm         175  98 mathord    β        &#x3B2;
 gamma              cmm         176 103 mathord    γ       &#x3B3;
 delta              cmm         177 100 mathord    δ       &#x3B4;
-epsilon            cmm         178   0 mathord    ε        &#x3B5;
+epsilon            cmm         178   0 mathord    ε        &#x3F5;
 zeta               cmm         179 122 mathord    ζ        &#x3B6;
 eta                cmm         180 104 mathord    η         &#x3B7;
 theta              cmm         181 113 mathord    θ       &#x3B8;
@@ -267,16 +267,16 @@ rho                cmm         189 114 mathord    ρ         &#x3C1;
 sigma              cmm         190 115 mathord    σ       &#x3C3;
 tau                cmm         191 116 mathord    τ         &#x3C4;
 upsilon            cmm         192 117 mathord    υ        &#x3C5;
-phi                cmm         193 102 mathord    φ         &#x3C6;
+phi                cmm         193 102 mathord    ϕ &#x3D5;
 chi                cmm         194  99 mathord    χ         &#x3C7;
 psi                cmm         195 121 mathord    ψ         &#x3C8;
 omega              cmm          33 119 mathord    ω       &#x3C9;
-varepsilon         cmm          34 101 mathord    ϵ       &#x3F5;
+varepsilon         cmm          34 101 mathord    ϵ       &#x3B5;
 vartheta           cmm          35  74 mathord    ϑ      &#x3D1;
 varpi              cmm          36 118 mathord    ϖ         &#x3D6;
 varrho             cmm          37   0 mathord    ϱ        &#x3F1;
 varsigma           cmm          38  86 mathord    ς      &#x3C2;
-varphi             cmm          39 106 mathord    ϕ        &#x3D5;
+varphi             cmm          39 106 mathord    φ         &#x3C6;
 slash              cmr          47  47 mathord    /             /
 Gamma              cmr         161  71 mathalpha  Γ       &#x393;
 Delta              cmr         162  68 mathalpha  Δ       &#x394;

commit 5b62d43835992b3790d235227b39aec9c4dfb1ed
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Mon Dec 6 22:19:36 2021 +0100

    symbols: don't encode vertical bars as nonexistent HTML entities.
    
    Excerpt from https://www.lyx.org/trac/ticket/12221#comment:11
    
    Created by lynx

diff --git a/lib/symbols b/lib/symbols
index f56c038..af85929 100644
--- a/lib/symbols
+++ b/lib/symbols
@@ -374,8 +374,8 @@ sqsubseteq         cmsy        118   0 mathrel  ⊑        &#x2291;
 sqsupseteq         cmsy        119   0 mathrel  ⊒        &#x2292;
 parallel           cmsy        107   0 mathrel  ∥          &#x2225;
 mid                cmsy        106 124 mathrel  ∣          &#x2223;
-lvert              cmsy        106 124 mathrel  &lvert;         &#x007C;        amsmath
-rvert              cmsy        106 124 mathrel  &rvert;         &#x007C;        amsmath
+lvert              cmsy        106 124 mathrel  |               &#x007C;        amsmath
+rvert              cmsy        106 124 mathrel  |               &#x007C;        amsmath
 dashv              cmsy         97   0 mathrel  ⊣         &#x22A3;
 vdash              cmsy         96   0 mathrel  ⊢         &#x22A2;
 nearrow            cmsy         37   0 mathrel  ↗         &#x2197;

commit 0e0b76a76e6a660a379ea9955a92c440a6401acd
Author: Stephan Witt <switt at lyx.org>
Date:   Tue Dec 7 23:01:47 2021 +0100

    Restore correct version check for AA_UseHighDpiPixmaps - amend change ae56fb6171

diff --git a/src/frontends/qt/GuiApplication.cpp b/src/frontends/qt/GuiApplication.cpp
index ed20130..9e6f18a 100644
--- a/src/frontends/qt/GuiApplication.cpp
+++ b/src/frontends/qt/GuiApplication.cpp
@@ -1109,7 +1109,7 @@ GuiApplication::GuiApplication(int & argc, char ** argv)
 	QCoreApplication::setOrganizationName(app_name);
 	QCoreApplication::setOrganizationDomain("lyx.org");
 	QCoreApplication::setApplicationName(lyx_package);
-#if QT_VERSION >= 0x050000 && QT_VERSION < 0x060000
+#if QT_VERSION >= 0x050100 && QT_VERSION < 0x060000
 	QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
 #endif
 

commit fb4a485c1910c012fbf0b8710990524c6523b215
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Tue Dec 7 13:25:39 2021 -0500

    ctests: uninvert Seminar tests
    
    These exports now succeed on an updated TL21 installation.

diff --git a/development/autotests/invertedTests b/development/autotests/invertedTests
index f3566ae..2857677 100644
--- a/development/autotests/invertedTests
+++ b/development/autotests/invertedTests
@@ -304,12 +304,8 @@ export/templates/Articles/Hebrew_Article_%28KOMA-Script%29_(dvi3|pdf5)_systemF
 # See comment in unreliableTests
 export/export/latex/languages/uk-babel-date-missing-chars-with-ascii_pdf5_texF
 
-# These fail for perhaps a similar reason, but contrary to the unicodesymbols
-# case the maintainer of the seminar package is not planning to fix the core
-# issue since the package is old. Putting the following as the first line of
-# the LaTeX file is a workaround: \RequirePackage[2020-02-02]{latexrelease}
-export/examples/(fr/|)Presentations/Seminar.*(dvi|pdf|lyx22|lyx23).*
-# These fail for a similar reason and the same workaround works.
+# Putting the following as the first line of the LaTeX file is a workaround:
+# \RequirePackage[2020-02-02]{latexrelease}
 export/templates/Articles/Journal_of_the_Acoustical_Society_of_America_%28JASA%29.*(dvi|pdf|lyx22|lyx23).*
 
 # The new jss.cls (version 3.1) seems to not work with an updated TL20 (for

commit 2713ea5189fffd73bbd7d3ab59c5245ba7b86b53
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Tue Dec 7 13:03:39 2021 -0500

    ctests: log fixed upstream polyglossia issues
    
    Thanks to Jürgen for fixing these upstream Polyglossia regressions.

diff --git a/development/autotests/ctests-costs-benefits.txt b/development/autotests/ctests-costs-benefits.txt
index f502ddf..d8b6ab6 100644
--- a/development/autotests/ctests-costs-benefits.txt
+++ b/development/autotests/ctests-costs-benefits.txt
@@ -66,3 +66,8 @@ Examples where upstream (e.g., LaTeX packages) bugs were fixed (more quickly)
 because of ctests:
 
 Fix    : https://github.com/nrnrnr/noweb/pull/12#event-4892099481
+
+Report : (private message to Jürgen: Message-ID:<20211205192054.zbxij5butj3wdyvf at poole>)
+Fix    : some of the polyglossia commits in the range 1c36dcdc^...bf69288c
+Benefit: Not clear. The regressions were in the development version so they
+         could have easily been caught before release.

commit 2fd8b6fc2a402c00e78f71d7d6ad986270283a3e
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Dec 7 18:15:01 2021 +0100

    Fix the way the top and bottom selection are drawn
    
    When a selection extends on more than a row, the space between the two
    rows should always be painted in full. Otherwise, with layouts like
    Chapter, the "Chapter" label may seem selected in part.

diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp
index 400b7b6..b7b479b 100644
--- a/src/RowPainter.cpp
+++ b/src/RowPainter.cpp
@@ -585,12 +585,16 @@ void RowPainter::paintSelection() const
 	if (!row_.selection())
 		return;
 
-	int const y1 = yo_ - (row_.begin_margin_sel ? row_.ascent()
-	                                            : row_.contents_dim().asc);
-	int const y2 = yo_ + (row_.end_margin_sel ? row_.descent()
-	                                          : row_.contents_dim().des);
+	int const y1 = yo_ - row_.contents_dim().asc;
+	int const y2 = yo_ + row_.contents_dim().des;
 
-	// draw the margins
+	// The top selection
+	if (row_.begin_margin_sel)
+		pi_.pain.fillRectangle(int(xo_), yo_ - row_.ascent(),
+		                       tm_.width(), row_.ascent() - row_.contents_dim().asc,
+		                       Color_selection);
+
+	// The left margin selection
 	if (row_.isRTL() ? row_.end_margin_sel : row_.begin_margin_sel)
 		pi_.pain.fillRectangle(int(xo_), y1, row_.left_margin, y2 - y1,
 		                       Color_selection);
@@ -629,10 +633,16 @@ void RowPainter::paintSelection() const
 		x += e.full_width();
 	}
 
+	// the right margin selection
 	if (row_.isRTL() ? row_.begin_margin_sel : row_.end_margin_sel)
 		pi_.pain.fillRectangle(int(x), y1,
 		                       int(xo_ + tm_.width()) - int(x), y2 - y1,
 		                       Color_selection);
+	// The bottom selection
+	if (row_.end_margin_sel)
+		pi_.pain.fillRectangle(int(xo_), yo_ + row_.contents_dim().des,
+		                       tm_.width(), row_.descent() - row_.contents_dim().des,
+		                       Color_selection);
 }
 
 

commit bf9b4a0836f23082b68a6a42d048a54333721e8e
Merge: ae56fb6 2f8ea7b
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Dec 7 17:06:21 2021 +0100

    Merge branch 'breakrows'
    
    With this merge, the way paragraphs are typeset changes. Paragraphs
    are first tolenized as row elements, and these elements are then
    broken into separate rows as needed to fit the margins. This allows to
    reduce the amount of metrics computation and make LyX much faster in
    the case of large insets.
    
    Moreover, the code relies more on RofFlags enum, which desribes how an
    inset or a row element should be typset. This aspect will be extended
    in the future.
    
    Some user for whom performance is very bad (which I cannot reproduce
    unfortunately) have reported a 4-fold speedup. In general cases, the
    speedup will be less impressive but still noticeable.
    
    Related to bugs #12297 and #5861.


commit 2f8ea7ba0571bc48b51dcd1ce789f81583fe5f1e
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Oct 12 11:33:23 2021 +0200

    One less thing to do in PAINTING_ANALYSIS

diff --git a/development/PAINTING_ANALYSIS b/development/PAINTING_ANALYSIS
index a52a036..c4b396f 100644
--- a/development/PAINTING_ANALYSIS
+++ b/development/PAINTING_ANALYSIS
@@ -11,7 +11,7 @@ Please keep this file up to date as the code evolves!!!
 Abbreviations:
 bv: BufferView
 pm: ParagraphMetrics
-tm::TextMetrics
+tm: TextMetrics
 
 * Questions / Ideas
 
@@ -76,11 +76,6 @@ a lot the amount of stuff to redraw.
 It should not be necessary to access the Paragraph object to draw.
 Adding the static elements to Row is a lot of work, but worth it IMO.
 
-** Create a unique row by paragraph and break it afterwards
-
-This should be a performance gain (only if paragraph breaking still
-shows as expensive after the rest is done)
-
 ** do not add the vertical margin of main text to first/last row
 
 Would make code cleaner. Probably no so difficult.

commit 572b06d64052f2ba75c6b4c473e19a2b9369de58
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Oct 5 15:52:31 2021 +0200

    Increase metrics cache maximal size
    
    Increase the maximal size of the breakString cache (to compute where
    to break lines) from 512kB to 10MB. This has a big impact of cache
    hits on large file like the example in #12297, which is now 99%. On
    this example the time taken by breakString decreases from 33.5us to
    2.4us.
    
    The string width cache has been increased fro 512kB to 1MB, but this
    does not make such a big difference.
    
    Additionally, comments and variable names have been improved.
    
    Related to bug #12297.

diff --git a/src/frontends/qt/GuiFontMetrics.cpp b/src/frontends/qt/GuiFontMetrics.cpp
index 3feb33e..e51d40f 100644
--- a/src/frontends/qt/GuiFontMetrics.cpp
+++ b/src/frontends/qt/GuiFontMetrics.cpp
@@ -86,25 +86,27 @@ namespace lyx {
 namespace frontend {
 
 
-/*
- * Limit (strwidth|breakstr)_cache_ size to 512kB of string data.
- * Limit qtextlayout_cache_ size to 500 elements (we do not know the
- * size of the QTextLayout objects anyway).
- * Note that all these numbers are arbitrary.
- * Also, setting size to 0 is tantamount to disabling the cache.
- */
-int cache_metrics_width_size = 1 << 19;
-int cache_metrics_breakstr_size = 1 << 19;
+namespace {
+// Maximal size/cost for various caches. See QCache documentation to
+// see what cost means.
+
+// Limit strwidth_cache_ total cost to 1MB of string data.
+int const strwidth_cache_max_cost = 1024 * 1024;
+// Limit breakat_cache_ total cost to 10MB of string data.
+// This is useful for documents with very large insets.
+int const breakstr_cache_max_cost = 10 * 1024 * 1024;
 // Qt 5.x already has its own caching of QTextLayout objects
 // but it does not seem to work well on MacOS X.
 #if (QT_VERSION < 0x050000) || defined(Q_OS_MAC)
-int cache_metrics_qtextlayout_size = 500;
+// Limit qtextlayout_cache_ size to 500 elements (we do not know the
+// size of the QTextLayout objects anyway).
+int const qtextlayout_cache_max_size = 500;
 #else
-int cache_metrics_qtextlayout_size = 0;
+// Disable the cache
+int const qtextlayout_cache_max_size = 0;
 #endif
 
 
-namespace {
 /**
  * Convert a UCS4 character into a QChar.
  * This is a hack (it does only make sense for the common part of the UCS4
@@ -128,9 +130,9 @@ inline QChar const ucs4_to_qchar(char_type const ucs4)
 
 GuiFontMetrics::GuiFontMetrics(QFont const & font)
 	: font_(font), metrics_(font, 0),
-	  strwidth_cache_(cache_metrics_width_size),
-	  breakstr_cache_(cache_metrics_breakstr_size),
-	  qtextlayout_cache_(cache_metrics_qtextlayout_size)
+	  strwidth_cache_(strwidth_cache_max_cost),
+	  breakstr_cache_(breakstr_cache_max_cost),
+	  qtextlayout_cache_(qtextlayout_cache_max_size)
 {
 	// Determine italic slope
 	double const defaultSlope = tan(qDegreesToRadians(19.0));

commit 5966d4fb8df1ea09564c1c7cd4391c150440c644
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Wed Sep 22 15:09:26 2021 +0200

    Improve row flushing
    
    Add new row flags Flush and FlushBefore to let insets indicate whether
    they cause flushing of current row (eg. newline) or of previous row
    (e.g. display insets).

diff --git a/src/RowFlags.h b/src/RowFlags.h
index f94f0c6..01c4dd2 100644
--- a/src/RowFlags.h
+++ b/src/RowFlags.h
@@ -32,22 +32,26 @@ enum RowFlags {
 	BreakBefore = 1 << 0,
 	// Avoid breaking row before this element
 	NoBreakBefore = 1 << 1,
+	// flush the row before this element (useful with BreakBefore)
+	FlushBefore = 1 << 2,
 	// force new (maybe empty) row after this element
-	AlwaysBreakAfter = 1 << 2,
+	AlwaysBreakAfter = 1 << 3,
 	// break row after this element if there are more elements
-	BreakAfter = 1 << 3,
+	BreakAfter = 1 << 4,
 	// break row whenever needed after this element
-	CanBreakAfter = 1 << 4,
+	CanBreakAfter = 1 << 5,
 	// Avoid breaking row after this element
-	NoBreakAfter = 1 << 5,
+	NoBreakAfter = 1 << 6,
 	// The contents of the row may be broken in two (e.g. string)
-	CanBreakInside = 1 << 6,
+	CanBreakInside = 1 << 7,
+	// Flush the row that ends with this element
+	Flush = 1 << 8,
 	// specify an alignment (left, right) for a display element
 	// (default is center)
-	AlignLeft = 1 << 7,
-	AlignRight = 1 << 8,
+	AlignLeft = 1 << 9,
+	AlignRight = 1 << 10,
 	// A display element breaks row at both ends
-	Display = BreakBefore | BreakAfter,
+	Display = FlushBefore | BreakBefore | BreakAfter,
 	// Flags that concern breaking after element
 	AfterFlags = AlwaysBreakAfter | BreakAfter | CanBreakAfter | NoBreakAfter
 };
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 14dc705..2b1ee5a 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1068,7 +1068,6 @@ void cleanupRow(Row & row, bool at_end)
 	}
 
 	row.endpos(row.back().endpos);
-	row.flushed(at_end);
 	// remove trailing spaces on row break
 	if (!at_end)
 		row.back().rtrim();
@@ -1118,8 +1117,11 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 		int const f2 = (fcit == end) ? (end_label ? Inline : NoBreakBefore)
 		                             : fcit->row_flags;
 		if (rows.empty() || needsRowBreak(f1, f2)) {
-			if (!rows.empty())
+			if (!rows.empty()) {
 				cleanupRow(rows.back(), false);
+				// Flush row as requested by row flags
+				rows.back().flushed((f1 & Flush) || (f2 & FlushBefore));
+			}
 			pos_type pos = rows.empty() ? 0 : rows.back().endpos();
 			rows.push_back(newRow(*this, bigrow.pit(), pos, is_rtl));
 			// the width available for the row.
diff --git a/src/insets/InsetNewline.cpp b/src/insets/InsetNewline.cpp
index f5fcd42..ecfacf4 100644
--- a/src/insets/InsetNewline.cpp
+++ b/src/insets/InsetNewline.cpp
@@ -39,6 +39,15 @@ InsetNewline::InsetNewline() : Inset(nullptr)
 {}
 
 
+int InsetNewline::rowFlags() const
+{
+	if (params_.kind == InsetNewlineParams::LINEBREAK)
+		return AlwaysBreakAfter;
+	else
+	    return AlwaysBreakAfter | Flush;
+}
+
+
 void InsetNewlineParams::write(ostream & os) const
 {
 	switch (kind) {
diff --git a/src/insets/InsetNewline.h b/src/insets/InsetNewline.h
index 1ef0ae5..c85a97d 100644
--- a/src/insets/InsetNewline.h
+++ b/src/insets/InsetNewline.h
@@ -47,7 +47,7 @@ public:
 	explicit InsetNewline(InsetNewlineParams par) : Inset(0)
 	{ params_.kind = par.kind; }
 	///
-	int rowFlags() const override { return AlwaysBreakAfter; }
+	int rowFlags() const override;
 	///
 	static void string2params(std::string const &, InsetNewlineParams &);
 	///
diff --git a/src/insets/InsetSeparator.h b/src/insets/InsetSeparator.h
index 9352bdf..0c12d95 100644
--- a/src/insets/InsetSeparator.h
+++ b/src/insets/InsetSeparator.h
@@ -65,7 +65,7 @@ public:
 		return docstring();
 	}
 	///
-	int rowFlags() const override { return BreakAfter; }
+	int rowFlags() const override { return BreakAfter | Flush; }
 private:
 	///
 	InsetCode lyxCode() const override { return SEPARATOR_CODE; }

commit a06f0e48ec579c7ff4e059f08fd0e3983f6d4dfe
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Wed Sep 22 13:17:46 2021 +0200

    Simplify setting of RTL in rows
    
    Set RTL status at row creation, which allows to remove a parameter from
    cleanupRow.

diff --git a/src/Row.cpp b/src/Row.cpp
index 6b0faa3..4b9836e 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -624,7 +624,7 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 }
 
 
-void Row::reverseRTL(bool const rtl_par)
+void Row::reverseRTL()
 {
 	pos_type i = 0;
 	pos_type const end = elements_.size();
@@ -636,14 +636,13 @@ void Row::reverseRTL(bool const rtl_par)
 			++j;
 		// if the direction is not the same as the paragraph
 		// direction, the sequence has to be reverted.
-		if (rtl != rtl_par)
+		if (rtl != rtl_)
 			reverse(elements_.begin() + i, elements_.begin() + j);
 		i = j;
 	}
 	// If the paragraph itself is RTL, reverse everything
-	if (rtl_par)
+	if (rtl_)
 		reverse(elements_.begin(), elements_.end());
-	rtl_ = rtl_par;
 }
 
 Row::const_iterator const
diff --git a/src/Row.h b/src/Row.h
index bf49eb1..2c60638 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -301,10 +301,12 @@ public:
 	 * Find sequences of right-to-left elements and reverse them.
 	 * This should be called once the row is completely built.
 	 */
-	void reverseRTL(bool rtl_par);
+	void reverseRTL();
 	///
 	bool isRTL() const { return rtl_; }
 	///
+	void setRTL(bool rtl) { rtl_ = rtl; }
+	///
 	bool needsChangeBar() const { return changebar_; }
 	///
 	void needsChangeBar(bool ncb) { changebar_ = ncb; }
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 76e2fb1..14dc705 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1050,6 +1050,7 @@ Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
 	nrow.pos(pos);
 	nrow.left_margin = tm.leftMargin(pit, pos);
 	nrow.right_margin = tm.rightMargin(pit);
+	nrow.setRTL(is_rtl);
 	if (is_rtl)
 		swap(nrow.left_margin, nrow.right_margin);
 	// Remember that the row width takes into account the left_margin
@@ -1059,7 +1060,7 @@ Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
 }
 
 
-void cleanupRow(Row & row, bool at_end, bool is_rtl)
+void cleanupRow(Row & row, bool at_end)
 {
 	if (row.empty()) {
 		row.endpos(0);
@@ -1074,7 +1075,7 @@ void cleanupRow(Row & row, bool at_end, bool is_rtl)
 	// boundary exists when there was no space at the end of row
 	row.right_boundary(!at_end && row.back().endpos == row.endpos());
 	// make sure that the RTL elements are in reverse ordering
-	row.reverseRTL(is_rtl);
+	row.reverseRTL();
 }
 
 
@@ -1118,7 +1119,7 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 		                             : fcit->row_flags;
 		if (rows.empty() || needsRowBreak(f1, f2)) {
 			if (!rows.empty())
-				cleanupRow(rows.back(), false, is_rtl);
+				cleanupRow(rows.back(), false);
 			pos_type pos = rows.empty() ? 0 : rows.back().endpos();
 			rows.push_back(newRow(*this, bigrow.pit(), pos, is_rtl));
 			// the width available for the row.
@@ -1152,7 +1153,7 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 	}
 
 	if (!rows.empty()) {
-		cleanupRow(rows.back(), true, is_rtl);
+		cleanupRow(rows.back(), true);
 		// Last row in paragraph is flushed
 		rows.back().flushed(true);
 	}

commit d723b90344c0e56b26fc69aa00cb3001e074a723
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Mon Sep 6 14:52:42 2021 +0200

    Break multi-row strings in one pass
    
    Replace FontMetrics::breakAt, which returned the next break point,
    with FontMetrics::breakString, which returns a vector of break points.
    To this end, an additional parameter gives the available width for
    next rows.
    
    Rename various variables and methods accordingly. Factor the code in
    breakString_helper to be more manageable.
    
    Adapt Row::Element::splitAt to return a bool on sucess and provide
    remaining row elements in a vector. The width noted above has been
    added as parameters.
    
    Rename the helper function splitFrom to moveElements and rewrite the
    code to be more efficient.
    
    Remove type of row element INVALID, which is not needed anymore.
    
    The code in TextMetrics::breakParagraph is now much simpler.
    
    In Row::finalize, remove the code that computed inconditionnally the
    current element size, and make sure that this width will be computed
    in all code paths of Row::Element::splitAt.

diff --git a/src/Row.cpp b/src/Row.cpp
index b7e4c07..6b0faa3 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -123,41 +123,81 @@ pos_type Row::Element::x2pos(int &x) const
 			x = 0;
 			i = isRTL();
 		}
-		break;
-	case INVALID:
-		LYXERR0("x2pos: INVALID row element !");
 	}
 	//lyxerr << "=> p=" << pos + i << " x=" << x << endl;
 	return pos + i;
 }
 
 
-Row::Element Row::Element::splitAt(int w, bool force)
+bool Row::Element::splitAt(int const width, int next_width, bool force,
+                           Row::Elements & tail)
 {
-	if (type != STRING || !(row_flags & CanBreakInside))
-		return Element();
+	// Not a string or already OK.
+	if (type != STRING || (dim.wid > 0 && dim.wid < width))
+		return false;
 
 	FontMetrics const & fm = theFontMetrics(font);
-	dim.wid = w;
-	int const i = fm.breakAt(str, dim.wid, isRTL(), force);
-	if (i != -1) {
-		//Create a second row element to return
-		Element ret(STRING, pos + i, font, change);
-		ret.str = str.substr(i);
-		ret.endpos = ret.pos + ret.str.length();
-		// Copy the after flags of the original element to the second one.
-		ret.row_flags = row_flags & (CanBreakInside | AfterFlags);
-
-		// Now update ourselves
-		str.erase(i);
-		endpos = pos + i;
-		// Row should be broken after the original element
-		row_flags = (row_flags & ~AfterFlags) | BreakAfter;
-		//LYXERR0("breakAt(" << w << ")  Row element Broken at " << w << "(w(str)=" << fm.width(str) << "): e=" << *this);
-		return ret;
+
+	// A a string that is not breakable
+	if (!(row_flags & CanBreakInside)) {
+		// has width been computed yet?
+		if (dim.wid == 0)
+			dim.wid = fm.width(str);
+		return false;
+	}
+
+	bool const wrap_any = !font.language()->wordWrap();
+	FontMetrics::Breaks breaks = fm.breakString(str, width, next_width,
+                                                isRTL(), wrap_any | force);
+
+	// if breaking did not really work, give up
+	if (!force && breaks.front().wid > width) {
+		if (dim.wid == 0)
+			dim.wid = fm.width(str);
+		return false;
+	}
+
+	Element first_e(STRING, pos, font, change);
+	// should next element eventually replace *this?
+	bool first = true;
+	docstring::size_type i = 0;
+	for (FontMetrics::Break const & brk : breaks) {
+		Element e(STRING, pos + i, font, change);
+		e.str = str.substr(i, brk.len);
+		e.endpos = e.pos + brk.len;
+		e.dim.wid = brk.wid;
+		e.row_flags = CanBreakInside | BreakAfter;
+		if (first) {
+			// this element eventually goes to *this
+			e.row_flags |= row_flags & ~AfterFlags;
+			first_e = e;
+			first = false;
+		} else
+			tail.push_back(e);
+		i += brk.len;
 	}
 
-	return Element();
+	if (!tail.empty()) {
+		// Avoid having a last empty element. This happens when
+		// breaking at the trailing space of string
+		if (tail.back().str.empty())
+			tail.pop_back();
+		else {
+			// Copy the after flags of the original element to the last one.
+			tail.back().row_flags &= ~BreakAfter;
+			tail.back().row_flags |= row_flags & AfterFlags;
+		}
+		// first_e row should be broken after the original element
+		first_e.row_flags |= BreakAfter;
+	} else {
+		// Restore the after flags of the original element.
+		first_e.row_flags &= ~BreakAfter;
+		first_e.row_flags |= row_flags & AfterFlags;
+	}
+
+	// update ourselves
+	swap(first_e, *this);
+	return true;
 }
 
 
@@ -265,10 +305,6 @@ ostream & operator<<(ostream & os, Row::Element const & e)
 		break;
 	case Row::SPACE:
 		os << "SPACE: ";
-		break;
-	case Row::INVALID:
-		os << "INVALID: ";
-		break;
 	}
 	os << "width=" << e.full_width() << ", row_flags=" << e.row_flags;
 	return os;
@@ -393,11 +429,6 @@ void Row::finalizeLast()
 	elt.final = true;
 	if (elt.change.changed())
 		changebar_ = true;
-
-	if (elt.type == STRING && elt.dim.wid == 0) {
-		elt.dim.wid = theFontMetrics(elt.font).width(elt.str);
-		dim_.wid += elt.dim.wid;
-	}
 }
 
 
@@ -474,19 +505,14 @@ void Row::pop_back()
 
 namespace {
 
-// Remove stuff after \c it from \c elts, and return it.
-// if \c init is provided, it will prepended to the rest
-Row::Elements splitFrom(Row::Elements & elts, Row::Elements::iterator const & it,
-                        Row::Element const & init = Row::Element())
+// Move stuff after \c it from \c from and the end of \c to.
+void moveElements(Row::Elements & from, Row::Elements::iterator const & it,
+                  Row::Elements & to)
 {
-	Row::Elements ret;
-	if (init.isValid())
-		ret.push_back(init);
-	ret.insert(ret.end(), it, elts.end());
-	elts.erase(it, elts.end());
-	if (!elts.empty())
-		elts.back().row_flags = (elts.back().row_flags & ~AfterFlags) | BreakAfter;
-	return ret;
+	to.insert(to.end(), it, from.end());
+	from.erase(it, from.end());
+	if (!from.empty())
+		from.back().row_flags = (from.back().row_flags & ~AfterFlags) | BreakAfter;
 }
 
 }
@@ -522,6 +548,7 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 	Elements::iterator cit_brk = cit;
 	int wid_brk = wid + cit_brk->dim.wid;
 	++cit_brk;
+	Elements tail;
 	while (cit_brk != beg) {
 		--cit_brk;
 		// make a copy of the element to work on it.
@@ -533,28 +560,18 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 		if (wid_brk <= w && brk.row_flags & CanBreakAfter) {
 			end_ = brk.endpos;
 			dim_.wid = wid_brk;
-			return splitFrom(elements_, cit_brk + 1);
+			moveElements(elements_, cit_brk + 1, tail);
+			return tail;
 		}
 		// assume now that the current element is not there
 		wid_brk -= brk.dim.wid;
-		/*
-		 * Some Asian languages split lines anywhere (no notion of
-		 * word). It seems that QTextLayout is not aware of this fact.
-		 * See for reference:
-		 *    https://en.wikipedia.org/wiki/Line_breaking_rules_in_East_Asian_languages
-		 *
-		 * FIXME: Something shall be done about characters which are
-		 * not allowed at the beginning or end of line.
-		*/
-		bool const word_wrap = brk.font.language()->wordWrap();
 		/* We have found a suitable separable element. This is the common case.
-		 * Try to break it cleanly (at word boundary) at a length that is both
+		 * Try to break it cleanly at a length that is both
 		 * - less than the available space on the row
 		 * - shorter than the natural width of the element, in order to enforce
 		 *   break-up.
 		 */
-		Element remainder = brk.splitAt(min(w - wid_brk, brk.dim.wid - 2), !word_wrap);
-		if (brk.row_flags & BreakAfter) {
+		if (brk.splitAt(min(w - wid_brk, brk.dim.wid - 2), next_width, false, tail)) {
 			/* if this element originally did not cause a row overflow
 			 * in itself, and the remainder of the row would still be
 			 * too large after breaking, then we will have issues in
@@ -568,12 +585,10 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 			*cit_brk = brk;
 			dim_.wid = wid_brk + brk.dim.wid;
 			// If there are other elements, they should be removed.
-			// remainder can be empty when splitting at trailing space
-			if (remainder.str.empty())
-				return splitFrom(elements_, next(cit_brk, 1));
-			else
-				return splitFrom(elements_, next(cit_brk, 1), remainder);
+			moveElements(elements_, cit_brk + 1, tail);
+			return tail;
 		}
+		LATTEST(tail.empty());
 	}
 
 	if (cit != beg && cit->row_flags & NoBreakBefore) {
@@ -588,20 +603,23 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 		// been added. We can cut right here.
 		end_ = cit->pos;
 		dim_.wid = wid;
-		return splitFrom(elements_, cit);
+		moveElements(elements_, cit, tail);
+		return tail;
 	}
 
 	/* If we are here, it means that we have not found a separator to
-	 * shorten the row. Let's try to break it again, but not at word
-	 * boundary this time.
+	 * shorten the row. Let's try to break it again, but force
+	 * splitting this time.
 	 */
-	Element remainder = cit->splitAt(w - wid, true);
-	if (cit->row_flags & BreakAfter) {
+	if (cit->splitAt(w - wid, next_width, true, tail)) {
+		LYXERR0(*cit);
 		end_ = cit->endpos;
 		dim_.wid = wid + cit->dim.wid;
 		// If there are other elements, they should be removed.
-		return splitFrom(elements_, next(cit, 1), remainder);
+		moveElements(elements_, cit + 1, tail);
+		return tail;
 	}
+
 	return Elements();
 }
 
diff --git a/src/Row.h b/src/Row.h
index 1272a0f..bf49eb1 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -50,9 +50,7 @@ public:
 		// An inset
 		INSET,
 		// Some spacing described by its width, not a string
-		SPACE,
-		// Something that should not happen (for error handling)
-		INVALID
+		SPACE
 	};
 
 /**
@@ -61,8 +59,6 @@ public:
  */
 	struct Element {
 		//
-		Element() = default;
-		//
 		Element(Type const t, pos_type p, Font const & f, Change const & ch)
 			: type(t), pos(p), endpos(p + 1), font(f), change(ch) {}
 
@@ -94,13 +90,16 @@ public:
 		pos_type x2pos(int &x) const;
 		/** Break the element in two if possible, so that its width is less
 		 * than \param w.
-		 * \return an element containing the remainder of the text, or
-		 *   an invalid element if nothing happened.
-		 * \param w: the desired maximum width
-		 * \param force: if true, the string is cut at any place, otherwise it
-		 *   respects the row breaking rules of characters.
+		 * \return a vector of elements containing the remainder of
+		 *   the text (empty if nothing happened).
+		 * \param width maximum width of the row.
+		 * \param next_width available width on next row.
+		 * \param force: if true, cut string at any place, even for
+		 *   languages that wrap at word delimiters; if false, do not
+		 *   break at all if first element would larger than \c width.
 		 */
-		Element splitAt(int w, bool force);
+		// FIXME: ideally last parameter should be Elements&, but it is not possible.
+		bool splitAt(int width, int next_width, bool force, std::vector<Element> & tail);
 		// remove trailing spaces (useful for end of row)
 		void rtrim();
 
@@ -108,8 +107,6 @@ public:
 		bool isRTL() const { return font.isVisibleRightToLeft(); }
 		// This is true for virtual elements.
 		bool isVirtual() const { return type == VIRTUAL; }
-		// Invalid element, for error handling
-		bool isValid() const { return type !=INVALID; }
 
 		// Returns the position on left side of the element.
 		pos_type left_pos() const { return isRTL() ? endpos : pos; };
@@ -117,11 +114,11 @@ public:
 		pos_type right_pos() const { return isRTL() ? pos : endpos; };
 
 		// The kind of row element
-		Type type = INVALID;
+		Type type;
 		// position of the element in the paragraph
-		pos_type pos = 0;
+		pos_type pos;
 		// first position after the element in the paragraph
-		pos_type endpos = 0;
+		pos_type endpos;
 		// The dimension of the chunk (does not contains the
 		// separator correction)
 		Dimension dim;
@@ -289,8 +286,8 @@ public:
 	 * separator and update endpos if necessary. If all that
 	 * remains is a large word, cut it to \param width.
 	 * \param width maximum width of the row.
-	 * \param available width on next row.
-	 * \return true if the row has been shortened.
+	 * \param next_width available width on next row.
+	 * \return list of elements remaining after breaking.
 	 */
 	Elements shortenIfNeeded(int const width, int const next_width);
 
diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp
index 656f89a..400b7b6 100644
--- a/src/RowPainter.cpp
+++ b/src/RowPainter.cpp
@@ -565,10 +565,6 @@ void RowPainter::paintText()
 
 		case Row::SPACE:
 			paintTextDecoration(e);
-			break;
-
-		case Row::INVALID:
-			LYXERR0("Trying to paint INVALID row element.");
 		}
 
 		// The markings of foreign languages
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index d681a63..76e2fb1 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1059,7 +1059,7 @@ Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
 }
 
 
-void cleanupRow(Row & row, pos_type real_endpos, bool is_rtl)
+void cleanupRow(Row & row, bool at_end, bool is_rtl)
 {
 	if (row.empty()) {
 		row.endpos(0);
@@ -1067,11 +1067,12 @@ void cleanupRow(Row & row, pos_type real_endpos, bool is_rtl)
 	}
 
 	row.endpos(row.back().endpos);
+	row.flushed(at_end);
 	// remove trailing spaces on row break
-	if (row.endpos() < real_endpos)
+	if (!at_end)
 		row.back().rtrim();
 	// boundary exists when there was no space at the end of row
-	row.right_boundary(row.endpos() < real_endpos && row.back().endpos == row.endpos());
+	row.right_boundary(!at_end && row.back().endpos == row.endpos());
 	// make sure that the RTL elements are in reverse ordering
 	row.reverseRTL(is_rtl);
 }
@@ -1098,6 +1099,8 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 	RowList rows;
 	bool const is_rtl = text_->isRTL(bigrow.pit());
 	bool const end_label = text_->getEndLabel(bigrow.pit()) != END_LABEL_NO_LABEL;
+	int const next_width = max_width_ - leftMargin(bigrow.pit(), bigrow.endpos())
+		- rightMargin(bigrow.pit());
 
 	int width = 0;
 	flexible_const_iterator<Row> fcit = flexible_begin(bigrow);
@@ -1115,7 +1118,7 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 		                             : fcit->row_flags;
 		if (rows.empty() || needsRowBreak(f1, f2)) {
 			if (!rows.empty())
-				cleanupRow(rows.back(), bigrow.endpos(), is_rtl);
+				cleanupRow(rows.back(), false, is_rtl);
 			pos_type pos = rows.empty() ? 0 : rows.back().endpos();
 			rows.push_back(newRow(*this, bigrow.pit(), pos, is_rtl));
 			// the width available for the row.
@@ -1130,45 +1133,26 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 		// Next element to consider is either the top of the temporary
 		// pile, or the place when we were in main row
 		Row::Element elt = *fcit;
-		Row::Element next_elt = elt.splitAt(width - rows.back().width(),
-		                                    !elt.font.language()->wordWrap());
-		if (elt.dim.wid > width - rows.back().width()) {
-			Row & rb = rows.back();
-			rb.push_back(*fcit);
-			// if the row is too large, try to cut at last separator. In case
-			// of success, reset indication that the row was broken abruptly.
-			int const next_width = max_width_ - leftMargin(rb.pit(), rb.endpos())
-				- rightMargin(rb.pit());
-
-			Row::Elements next_elts = rb.shortenIfNeeded(width, next_width);
-
-			// Go to next element
-			++fcit;
-
-			// Handle later the elements returned by shortenIfNeeded.
-			if (!next_elts.empty()) {
-				rb.flushed(false);
-				fcit.put(next_elts);
-			}
-		} else {
-			// a new element in the row
-			rows.back().push_back(elt);
-			rows.back().finalizeLast();
-
-			// Go to next element
-			++fcit;
-
-			// Add a new next element on the pile
-			if (next_elt.isValid()) {
-				// do as if we inserted this element in the original row
-				if (!next_elt.str.empty())
-					fcit.put(next_elt);
-			}
+		Row::Elements tail;
+		elt.splitAt(width - rows.back().width(), next_width, false, tail);
+		Row & rb = rows.back();
+		rb.push_back(elt);
+		rb.finalizeLast();
+		if (rb.width() > width) {
+			LATTEST(tail.empty());
+			// if the row is too large, try to cut at last separator.
+			tail = rb.shortenIfNeeded(width, next_width);
 		}
+
+		// Go to next element
+		++fcit;
+
+		// Handle later the elements returned by splitAt or shortenIfNeeded.
+		fcit.put(tail);
 	}
 
 	if (!rows.empty()) {
-		cleanupRow(rows.back(), bigrow.endpos(), is_rtl);
+		cleanupRow(rows.back(), true, is_rtl);
 		// Last row in paragraph is flushed
 		rows.back().flushed(true);
 	}
diff --git a/src/frontends/FontMetrics.h b/src/frontends/FontMetrics.h
index b562ebf..b78bc2d 100644
--- a/src/frontends/FontMetrics.h
+++ b/src/frontends/FontMetrics.h
@@ -16,6 +16,8 @@
 
 #include "support/strfwd.h"
 
+#include <vector>
+
 /**
  * A class holding helper functions for determining
  * the screen dimensions of fonts.
@@ -121,15 +123,27 @@ public:
 	 * \param ws is the amount of extra inter-word space applied text justification.
 	 */
 	virtual int x2pos(docstring const & s, int & x, bool rtl, double ws) const = 0;
+
+	// The places where to break a string and the width of the resulting lines.
+	struct Break {
+		Break(int l, int w) : len(l), wid(w) {}
+		int len = 0;
+		int wid = 0;
+	};
+	typedef std::vector<Break> Breaks;
 	/**
-	 * Break string s at width at most x.
-	 * \return break position (-1 if not successful)
-	 * \param position x is updated to real width
-	 * \param rtl is true for right-to-left layout
+	 * Break a string in multiple fragments according to width limits.
+	 * \return a sequence of Break elements.
+	 * \param s is the string to break.
+	 * \param first_wid is the available width for first line.
+	 * \param wid is the available width for the next lines.
+	 * \param rtl is true for right-to-left layout.
 	 * \param force is false for breaking at word separator, true for
 	 *   arbitrary position.
 	 */
-	virtual int breakAt(docstring const & s, int & x, bool rtl, bool force) const = 0;
+	virtual Breaks
+	breakString(docstring const & s, int first_wid, int wid, bool rtl, bool force) const = 0;
+
 	/// return char dimension for the font.
 	virtual Dimension const dimension(char_type c) const = 0;
 	/**
diff --git a/src/frontends/qt/GuiFontMetrics.cpp b/src/frontends/qt/GuiFontMetrics.cpp
index 47537ae..3feb33e 100644
--- a/src/frontends/qt/GuiFontMetrics.cpp
+++ b/src/frontends/qt/GuiFontMetrics.cpp
@@ -19,6 +19,7 @@
 
 #include "support/convert.h"
 #include "support/lassert.h"
+#include "support/lstrings.h"
 #include "support/lyxlib.h"
 #include "support/debug.h"
 
@@ -86,14 +87,14 @@ namespace frontend {
 
 
 /*
- * Limit (strwidth|breakat)_cache_ size to 512kB of string data.
+ * Limit (strwidth|breakstr)_cache_ size to 512kB of string data.
  * Limit qtextlayout_cache_ size to 500 elements (we do not know the
  * size of the QTextLayout objects anyway).
  * Note that all these numbers are arbitrary.
  * Also, setting size to 0 is tantamount to disabling the cache.
  */
 int cache_metrics_width_size = 1 << 19;
-int cache_metrics_breakat_size = 1 << 19;
+int cache_metrics_breakstr_size = 1 << 19;
 // Qt 5.x already has its own caching of QTextLayout objects
 // but it does not seem to work well on MacOS X.
 #if (QT_VERSION < 0x050000) || defined(Q_OS_MAC)
@@ -128,7 +129,7 @@ inline QChar const ucs4_to_qchar(char_type const ucs4)
 GuiFontMetrics::GuiFontMetrics(QFont const & font)
 	: font_(font), metrics_(font, 0),
 	  strwidth_cache_(cache_metrics_width_size),
-	  breakat_cache_(cache_metrics_breakat_size),
+	  breakstr_cache_(cache_metrics_breakstr_size),
 	  qtextlayout_cache_(cache_metrics_qtextlayout_size)
 {
 	// Determine italic slope
@@ -485,11 +486,13 @@ int GuiFontMetrics::countExpanders(docstring const & str) const
 }
 
 
-pair<int, int>
-GuiFontMetrics::breakAt_helper(docstring const & s, int const x,
-                               bool const rtl, bool const force) const
+namespace {
+
+const int brkStrOffset = 1 + BIDI_OFFSET;
+
+
+QString createBreakableString(docstring const & s, bool rtl, QTextLayout & tl)
 {
-	QTextLayout tl;
 	/* Qt will not break at a leading or trailing space, and we need
 	 * that sometimes, see http://www.lyx.org/trac/ticket/9921.
 	 *
@@ -518,34 +521,23 @@ GuiFontMetrics::breakAt_helper(docstring const & s, int const x,
 		// Left-to-right override: forces to draw text left-to-right
 		qs =  QChar(0x202D) + qs;
 #endif
-	int const offset = 1 + BIDI_OFFSET;
+	return qs;
+}
 
-	tl.setText(qs);
-	tl.setFont(font_);
-	QTextOption to;
-	to.setWrapMode(force ? QTextOption::WrapAtWordBoundaryOrAnywhere
-	                     : QTextOption::WordWrap);
-	// Let QTextLine::naturalTextWidth() account for trailing spaces
-	// (horizontalAdvance() still does not).
-	to.setFlags(QTextOption::IncludeTrailingSpaces);
-	tl.setTextOption(to);
-	tl.beginLayout();
-	QTextLine line = tl.createLine();
-	line.setLineWidth(x);
-	tl.createLine();
-	tl.endLayout();
-	int line_wid = iround(line.horizontalAdvance());
-	if ((force && line.textLength() == offset) || line_wid > x)
-		return {-1, line_wid};
+
+docstring::size_type brkstr2str_pos(QString brkstr, docstring const & str, int pos)
+{
 	/* Since QString is UTF-16 and docstring is UCS-4, the offsets may
 	 * not be the same when there are high-plan unicode characters
 	 * (bug #10443).
 	 */
-	// The variable `offset' is here to account for the extra leading characters.
+	// The variable `brkStrOffset' is here to account for the extra leading characters.
 	// The ending character zerow_nbsp has to be ignored if the line is complete.
-	int const qlen = line.textLength() - offset - (line.textLength() == qs.length());
+	int const qlen = pos - brkStrOffset - (pos == brkstr.length());
 #if QT_VERSION < 0x040801 || QT_VERSION >= 0x050100
-	int len = qstring_to_ucs4(qs.mid(offset, qlen)).length();
+	auto const len = qstring_to_ucs4(brkstr.mid(brkStrOffset, qlen)).length();
+	// Avoid warning
+	(void)str;
 #else
 	/* Due to QTBUG-25536 in 4.8.1 <= Qt < 5.1.0, the string returned
 	 * by QString::toUcs4 (used by qstring_to_ucs4) may have wrong
@@ -555,52 +547,108 @@ GuiFontMetrics::breakAt_helper(docstring const & s, int const x,
 	 * worthwhile to implement a dichotomy search if this shows up
 	 * under a profiler.
 	 */
-	int len = min(qlen, static_cast<int>(s.length()));
-	while (len >= 0 && toqstr(s.substr(0, len)).length() != qlen)
+	int len = min(qlen, static_cast<int>(str.length()));
+	while (len >= 0 && toqstr(str.substr(0, len)).length() != qlen)
 		--len;
 	LASSERT(len > 0 || qlen == 0, /**/);
 #endif
-	// Do not cut is the string is already short enough. We rely on
-	// naturalTextWidth() to catch the case where we cut at the trailing
-	// space.
-	if (len == static_cast<int>(s.length())
-		&& line.naturalTextWidth() <= x) {
-		len = -1;
-#if QT_VERSION < 0x050000
+	return len;
+}
+
+}
+
+FontMetrics::Breaks
+GuiFontMetrics::breakString_helper(docstring const & s, int first_wid, int wid,
+                                   bool rtl, bool force) const
+{
+	QTextLayout tl;
+	QString qs = createBreakableString(s, rtl, tl);
+	tl.setText(qs);
+	tl.setFont(font_);
+	QTextOption to;
+	/*
+	 * Some Asian languages split lines anywhere (no notion of
+	 * word). It seems that QTextLayout is not aware of this fact.
+	 * See for reference:
+	 *    https://en.wikipedia.org/wiki/Line_breaking_rules_in_East_Asian_languages
+	 *
+	 * FIXME: Something shall be done about characters which are
+	 * not allowed at the beginning or end of line.
+	 */
+	to.setWrapMode(force ? QTextOption::WrapAtWordBoundaryOrAnywhere
+	                     : QTextOption::WordWrap);
+	// Let QTextLine::naturalTextWidth() account for trailing spaces
+	// (horizontalAdvance() still does not).
+	to.setFlags(QTextOption::IncludeTrailingSpaces);
+	tl.setTextOption(to);
+
+	bool first = true;
+	tl.beginLayout();
+	while(true) {
+		QTextLine line = tl.createLine();
+		if (!line.isValid())
+			break;
+		line.setLineWidth(first ? first_wid : wid);
+		tl.createLine();
+		first = false;
+	}
+	tl.endLayout();
+
+	Breaks breaks;
+	int pos = 0;
+	for (int i = 0 ; i < tl.lineCount() ; ++i) {
+		QTextLine const & line = tl.lineAt(i);
+		int const epos = brkstr2str_pos(qs, s, line.textStart() + line.textLength());
+#if QT_VERSION >= 0x050000
+		int const wid = i + 1 < tl.lineCount() ? iround(line.horizontalAdvance())
+		                                       : iround(line.naturalTextWidth());
+#else
 		// With some monospace fonts, the value of horizontalAdvance()
 		// can be wrong with Qt4. One hypothesis is that the invisible
 		// characters that we use are given a non-null width.
-		line_wid = width(s);
+		// FIXME: this is slower than it could be but we'll get rid of Qt4 anyway
+		int const wid = i + 1 < tl.lineCount() ? width(rtrim(s.substr(pos, epos - pos)))
+		                                       : width(s.substr(pos, epos - pos));
+#endif
+		breaks.emplace_back(epos - pos, wid);
+		pos = epos;
+#if 0
+		// FIXME: should it be kept in some form?
+		if ((force && line.textLength() == brkStrOffset) || line_wid > x)
+			return {-1, line_wid};
 #endif
+
 	}
-	return {len, line_wid};
+
+	return breaks;
 }
 
 
-uint qHash(BreakAtKey const & key)
+uint qHash(BreakStringKey const & key)
 {
-	int params = key.force + 2 * key.rtl + 4 * key.x;
+	// assume widths are less than 10000. This fits in 32 bits.
+	uint params = key.force + 2 * key.rtl + 4 * key.first_wid + 10000 * key.wid;
 	return std::qHash(key.s) ^ ::qHash(params);
 }
 
 
-int GuiFontMetrics::breakAt(docstring const & s, int & x, bool const rtl, bool const force) const
+FontMetrics::Breaks GuiFontMetrics::breakString(docstring const & s, int first_wid, int wid,
+                                                bool rtl, bool force) const
 {
-	PROFILE_THIS_BLOCK(breakAt);
+	PROFILE_THIS_BLOCK(breakString);
 	if (s.empty())
-		return false;
+		return Breaks();
 
-	BreakAtKey key{s, x, rtl, force};
-	pair<int, int> pp;
-	if (auto * pp_ptr = breakat_cache_.object_ptr(key))
-		pp = *pp_ptr;
+	BreakStringKey key{s, first_wid, wid, rtl, force};
+	Breaks brks;
+	if (auto * brks_ptr = breakstr_cache_.object_ptr(key))
+		brks = *brks_ptr;
 	else {
-		PROFILE_CACHE_MISS(breakAt);
-		pp = breakAt_helper(s, x, rtl, force);
-		breakat_cache_.insert(key, pp, sizeof(key) + s.size() * sizeof(char_type));
+		PROFILE_CACHE_MISS(breakString);
+		brks = breakString_helper(s, first_wid, wid, rtl, force);
+		breakstr_cache_.insert(key, brks, sizeof(key) + s.size() * sizeof(char_type));
 	}
-	x = pp.second;
-	return pp.first;
+	return brks;
 }
 
 
diff --git a/src/frontends/qt/GuiFontMetrics.h b/src/frontends/qt/GuiFontMetrics.h
index ef8588a..9501eb8 100644
--- a/src/frontends/qt/GuiFontMetrics.h
+++ b/src/frontends/qt/GuiFontMetrics.h
@@ -27,14 +27,16 @@
 namespace lyx {
 namespace frontend {
 
-struct BreakAtKey
+struct BreakStringKey
 {
-	bool operator==(BreakAtKey const & key) const {
-		return key.s == s && key.x == x && key.rtl == rtl && key.force == force;
+	bool operator==(BreakStringKey const & key) const {
+		return key.s == s && key.first_wid == first_wid && key.wid == wid
+			&& key.rtl == rtl && key.force == force;
 	}
 
 	docstring s;
-	int x;
+	int first_wid;
+	int wid;
 	bool rtl;
 	bool force;
 };
@@ -77,7 +79,7 @@ public:
 	int signedWidth(docstring const & s) const override;
 	int pos2x(docstring const & s, int pos, bool rtl, double ws) const override;
 	int x2pos(docstring const & s, int & x, bool rtl, double ws) const override;
-	int breakAt(docstring const & s, int & x, bool rtl, bool force) const override;
+	Breaks breakString(docstring const & s, int first_wid, int wid, bool rtl, bool force) const override;
 	Dimension const dimension(char_type c) const override;
 
 	void rectText(docstring const & str,
@@ -101,8 +103,8 @@ public:
 
 private:
 
-	std::pair<int, int> breakAt_helper(docstring const & s, int const x,
-	                                   bool const rtl, bool const force) const;
+	Breaks breakString_helper(docstring const & s, int first_wid, int wid,
+	                          bool rtl, bool force) const;
 
 	/// The font
 	QFont font_;
@@ -117,8 +119,8 @@ private:
 	mutable QHash<char_type, int> width_cache_;
 	/// Cache of string widths
 	mutable Cache<docstring, int> strwidth_cache_;
-	/// Cache for breakAt
-	mutable Cache<BreakAtKey, std::pair<int, int>> breakat_cache_;
+	/// Cache for breakString
+	mutable Cache<BreakStringKey, Breaks> breakstr_cache_;
 	/// Cache for QTextLayout
 	mutable Cache<TextLayoutKey, std::shared_ptr<QTextLayout>> qtextlayout_cache_;
 

commit 71c2e2fda6f241a63c1a67569db5f7fbae6fe4a9
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Mon Sep 20 17:32:18 2021 +0200

    Add operator<< for Row::Elements
    
    This is useful for debugging.

diff --git a/src/Row.cpp b/src/Row.cpp
index 8233a96..b7e4c07 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -275,6 +275,17 @@ ostream & operator<<(ostream & os, Row::Element const & e)
 }
 
 
+ostream & operator<<(ostream & os, Row::Elements const & elts)
+{
+	double x = 0;
+	for (Row::Element const & e : elts) {
+		os << "x=" << x << " => " << e << endl;
+		x += e.full_width();
+	}
+	return os;
+}
+
+
 ostream & operator<<(ostream & os, Row const & row)
 {
 	os << " pos: " << row.pos_ << " end: " << row.end_
@@ -286,11 +297,11 @@ ostream & operator<<(ostream & os, Row const & row)
 	   << " separator: " << row.separator
 	   << " label_hfill: " << row.label_hfill
 	   << " row_boundary: " << row.right_boundary() << "\n";
+	// We cannot use the operator above, unfortunately
 	double x = row.left_margin;
-	Row::Elements::const_iterator it = row.elements_.begin();
-	for ( ; it != row.elements_.end() ; ++it) {
-		os << "x=" << x << " => " << *it << endl;
-		x += it->full_width();
+	for (Row::Element const & e : row.elements_) {
+		os << "x=" << x << " => " << e << endl;
+		x += e.full_width();
 	}
 	return os;
 }
diff --git a/src/Row.h b/src/Row.h
index 7466797..1272a0f 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -378,6 +378,8 @@ private:
 	bool changebar_ = false;
 };
 
+std::ostream & operator<<(std::ostream & os, Row::Elements const & elts);
+
 
 /**
  * Each paragraph is broken up into a number of rows on the screen.

commit 4b69f5efa7825c3aa5464686f4ecaea212f73422
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Thu Sep 2 15:16:28 2021 +0200

    Fix setting of row pos/endpos (overlapping rows)
    
    In TextMetrics::breakParagraph, get rid of the fragile `pos' local
    variable, which was not correctly updated. Rely on the endpos of the
    last element in row instead.
    
    Rewrite cleanupRow to rely on the endpos of last the row element to
    set row endpos, instead of a `pos' parameter.

diff --git a/src/Row.cpp b/src/Row.cpp
index 7b74694..8233a96 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -463,8 +463,8 @@ void Row::pop_back()
 
 namespace {
 
-// Remove stuff after it from elts, and return it.
-// if init is provided, it will be in front of the rest
+// Remove stuff after \c it from \c elts, and return it.
+// if \c init is provided, it will prepended to the rest
 Row::Elements splitFrom(Row::Elements & elts, Row::Elements::iterator const & it,
                         Row::Element const & init = Row::Element())
 {
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 8812daf..d681a63 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1059,15 +1059,19 @@ Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
 }
 
 
-void cleanupRow(Row & row, pos_type pos, pos_type real_endpos, bool is_rtl)
+void cleanupRow(Row & row, pos_type real_endpos, bool is_rtl)
 {
-	row.endpos(pos);
+	if (row.empty()) {
+		row.endpos(0);
+		return;
+	}
+
+	row.endpos(row.back().endpos);
 	// remove trailing spaces on row break
-	if (pos < real_endpos && !row.empty())
+	if (row.endpos() < real_endpos)
 		row.back().rtrim();
 	// boundary exists when there was no space at the end of row
-	row.right_boundary(!row.empty() && pos < real_endpos
-	                   && row.back().endpos == pos);
+	row.right_boundary(row.endpos() < real_endpos && row.back().endpos == row.endpos());
 	// make sure that the RTL elements are in reverse ordering
 	row.reverseRTL(is_rtl);
 }
@@ -1095,7 +1099,6 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 	bool const is_rtl = text_->isRTL(bigrow.pit());
 	bool const end_label = text_->getEndLabel(bigrow.pit()) != END_LABEL_NO_LABEL;
 
-	pos_type pos = 0;
 	int width = 0;
 	flexible_const_iterator<Row> fcit = flexible_begin(bigrow);
 	flexible_const_iterator<Row> const end = flexible_end(bigrow);
@@ -1112,7 +1115,8 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 		                             : fcit->row_flags;
 		if (rows.empty() || needsRowBreak(f1, f2)) {
 			if (!rows.empty())
-				cleanupRow(rows.back(), pos, bigrow.endpos(), is_rtl);
+				cleanupRow(rows.back(), bigrow.endpos(), is_rtl);
+			pos_type pos = rows.empty() ? 0 : rows.back().endpos();
 			rows.push_back(newRow(*this, bigrow.pit(), pos, is_rtl));
 			// the width available for the row.
 			width = max_width_ - rows.back().right_margin;
@@ -1150,7 +1154,6 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 			// a new element in the row
 			rows.back().push_back(elt);
 			rows.back().finalizeLast();
-			pos = elt.endpos;
 
 			// Go to next element
 			++fcit;
@@ -1165,7 +1168,7 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 	}
 
 	if (!rows.empty()) {
-		cleanupRow(rows.back(), pos, bigrow.endpos(), is_rtl);
+		cleanupRow(rows.back(), bigrow.endpos(), is_rtl);
 		// Last row in paragraph is flushed
 		rows.back().flushed(true);
 	}

commit 41206351852757e82eeb98b0a22b586f8dbdd544
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Wed Sep 1 16:54:28 2021 +0200

    Get rid of need_new_row boolean in breakParagraph
    
    Instead of having breakParagraph decide when breaking a row is
    necessary, let Row::shortenIfNeeded set the row_flag of the last
    element to request a row break. This was already done in splitAt.
    
    This is in preparation of splitAt splitting in more than two elements.

diff --git a/src/Row.cpp b/src/Row.cpp
index d3529a3..7b74694 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -473,6 +473,8 @@ Row::Elements splitFrom(Row::Elements & elts, Row::Elements::iterator const & it
 		ret.push_back(init);
 	ret.insert(ret.end(), it, elts.end());
 	elts.erase(it, elts.end());
+	if (!elts.empty())
+		elts.back().row_flags = (elts.back().row_flags & ~AfterFlags) | BreakAfter;
 	return ret;
 }
 
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index a7dd300..8812daf 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1042,6 +1042,7 @@ bool operator==(flexible_const_iterator<T> const & t1,
 	return t1.cit_ == t2.cit_ && t1.pile_.empty() && t2.pile_.empty();
 }
 
+
 Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
 {
 	Row nrow;
@@ -1071,6 +1072,7 @@ void cleanupRow(Row & row, pos_type pos, pos_type real_endpos, bool is_rtl)
 	row.reverseRTL(is_rtl);
 }
 
+
 // Implement the priorities described in RowFlags.h.
 bool needsRowBreak(int f1, int f2)
 {
@@ -1093,14 +1095,12 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 	bool const is_rtl = text_->isRTL(bigrow.pit());
 	bool const end_label = text_->getEndLabel(bigrow.pit()) != END_LABEL_NO_LABEL;
 
-	bool need_new_row = true;
 	pos_type pos = 0;
 	int width = 0;
 	flexible_const_iterator<Row> fcit = flexible_begin(bigrow);
 	flexible_const_iterator<Row> const end = flexible_end(bigrow);
 	while (true) {
-		bool const has_row = !rows.empty();
-		bool const row_empty = !has_row || rows.back().empty();
+		bool const row_empty = rows.empty() || rows.back().empty();
 		// The row flags of previous element, if there is one.
 		// Otherwise we use NoBreakAfter to avoid an empty row before
 		// e.g. a displayed equation.
@@ -1110,14 +1110,12 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 		// paragraph has an end label (for which an empty row is OK).
 		int const f2 = (fcit == end) ? (end_label ? Inline : NoBreakBefore)
 		                             : fcit->row_flags;
-		need_new_row |= needsRowBreak(f1, f2);
-		if (need_new_row) {
+		if (rows.empty() || needsRowBreak(f1, f2)) {
 			if (!rows.empty())
 				cleanupRow(rows.back(), pos, bigrow.endpos(), is_rtl);
 			rows.push_back(newRow(*this, bigrow.pit(), pos, is_rtl));
 			// the width available for the row.
 			width = max_width_ - rows.back().right_margin;
-			need_new_row = false;
 		}
 
 		// The stopping condition is here because we may need a new
@@ -1147,7 +1145,6 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 			if (!next_elts.empty()) {
 				rb.flushed(false);
 				fcit.put(next_elts);
-				need_new_row = true;
 			}
 		} else {
 			// a new element in the row
@@ -1163,7 +1160,6 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 				// do as if we inserted this element in the original row
 				if (!next_elt.str.empty())
 					fcit.put(next_elt);
-				need_new_row = true;
 			}
 		}
 	}

commit ef6dfe18c2149c6b96a806badde9548d7fd9f912
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Aug 31 19:23:55 2021 +0200

    Centralize the code that removes trailing spaces from end row element.
    
    Move to Row::Element::rtrim the code in Row::shortenIfNeeded that
    removes trailing spaces from last element in row, so that it can be
    called when actually breaking a row.
    
    Fixes bug found by Kornel.

diff --git a/src/Row.cpp b/src/Row.cpp
index 38dbb85..d3529a3 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -35,7 +35,6 @@ using namespace std;
 
 namespace lyx {
 
-using support::rtrim;
 using frontend::FontMetrics;
 
 
@@ -162,6 +161,20 @@ Row::Element Row::Element::splitAt(int w, bool force)
 }
 
 
+void Row::Element::rtrim()
+{
+	if (type != STRING)
+		return;
+	/* This is intended for strings that have been created by splitAt.
+	 * They may have trailing spaces, but they are not counted in the
+	 * string length (QTextLayout feature, actually). We remove them,
+	 * and decrease endpos, since spaces at row break are invisible.
+	 */
+	str = support::rtrim(str);
+	endpos = pos + str.length();
+}
+
+
 bool Row::isMarginSelected(bool left, DocIterator const & beg,
 		DocIterator const & end) const
 {
@@ -539,14 +552,6 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 				break;
 			}
 			end_ = brk.endpos;
-			/* after breakAt, there may be spaces at the end of the
-			 * string, but they are not counted in the string length
-			 * (QTextLayout feature, actually). We remove them, but do
-			 * not change the end of the row, since spaces at row
-			 * break are invisible.
-			 */
-			brk.str = rtrim(brk.str);
-			brk.endpos = brk.pos + brk.str.length();
 			*cit_brk = brk;
 			dim_.wid = wid_brk + brk.dim.wid;
 			// If there are other elements, they should be removed.
@@ -578,11 +583,8 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 	 * boundary this time.
 	 */
 	Element remainder = cit->splitAt(w - wid, true);
-	if (remainder.isValid()) {
+	if (cit->row_flags & BreakAfter) {
 		end_ = cit->endpos;
-		// See comment above.
-		cit->str = rtrim(cit->str);
-		cit->endpos = cit->pos + cit->str.length();
 		dim_.wid = wid + cit->dim.wid;
 		// If there are other elements, they should be removed.
 		return splitFrom(elements_, next(cit, 1), remainder);
diff --git a/src/Row.h b/src/Row.h
index b0b1755..7466797 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -101,6 +101,8 @@ public:
 		 *   respects the row breaking rules of characters.
 		 */
 		Element splitAt(int w, bool force);
+		// remove trailing spaces (useful for end of row)
+		void rtrim();
 
 		//
 		bool isRTL() const { return font.isVisibleRightToLeft(); }
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 37894f6..a7dd300 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1061,6 +1061,10 @@ Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
 void cleanupRow(Row & row, pos_type pos, pos_type real_endpos, bool is_rtl)
 {
 	row.endpos(pos);
+	// remove trailing spaces on row break
+	if (pos < real_endpos && !row.empty())
+		row.back().rtrim();
+	// boundary exists when there was no space at the end of row
 	row.right_boundary(!row.empty() && pos < real_endpos
 	                   && row.back().endpos == pos);
 	// make sure that the RTL elements are in reverse ordering

commit 6e6976fbc5a61928c51c5193de985e26d94454bd
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Aug 31 15:58:56 2021 +0200

    Handle the case where breakAt cuts after trailing space
    
    In this case, the extra element returned should empty but valid. The
    row flag BreakAfter is set to indicate that we have a break there
    (this principle will be used more generally in a forthcoming commit).
    
    To detect that we cut at the trailing space, it is necessary to rely
    on the difference between QTextLine::horizontalAdvance() and
    QTextLine::naturalTextWidth() when the flag
    QTextOption::IncludeTrailingSpaces is used: the trailing space is
    taken into account in the later, but not in the former.
    
    Somme comments have been added to make code intent clearer.

diff --git a/src/Row.cpp b/src/Row.cpp
index 6e975a5..38dbb85 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -142,13 +142,19 @@ Row::Element Row::Element::splitAt(int w, bool force)
 	dim.wid = w;
 	int const i = fm.breakAt(str, dim.wid, isRTL(), force);
 	if (i != -1) {
+		//Create a second row element to return
 		Element ret(STRING, pos + i, font, change);
 		ret.str = str.substr(i);
 		ret.endpos = ret.pos + ret.str.length();
+		// Copy the after flags of the original element to the second one.
 		ret.row_flags = row_flags & (CanBreakInside | AfterFlags);
+
+		// Now update ourselves
 		str.erase(i);
 		endpos = pos + i;
-		//lyxerr << "breakAt(" << w << ")  Row element Broken at " << x << "(w(str)=" << fm.width(str) << "): e=" << *this << endl;
+		// Row should be broken after the original element
+		row_flags = (row_flags & ~AfterFlags) | BreakAfter;
+		//LYXERR0("breakAt(" << w << ")  Row element Broken at " << w << "(w(str)=" << fm.width(str) << "): e=" << *this);
 		return ret;
 	}
 
@@ -251,7 +257,7 @@ ostream & operator<<(ostream & os, Row::Element const & e)
 		os << "INVALID: ";
 		break;
 	}
-	os << "width=" << e.full_width();
+	os << "width=" << e.full_width() << ", row_flags=" << e.row_flags;
 	return os;
 }
 
@@ -522,7 +528,7 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 		 *   break-up.
 		 */
 		Element remainder = brk.splitAt(min(w - wid_brk, brk.dim.wid - 2), !word_wrap);
-		if (remainder.isValid()) {
+		if (brk.row_flags & BreakAfter) {
 			/* if this element originally did not cause a row overflow
 			 * in itself, and the remainder of the row would still be
 			 * too large after breaking, then we will have issues in
@@ -544,7 +550,11 @@ Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 			*cit_brk = brk;
 			dim_.wid = wid_brk + brk.dim.wid;
 			// If there are other elements, they should be removed.
-			return splitFrom(elements_, next(cit_brk, 1), remainder);
+			// remainder can be empty when splitting at trailing space
+			if (remainder.str.empty())
+				return splitFrom(elements_, next(cit_brk, 1));
+			else
+				return splitFrom(elements_, next(cit_brk, 1), remainder);
 		}
 	}
 
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index c7e84f6..37894f6 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1157,7 +1157,8 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 			// Add a new next element on the pile
 			if (next_elt.isValid()) {
 				// do as if we inserted this element in the original row
-				fcit.put(next_elt);
+				if (!next_elt.str.empty())
+					fcit.put(next_elt);
 				need_new_row = true;
 			}
 		}
diff --git a/src/frontends/qt/GuiFontMetrics.cpp b/src/frontends/qt/GuiFontMetrics.cpp
index 56ed676..47537ae 100644
--- a/src/frontends/qt/GuiFontMetrics.cpp
+++ b/src/frontends/qt/GuiFontMetrics.cpp
@@ -525,6 +525,9 @@ GuiFontMetrics::breakAt_helper(docstring const & s, int const x,
 	QTextOption to;
 	to.setWrapMode(force ? QTextOption::WrapAtWordBoundaryOrAnywhere
 	                     : QTextOption::WordWrap);
+	// Let QTextLine::naturalTextWidth() account for trailing spaces
+	// (horizontalAdvance() still does not).
+	to.setFlags(QTextOption::IncludeTrailingSpaces);
 	tl.setTextOption(to);
 	tl.beginLayout();
 	QTextLine line = tl.createLine();
@@ -557,8 +560,11 @@ GuiFontMetrics::breakAt_helper(docstring const & s, int const x,
 		--len;
 	LASSERT(len > 0 || qlen == 0, /**/);
 #endif
-	// Do not cut is the string is already short enough
-	if (len == static_cast<int>(s.length())) {
+	// Do not cut is the string is already short enough. We rely on
+	// naturalTextWidth() to catch the case where we cut at the trailing
+	// space.
+	if (len == static_cast<int>(s.length())
+		&& line.naturalTextWidth() <= x) {
 		len = -1;
 #if QT_VERSION < 0x050000
 		// With some monospace fonts, the value of horizontalAdvance()

commit 6bc50fea3a071ea3560fdacf4f2bb2d20e68e9e2
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Mon Aug 30 15:48:44 2021 +0200

    Workaround for Qt 4
    
    At least with Qt 4.8.7 on Ubuntu 16.04, QTextLine::lineWidth() can
    return a bogus value, at least with Courier font. One hypothesis is
    that the invisible characters that we use in breakAt_helper are given
    a non-null width.
    
    Work around it, although the exact bug has not been pinpointed.

diff --git a/src/frontends/qt/GuiFontMetrics.cpp b/src/frontends/qt/GuiFontMetrics.cpp
index 25bf7a4..56ed676 100644
--- a/src/frontends/qt/GuiFontMetrics.cpp
+++ b/src/frontends/qt/GuiFontMetrics.cpp
@@ -531,7 +531,7 @@ GuiFontMetrics::breakAt_helper(docstring const & s, int const x,
 	line.setLineWidth(x);
 	tl.createLine();
 	tl.endLayout();
-	int const line_wid = iround(line.horizontalAdvance());
+	int line_wid = iround(line.horizontalAdvance());
 	if ((force && line.textLength() == offset) || line_wid > x)
 		return {-1, line_wid};
 	/* Since QString is UTF-16 and docstring is UCS-4, the offsets may
@@ -557,9 +557,16 @@ GuiFontMetrics::breakAt_helper(docstring const & s, int const x,
 		--len;
 	LASSERT(len > 0 || qlen == 0, /**/);
 #endif
-	// si la chaîne est déjà trop courte, on ne coupe pas
-	if (len == static_cast<int>(s.length()))
+	// Do not cut is the string is already short enough
+	if (len == static_cast<int>(s.length())) {
 		len = -1;
+#if QT_VERSION < 0x050000
+		// With some monospace fonts, the value of horizontalAdvance()
+		// can be wrong with Qt4. One hypothesis is that the invisible
+		// characters that we use are given a non-null width.
+		line_wid = width(s);
+#endif
+	}
 	return {len, line_wid};
 }
 

commit d694701315c297d13bde6ff80897aa016767f1ea
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Jul 20 00:07:13 2021 +0200

    Last step of transition: use sortenIfNeeded again.
    
    Change semantics of Row::shortenIfNeeded: instead of breaking the row
    and returning a boolean, it returns the list of row elements that have
    been removed (or broken) from the row. The logic of the method remains
    the same.
    
    Use shortenIfNeeded in breakParagraph. This was the last missing block.
    
    Remove Row::breakAt and the old breakRow. Only bugs remain now :)

diff --git a/src/Row.cpp b/src/Row.cpp
index 3bc8ef0..6e975a5 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -156,12 +156,6 @@ Row::Element Row::Element::splitAt(int w, bool force)
 }
 
 
-bool Row::Element::breakAt(int w, bool force)
-{
-	return splitAt(w, force).isValid();
-}
-
-
 bool Row::isMarginSelected(bool left, DocIterator const & beg,
 		DocIterator const & end) const
 {
@@ -448,10 +442,31 @@ void Row::pop_back()
 }
 
 
-bool Row::shortenIfNeeded(int const w, int const next_width)
+namespace {
+
+// Remove stuff after it from elts, and return it.
+// if init is provided, it will be in front of the rest
+Row::Elements splitFrom(Row::Elements & elts, Row::Elements::iterator const & it,
+                        Row::Element const & init = Row::Element())
+{
+	Row::Elements ret;
+	if (init.isValid())
+		ret.push_back(init);
+	ret.insert(ret.end(), it, elts.end());
+	elts.erase(it, elts.end());
+	return ret;
+}
+
+}
+
+
+Row::Elements Row::shortenIfNeeded(int const w, int const next_width)
 {
+	// FIXME: performance: if the last element is a string, we would
+	// like to avoid computing its length.
+	finalizeLast();
 	if (empty() || width() <= w)
-		return false;
+		return Elements();
 
 	Elements::iterator const beg = elements_.begin();
 	Elements::iterator const end = elements_.end();
@@ -467,8 +482,8 @@ bool Row::shortenIfNeeded(int const w, int const next_width)
 
 	if (cit == end) {
 		// This should not happen since the row is too long.
-		LYXERR0("Something is wrong cannot shorten row: " << *this);
-		return false;
+		LYXERR0("Something is wrong, cannot shorten row: " << *this);
+		return Elements();
 	}
 
 	// Iterate backwards over breakable elements and try to break them
@@ -486,8 +501,7 @@ bool Row::shortenIfNeeded(int const w, int const next_width)
 		if (wid_brk <= w && brk.row_flags & CanBreakAfter) {
 			end_ = brk.endpos;
 			dim_.wid = wid_brk;
-			elements_.erase(cit_brk + 1, end);
-			return true;
+			return splitFrom(elements_, cit_brk + 1);
 		}
 		// assume now that the current element is not there
 		wid_brk -= brk.dim.wid;
@@ -507,7 +521,8 @@ bool Row::shortenIfNeeded(int const w, int const next_width)
 		 * - shorter than the natural width of the element, in order to enforce
 		 *   break-up.
 		 */
-		if (brk.breakAt(min(w - wid_brk, brk.dim.wid - 2), !word_wrap)) {
+		Element remainder = brk.splitAt(min(w - wid_brk, brk.dim.wid - 2), !word_wrap);
+		if (remainder.isValid()) {
 			/* if this element originally did not cause a row overflow
 			 * in itself, and the remainder of the row would still be
 			 * too large after breaking, then we will have issues in
@@ -529,14 +544,13 @@ bool Row::shortenIfNeeded(int const w, int const next_width)
 			*cit_brk = brk;
 			dim_.wid = wid_brk + brk.dim.wid;
 			// If there are other elements, they should be removed.
-			elements_.erase(cit_brk + 1, end);
-			return true;
+			return splitFrom(elements_, next(cit_brk, 1), remainder);
 		}
 	}
 
-	if (cit != beg && cit->type == VIRTUAL) {
-		// It is not possible to separate a virtual element from the
-		// previous one.
+	if (cit != beg && cit->row_flags & NoBreakBefore) {
+		// It is not possible to separate this element from the
+		// previous one. (e.g. VIRTUAL)
 		--cit;
 		wid -= cit->dim.wid;
 	}
@@ -546,25 +560,24 @@ bool Row::shortenIfNeeded(int const w, int const next_width)
 		// been added. We can cut right here.
 		end_ = cit->pos;
 		dim_.wid = wid;
-		elements_.erase(cit, end);
-		return true;
+		return splitFrom(elements_, cit);
 	}
 
 	/* If we are here, it means that we have not found a separator to
 	 * shorten the row. Let's try to break it again, but not at word
 	 * boundary this time.
 	 */
-	if (cit->breakAt(w - wid, true)) {
+	Element remainder = cit->splitAt(w - wid, true);
+	if (remainder.isValid()) {
 		end_ = cit->endpos;
 		// See comment above.
 		cit->str = rtrim(cit->str);
 		cit->endpos = cit->pos + cit->str.length();
 		dim_.wid = wid + cit->dim.wid;
 		// If there are other elements, they should be removed.
-		elements_.erase(next(cit, 1), end);
-		return true;
+		return splitFrom(elements_, next(cit, 1), remainder);
 	}
-	return false;
+	return Elements();
 }
 
 
diff --git a/src/Row.h b/src/Row.h
index 72d7a86..b0b1755 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -101,12 +101,6 @@ public:
 		 *   respects the row breaking rules of characters.
 		 */
 		Element splitAt(int w, bool force);
-		/** Break the element if possible, so that its width is less
-		 * than \param w. Returns true on success. When \param force
-		 * is true, the string is cut at any place, otherwise it
-		 * respects the row breaking rules of characters.
-		 */
-		bool breakAt(int w, bool force);
 
 		//
 		bool isRTL() const { return font.isVisibleRightToLeft(); }
@@ -296,7 +290,7 @@ public:
 	 * \param available width on next row.
 	 * \return true if the row has been shortened.
 	 */
-	bool shortenIfNeeded(int const width, int const next_width);
+	Elements shortenIfNeeded(int const width, int const next_width);
 
 	/**
 	 * If last element of the row is a string, compute its width
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 1a6927a..c7e84f6 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -491,7 +491,7 @@ bool TextMetrics::redoParagraph(pit_type const pit, bool const align_rows)
 
 		// If there is an end of paragraph marker, its size should be
 		// substracted to the available width. The logic here is
-		// almost the same as in breakRow, remember keep them in sync.
+		// almost the same as in tokenizeParagraph, remember keep them in sync.
 		int eop = 0;
 		if (e.pos + 1 == par.size()
 		      && (lyxrc.paragraph_markers || par.lookupChange(par.size()).changed())
@@ -1006,6 +1006,11 @@ public:
 
 	void put(value_type const & e) { pile_.push_back(e); }
 
+	// Put a sequence of elements on the pile (in reverse order!)
+	void put(vector<value_type> const & elts) {
+		pile_.insert(pile_.end(), elts.rbegin(), elts.rend());
+	}
+
 // This should be private, but declaring the friend functions is too much work
 //private:
 	typename T::const_iterator cit_;
@@ -1121,19 +1126,40 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 		Row::Element elt = *fcit;
 		Row::Element next_elt = elt.splitAt(width - rows.back().width(),
 		                                    !elt.font.language()->wordWrap());
-		// a new element in the row
-		rows.back().push_back(elt);
-		rows.back().finalizeLast();
-		pos = elt.endpos;
-
-		// Go to next element
-		++fcit;
-
-		// Add a new next element on the pile
-		if (next_elt.isValid()) {
-			// do as if we inserted this element in the original row
-			fcit.put(next_elt);
-			need_new_row = true;
+		if (elt.dim.wid > width - rows.back().width()) {
+			Row & rb = rows.back();
+			rb.push_back(*fcit);
+			// if the row is too large, try to cut at last separator. In case
+			// of success, reset indication that the row was broken abruptly.
+			int const next_width = max_width_ - leftMargin(rb.pit(), rb.endpos())
+				- rightMargin(rb.pit());
+
+			Row::Elements next_elts = rb.shortenIfNeeded(width, next_width);
+
+			// Go to next element
+			++fcit;
+
+			// Handle later the elements returned by shortenIfNeeded.
+			if (!next_elts.empty()) {
+				rb.flushed(false);
+				fcit.put(next_elts);
+				need_new_row = true;
+			}
+		} else {
+			// a new element in the row
+			rows.back().push_back(elt);
+			rows.back().finalizeLast();
+			pos = elt.endpos;
+
+			// Go to next element
+			++fcit;
+
+			// Add a new next element on the pile
+			if (next_elt.isValid()) {
+				// do as if we inserted this element in the original row
+				fcit.put(next_elt);
+				need_new_row = true;
+			}
 		}
 	}
 
@@ -1146,185 +1172,6 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 	return rows;
 }
 
-/** This is the function where the hard work is done. The code here is
- * very sensitive to small changes :) Note that part of the
- * intelligence is also in Row::shortenIfNeeded.
- */
-bool TextMetrics::breakRow(Row & row, int const right_margin) const
-{
-	LATTEST(row.empty());//
-	Paragraph const & par = text_->getPar(row.pit());//
-	Buffer const & buf = text_->inset().buffer();//
-	BookmarksSection::BookmarkPosList bpl =//
-		theSession().bookmarks().bookmarksInPar(buf.fileName(), par.id());//
-
-	pos_type const end = par.size();//
-	pos_type const pos = row.pos();//
-	pos_type const body_pos = par.beginOfBody();//
-	bool const is_rtl = text_->isRTL(row.pit());//
-	bool need_new_row = false;//
-
-	row.left_margin = leftMargin(row.pit(), pos);//
-	row.right_margin = right_margin;//
-	if (is_rtl)//
-		swap(row.left_margin, row.right_margin);//
-	// Remember that the row width takes into account the left_margin
-	// but not the right_margin.
-	row.dim().wid = row.left_margin;//
-	// the width available for the row.
-	int const width = max_width_ - row.right_margin;//
-
-	// check for possible inline completion
-	DocIterator const & ic_it = bv_->inlineCompletionPos();//
-	pos_type ic_pos = -1;//
-	if (ic_it.inTexted() && ic_it.text() == text_ && ic_it.pit() == row.pit())//
-		ic_pos = ic_it.pos();//
-
-	// Now we iterate through until we reach the right margin
-	// or the end of the par, then build a representation of the row.
-	pos_type i = pos;//---------------------------------------------------vvv
-	FontIterator fi = FontIterator(*this, par, row.pit(), pos);
-	// The real stopping condition is a few lines below.
-	while (true) {
-		// Firstly, check whether there is a bookmark here.
-		if (lyxrc.bookmarks_visibility == LyXRC::BMK_INLINE)
-			for (auto const & bp_p : bpl)
-				if (bp_p.second == i) {
-					Font f = *fi;
-					f.fontInfo().setColor(Color_bookmark);
-					// ❶ U+2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE
-					char_type const ch = 0x2775 + bp_p.first;
-					row.addVirtual(i, docstring(1, ch), f, Change());
-				}
-
-		// The stopping condition is here so that the display of a
-		// bookmark can take place at paragraph start too.
-		if (i >= end || (i != pos && row.width() > width))//^width
-			break;
-
-		char_type c = par.getChar(i);
-		// The most special cases are handled first.
-		if (par.isInset(i)) {
-			Inset const * ins = par.getInset(i);
-			Dimension dim = bv_->coordCache().insets().dim(ins);
-			row.add(i, ins, dim, *fi, par.lookupChange(i));
-		} else if (c == ' ' && i + 1 == body_pos) {
-			// There is a space at i, but it should not be
-			// added as a separator, because it is just
-			// before body_pos. Instead, insert some spacing to
-			// align text
-			FontMetrics const & fm = theFontMetrics(text_->labelFont(par));
-			// this is needed to make sure that the row width is correct
-			row.finalizeLast();
-			int const add = max(fm.width(par.layout().labelsep),
-			                    labelEnd(row.pit()) - row.width());
-			row.addSpace(i, add, *fi, par.lookupChange(i));
-		} else if (c == '\t')
-			row.addSpace(i, theFontMetrics(*fi).width(from_ascii("    ")),
-				     *fi, par.lookupChange(i));
-		else if (c == 0x2028 || c == 0x2029) {
-			/**
-			 * U+2028 LINE SEPARATOR
-			 * U+2029 PARAGRAPH SEPARATOR
-
-			 * These are special unicode characters that break
-			 * lines/pragraphs. Not handling them lead to trouble wrt
-			 * Qt QTextLayout formatting. We add a visible character
-			 * on screen so that the user can see that something is
-			 * happening.
-			*/
-			row.finalizeLast();
-			// ⤶ U+2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
-			// ¶ U+00B6 PILCROW SIGN
-			char_type const screen_char = (c == 0x2028) ? 0x2936 : 0x00B6;
-			row.add(i, screen_char, *fi, par.lookupChange(i), i >= body_pos);
-		} else
-			row.add(i, c, *fi, par.lookupChange(i), i >= body_pos);
-
-		// add inline completion width
-		// draw logically behind the previous character
-		if (ic_pos == i + 1 && !bv_->inlineCompletion().empty()) {
-			docstring const comp = bv_->inlineCompletion();
-			size_t const uniqueTo =bv_->inlineCompletionUniqueChars();
-			Font f = *fi;
-
-			if (uniqueTo > 0) {
-				f.fontInfo().setColor(Color_inlinecompletion);
-				row.addVirtual(i + 1, comp.substr(0, uniqueTo), f, Change());
-			}
-			f.fontInfo().setColor(Color_nonunique_inlinecompletion);
-			row.addVirtual(i + 1, comp.substr(uniqueTo), f, Change());
-		}
-
-		// Handle some situations that abruptly terminate the row
-		// - Before an inset with BreakBefore
-		// - After an inset with BreakAfter
-		Inset const * prevInset = !row.empty() ? row.back().inset : 0;
-		Inset const * nextInset = (i + 1 < end) ? par.getInset(i + 1) : 0;
-		if ((nextInset && nextInset->rowFlags() & BreakBefore)
-		    || (prevInset && prevInset->rowFlags() & BreakAfter)) {
-			row.flushed(true);
-			// Force a row creation after this one if it is ended by
-			// an inset that either
-			// - has row flag RowAfter that enforces that;
-			// - or (1) did force the row breaking, (2) is at end of
-			//   paragraph and (3) the said paragraph has an end label.
-			need_new_row = prevInset &&
-				(prevInset->rowFlags() & AlwaysBreakAfter
-				 || (prevInset->rowFlags() & BreakAfter && i + 1 == end
-				     && text_->getEndLabel(row.pit()) != END_LABEL_NO_LABEL));
-			++i;
-			break;
-		}
-
-		++i;
-		++fi;
-	}
-	row.finalizeLast();
-	row.endpos(i);
-
-	// End of paragraph marker. The logic here is almost the
-	// same as in redoParagraph, remember keep them in sync.
-	ParagraphList const & pars = text_->paragraphs();
-	Change const & change = par.lookupChange(i);
-	if ((lyxrc.paragraph_markers || change.changed())
-	    && !need_new_row // not this
-	    && i == end && size_type(row.pit() + 1) < pars.size()) {
-		// add a virtual element for the end-of-paragraph
-		// marker; it is shown on screen, but does not exist
-		// in the paragraph.
-		Font f(text_->layoutFont(row.pit()));
-		f.fontInfo().setColor(Color_paragraphmarker);
-		f.setLanguage(par.getParLanguage(buf.params()));
-		// ¶ U+00B6 PILCROW SIGN
-		row.addVirtual(end, docstring(1, char_type(0x00B6)), f, change);
-	}
-
-	// Is there a end-of-paragaph change?
-	if (i == end && par.lookupChange(end).changed() && !need_new_row)
-		row.needsChangeBar(true);
-    //--------------------------------------------------------------------^^^
-	// FIXME : nothing below this
-
-	// if the row is too large, try to cut at last separator. In case
-	// of success, reset indication that the row was broken abruptly.
-	int const next_width = max_width_ - leftMargin(row.pit(), row.endpos())
-		- rightMargin(row.pit());
-
-	if (row.shortenIfNeeded(width, next_width))
-		row.flushed(false);
-	row.right_boundary(!row.empty() && row.endpos() < end//
-	                   && row.back().endpos == row.endpos());//
-	// Last row in paragraph is flushed
-	if (row.endpos() == end)//
-		row.flushed(true);//
-
-	// make sure that the RTL elements are in reverse ordering
-	row.reverseRTL(is_rtl);//
-	//LYXERR0("breakrow: row is " << row);
-
-	return need_new_row;
-}
 
 int TextMetrics::parTopSpacing(pit_type const pit) const
 {
diff --git a/src/TextMetrics.h b/src/TextMetrics.h
index 3ff1161..e38ba71 100644
--- a/src/TextMetrics.h
+++ b/src/TextMetrics.h
@@ -151,15 +151,12 @@ private:
 	/// FIXME??
 	int labelEnd(pit_type const pit) const;
 
+	// Turn paragraph oh index \c pit into a single row
 	Row tokenizeParagraph(pit_type pit) const;
 
+	// Break the row produced by tokenizeParagraph() into a list of rows.
 	RowList breakParagraph(Row const & row) const;
 
-	/// sets row.end to the pos value *after* which a row should break.
-	/// for example, the pos after which isNewLine(pos) == true
-	/// \return true when another row is required (after a newline)
-	bool breakRow(Row & row, int right_margin) const;
-
 	// Expands the alignment of row \param row in paragraph \param par
 	LyXAlignment getAlign(Paragraph const & par, Row const & row) const;
 	/// Aligns properly the row contents (computes spaces and fills)

commit 0ea1807a5260896bf7a6bcec1893fe7f22a41f57
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Jul 18 01:09:33 2021 +0200

    Implement handling of row_flags for row breaking
    
    To this end, add the helper function needsRowBreak which computes the
    effect of two consecutive row flags. This function implements the
    priorities described in RowFlags.h.
    
    This function is called with the relevant flags, or NoBreak* when at
    boundaries and updates need_new_row.
    
    Some common code is factored in a new cleanupRow() helper.

diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index fa855e4..1a6927a 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -980,22 +980,6 @@ Row TextMetrics::tokenizeParagraph(pit_type const pit) const
 
 namespace {
 
-Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
-{
-	Row nrow;
-	nrow.pit(pit);
-	nrow.pos(pos);
-	nrow.left_margin = tm.leftMargin(pit, pos);
-	nrow.right_margin = tm.rightMargin(pit);
-	if (is_rtl)
-		swap(nrow.left_margin, nrow.right_margin);
-	// Remember that the row width takes into account the left_margin
-	// but not the right_margin.
-	nrow.dim().wid = nrow.left_margin;
-	return nrow;
-}
-
-
 /** Helper template flexible_const_iterator<T>
  * A way to iterate over a const container, but insert fake elements in it.
  * In the case of a row, we will have to break some elements, which
@@ -1018,6 +1002,8 @@ public:
 
 	value_type operator*() const { return pile_.empty() ? *cit_ : pile_.back(); }
 
+	value_type const * operator->() const { return pile_.empty() ? &*cit_ : &pile_.back(); }
+
 	void put(value_type const & e) { pile_.push_back(e); }
 
 // This should be private, but declaring the friend functions is too much work
@@ -1051,6 +1037,44 @@ bool operator==(flexible_const_iterator<T> const & t1,
 	return t1.cit_ == t2.cit_ && t1.pile_.empty() && t2.pile_.empty();
 }
 
+Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
+{
+	Row nrow;
+	nrow.pit(pit);
+	nrow.pos(pos);
+	nrow.left_margin = tm.leftMargin(pit, pos);
+	nrow.right_margin = tm.rightMargin(pit);
+	if (is_rtl)
+		swap(nrow.left_margin, nrow.right_margin);
+	// Remember that the row width takes into account the left_margin
+	// but not the right_margin.
+	nrow.dim().wid = nrow.left_margin;
+	return nrow;
+}
+
+
+void cleanupRow(Row & row, pos_type pos, pos_type real_endpos, bool is_rtl)
+{
+	row.endpos(pos);
+	row.right_boundary(!row.empty() && pos < real_endpos
+	                   && row.back().endpos == pos);
+	// make sure that the RTL elements are in reverse ordering
+	row.reverseRTL(is_rtl);
+}
+
+// Implement the priorities described in RowFlags.h.
+bool needsRowBreak(int f1, int f2)
+{
+	if (f1 & AlwaysBreakAfter /*|| f2 & AlwaysBreakBefore*/)
+		return true;
+	if (f1 & NoBreakAfter || f2 & NoBreakBefore)
+		return false;
+	if (f1 & BreakAfter || f2 & BreakBefore)
+		return true;
+	return false;
+}
+
+
 }
 
 
@@ -1058,6 +1082,7 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 {
 	RowList rows;
 	bool const is_rtl = text_->isRTL(bigrow.pit());
+	bool const end_label = text_->getEndLabel(bigrow.pit()) != END_LABEL_NO_LABEL;
 
 	bool need_new_row = true;
 	pos_type pos = 0;
@@ -1065,15 +1090,21 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 	flexible_const_iterator<Row> fcit = flexible_begin(bigrow);
 	flexible_const_iterator<Row> const end = flexible_end(bigrow);
 	while (true) {
+		bool const has_row = !rows.empty();
+		bool const row_empty = !has_row || rows.back().empty();
+		// The row flags of previous element, if there is one.
+		// Otherwise we use NoBreakAfter to avoid an empty row before
+		// e.g. a displayed equation.
+		int const f1 = row_empty ? NoBreakAfter : rows.back().back().row_flags;
+		// The row flags of next element, if there is one.
+		// Otherwise we use NoBreakBefore (see above), unless the
+		// paragraph has an end label (for which an empty row is OK).
+		int const f2 = (fcit == end) ? (end_label ? Inline : NoBreakBefore)
+		                             : fcit->row_flags;
+		need_new_row |= needsRowBreak(f1, f2);
 		if (need_new_row) {
-			if (!rows.empty()) {
-				Row & rb = rows.back();
-				rb.endpos(pos);
-				rb.right_boundary(!rb.empty() && rb.endpos() < bigrow.endpos()
-								   && rb.back().endpos == rb.endpos());
-				// make sure that the RTL elements are in reverse ordering
-				rb.reverseRTL(is_rtl);
-			}
+			if (!rows.empty())
+				cleanupRow(rows.back(), pos, bigrow.endpos(), is_rtl);
 			rows.push_back(newRow(*this, bigrow.pit(), pos, is_rtl));
 			// the width available for the row.
 			width = max_width_ - rows.back().right_margin;
@@ -1107,13 +1138,9 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 	}
 
 	if (!rows.empty()) {
-		Row & rb = rows.back();
+		cleanupRow(rows.back(), pos, bigrow.endpos(), is_rtl);
 		// Last row in paragraph is flushed
-		rb.flushed(true);
-		rb.endpos(bigrow.endpos());
-		rb.right_boundary(false);
-		// make sure that the RTL elements are in reverse ordering
-		rb.reverseRTL(is_rtl);
+		rows.back().flushed(true);
 	}
 
 	return rows;
@@ -1227,9 +1254,8 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 			}
 			f.fontInfo().setColor(Color_nonunique_inlinecompletion);
 			row.addVirtual(i + 1, comp.substr(uniqueTo), f, Change());
-		}//---------------------------------------------------------------^^^
+		}
 
-		// FIXME: Handle when breaking the rows
 		// Handle some situations that abruptly terminate the row
 		// - Before an inset with BreakBefore
 		// - After an inset with BreakAfter
@@ -1254,7 +1280,6 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 		++i;
 		++fi;
 	}
-	//--------------------------------------------------------------------vvv
 	row.finalizeLast();
 	row.endpos(i);
 

commit 890fcc08729fea5b1b8e6dba7f0e27d1e266c3aa
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sat Jul 17 23:16:15 2021 +0200

    Change the way the element's width is updated.
    
    Remove the code that computed the width every 30 characters (yay!).
    Make sure that finalizeLast() is called after inserting a row element in
    a row in breakParagraph.

diff --git a/src/Row.cpp b/src/Row.cpp
index 705a147..3bc8ef0 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -370,8 +370,7 @@ void Row::finalizeLast()
 	if (elt.change.changed())
 		changebar_ = true;
 
-	if (elt.type == STRING) {
-		dim_.wid -= elt.dim.wid;
+	if (elt.type == STRING && elt.dim.wid == 0) {
 		elt.dim.wid = theFontMetrics(elt.font).width(elt.str);
 		dim_.wid += elt.dim.wid;
 	}
@@ -401,16 +400,8 @@ void Row::add(pos_type const pos, char_type const c,
 		e.row_flags = can_break ? CanBreakInside : Inline;
 		elements_.push_back(e);
 	}
-	if (back().str.length() % 30 == 0) {
-		dim_.wid -= back().dim.wid;
-		back().str += c;
-		back().endpos = pos + 1;
-		back().dim.wid = theFontMetrics(back().font).width(back().str);
-		dim_.wid += back().dim.wid;
-	} else {
-		back().str += c;
-		back().endpos = pos + 1;
-	}
+	back().str += c;
+	back().endpos = pos + 1;
 }
 
 
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index b5ba974..fa855e4 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1092,6 +1092,7 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 		                                    !elt.font.language()->wordWrap());
 		// a new element in the row
 		rows.back().push_back(elt);
+		rows.back().finalizeLast();
 		pos = elt.endpos;
 
 		// Go to next element

commit 49115315ea751332d3f8f8a0770cf8427a2c9640
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sat Jul 17 02:31:49 2021 +0200

    Introduce helper template to simplify breakParagraph code
    
    This is a semi-generic iterator for iterating over a container and
    pretend that we add elements to it along the way.

diff --git a/src/Row.h b/src/Row.h
index 4fdcee4..72d7a86 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -150,6 +150,8 @@ public:
 		friend std::ostream & operator<<(std::ostream & os, Element const & row);
 	};
 
+	///
+	typedef Element value_type;
 
 	///
 	Row() {}
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 00d65da..b5ba974 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -995,6 +995,62 @@ Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
 	return nrow;
 }
 
+
+/** Helper template flexible_const_iterator<T>
+ * A way to iterate over a const container, but insert fake elements in it.
+ * In the case of a row, we will have to break some elements, which
+ * create new ones. This class allows to abstract this.
+ * Only the required parts are implemented for now.
+ */
+template<class T>
+class flexible_const_iterator {
+	typedef typename T::value_type value_type;
+public:
+
+	//
+	flexible_const_iterator operator++() {
+		if (pile_.empty())
+			++cit_;
+		else
+			pile_.pop_back();
+		return *this;
+	}
+
+	value_type operator*() const { return pile_.empty() ? *cit_ : pile_.back(); }
+
+	void put(value_type const & e) { pile_.push_back(e); }
+
+// This should be private, but declaring the friend functions is too much work
+//private:
+	typename T::const_iterator cit_;
+	// A vector that is used as like a pile to store the elements to
+	// consider before incrementing the underlying iterator.
+	vector<value_type> pile_;
+};
+
+
+template<class T>
+flexible_const_iterator<T> flexible_begin(T const & t)
+{
+	return { t.begin(), vector<typename T::value_type>() };
+}
+
+
+template<class T>
+flexible_const_iterator<T> flexible_end(T const & t)
+{
+	return { t.end(), vector<typename T::value_type>() };
+}
+
+
+// Equality is only possible if respective piles are empty
+template<class T>
+bool operator==(flexible_const_iterator<T> const & t1,
+                flexible_const_iterator<T> const & t2)
+{
+	return t1.cit_ == t2.cit_ && t1.pile_.empty() && t2.pile_.empty();
+}
+
 }
 
 
@@ -1006,11 +1062,8 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 	bool need_new_row = true;
 	pos_type pos = 0;
 	int width = 0;
-	Row::const_iterator cit = bigrow.begin();
-	Row::const_iterator const end = bigrow.end();
-	// This is a vector, but we use it like a pile putting and taking
-	// stuff at the back.
-	Row::Elements pile;
+	flexible_const_iterator<Row> fcit = flexible_begin(bigrow);
+	flexible_const_iterator<Row> const end = flexible_end(bigrow);
 	while (true) {
 		if (need_new_row) {
 			if (!rows.empty()) {
@@ -1029,27 +1082,25 @@ RowList TextMetrics::breakParagraph(Row const & bigrow) const
 
 		// The stopping condition is here because we may need a new
 		// empty row at the end.
-		if (cit == end && pile.empty())
+		if (fcit == end)
 			break;
 
 		// Next element to consider is either the top of the temporary
 		// pile, or the place when we were in main row
-		Row::Element elt = pile.empty() ? *cit : pile.back();
-		//LYXERR0("elt=" << elt);
+		Row::Element elt = *fcit;
 		Row::Element next_elt = elt.splitAt(width - rows.back().width(),
 		                                    !elt.font.language()->wordWrap());
-		//LYXERR0("next_elt=" << next_elt);
 		// a new element in the row
 		rows.back().push_back(elt);
 		pos = elt.endpos;
+
 		// Go to next element
-		if (pile.empty())
-			++cit;
-		else
-			pile.pop_back();
+		++fcit;
+
 		// Add a new next element on the pile
 		if (next_elt.isValid()) {
-			pile.push_back(next_elt);
+			// do as if we inserted this element in the original row
+			fcit.put(next_elt);
 			need_new_row = true;
 		}
 	}

commit df688126cab48e9bb3d2f87e94368c3bdaaf9162
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Fri Jul 16 00:10:25 2021 +0200

    A set of easy fixes and missing features
    
    * show changebar when end of paragraph is changed.
    
    * when row is finished, set endpos and right_boundary
    
    * handle bidi.

diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 1d36d7a..00d65da 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -955,12 +955,15 @@ Row TextMetrics::tokenizeParagraph(pit_type const pit) const
 	row.finalizeLast();
 	row.endpos(end);
 
-	// End of paragraph marker. The logic here is almost the
+	// End of paragraph marker, either if LyXRc requires it, or there
+	// is an end of paragraph change. The logic here is almost the
 	// same as in redoParagraph, remember keep them in sync.
 	ParagraphList const & pars = text_->paragraphs();
-	Change const & change = par.lookupChange(i);
-	if ((lyxrc.paragraph_markers || change.changed())
-	    && i == end && size_type(pit + 1) < pars.size()) {
+	Change const & endchange = par.lookupChange(end);
+	if (endchange.changed())
+		row.needsChangeBar(true);
+	if ((lyxrc.paragraph_markers || endchange.changed())
+	    && size_type(pit + 1) < pars.size()) {
 		// add a virtual element for the end-of-paragraph
 		// marker; it is shown on screen, but does not exist
 		// in the paragraph.
@@ -968,7 +971,7 @@ Row TextMetrics::tokenizeParagraph(pit_type const pit) const
 		f.fontInfo().setColor(Color_paragraphmarker);
 		f.setLanguage(par.getParLanguage(buf.params()));
 		// ¶ U+00B6 PILCROW SIGN
-		row.addVirtual(end, docstring(1, char_type(0x00B6)), f, change);
+		row.addVirtual(end, docstring(1, char_type(0x00B6)), f, endchange);
 	}
 
 	return row;
@@ -995,24 +998,30 @@ Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
 }
 
 
-RowList TextMetrics::breakParagraph(Row const & row) const
+RowList TextMetrics::breakParagraph(Row const & bigrow) const
 {
 	RowList rows;
-	bool const is_rtl = text_->isRTL(row.pit());
+	bool const is_rtl = text_->isRTL(bigrow.pit());
 
 	bool need_new_row = true;
 	pos_type pos = 0;
 	int width = 0;
-	Row::const_iterator cit = row.begin();
-	Row::const_iterator const end = row.end();
+	Row::const_iterator cit = bigrow.begin();
+	Row::const_iterator const end = bigrow.end();
 	// This is a vector, but we use it like a pile putting and taking
 	// stuff at the back.
 	Row::Elements pile;
 	while (true) {
 		if (need_new_row) {
-			if (!rows.empty())
-				rows.back().endpos(pos);
-			rows.push_back(newRow(*this, row.pit(), pos, is_rtl));
+			if (!rows.empty()) {
+				Row & rb = rows.back();
+				rb.endpos(pos);
+				rb.right_boundary(!rb.empty() && rb.endpos() < bigrow.endpos()
+								   && rb.back().endpos == rb.endpos());
+				// make sure that the RTL elements are in reverse ordering
+				rb.reverseRTL(is_rtl);
+			}
+			rows.push_back(newRow(*this, bigrow.pit(), pos, is_rtl));
 			// the width available for the row.
 			width = max_width_ - rows.back().right_margin;
 			need_new_row = false;
@@ -1045,6 +1054,16 @@ RowList TextMetrics::breakParagraph(Row const & row) const
 		}
 	}
 
+	if (!rows.empty()) {
+		Row & rb = rows.back();
+		// Last row in paragraph is flushed
+		rb.flushed(true);
+		rb.endpos(bigrow.endpos());
+		rb.right_boundary(false);
+		// make sure that the RTL elements are in reverse ordering
+		rb.reverseRTL(is_rtl);
+	}
+
 	return rows;
 }
 
@@ -1217,14 +1236,14 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 
 	if (row.shortenIfNeeded(width, next_width))
 		row.flushed(false);
-	row.right_boundary(!row.empty() && row.endpos() < end
-	                   && row.back().endpos == row.endpos());
+	row.right_boundary(!row.empty() && row.endpos() < end//
+	                   && row.back().endpos == row.endpos());//
 	// Last row in paragraph is flushed
-	if (row.endpos() == end)
-		row.flushed(true);
+	if (row.endpos() == end)//
+		row.flushed(true);//
 
 	// make sure that the RTL elements are in reverse ordering
-	row.reverseRTL(is_rtl);
+	row.reverseRTL(is_rtl);//
 	//LYXERR0("breakrow: row is " << row);
 
 	return need_new_row;

commit 0a18a4e763f21c6ef1acef08ba9d4a3db2343c9e
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Wed Jul 14 00:48:03 2021 +0200

    Use the new tokenizing and breaking code instead of breakRow.

diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index fb6574d..1d36d7a 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -516,43 +516,28 @@ bool TextMetrics::redoParagraph(pit_type const pit, bool const align_rows)
 		}
 	}
 
-	pos_type first = 0;
-	size_t row_index = 0;
-	bool need_new_row = false;
-	// maximum pixel width of a row
-	do {
-		if (row_index == pm.rows().size())
-			pm.rows().push_back(Row());
-		else
-			pm.rows()[row_index] = Row();
-		Row & row = pm.rows()[row_index];
-		row.pit(pit);
-		row.pos(first);
-		need_new_row = breakRow(row, right_margin);
+	// Transform the paragraph into a single row containing all the elements.
+	Row const bigrow = tokenizeParagraph(pit);
+	// Split the row in several rows fitting in available width
+	pm.rows() = breakParagraph(bigrow);
+
+	/* If there is more than one row, expand the text to the full
+	 * allowable width. This setting here is needed for the
+	 * setRowAlignment() below. We do nothing when tight insets are
+	 * requested.
+	 */
+	if (pm.rows().size() > 1 && !tight_ && dim_.wid < max_width_)
+			dim_.wid = max_width_;
+
+	// Compute height and alignment of the rows.
+	for (Row & row : pm.rows()) {
 		setRowHeight(row);
-		row.changed(true);
-		if ((row_index || row.endpos() < par.size() || row.right_boundary())
-		    && !tight_) {
-			/* If there is more than one row or the row has been
-			 * broken by a display inset or a newline, expand the text
-			 * to the full allowable width. This setting here is
-			 * needed for the setRowAlignment() below.
-			 * We do nothing when tight insets are requested.
-			 */
-			if (dim_.wid < max_width_)
-				dim_.wid = max_width_;
-		}
 		if (align_rows)
 			setRowAlignment(row, max(dim_.wid, row.width()));
-		first = row.endpos();
-		++row_index;
 
 		pm.dim().wid = max(pm.dim().wid, row.width() + row.right_margin);
 		pm.dim().des += row.height();
-	} while (first < par.size() || need_new_row);
-
-	if (row_index < pm.rows().size())
-		pm.rows().resize(row_index);
+	}
 
 	// This type of margin can only be handled at the global paragraph level
 	if (par.layout().margintype == MARGIN_RIGHT_ADDRESS_BOX) {

commit ef88e31a1fb00d16d6d56e63b671d128ef43ad12
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Wed Jul 14 00:47:42 2021 +0200

    Break the paragraph's big row according to margins
    
    Still many features missing:
    - handle insets that break rows (display math, newline, ...)
    - handle rows that are too long by replacing the single call to
      breakAt with a call to a reworked Row::shortenIfNeeded.
    - some easy things at the end of breakRow (bidi text, etc.).

diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index cc380cc..fb6574d 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -990,6 +990,79 @@ Row TextMetrics::tokenizeParagraph(pit_type const pit) const
 }
 
 
+namespace {
+
+Row newRow(TextMetrics const & tm, pit_type pit, pos_type pos, bool is_rtl)
+{
+	Row nrow;
+	nrow.pit(pit);
+	nrow.pos(pos);
+	nrow.left_margin = tm.leftMargin(pit, pos);
+	nrow.right_margin = tm.rightMargin(pit);
+	if (is_rtl)
+		swap(nrow.left_margin, nrow.right_margin);
+	// Remember that the row width takes into account the left_margin
+	// but not the right_margin.
+	nrow.dim().wid = nrow.left_margin;
+	return nrow;
+}
+
+}
+
+
+RowList TextMetrics::breakParagraph(Row const & row) const
+{
+	RowList rows;
+	bool const is_rtl = text_->isRTL(row.pit());
+
+	bool need_new_row = true;
+	pos_type pos = 0;
+	int width = 0;
+	Row::const_iterator cit = row.begin();
+	Row::const_iterator const end = row.end();
+	// This is a vector, but we use it like a pile putting and taking
+	// stuff at the back.
+	Row::Elements pile;
+	while (true) {
+		if (need_new_row) {
+			if (!rows.empty())
+				rows.back().endpos(pos);
+			rows.push_back(newRow(*this, row.pit(), pos, is_rtl));
+			// the width available for the row.
+			width = max_width_ - rows.back().right_margin;
+			need_new_row = false;
+		}
+
+		// The stopping condition is here because we may need a new
+		// empty row at the end.
+		if (cit == end && pile.empty())
+			break;
+
+		// Next element to consider is either the top of the temporary
+		// pile, or the place when we were in main row
+		Row::Element elt = pile.empty() ? *cit : pile.back();
+		//LYXERR0("elt=" << elt);
+		Row::Element next_elt = elt.splitAt(width - rows.back().width(),
+		                                    !elt.font.language()->wordWrap());
+		//LYXERR0("next_elt=" << next_elt);
+		// a new element in the row
+		rows.back().push_back(elt);
+		pos = elt.endpos;
+		// Go to next element
+		if (pile.empty())
+			++cit;
+		else
+			pile.pop_back();
+		// Add a new next element on the pile
+		if (next_elt.isValid()) {
+			pile.push_back(next_elt);
+			need_new_row = true;
+		}
+	}
+
+	return rows;
+}
+
 /** This is the function where the hard work is done. The code here is
  * very sensitive to small changes :) Note that part of the
  * intelligence is also in Row::shortenIfNeeded.
@@ -1003,20 +1076,20 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 		theSession().bookmarks().bookmarksInPar(buf.fileName(), par.id());//
 
 	pos_type const end = par.size();//
-	pos_type const pos = row.pos();
+	pos_type const pos = row.pos();//
 	pos_type const body_pos = par.beginOfBody();//
-	bool const is_rtl = text_->isRTL(row.pit());
-	bool need_new_row = false;
+	bool const is_rtl = text_->isRTL(row.pit());//
+	bool need_new_row = false;//
 
-	row.left_margin = leftMargin(row.pit(), pos);
-	row.right_margin = right_margin;
-	if (is_rtl)
-		swap(row.left_margin, row.right_margin);
+	row.left_margin = leftMargin(row.pit(), pos);//
+	row.right_margin = right_margin;//
+	if (is_rtl)//
+		swap(row.left_margin, row.right_margin);//
 	// Remember that the row width takes into account the left_margin
 	// but not the right_margin.
-	row.dim().wid = row.left_margin;
+	row.dim().wid = row.left_margin;//
 	// the width available for the row.
-	int const width = max_width_ - row.right_margin;
+	int const width = max_width_ - row.right_margin;//
 
 	// check for possible inline completion
 	DocIterator const & ic_it = bv_->inlineCompletionPos();//
diff --git a/src/TextMetrics.h b/src/TextMetrics.h
index 1666cd0..3ff1161 100644
--- a/src/TextMetrics.h
+++ b/src/TextMetrics.h
@@ -153,6 +153,8 @@ private:
 
 	Row tokenizeParagraph(pit_type pit) const;
 
+	RowList breakParagraph(Row const & row) const;
+
 	/// sets row.end to the pos value *after* which a row should break.
 	/// for example, the pos after which isNewLine(pos) == true
 	/// \return true when another row is required (after a newline)

commit 963a0aa466a98b0c11b0dd30034f7fbf6f78ee62
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Mon Jul 12 00:07:59 2021 +0200

    Implement Row::Element::row_flags
    
    Move the enum definition RowFlags in its own include file, to avoid
    loading Inset.h. Document it more thoroughly.
    
    Rename RowAfter to AlwaysBreakAfter.
    
    Add CanBreakInside (rows that can be themselves broken). This allow to
    differentiate elements before bodyPos() and allows to remove a
    parameter to shortenIfNeeded().
    
    Make the Inset::rowFlags() method return int instead of RowFlags, as
    should be done for all the bitwise flags. Remove the hand-made bitwise
    operators.
    
    Set R::E::row_flags when creating elements.
    * INSET elements use the inset's rowFLags();
    * virtual element forbid breaking before them, and inherit the *After
      flags from the previous element of the row;
    * STRING elements usr CanBreakInside, except before bodyPos.
    
    More stuff may be added later.

diff --git a/src/Makefile.am b/src/Makefile.am
index 31701f2..99a0f98 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -273,6 +273,7 @@ HEADERFILESCORE = \
 	ParIterator.h \
 	PDFOptions.h \
 	Row.h \
+	RowFlags.h \
 	RowPainter.h \
 	Server.h \
 	ServerSocket.h \
diff --git a/src/Row.cpp b/src/Row.cpp
index da2d885..705a147 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -135,7 +135,7 @@ pos_type Row::Element::x2pos(int &x) const
 
 Row::Element Row::Element::splitAt(int w, bool force)
 {
-	if (type != STRING)
+	if (type != STRING || !(row_flags & CanBreakInside))
 		return Element();
 
 	FontMetrics const & fm = theFontMetrics(font);
@@ -145,6 +145,7 @@ Row::Element Row::Element::splitAt(int w, bool force)
 		Element ret(STRING, pos + i, font, change);
 		ret.str = str.substr(i);
 		ret.endpos = ret.pos + ret.str.length();
+		ret.row_flags = row_flags & (CanBreakInside | AfterFlags);
 		str.erase(i);
 		endpos = pos + i;
 		//lyxerr << "breakAt(" << w << ")  Row element Broken at " << x << "(w(str)=" << fm.width(str) << "): e=" << *this << endl;
@@ -378,12 +379,13 @@ void Row::finalizeLast()
 
 
 void Row::add(pos_type const pos, Inset const * ins, Dimension const & dim,
-	      Font const & f, Change const & ch)
+              Font const & f, Change const & ch)
 {
 	finalizeLast();
 	Element e(INSET, pos, f, ch);
 	e.inset = ins;
 	e.dim = dim;
+	e.row_flags = ins->rowFlags();
 	elements_.push_back(e);
 	dim_.wid += dim.wid;
 	changebar_ |= ins->isChanged();
@@ -391,11 +393,12 @@ void Row::add(pos_type const pos, Inset const * ins, Dimension const & dim,
 
 
 void Row::add(pos_type const pos, char_type const c,
-	      Font const & f, Change const & ch)
+              Font const & f, Change const & ch, bool can_break)
 {
 	if (!sameString(f, ch)) {
 		finalizeLast();
 		Element e(STRING, pos, f, ch);
+		e.row_flags = can_break ? CanBreakInside : Inline;
 		elements_.push_back(e);
 	}
 	if (back().str.length() % 30 == 0) {
@@ -420,6 +423,10 @@ void Row::addVirtual(pos_type const pos, docstring const & s,
 	e.dim.wid = theFontMetrics(f).width(s);
 	dim_.wid += e.dim.wid;
 	e.endpos = pos;
+	// Copy after* flags from previous elements, forbid break before element
+	int const prev_row_flags = elements_.empty() ? Inline : elements_.back().row_flags;
+	int const can_inherit = AfterFlags & ~AlwaysBreakAfter;
+	e.row_flags = (prev_row_flags & can_inherit) | NoBreakBefore;
 	elements_.push_back(e);
 	finalizeLast();
 }
@@ -450,7 +457,7 @@ void Row::pop_back()
 }
 
 
-bool Row::shortenIfNeeded(pos_type const keep, int const w, int const next_width)
+bool Row::shortenIfNeeded(int const w, int const next_width)
 {
 	if (empty() || width() <= w)
 		return false;
@@ -482,11 +489,10 @@ bool Row::shortenIfNeeded(pos_type const keep, int const w, int const next_width
 		// make a copy of the element to work on it.
 		Element brk = *cit_brk;
 		/* If the current element is an inset that allows breaking row
-		 * after itself, and it the row is already short enough after
+		 * after itself, and if the row is already short enough after
 		 * this inset, then cut right after this element.
 		 */
-		if (wid_brk <= w && brk.type == INSET
-		    && brk.inset->rowFlags() & Inset::CanBreakAfter) {
+		if (wid_brk <= w && brk.row_flags & CanBreakAfter) {
 			end_ = brk.endpos;
 			dim_.wid = wid_brk;
 			elements_.erase(cit_brk + 1, end);
@@ -504,10 +510,6 @@ bool Row::shortenIfNeeded(pos_type const keep, int const w, int const next_width
 		 * not allowed at the beginning or end of line.
 		*/
 		bool const word_wrap = brk.font.language()->wordWrap();
-		// When there is text before the body part (think description
-		// environment), do not try to break.
-		if (brk.pos < keep)
-			continue;
 		/* We have found a suitable separable element. This is the common case.
 		 * Try to break it cleanly (at word boundary) at a length that is both
 		 * - less than the available space on the row
diff --git a/src/Row.h b/src/Row.h
index 3048cf1..4fdcee4 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -18,6 +18,7 @@
 #include "Changes.h"
 #include "Dimension.h"
 #include "Font.h"
+#include "RowFlags.h"
 
 #include "support/docstring.h"
 #include "support/types.h"
@@ -143,6 +144,8 @@ public:
 		Change change;
 		// is it possible to add contents to this element?
 		bool final = false;
+		// properties with respect to row breaking (made of RowFlag enums)
+		int row_flags = Inline;
 
 		friend std::ostream & operator<<(std::ostream & os, Element const & row);
 	};
@@ -247,7 +250,7 @@ public:
 		 Font const & f, Change const & ch);
 	///
 	void add(pos_type pos, char_type const c,
-		 Font const & f, Change const & ch);
+	         Font const & f, Change const & ch, bool can_break);
 	///
 	void addVirtual(pos_type pos, docstring const & s,
 			Font const & f, Change const & ch);
@@ -287,12 +290,11 @@ public:
 	 * if row width is too large, remove all elements after last
 	 * separator and update endpos if necessary. If all that
 	 * remains is a large word, cut it to \param width.
-	 * \param body_pos minimum amount of text to keep.
 	 * \param width maximum width of the row.
 	 * \param available width on next row.
 	 * \return true if the row has been shortened.
 	 */
-	bool shortenIfNeeded(pos_type const body_pos, int const width, int const next_width);
+	bool shortenIfNeeded(int const width, int const next_width);
 
 	/**
 	 * If last element of the row is a string, compute its width
diff --git a/src/RowFlags.h b/src/RowFlags.h
new file mode 100644
index 0000000..f94f0c6
--- /dev/null
+++ b/src/RowFlags.h
@@ -0,0 +1,57 @@
+// -*- C++ -*-
+/**
+ * \file RowFlags.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Jean-Marc Lasgouttes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef ROWFLAGS_H
+#define ROWFLAGS_H
+
+// Do not include anything here
+
+namespace lyx {
+
+/* The list of possible flags, that can be combined.
+ * Some flags that should logically be here (e.g.,
+ * CanBreakBefore), do not exist. This is because the need has not
+ * been identitfied yet.
+ *
+ * Priorities when before/after disagree:
+ *      AlwaysBreak* > NoBreak* > Break* or CanBreak*.
+ */
+enum RowFlags {
+	// Do not break before or after this element, except if really
+	// needed (between NoBreak* and CanBreak*).
+	Inline = 0,
+	// break row before this element if the row is not empty
+	BreakBefore = 1 << 0,
+	// Avoid breaking row before this element
+	NoBreakBefore = 1 << 1,
+	// force new (maybe empty) row after this element
+	AlwaysBreakAfter = 1 << 2,
+	// break row after this element if there are more elements
+	BreakAfter = 1 << 3,
+	// break row whenever needed after this element
+	CanBreakAfter = 1 << 4,
+	// Avoid breaking row after this element
+	NoBreakAfter = 1 << 5,
+	// The contents of the row may be broken in two (e.g. string)
+	CanBreakInside = 1 << 6,
+	// specify an alignment (left, right) for a display element
+	// (default is center)
+	AlignLeft = 1 << 7,
+	AlignRight = 1 << 8,
+	// A display element breaks row at both ends
+	Display = BreakBefore | BreakAfter,
+	// Flags that concern breaking after element
+	AfterFlags = AlwaysBreakAfter | BreakAfter | CanBreakAfter | NoBreakAfter
+};
+
+} // namespace lyx
+
+#endif
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index f14fe1f..cc380cc 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -634,10 +634,10 @@ LyXAlignment TextMetrics::getAlign(Paragraph const & par, Row const & row) const
 
 	// Display-style insets should always be on a centered row
 	if (Inset const * inset = par.getInset(row.pos())) {
-		if (inset->rowFlags() & Inset::Display) {
-			if (inset->rowFlags() & Inset::AlignLeft)
+		if (inset->rowFlags() & Display) {
+			if (inset->rowFlags() & AlignLeft)
 				align = LYX_ALIGN_BLOCK;
-			else if (inset->rowFlags() & Inset::AlignRight)
+			else if (inset->rowFlags() & AlignRight)
 				align = LYX_ALIGN_RIGHT;
 			else
 				align = LYX_ALIGN_CENTER;
@@ -928,7 +928,7 @@ Row TextMetrics::tokenizeParagraph(pit_type const pit) const
 			row.addSpace(i, add, *fi, par.lookupChange(i));
 		} else if (c == '\t')
 			row.addSpace(i, theFontMetrics(*fi).width(from_ascii("    ")),
-				     *fi, par.lookupChange(i));
+			             *fi, par.lookupChange(i));
 		else if (c == 0x2028 || c == 0x2029) {
 			/**
 			 * U+2028 LINE SEPARATOR
@@ -944,9 +944,10 @@ Row TextMetrics::tokenizeParagraph(pit_type const pit) const
 			// ⤶ U+2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
 			// ¶ U+00B6 PILCROW SIGN
 			char_type const screen_char = (c == 0x2028) ? 0x2936 : 0x00B6;
-			row.add(i, screen_char, *fi, par.lookupChange(i));
+			row.add(i, screen_char, *fi, par.lookupChange(i), i >= body_pos);
 		} else
-			row.add(i, c, *fi, par.lookupChange(i));
+			// row elements before body are unbreakable
+			row.add(i, c, *fi, par.lookupChange(i), i >= body_pos);
 
 		// add inline completion width
 		// draw logically behind the previous character
@@ -1080,9 +1081,9 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 			// ⤶ U+2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
 			// ¶ U+00B6 PILCROW SIGN
 			char_type const screen_char = (c == 0x2028) ? 0x2936 : 0x00B6;
-			row.add(i, screen_char, *fi, par.lookupChange(i));
+			row.add(i, screen_char, *fi, par.lookupChange(i), i >= body_pos);
 		} else
-			row.add(i, c, *fi, par.lookupChange(i));
+			row.add(i, c, *fi, par.lookupChange(i), i >= body_pos);
 
 		// add inline completion width
 		// draw logically behind the previous character
@@ -1105,8 +1106,8 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 		// - After an inset with BreakAfter
 		Inset const * prevInset = !row.empty() ? row.back().inset : 0;
 		Inset const * nextInset = (i + 1 < end) ? par.getInset(i + 1) : 0;
-		if ((nextInset && nextInset->rowFlags() & Inset::BreakBefore)
-		    || (prevInset && prevInset->rowFlags() & Inset::BreakAfter)) {
+		if ((nextInset && nextInset->rowFlags() & BreakBefore)
+		    || (prevInset && prevInset->rowFlags() & BreakAfter)) {
 			row.flushed(true);
 			// Force a row creation after this one if it is ended by
 			// an inset that either
@@ -1114,8 +1115,8 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 			// - or (1) did force the row breaking, (2) is at end of
 			//   paragraph and (3) the said paragraph has an end label.
 			need_new_row = prevInset &&
-				(prevInset->rowFlags() & Inset::RowAfter
-				 || (prevInset->rowFlags() & Inset::BreakAfter && i + 1 == end
+				(prevInset->rowFlags() & AlwaysBreakAfter
+				 || (prevInset->rowFlags() & BreakAfter && i + 1 == end
 				     && text_->getEndLabel(row.pit()) != END_LABEL_NO_LABEL));
 			++i;
 			break;
@@ -1156,7 +1157,7 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 	int const next_width = max_width_ - leftMargin(row.pit(), row.endpos())
 		- rightMargin(row.pit());
 
-	if (row.shortenIfNeeded(body_pos, width, next_width))
+	if (row.shortenIfNeeded(width, next_width))
 		row.flushed(false);
 	row.right_boundary(!row.empty() && row.endpos() < end
 	                   && row.back().endpos == row.endpos());
@@ -1900,7 +1901,7 @@ int TextMetrics::leftMargin(pit_type const pit, pos_type const pos) const
 	    // display style insets do not need indentation
 	    && !(!par.empty()
 	         && par.isInset(0)
-	         && par.getInset(0)->rowFlags() & Inset::Display)
+	         && par.getInset(0)->rowFlags() & Display)
 	    && (!(tclass.isDefaultLayout(par.layout())
 	        || tclass.isPlainLayout(par.layout()))
 	        || buffer.params().paragraph_separation
diff --git a/src/insets/Inset.h b/src/insets/Inset.h
index af24423..372b95a 100644
--- a/src/insets/Inset.h
+++ b/src/insets/Inset.h
@@ -20,6 +20,7 @@
 #include "LayoutEnums.h"
 #include "OutputEnums.h"
 #include "OutputParams.h"
+#include "RowFlags.h"
 
 #include "support/docstring.h"
 #include "support/strfwd.h"
@@ -478,26 +479,8 @@ public:
 
 	virtual CtObject getCtObject(OutputParams const &) const;
 
-	enum RowFlags {
-		Inline = 0,
-		// break row before this inset
-		BreakBefore = 1 << 0,
-		// break row after this inset
-		BreakAfter = 1 << 1,
-		// it is possible to break after this inset
-		CanBreakAfter = 1 << 2,
-		// force new (maybe empty) row after this inset
-		RowAfter = 1 << 3,
-		// specify an alignment (left, right) for a display inset
-		// (default is center)
-		AlignLeft = 1 << 4,
-		AlignRight = 1 << 5,
-		// A display inset breaks row at both ends
-		Display = BreakBefore | BreakAfter
-	};
-
-	/// How should this inset be displayed in its row?
-	virtual RowFlags rowFlags() const { return Inline; }
+	// properties with respect to row breaking (made of RowFLag enums)
+	virtual int rowFlags() const { return Inline; }
 	/// indentation before this inset (only needed for displayed hull insets with fleqn option)
 	virtual int indent(BufferView const &) const { return 0; }
 	///
@@ -655,20 +638,6 @@ protected:
 };
 
 
-inline Inset::RowFlags operator|(Inset::RowFlags const d1,
-                                    Inset::RowFlags const d2)
-{
-	return static_cast<Inset::RowFlags>(int(d1) | int(d2));
-}
-
-
-inline Inset::RowFlags operator&(Inset::RowFlags const d1,
-                                    Inset::RowFlags const d2)
-{
-	return static_cast<Inset::RowFlags>(int(d1) & int(d2));
-}
-
-
 } // namespace lyx
 
 #endif
diff --git a/src/insets/InsetBibtex.h b/src/insets/InsetBibtex.h
index be7659f..55451f5 100644
--- a/src/insets/InsetBibtex.h
+++ b/src/insets/InsetBibtex.h
@@ -47,7 +47,7 @@ public:
 	///
 	InsetCode lyxCode() const override { return BIBTEX_CODE; }
 	///
-	RowFlags rowFlags() const override { return Display; }
+	int rowFlags() const override { return Display; }
 	///
 	void latex(otexstream &, OutputParams const &) const override;
 	///
diff --git a/src/insets/InsetCaption.h b/src/insets/InsetCaption.h
index ed6dbbb..c1bcd17 100644
--- a/src/insets/InsetCaption.h
+++ b/src/insets/InsetCaption.h
@@ -40,7 +40,7 @@ private:
 	///
 	void write(std::ostream & os) const override;
 	///
-	RowFlags rowFlags() const override { return Display; }
+	int rowFlags() const override { return Display; }
 	///
 	bool neverIndent() const override { return true; }
 	///
diff --git a/src/insets/InsetFloatList.h b/src/insets/InsetFloatList.h
index 489b0fe..ce6caa5 100644
--- a/src/insets/InsetFloatList.h
+++ b/src/insets/InsetFloatList.h
@@ -32,7 +32,7 @@ public:
 	///
 	InsetCode lyxCode() const override { return FLOAT_LIST_CODE; }
 	///
-	RowFlags rowFlags() const override { return Display; }
+	int rowFlags() const override { return Display; }
 	///
 	void write(std::ostream &) const override;
 	///
diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp
index aeae2fb..10ea52b 100644
--- a/src/insets/InsetInclude.cpp
+++ b/src/insets/InsetInclude.cpp
@@ -1251,7 +1251,7 @@ string InsetInclude::contextMenuName() const
 }
 
 
-Inset::RowFlags InsetInclude::rowFlags() const
+int InsetInclude::rowFlags() const
 {
 	return type(params()) == INPUT ? Inline : Display;
 }
diff --git a/src/insets/InsetInclude.h b/src/insets/InsetInclude.h
index 8585222..d62c751 100644
--- a/src/insets/InsetInclude.h
+++ b/src/insets/InsetInclude.h
@@ -75,7 +75,7 @@ public:
 	///
 	void draw(PainterInfo & pi, int x, int y) const override;
 	///
-	RowFlags rowFlags() const override;
+	int rowFlags() const override;
 	///
 	InsetCode lyxCode() const override { return INCLUDE_CODE; }
 	///
diff --git a/src/insets/InsetIndex.h b/src/insets/InsetIndex.h
index bddb8ba..b064cc7 100644
--- a/src/insets/InsetIndex.h
+++ b/src/insets/InsetIndex.h
@@ -119,7 +119,7 @@ public:
 	///
 	bool hasSettings() const override;
 	///
-	RowFlags rowFlags() const override { return Display; }
+	int rowFlags() const override { return Display; }
 	//@}
 
 	/// \name Static public methods obligated for InsetCommand derived classes
diff --git a/src/insets/InsetListings.cpp b/src/insets/InsetListings.cpp
index e8fe8b1..57df06e 100644
--- a/src/insets/InsetListings.cpp
+++ b/src/insets/InsetListings.cpp
@@ -64,7 +64,7 @@ InsetListings::~InsetListings()
 }
 
 
-Inset::RowFlags InsetListings::rowFlags() const
+int InsetListings::rowFlags() const
 {
 	return params().isInline() || params().isFloat() ? Inline : Display | AlignLeft;
 }
diff --git a/src/insets/InsetListings.h b/src/insets/InsetListings.h
index 41be439..9d4eeb1 100644
--- a/src/insets/InsetListings.h
+++ b/src/insets/InsetListings.h
@@ -46,7 +46,7 @@ private:
 	///
 	InsetCode lyxCode() const override { return LISTINGS_CODE; }
 	/// lstinline is inlined, normal listing is displayed
-	RowFlags rowFlags() const override;
+	int rowFlags() const override;
 	///
 	docstring layoutName() const override;
 	///
diff --git a/src/insets/InsetNewline.h b/src/insets/InsetNewline.h
index 3d540a8..1ef0ae5 100644
--- a/src/insets/InsetNewline.h
+++ b/src/insets/InsetNewline.h
@@ -47,7 +47,7 @@ public:
 	explicit InsetNewline(InsetNewlineParams par) : Inset(0)
 	{ params_.kind = par.kind; }
 	///
-	RowFlags rowFlags() const override { return BreakAfter | RowAfter; }
+	int rowFlags() const override { return AlwaysBreakAfter; }
 	///
 	static void string2params(std::string const &, InsetNewlineParams &);
 	///
diff --git a/src/insets/InsetNewpage.h b/src/insets/InsetNewpage.h
index f020488..d086276 100644
--- a/src/insets/InsetNewpage.h
+++ b/src/insets/InsetNewpage.h
@@ -76,7 +76,7 @@ private:
 	///
 	void write(std::ostream & os) const override;
 	///
-	RowFlags rowFlags() const override { return (params_.kind == InsetNewpageParams::NOPAGEBREAK) ? Inline : Display; }
+	int rowFlags() const override { return (params_.kind == InsetNewpageParams::NOPAGEBREAK) ? Inline : Display; }
 	///
 	docstring insetLabel() const;
 	///
diff --git a/src/insets/InsetNomencl.h b/src/insets/InsetNomencl.h
index 1778e01..362cd46 100644
--- a/src/insets/InsetNomencl.h
+++ b/src/insets/InsetNomencl.h
@@ -94,7 +94,7 @@ public:
 	///
 	bool hasSettings() const override { return true; }
 	///
-	RowFlags rowFlags() const override { return Display; }
+	int rowFlags() const override { return Display; }
 	///
 	void latex(otexstream &, OutputParams const &) const override;
 	///
diff --git a/src/insets/InsetSeparator.h b/src/insets/InsetSeparator.h
index f7e0ab9..9352bdf 100644
--- a/src/insets/InsetSeparator.h
+++ b/src/insets/InsetSeparator.h
@@ -65,7 +65,7 @@ public:
 		return docstring();
 	}
 	///
-	RowFlags rowFlags() const override { return BreakAfter; }
+	int rowFlags() const override { return BreakAfter; }
 private:
 	///
 	InsetCode lyxCode() const override { return SEPARATOR_CODE; }
diff --git a/src/insets/InsetSpace.cpp b/src/insets/InsetSpace.cpp
index 9585596..1a2eb09 100644
--- a/src/insets/InsetSpace.cpp
+++ b/src/insets/InsetSpace.cpp
@@ -192,7 +192,7 @@ bool InsetSpace::getStatus(Cursor & cur, FuncRequest const & cmd,
 }
 
 
-Inset::RowFlags InsetSpace::rowFlags() const
+int InsetSpace::rowFlags() const
 {
 	switch (params_.kind) {
 		case InsetSpaceParams::PROTECTED:
diff --git a/src/insets/InsetSpace.h b/src/insets/InsetSpace.h
index 5cf7aa7..e401d6d 100644
--- a/src/insets/InsetSpace.h
+++ b/src/insets/InsetSpace.h
@@ -115,7 +115,7 @@ public:
 	///
 	docstring toolTip(BufferView const & bv, int x, int y) const override;
 	/// unprotected spaces allow line breaking after them
-	RowFlags rowFlags() const override;
+	int rowFlags() const override;
 	///
 	void metrics(MetricsInfo &, Dimension &) const override;
 	///
diff --git a/src/insets/InsetSpecialChar.cpp b/src/insets/InsetSpecialChar.cpp
index 3ecdaf1..88af653 100644
--- a/src/insets/InsetSpecialChar.cpp
+++ b/src/insets/InsetSpecialChar.cpp
@@ -83,7 +83,7 @@ docstring InsetSpecialChar::toolTip(BufferView const &, int, int) const
 }
 
 
-Inset::RowFlags InsetSpecialChar::rowFlags() const
+int InsetSpecialChar::rowFlags() const
 {
 	switch (kind_) {
 	case ALLOWBREAK:
diff --git a/src/insets/InsetSpecialChar.h b/src/insets/InsetSpecialChar.h
index 3056b10..0c8cc36 100644
--- a/src/insets/InsetSpecialChar.h
+++ b/src/insets/InsetSpecialChar.h
@@ -63,7 +63,7 @@ public:
 	///
 	docstring toolTip(BufferView const & bv, int x, int y) const override;
 	/// some special chars allow line breaking after them
-	RowFlags rowFlags() const override;
+	int rowFlags() const override;
 	///
 	void metrics(MetricsInfo &, Dimension &) const override;
 	///
diff --git a/src/insets/InsetTOC.h b/src/insets/InsetTOC.h
index 045ae07..ca3f463 100644
--- a/src/insets/InsetTOC.h
+++ b/src/insets/InsetTOC.h
@@ -37,7 +37,7 @@ public:
 	///
 	docstring layoutName() const override;
 	///
-	RowFlags rowFlags() const override { return Display; }
+	int rowFlags() const override { return Display; }
 	///
 	void validate(LaTeXFeatures &) const override;
 	///
diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index fcf89e7..24bde65 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -6144,21 +6144,21 @@ bool InsetTabular::getStatus(Cursor & cur, FuncRequest const & cmd,
 }
 
 
-Inset::RowFlags InsetTabular::rowFlags() const
-{
-		if (tabular.is_long_tabular) {
-			switch (tabular.longtabular_alignment) {
-			case Tabular::LYX_LONGTABULAR_ALIGN_LEFT:
-				return Display | AlignLeft;
-			case Tabular::LYX_LONGTABULAR_ALIGN_CENTER:
-				return Display;
-			case Tabular::LYX_LONGTABULAR_ALIGN_RIGHT:
-				return Display | AlignRight;
-			default:
-				return Display;
-			}
-		} else
-			return Inline;
+int InsetTabular::rowFlags() const
+{
+	if (tabular.is_long_tabular) {
+		switch (tabular.longtabular_alignment) {
+		case Tabular::LYX_LONGTABULAR_ALIGN_LEFT:
+			return Display | AlignLeft;
+		case Tabular::LYX_LONGTABULAR_ALIGN_CENTER:
+			return Display;
+		case Tabular::LYX_LONGTABULAR_ALIGN_RIGHT:
+			return Display | AlignRight;
+		default:
+			return Display;
+		}
+	} else
+		return Inline;
 }
 
 
diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h
index 8d1be1b..0d4e7af 100644
--- a/src/insets/InsetTabular.h
+++ b/src/insets/InsetTabular.h
@@ -989,7 +989,7 @@ public:
 	//
 	bool isTable() const override { return true; }
 	///
-	RowFlags rowFlags() const override;
+	int rowFlags() const override;
 	///
 	void latex(otexstream &, OutputParams const &) const override;
 	///
diff --git a/src/insets/InsetVSpace.h b/src/insets/InsetVSpace.h
index 9b95f00..51c2b5b 100644
--- a/src/insets/InsetVSpace.h
+++ b/src/insets/InsetVSpace.h
@@ -62,7 +62,7 @@ private:
 	///
 	void write(std::ostream & os) const override;
 	///
-	RowFlags rowFlags() const override { return Display; }
+	int rowFlags() const override { return Display; }
 	///
 	void doDispatch(Cursor & cur, FuncRequest & cmd) override;
 	///
diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp
index b33813b..8fd2bdd 100644
--- a/src/mathed/InsetMathHull.cpp
+++ b/src/mathed/InsetMathHull.cpp
@@ -988,7 +988,7 @@ bool InsetMathHull::outerDisplay() const
 }
 
 
-Inset::RowFlags InsetMathHull::rowFlags() const
+int InsetMathHull::rowFlags() const
 {
 	switch (type_) {
 	case hullUnknown:
diff --git a/src/mathed/InsetMathHull.h b/src/mathed/InsetMathHull.h
index 0b865be..b019188 100644
--- a/src/mathed/InsetMathHull.h
+++ b/src/mathed/InsetMathHull.h
@@ -288,7 +288,7 @@ public:
 	///
 	Inset * editXY(Cursor & cur, int x, int y) override;
 	///
-	RowFlags rowFlags() const override;
+	int rowFlags() const override;
 	/// helper function
 	bool display() const { return rowFlags() & Display; }
 

commit f4d3702d4d36569851065eed2e0ca88431bd24a2
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Jul 11 15:19:37 2021 +0200

    Create new method TM::tokenizeParagraph
    
    This contains large parts of breakRow, but creates a unique row for the paragraph.
    
    The parts taken or not in redoParagraph are annotated.
    
    The new method is not used yet.

diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index a2a3e4b..f14fe1f 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -868,21 +868,142 @@ private:
 
 } // namespace
 
+
+Row TextMetrics::tokenizeParagraph(pit_type const pit) const
+{
+	Row row;
+	row.pit(pit);
+	Paragraph const & par = text_->getPar(pit);
+	Buffer const & buf = text_->inset().buffer();
+	BookmarksSection::BookmarkPosList bpl =
+		theSession().bookmarks().bookmarksInPar(buf.fileName(), par.id());
+
+	pos_type const end = par.size();
+	pos_type const body_pos = par.beginOfBody();
+
+	// check for possible inline completion
+	DocIterator const & ic_it = bv_->inlineCompletionPos();
+	pos_type ic_pos = -1;
+	if (ic_it.inTexted() && ic_it.text() == text_ && ic_it.pit() == pit)
+		ic_pos = ic_it.pos();
+
+	// Now we iterate through until we reach the right margin
+	// or the end of the par, then build a representation of the row.
+	pos_type i = 0;
+	FontIterator fi = FontIterator(*this, par, pit, 0);
+	// The real stopping condition is a few lines below.
+	while (true) {
+		// Firstly, check whether there is a bookmark here.
+		if (lyxrc.bookmarks_visibility == LyXRC::BMK_INLINE)
+			for (auto const & bp_p : bpl)
+				if (bp_p.second == i) {
+					Font f = *fi;
+					f.fontInfo().setColor(Color_bookmark);
+					// ❶ U+2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE
+					char_type const ch = 0x2775 + bp_p.first;
+					row.addVirtual(i, docstring(1, ch), f, Change());
+				}
+
+		// The stopping condition is here so that the display of a
+		// bookmark can take place at paragraph start too.
+		if (i >= end)
+			break;
+
+		char_type c = par.getChar(i);
+		// The most special cases are handled first.
+		if (par.isInset(i)) {
+			Inset const * ins = par.getInset(i);
+			Dimension dim = bv_->coordCache().insets().dim(ins);
+			row.add(i, ins, dim, *fi, par.lookupChange(i));
+		} else if (c == ' ' && i + 1 == body_pos) {
+			// There is a space at i, but it should not be
+			// added as a separator, because it is just
+			// before body_pos. Instead, insert some spacing to
+			// align text
+			FontMetrics const & fm = theFontMetrics(text_->labelFont(par));
+			// this is needed to make sure that the row width is correct
+			row.finalizeLast();
+			int const add = max(fm.width(par.layout().labelsep),
+			                    labelEnd(pit) - row.width());
+			row.addSpace(i, add, *fi, par.lookupChange(i));
+		} else if (c == '\t')
+			row.addSpace(i, theFontMetrics(*fi).width(from_ascii("    ")),
+				     *fi, par.lookupChange(i));
+		else if (c == 0x2028 || c == 0x2029) {
+			/**
+			 * U+2028 LINE SEPARATOR
+			 * U+2029 PARAGRAPH SEPARATOR
+
+			 * These are special unicode characters that break
+			 * lines/pragraphs. Not handling them lead to trouble wrt
+			 * Qt QTextLayout formatting. We add a visible character
+			 * on screen so that the user can see that something is
+			 * happening.
+			*/
+			row.finalizeLast();
+			// ⤶ U+2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
+			// ¶ U+00B6 PILCROW SIGN
+			char_type const screen_char = (c == 0x2028) ? 0x2936 : 0x00B6;
+			row.add(i, screen_char, *fi, par.lookupChange(i));
+		} else
+			row.add(i, c, *fi, par.lookupChange(i));
+
+		// add inline completion width
+		// draw logically behind the previous character
+		if (ic_pos == i + 1 && !bv_->inlineCompletion().empty()) {
+			docstring const comp = bv_->inlineCompletion();
+			size_t const uniqueTo =bv_->inlineCompletionUniqueChars();
+			Font f = *fi;
+
+			if (uniqueTo > 0) {
+				f.fontInfo().setColor(Color_inlinecompletion);
+				row.addVirtual(i + 1, comp.substr(0, uniqueTo), f, Change());
+			}
+			f.fontInfo().setColor(Color_nonunique_inlinecompletion);
+			row.addVirtual(i + 1, comp.substr(uniqueTo), f, Change());
+		}
+
+		++i;
+		++fi;
+	}
+	row.finalizeLast();
+	row.endpos(end);
+
+	// End of paragraph marker. The logic here is almost the
+	// same as in redoParagraph, remember keep them in sync.
+	ParagraphList const & pars = text_->paragraphs();
+	Change const & change = par.lookupChange(i);
+	if ((lyxrc.paragraph_markers || change.changed())
+	    && i == end && size_type(pit + 1) < pars.size()) {
+		// add a virtual element for the end-of-paragraph
+		// marker; it is shown on screen, but does not exist
+		// in the paragraph.
+		Font f(text_->layoutFont(pit));
+		f.fontInfo().setColor(Color_paragraphmarker);
+		f.setLanguage(par.getParLanguage(buf.params()));
+		// ¶ U+00B6 PILCROW SIGN
+		row.addVirtual(end, docstring(1, char_type(0x00B6)), f, change);
+	}
+
+	return row;
+}
+
+
 /** This is the function where the hard work is done. The code here is
  * very sensitive to small changes :) Note that part of the
  * intelligence is also in Row::shortenIfNeeded.
  */
 bool TextMetrics::breakRow(Row & row, int const right_margin) const
 {
-	LATTEST(row.empty());
-	Paragraph const & par = text_->getPar(row.pit());
-	Buffer const & buf = text_->inset().buffer();
-	BookmarksSection::BookmarkPosList bpl =
-		theSession().bookmarks().bookmarksInPar(buf.fileName(), par.id());
+	LATTEST(row.empty());//
+	Paragraph const & par = text_->getPar(row.pit());//
+	Buffer const & buf = text_->inset().buffer();//
+	BookmarksSection::BookmarkPosList bpl =//
+		theSession().bookmarks().bookmarksInPar(buf.fileName(), par.id());//
 
-	pos_type const end = par.size();
+	pos_type const end = par.size();//
 	pos_type const pos = row.pos();
-	pos_type const body_pos = par.beginOfBody();
+	pos_type const body_pos = par.beginOfBody();//
 	bool const is_rtl = text_->isRTL(row.pit());
 	bool need_new_row = false;
 
@@ -897,14 +1018,14 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 	int const width = max_width_ - row.right_margin;
 
 	// check for possible inline completion
-	DocIterator const & ic_it = bv_->inlineCompletionPos();
-	pos_type ic_pos = -1;
-	if (ic_it.inTexted() && ic_it.text() == text_ && ic_it.pit() == row.pit())
-		ic_pos = ic_it.pos();
+	DocIterator const & ic_it = bv_->inlineCompletionPos();//
+	pos_type ic_pos = -1;//
+	if (ic_it.inTexted() && ic_it.text() == text_ && ic_it.pit() == row.pit())//
+		ic_pos = ic_it.pos();//
 
 	// Now we iterate through until we reach the right margin
 	// or the end of the par, then build a representation of the row.
-	pos_type i = pos;
+	pos_type i = pos;//---------------------------------------------------vvv
 	FontIterator fi = FontIterator(*this, par, row.pit(), pos);
 	// The real stopping condition is a few lines below.
 	while (true) {
@@ -921,7 +1042,7 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 
 		// The stopping condition is here so that the display of a
 		// bookmark can take place at paragraph start too.
-		if (i >= end || (i != pos && row.width() > width))
+		if (i >= end || (i != pos && row.width() > width))//^width
 			break;
 
 		char_type c = par.getChar(i);
@@ -976,8 +1097,9 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 			}
 			f.fontInfo().setColor(Color_nonunique_inlinecompletion);
 			row.addVirtual(i + 1, comp.substr(uniqueTo), f, Change());
-		}
+		}//---------------------------------------------------------------^^^
 
+		// FIXME: Handle when breaking the rows
 		// Handle some situations that abruptly terminate the row
 		// - Before an inset with BreakBefore
 		// - After an inset with BreakAfter
@@ -1002,6 +1124,7 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 		++i;
 		++fi;
 	}
+	//--------------------------------------------------------------------vvv
 	row.finalizeLast();
 	row.endpos(i);
 
@@ -1010,7 +1133,7 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 	ParagraphList const & pars = text_->paragraphs();
 	Change const & change = par.lookupChange(i);
 	if ((lyxrc.paragraph_markers || change.changed())
-	    && !need_new_row
+	    && !need_new_row // not this
 	    && i == end && size_type(row.pit() + 1) < pars.size()) {
 		// add a virtual element for the end-of-paragraph
 		// marker; it is shown on screen, but does not exist
@@ -1025,6 +1148,8 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const
 	// Is there a end-of-paragaph change?
 	if (i == end && par.lookupChange(end).changed() && !need_new_row)
 		row.needsChangeBar(true);
+    //--------------------------------------------------------------------^^^
+	// FIXME : nothing below this
 
 	// if the row is too large, try to cut at last separator. In case
 	// of success, reset indication that the row was broken abruptly.
diff --git a/src/TextMetrics.h b/src/TextMetrics.h
index 1501250..1666cd0 100644
--- a/src/TextMetrics.h
+++ b/src/TextMetrics.h
@@ -151,6 +151,8 @@ private:
 	/// FIXME??
 	int labelEnd(pit_type const pit) const;
 
+	Row tokenizeParagraph(pit_type pit) const;
+
 	/// sets row.end to the pos value *after* which a row should break.
 	/// for example, the pos after which isNewLine(pos) == true
 	/// \return true when another row is required (after a newline)

commit a558f78aa547b3a1a052faafccfad4e9b5afc767
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Jul 11 15:33:33 2021 +0200

    Small Row cleanups
    
    Move declaration of RowList to Row.h
    
    Move initialization of POD members of Row and Row::Element to declaration.
    
    Make method isVirtual() depend on type.
    
    Add new row element type INVALID and method isValid()
    
    Make methods R::E::left/right_pos inline.
    
    Add method R::E::splitAt() that returns an element containing the
    remaining stuff, or an invalid element if nothing was split. breakAt
    is now a simple wrapper around this function.
    
    Add method R::push_back().

diff --git a/src/ParagraphMetrics.h b/src/ParagraphMetrics.h
index 9889473..1d690aa 100644
--- a/src/ParagraphMetrics.h
+++ b/src/ParagraphMetrics.h
@@ -20,17 +20,8 @@
 #include "Dimension.h"
 #include "Row.h"
 
-#include <vector>
-
 namespace lyx {
 
-/**
- * Each paragraph is broken up into a number of rows on the screen.
- * This is a list of such on-screen rows, ordered from the top row
- * downwards.
- */
-typedef std::vector<Row> RowList;
-
 class BufferView;
 class Paragraph;
 
diff --git a/src/Row.cpp b/src/Row.cpp
index 2f6db3d..da2d885 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -124,53 +124,43 @@ pos_type Row::Element::x2pos(int &x) const
 			x = 0;
 			i = isRTL();
 		}
+		break;
+	case INVALID:
+		LYXERR0("x2pos: INVALID row element !");
 	}
 	//lyxerr << "=> p=" << pos + i << " x=" << x << endl;
 	return pos + i;
 }
 
 
-bool Row::Element::breakAt(int w, bool force)
+Row::Element Row::Element::splitAt(int w, bool force)
 {
 	if (type != STRING)
-		return false;
+		return Element();
 
 	FontMetrics const & fm = theFontMetrics(font);
 	dim.wid = w;
 	int const i = fm.breakAt(str, dim.wid, isRTL(), force);
 	if (i != -1) {
+		Element ret(STRING, pos + i, font, change);
+		ret.str = str.substr(i);
+		ret.endpos = ret.pos + ret.str.length();
 		str.erase(i);
 		endpos = pos + i;
 		//lyxerr << "breakAt(" << w << ")  Row element Broken at " << x << "(w(str)=" << fm.width(str) << "): e=" << *this << endl;
+		return ret;
 	}
 
-	return i != - 1;
+	return Element();
 }
 
 
-pos_type Row::Element::left_pos() const
-{
-	return isRTL() ? endpos : pos;
-}
-
-
-pos_type Row::Element::right_pos() const
+bool Row::Element::breakAt(int w, bool force)
 {
-	return isRTL() ? pos : endpos;
+	return splitAt(w, force).isValid();
 }
 
 
-Row::Row()
-	: separator(0), label_hfill(0), left_margin(0), right_margin(0),
-	  sel_beg(-1), sel_end(-1),
-	  begin_margin_sel(false), end_margin_sel(false),
-	  changed_(true),
-	  pit_(0), pos_(0), end_(0),
-	  right_boundary_(false), flushed_(false), rtl_(false),
-	  changebar_(false)
-{}
-
-
 bool Row::isMarginSelected(bool left, DocIterator const & beg,
 		DocIterator const & end) const
 {
@@ -262,6 +252,9 @@ ostream & operator<<(ostream & os, Row::Element const & e)
 	case Row::SPACE:
 		os << "SPACE: ";
 		break;
+	case Row::INVALID:
+		os << "INVALID: ";
+		break;
 	}
 	os << "width=" << e.full_width();
 	return os;
@@ -443,6 +436,13 @@ void Row::addSpace(pos_type const pos, int const width,
 }
 
 
+void Row::push_back(Row::Element const & e)
+{
+	dim_.wid += e.dim.wid;
+	elements_.push_back(e);
+}
+
+
 void Row::pop_back()
 {
 	dim_.wid -= elements_.back().dim.wid;
diff --git a/src/Row.h b/src/Row.h
index b54a233..3048cf1 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -49,7 +49,9 @@ public:
 		// An inset
 		INSET,
 		// Some spacing described by its width, not a string
-		SPACE
+		SPACE,
+		// Something that should not happen (for error handling)
+		INVALID
 	};
 
 /**
@@ -57,9 +59,12 @@ public:
  * by other methods that need to parse the Row contents.
  */
 	struct Element {
+		//
+		Element() = default;
+		//
 		Element(Type const t, pos_type p, Font const & f, Change const & ch)
-			: type(t), pos(p), endpos(p + 1), inset(0),
-			  extra(0), font(f), change(ch), final(false) {}
+			: type(t), pos(p), endpos(p + 1), font(f), change(ch) {}
+
 
 		// Return the number of separator in the element (only STRING type)
 		int countSeparators() const;
@@ -86,40 +91,49 @@ public:
 		 *  adjusted to the actual pixel position.
 		*/
 		pos_type x2pos(int &x) const;
+		/** Break the element in two if possible, so that its width is less
+		 * than \param w.
+		 * \return an element containing the remainder of the text, or
+		 *   an invalid element if nothing happened.
+		 * \param w: the desired maximum width
+		 * \param force: if true, the string is cut at any place, otherwise it
+		 *   respects the row breaking rules of characters.
+		 */
+		Element splitAt(int w, bool force);
 		/** Break the element if possible, so that its width is less
 		 * than \param w. Returns true on success. When \param force
-		 * is true, the string is cut at any place, other wise it
+		 * is true, the string is cut at any place, otherwise it
 		 * respects the row breaking rules of characters.
 		 */
 		bool breakAt(int w, bool force);
 
-		// Returns the position on left side of the element.
-		pos_type left_pos() const;
-		// Returns the position on right side of the element.
-		pos_type right_pos() const;
-
 		//
 		bool isRTL() const { return font.isVisibleRightToLeft(); }
 		// This is true for virtual elements.
-		// Note that we do not use the type here. The two definitions
-		// should be equivalent
-		bool isVirtual() const { return pos == endpos; }
+		bool isVirtual() const { return type == VIRTUAL; }
+		// Invalid element, for error handling
+		bool isValid() const { return type !=INVALID; }
+
+		// Returns the position on left side of the element.
+		pos_type left_pos() const { return isRTL() ? endpos : pos; };
+		// Returns the position on right side of the element.
+		pos_type right_pos() const { return isRTL() ? pos : endpos; };
 
 		// The kind of row element
-		Type type;
+		Type type = INVALID;
 		// position of the element in the paragraph
-		pos_type pos;
+		pos_type pos = 0;
 		// first position after the element in the paragraph
-		pos_type endpos;
+		pos_type endpos = 0;
 		// The dimension of the chunk (does not contains the
 		// separator correction)
 		Dimension dim;
 
 		// Non-zero only if element is an inset
-		Inset const * inset;
+		Inset const * inset = nullptr;
 
 		// Only non-null for justified rows
-		double extra;
+		double extra = 0;
 
 		// Non-empty if element is a string or is virtual
 		docstring str;
@@ -128,14 +142,15 @@ public:
 		//
 		Change change;
 		// is it possible to add contents to this element?
-		bool final;
+		bool final = false;
 
 		friend std::ostream & operator<<(std::ostream & os, Element const & row);
 	};
 
 
 	///
-	Row();
+	Row() {}
+
 	/**
 	 * Helper function: set variable \c var to value \c val, and mark
 	 * row as changed is the values were different. This is intended
@@ -264,7 +279,9 @@ public:
 	Element & back() { return elements_.back(); }
 	///
 	Element const & back() const { return elements_.back(); }
-	/// remove last element
+	/// add element at the end and update width
+	void push_back(Element const &);
+	/// remove last element and update width
 	void pop_back();
 	/**
 	 * if row width is too large, remove all elements after last
@@ -301,21 +318,21 @@ public:
 	friend std::ostream & operator<<(std::ostream & os, Row const & row);
 
 	/// additional width for separators in justified rows (i.e. space)
-	double separator;
+	double separator = 0;
 	/// width of hfills in the label
-	double label_hfill;
+	double label_hfill = 0;
 	/// the left margin position of the row
-	int left_margin;
+	int left_margin = 0;
 	/// the right margin of the row
-	int right_margin;
+	int right_margin = 0;
 	///
-	mutable pos_type sel_beg;
+	mutable pos_type sel_beg = -1;
 	///
-	mutable pos_type sel_end;
+	mutable pos_type sel_end = -1;
 	///
-	mutable bool begin_margin_sel;
+	mutable bool begin_margin_sel = false;
 	///
-	mutable bool end_margin_sel;
+	mutable bool end_margin_sel = false;
 
 private:
 	/// Decides whether the margin is selected.
@@ -340,28 +357,35 @@ private:
 	Elements elements_;
 
 	/// has the Row appearance changed since last drawing?
-	mutable bool changed_;
+	mutable bool changed_ = true;
 	/// Index of the paragraph that contains this row
-	pit_type pit_;
+	pit_type pit_ = 0;
 	/// first pos covered by this row
-	pos_type pos_;
+	pos_type pos_ = 0;
 	/// one behind last pos covered by this row
-	pos_type end_;
+	pos_type end_ = 0;
 	// Is there a boundary at the end of the row (display inset...)
-	bool right_boundary_;
+	bool right_boundary_ = false;
 	// Shall the row be flushed when it is supposed to be justified?
-	bool flushed_;
+	bool flushed_ = false;
 	/// Row dimension.
 	Dimension dim_;
 	/// Row contents dimension. Does not contain the space above/below row.
 	Dimension contents_dim_;
 	/// true when this row lives in a right-to-left paragraph
-	bool rtl_;
+	bool rtl_ = false;
 	/// true when a changebar should be drawn in the margin
-	bool changebar_;
+	bool changebar_ = false;
 };
 
 
+/**
+ * Each paragraph is broken up into a number of rows on the screen.
+ * This is a list of such on-screen rows, ordered from the top row
+ * downwards.
+ */
+typedef std::vector<Row> RowList;
+
 } // namespace lyx
 
 #endif
diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp
index 400b7b6..656f89a 100644
--- a/src/RowPainter.cpp
+++ b/src/RowPainter.cpp
@@ -565,6 +565,10 @@ void RowPainter::paintText()
 
 		case Row::SPACE:
 			paintTextDecoration(e);
+			break;
+
+		case Row::INVALID:
+			LYXERR0("Trying to paint INVALID row element.");
 		}
 
 		// The markings of foreign languages

commit 1831f6caaccb7d75e23459fca3b1f7fe9df07766
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sat Jul 10 23:21:27 2021 +0200

    Change FontMetrics::breakAt to return a position
    
    Since we intend to break the row element in two, it is not good to
    truncate the string too early.
    
    Moreover, the row element width is now set at this point, even if no
    breaking occurs.

diff --git a/src/Row.cpp b/src/Row.cpp
index 16ae9ae..2f6db3d 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -132,19 +132,19 @@ pos_type Row::Element::x2pos(int &x) const
 
 bool Row::Element::breakAt(int w, bool force)
 {
-	if (type != STRING || dim.wid <= w)
+	if (type != STRING)
 		return false;
 
 	FontMetrics const & fm = theFontMetrics(font);
-	int x = w;
-	if(fm.breakAt(str, x, isRTL(), force)) {
-		dim.wid = x;
-		endpos = pos + str.length();
+	dim.wid = w;
+	int const i = fm.breakAt(str, dim.wid, isRTL(), force);
+	if (i != -1) {
+		str.erase(i);
+		endpos = pos + i;
 		//lyxerr << "breakAt(" << w << ")  Row element Broken at " << x << "(w(str)=" << fm.width(str) << "): e=" << *this << endl;
-		return true;
 	}
 
-	return false;
+	return i != - 1;
 }
 
 
diff --git a/src/frontends/FontMetrics.h b/src/frontends/FontMetrics.h
index 2a6ffea..b562ebf 100644
--- a/src/frontends/FontMetrics.h
+++ b/src/frontends/FontMetrics.h
@@ -122,13 +122,14 @@ public:
 	 */
 	virtual int x2pos(docstring const & s, int & x, bool rtl, double ws) const = 0;
 	/**
-	 * Break string at width at most x.
-	 * \return true if successful
+	 * Break string s at width at most x.
+	 * \return break position (-1 if not successful)
+	 * \param position x is updated to real width
 	 * \param rtl is true for right-to-left layout
 	 * \param force is false for breaking at word separator, true for
 	 *   arbitrary position.
 	 */
-	virtual bool breakAt(docstring & s, int & x, bool rtl, bool force) const = 0;
+	virtual int breakAt(docstring const & s, int & x, bool rtl, bool force) const = 0;
 	/// return char dimension for the font.
 	virtual Dimension const dimension(char_type c) const = 0;
 	/**
diff --git a/src/frontends/qt/GuiFontMetrics.cpp b/src/frontends/qt/GuiFontMetrics.cpp
index 5e8f535..25bf7a4 100644
--- a/src/frontends/qt/GuiFontMetrics.cpp
+++ b/src/frontends/qt/GuiFontMetrics.cpp
@@ -533,7 +533,7 @@ GuiFontMetrics::breakAt_helper(docstring const & s, int const x,
 	tl.endLayout();
 	int const line_wid = iround(line.horizontalAdvance());
 	if ((force && line.textLength() == offset) || line_wid > x)
-		return {-1, -1};
+		return {-1, line_wid};
 	/* Since QString is UTF-16 and docstring is UCS-4, the offsets may
 	 * not be the same when there are high-plan unicode characters
 	 * (bug #10443).
@@ -557,6 +557,9 @@ GuiFontMetrics::breakAt_helper(docstring const & s, int const x,
 		--len;
 	LASSERT(len > 0 || qlen == 0, /**/);
 #endif
+	// si la chaîne est déjà trop courte, on ne coupe pas
+	if (len == static_cast<int>(s.length()))
+		len = -1;
 	return {len, line_wid};
 }
 
@@ -568,7 +571,7 @@ uint qHash(BreakAtKey const & key)
 }
 
 
-bool GuiFontMetrics::breakAt(docstring & s, int & x, bool const rtl, bool const force) const
+int GuiFontMetrics::breakAt(docstring const & s, int & x, bool const rtl, bool const force) const
 {
 	PROFILE_THIS_BLOCK(breakAt);
 	if (s.empty())
@@ -583,11 +586,8 @@ bool GuiFontMetrics::breakAt(docstring & s, int & x, bool const rtl, bool const
 		pp = breakAt_helper(s, x, rtl, force);
 		breakat_cache_.insert(key, pp, sizeof(key) + s.size() * sizeof(char_type));
 	}
-	if (pp.first == -1)
-		return false;
-	s = s.substr(0, pp.first);
 	x = pp.second;
-	return true;
+	return pp.first;
 }
 
 
diff --git a/src/frontends/qt/GuiFontMetrics.h b/src/frontends/qt/GuiFontMetrics.h
index 9c7ce89..ef8588a 100644
--- a/src/frontends/qt/GuiFontMetrics.h
+++ b/src/frontends/qt/GuiFontMetrics.h
@@ -77,7 +77,7 @@ public:
 	int signedWidth(docstring const & s) const override;
 	int pos2x(docstring const & s, int pos, bool rtl, double ws) const override;
 	int x2pos(docstring const & s, int & x, bool rtl, double ws) const override;
-	bool breakAt(docstring & s, int & x, bool rtl, bool force) const override;
+	int breakAt(docstring const & s, int & x, bool rtl, bool force) const override;
 	Dimension const dimension(char_type c) const override;
 
 	void rectText(docstring const & str,

commit ae56fb617184114329d1e5b9b5fbd6e2bc112231
Author: Stephan Witt <switt at lyx.org>
Date:   Tue Dec 7 10:02:05 2021 +0100

    Qt6 pixmaps are always HiDPI - avoid deprecate warning for setAttribute

diff --git a/src/frontends/qt/GuiApplication.cpp b/src/frontends/qt/GuiApplication.cpp
index 54c8910..ed20130 100644
--- a/src/frontends/qt/GuiApplication.cpp
+++ b/src/frontends/qt/GuiApplication.cpp
@@ -2788,7 +2788,7 @@ void GuiApplication::execBatchCommands()
 #if QT_VERSION > 0x040600
 	setAttribute(Qt::AA_MacDontSwapCtrlAndMeta,lyxrc.mac_dontswap_ctrl_meta);
 #endif
-#if QT_VERSION > 0x050100
+#if QT_VERSION >= 0x050000 && QT_VERSION < 0x060000
 	setAttribute(Qt::AA_UseHighDpiPixmaps,true);
 #endif
 	// Create the global default menubar which is shown for the dialogs

commit 53ed3dc0627d925500db20594af301052b785378
Author: Stephan Witt <switt at lyx.org>
Date:   Mon Dec 6 07:51:26 2021 +0100

    Automate Qt major version detection in macOS build script

diff --git a/development/LyX-Mac-binary-release.sh b/development/LyX-Mac-binary-release.sh
index 04da1f3..25b1c7a 100644
--- a/development/LyX-Mac-binary-release.sh
+++ b/development/LyX-Mac-binary-release.sh
@@ -47,7 +47,7 @@ LyXConfigureOptions="${LyXConfigureOptions} --disable-stdlib-debug"
 AspellConfigureOptions="--enable-warnings --enable-optimization=-O0 --enable-debug --disable-nls --enable-compile-in-filters --disable-pspell-compatibility"
 HunspellConfigureOptions="--with-warnings --disable-nls --disable-static"
 
-QtMajorVersion=qt4
+QtMajorVersion=$(echo "${QtVersion}"|cut -d. -f1)
 QtConfigureOptions="${QtConfigureOptions} -opensource -silent -shared -confirm-license"
 # stupid special case...
 case "${QtVersion}:${QtAPI}" in
@@ -63,7 +63,6 @@ case "${QtVersion}:${QtAPI}" in
 	QtConfigureOptions="${QtConfigureOptions} -fast -no-strip"
 	QtConfigureOptions="${QtConfigureOptions} -no-javascript-jit -no-pkg-config"
 	QtConfigureOptions="${QtConfigureOptions} -nomake examples -nomake demos -nomake docs -nomake tools"
-	QtMajorVersion=qt5
 	;;
 5.6*|5.7*)
 	QtConfigureOptions="${QtConfigureOptions} -no-strip"
@@ -73,7 +72,6 @@ case "${QtVersion}:${QtAPI}" in
 	QtConfigureOptions="${QtConfigureOptions} -skip qtquickcontrols"
 	QtConfigureOptions="${QtConfigureOptions} -skip qttools"
 	QtConfigureOptions="${QtConfigureOptions} -skip qtdeclarative"
-	QtMajorVersion=qt5
 	;;
 5.*)
 	QtConfigureOptions="${QtConfigureOptions} -no-strip"
@@ -82,7 +80,6 @@ case "${QtVersion}:${QtAPI}" in
 	for component in ${QtSkipComponents} ; do
 		QtConfigureOptions="${QtConfigureOptions} -skip ${component}"
 	done
-	QtMajorVersion=qt5
 	;;
 *)
 	QtConfigureOptions="${QtConfigureOptions} -fast -no-exceptions"
@@ -1055,7 +1052,7 @@ build_package() {
 	for arch in ${ARCH_LIST} ; do
 		DMGARCH="${DMGARCH}-${arch}"
 	done
-	QtDmgArchSuffix=${QtMajorVersion}${DMGARCH}${QtAPI}.dmg
+	QtDmgArchSuffix="qt"${QtMajorVersion}${DMGARCH}${QtAPI}.dmg
 
 	test -n "${DMGLocation}" && (
 		make_dmg "${DMGLocation}"

commit b48620dff17f69e8fd8dd9344ef49007b6c28c32
Author: Stephan Witt <switt at lyx.org>
Date:   Mon Dec 6 07:46:35 2021 +0100

    Care for consistent compiler flag values of macosx-version-min with ObjC and C++

diff --git a/config/lyxinclude.m4 b/config/lyxinclude.m4
index 40f86ab..e6cab08 100644
--- a/config/lyxinclude.m4
+++ b/config/lyxinclude.m4
@@ -694,7 +694,7 @@ AC_DEFUN([LYX_CHECK_MACOS_DEPLOYMENT_TARGET],[
       ;;
     esac
   fi
-  AM_CXXFLAGS="-mmacosx-version-min=$macos_deployment_target $AM_CXXFLAGS"
+  AM_CPPFLAGS="-mmacosx-version-min=$macos_deployment_target $AM_CPPFLAGS"
   AM_LDFLAGS="-mmacosx-version-min=$macos_deployment_target $AM_LDFLAGS"
   AC_SUBST(macos_deployment_target,"${macos_deployment_target}")
   AC_MSG_CHECKING([the macos deployment target for LyX])

commit d4678a734acdf57fce243769a5245583554ccf59
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Sun Dec 5 22:07:06 2021 -0500

    ctests: log a fixed issue

diff --git a/development/autotests/ctests-costs-benefits.txt b/development/autotests/ctests-costs-benefits.txt
index 3865ee1..f502ddf 100644
--- a/development/autotests/ctests-costs-benefits.txt
+++ b/development/autotests/ctests-costs-benefits.txt
@@ -58,6 +58,9 @@ Note1  : We are still not sure what to do regarding how to make it more user-fri
          for users to realize that "-dALLOWPSTRANSPARENCY" is needed for the ps2pdf converter.
 Benefit: 14 days (https://www.lyx.org/trac/ticket/12303)
 
+Report : https://www.mail-archive.com/search?l=mid&q=20211205190238.edrtqmg3fkdr7gbo%40poole
+Fix    : 489bf46a, e3489d54
+
 
 Examples where upstream (e.g., LaTeX packages) bugs were fixed (more quickly)
 because of ctests:

commit e3489d54e3485ef186eb70b06d4372eaa400db98
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Dec 5 22:53:36 2021 +0100

    DocBook: implement margin/sidenotes in Tufte.

diff --git a/autotests/export/docbook/Tufte_Book.xml b/autotests/export/docbook/Tufte_Book.xml
index 3289cfd..0c1cd57 100644
--- a/autotests/export/docbook/Tufte_Book.xml
+++ b/autotests/export/docbook/Tufte_Book.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- This DocBook file was created by LyX 2.4.0dev
-  See http://www.lyx.org/ for more information -->
+  See https://www.lyx.org/ for more information -->
 <book xml:lang="en_US" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xi="http://www.w3.org/2001/XInclude" version="5.2">
 <info>
 <title>Tufte Examples</title>
@@ -19,10 +19,15 @@ Working with Text
 </title>
 <para>One of the most prominent and distinctive features of this style is the extensive use of sidenotes. There is a wide margin to provide ample room for sidenotes and small figures. Any footnotes will automatically be converted to sidenotes.<footnote>
 <para>This is a sidenote that was entered using a <code>footnote</code>.</para>
-</footnote> Alternatively, you can also use the <code>Sidenote</code> inset directly; you'll find it in the <emphasis role='sans'>Insert&#x21D2;Custom Insets</emphasis> menu.This is a sidenote that was entered using a sidenote.</para>
-<para>If you like to place ancillary information in the margin without the sidenote mark (the superscript number), you can use the <code>Marginnote</code> inset. This is Tufte's margin note. Notice that there isn't a number preceding the note, and there is no number in the main text where this note was written. The normal margin note will work as well, but it will look rather odd.<sidebar role="margin">
+</footnote> Alternatively, you can also use the <code>Sidenote</code> inset directly; you'll find it in the <emphasis role='sans'>Insert&#x21D2;Custom Insets</emphasis> menu.<footnote role='sidenote'>
+<para>This is a sidenote that was entered using a sidenote.</para>
+</footnote></para>
+<para>If you like to place ancillary information in the margin without the sidenote mark (the superscript number), you can use the <code>Marginnote</code> inset. <footnote role='marginnote'>
+<para>This is Tufte's margin note. Notice that there isn't a number preceding the note, and there is no number in the main text where this note was written.</para>
+</footnote> The normal margin note will work as well, but it will look rather odd.<sidebar role="margin">
 <?dbfo float-type="margin.note"?>
-<para>This is a normal margin note. Don't use it.</para></sidebar></para>
+<para>This is a normal margin note. Don't use it.</para>
+</sidebar></para>
 <para><emphasis role='newthought'>Another useful</emphasis> innovation is Tufte's <code>NewThought</code> character style (<emphasis role='sans'>Edit&#x21D2;TextStyle&#x21D2;NewThought</emphasis>). It introduces new thoughts by means of small caps, as demonstrated in this paragraph. </para>
 <para>The Tufte document classes include two new character styles and some improvements on existing commands for letterspacing.</para>
 <para>When setting strings of <emphasis role='allcaps'>ALL CAPS</emphasis> or <emphasis role='smallcaps'>small caps</emphasis>, the letterspacing—that is, the spacing between the letters—should be increased slightly.<biblioref endterm="Bringhurst2005" /> The <emphasis>AllCaps</emphasis> character style (<emphasis role='sans'>Edit&#x21D2;TextStyle&#x21D2;AllCaps</emphasis>) has proper letterspacing for strings of <emphasis role='allcaps'>FULL CAPITAL LETTERS</emphasis>, and the <emphasis>SmallCaps</emphasis> character style (<emphasis role='sans'>Edit&#x21D2;TextStyle&#x21D2;SmallCaps</emphasis>) has letterspacing for <emphasis role='smallcaps'>small capital letters</emphasis>. These commands will also automatically convert the case of the text to upper- or lowercase, respectively.</para>
diff --git a/lib/layouts/tufte-book.layout b/lib/layouts/tufte-book.layout
index f36f395..bc79f5d 100644
--- a/lib/layouts/tufte-book.layout
+++ b/lib/layouts/tufte-book.layout
@@ -170,6 +170,10 @@ InsetLayout Flex:Sidenote
 	  Color			marginlabel
 	  Size			Small
 	EndFont
+    DocBookTag      footnote
+    DocBookAttr     role='sidenote'
+	DocBookItemTag  para
+    DocBookTagType  inline
 	ResetsFont		true
 End
 
@@ -183,6 +187,7 @@ InsetLayout Flex:Marginnote
 	  Shape			Up
 	  Series		Medium
 	EndFont
+    DocBookAttr     role='marginnote'
 	MultiPar		true
 End
 
@@ -201,6 +206,7 @@ InsetLayout Flex:NewThought
 	ResetsFont		true
 	DocBookTag      emphasis
 	DocBookAttr     role='newthought'
+    DocBookTagType  inline
 End
 
 InsetLayout Flex:AllCaps

commit 489bf46a0345216f1a281617ec2a1ae6019c189f
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Dec 5 22:44:17 2021 +0100

    DocBook: recognise Tufte's float types (margin*).

diff --git a/src/Floating.cpp b/src/Floating.cpp
index 6a532aa..9a20d7c 100644
--- a/src/Floating.cpp
+++ b/src/Floating.cpp
@@ -57,11 +57,11 @@ Floating::Floating(string const & type, string const & placement,
 		// If some type is predetermined in the layout, use it.
 		if (!docbookFloatType.empty() && allowedFloatTypes.find(docbookFloatType) != allowedFloatTypes.end())
 			docbook_float_type_ = docbookFloatType;
-		// Otherwise, try to guess the type.
-		else if (floattype_ == "figure" || floattype_ == "graph" ||
-		    floattype_ == "chart" || floattype_ == "scheme") {
+		// Otherwise, try to guess the DocBook type based on the float type.
+		else if (floattype_ == "figure" || floattype_ == "graph" || floattype_ == "chart" || floattype_ == "scheme" ||
+				floattype_ == "marginfigure") {
 			docbook_float_type_ = "figure";
-		} else if (floattype_ == "table" || floattype_ == "tableau") {
+		} else if (floattype_ == "table" || floattype_ == "tableau" || floattype_ == "margintable") {
 			docbook_float_type_ = "table";
 		} else if (floattype_ == "algorithm") {
 			docbook_float_type_ = "algorithm";

commit 495cde1aca42fb94050f9aea2186e165bb2ead06
Author: Stephan Witt <switt at lyx.org>
Date:   Sun Dec 5 22:38:42 2021 +0100

    Qt 5.12.x requires at least MacOS 10.12

diff --git a/config/lyxinclude.m4 b/config/lyxinclude.m4
index e4acd7b..40f86ab 100644
--- a/config/lyxinclude.m4
+++ b/config/lyxinclude.m4
@@ -686,6 +686,9 @@ AC_DEFUN([LYX_CHECK_MACOS_DEPLOYMENT_TARGET],[
   if test "${macos_deployment_target}" = "auto" ; then
     macos_deployment_target="10.10"
     case "$QTLIB_VERSION" in
+    5.12.*)
+      macos_deployment_target="10.12"
+      ;;
     6.*)
       macos_deployment_target="10.14"
       ;;

commit f700aa98d45f019d4cf875009dc684bbda32a5ec
Author: Stephan Witt <switt at lyx.org>
Date:   Sun Dec 5 22:36:36 2021 +0100

    Amend change d1d22a1433e503c3f36aa982c2a7ec9d1f79273d  - configure Mac compiler flags on Mac only

diff --git a/configure.ac b/configure.ac
index 02a89a8..eabbcf8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -193,7 +193,9 @@ AC_CHECK_FUNCS(chmod close _close fork getpid _getpid lockf lstat mkfifo open _o
 AC_FUNC_MKDIR
 AC_FUNC_SELECT_ARGTYPES
 
-LYX_CHECK_MACOS_DEPLOYMENT_TARGET
+if test "$lyx_use_packaging" = "macosx" ; then
+  LYX_CHECK_MACOS_DEPLOYMENT_TARGET
+fi
 
 LYX_CHECK_SPELL_ENGINES
 LYX_USE_INCLUDED_MYTHES

commit bea2abf6ebe3138508a87787b5abb522cf93cbe4
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Dec 5 20:11:47 2021 +0100

    InsetMathHull: fix column alignment for MathML.
    
    https://www.lyx.org/trac/attachment/ticket/12221/0005-mathmlize-mathhull-checks-for-alignment.patch by lynx

diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp
index 97d95da..b33813b 100644
--- a/src/mathed/InsetMathHull.cpp
+++ b/src/mathed/InsetMathHull.cpp
@@ -2537,22 +2537,26 @@ void InsetMathHull::htmlize(HtmlStream & os) const
 // and we simply do not have that in InsetMathGrid.
 void InsetMathHull::mathmlize(MathMLStream & ms) const
 {
-	bool const havenumbers = haveNumbers();
-	bool const havetable = havenumbers || nrows() > 1 || ncols() > 1;
+	bool const havetable = haveNumbers() || nrows() > 1 || ncols() > 1;
 
     if (havetable) {
-        if (getType() == hullSimple)
-            ms << MTag("mtable");
-        else if (getType() >= hullAlign && getType() <= hullXXAlignAt)
-            ms << MTag("mtable", "displaystyle='true' columnalign='right left'");
-        else
-            ms << MTag("mtable", "displaystyle='true'");
+        if (getType() == hullSimple) {
+	        ms << MTag("mtable");
+        } else if (getType() >= hullAlign && getType() <= hullXXAlignAt) {
+            string alignment;
+            for (col_type col = 0; col < ncols(); ++col) {
+                alignment += (col % 2) ? "left " : "right ";
+            }
+            ms << MTag("mtable", "displaystyle='true' columnalign='" + alignment + "'");
+	    } else {
+	        ms << MTag("mtable", "displaystyle='true'");
+        }
     }
 
 	char const * const celltag = havetable ? "mtd" : "mrow";
 	// FIXME There does not seem to be wide support at the moment
 	// for mlabeledtr, so we have to use just mtr for now.
-	// char const * const rowtag = havenumbers ? "mlabeledtr" : "mtr";
+	// char const * const rowtag = haveNumbers() ? "mlabeledtr" : "mtr";
 	char const * const rowtag = "mtr";
 	for (row_type row = 0; row < nrows(); ++row) {
 		if (havetable)
@@ -2563,12 +2567,12 @@ void InsetMathHull::mathmlize(MathMLStream & ms) const
 			   << ETag(celltag);
 		}
 		// fleqn?
-		if (havenumbers) {
+		if (haveNumbers()) {
 			ms << MTag("mtd");
 			docstring const & num = numbers_[row];
 			if (!num.empty())
 				ms << MTagInline("mtext") << '(' << num << ')' << ETagInline("mtext");
-		  ms << ETag("mtd");
+		    ms << ETag("mtd");
 		}
 		if (havetable)
 			ms << ETag(rowtag);

commit a81dd6518af8ab9b2fc9cf09f38dea5746c2375e
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Dec 5 19:15:06 2021 +0100

    MathStream: better order for the calls to tab() and cr().
    
    Part of https://www.lyx.org/trac/attachment/ticket/12221/0006-amends-to-a579128c-a68e9793-a68e9793.patch by lynx.

diff --git a/src/mathed/MathStream.cpp b/src/mathed/MathStream.cpp
index a6d160c..a05e54a 100644
--- a/src/mathed/MathStream.cpp
+++ b/src/mathed/MathStream.cpp
@@ -361,8 +361,8 @@ MathMLStream & operator<<(MathMLStream & ms, char_type c)
 
 MathMLStream & operator<<(MathMLStream & ms, MTag const & t)
 {
-	++ms.tab();
 	ms.cr();
+	++ms.tab();
 	ms.os() << '<' << from_ascii(ms.namespacedTag(t.tag_));
 	if (!t.attr_.empty())
 		ms.os() << " " << from_ascii(t.attr_);
@@ -384,9 +384,9 @@ MathMLStream & operator<<(MathMLStream & ms, MTagInline const & t)
 
 MathMLStream & operator<<(MathMLStream & ms, ETag const & t)
 {
-	ms.cr();
 	if (ms.tab() > 0)
 		--ms.tab();
+	ms.cr();
 	ms.os() << "</" << from_ascii(ms.namespacedTag(t.tag_)) << ">";
 	return ms;
 }

commit 115ff2fa3c55ff18da3792b8129990c80dbdc1ed
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Dec 5 18:54:05 2021 +0100

    Similar fixes as 946ba7781c179752e450e98a0c356372323100a6

diff --git a/src/mathed/InsetMathBig.cpp b/src/mathed/InsetMathBig.cpp
index 180af9b..0ddb6c8 100644
--- a/src/mathed/InsetMathBig.cpp
+++ b/src/mathed/InsetMathBig.cpp
@@ -137,7 +137,7 @@ void InsetMathBig::normalize(NormalStream & os) const
 
 void InsetMathBig::mathmlize(MathMLStream & ms) const
 {
-	ms << MTagInline("mo", "fence='true' stretchy='true' symmetric='true'>")
+	ms << MTagInline("mo", "fence='true' stretchy='true' symmetric='true'")
 	   << convertDelimToXMLEscape(delim_, ms.xmlMode())
 	   << ETagInline("mo");
 }
diff --git a/src/mathed/InsetMathBoldSymbol.cpp b/src/mathed/InsetMathBoldSymbol.cpp
index a0651ea..4dd1871 100644
--- a/src/mathed/InsetMathBoldSymbol.cpp
+++ b/src/mathed/InsetMathBoldSymbol.cpp
@@ -109,7 +109,7 @@ void InsetMathBoldSymbol::write(TeXMathStream & os) const
 
 void InsetMathBoldSymbol::mathmlize(MathMLStream & ms) const
 {
-	ms << MTagInline("mstyle", "mathvariant='bold'>")
+	ms << MTagInline("mstyle", "mathvariant='bold'")
 	   << cell(0)
 	   << ETagInline("mstyle");
 }
diff --git a/src/mathed/InsetMathDelim.cpp b/src/mathed/InsetMathDelim.cpp
index f5efc43..cd4f8aa 100644
--- a/src/mathed/InsetMathDelim.cpp
+++ b/src/mathed/InsetMathDelim.cpp
@@ -185,10 +185,8 @@ void InsetMathDelim::mathmlize(MathMLStream & ms) const
 	   << MTagInline("mo", "form='prefix' fence='true' stretchy='true' symmetric='true'")
 	   << convertDelimToXMLEscape(left_, ms.xmlMode())
 	   << ETagInline("mo")
-	   << "\n"
 	   << cell(0)
-	   << "\n"
-	   << MTagInline("mo", "form='postfix' fence='true' stretchy='true' symmetric='true'>")
+	   << MTagInline("mo", "form='postfix' fence='true' stretchy='true' symmetric='true'")
 	   << convertDelimToXMLEscape(right_, ms.xmlMode())
 	   << ETagInline("mo")
 	   << ETag("mrow");

commit 946ba7781c179752e450e98a0c356372323100a6
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Dec 5 18:48:27 2021 +0100

    Amend a68e9793: duplicate tag delimiter end.

diff --git a/src/mathed/InsetMathDelim.cpp b/src/mathed/InsetMathDelim.cpp
index e2bd5ac..f5efc43 100644
--- a/src/mathed/InsetMathDelim.cpp
+++ b/src/mathed/InsetMathDelim.cpp
@@ -182,7 +182,7 @@ void InsetMathDelim::mathematica(MathematicaStream & os) const
 void InsetMathDelim::mathmlize(MathMLStream & ms) const
 {
 	ms << MTag("mrow")
-	   << MTagInline("mo", "form='prefix' fence='true' stretchy='true' symmetric='true'>")
+	   << MTagInline("mo", "form='prefix' fence='true' stretchy='true' symmetric='true'")
 	   << convertDelimToXMLEscape(left_, ms.xmlMode())
 	   << ETagInline("mo")
 	   << "\n"

commit d1d22a1433e503c3f36aa982c2a7ec9d1f79273d
Author: Stephan Witt <switt at lyx.org>
Date:   Sun Dec 5 11:10:11 2021 +0100

    introduce LSMinimumSystemVersion for Mac package with automatic Qt-version based detection plus configure option to choose it manually

diff --git a/config/lyxinclude.m4 b/config/lyxinclude.m4
index afad2bd..e4acd7b 100644
--- a/config/lyxinclude.m4
+++ b/config/lyxinclude.m4
@@ -674,6 +674,31 @@ AC_DEFUN([LYX_USE_INCLUDED_MYTHES],[
 ])
 
 
+dnl Usage: LYX_CHECK_MACOS_DEPLOYMENT_TARGET : select the macos deployment target
+dnl                       [default-auto-value])
+dnl  Assign the macosx-version-min value for compiler, linker and Info.plist.
+dnl  Default is dynamic - depends on used Qt library version.
+AC_DEFUN([LYX_CHECK_MACOS_DEPLOYMENT_TARGET],[
+  AC_ARG_WITH(macos-deployment-target,
+    [AS_HELP_STRING([--with-macos-deployment-target], [force the macos deployment target for LyX])],
+    [macos_deployment_target=$withval],
+    [macos_deployment_target=auto])
+  if test "${macos_deployment_target}" = "auto" ; then
+    macos_deployment_target="10.10"
+    case "$QTLIB_VERSION" in
+    6.*)
+      macos_deployment_target="10.14"
+      ;;
+    esac
+  fi
+  AM_CXXFLAGS="-mmacosx-version-min=$macos_deployment_target $AM_CXXFLAGS"
+  AM_LDFLAGS="-mmacosx-version-min=$macos_deployment_target $AM_LDFLAGS"
+  AC_SUBST(macos_deployment_target,"${macos_deployment_target}")
+  AC_MSG_CHECKING([the macos deployment target for LyX])
+  AC_MSG_RESULT([$macos_deployment_target])
+])
+
+
 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
 dnl                       [default-yes-value])
 dnl  Adds a --with-'dir-name' option (described by 'desc') and puts the
diff --git a/configure.ac b/configure.ac
index 785d5c9..02a89a8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -193,6 +193,8 @@ AC_CHECK_FUNCS(chmod close _close fork getpid _getpid lockf lstat mkfifo open _o
 AC_FUNC_MKDIR
 AC_FUNC_SELECT_ARGTYPES
 
+LYX_CHECK_MACOS_DEPLOYMENT_TARGET
+
 LYX_CHECK_SPELL_ENGINES
 LYX_USE_INCLUDED_MYTHES
 
diff --git a/development/LyX-Mac-binary-release.sh b/development/LyX-Mac-binary-release.sh
index 30233cc..04da1f3 100644
--- a/development/LyX-Mac-binary-release.sh
+++ b/development/LyX-Mac-binary-release.sh
@@ -146,7 +146,6 @@ usage() {
 	echo " --aspell-deployment=yes|no ." default yes
 	echo " --with-qt-frameworks=yes|no." default no
 	echo " --qt-deployment=yes|no ....." default yes
-	echo " --with-macosx-target=TARGET " default 10.4 "(Tiger)"
 	echo " --with-sdkroot=SDKROOT ....." default 10.5 "(Leopard)"
 	echo " --with-arch=ARCH ..........." default ppc,i386
 	echo " --with-build-path=PATH ....." default \${lyx-src-dir}/../lyx-build
@@ -190,8 +189,9 @@ while [ $# -gt 0 ]; do
 		QTDIR=$(echo ${1}|cut -d= -f2)
 		shift
 		;;
-	--with-macosx-target=*)
+	--with-macos-deployment-target=*)
 		MACOSX_DEPLOYMENT_TARGET=$(echo ${1}|cut -d= -f2)
+		LyXConfigureOptions="${LyXConfigureOptions} ${1}"
 		shift
 		;;
 	--with-sdkroot=*)
@@ -690,8 +690,8 @@ build_lyx() {
 		if [ -d "${LyxBuildDir}" ];  then rm -r "${LyxBuildDir}"; fi
 		mkdir -p "${LyxBuildDir}" && cd "${LyxBuildDir}"
 
-		CPPFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}"
-		LDFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYLDFLAGS}"
+		CPPFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch}"
+		LDFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch}"
 
 		if [ "$configure_qt_frameworks" = "yes" ]; then
 			export QT_CORE_CFLAGS="-FQtCore"
diff --git a/development/MacOSX/Info.plist.in b/development/MacOSX/Info.plist.in
index 64f12ae..e8d3b09 100644
--- a/development/MacOSX/Info.plist.in
+++ b/development/MacOSX/Info.plist.in
@@ -41,6 +41,8 @@
 	<string>YES</string>
 	<key>OSAScriptingDefinition</key>
 	<string>LyX.sdef</string>
+	<key>LSMinimumSystemVersion</key>
+	<string>@macos_deployment_target@</string>
 	<key>NSHighResolutionCapable</key>
 	<true/>
 	<key>NSPrincipalClass</key>

commit c7b4cae84099f097fa227444b6c9bd1036151d70
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Sat Dec 4 15:17:36 2021 -0500

    Typo in doc: capitalize "t" in "EndLabeltype"

diff --git a/lib/attic/doc/eu_Customization.lyx b/lib/attic/doc/eu_Customization.lyx
index 0bf4c36..0790b19 100644
--- a/lib/attic/doc/eu_Customization.lyx
+++ b/lib/attic/doc/eu_Customization.lyx
@@ -6496,7 +6496,7 @@ Counter_xxx
 
 \family typewriter
 \series medium
-EndLabeltype
+EndLabelType
 \family default
 \series default
  
diff --git a/lib/doc/Customization.lyx b/lib/doc/Customization.lyx
index 079b7f7..cd5d71d 100644
--- a/lib/doc/Customization.lyx
+++ b/lib/doc/Customization.lyx
@@ -14252,7 +14252,7 @@ Note that, besides that functionality, there is no way to ensure any ordering
 status collapsed
 
 \begin_layout Plain Layout
-EndLabeltype
+EndLabelType
 \end_layout
 
 \end_inset
diff --git a/lib/doc/de/Customization.lyx b/lib/doc/de/Customization.lyx
index b7b39a2..a569eaa 100644
--- a/lib/doc/de/Customization.lyx
+++ b/lib/doc/de/Customization.lyx
@@ -11698,7 +11698,7 @@ Beachten Sie, dass es außer dieser Funktionalität keine andere Möglichkeit
 status collapsed
 
 \begin_layout Plain Layout
-EndLabeltype
+EndLabelType
 \end_layout
 
 \end_inset
diff --git a/lib/doc/es/Customization.lyx b/lib/doc/es/Customization.lyx
index b494280..e9f76c7 100644
--- a/lib/doc/es/Customization.lyx
+++ b/lib/doc/es/Customization.lyx
@@ -12110,7 +12110,7 @@ Anotar que, excepto esta funcionalidad, no hay forma de asegurar ningún
 status collapsed
 
 \begin_layout Plain Layout
-EndLabeltype
+EndLabelType
 \end_layout
 
 \end_inset
diff --git a/lib/doc/fr/Customization.lyx b/lib/doc/fr/Customization.lyx
index 52fbd15..75b0f37 100644
--- a/lib/doc/fr/Customization.lyx
+++ b/lib/doc/fr/Customization.lyx
@@ -12028,7 +12028,7 @@ Noter que, à part cette fonctionnalité, il n'y a aucun moyen de garantir
 status collapsed
 
 \begin_layout Plain Layout
-EndLabeltype
+EndLabelType
 \end_layout
 
 \end_inset
diff --git a/lib/doc/ja/Customization.lyx b/lib/doc/ja/Customization.lyx
index 80f9fb6..c3b395a 100644
--- a/lib/doc/ja/Customization.lyx
+++ b/lib/doc/ja/Customization.lyx
@@ -10831,7 +10831,7 @@ status collapsed
 status collapsed
 
 \begin_layout Plain Layout
-EndLabeltype
+EndLabelType
 \end_layout
 
 \end_inset

commit 31146ae8d3c058f33931ba40ad36b6ad9c588195
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Dec 4 17:53:03 2021 +0100

    Prevent Outliner crash due to emptied toc value
    
    This might need a more profound fix in the long term, see
    https://marc.info/?l=lyx-devel&m=163588729224679&w=2

diff --git a/src/frontends/qt/TocModel.cpp b/src/frontends/qt/TocModel.cpp
index 16990b8..c0c3dce 100644
--- a/src/frontends/qt/TocModel.cpp
+++ b/src/frontends/qt/TocModel.cpp
@@ -327,6 +327,11 @@ TocItem const TocModels::currentItem(QString const & type,
 	}
 	LASSERT(index.model() == it.value()->model(), return TocItem());
 
+	if (it.value()->empty()) {
+		LYXERR(Debug::GUI, "TocModels::currentItem(): requested toc is empty!");
+		return TocItem();
+	}
+
 	return it.value()->tocItem(index);
 }
 
diff --git a/src/frontends/qt/TocModel.h b/src/frontends/qt/TocModel.h
index 55507a0..ee44761 100644
--- a/src/frontends/qt/TocModel.h
+++ b/src/frontends/qt/TocModel.h
@@ -47,6 +47,8 @@ public:
 	///
 	void clear();
 	///
+	bool empty() { return toc_->empty(); }
+	///
 	QAbstractItemModel * model();
 	///
 	QAbstractItemModel const * model() const;

commit 5eecfa3e049f6b23bce364b989155ce3e38590d8
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Nov 28 14:33:45 2021 +0100

    When inserting text character in mathed, group in same \text when possible.
    
    When inserting € in a math cell, it is put in a text inset and the
    cursor leaves the inset. However, inserting ¤ then leads to
    \text{€}\text{¤}.
    
    Therefore, try to see if there is a previous \text inset that can be
    recycled and insert the new inset there in this case, leading to
    \text{€¤}.
    
    Fixes bug #11979.

diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp
index b62505a..7241e0b 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -1903,10 +1903,16 @@ bool InsetMathNest::interpretChar(Cursor & cur, char_type const c)
 			return true;
 		}
 		if (currentMode() == InsetMath::MATH_MODE && Encodings::isUnicodeTextOnly(c)) {
-			MathAtom at = createInsetMath("text", buf);
-			at.nucleus()->cell(0).push_back(MathAtom(new InsetMathChar(c)));
-			cur.insert(at);
-			cur.posForward();
+			MathAtom const atom(new InsetMathChar(c));
+			if (cur.prevInset() && cur.prevInset()->asInsetMath()->name() == "text") {
+				// reuse existing \text inset
+				cur.prevInset()->asInsetMath()->cell(0).push_back(atom);
+			} else {
+				MathAtom at = createInsetMath("text", buf);
+				at.nucleus()->cell(0).push_back(atom);
+				cur.insert(at);
+				cur.posForward();
+			}
 			return true;
 		}
 	} else {

commit e522c5444e14e1cfb4c47659f2fcb1c91ae6b2c4
Author: Daniel Ramoeller <d.lyx at web.de>
Date:   Mon Nov 22 10:15:38 2021 +0100

    InsertTableWidget support for dark mode and improved resizing
    
    Fix for bug #12438.

diff --git a/src/frontends/qt/InsertTableWidget.cpp b/src/frontends/qt/InsertTableWidget.cpp
index 3746bb1..07ae061 100644
--- a/src/frontends/qt/InsertTableWidget.cpp
+++ b/src/frontends/qt/InsertTableWidget.cpp
@@ -33,7 +33,7 @@ namespace lyx {
 namespace frontend {
 
 InsertTableWidget::InsertTableWidget(QWidget * parent)
-	: QWidget(parent, Qt::Popup), colwidth_(20), rowheight_(12)
+	: QWidget(parent, Qt::Popup), colwidth_(15), rowheight_(15), minrows_(5), mincols_(5)
 {
 	init();
 	setMouseTracking(true);
@@ -42,8 +42,8 @@ InsertTableWidget::InsertTableWidget(QWidget * parent)
 
 void InsertTableWidget::init()
 {
-	rows_ = 5;
-	cols_ = 5;
+	rows_ = minrows_;
+	cols_ = mincols_;
 	bottom_ = 0;
 	right_ = 0;
 	underMouse_ = false;
@@ -98,13 +98,15 @@ void InsertTableWidget::mouseMoveEvent(QMouseEvent * event)
 	bottom_ = event->y() / rowheight_ + 1;
 #endif
 
-	if (bottom_ == rows_) {
-		++rows_;
+	int const newrows = std::max(minrows_, bottom_ + 1);
+	if (rows_ != newrows) {
+		rows_ = newrows;
 		resetGeometry();
 	}
 
-	if (right_ == cols_) {
-		++cols_;
+	int const newcols = std::max(mincols_, right_ + 1);
+	if (cols_ != newcols) {
+		cols_ = newcols;
 		resetGeometry();
 	}
 
@@ -140,17 +142,20 @@ void InsertTableWidget::mousePressEvent(QMouseEvent * /*event*/)
 
 void InsertTableWidget::paintEvent(QPaintEvent * /*event*/)
 {
-	drawGrid(rows_, cols_, Qt::white);
+	QPalette const palette = this->palette();
+	drawGrid(rows_, cols_, palette.base(), palette.text().color());
 	if (underMouse_)
-		drawGrid(bottom_, right_, Qt::darkBlue);
+		drawGrid(bottom_, right_, palette.highlight(),
+				palette.highlightedText().color());
 }
 
 
-void InsertTableWidget::drawGrid(int const rows, int const cols, Qt::GlobalColor const color)
+void InsertTableWidget::drawGrid(int const rows, int const cols,
+	QBrush const fillBrush, QColor lineColor)
 {
 	QPainter painter(this);
-	painter.setPen(Qt::darkGray);
-	painter.setBrush(color);
+	painter.setPen(lineColor);
+	painter.setBrush(fillBrush);
 
 	for (int r = 0 ; r < rows ; ++r ) {
 		for (int c = 0 ; c < cols ; ++c ) {
diff --git a/src/frontends/qt/InsertTableWidget.h b/src/frontends/qt/InsertTableWidget.h
index 78e2497..5e2e244 100644
--- a/src/frontends/qt/InsertTableWidget.h
+++ b/src/frontends/qt/InsertTableWidget.h
@@ -48,7 +48,7 @@ private:
 	//! initialize parameters to default values
 	void init();
 	//! draw the grid
-	void drawGrid(int rows, int cols, Qt::GlobalColor color);
+	void drawGrid(int rows, int cols, QBrush fillBrush, QColor lineColor);
 
 	//! colwidth in pixels
 	int colwidth_;
@@ -56,8 +56,12 @@ private:
 	int rowheight_;
 	//! total rows
 	int rows_;
+	//! minimum number of rows
+	int minrows_;
 	//! total cols
 	int cols_;
+	//! minimum number of cols
+	int mincols_;
 	//! row of pointer
 	int bottom_;
 	//! column of pointer

commit a9eb3c9990b9a05c7d7e569db5d13ad294742cbb
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Nov 25 18:47:23 2021 +0100

    Whitespace

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index cf2f53a..7fb46ae 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -4858,7 +4858,7 @@ Language * Paragraph::Private::getSpellLanguage(pos_type const from) const
 void Paragraph::requestSpellCheck(pos_type pos)
 {
 	d->requestSpellCheck(pos);
-	if (pos == -1 ) {
+	if (pos == -1) {
 		// Also request spellcheck within (text) insets
 		for (auto const & insets : insetList()) {
 			if (!insets.inset->asInsetText())

commit 5a6498c3d3bfe0cfa562b67eaf1f8dd303d8152e
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Nov 25 17:04:58 2021 +0100

    Let paragraph::requestSpellcheck() consider contained insets
    
    if "check whole paragraph" has been requested.

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 6b1e118..cf2f53a 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -4858,6 +4858,19 @@ Language * Paragraph::Private::getSpellLanguage(pos_type const from) const
 void Paragraph::requestSpellCheck(pos_type pos)
 {
 	d->requestSpellCheck(pos);
+	if (pos == -1 ) {
+		// Also request spellcheck within (text) insets
+		for (auto const & insets : insetList()) {
+			if (!insets.inset->asInsetText())
+				continue;
+			ParagraphList & inset_pars =
+				insets.inset->asInsetText()->paragraphs();
+			ParagraphList::iterator pit = inset_pars.begin();
+			ParagraphList::iterator pend = inset_pars.end();
+			for (; pit != pend; ++pit)
+				pit->requestSpellCheck();
+		}
+	}
 }
 
 

commit e366dba9bfb702a83f697e9eb75aa0a1ad5ef3ce
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Nov 25 17:04:17 2021 +0100

    Factor out Buffer::requestSpellcheck() function

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index e78a443..7cb5ac2 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -5381,6 +5381,15 @@ int Buffer::spellCheck(DocIterator & from, DocIterator & to,
 }
 
 
+void Buffer::requestSpellcheck()
+{
+	ParagraphList::iterator pit = paragraphs().begin();
+	ParagraphList::iterator pend = paragraphs().end();
+	for (; pit != pend; ++pit)
+		pit->requestSpellCheck();
+}
+
+
 void Buffer::Impl::updateStatistics(DocIterator & from, DocIterator & to, bool skipNoOutput)
 {
 	bool inword = false;
diff --git a/src/Buffer.h b/src/Buffer.h
index e342199..332ef86 100644
--- a/src/Buffer.h
+++ b/src/Buffer.h
@@ -748,6 +748,8 @@ public:
 	/// \return progress if a new word was found.
 	int spellCheck(DocIterator & from, DocIterator & to,
 		WordLangTuple & word_lang, docstring_list & suggestions) const;
+	/// Marks the whole buffer to be checked (again)
+	void requestSpellcheck();
 	///
 	void checkChildBuffers();
 	///
diff --git a/src/Text3.cpp b/src/Text3.cpp
index 8257452..1623996 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -2762,11 +2762,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 			bv->buffer().params().spellignore().push_back(wl);
 			cur.recordUndo();
 			// trigger re-check of whole buffer
-			ParagraphList & pars = bv->buffer().paragraphs();
-			ParagraphList::iterator pit = pars.begin();
-			ParagraphList::iterator pend = pars.end();
-			for (; pit != pend; ++pit)
-				pit->requestSpellCheck();
+			bv->buffer().requestSpellcheck();
 		}
 		break;
 	}
@@ -2800,11 +2796,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 			bv->buffer().params().spellignore().erase(it);
 			cur.recordUndo();
 			// trigger re-check of whole buffer
-			ParagraphList & pars = bv->buffer().paragraphs();
-			ParagraphList::iterator pit = pars.begin();
-			ParagraphList::iterator pend = pars.end();
-			for (; pit != pend; ++pit)
-				pit->requestSpellCheck();
+			bv->buffer().requestSpellcheck();
 		}
 		break;
 	}

commit 4dec64dba4c3a4abbd29128e5407741b80a0c865
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Wed Nov 24 11:44:53 2021 +0100

    gzstream is able to read uncompressed files too
    
    This allows to simplify the code in Lexer and to remove the dependency
    on Formats class.
    
    As a consequence, a pair of dummy definitions of isZippedFile can be removed.

diff --git a/src/Lexer.cpp b/src/Lexer.cpp
index 17cc161..c6402ae 100644
--- a/src/Lexer.cpp
+++ b/src/Lexer.cpp
@@ -14,7 +14,6 @@
 #include <config.h>
 
 #include "Lexer.h"
-#include "Format.h"
 
 #include "support/convert.h"
 #include "support/debug.h"
@@ -81,9 +80,6 @@ public:
 	bool inputAvailable();
 	///
 	void pushToken(string const &);
-	/// fb_ is only used to open files, the stream is accessed through is.
-	filebuf fb_;
-
 	/// gz_ is only used to open files, the stream is accessed through is.
 	gz::gzstreambuf gz_;
 
@@ -149,7 +145,7 @@ bool compareTags(LexerKeyword const & a, LexerKeyword const & b)
 
 
 Lexer::Pimpl::Pimpl(LexerKeyword * tab, int num)
-	: is(&fb_), table(tab), no_items(num),
+	: is(&gz_), table(tab), no_items(num),
 	  status(0), lineno(0), commentChar('#')
 {
 	verifyTable();
@@ -235,38 +231,14 @@ void Lexer::Pimpl::popTable()
 
 bool Lexer::Pimpl::setFile(FileName const & filename)
 {
-	// Check the format of the file.
-	if (theFormats().isZippedFile(filename)) {
-		LYXERR(Debug::LYXLEX, "lyxlex: compressed");
-		// The check only outputs a debug message, because it triggers
-		// a bug in compaq cxx 6.2, where is_open() returns 'true' for
-		// a fresh new filebuf.  (JMarc)
 		if (gz_.is_open() || istream::off_type(is.tellg()) > -1)
-			LYXERR(Debug::LYXLEX, "Error in LyXLex::setFile: "
-				"file or stream already set.");
+			LYXERR0("Error in LyXLex::setFile: file or stream already set.");
 		gz_.open(filename.toFilesystemEncoding().c_str(), ios::in);
 		is.rdbuf(&gz_);
 		name = filename.absFileName();
 		lineno = 0;
 		if (!gz_.is_open() || !is.good())
 			return false;
-	} else {
-		LYXERR(Debug::LYXLEX, "lyxlex: UNcompressed");
-
-		// The check only outputs a debug message, because it triggers
-		// a bug in compaq cxx 6.2, where is_open() returns 'true' for
-		// a fresh new filebuf.  (JMarc)
-		if (fb_.is_open() || istream::off_type(is.tellg()) > 0) {
-			LYXERR(Debug::LYXLEX, "Error in Lexer::setFile: "
-				"file or stream already set.");
-		}
-		fb_.open(filename.toSafeFilesystemEncoding().c_str(), ios::in);
-		is.rdbuf(&fb_);
-		name = filename.absFileName();
-		lineno = 0;
-		if (!fb_.is_open() || !is.good())
-			return false;
-	}
 
 	// Skip byte order mark.
 	if (is.peek() == 0xef) {
@@ -284,10 +256,8 @@ bool Lexer::Pimpl::setFile(FileName const & filename)
 
 void Lexer::Pimpl::setStream(istream & i)
 {
-	if (fb_.is_open() || istream::off_type(is.tellg()) > 0) {
-		LYXERR(Debug::LYXLEX, "Error in Lexer::setStream: "
-			"file or stream already set.");
-	}
+	if (gz_.is_open() || istream::off_type(is.tellg()) > 0)
+		LYXERR0("Error in Lexer::setStream: file or stream already set.");
 	is.rdbuf(i.rdbuf());
 	lineno = 0;
 }
diff --git a/src/tests/check_layout.cpp b/src/tests/check_layout.cpp
index afdb667..f92daa2 100644
--- a/src/tests/check_layout.cpp
+++ b/src/tests/check_layout.cpp
@@ -3,7 +3,6 @@
 #include "../support/debug.h"
 #include "../support/FileName.h"
 #include "../support/filetools.h"
-#include "../Format.h"
 #include "../LayoutFile.h"
 #include "../LaTeXFeatures.h"
 #include "../Lexer.h"
@@ -34,11 +33,6 @@ bool LaTeXFeatures::isAvailable(std::string const &)
 	return false;
 }
 
-Formats formats;
-bool Formats::isZippedFile(support::FileName const &) const
-{
-	return false;
-}
 } // namespace lyx
 
 
diff --git a/src/tex2lyx/dummy_impl.cpp b/src/tex2lyx/dummy_impl.cpp
index eb44567..62436af 100644
--- a/src/tex2lyx/dummy_impl.cpp
+++ b/src/tex2lyx/dummy_impl.cpp
@@ -18,7 +18,6 @@
 
 #include <config.h>
 
-#include "Format.h"
 #include "LaTeXFeatures.h"
 #include "LyXRC.h"
 #include "output_xhtml.h"
@@ -74,23 +73,6 @@ Messages const & getGuiMessages()
 
 
 //
-// Dummy formats support (needed by Lexer)
-//
-
-
-Formats & theFormats()
-{
-	static Formats dummy_formats;
-	return dummy_formats;
-}
-
-bool Formats::isZippedFile(support::FileName const&) const
-{
-	return false;
-}
-
-
-//
 // Dummy features support (needed by ModuleList)
 //
 

-----------------------------------------------------------------------


hooks/post-receive
-- 
Repository for new features


More information about the lyx-cvs mailing list