我想创建一个环境,让我能够以“手写模式”拥有文档的各部分内容。
因此目标是能够在源代码中输入以下内容:
\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 月,该手册警告称,“请注意,目前存在version
与range
功能之间的交互有关的未解决的问题,因此请谨慎操作。”
目前,\setmathfont[ version=handwriting, Scale=MatchUppercase ]{Kalam}
可以编译,但输出将缺少字体中缺少的任何数学符号(而且我不知道有任何带有 OpenTypeMATH
表的手写字体)。GFS Neohellenic Math 是我所知道的最像手写的 OpenType 数学字体。