microtype:自定义省略号和乘法符号的凸起

microtype:自定义省略号和乘法符号的凸起

我无法使用 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,允许使用以下输入法:

    1. A(7 位) ASCII 范围内的字符(如)
    2. 如果字形在输入编码中定义,您还可以使用 8 位(例如Ä)和 UTF-8 字符(例如)。
    3. 为了保持便携性,您可以使用文本命令(例如\texttimes)。
      • 无论如何,字形必须存在于字体中,即必须在输出编码中定义。
    4. 最后,您可以直接引用字体的插槽号(即输出编码),例如,这是创建连字设置的唯一方法。
  • 对于luatexxetex前三点是一样的,但是最后一点有区别,并且还有一种可能性:

    1. 数字不是指字体的内部插槽,而是指 Unicode 数字(例如,"2026代表省略号)。
    2. 此外,您还可以指定一个字形名称,前缀为/。这些名称可能是字体特定的,必须通过检查字体本身来查找。这对于无法通过其他方式访问的装饰尤其有用。

那么你的情况出了什么问题?

  1. 关于省略

    • 您无法指定 Unicode 编号,因为您正在运行pdftex,其中编号指的是字体编码(如上文第 4 点所述)。由于OT1编码仅包含 128 个字符,因此编号超出范围。
    • 原则上,如果省略号字形确实存在于字体中,则指定符号本身 ( ) 或相应的文本命令 ( \textellipsis-- not \dots) 都可以工作。但是,编码中根本没有省略号OT1,而是由三个单独的句点和一些字距调整组成。

因此,遗憾的是,不可能独立于句号的凸起来设置省略号的凸起。

LY1编码包含适当的省略号,但我怀疑您是否想更改为此字体编码。)

  1. 关于时间符号

    • 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

相关内容