使用 fontspec 插入符号 => 缺少数字,视为零

使用 fontspec 插入符号 => 缺少数字,视为零

我试图将箭头和粗连字符符号 ‣ 和 ̶ 分别插入U+2023U+2043我的文档中。我尝试使用 编译以下内容lualatex

\documentclass{article}

\usepackage{fontspec}

\begin{document}
  \symbol{^^^^2023}
  \symbol{^^^^2043}
\end{document}

但是,我得到了编译错误

Missing number, treated as zero.
<to be read again> 
  \symbol{^^^^2023}

Missing number, treated as zero.
<to be read again> 
  \symbol{^^^^2043}

在这种情况下,错误意味着什么?我该如何将符号插入到我的文档中?将编译器更改为lualatex其他编译器不是一个选择。

答案1

特殊语法^^^^2023意味着插入具有 Unicode 代码点的字符U+2023在输入层面。

例如,输入^^^^0061^^^^0062^^^^0063如下确切地与键入相同(顺便说一下,abc与 相同)。^^61^^62^^63

该命令的意思是*在当前字体的插槽中\symbol{<number>}排版字形。<number>

因此,这两种方式处于不同的层次:输入对于前者,输出对于后者。

您可以使用十六进制表示法\symbol,但需要使用以下标记:\symbol{"2023}。您也可以输入\symbol{8227},或者,甚至可以输入,

\symbol{`^^^^2023}

使用字母常量表示。但这会浪费资源,因为^^^^2023会产生相同的结果。

重要备注。符号^^^^要求小写数字abcdef,而"符号需要大写 ABCDEF

答案2

使用\char 没有将其参数括在花括号中,或者使用\symbol 大括号。

在此处输入图片描述

我使用了Noto SansNoto Serif,因为 LuaTeX 的默认字体系列(Latin Modern)不包含 或\symbol{"2023}的字形\symbol{"2043}

\documentclass{article}
\usepackage{fontspec}
\begin{document}
%% 'Noto Sans' and 'Noto Serif' happen to feature the required glyphs
\setmainfont{Noto Sans}
  \symbol{"2023}a\symbol{"2043} \quad \char"2023 a\char"2043

\setmainfont{Noto Serif}
  \symbol{"2023}a\symbol{"2043} \quad \char"2023 a\char"2043
\end{document}

相关内容