[Tex/LaTex] Using `mathbb` fonts from other packages

fontsmath-modemathpazomathspecxetex

I am currently using a combination of mathpazo and mathspec for my maths typesetting. To be specific, my preamble contains the following:

\usepackage{amssymb}

\usepackage{mathrsfs}
\usepackage{mathpazo}

\usepackage{mathtools}

\usepackage{mathspec}

\usepackage{xltxtra,xunicode}
\defaultfontfeatures{Mapping=tex-text}

\setmainfont[Numbers=OldStyle]{Palatino Linotype}
\setsansfont{Optima}
\setmonofont{Consolas}
\setmathsf{Optima}
\setmathfont(Greek){Palatino Linotype}

\exchangeforms{phi}

However, I would like the option of using, say, the AMS blackboard bold fonts for mathbb, or the ones provided by STIX (or any other Unicode maths font) instead of the ones provided by mathpazo. So far nothing I've tried with \setmathbb has worked.

I have a similar problem with \setmathcal, and I notice that if I use calrsfs instead of mathrsfs there is no effect whatsoever.

Best Answer

I'd go directly to unicode-math:

\documentclass[a4paper]{article}
\usepackage{mathtools} % loads amsmath that should go before unicode-math
\usepackage{unicode-math}
\setmainfont[Numbers=OldStyle]{Palatino Linotype}
\setsansfont{Optima}
\setmonofont{Consolas}
\setmathfont{Asana Math}

Asana Math is based on the MathPaZo fonts.

If you really need brackets and parentheses from the MathPaZo fonts, it's doable:

\DeclareSymbolFont{brackets}       {OT1}{zplm}{m}{n}
\SetSymbolFont{brackets}{bold}     {OT1}{zplm}{b}{n}
\DeclareSymbolFont{largebrackets}  {OMX}{zplm}{m}{n}
\SetSymbolFont{largebrackets}{bold}{OMX}{zplm}{m}{n}
\DeclareMathDelimiter{(}{\mathopen} {brackets}{"28}{largebrackets}{"00}
\DeclareMathDelimiter{)}{\mathclose}{brackets}{"29}{largebrackets}{"01}
\DeclareMathDelimiter{[}{\mathopen} {brackets}{"5B}{largebrackets}{"02}
\DeclareMathDelimiter{]}{\mathclose}{brackets}{"5D}{largebrackets}{"03}

For the Knuth calligraphic font, add

\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{XITS Math}

For a "better" \vDash symbol, add

\setmathfont[range=\vDash]{XITS Math}

The "not belonging to" symbol should always be specified with \notin rather than with \not\in.

Finally, for the AMS blackboard bold:

\DeclareSymbolFont{AMSb}{U}{msb}{m}{n}
\protected\def\mathbb#1{{\mathchar\numexpr256*\symAMSb+`#1\relax}}