我无法使用 microtype 为\times
符号和…
省略号设置突出部分。我使用"XXXX ={}
符号来引用这些符号(其中 XXXX 是 UTF-8 代码),如手册中所述microtype
。这两个文档都会生成 microtype 警告,并且符号不会突出。
文档 1:省略号
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[showframe]{geometry}
\usepackage[protrusion=true]{microtype}
\SetProtrusion
{encoding={*}, family={*}, series={*}, size={*}}
{
"2026 ={,1000}% ellipsis symbol UTF-8
}
\begin{document}
\noindent Test text Test text Test text Test text Test text Test text Test text Test text Test text Test text{…}\linebreak
Test text
\end{document}
观察:
- 运行此代码时,microtype
报告Number "2026 in encoding OT1 too large!
。
- 当尝试…
在文本和设置代码中粘贴实际符号()时,它会说Unknown slot number
。
- 当尝试时\dots
,会出现相同的警告。
文档 2:乘法符号
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[showframe]{geometry}
\usepackage{textcomp}
\usepackage[protrusion=true]{microtype}
\SetProtrusion
{encoding={*}, family={*}, series={*}, size={*}}
{
\texttimes ={,1000},% times symbol
}
\begin{document}
\noindent Test text Test text Test text Test text Test text Test text Test text Test text Test text Test text\texttimes\linebreak
Test text
\end{document}
观察:
- 运行此代码时,microtype
报告Unknown slot number
。
- 尝试使用 UTF-8 地址 ´"00D7 ={,1000}` 时,没有警告,但也没有可见的突起。
屏幕(结合文档 1 和 2):
答案1
让我首先扩展一下如何在microtype
设置中指定字符的可能方法:
对于
pdftex
,允许使用以下输入法:A
(7 位) ASCII 范围内的字符(如)- 如果字形在输入编码中定义,您还可以使用 8 位(例如
Ä
)和 UTF-8 字符(例如)。…
- 为了保持便携性,您可以使用文本命令(例如
\texttimes
)。- 无论如何,字形必须存在于字体中,即必须在输出编码中定义。
- 最后,您可以直接引用字体的插槽号(即输出编码),例如,这是创建连字设置的唯一方法。
对于
luatex
和xetex
前三点是一样的,但是最后一点有区别,并且还有一种可能性:- 数字不是指字体的内部插槽,而是指 Unicode 数字(例如,
"2026
代表省略号)。 - 此外,您还可以指定一个字形名称,前缀为
/
。这些名称可能是字体特定的,必须通过检查字体本身来查找。这对于无法通过其他方式访问的装饰尤其有用。
- 数字不是指字体的内部插槽,而是指 Unicode 数字(例如,
那么你的情况出了什么问题?
关于省略:
- 您无法指定 Unicode 编号,因为您正在运行
pdftex
,其中编号指的是字体编码(如上文第 4 点所述)。由于OT1
编码仅包含 128 个字符,因此编号超出范围。 - 原则上,如果省略号字形确实存在于字体中,则指定符号本身 (
…
) 或相应的文本命令 (\textellipsis
-- not\dots
) 都可以工作。但是,编码中根本没有省略号OT1
,而是由三个单独的句点和一些字距调整组成。
- 您无法指定 Unicode 编号,因为您正在运行
因此,遗憾的是,不可能独立于句号的凸起来设置省略号的凸起。
(LY1
编码包含适当的省略号,但我怀疑您是否想更改为此字体编码。)
关于时间符号:
D7
再次,指定 UTF-8 代码是不可能的,因为数字指的是字体的插槽(并且编码中的插槽处没有字形OT1
)。- 使用
\texttimes
或×
,您会收到Unknown slot number
警告,因为此字形不是 的一部分OT1
,但它包含在TS1
编码中。
因此,您要做的就是将encoding
密钥更改为TS1
:
\SetProtrusion
{encoding={TS1}, family={*}, series={*}, size={*}}
{
\texttimes ={,1000},% times symbol
}
可能需要注意的是,luatex
或的情况xetex
会简单得多,因为输入和输出都只有一种编码(Unicode),并且您可以简单地将符号指定为 和…
,×
或 和\textellipsis
,\texttimes
或"2026
和"00D7
。