假设我有:
\documentclass{article}
\begin{document}
$1 \cdot{1}$
\end{document}
我想知道 cdot 特殊符号的字形 Unicode。我按照这样的方式。
我已经latex
在我的 *nix 系统上运行了命令并执行了这样的命令
\show\cdot
之后我明白了
\cdot=\mathchar"2201.
但对于 CENTERED DOT 字符来说,这是错误的 Unicode。
如何确定从 2201 到 Unicode 的映射规则?
答案1
你猜对了,这"2201
是一个十六进制表示的数字,但这个数字与 Unicode 无关(Unicode 诞生于 Knuth 发明数学码几年后)。
这四位十六进制数字告诉 TeX 这\cdot
是一个操作符号(第一位数字2
),它必须从数学系列 2 的字体中取出(第二位数字),选择插槽处的字形"01
。
TeX 最多可以识别 16 个数学家族,每个家族可以定义三种字体,分别为正常大小、第一级下标和上标以及第二级下(上)标。
0 系列字体包含直立字母,1 系列字体包含数学斜体字母;2 系列字体包含最常见的数学符号;最后,3 系列字体包含“大”符号,例如可扩展括号。
如果要排版数学公式,这四个系列是必需的,因为 TeX 依靠这些字体的参数来完成工作。其他系列可以由 LaTeX 内核(例如 等)或其他软件包定义\mathbf
(\mathsf
例如斯特玛丽德)。
有不数学代码和 Unicode 之间有任何联系。
XeTeX 和 LuaTeX 引擎定义了用于处理 Unicode 数学字体的新原语,但那是另一个故事。
TeX 字体最多包含 256 个字形,标准数学字体只有 128 个。它们的表格在 TeXbook 或 TeX by Topic 中列出(在 TeX Live 上,可以使用texdoc texbytopic
)。您可以通过排版以下文档来自己制作字体表:
\documentclass{article}
\usepackage[a4paper,margin=3cm]{geometry}
\usepackage{fonttable}
\setcounter{secnumdepth}{0}
\pagestyle{empty}
\begin{document}
\section{Family 0}
\xfonttable{OT1}{cmr}{m}{n}
\newpage
\section{Family 1}
\xfonttable{OML}{cmr}{m}{n}
\newpage
\section{Family 2}
\xfonttable{OMS}{cmr}{m}{n}
\newpage
\section{Family 3}
\xfonttable{OMX}{cmex}{m}{n}
\end{document}
答案2
在数学模式下生成的 Unicode 代码\cdot
是 U+022C5。顺便说一句,可以在以下文件中在线找到数千个数学符号的 Unicode 代码的精彩列表unimath-符号.pdf。
附录 2011 年 9 月 26 日:unicode 字形 U+00b7 可以用命令 $\cdotp$ 呈现。以下 MWE 使用类似 Times-Roman 的 XITS Math 字体,显示 $\cdot$(unicode U+22C5)和 $\cdotp$ 的输出位于同一水平线上。我能检测到的唯一区别(并且仅在高放大倍数下)是 产生的点的直径\cdotp
略小于 产生的点的直径\cdot
;这是有道理的,因为\cdotp
它用于构建更常用的命令\cdots
(三个连续的中心点)——unicode char U+22EF。
% !TEX TS-program = xelatex
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{XITS Math}
\begin{document}
$\cdot \cdotp \cdot$
\end{document}