问题

问题

此问题需要非默认字体。我从 TikZ、xstring 和 xelatex 中得到了一些不寻常的副作用。(我通常使用可能不会共享的字体。我选择 THE MORGUE 只是为了复制副作用。)

将产品设置为“苹果”可获得:

Missing character: There is no 1 in font [../../Resources/Fonts/MORGUE]/OT:mapping=tex-text;!

当将产品设置为“橙色”时,产量为:

Missing character: There is no   in font [../../Resources/Fonts/MORGUE]/OT:mapping=tex-text;! Missing character: There is no 1 in font [../../Resources/Fonts/MORGUE]/OT:mapping=tex-text;!

问题

  • 从哪里来的1
  • 从哪里来的
  • 为什么会发生这种情况?这可能暗示该案件将影响结果。

代码

注意先将 MORGUE.ttf 下载到您的文档(本地)文件夹中(我将下载的“THE MORGUE.ttf”重命名为 MORGUE.ttf)。

\documentclass{article}
\usepackage{xparse}
\usepackage{fontspec}
\setmainfont[Path = ./]{MORGUE.ttf}%  http://dl.dafont.com/dl/?f=the_morgue
\usepackage{xstring}
\usepackage{tikz}

% Init Vars
\def\thisproduct{???\typeout{Error: Missing thisproduct or invalid product name}}%init

% Product Selector
\NewDocumentCommand{\setproduct}{ m }{%
% Define Products
  \IfEq{#1}{apple}{%
    \def\thisproduct{edition apple}
  }{}%
  \IfEq{#1}{ORANGE}{%
    \def\thisproduct{edition orange}
  }{}%
}%

\DeclareDocumentCommand{\trythis}{ }{% Imitates original definition
\begin{tikzpicture}
  \node {\thisproduct{}};
\end{tikzpicture}
}%

\begin{document}
%\setproduct{apple}
\setproduct{ORANGE}
\trythis
\end{document}

笔记

答案1

1 是页码,字体显然不包含数字,因此出现警告是意料之中的。(无论哪种情况,我都只会得到缺失的字符 1,而不是不可见的字符)

答案2

心理健康补充答案

寻找不可中断的空格可能很麻烦,因为它们是不可见的。(我xxd第一次使用 unix 工具的十六进制转储来找到它)。我不知道它是如何进入我的代码的。我无法想象我不小心输入了SHIFT CTRL u 0 0 a 0。它可能是通过将文本从其他来源(如 PDF)复制到我的源文件中而来的。

首先确保所有文件都是 utf8 编码

或 ASCII,因为为了兼容,ascii 字符的第一个二进制表示与 utf8 重叠。

对正在处理的内容进行目视检查

find -iname '*.tex'-o -iname '*.sty' -print0 | xargs -0 file -i

转换编码不正确的文件

iconv -f (from encoding) -t (to encoding) 

找到小虫子(不可破坏的空间)

grep -PIrl "["$'\xc2\xa0'$"]"

用普通空格替换它们

这似乎打破了: perl -pe 's/\xc2\xa0/\x20/g' $(grep -IPrle "["$'\xc2\xa0'$"]"

perl -i -pe 's/\xc2\xa0/\x20/g' $(find -iname '*.tex' -o -iname '*.sty')

笔记

相关内容