此问题需要非默认字体。我从 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')