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.
This commit is contained in:
Jean-Marc Lasgouttes 2023-07-18 14:27:24 +02:00
parent 00a98856f8
commit d59046512c
2 changed files with 260 additions and 12 deletions

View File

@ -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

View File

@ -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