以下最小示例给出了 augie 字体中的数字 0-9,这是一种手写字体。问题在于数字 1 和 7。理想情况下,我希望数字如下图所示以蓝色显示。
那么问题是,如何才能改变该数字的符号?我们能用另一种字体的合适数字替换它吗?事实上,有没有另一种字体可以用这种方式写数字?
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\DeclareRobustCommand{\augiefamily}{%
\fontfamily{augie}\fontseries{m}\fontshape{n}\selectfont}
\DeclareTextFontCommand{\textaugie}{\augiefamily}
\begin{document}
\begin{augiefamily}
0 1 2 3 4 5 6 7 8 9
\end{augiefamily}
\end{document}
答案1
只要您始终愿意使用宏来表达可见数字\numb{...}
,您就可以构建自己的 1 和 7 版本。虽然这看起来很麻烦,但人们在使用之类的包时总是这样做siunitx
,所以它更多的是一种习惯而不是负担。
中间规则表明数字 1 和 7 本质上没有改变……它们仍然可以用于数值参数。
已编辑,可以合理地处理 10pt 和 12pt。
对于 xelatex 或 lualatex,使用以下命令:
\documentclass{article}
\usepackage{tokcycle,etoolbox,fontspec}
\setmainfont{augie}
\Characterdirective{\csname numb#1\endcsname}
\csdef{numb.}{.}
\csdef{numb0}{0}
\csdef{numb1}{\raisebox{.47ex}{\scriptsize/}\kern-.25ex1}
\csdef{numb2}{2}
\csdef{numb3}{3}
\csdef{numb4}{4}
\csdef{numb5}{5}
\csdef{numb6}{6}
\csdef{numb7}{{\ooalign{7\cr\small--}}}
\csdef{numb8}{8}
\csdef{numb9}{9}
\newcommand\numb[1]{\tokencyclexpress#1\endtokencyclexpress{}}
\begin{document}
\numb{2315.576}\\
\rule{10pt}{1.7pt}\\
\numb{.716}
\end{document}
对于 pdflatex,使用以下命令:
\documentclass{article}
\usepackage{tokcycle,etoolbox}
\usepackage{emerald}
\usepackage[T1]{fontenc}
\csdef{numb.}{.}
\csdef{numb0}{0}
\csdef{numb1}{\raisebox{.47ex}{\scriptsize/}\kern-.25ex1}
\csdef{numb2}{2}
\csdef{numb3}{3}
\csdef{numb4}{4}
\csdef{numb5}{5}
\csdef{numb6}{6}
\csdef{numb7}{{\ooalign{7\cr\small--}}}
\csdef{numb8}{8}
\csdef{numb9}{9}
\newcommand\numb[1]{\tokcycle{\csname numb##1\endcsname}{}{}{}{#1}}
\begin{document}
\ECFAugie
\numb{2315.576}\\
\rule{10pt}{1.7pt}\\
\numb{.716}
\end{document}
如 MWE 的 pdflatex 版本中所示,如果您希望避免\Characterdirective
单独指定,这也将在文档中存在其他标记循环时保护您,您可以\numb
使用“内置”字符指令进行如下指定:
\newcommand\numb[1]{\tokcycle{\csname numb##1\endcsname}{}{}{}{#1}}
答案2
还有几种替代方案:
检查字体是否提供可启用的替代字形。(如果字体具有具有此功能的 OpenType 版本,请切换到 LuaTeX 或 XeTeX。)
对于 Augie 字体:没有可用的替代字形。
如果字体许可证允许,请在字体编辑器中加载字体(例如,FontForge),修改字形并以新名称保存为新字体。如果字形边界框没有改变,则可以从原始字体继承 LaTeX 的度量文件。
对于 Augie 字体(免费软件),禁止这样做(
augie.ttf
):在 TeX 语言层面,可以通过 TikZ 代码、图像等手动叠加字形,以添加两个字形缺失的线条部分。但这很笨拙,需要宏来访问复合字形(字符可以变为活动字符,但活动数字会自找麻烦,因此很可能不是一个好主意)。