缺失字符:字体(xelatex)中没有 │ (U+2502)

缺失字符:字体(xelatex)中没有 │ (U+2502)

我正在加载的包裹:

\usepackage{unicode-math}
\usepackage{ucharclasses}
\usepackage{textcomp}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{tikz}
\usepackage{xpatch}
\usepackage{imakeidx}
\usepackage{xltxtra}
\setmainfont{TeX Gyre Schola}
\setmathfont{TeX Gyre Schola Math}
\setmathfont{TeX Gyre Termes Math}
\setmathfont{Latin Modern Math}
\setmathfont{TeX Gyre Bonum Math}
\setmathfont{TeX Gyre Pagella Math}

\usepackage{geometry}
\geometry{%
   twoside
  ,bindingoffset=1cm
  ,top=1.5cm
  ,bottom=0.5cm
  ,left=0.9cm
  ,right=0.6cm
  ,asymmetric
}

%% Leave me LAST!
\usepackage{hyperref}
\hypersetup{
    colorlinks,
    citecolor=black,
    filecolor=black,
    linkcolor=blue,
    urlcolor=black
}

我的设置:我从网上下载一些包含 html 格式块(例如give me £12 and 1 ≤ x!等)的数据,然后我将其传递pandoc给转换相同的块latex。我将这些块放在我的模板latex中并在其上运行。需要说明的是:模板是我的,只将一些 html 块转换为 latex,它不会生成整个 latex 文档。latexxelatexpandoc

html£被转换为可以处理的pandocunicode 字符xelatex(我更希望将它们全部作为 tex-math 符号,因为我真的很讨厌在我的源文档中乱放除“外语”语言以外的 unicode)。

上述设置的问题是,unicode 字符(如≤ (U+2264)、 和 )| (U+2502)无法被 找到xelatex。我已设法加载不同的字体(按照缺少字符:字体 cmss10 中没有 ℕ!(我的包裹在这篇文章的开头展示)和现在xelatex可以识别除 | (U+2502)之外的大多数 Unicode 字符。我得到:

Missing character: There is no │ (U+2502) in font TeX Gyre Schola/OT:script=lat
n;language=dflt;mapping=tex-text;!

更新:感谢大家的评论,上述问题已经解决。但是现在我在不同的角色上遇到了同样的问题。以下是脚本:

\documentclass[12pt,a4paper]{book}
%\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Schola}
\setmathfont{TeX Gyre Schola Math}

\usepackage{newunicodechar}
%\newunicodechar{^^^^1D45A}{a} % this does not recognise hex

\begin{document}
this 

答案1

您正在使用的 TeX Gyre Math 字体确实有 U+2502

在此处输入图片描述

\documentclass{article}
\usepackage{unicode-math}
% only if you need it \usepackage{ucharclasses}
% not with xetex \usepackage{textcomp}
% avoid, better to just use fontspc, already included by unicode-math \usepackage{xltxtra}
\setmainfont{TeX Gyre Schola}
\setmathfont{TeX Gyre Schola Math}
% this over-writes the prevous setting \setmathfont{TeX Gyre Termes Math}
% this over-writes the prevous setting \setmathfont{Latin Modern Math}
% this over-writes the prevous setting \setmathfont{TeX Gyre Bonum Math}
% this over-writes the prevous setting \setmathfont{TeX Gyre Pagella Math}



\begin{document}

abc $x\mid y$ $x ^^^^2502 y$  [^^^^2502] [|]

\end{document}

U+2502 是一个方框绘制字符,它实际上不适合用于文本,可能只需用 | 替换即可,但上面使用的文本产生了

Missing character: There is no │ (U+2502) in font TeX Gyre Schola/OT:script=lat
n;language=dflt;mapping=tex-text;!

如果您无法修复源而不使用它,则可以使用字符类重新映射它,或者更简单地使用newunicodechar

在此处输入图片描述

\documentclass{article}
\usepackage{unicode-math}
% only if you need it \usepackage{ucharclasses}
% not with xetex \usepackage{textcomp}
% avoid, better to just use fontspc, already included by unicode-math \usepackage{xltxtra}
\setmainfont{TeX Gyre Schola}
\setmathfont{TeX Gyre Schola Math}
% this over-writes the prevous setting \setmathfont{TeX Gyre Termes Math}
% this over-writes the prevous setting \setmathfont{Latin Modern Math}
% this over-writes the prevous setting \setmathfont{TeX Gyre Bonum Math}
% this over-writes the prevous setting \setmathfont{TeX Gyre Pagella Math}

\usepackage{newunicodechar}
\newunicodechar{^^^^2502}{|}

\begin{document}

abc $x\mid y$ $x ^^^^2502 y$  [^^^^2502] [|]

\end{document}

相关内容