Hello,

In the attached patch, I am able to support the mod/bmod/pmod/pod macros by just defining them in lib/symbols with an argument.

The result is a more pleasing editing process (IMO) and a simplification of the documentation.

Since this use of \def is not documented, I have to ask: is there a reason for not doing it?

One downside may be that exporting to html/docbook does not really work, but it has always been the case, AFAIK.

My question is: should I create a full-fledged math inset instead? It is doable too, nd at least I'd get the spacing right depending on the context (script...).

JMarc
From bc03ea8ed0030e470cf7528004a7c9e51b1733b7 Mon Sep 17 00:00:00 2001
From: Jean-Marc Lasgouttes <lasgout...@lyx.org>
Date: Tue, 18 Jul 2023 14:27:24 +0200
Subject: [PATCH] Use macros with parameters for modulo macros

It turns out that it is possible to use macros with parameters in lib/symbols.

I use this to simplify the use of mod-like macros.

Update documentation.
---
 lib/doc/Math.lyx | 250 +++++++++++++++++++++++++++++++++++++++++++++--
 lib/symbols      |  20 +++-
 2 files changed, 258 insertions(+), 12 deletions(-)

diff --git a/lib/doc/Math.lyx b/lib/doc/Math.lyx
index 0f1460934f..a9fbcf9d17 100644
--- a/lib/doc/Math.lyx
+++ b/lib/doc/Math.lyx
@@ -236,6 +236,7 @@ logicalmkup
 \docbook_mathml_prefix 1
 \author -584632292 "Richard Kimberly Heck"
 \author -563046850 "Jean-Marc LASGOUTTES"
+\author -495245474 "Jean-Marc Lasgouttes"
 \author 177693 "x"
 \author 5863208 "ab"
 \author 47243155 "Jean-Marc"
@@ -29069,24 +29070,257 @@ modulo-
 \begin_layout Standard
 The modulo-function is special,
  because it exists in four variants.
- The variants in a displayed formula are:
+ The variants in a
+\change_deleted -495245474 1689684546
+ displayed
+\change_inserted -495245474 1689684548
+n inline
+\change_unchanged
+ formula are:
+\change_deleted -495245474 1689684526
+
 \begin_inset Formula 
 \begin{align*}
 \underline{\textrm{Command}\raisebox{-0.9mm}{}} &  & \underline{\textrm{Result}}\\
-\mathrm{a\backslash mod\textrm{␣}b} &  & a\mod b\\
-\mathrm{a\backslash pmod\textrm{␣}b} &  & a\pmod b\\
-\mathrm{a\backslash bmod\textrm{␣}b} &  & a\bmod b\\
-\mathrm{a\backslash pod\textrm{␣}b} &  & a\pod b
+\mathrm{a\backslash mod\textrm{␣}b\textrm{␣}} &  & a\mod b\\
+\mathrm{a\backslash pmod\textrm{␣}b\textrm{␣}} &  & a\pmod b\\
+\mathrm{a\backslash bmod\textrm{␣}b\textrm{␣}} &  & a\bmod b\\
+\mathrm{a\backslash pod\textrm{␣}b\textrm{␣}} &  & a\pod b
 \end{align*}
 
 \end_inset
 
 
+\change_inserted -495245474 1689684215
+
 \end_layout
 
 \begin_layout Standard
