[OS X TeX] blackboard bold semicolon

Bruno Voisin bvoisin at me.com
Thu Jul 24 16:35:12 CEST 2008


Le 24 juil. 08 à 14:25, Martin Costabel a écrit :

> This seems to be the way \mathbb is defined. It uses the command  
> \DeclareMathAlphabet, and according to the latex font documentation,
>
> "Only symbols of type \mathalpha will be affected by math alphabet  
> commands: within the argument of a math alphabet command they will  
> produce the character in slot <slot> of that math alphabet's font.  
> Symbols of other types will always produce the same symbol (within  
> one math version)."
>
> The semicolon is of type \mathpunct, so it will not be affected by  
> \mathbb.

Looking at the TeXbook, this seems to date back to decisions made by  
Don Knuth on the usual meaning of symbols in formulas. Specifically,  
on p. 134 you'll find:

> The two characters `,' (comma) and `;' (semicolon) are treated as  
> punctuation marks in formulas; this means that TeX puts a little
> extra space after them, but not before them.
>
> It isn't customary to put extra space after a `.' (period) in math  
> formulas, so TeX treats a period as an ordinary symbol. If you want  
> the `:' character to be treated as a punctuation mark instead of as  
> a relation, just call it \colon.

And accordingly in plain.tex you'll find:

	\mathcode`\,="613B
	\mathcode`\.="013A
	\mathcode`\:="303A
	\mathcode`\;="603B
	\mathchardef\colon="603A

where the first digit at the beginning of the character definition  
defines the character class and is either 0 (ordinary), 3 (relation)  
or 6 (punctuation).

This is mirrored in LaTeX in fontmath.ltx by:

	\DeclareMathSymbol{,}{\mathpunct}{letters}{"3B}
	\DeclareMathSymbol{.}{\mathord}{letters}{"3A}
	\DeclareMathSymbol{:}{\mathrel}{operators}{"3A}
	\DeclareMathSymbol{;}{\mathpunct}{operators}{"3B}
	\DeclareMathSymbol{\colon}{\mathpunct}{operators}{"3A}

Here what you want is to make the blackboard bold semicolon a binary  
operation (class 2), similar to the definition of \circ in either  
plain TeX:

	\mathchardef\circ="220E

or LaTeX:

	\DeclareMathSymbol{\circ}{\mathbin}{symbols}{"0E}

What you need to do, after noticing from the font tables in /usr/local/ 
texlive/2008/texmf-dist/doc/fonts/amsfonts/amsfndoc.pdf that the AMS  
blackboard bold font doesn't include a semicolon, and from Axel's  
message earlier in this thread that the bbold symbol font does, is:

- Identify from

	/usr/local/texlive/2008/texmf-dist/tex/latex/bbold/bbold.sty
	/usr/local/texlive/2008/texmf-dist/tex/latex/bbold/Ubbold.fd

which font the bbold package corresponds to (bbold) and define a new  
symbol font (bbsymbol say) based on it:

	\DeclareSymbolFont{bbsymbol}{U}{bbold}{m}{n}

- Define a custom blackboard semicolon binary operator:

	\DeclareMathSymbol{\bbsemicolon}{\mathbin}{bbsymbol}{"3B}

You're done!

The following works here:

	\documentclass[12pt]{article}
	\usepackage{bbold}

	\DeclareSymbolFont{bbsymbol}{U}{bbold}{m}{n}
	\DeclareMathSymbol{\bbsemicolon}{\mathbin}{bbsymbol}{"3B}

	\begin{document}

	$R\bbsemicolon S$ and $R;S$ do look different.
	$R{\mathbb{;}}S$  and $R;S$ don't.

	\end{document}

Notice the difference in spacing when defining the semicolon properly  
as a binary operator. I think formula breaking across lines in case of  
an inline formula would be affected too.

Hope this helps,

Bruno Voisin


More information about the macostex-archives mailing list