From: Aditya Mahajan <adityam@umich.edu>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: Proposal for math mappings
Date: Sat, 11 Dec 2010 11:28:55 -0500 (EST) [thread overview]
Message-ID: <alpine.LNX.2.01.1012111127320.22443@ybpnyubfg.ybpnyqbznva> (raw)
In-Reply-To: <alpine.LNX.2.01.1012092346480.29907@ybpnyubfg.ybpnyqbznva>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 4881 bytes --]
I'll try once more to explain the setup.
If I understand the unicode philosopy correctly, then we do not any font
switching macros in math. If we want math italic A, we can simply type
0x1D434; if we want math bold A, we can type 0x1D400; and so on.
One difficulty with this approach is that it is not easy to type (and see)
these characters in an editor. One way to circumvent this, as is done by
the latex unicode-math package, is to define a macro for each symbol:
\mathitA, \mathbfA, etc.
Even if we define such macros, writing such macros is inconvinient. A more
nature way is to write $A {\bf A}$ rather than $\mathitA \mathbfA$ etc.
Traditionally, commands like \bf, \it, etc are font switches. However, in
unicode math, rather than font switches, these macros are simply input
mapping commands. Thus, by default, 0x0041 (latin A) maps to 0x1D434 (math
italic A), and so on. If \bf is active, 0x0041 (latin A) maps to 0x1D400
(math bold A), and so on.
Roughly speaking, this is how \bf. \it, \bi, \cal, \Bbd, etc work in the
background. However, at present these mappings are unsatisfactory. For
example, by default, 0x03B1 (Greek alpha) maps 0x1D6FC (Math italic small
alpha), while 0xO391 (Greek capital Alpha) maps to itself. What should
these mappings be when \bf is active? Or when \bi is active?
The trouble with the current implementation of \bf, \bi, \cal, etc is that
these mappings are not explicitly specified. My proposal is to allow users
to customize these mappings.
I agree that digits, upper and lower case latin and greek does not capture
all mathematic characters for which such mappings are needed. Similar
mappings might also be needed for some symbols like nabla (are there other
such symbols?). These can also be added as a key like
nabla={normal,italic}
or
nabla={bold,normal}
Hopefully, the above explanation makes more sense.
Aditya
On Thu, 9 Dec 2010, Aditya Mahajan wrote:
> This is a proposal for a new way of selecting math mappings in MkIV. I want
> to get input from other math users whether this syntax would take care of all
> scenarios or not.
>
> There are five different ranges in mathematics:
> - digits (0..9)
> - lower case Latin (abc..z)
> - upper case Latin (ABC..Z)
> - lower case Greek (αβγ..ζ)
> - upper case Greek (ΑΒΓ..Z)
>
> A user may want to control what each range is mapped to. So, I suggest a
> setup
> command
>
> \setupmathmappings
> [
> digits={style,alternative},
> lclatin={style,alternative},
> uclatin={style,alternative},
> lcgreek={style,alternative},
> ucgreek={style,alternative},
> ]
>
> where the options for style are
>
> normal, bold
>
> while the options for alternative are
>
> normal, italic, sans, sansitalic, blackboard, script
>
> This command will the mappings for each range. **NOTE**: All combinations are
> not valid.
>
> A companion command
>
> \definemathmappings
> [whatever]
> [....]
>
> can be used to define multiple mappings. These mappings can be used by
>
> \setupmathmappings[whatever]
>
> (An alternative is that these mappings are activated using \whatever ...)
>
> For example, we can define a command to typeset vectors using
>
> \definemathmappings
> [vectors]
> [ digits={bold,normal},
> lclatin={bold,normal},
> uclatin={bold,normal},
> lcgreek={bold,normal},
> ucgreek={bold,normal}]
>
> \def\VEC{\groupedcommand{\setupmathmappings[vector]}{}}
>
> If later, we want to represent vectors as sans serif, we can use
>
>
> \definemathmappings
> [vectors]
> [ digits={normal,sans},
> lclatin={normal,sans},
> uclatin={normal,sans},
> lcgreek={normal,sans},
> ucgreek={normal,sans}]
>
> This interface makes it easy to switch math fonts for disiplines that want
> different style for different alphabet ranges.
>
> It is relatively easy to implement the above interface. All we need is some
> bookkeeping to set the right attributes. The default math mapping commands
> can be reimplmeneted using \definemappings. Before implementing this, I want
> to ask the opinion of other math users.
>
> Would the above interface take care of different use cases, or is it missing
> something?
>
> Finally, I am not too happy with the syntax. There are only a few ConTeXt
> commands in which the keys take a pair of values. Another option is to allow
> all
> 12 valid options
>
> normal, italic, sans, sansitalic, blackboard, script,
> bold, bolditlaic, boldsans, boldsansitalic, boldblackboard, boldscript
>
> with the variants sansitalic-italicsans, boldsans-sansbold, etc. as
> synonmyms.
>
> Which way of specifying the keys do you prefer?
>
> Aditya
[-- Attachment #2: Type: text/plain, Size: 486 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://tex.aanhet.net
archive : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
next prev parent reply other threads:[~2010-12-11 16:28 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-10 4:49 Aditya Mahajan
2010-12-10 12:41 ` Vladimir Lomov
2010-12-10 15:29 ` Aditya Mahajan
2010-12-11 15:24 ` Otared Kavian
2010-12-10 13:49 ` Procházka Lukáš Ing. - Pontex s. r. o.
2010-12-10 15:22 ` Aditya Mahajan
2010-12-11 16:28 ` Aditya Mahajan [this message]
2010-12-12 16:15 ` Procházka Lukáš
2010-12-13 14:15 ` Aditya Mahajan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LNX.2.01.1012111127320.22443@ybpnyubfg.ybpnyqbznva \
--to=adityam@umich.edu \
--cc=ntg-context@ntg.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).