-In an inline formula less space is set before the function names for all variants.
- By default the modulo-functions take only the first character following the command into account.
+\noindent
+\align center
+
+\change_inserted -495245474 1689684215
+\begin_inset Tabular
+<lyxtabular version="3" rows="5" columns="2">
+<features booktabs="true" tabularvalignment="middle">
+<column alignment="left" valignment="top" width="0pt">
+<column alignment="block" valignment="top">
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\change_inserted -495245474 1689684215
+Command
+\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
+
+\change_inserted -495245474 1689684215
+Result
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\change_inserted -495245474 1689684286
+a
+\backslash
+mod
+\begin_inset space \textvisiblespace{}
+\end_inset
+
+b
+\change_unchanged
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\change_inserted -495245474 1689684457
+\begin_inset Formula $a\mod b$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\change_inserted -495245474 1689684416
+a
+\backslash
+pmod
+\begin_inset space \textvisiblespace{}
+\end_inset
+
+b
+\begin_inset space \textvisiblespace{}
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\change_inserted -495245474 1689684474
+\begin_inset Formula $a\pmod b$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row change="inserted -495245474 1689684088">
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\change_inserted -495245474 1689684419
+a
+\backslash
+bmod
+\begin_inset space \textvisiblespace{}
+\end_inset
+
+b
+\begin_inset space \textvisiblespace{}
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\change_inserted -495245474 1689684488
+\begin_inset Formula $a\bmod b$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row change="inserted -495245474 1689684088">
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\change_inserted -495245474 1689684421
+a
+\backslash
+pod
+\begin_inset space \textvisiblespace{}
+\end_inset
+
+b
+\begin_inset space \textvisiblespace{}
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\change_inserted -495245474 1689684502
+\begin_inset Formula $a\pod b$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\change_unchanged
+
+\end_layout
+
+\begin_layout Standard
+In a
+\change_deleted -495245474 1689684554
+n inline
+\change_inserted -495245474 1689684556
+ display
+\change_unchanged
+ formula
+\change_inserted -495245474 1689684559
+,
+
+\change_unchanged
+ 
+\change_deleted -495245474 1689684562
+less
+\change_inserted -495245474 1689684563
+more
+\change_unchanged
+ space is set before the function names for all variants
+\change_inserted -495245474 1689684688
+ but 
+\series bold
+
+\backslash
+mod.
+
+\series default
+ This later version is also the only one that does not take the 
+\series bold
+b
+\series default
+ as argument but acts as a binary operator
+\change_unchanged
+.
+ 
+\change_deleted -495245474 1689684609
+By default the modulo-functions take only the first character following the command into account.
  To use more than one character,
  put them in \SpecialChar TeX
  braces:
@@ -29100,6 +29334,8 @@ In an inline formula less space is set before the function names for all variant
 \end_inset
 
 
+\change_unchanged
+
 \end_layout
 
 \begin_layout Section
diff --git a/lib/symbols b/lib/symbols
index 293c7291b4..957154bcc5 100644
--- a/lib/symbols
+++ b/lib/symbols
@@ -11,7 +11,7 @@
 # Note that the first argument of \def must not uses braces, and the second
 # must use braces.
 #
-# syntax: Either
+# syntax: (note that there should be no space character in the definition)
 # \def\macroname{definition}
 # or
 # \def\macroname{definition} requires
@@ -23,6 +23,9 @@
 # ("" for empty strings is not supported. One would have to use x for fields
 # that are not set.)
 #
+# It is also possible to use parameters for the macros
+# \def\macroname#1{definition using #1}
+#
 # If you put any symbol with a requirement inside an iffont clause, you
 # must put an alternative definition with the same requirement in the
 # corresponding else clause. Otherwise the LaTeX output would depend on the
@@ -1115,12 +1118,19 @@ exp                lyxblacktext  0   0 func     x
 Pr                 lyxblacktext  0   0 funclim  x
 gcd                lyxblacktext  0   0 funclim  x
 deg                lyxblacktext  0   0 func     x
-mod                lyxblacktext  0   0 func     x     amsmath
-bmod               lyxblacktext  0   0 func     x
-pmod               lyxblacktext  0   0 func     x
-pod                lyxblacktext  0   0 func     x     amsmath
 
 
+#
+# Modulo notation
+#
+
+# the original definitions have spacing differences between display/inline/script,
+# but we cannot reproduce that here
+\def\bmod{\mkern1mu\mathbin{\textrm{mod}}\mkern1mu}
+\def\pmod#1{\mkern18mu(\textrm{mod}\mkern6mu#1)}
+\def\pod#1{\mkern18mu(#1)} amsmath
+\def\mod#1{\mkern12mu\textrm{mod}\mkern6mu#1} amsmath
+
 # mathtools.sty
 vcentcolon         cmr          58  58    mathrel :          mathtools
 ordinarycolon      cmr          58  58    mathrel :          mathtools
-- 
2.25.1

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

Reply via email to