19

I would like to create an environment that would allow me to have parts of a document in "Handwriting mode".

So the objective would be to be able to type the following in the source code :

\begin{Handwriting}

This text should look like it is Hand written


$This \cdot equation = \ as \times \ well$

\end{Handwriting}

from another thread I tried

\usepackage{mathpazo}
\usepackage[version=3]{mhchem}

\usepackage{amsmath}
\usepackage{siunitx}
\newenvironment{Handwriting}{\fontfamily{augie}\selectfont}{\par}

but this does not help for the equation.

I suspect the use of the mathastext package could help but I did not figure out how yet.

Bonus question that makes matters a bit more complicated is : would it be possible to use the "Chalkduster" font instead of "augie" ?

Thank you for you help, Clément

7
  • Answer to the bonus question: Yes. If you use LuaLaTeX or XeLaTeX you can use any font installed on your computer.
    – Skillmon
    Oct 2, 2018 at 10:42
  • 2
    try out this and that examples. But changing the font to augie. Ok, I will make an answer.
    – user4686
    Oct 2, 2018 at 10:43
  • jfbu, thank you for your answer. Though, I don't think it answers my question, since it changes the font for the entire document, which is not what I want. Skillmon, thank you, I just found it a bit difficult to use the \newfontfamily command right. I did the following : \newfontfamily{\Chalk}{[Chalkduster.ttf]} and then it was easy enough to use, somewhere in the document : {\Chalk This text is an imitation of a Chalkdust-written text } But as I tried to use the font in a new environment (my "Handwriting" environment for example), the compiling time started to take ages. Oct 2, 2018 at 10:46
  • @ClémentMoissard I provided an answer with local changes only. You refer to my comment which indeed was for entire document. I had not really read your post then...
    – user4686
    Oct 2, 2018 at 10:53
  • B and b almost look the same. It is very ugly font. Oct 2, 2018 at 11:12

2 Answers 2

24

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}

enter image description here


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)

enter image description here

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).

9
  • Oh cool ! This is brilliant ! Thank you a lot jfbu =) Oct 2, 2018 at 10:55
  • @ClémentMoissard glad it helps. I realize that compared to French Cursive the Augie font has glyphs for +, -, =, which is satisfying here. As explained by mathastext doc, big symbols however (sums, products, integrals) of course remain the ones specified by other packages.
    – user4686
    Oct 2, 2018 at 11:01
  • Yep, that is why I am trying to get the Chalkduster to work (which does have cool big symbols), but still without success. Quite frustratingly, when I add \usepackage{fontspec} \newfontfamily{\Chalk}{[Chalkduster.ttf]} just at the beginning of your code, even the augie formatting disappears Oct 2, 2018 at 11:05
  • Just to really push the idea, I found that it is quite easy to add a background color to the environment, for example : \definecolor{floralwhite}{rgb}{1.0, 0.98, 0.94} \newenvironment{Handwriting} {\MTversion{augie} \begin{mdframed}[backgroundcolor=floralwhite]} {\par \end{mdframed}} But would it be possible to add lines ? The idea would be for the text to look as if it was handwritten on a school-type sheet of paper, with lines. tex.stackexchange.com/questions/188164/… answers for the full document Oct 2, 2018 at 11:30
  • grid typesetting is a challenge in LaTeX. Perhaps look at page 131 of tcolorbox manual, but the examples given clearly show no attempt is made at grid typesetting, only help lines. If you are sure your environment will contain only regular text and math displays, then surely one can do something, although breaking over page will be a problem I expect, perhaps ask the question to tcolorbox author.
    – user4686
    Oct 2, 2018 at 12:10
4

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}

Kalam Sample

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.

3
  • back into 2021, any news of the version and range features compatibility? Thanks!
    – JPMD
    Dec 13, 2021 at 16:42
  • @JPMD The 2021 user manual, I’m afraid, still warns, “Note there are currently open issues regarding the interaction between the version and the range features, so please proceed with caution.”
    – Davislor
    Dec 13, 2021 at 17:19
  • Yes, you are correct. I was hoping the developer of unicode-math could meanwhile find a solution... any other ideas?
    – JPMD
    Dec 13, 2021 at 18:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .