commit 5b6329786bd308f4d41048ec7ee330e9e14dd0ea
Author: Juergen Spitzmueller <[email protected]>
Date: Mon Oct 6 15:09:18 2025 +0200
Support formatted references for linguistic elements
via CrossrefNeedDef
file format change
---
development/FORMAT | 5 +
lib/examples/Modules/Linguistics.lyx | 58 ++-
lib/examples/de/Modules/Linguistics.lyx | 651 --------------------------------
lib/layouts/linguistics.module | 6 +-
lib/lyx2lyx/LyX.py | 5 +-
lib/lyx2lyx/Makefile.am | 1 +
lib/lyx2lyx/lyx_2_6.py | 217 +++++++++++
src/version.h | 4 +-
8 files changed, 284 insertions(+), 663 deletions(-)
diff --git a/development/FORMAT b/development/FORMAT
index b6fdeda12b..0d9cde93a9 100644
--- a/development/FORMAT
+++ b/development/FORMAT
@@ -7,6 +7,11 @@ changes happened in particular if possible. A good example
would be
-----------------------
+2025-10-05 Jürgen Spitzmüller <[email protected]>
+ * Format incremented to 644:
+ Support formatted cross references for examples
+ and tableaux in linguistics module
+
2025-07-30 Jürgen Spitzmüller <[email protected]>
* Format incremented to 643: New buffer param
\begin_preamble_html ... \end_preamble_html
diff --git a/lib/examples/Modules/Linguistics.lyx
b/lib/examples/Modules/Linguistics.lyx
index 2c8b93d1f3..f14a122c50 100644
--- a/lib/examples/Modules/Linguistics.lyx
+++ b/lib/examples/Modules/Linguistics.lyx
@@ -30,9 +30,6 @@
}
}
}{}
-
-% Formatted references to (sub-)examples via prettyref
-\newrefformat{lex}{example~(\ref{#1})}
\end_preamble
\use_default_options false
\begin_modules
@@ -134,7 +131,7 @@ End
\paperpagestyle default
\tablestyle default
\listings_params "language={[LaTeX]TeX},basicstyle={\ttfamily}"
-\tracking_changes false
+\tracking_changes true
\output_changes false
\change_bars false
\postpone_fragile_content false
@@ -144,6 +141,7 @@ End
\docbook_table_output 0
\docbook_mathml_prefix 1
\docbook_mathml_version 0
+\author -712698321 "Jürgen Spitzmüller"
\end_header
\begin_body
@@ -173,7 +171,13 @@ literal "false"
\begin_layout Date
\SpecialChar LyX
v.
- 2.5
+ 2.
+\change_deleted -712698321 1759755941
+5
+\change_inserted -712698321 1759755941
+6
+\change_unchanged
+
\end_layout
\begin_layout Abstract
@@ -739,7 +743,9 @@ tuple "list"
\end_inset
.
- However,
+
+\change_deleted -712698321 1759755984
+However,
as the cross-reference packages that are employed by \SpecialChar LyX
to produce such references do not know
\emph on
@@ -758,6 +764,8 @@ Format Packages
\end_layout
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
In what follows,
we describe the necessary settings for English documents.
If you write in a different language (or prefer other terminology),
@@ -785,6 +793,8 @@ Examples
\end_layout
\begin_layout Enumerate
+
+\change_deleted -712698321 1759755984
With
\begin_inset Quotes eld
\end_inset
@@ -799,6 +809,8 @@ prettyref and varioref
\begin_deeper
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
\begin_inset listings
inline false
status open
@@ -817,6 +829,8 @@ ref{#1})}
\end_layout
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
Note that the
\emph on
prettyref
@@ -851,6 +865,8 @@ lex:
\end_deeper
\begin_layout Enumerate
+
+\change_deleted -712698321 1759755984
With
\begin_inset Quotes eld
\end_inset
@@ -865,6 +881,8 @@ refstyle and varioref
\begin_deeper
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
\begin_inset listings
inline false
status open
@@ -907,6 +925,8 @@ ref{#1})
\end_layout
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
As with
\emph on
prettyref
@@ -939,6 +959,8 @@ refstyle
\end_deeper
\begin_layout Enumerate
+
+\change_deleted -712698321 1759755984
With
\begin_inset Quotes eld
\end_inset
@@ -953,6 +975,8 @@ cleveref and varioref
\begin_deeper
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
\begin_inset listings
inline false
status open
@@ -1046,6 +1070,8 @@ crefalias{equation}{covex}
\end_layout
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
Other than
\emph on
prettyref
@@ -1092,6 +1118,8 @@ first-level enumeration) counter.
\end_layout
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
If you separate numbering for equations and examples as documented in
\begin_inset CommandInset ref
LatexCommand formatted
@@ -1104,6 +1132,8 @@ reference "subsec:numbering"
\end_layout
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
Also,
other than
\emph on
@@ -1120,6 +1150,8 @@ refstyle
\end_deeper
\begin_layout Enumerate
+
+\change_deleted -712698321 1759755984
Finally,
with
\begin_inset Quotes eld
@@ -1135,6 +1167,8 @@ zref-clever and zref-vario
\begin_deeper
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
\begin_inset listings
inline false
status open
@@ -1227,6 +1261,8 @@ zcsetup{countertype={equation=covex}}%
\end_layout
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
As with
\emph on
cleveref
@@ -1238,6 +1274,8 @@ cleveref
\end_layout
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
Note that
\emph on
zref-clever
@@ -1273,6 +1311,8 @@ literal "false"
\end_layout
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
Note,
finally,
that the
@@ -1287,6 +1327,8 @@ AddToHook
\end_deeper
\begin_layout Standard
+
+\change_deleted -712698321 1759755984
If you want the formatted references also to appear that way in the workarea
or cross-references dialog,
add this to
\family sans
@@ -1298,6 +1340,8 @@ Local Layout
\end_layout
\begin_layout Quote
+
+\change_deleted -712698321 1759755984
\begin_inset listings
inline false
status open
@@ -1349,6 +1393,8 @@ End
\end_inset
+\change_unchanged
+
\end_layout
\begin_layout Subsection
diff --git a/lib/examples/de/Modules/Linguistics.lyx
b/lib/examples/de/Modules/Linguistics.lyx
index 7232758e2d..ea5cba0bc7 100644
--- a/lib/examples/de/Modules/Linguistics.lyx
+++ b/lib/examples/de/Modules/Linguistics.lyx
@@ -34,9 +34,6 @@
% Trennausnahmen
\hyphenation{Dis-kurs-reprä-sen-ta-tions-struk-tur}
-
-% Formatierte Querverweise auf (Unter-)Beispiele mittels prettyref
-\newrefformat{lex}{Beispiel~(\ref{#1})}
\end_preamble
\use_default_options false
\begin_modules
@@ -786,654 +783,6 @@ tuple "list"
\end_inset
.
- Da jedoch die \SpecialChar LaTeX
--Pakete,
- die \SpecialChar LyX
- zur Produktion solcher Querverweise einbindet,
- das Paket
-\emph on
-covington
-\emph default
- nicht kennen,
- müssen Sie \SpecialChar LaTeX
--Code in den Vorspann eingeben,
- damit dies funktioniert.
- Welcher Code das ist,
- hängt von Ihrer Auswahl in
-\family sans
-Dokument\SpecialChar menuseparator
-Einstellungen\SpecialChar menuseparator
-Dokumentklasse\SpecialChar menuseparator
-Formatpakete
-\family default
- ab.
-\end_layout
-
-\begin_layout Standard
-Im Folgenden beschreiben wir,
- was Sie für englischsprachige Dokumente tun müssen (englischsprachig deshalb,
- weil wir dort anders als im Deutschen die Differenzierung zwischen Groß- und
Kleinschreibung brauchen).
- Falls Sie in einer anderen Sprache schreiben (oder eine andere Terminologie
bevorzugen),
- passen Sie die Zeichenketten
-\emph on
-example
-\emph default
- in den verschiedenen Varianten (
-\emph on
-\lang english
-examples
-\emph default
-\lang ngerman
-,
-
-\emph on
-\lang english
-Example
-\emph default
-\lang ngerman
-,
-
-\emph on
-\lang english
-Examples
-\emph default
-\lang ngerman
-) an.
- Für Deutsch,
- wo Nomina stets großgeschrieben werden,
- verwenden Sie natürlich für alle Varianten Großschreibung (die
Differenzierung der Varianten ist dennoch auch hier aus systematischen Gründen
sinnvoll):
-\end_layout
-
-\begin_layout Enumerate
-Mit
-\begin_inset Quotes gld
-\end_inset
-
-Prettyref und Varioref
-\begin_inset Quotes grd
-\end_inset
-
- (was wir auch in diesem Dokument verwenden),
- fügen Sie ein:
-\end_layout
-
-\begin_deeper
-\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-
-\backslash
-newrefformat{lex}{example~(
-\backslash
-ref{#1})}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Beachten Sie,
- dass das Paket
-\emph on
-prettyref
-\emph default
- sehr basal ist und keine optionalen Plural- (
-\emph on
-\lang english
-examples
-\emph default
-\lang ngerman
-) oder Groß-/Kleinschreibungsvarianten (
-\emph on
-\lang english
-Example
-\emph default
-,
-
-\emph on
-Examples
-\emph default
-\lang ngerman
-) anbietet (welche Sie ansonsten im Querverweis-Dialog oder Kontextmenü
auswählen könnten).
- Beachten Sie auch,
- dass die Definition von dem Präfix,
- das Sie in den Marken verwenden,
- abhängt.
- Die Definition oben setzt voraus,
- dass dies
-\begin_inset Quotes gld
-\end_inset
-
-lex:
-\begin_inset Quotes grd
-\end_inset
-
- ist,
- denn dies ist auch das Präfix,
- das \SpecialChar LyX
- für linguistische Beispiele und Unterbeispiele automatisch einfügt.
-\end_layout
-
-\end_deeper
-\begin_layout Enumerate
-Mit
-\begin_inset Quotes gld
-\end_inset
-
-Refstyle und Varioref
-\begin_inset Quotes grd
-\end_inset
-
- (der Voreinstellung für neue Dokumente),
- fügen Sie statt dessen ein:
-\end_layout
-
-\begin_deeper
-\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-
-\backslash
-newref{lex}{
-\end_layout
-
-\begin_layout Plain Layout
- name = {example~},
-\end_layout
-
-\begin_layout Plain Layout
- names = {examples~},
-\end_layout
-
-\begin_layout Plain Layout
- Name = {Example~},
-\end_layout
-
-\begin_layout Plain Layout
- Names = {Examples~},
-\end_layout
-
-\begin_layout Plain Layout
- refcmd = (
-\backslash
-ref{#1})
-\end_layout
-
-\begin_layout Plain Layout
-}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Wie bei
-\emph on
-prettyref
-\emph default
- hängt die Definition von dem Präfix,
- das Sie in den Marken verwenden,
- ab.
- Die Definition oben setzt voraus,
- dass dies
-\begin_inset Quotes gld
-\end_inset
-
-lex:
-\begin_inset Quotes grd
-\end_inset
-
- ist,
- denn dies ist auch das Präfix,
- das \SpecialChar LyX
- für linguistische Beispiele und Unterbeispiele automatisch einfügt.
- Anders als
-\emph on
-prettyref
-\emph default
- erlaubt
-\emph on
-refstyle
-\emph default
- Plural und Großschreibung (bspw.
- am Satzanfang im Englischen).
- Beides kann für individuelle Verweise im Querverwies-Dialog oder Kontextmenü
ausgewählt werden.
-\end_layout
-
-\end_deeper
-\begin_layout Enumerate
-Mit
-\begin_inset Quotes gld
-\end_inset
-
-Cleveref und Varioref
-\begin_inset Quotes grd
-\end_inset
-
-,
- fügen Sie ein:
-\end_layout
-
-\begin_deeper
-\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-% Wir müssen cleveref manuell laden,
- da es
-\end_layout
-
-\begin_layout Plain Layout
-% vor covington geladen werden muss!
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-usepackage{cleveref}
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-crefname{covex}{example}{examples}
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-Crefname{covex}{Example}{Examples}
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-creflabelformat{covex}{
-\backslash
-textup{(#2#1#3)}}
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-AddToHook{env/covsubexamples/begin}{%
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-crefalias{enumi}{covex}
-\end_layout
-
-\begin_layout Plain Layout
-}
-\end_layout
-
-\begin_layout Plain Layout
-% Das Folgende ist mit der Option
-\begin_inset Quotes eld
-\end_inset
-
-owncounter
-\begin_inset Quotes erd
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-% nicht nötig:
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-AddToHook{env/covexamples/begin}{%
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-crefalias{equation}{covex}
-\end_layout
-
-\begin_layout Plain Layout
-}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Anders als
-\emph on
-prettyref
-\emph default
- und
-\emph on
-refstyle
-\emph default
- verwendet
-\emph on
-cleveref
-\emph default
- nicht das Präfix,
- um den Verweistyp zu bestimmen,
- sondern den verwendeten \SpecialChar TeX
--Zähler.
- Wie oben (Abschnitt
-\begin_inset space ~
-\end_inset
-
-
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "subsec:Nummerierung"
-
-\end_inset
-
-) ausgeführt,
- verwendet
-\emph on
-covington
-\emph default
- standardmäßig den Zähler
-\family typewriter
-equation
-\family default
- für Beispiele;
- für Unterbeispiele wird der Zähler
-\family typewriter
-enumi
-\family default
- (=
-\begin_inset space ~
-\end_inset
-
-Aufzählung erster Ebene) verwendet.
-\end_layout
-
-\begin_layout Standard
-Wenn Sie,
- wie in Abschnitt
-\begin_inset space ~
-\end_inset
-
-
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "subsec:Nummerierung"
-
-\end_inset
-
- dokumentiert,
- die Zähler von Gleichungen und Beispielen trennen,
- können Sie den letzten Teil des Codes (wie im Kommentar vermerkt) weglassen.
-\end_layout
-
-\begin_layout Standard
-Anders als bei
-\emph on
-refstyle
-\emph default
- (aber wie bei
-\emph on
- zref-clever
-\emph default
-) werden Pluralformen nicht im Dialog oder Kontextmenü ausgewählt.
- Das Paket wählt sie automatisch,
- wenn ein Querverweis auf mehrere Beispiele verweist.
-\end_layout
-
-\end_deeper
-\begin_layout Enumerate
-Mit
-\begin_inset Quotes gld
-\end_inset
-
-Zref-Clever und Zref-Vario
-\begin_inset Quotes grd
-\end_inset
-
- schließlich geben Sie dies ein:
-\end_layout
-
-\begin_deeper
-\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-
-\backslash
-zcRefTypeSetup{covex}{
-\end_layout
-
-\begin_layout Plain Layout
- Name-sg = Example ,
-\end_layout
-
-\begin_layout Plain Layout
- name-sg = example ,
-\end_layout
-
-\begin_layout Plain Layout
- Name-pl = Examples ,
-\end_layout
-
-\begin_layout Plain Layout
- name-pl = examples ,
-\end_layout
-
-\begin_layout Plain Layout
- refbounds-first-sg = {,(,),} ,
-\end_layout
-
-\begin_layout Plain Layout
- refbounds = {(,,,)} ,
-\end_layout
-
-\begin_layout Plain Layout
-}
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-AddToHook{env/covsubexs/begin}{%
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-zcsetup{countertype={enumi=covex}}%
-\end_layout
-
-\begin_layout Plain Layout
-}
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-% Das Folgende ist mit der Option
-\begin_inset Quotes eld
-\end_inset
-
-owncounter
-\begin_inset Quotes erd
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-% nicht nötig:
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-AddToHook{env/covexamples/begin}{%
-\end_layout
-
-\begin_layout Plain Layout
-
-\backslash
-zcsetup{countertype={equation=covex}}%
-\end_layout
-
-\begin_layout Plain Layout
-}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Wie bei
-\emph on
-cleveref
-\emph default
- wird der Verweistyp über den Zähler bestimmt.
- Wenn Sie also Beispiele und Gleichungen separat nummerieren,
- können Sie auch hier wieder den letzten Teil des Codes weglassen.
-\end_layout
-
-\begin_layout Standard
-Beachten Sie,
- dass
-\emph on
-zref-clever
-\emph default
- sogar noch mehr Varianten unterstützt (bspw.
- unterschiedliche Kasus,
- also Genitiv,
- Dativ,
- Akkusativ,
- wenn sie sich – wie im Deutschen hier die Genitivform [
-\emph on
-des Beispiels
-\emph default
-] formal vom Nominativ unterscheiden – oder optionale abgekürzte Formen wie
-\emph on
-Bsp
-\emph default
-.),
- die man auch in \SpecialChar LyX
- verwenden kann (über die benutzerdefinierten Optionen im Querverweis-Dialog).
- Bitte konsuliteren Sie die Dokumentantion des Pakets
-\emph on
-zref-clever
-\emph default
-
-\begin_inset CommandInset citation
-LatexCommand cite
-key "zref-clever"
-literal "false"
-
-\end_inset
-
- für Informationen,
- wie man diese in die obige Definition einbinden kann.
-\end_layout
-
-\begin_layout Standard
-Beachten Sie schließlich,
- dass der Befehl
-\family typewriter
-
-\backslash
-AddToHook
-\family default
-,der in einigen Definitionen erwendet wird,
- nur bei einigermaßen neuen Versionen von \SpecialChar LaTeX
- zur Verfügung steht.
-\end_layout
-
-\end_deeper
-\begin_layout Standard
-Wenn Sie die formatierten Querverweise in dieser eleganten Form auch im
Arbeitsbereich oder dem Querverweisdialog sehen wollen,
- fügen Sie das Folgende in
-\family sans
-Dokument\SpecialChar menuseparator
-Einstellungen\SpecialChar menuseparator
-Lokales Format
-\family default
- ein (wie wir das für dieses Dokument getan haben):
-\end_layout
-
-\begin_layout Quote
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-Counter examplei
-\end_layout
-
-\begin_layout Plain Layout
- PrettyFormat
-\begin_inset Quotes eld
-\end_inset
-
-Example|Examples ##
-\begin_inset Quotes erd
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-End
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-Counter subexamplei
-\end_layout
-
-\begin_layout Plain Layout
- PrettyFormat
-\begin_inset Quotes eld
-\end_inset
-
-Example|Examples ##
-\begin_inset Quotes erd
-\end_inset
-
-
-\end_layout
-
-\begin_layout Plain Layout
-End
-\end_layout
-
-\end_inset
-
-
\end_layout
\begin_layout Subsection
diff --git a/lib/layouts/linguistics.module b/lib/layouts/linguistics.module
index df450c1236..e07efda2a1 100644
--- a/lib/layouts/linguistics.module
+++ b/lib/layouts/linguistics.module
@@ -18,7 +18,7 @@ Counter examplei
GuiName "Numbered Example (Multiline)"
Within chapter
LabelString "(\theequation)"
- PrettyFormat "##"
+ PrettyFormat "Example|Examples (##)"
StepOtherCounter equation
LaTeXName equation
End
@@ -27,7 +27,7 @@ Counter subexamplei
GuiName Subexample
Within examplei
LabelString "(\theequation) (\alph{subexamplei})"
- PrettyFormat "##"
+ PrettyFormat "Example|Examples (##)"
LaTeXName enumi
End
@@ -53,6 +53,7 @@ Style Numbered_Example_(multiline)
LabelType Static
LabelCounter examplei
RefPrefix lex
+ CrossrefNeedDef refstyle,prettyref,cleveref,zref
LabelFont
Color textlabel1
EndFont
@@ -568,6 +569,7 @@ Float
Type tableau
GuiName Tableau
RefPrefix tbl
+ CrossrefNeedDef refstyle,prettyref,cleveref,zref
Placement tbp
Extension otl
NumberWithin none
diff --git a/lib/lyx2lyx/LyX.py b/lib/lyx2lyx/LyX.py
index 3fb9268e67..ab3e915859 100644
--- a/lib/lyx2lyx/LyX.py
+++ b/lib/lyx2lyx/LyX.py
@@ -104,8 +104,9 @@ format_relation = [
("2_1", list(range(414, 475)), minor_versions("2.1", 5), 48),
("2_2", list(range(475, 509)), minor_versions("2.2", 4), 60),
("2_3", list(range(509, 545)), minor_versions("2.3", 7), 66),
- ("2_4", list(range(545, 621)), minor_versions("2.4", 0), 104),
- ("2_5", (), minor_versions("2.5", 0), sys.maxsize),
+ ("2_4", list(range(545, 621)), minor_versions("2.4", 5), 104),
+ ("2_5", list(range(621, 644)), minor_versions("2.5", 0), 111),
+ ("2_6", (), minor_versions("2.6", 0), sys.maxsize),
]
####################################################################
diff --git a/lib/lyx2lyx/Makefile.am b/lib/lyx2lyx/Makefile.am
index b09f5b67f4..00f5b2967d 100644
--- a/lib/lyx2lyx/Makefile.am
+++ b/lib/lyx2lyx/Makefile.am
@@ -36,6 +36,7 @@ dist_lyx2lyx_PYTHON = \
lyx_2_3.py \
lyx_2_4.py \
lyx_2_5.py \
+ lyx_2_6.py \
test_parser_tools.py
install-data-hook:
diff --git a/lib/lyx2lyx/lyx_2_6.py b/lib/lyx2lyx/lyx_2_6.py
new file mode 100644
index 0000000000..9d4b32b873
--- /dev/null
+++ b/lib/lyx2lyx/lyx_2_6.py
@@ -0,0 +1,217 @@
+# This file is part of lyx2lyx
+# Copyright (C) 2025 The LyX team
+#
+# 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 Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+"""Convert files to the file format generated by lyx 2.6"""
+
+import re
+
+# Uncomment only what you need to import, please (lyx2lyx_tools):
+# convert_info_insets,
+# get_ert,
+# hex2ratio,
+# insert_to_preamble,
+# latex_length,
+# length_in_bp,
+# lyx2latex,
+# lyx2verbatim,
+# put_cmd_in_ert,
+# revert_flex_inset,
+# revert_flex_inset,
+# revert_font_attrs,
+# revert_language
+# str2bool
+from lyx2lyx_tools import (
+ add_to_preamble
+)
+
+# Uncomment only what you need to import, please (parser_tools):
+# check_token,
+# count_pars_in_inset,
+# del_complete_lines,
+# del_token,
+# del_value,
+# find_complete_lines,
+# find_end_of,
+# find_end_of_layout,
+# find_re,
+# find_substring,
+# find_token_backwards,
+# find_token_exact,
+# find_tokens,
+# get_containing_inset,
+# get_containing_layout,
+# get_bool_value,
+# get_option_value,
+# set_bool_value,
+# is_in_inset
+from parser_tools import (
+ find_end_of_inset,
+ find_token,
+ get_quoted_value,
+ get_value
+)
+
+####################################################################
+# Private helper functions
+
+# Provide, on reversion, preamble definitions for elements that
+# are supported via CrossrefNeedDef
+# prfx: ref prefix [string]
+# form: PrettyFormat, e.g., "Example|Examples (##)" [string]
+# counter: counter name [string]
+# alias: alias definitions for zref and cleveref in keyval form,
+# type/latexname=realcounter
+# e.g. "env/covexamples=equation" [list]
+def revert_xref_defs(document, prfx, form, counter, alias):
+ """Revert supported xref defs to preamble code"""
+ package = "refstyle"
+ i = find_token(document.header, "\\crossref_package", 0)
+ if i == -1:
+ document.warning("Missing \\crossref_package header!")
+ else:
+ package = get_value(document.header, "\\crossref_package", i)
+
+ have_ref = False
+ i = 0
+ while True:
+ i = find_token(document.body, "\\begin_inset CommandInset ref", i)
+ if i == -1:
+ break
+ j = find_end_of_inset(document.body, i)
+ if j == -1:
+ document.warning("Can't find end of reference inset at line %d!!"
% (i))
+ i += 1
+ continue
+
+ k = find_token(document.body, "LatexCommand formatted", i, j)
+ if k == -1:
+ i += 1
+ continue
+
+ label = get_quoted_value(document.body, "reference", i, j)
+ if not ":" in label:
+ i += 1
+ continue
+
+ prefix = label.split(":", 1)[0]
+ if prefix == prfx:
+ have_ref = True
+ i += 1
+
+ if not have_ref:
+ return
+
+ pr_def = []
+ pr_xdef = []
+ forms = form.split("|", 1)
+ form_sg = forms[0]
+ form_pl = forms[1].split()[0]
+ form_nr = forms[1].split()[1]
+ br_left = ""
+ br_right = ""
+ if not form_nr.startswith("##"):
+ br_left = form_nr.split("#", 1)[0]
+ if not form_nr.endswith("##"):
+ br_right = form_nr.split("##")[-1]
+
+ if "prettyref" in package:
+ pr_def = ["\\newrefformat{" + prfx + "}{" + form_sg + "~" + br_left +
"\\ref{#1}" + br_right + "}"]
+ elif package == "refstyle":
+ pr_def = ["\\newref{" + prfx + "}{",
+ "name = {" + form_sg.lower() + "~},",
+ "names = {" + form_pl.lower() + "~},",
+ "Name = {" + form_sg + "~},",
+ "Names = {" + form_pl + "~},",
+ "refcmd = {" + br_left + "\\ref{#1}" + br_right + "}",
+ "}"]
+ elif package == "cleveref":
+ pr_def = ["\\usepackage{cleveref}",
+ "\\crefname{" + counter + "}{" + form_sg.lower() + "}{" +
form_pl.lower() + "}",
+ "\\Crefname{" + counter + "}{" + form_sg + "}{" + form_pl +
"}",
+ "\\creflabelformat{" + counter + "}{\\textup{" + br_left +
"#2#1#3" + br_right + "}}"]
+ for al in alias:
+ if not "=" in al:
+ continue
+ pr_xdef += ["\\AddToHook{" + al.split("=")[0] + "/begin}{%",
+ "\\crefalias{" + al.split("=")[1] + "}{" + counter +
"}",
+ "}"]
+ elif package == "zref":
+ pr_def = ["\\usepackage{zref-clever}",
+ "\\zcRefTypeSetup{" + counter + "}{",
+ "Name-sg = " + form_sg + " ,",
+ "name-sg = " + form_sg.lower() + " ,",
+ "Name-pl = " + form_pl + " ,",
+ "name-pl = " + form_pl.lower() + " ,",
+ "refbounds-first-sg = {," + br_left + "," + br_right + ",}
,",
+ "refbounds = {," + br_left + ",,," + br_right + ",} ,",
+ "}"]
+ for al in alias:
+ if not "=" in al:
+ continue
+ pr_xdef += ["\\AddToHook{" + al.split("=")[0] + "/begin}{%",
+ "\\zcsetup{countertype={" + al.split("=")[1] + "}{" +
counter + "}}",
+ "}"]
+
+ if len(pr_def) > 0:
+ add_to_preamble(
+ document,
+ pr_def
+ )
+ if len(pr_xdef) > 0:
+ add_to_preamble(
+ document,
+ pr_xdef
+ )
+
+
+
+###############################################################################
+###
+### Conversion and reversion routines
+###
+###############################################################################
+
+
+def revert_ling_xrefs(document):
+ """Revert xref defs of linguistics module"""
+
+ if not "linguistics" in document.get_module_list():
+ return
+
+ # examples
+ revert_xref_defs(document, "lex", "Example|Examples (##)", "covex",
["env/covsubexamples=enumi", "env/covexamples=equation"])
+ # tableaux
+ revert_xref_defs(document, "tbl", "Tableau|Tableaux ##", "tableau", [""])
+
+
+##
+# Conversion hub
+#
+
+supported_versions = ["2.6.0", "2.6"]
+convert = [
+ [644, []]
+]
+
+
+revert = [
+ [643, [revert_ling_xrefs]]
+]
+
+
+if __name__ == "__main__":
+ pass
diff --git a/src/version.h b/src/version.h
index ea74976e2a..9bb07d31ba 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 643 // spitz: html preamble
-#define LYX_FORMAT_TEX2LYX 643
+#define LYX_FORMAT_LYX 644 // spitz: linguistics xrefs
+#define LYX_FORMAT_TEX2LYX 644
#if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
#ifndef _MSC_VER
--
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs