[LyX/2.4.x] Update build file

2024-05-13 Thread Richard Kimberly Heck
commit 2db9eb463dbdf4d66ec767f1ad6900c2d00c301b
Author: Richard Kimberly Heck 
Date:   Mon May 13 17:39:44 2024 -0400

Update build file
---
 development/tools/lyx-build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/development/tools/lyx-build b/development/tools/lyx-build
index 14b5cd6f05..f4ff053362 100755
--- a/development/tools/lyx-build
+++ b/development/tools/lyx-build
@@ -14,7 +14,7 @@
 # Where we will do our work
 BASE="/cvs/lyx/lyx-release";
 # Where our git repository lives
-SRCDIR="/cvs/lyx/lyx-devel";
+SRCDIR="/cvs/lyx/lyx-stable";
 # editor 
 if [ -z "$EDITOR" ]; then EDITOR=vi; fi
 
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs


[LyX/2.4.x] 2.4.0!

2024-05-13 Thread Richard Kimberly Heck
commit e6ee31ef535bdc168e16b0baa8b97e034b41722d
Author: Richard Kimberly Heck 
Date:   Mon May 13 17:34:41 2024 -0400

2.4.0!
---
 configure.ac | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 08221b1692..53ad4401f7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,9 +1,9 @@
 dnl Process with autoconf to generate configure script   -*- sh -*-
 
-AC_INIT([LyX],[2.4.0~devel],[lyx-de...@lists.lyx.org],[lyx])
+AC_INIT([LyX],[2.4.0],[lyx-de...@lists.lyx.org],[lyx])
 AC_PRESERVE_HELP_ORDER
 # Use ISO format only. The frontend needs to parse this
-AC_SUBST(LYX_DATE, ["2024-04-01"])
+AC_SUBST(LYX_DATE, ["2024-05-13"])
 AC_PREREQ([2.65])
 AC_CONFIG_SRCDIR(src/main.cpp)
 AC_CONFIG_HEADERS([config.h])
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs


[LyX/2.4.x] Close notes about status of translation

2024-05-13 Thread jpc
commit e1cb3cf25a6b2d99207f9064edb8e3c490c5
Author: jpc 
Date:   Mon May 13 11:33:56 2024 +0200

  Close notes about status of translation
---
 lib/doc/fr/Additional.lyx  | 2 +-
 lib/doc/fr/EmbeddedObjects.lyx | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/doc/fr/Additional.lyx b/lib/doc/fr/Additional.lyx
index 7ba8a28bc8..dc2fac3716 100644
--- a/lib/doc/fr/Additional.lyx
+++ b/lib/doc/fr/Additional.lyx
@@ -356,7 +356,7 @@ Options avancées de \SpecialChar LyX
 \begin_layout Subtitle
 Version 2.4.x
 \begin_inset Note Note
-status open
+status collapsed
 
 \begin_layout Plain Layout
 Informations de révision :
diff --git a/lib/doc/fr/EmbeddedObjects.lyx b/lib/doc/fr/EmbeddedObjects.lyx
index 0a3e56761d..f6f9d8cb9a 100644
--- a/lib/doc/fr/EmbeddedObjects.lyx
+++ b/lib/doc/fr/EmbeddedObjects.lyx
@@ -294,7 +294,7 @@ literal "false"
 
 
 \begin_inset Note Note
-status open
+status collapsed
 
 \begin_layout Plain Layout
 
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs


[Wiki-uploads/master] Replace .lyx files by .pdf files

2024-05-13 Thread jpc
commit 9f46dc2d3e04b8cfbada2e498485ab5b8751efaf
Author: jpc 
Date:   Mon May 13 11:17:00 2024 +0200

   Replace .lyx files by .pdf files

 LyX/Manuals/2.4/de/Additional.lyx  | 32347 -
 LyX/Manuals/2.4/de/Additional.pdf  |   Bin 0 -> 1048040 bytes
 LyX/Manuals/2.4/de/Customization.lyx   | 31113 
 LyX/Manuals/2.4/de/Customization.pdf   |   Bin 0 -> 817170 bytes
 LyX/Manuals/2.4/de/EmbeddedObjects.lyx | 50720 --
 LyX/Manuals/2.4/de/EmbeddedObjects.pdf |   Bin 0 -> 990262 bytes
 LyX/Manuals/2.4/de/Intro.lyx   |  2750 --
 LyX/Manuals/2.4/de/Intro.pdf   |   Bin 0 -> 172781 bytes
 LyX/Manuals/2.4/de/Math.lyx| 42700 --
 LyX/Manuals/2.4/de/Math.pdf|   Bin 0 -> 912202 bytes
 LyX/Manuals/2.4/de/Tutorial.lyx|  5719 ---
 LyX/Manuals/2.4/de/Tutorial.pdf|   Bin 0 -> 284670 bytes
 LyX/Manuals/2.4/de/UserGuide.lyx   | 57076 -
 LyX/Manuals/2.4/de/UserGuide.pdf   |   Bin 0 -> 1914017 bytes
 LyX/Manuals/2.4/en/Additional.lyx  | 31800 
 LyX/Manuals/2.4/en/Additional.pdf  |   Bin 0 -> 992210 bytes
 LyX/Manuals/2.4/en/Customization.lyx   | 33228 -
 LyX/Manuals/2.4/en/Customization.pdf   |   Bin 0 -> 744516 bytes
 LyX/Manuals/2.4/en/EmbeddedObjects.lyx | 50150 --
 LyX/Manuals/2.4/en/EmbeddedObjects.pdf |   Bin 0 -> 961158 bytes
 LyX/Manuals/2.4/en/Intro.lyx   |  2381 --
 LyX/Manuals/2.4/en/Intro.pdf   |   Bin 0 -> 152734 bytes
 LyX/Manuals/2.4/en/Math.lyx| 42649 --
 LyX/Manuals/2.4/en/Math.pdf|   Bin 0 -> 915501 bytes
 LyX/Manuals/2.4/en/Tutorial.lyx|  5450 ---
 LyX/Manuals/2.4/en/Tutorial.pdf|   Bin 0 -> 256067 bytes
 LyX/Manuals/2.4/en/UserGuide.lyx   | 58198 --
 LyX/Manuals/2.4/en/UserGuide.pdf   |   Bin 0 -> 1838084 bytes
 LyX/Manuals/2.4/es/Additional.lyx  | 29479 ---
 LyX/Manuals/2.4/es/Additional.pdf  |   Bin 0 -> 1022357 bytes
 LyX/Manuals/2.4/es/Customization.lyx   | 29290 ---
 LyX/Manuals/2.4/es/Customization.pdf   |   Bin 0 -> 707971 bytes
 LyX/Manuals/2.4/es/EmbeddedObjects.lyx | 48079 -
 LyX/Manuals/2.4/es/EmbeddedObjects.pdf |   Bin 0 -> 946707 bytes
 LyX/Manuals/2.4/es/Intro.lyx   |  2433 --
 LyX/Manuals/2.4/es/Intro.pdf   |   Bin 0 -> 145523 bytes
 LyX/Manuals/2.4/es/Math.lyx| 39738 
 LyX/Manuals/2.4/es/Math.pdf|   Bin 0 -> 908664 bytes
 LyX/Manuals/2.4/es/Tutorial.lyx|  5607 ---
 LyX/Manuals/2.4/es/Tutorial.pdf|   Bin 0 -> 262075 bytes
 LyX/Manuals/2.4/es/UserGuide.lyx   | 53419 ---
 LyX/Manuals/2.4/es/UserGuide.pdf   |   Bin 0 -> 1859409 bytes
 LyX/Manuals/2.4/fr/Additional.lyx  | 34567 --
 LyX/Manuals/2.4/fr/Additional.pdf  |   Bin 0 -> 1075825 bytes
 LyX/Manuals/2.4/fr/Customization.lyx   | 33491 -
 LyX/Manuals/2.4/fr/Customization.pdf   |   Bin 0 -> 397244 bytes
 LyX/Manuals/2.4/fr/EmbeddedObjects.lyx | 51114 --
 LyX/Manuals/2.4/fr/EmbeddedObjects.pdf |   Bin 0 -> 993662 bytes
 LyX/Manuals/2.4/fr/Intro.lyx   |  3078 --
 LyX/Manuals/2.4/fr/Intro.pdf   |   Bin 0 -> 169165 bytes
 LyX/Manuals/2.4/fr/Math.lyx| 44003 ---
 LyX/Manuals/2.4/fr/Math.pdf|   Bin 0 -> 925326 bytes
 LyX/Manuals/2.4/fr/Tutorial.lyx|  6814 
 LyX/Manuals/2.4/fr/Tutorial.pdf|   Bin 0 -> 292117 bytes
 LyX/Manuals/2.4/fr/UserGuide.lyx   | 59671 ---
 LyX/Manuals/2.4/fr/UserGuide.pdf   |   Bin 0 -> 1928134 bytes
 56 files changed, 887064 deletions(-)
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs


[Wiki-uploads/master] Update copies following NeedCProtect documentation

2024-05-13 Thread jpc
commit f38f4b607efe40d908e5a996e1fd2871b97b4c98
Author: jpc 
Date:   Mon May 13 10:27:46 2024 +0200

Update copies following NeedCProtect documentation
---
 LyX/Manuals/2.4/de/Customization.lyx | 76 ++-
 LyX/Manuals/2.4/en/Customization.lyx | 74 +-
 LyX/Manuals/2.4/fr/Customization.lyx | 77 +++-
 3 files changed, 222 insertions(+), 5 deletions(-)

diff --git a/LyX/Manuals/2.4/de/Customization.lyx 
b/LyX/Manuals/2.4/de/Customization.lyx
index 7f0032d..c01bfa9 100644
--- a/LyX/Manuals/2.4/de/Customization.lyx
+++ b/LyX/Manuals/2.4/de/Customization.lyx
@@ -13743,6 +13743,20 @@ NeedCProtect
 \begin_inset Flex Code
 status collapsed
 
+\begin_layout Plain Layout
+-1
+\end_layout
+
+\end_inset
+
+,
+\begin_inset space \thinspace{}
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
 \begin_layout Plain Layout
 
 \emph on
@@ -13765,7 +13779,17 @@ status collapsed
 
 \end_inset
 
-] bewirkt,
+] Wert 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+
+ bewirkt,
  dass Makros,
  die dieses Layout enthalten,
  mittels 
@@ -13784,9 +13808,57 @@ cprotect
 \family sans
 cprotect
 \family default
-) gechützt werden,
+) geschützt werden,
  falls nötig.
  Damit wird die Verwendung (mancher) Verbatim-Dinge in Makros ermöglicht.
+ In der Voreinstellung (Wert 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+
+) wird 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\backslash
+cprotect
+\end_layout
+
+\end_inset
+
+ verwendet,
+ sobald ein eingebettetes Element dies verlangt.
+ Der Wert 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+-1
+\end_layout
+
+\end_inset
+
+ unterbindet die Verwendung von 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\backslash
+cprotect
+\end_layout
+
+\end_inset
+
+ selbst dann,
+ wenn eingebettete Elemente dies verlangen.
 \end_layout
 
 \begin_layout Description
diff --git a/LyX/Manuals/2.4/en/Customization.lyx 
b/LyX/Manuals/2.4/en/Customization.lyx
index ab2212c..7130edc 100644
--- a/LyX/Manuals/2.4/en/Customization.lyx
+++ b/LyX/Manuals/2.4/en/Customization.lyx
@@ -15112,6 +15112,20 @@ NeedCProtect
 \begin_inset Flex Code
 status collapsed
 
+\begin_layout Plain Layout
+-1
+\end_layout
+
+\end_inset
+
+,
+\begin_inset space \thinspace{}
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
 \begin_layout Plain Layout
 
 \emph on
@@ -15134,7 +15148,17 @@ status collapsed
 
 \end_inset
 
-] This causes macros that contain this layout to be protected with 
+] Value 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+
+ causes macros that contain this layout to be protected with 
 \begin_inset Flex Code
 status collapsed
 
@@ -15152,6 +15176,54 @@ cprotect
 cprotect
 \family default
 ) if necessary and thus allows (some) verbatim stuff in macros.
+ With the default setting (value 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+
+),
+ 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\backslash
+cprotect
+\end_layout
+
+\end_inset
+
+ is used if a nested element requires it.
+ Value 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+-1
+\end_layout
+
+\end_inset
+
+ prevents any use of 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\backslash
+cprotect
+\end_layout
+
+\end_inset
+
+ within this layout,
+ even if required by a nested element.
 \end_layout
 
 \begin_layout Description
diff --git a/LyX/Manuals/2.4/fr/Customization.lyx 
b/LyX/Manuals/2.4/fr/Customization.lyx
index db1be0b..75d83a8 100644
--- a/LyX/Manuals/2.4/fr/Customization.lyx
+++ b/LyX/Manuals/2.4/fr/Customization.lyx
@@ -14782,6 +14782,20 @@ NeedCProtect
 \begin_inset Flex Code
 status collapsed
 
+\begin_layout Plain Layout
+-1
+\end_layout
+
+\end_inset
+
+,
+\begin_inset space ~
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
 \begin_layout Plain Layout
 
 \emph on
@@ -14804,7 +14818,18 @@ status collapsed
 
 \end_inset
 
-] protège si nécessaire les macros qui contiennent ce format avec 
+] avec la valeur 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+
+ ,
+ protège si nécessaire les macros qui contiennent ce format avec 
 \begin_inset Flex Code
 status collapsed
 
@@ -14821,7 +14846,55 @@ cprotect
 \family sans
 cprotect
 \family default
-) et par suite autorise du texte verbatim dans les macros
+) et par suite autorise du texte verbatim dans les macros.
+ Avec la valeur implicite 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+
+,
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+

[LyX/master] Fix comment

2024-05-13 Thread Juergen Spitzmueller
commit 1512216909ad10ca1792b3e1a71cef67846c14c7
Author: Juergen Spitzmueller 
Date:   Mon May 13 10:26:45 2024 +0200

Fix comment
---
 lib/lyx2lyx/lyx_2_5.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/lyx2lyx/lyx_2_5.py b/lib/lyx2lyx/lyx_2_5.py
index 0adc24d70e..c574aa2eb9 100644
--- a/lib/lyx2lyx/lyx_2_5.py
+++ b/lib/lyx2lyx/lyx_2_5.py
@@ -119,7 +119,7 @@ def revert_url_escapes(document):
 k = surl
 
 def convert_url_escapes2(document):
-"""Unescape / in URLs with hyperref."""
+"""Unescape backslashes in URLs with hyperref."""
 
 i = find_token(document.header, "\\use_hyperref true", 0)

@@ -144,7 +144,7 @@ def convert_url_escapes2(document):
 i = bs + 1
 
 def revert_url_escapes2(document):
-"""Escape / in URLs with hyperref."""
+"""Escape backslashes in URLs with hyperref."""
 
 i = find_token(document.header, "\\use_hyperref true", 0)

-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs


[LyX/2.4.x] Typo

2024-05-13 Thread jpc
commit 0b9c832977a9d18cbf842e5c7b5dc1947ed5a190
Author: jpc 
Date:   Mon May 13 10:24:29 2024 +0200

   Typo
---
 lib/doc/fr/Customization.lyx | 6 --
 1 file changed, 6 deletions(-)

diff --git a/lib/doc/fr/Customization.lyx b/lib/doc/fr/Customization.lyx
index 7098ac0d82..75d83a8ee0 100644
--- a/lib/doc/fr/Customization.lyx
+++ b/lib/doc/fr/Customization.lyx
@@ -14819,21 +14819,15 @@ status collapsed
 \end_inset
 
 ] avec la valeur 
-\lang english
-
 \begin_inset Flex Code
 status collapsed
 
 \begin_layout Plain Layout
-
-\lang english
 1
 \end_layout
 
 \end_inset
 
-
-\lang french
  ,
  protège si nécessaire les macros qui contiennent ce format avec 
 \begin_inset Flex Code
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs


[LyX/2.4.x] Translate documentation of NeedCProtect

2024-05-13 Thread jpc
commit b24a3d207c38aa2ee2d6364ba0b4a0e558852449
Author: jpc 
Date:   Mon May 13 10:16:16 2024 +0200

Translate documentation of NeedCProtect
---
 lib/doc/fr/Customization.lyx | 112 +++
 1 file changed, 18 insertions(+), 94 deletions(-)

diff --git a/lib/doc/fr/Customization.lyx b/lib/doc/fr/Customization.lyx
index 34d0e5d3f2..7098ac0d82 100644
--- a/lib/doc/fr/Customization.lyx
+++ b/lib/doc/fr/Customization.lyx
@@ -14783,76 +14783,13 @@ NeedCProtect
 status collapsed
 
 \begin_layout Plain Layout
-
-\emph on
-0
-\end_layout
-
-\end_inset
-
-,
-\begin_inset space \thinspace{}
-\end_inset
-
-
-\begin_inset Flex Code
-status collapsed
-
-\begin_layout Plain Layout
-1
-\end_layout
-
-\end_inset
-
-] protège si nécessaire les macros qui contiennent ce format avec 
-\begin_inset Flex Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-cprotect
-\end_layout
-
-\end_inset
-
- (cf.
- le paquetage 
-\family sans
-cprotect
-\family default
-) et par suite autorise du texte verbatim dans les macros
-\begin_inset Note Note
-status open
-
-\begin_layout Description
-
-\lang english
-\begin_inset Flex Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\lang english
-NeedCProtect
-\end_layout
-
-\end_inset
-
- [
-\begin_inset Flex Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\lang english
 -1
 \end_layout
 
 \end_inset
 
 ,
-\begin_inset space \thinspace{}
+\begin_inset space ~
 \end_inset
 
 
@@ -14862,7 +14799,6 @@ status collapsed
 \begin_layout Plain Layout
 
 \emph on
-\lang english
 0
 \end_layout
 
@@ -14877,14 +14813,14 @@ status collapsed
 status collapsed
 
 \begin_layout Plain Layout
-
-\lang english
 1
 \end_layout
 
 \end_inset
 
-] Value 
+] avec la valeur 
+\lang english
+
 \begin_inset Flex Code
 status collapsed
 
@@ -14896,14 +14832,15 @@ status collapsed
 
 \end_inset
 
- causes macros that contain this layout to be protected with 
+
+\lang french
+ ,
+ protège si nécessaire les macros qui contiennent ce format avec 
 \begin_inset Flex Code
 status collapsed
 
 \begin_layout Plain Layout
 
-\lang english
-
 \backslash
 cprotect
 \end_layout
@@ -14911,72 +14848,59 @@ cprotect
 \end_inset
 
  (cf.
- package 
+ le paquetage 
 \family sans
 cprotect
 \family default
-) if necessary and thus allows (some) verbatim stuff in macros.
- With the default setting (value 
+) et par suite autorise du texte verbatim dans les macros.
+ Avec la valeur implicite 
 \begin_inset Flex Code
 status collapsed
 
 \begin_layout Plain Layout
-
-\lang english
 0
 \end_layout
 
 \end_inset
 
-),
- 
+,
 \begin_inset Flex Code
 status collapsed
 
 \begin_layout Plain Layout
 
-\lang english
-
 \backslash
 cprotect
 \end_layout
 
 \end_inset
 
- is used if a nested element requires it.
- Value 
+ est utilisé si un élément imbriqué le demande.
+ La valeur 
 \begin_inset Flex Code
 status collapsed
 
 \begin_layout Plain Layout
-
-\lang english
 -1
 \end_layout
 
 \end_inset
 
- prevents any use of 
+ empêche toute utilisation de 
 \begin_inset Flex Code
 status collapsed
 
 \begin_layout Plain Layout
 
-\lang english
-
 \backslash
 cprotect
 \end_layout
 
 \end_inset
 
- within this layout,
- even if required by a nested element.
-\end_layout
-
-\end_inset
-
-
+ dans le format,
+ même si un élément imbriqué le demande.
+ 
 \end_layout
 
 \begin_layout Description
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs


[LyX/master] Properly escape backslash in URLs with hyperref (#13012)

2024-05-13 Thread Juergen Spitzmueller
commit 52d31155c1f22498111c363c115b72b162fc1428
Author: Juergen Spitzmueller 
Date:   Mon May 13 09:17:30 2024 +0200

Properly escape backslash in URLs with hyperref (#13012)
---
 lib/lyx2lyx/lyx_2_5.py | 53 --
 src/Paragraph.cpp  | 14 +++--
 2 files changed, 63 insertions(+), 4 deletions(-)

diff --git a/lib/lyx2lyx/lyx_2_5.py b/lib/lyx2lyx/lyx_2_5.py
index 9d0486cffb..0adc24d70e 100644
--- a/lib/lyx2lyx/lyx_2_5.py
+++ b/lib/lyx2lyx/lyx_2_5.py
@@ -118,17 +118,66 @@ def revert_url_escapes(document):
 document.body[surl : surl + 1] = [m.group(1), "\\backslash", 
m.group(2)]
 k = surl
 
+def convert_url_escapes2(document):
+"""Unescape / in URLs with hyperref."""
+
+i = find_token(document.header, "\\use_hyperref true", 0)
+   
+if i != -1 and document.textclass not in ['beamer', 'scrarticle-beamer', 
'beamerposter', 'article-beamer']:
+return
+
+i = 0
+while True:
+i = find_token(document.body, "\\begin_inset Flex URL", i + 1)
+if i == -1:
+return
+j = find_end_of_inset(document.body, i)
+if j == -1:
+document.warning("Malformed LyX document: Could not find end of 
URL inset.")
+continue
+while True:
+bs = find_token(document.body, "\\backslash", i, j)
+if bs == -1:
+break
+if document.body[bs + 2] == "\\backslash":
+del document.body[bs + 2]
+i = bs + 1
+
+def revert_url_escapes2(document):
+"""Escape / in URLs with hyperref."""
+
+i = find_token(document.header, "\\use_hyperref true", 0)
+   
+if i != -1 and document.textclass not in ['beamer', 'scrarticle-beamer', 
'beamerposter', 'article-beamer']:
+return
+
+i = 0
+while True:
+i = find_token(document.body, "\\begin_inset Flex URL", i + 1)
+if i == -1:
+return
+j = find_end_of_inset(document.body, i)
+if j == -1:
+document.warning("Malformed LyX document: Could not find end of 
URL inset.")
+continue
+while True:
+bs = find_token(document.body, "\\backslash", i, j)
+if bs == -1:
+break
+document.body[bs] = "\\backslash\\backslash"
+i = bs + 1
+
 ##
 # Conversion hub
 #
 
 supported_versions = ["2.5.0", "2.5"]
 convert = [
-   [621, [convert_url_escapes]]
+   [621, [convert_url_escapes, convert_url_escapes2]]
   ]
 
 
-revert =  [[620, [revert_url_escapes]]
+revert =  [[620, [revert_url_escapes2, revert_url_escapes]]
   ]
 
 
diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 0241dece7f..0dee0af3ae 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -354,6 +354,7 @@ public:
   Font const & running_font,
   string & alien_script,
   Layout const & style,
+  InsetLayout const & il,
   pos_type & i,
   pos_type end_pos,
   unsigned int & column) const;
@@ -1234,12 +1235,21 @@ void Paragraph::Private::latexSpecialChar(otexstream & 
os,
  Font const & running_font,
  string & alien_script,
  Layout const & style,
+ InsetLayout const & il,
  pos_type & i,
  pos_type end_pos,
  unsigned int & column) const
 {
char_type const c = owner_->getUChar(bparams, runparams, i);
 
+   // Special case: URLs with hyperref need to escape backslash (#13012).
+   // Both a layout tag and a dedicated inset seem too much effort for 
this.
+   if (c == '\\' && runparams.use_hyperref && il.latexname() == "url"
+   && il.required().find("url") != il.required().end()) {
+   os << "";
+   return;
+   }
+
if ((style.pass_thru || runparams.pass_thru || 
runparams.find_effective()
|| contains(style.pass_thru_chars, c)
|| contains(runparams.pass_thru_chars, c))
@@ -3170,8 +3180,8 @@ void Paragraph::latex(BufferParams const & bparams,
}
}
try {
-   d->latexSpecialChar(os, bparams, rp, 
running_font,
-   
alien_script, style, i, end_pos, column);
+   d->latexSpecialChar(os, bparams, rp, 
running_font, alien_script,
+   style, 
inInset().getLayout(), i, end_pos, column);