14

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

  • Answer to the bonus question: Yes. If you use LuaLaTeX or XeLaTeX you can use any font installed on your computer. – Skillmon Oct 2 '18 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 '18 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. – Clément Moissard Oct 2 '18 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 '18 at 10:53
  • B and b almost look the same. It is very ugly font. – Money Oriented Programmer Oct 2 '18 at 11:12
20

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

  • Oh cool ! This is brilliant ! Thank you a lot jfbu =) – Clément Moissard Oct 2 '18 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 '18 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 – Clément Moissard Oct 2 '18 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 – Clément Moissard Oct 2 '18 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 '18 at 12:10
3

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.