我喜欢 Optima 字体的外观,它适合我的图形符号,其中经常包含数学符号。我也更喜欢 pdflatex。因此,我发现 Epigrafica 字体是一个不错的 Optima 克隆,它可以在 pdflatex 中运行。但是,本机epigrafica
软件包会切换到pxfonts
以提供数学支持。
由于我更喜欢使用原生epigrafica
斜体来表示我的图形数学符号,因此我选择将包与所选选项结合使用mathastext
。除了一件事之外,一切都[italic]
运行良好:数学中的减号-
显示为非斜体左括号。{
其他运算符似乎可以很好地翻译,例如+
,,,,等。只有似乎受到影响。=
>
<
-
我有一个解决方法,我用它来\mathchardef
定义一个符号\minus
,它能给我所需的字形。但是,如果我能以一种方式重新定义事物,使-
数学模式中的符号直接产生正确的字形,那就简单多了。
实际上,我使用与standalone
文档类类似的设置来tikz
创建图形图像,然后我只需将\includegraphics
它们插入到使用完全不同的文本字体的报告中即可。在这里,MWE 省去了大部分工作。
\documentclass{article}
\usepackage[greek,english]{babel}
\usepackage[iso-8859-7]{inputenc}
\usepackage{epigrafica}
\usepackage[italic]{mathastext}
\mathchardef\minus="2200
\begin{document}
Epigrafica
-a-b
$-a-b$
$\minus a\minus b$
\end{document}
我意识到一种方法是让-
“数学”活跃起来,通过以下序言添加来解决 MWE 中的问题:
{\catcode`-=\active \gdef-{\minus}}
\AtBeginDocument{\mathcode`-="8000 }
然而,如果我没有记错的话,没有比这个更糟糕的字符了,因为活动连字符会破坏各种维度和整数运算。所以我并不认为活动连字符是一个可行的解决方案,除非你让我相信这不会产生任何负面影响。
答案1
如果为某个字符分配了\mathcode
32768(即"8000
以 TeX 十六进制表示),则找到该字符时会发生以下情况:
当 TeX 未排版时,什么都不显示(例如,在查找各种参数时,甚至是原语的参数);
当 TeX 处于水平模式时,会打印字符;
当 TeX 处于数学模式时,字符的当前定义为活动状态,并检查该字符以将其添加到正在构建的数学列表中。
在上述最后一种情况下,该字符被替换为其活动字符版本的含义。
假设你有
{\catcode`-=\active \gdef-{\minus}}
\AtBeginDocument{\mathcode`-="8000 }
所以如果你有$-a\mkern-1mu b$
(只是举一个愚蠢的例子),第一个-
将被转换成\minus
,但第二个不会,因为当 TeX 遇到它时,它正在寻找的参数\mkern
,它应该是一个数字后跟mu
(或其他东西,这里不相关)。
去尝试一下!
\documentclass{article}
\usepackage[greek,english]{babel}
\usepackage{epigrafica}
\usepackage[italic]{mathastext}
\mathchardef\minus=\mathcode`-
{\catcode`-=\active \gdef-{\minus}}
\AtBeginDocument{\mathcode`-="8000 }
\begin{document}
Epigrafica
-a-b
$-a\mkern-1mu b$
$-a-b$
$\minus a\minus b$
\end{document}
(我删除了对旧版 ISO 编码的引用。)
当然,将nominus
选项传递给mathastext
更简单。