![如何根据自定义字体定义数学符号,例如积分,尊重显示样式](https://linux22.com/image/475952/%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AD%97%E4%BD%93%E5%AE%9A%E4%B9%89%E6%95%B0%E5%AD%A6%E7%AC%A6%E5%8F%B7%EF%BC%8C%E4%BE%8B%E5%A6%82%E7%A7%AF%E5%88%86%EF%BC%8C%E5%B0%8A%E9%87%8D%E6%98%BE%E7%A4%BA%E6%A0%B7%E5%BC%8F.png)
基本上,我通过制作字体定义了一些我真正想要使用的自定义字形。它们是应该按照积分的排版方式排版的符号computer modern
(但看起来像我想要的)。我使用路拉泰克斯为了使用我的字体,无需在系统上安装,我只想将我的 .ttf 放入我的 tex 项目中。我从下载了计算机现代字体这里并修改了积分符号。据我所知,它针对不同的数学样式有不同的文件:
- cmsy10.ttf 是否为标准较小的数学符号,例如
$\textstyle\int$
(U+0073)? - cmex10.ttf 适用于大型数学符号,例如
$\displaystyle\int$
(U+005a) 以及 (U+0052),在我看来它们像$\textstyle\int$
。为什么两者都是?
困难:
- 如何实际包含字体并为我的积分符号提供 \myintegral 之类的命令?除了提供这些命令之外,我不想将字体用于任何其他用途。它应该表现确切地就像通常的积分一样,因此要尊重我们是否采用显示风格。我寻找灵感的
fontmath.ltx
地方
\DeclareMathSymbol{\intop}{\mathop}{largesymbols}{"52}
\DeclareRobustCommand\int{\intop\nolimits}
这个定义不知何故似乎尊重数学风格(如何?)。
- 下载文件的边界框好像不对吧?这是在 cmex10.ttf 中打开的未改变的 displaystyle 积分字体。cmex.ttf 中的所有框都是这样的,cmsy10.ttf 中的框与预期一致。(显示积分为很多越过右侧边界并且所有符号似乎都有不正确的基线?)
- 我是否必须像现代计算机那样,为每种文档文本大小创建一个单独的符号?
编辑:
我已经能够让我的符号在数学模式下显示和使用。但是我在边界框方面遇到了问题和有限制即使在我使用标准清晰度的情况下!
生成代码为:
% !TEX program = lualatex
\documentclass[ngerman,10pt]{scrartcl}
\usepackage{fontspec}
%\usepackage{unicode-math}
\setlength{\fboxsep}{0pt}
%\usepackage{newcomputermodern}
% from https://tex.stackexchange.com/a/439983/294323
\newfontface{\mysymbolsfontface}{cmex10_mod.ttf}[
Path = ./, % Adjust the path to where the font is located
Extension = .ttf,
NFSSFamily=mysymbolsfontfamily %use some name for the font family
]
\DeclareSymbolFont{mysymbolsfont}{TU}{mysymbolsfontfamily}{m}{n}
\Umathchardef\displaymyint="1 \symmysymbolsfont "005A %"\sym" then symbolsfontname then glyph code. The "1 stands for mathoperator
\DeclareRobustCommand\myint{\mathchoice{\displaymyint\nolimits}
{\intop\nolimits}
{\intop\nolimits}
{\intop\nolimits}}
\begin{document}
Inline: \qquad\qquad\qquad \fbox{$\myint$} \quad \fbox{$\myint_\infty^\infty f(x)$}\\
Displaymode: \qquad\qquad\qquad \fbox{$\displaystyle\myint$} \quad \fbox{$\displaystyle\myint_\infty^\infty f(x)$}\\
Original Inline: \quad \fbox{$\int$} \quad \fbox{$\int_\infty^\infty f(x)$}\\
Original Displaymode: \quad \fbox{$\displaystyle\int$} \quad \fbox{$\displaystyle\int_\infty^\infty f(x)$}\\
\end{document}
因此,剩下需要回答的问题是:
- 为什么在使用 \intop 的情况下限制不正确?应该像原始 tex 那样吗?
- 在哪里可以获得 cmex 字体的版本,其中的框是正确的?
编辑:我决定将最后一部分拆分成一个更容易理解的问题,请参阅这里。这基本就结束了。