mkiv math delimiters and <|>
Hello, I have tried to compile an old document (written in mkii times). Among other problems that I yet need to isolate, the following minimal example doesn't want to compile: $\bigl| x \bigr>$ since <|> aren't recognized as candidates for delimiters. There is a workaround of course (using \langle, \rangle, ... instead of <>), but the three characters are just way too handy to use. I suppose that the behaviour in mkii comes from these lines: \definemathcharacter [<] [nothing] [sy] ["68] [ex] ["0A] \definemathcharacter [>] [nothing] [sy] ["69] [ex] ["0B] But I'm not sure where mkiv could be changed. I have tried to use adobename="greater", ... mathspec={ { class="binary", name="gt" }, { class="close", name="rbrace" }, }, but without any success. Mojca
On Fri, Nov 13, 2009 at 4:03 AM, Mojca Miklavec < mojca.miklavec.lists@gmail.com> wrote:
Hello,
I have tried to compile an old document (written in mkii times). Among other problems that I yet need to isolate, the following minimal example doesn't want to compile: $\bigl| x \bigr>$ since <|> aren't recognized as candidates for delimiters. There is a workaround of course (using \langle, \rangle, ... instead of <>), but the three characters are just way too handy to use.
| works fine here. < and > don't. I did not know that \left< is equivalent to \left\langle even in plain tex. I suppose that the behaviour in mkii comes from these lines:
\definemathcharacter [<] [nothing] [sy] ["68] [ex] ["0A] \definemathcharacter [>] [nothing] [sy] ["69] [ex] ["0B]
I guess mkii is imitating plain tex here. (Though, I could not find how this is happening in plain tex)
But I'm not sure where mkiv could be changed.
I don't know how to do this. < should behave like a rel without a \left, and like a delimited with \left.
I have tried to use adobename="greater", ... mathspec={ { class="binary", name="gt" }, { class="close", name="rbrace" }, }, but without any success.
rbrace!!. Probabably you want rangle. You can change the order of the two, and then > will map to rangle, but you will have to use \gt to get the relation symbol. Aditya
Aditya Mahajan wrote:
On Fri, Nov 13, 2009 at 4:03 AM, Mojca Miklavec < mojca.miklavec.lists@gmail.com> wrote:
Hello,
I have tried to compile an old document (written in mkii times). Among other problems that I yet need to isolate, the following minimal example doesn't want to compile: $\bigl| x \bigr>$ since <|> aren't recognized as candidates for delimiters. There is a workaround of course (using \langle, \rangle, ... instead of <>), but the three characters are just way too handy to use.
| works fine here. < and > don't. I did not know that \left< is equivalent to \left\langle even in plain tex.
I suppose that the behaviour in mkii comes from these lines:
\definemathcharacter [<] [nothing] [sy] ["68] [ex] ["0A] \definemathcharacter [>] [nothing] [sy] ["69] [ex] ["0B]
I guess mkii is imitating plain tex here. (Though, I could not find how this is happening in plain tex)
From plain.tex: \mathcode`\<="313C \delcode`\<="26830A The first (\mathcode) controls standalone use, the second (\delcode) use as a delimiter. Both can be set at the same time, and that second one got lost in the conversion, probably because it has a dedicated slot in Unicode (U+0x27E8, MATHEMATICAL LEFT ANGLE BRACKET). Perhaps this can be done with the mathspec field in char-def.lua, but I do not know how? Best wishes, Taco
On Sun, 15 Nov 2009, Taco Hoekwater wrote:
Aditya Mahajan wrote:
On Fri, Nov 13, 2009 at 4:03 AM, Mojca Miklavec < mojca.miklavec.lists@gmail.com> wrote:
Hello,
I have tried to compile an old document (written in mkii times). Among other problems that I yet need to isolate, the following minimal example doesn't want to compile: $\bigl| x \bigr>$ since <|> aren't recognized as candidates for delimiters. There is a workaround of course (using \langle, \rangle, ... instead of <>), but the three characters are just way too handy to use.
| works fine here. < and > don't. I did not know that \left< is equivalent to \left\langle even in plain tex.
I suppose that the behaviour in mkii comes from these lines:
\definemathcharacter [<] [nothing] [sy] ["68] [ex] ["0A] \definemathcharacter [>] [nothing] [sy] ["69] [ex] ["0B]
I guess mkii is imitating plain tex here. (Though, I could not find how this is happening in plain tex)
From plain.tex:
\mathcode`\<="313C \delcode`\<="26830A
The first (\mathcode) controls standalone use, the second (\delcode) use as a delimiter. Both can be set at the same time, and that second one got lost in the conversion, probably because it has a dedicated slot in Unicode (U+0x27E8, MATHEMATICAL LEFT ANGLE BRACKET).
Perhaps this can be done with the mathspec field in char-def.lua, but I do not know how?
The attached patch gives a working solution for lmmath but does not work with cambria. I don't know if the latter is a fault of context mkiv or luatex. In any case, this is a kludge as we have to define a dummy name. It will be better if we could just say name=false. Currently, if I use name=false, \left< gives an error. Aditya
Aditya Mahajan wrote:
The attached patch gives a working solution for lmmath but does not work with cambria. I don't know if the latter is a fault of context mkiv or luatex.
"Does not work" as in: no error, but no delimiter either? That would be a side-effect of Cambria not having defined successors for LESS THAN. Best wishes, Taco
On Sun, 15 Nov 2009, Taco Hoekwater wrote:
Aditya Mahajan wrote:
The attached patch gives a working solution for lmmath but does not work with cambria. I don't know if the latter is a fault of context mkiv or luatex.
"Does not work" as in: no error, but no delimiter either?
No scaled delimiter. There is no difference between \left< and <.
That would be a side-effect of Cambria not having defined successors for LESS THAN.
I personally do not like this behavior of plain tex, with \left< being same as \left\langle. In the long run, all such delimiters should be defined similar to mathml fences, \definemathfence[average][left=\langle, right=\rangle, scale=auto|none] etc. Should we be really supporting this in MKIV? Aditya
Aditya Mahajan wrote:
I personally do not like this behavior of plain tex, with \left< being same as \left\langle. In the long run, all such delimiters should be defined similar to mathml fences,
\definemathfence[average][left=\langle, right=\rangle, scale=auto|none]
etc. Should we be really supporting this in MKIV?
That is a question for Mojca and Hans, I think. FWIW, I do not like it that much either, as there *is* a proper character for this nowadays. Best wishes, Taco
Taco Hoekwater wrote:
Aditya Mahajan wrote:
I personally do not like this behavior of plain tex, with \left< being same as \left\langle. In the long run, all such delimiters should be defined similar to mathml fences,
\definemathfence[average][left=\langle, right=\rangle, scale=auto|none]
etc. Should we be really supporting this in MKIV?
That is a question for Mojca and Hans, I think. FWIW, I do not like it that much either, as there *is* a proper character for this nowadays.
indeed we should stick to what unicode provides; if some symbols is missing in lm or tx/pr ... we could fake it as i don't like returning to the times where each exception became a command with per font a different one Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
Aditya Mahajan wrote:
On Sun, 15 Nov 2009, Taco Hoekwater wrote:
Aditya Mahajan wrote:
The attached patch gives a working solution for lmmath but does not work with cambria. I don't know if the latter is a fault of context mkiv or luatex.
"Does not work" as in: no error, but no delimiter either?
No scaled delimiter. There is no difference between \left< and <.
That would be a side-effect of Cambria not having defined successors for LESS THAN.
I personally do not like this behavior of plain tex, with \left< being same as \left\langle. In the long run, all such delimiters should be defined similar to mathml fences,
\definemathfence[average][left=\langle, right=\rangle, scale=auto|none]
etc. Should we be really supporting this in MKIV?
i don't know. what i observe is that when we use \left\langle always (which is what we do in mathml in order to play safe) the first level symbol is always a bit bigger than just an < maybe it's just a matter of thresholds or prepending a smaller < to the list Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
participants (4)
-
Aditya Mahajan
-
Hans Hagen
-
Mojca Miklavec
-
Taco Hoekwater