[Tex/LaTex] Force upright Greek letters with isomath

greekisomathmath-moderoman

The isomath package makes it possible to typeset upright Greek letters via \mathrm and \mathbf. Is it it possible to force all Greek letters to be typeset upright unless specified otherwise, e.g. to make it so that \(\Phi \Psi\) delivers the same output as \(\mathrm{\Phi \Psi}\)? An ideal solution would be to load isomath with some option and if it optionally could make difference of upper and lower case Greek letters.

\documentclass{article}

\usepackage{isomath}

\begin{document}

\(\Phi \Psi\)% These are typeset in italic

\(\mathrm{\Phi \Psi}\)% These are typeset upright

\end{document}

Output of code producing Greek letters

Best Answer

You don't need the isomath package:

\DeclareMathSymbol{\Gamma}{\mathalpha}{operators}{0}
\DeclareMathSymbol{\Delta}{\mathalpha}{operators}{1}
\DeclareMathSymbol{\Theta}{\mathalpha}{operators}{2}
\DeclareMathSymbol{\Lambda}{\mathalpha}{operators}{3}
\DeclareMathSymbol{\Xi}{\mathalpha}{operators}{4}
\DeclareMathSymbol{\Pi}{\mathalpha}{operators}{5}
\DeclareMathSymbol{\Sigma}{\mathalpha}{operators}{6}
\DeclareMathSymbol{\Upsilon}{\mathalpha}{operators}{7}
\DeclareMathSymbol{\Phi}{\mathalpha}{operators}{8}
\DeclareMathSymbol{\Psi}{\mathalpha}{operators}{9}
\DeclareMathSymbol{\Omega}{\mathalpha}{operators}{10}

To get an italic Gamma, use \mathnormal{\Gamma}. Try

$\Gamma\mathnormal{\Gamma}\mathbf{\Gamma}$

enter image description here

The command \DeclareMathSymbol is used for assigning a meaning to characters or commands in math mode. The second argument contains the "kind" of symbol; \mathalpha means a symbol that obeys to the alphabet selection commands. The third argument is the alphabet used by default; the fourth is the slot in the font. All the standard declarations are in fontmath.ltx loaded at format creation time.

Notice that these declarations won't work if the default font encoding of the document is T1 instead of OT1, as operators refers to the ordinary Roman document font. One should define a new math alphabet, in this case.

How to do this when the document encoding is T1? One has to define a new symbol font:

\DeclareSymbolFont{otone}{OT1}{cmr}{m}{n}
\SetSymbolFont{bold}{otone}{OT1}{cmr}{m}{n}
\DeclareMathSymbol{\Gamma}{\mathalpha}{otone}{0}
\DeclareMathSymbol{\Delta}{\mathalpha}{otone}{1}
\DeclareMathSymbol{\Theta}{\mathalpha}{otone}{2}
\DeclareMathSymbol{\Lambda}{\mathalpha}{otone}{3}
\DeclareMathSymbol{\Xi}{\mathalpha}{otone}{4}
\DeclareMathSymbol{\Pi}{\mathalpha}{otone}{5}
\DeclareMathSymbol{\Sigma}{\mathalpha}{otone}{6}
\DeclareMathSymbol{\Upsilon}{\mathalpha}{otone}{7}
\DeclareMathSymbol{\Phi}{\mathalpha}{otone}{8}
\DeclareMathSymbol{\Psi}{\mathalpha}{otone}{9}
\DeclareMathSymbol{\Omega}{\mathalpha}{otone}{10}

Of course cmr can be changed into the document's main font family name, provided it contains Greek uppercase letters in its OT1 version; but it's just a matter of giving the correct slot numbers for the chosen font.

Related Question