[LyX/master] Use macros with parameters for modulo macros
Jean-Marc Lasgouttes
lasgouttes at lyx.org
Fri Jul 21 20:45:19 UTC 2023
commit d59046512c204968122917758ee38d4529b1a03f
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date: Tue Jul 18 14:27:24 2023 +0200
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 | 22 ++++-
2 files changed, 260 insertions(+), 12 deletions(-)
diff --git a/lib/doc/Math.lyx b/lib/doc/Math.lyx
index 0f14609..a9fbcf9 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 293c729..207741a 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,11 @@
# ("" 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}
+#
+# TODO: Devise a mechanism to represent these in DocBook/XHTML
+#
# 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 +1120,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
More information about the lyx-cvs
mailing list