Create a Handwriting environment for both text and Math
Example with mathastext
:
\documentclass{article}
\usepackage{mathpazo}
\usepackage[version=3]{mhchem}
\usepackage{amsmath}
\usepackage{siunitx}
\usepackage[subdued]{mathastext}% no italic for Augie anyhow
\MTfamily{augie}
\Mathastext[augie]
\newenvironment{Handwriting}{\MTversion{augie}}{\par}
\begin{document}
This test is normal, and math too ($x^n+y^n = z^n$).
\begin{Handwriting}
This text should look like it is Hand written.
This equation as well:
\[x^n + y^n = z^n\]
\end{Handwriting}
\end{document}
Here is with Chalkduster, hence Unicode engines, which is not at all mathastext
ballpark.
I added defaultmathsizes
option to keep standard sizes for scriptsize (even if mathastext is "subdued", without this option it will make use of larger size in subscripts and superscripts).
Caution: you probably want to use mathspec or unicode-math which should provide the needed things. I have little experience with them (I rarely use unicode engines). Notice that user level interface is very often in LaTeX2e made "preamble-only", for example \DeclareMathSymbol
macro, hence one has to use TeX engine primitives.
\documentclass{article}
\usepackage[no-math]{fontspec}
\usepackage{amsmath}
%\usepackage{siunitx}
\newfontfamily\Chalkduster[NFSSFamily=Chalkduster]{Chalkduster}
\usepackage[subdued, defaultmathsizes]{mathastext}
\MTfamily{Chalkduster}
\Mathastext[Chalkduster]
\newenvironment{Handwriting}{\MTversion{Chalkduster}\MTdonotfixfonts
% adjust some additional glyphs
\Umathchardef\prod 1 \symmtoperatorfont `∏\relax % mathop
\Umathchardef\sum 1 \symmtoperatorfont `∑\relax % mathop
% \Umathchardef\in 3 \symmtoperatorfont `∈\relax % not in CHALKDUSTER?
\Umathchardef\int 1 \symmtoperatorfont `∫\relax % mathop
\Umathchardef\neq 3 \symmtoperatorfont `≠\relax % mathrel
%
% This syntax works with luatex not with xelatex
% \Umathcodenum`∏=\prod
% \Umathcodenum`∑=\sum
% \Umathcodenum`∫=\int
% \Umathcodenum`≠=\neq
% So we repeat
\Umathcode`∏ = 1 \symmtoperatorfont `∏\relax % mathop
\Umathcode`∑ = 1 \symmtoperatorfont `∑\relax % mathop
\Umathcode`∫ = 1 \symmtoperatorfont `∫\relax % mathop
\Umathcode`≠ = 3 \symmtoperatorfont `≠\relax % mathrel
}{\par}
\begin{document}
This text is normal, and math too
\[x^n + y^n = (z^n - w^n) = \sum_{ij} a_{ij} \neq \prod_{p\in P} (1 - \frac1p) =
\int \sqrt{1+x^2} dx\]
\begin{Handwriting}
This text should look like it is Hand written.
These equations as well:
\[x^n + y^n = (z^n - w^n) = \sum_{ij} a_{ij} \neq \prod_{p\in P} (1 - \frac1p) =
\int \sqrt{1+x^2} dx\]
\[x^n + y^n = (z^n - w^n) = ∑_{ij} a_{ij} ≠ ∏_{p\in P} (1 - \frac1p) =
∫\sqrt{1+x^2} dx\]
\end{Handwriting}
\end{document}
% Local variables:
% TeX-engine: xetex
% End:
The above would produce strange output when compiled with lualatex if the \MTdonotfixfonts
were omitted (with xelatex, this macro does nothing). Perhaps the \MTfixmathfonts
macro dating back to 2016/05/03 of mathastext is obsoleted due to change with font handling on lua side. (untested, I don't use LuaTeX)
As one can see, the square root sign was left untouched (I guess one needs a genuine OpenType math font for all such extensible symbols). And the ELEMENT OF ∈
seems to be missing from Chalkduster. (it seems to have glyphs in a private area I don't know how to access)
Attention to no-math
option for fontspec
. (I vaguely remember polyglossia
loads fontspec so this many need in that case some \PassOptionsToPackage
right after \documentclass
).
Here is a sample with unicode-math
. This would work with any TrueType or OpenType font.
\documentclass[varwidth, preview]{standalone}
\usepackage[math-style=upright]{unicode-math}
\defaultfontfeatures{Scale=MatchUppercase}
% Kalam is a free font by the Indian Type Foundry, available at:
% https://github.com/itfoundry/kalam
\setmainfont{Kalam}[
Scale = 1.0 ,
UprightFont = *-Regular ,
BoldFont = *-Bold ,
Extension = .ttf ]
\setmathfont{GFS Neohellenic Math}
\setmathfont[range={"00-"FF,
"03C0, "2013-"2014, "2018-"201A, "201C-"201E, "2021-"2022,
"2026, "2030, "2039-"203A, "2044, "20AC, "20BA, "20BD,
"2113, "2122, "2126, "212E, "2202, "2206, "220F, "2211,
"2212, "2215, "221E, "222B, "2246, "2260, "2264, "2265,
"25CA, up/{Latin,latin,num}}]{Kalam-Regular.ttf}
\setmathfont[range=bfup/{Latin,latin,num}]{Kalam-Bold.ttf}
\begin{document}
Kalam is a free font from the Indian Type Foundry.
\[ \lim_{t \to \infty} \frac{\partial}{\partial t}
\int_0^{2 \muppi} \frac{t^2}{2} \mathop{\symup{d}t} \leq
\sum_{i=1}^N \frac{\muppi i}{\sqrt 2} \approx \increment \symbfup{v}t \]
\end{document}
Unfortunately, that shows off almost all the font’s mathematical repertoire. Another you might try, from the same source, is Tillana.
ETA
Apologies; you requested an environment, and this doesn’t set up an environment. Sorry about that.
In a future version of unicode-math
, you might be able to write:
\newfontfamily\handwritingfamily{Kalam}[
Scale = MatchUppercase ,
UprightFont = *-Regular ,
BoldFont = *-Bold ,
Extension = .ttf ]
\setmathfont[version=handwriting,
Scale=MatchUppercase]{GFS Neohellenic Math}
\setmathfont[version=handwriting,
Scale=MatchUppercase,
range={"00-"FF,
"03C0, "2013-"2014, "2018-"201A, "201C-"201E, "2021-"2022,
"2026, "2030, "2039-"203A, "2044, "20AC, "20BA, "20BD,
"2113, "2122, "2126, "212E, "2202, "2206, "220F, "2211,
"2212, "2215, "221E, "222B, "2246, "2260, "2264, "2265,
"25CA, up/{Latin,latin,num}}
]{Kalam-Regular.ttf}
\setmathfont[version=handwriting,
Scale=MatchUppercase,
range=bfup/{Latin,latin,num}
]{Kalam-Bold.ttf}
\newenvironment{handwriting}{\handwritingfamily%
\mathversion{handwriting%
\setoperatorfont{\handwritingfamily}}}
However, as of October 2018, the manual warns, “Note there are currently open issues regarding the interaction between the version
and the range
features, so please proceed with caution.”
At present, \setmathfont[ version=handwriting, Scale=MatchUppercase ]{Kalam}
compiles, but the output will lack any math symbols missing from the font (and I am not aware of any handwriting fonts with an OpenType MATH
table). GFS Neohellenic Math is the most handwriting-like OpenType math font I know of.