为文本和数学创建手写环境

为文本和数学创建手写环境

我想创建一个环境,让我能够以“手写模式”拥有文档的各部分内容。

因此目标是能够在源代码中输入以下内容:

\begin{Handwriting}

This text should look like it is Hand written


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

\end{Handwriting}

来自我尝试的另一个帖子

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

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

但这对于方程式没有帮助。

我怀疑使用 mathastext 包可能会有帮助,但我还没有弄清楚如何做。

额外的问题是,让事情变得更加复杂一点:是否可以使用“Chalkduster”字体代替“augie”?

谢谢你的帮助,克莱门特

答案1

例如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}

在此处输入图片描述


这里使用的是 Chalkduster,因此是 Unicode 引擎,这根本就不是准确的mathastext数字。

我添加了defaultmathsizes选项以保持脚本大小的标准大小(即使 mathastext 是“柔和的”,如果没有这个选项,它将在下标和上标中使用更大的尺寸)。

注意:您可能想要使用 mathspec 或 unicode-math,它们应该可以提供所需的东西。我对它们没有什么经验(我很少使用 unicode 引擎)。请注意,LaTeX2e 中的用户级界面通常都是“仅前导”,例如\DeclareMathSymbol宏,因此必须使用 TeX 引擎原语。

\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:

如果省略了,则在使用 lualatex 编译时会产生奇怪的输出\MTdonotfixfonts(使用 xelatex 时,此宏不执行任何操作)。也许可以\MTfixmathfonts追溯到 2016/05/03 的 mathastext 宏由于 lua 端字体处理的变化而过时了。(未经测试,我不使用 LuaTeX)

在此处输入图片描述

可以看出,平方根符号没有改变(我猜想,对于所有这些可扩展符号,都需要一个真正的 OpenType 数学字体)。而且,似乎 Chalkduster 中缺少 ELEMENT OF。(它似乎在我不知道如何访问的私有区域中有字形)

注意 的no-math选项fontspec。(我依稀记得polyglossia加载了 fontspec,因此在这种情况下需要很多,\PassOptionsToPackage就在 之后\documentclass)。

答案2

以下是一个示例unicode-math。这将适用于任何 TrueType 或 OpenType 字体。

\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}

卡拉姆样品

不幸的是,这几乎暴露了字体的所有数学知识。您可以尝试的另一个字体是 Tillana,来自同一来源。

预计到达时间

抱歉;您请求了一个环境,但这并没有设置环境。对此深表歉意。

在 的未来版本中unicode-math,你也许可以这样写:

\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}}}

然而,截至 2018 年 10 月,该手册警告称,“请注意,目前存在versionrange功能之间的交互有关的未解决的问题,因此请谨慎操作。”

目前,\setmathfont[ version=handwriting, Scale=MatchUppercase ]{Kalam}可以编译,但输出将缺少字体中缺少的任何数学符号(而且我不知道有任何带有 OpenTypeMATH表的手写字体)。GFS Neohellenic Math 是我所知道的最像手写的 OpenType 数学字体。

相关内容