Unicode 字符 ✔ (U+2714) 未设置为使用 LaTeX 错误,使用 pdfTeX 构建时出现此错误

Unicode 字符 ✔ (U+2714) 未设置为使用 LaTeX 错误,使用 pdfTeX 构建时出现此错误

对于测试用例:

\documentclass{article}
\usepackage{ifxetex}
\ifxetex
    \usepackage{polyglossia}
    \setdefaultlanguage{english}
    \defaultfontfeatures{Ligatures={TeX}}
    \setmainfont[BoldFont=cmunbx.otf, ItalicFont=cmunti.otf, BoldItalicFont=cmunbi.otf]{cmunrm.otf}
    \setsansfont{CMU Sans Serif}
    \setmonofont{CMU Typewriter Text}
\else
    \usepackage[T1]{fontenc}
    \usepackage{textcomp}
    \usepackage[utf8]{inputenc}
\fi

\begin{document}
\section{Main}
Euro (€): ^^e2^^82^^ac\par
Heavy Check Mark (U+2714): ^^e2^^9c^^94\par
% ✔
\end{document}

收到错误:

Unicode character ✔ (U+2714) not set up for use with LaTeX. Heavy Check Mark (U+2714): ^^e2^^9c^^94

在构建PDFLaTeX

这里有很多类似的问题,但即使是最接近的解决方案(pdflatex 输出中的 Unicode 字符使用十六进制代码,无需 UTF-8 输入) 不起作用。如何修复?

使用以下方式构建时没有出现此类错误西拉特克斯(尽管它绘制的字符不正确,所以我们也欢迎提出如何修复它的建议)。

答案1

希望有一个可以与 XeLaTeX 一起编译的文件pdflatex,但恐怕通常是没希望的。

无论如何,XeLaTeX 不接受诸如此类的输入^^e2^^82^^ac;实际上它是接受的,但结果似乎不是您所期望的。

您可以设置缺失符号的替换。我还重新定义了 的欧元符号pdflatex,因为使用欧洲现代符号得到的符号很“有趣”。

\documentclass{article}

% general packages
\usepackage{iftex}
\usepackage{newunicodechar}

% specific packages
\iftutex
  % XeLaTeX or LuaLaTeX
  \usepackage{polyglossia}
\else
  % pdflatex
  \usepackage[T1]{fontenc}
  \usepackage{pifont,eurosym}
\fi

% settings

\iftutex
  % XeLaTeX or LuaLaTeX
  \setdefaultlanguage{english}
  %\defaultfontfeatures{Ligatures={TeX}}
  \setmainfont{cmun}[
    Extension=.otf,
    UprightFont=*rm,
    BoldFont=*bx,
    ItalicFont=*ti,
    BoldItalicFont=*bi
  ]
  \setsansfont{CMU Sans Serif}
  \setmonofont{CMU Typewriter Text}
  \newfontface{\extrasymbols}{FreeSerif}[Extension=.otf]
  \newunicodechar{✔}{{\extrasymbols ✔}}
\else
    %\usepackage{textcomp}
    %\usepackage[utf8]{inputenc}
    \newunicodechar{✔}{\ding{52}}
    \newunicodechar{€}{\euro}
\fi

\begin{document}

Euro (U+20AC): €

Heavy Check Mark (U+2714): ✔

\end{document}

使用 XeLaTeX 输出

在此处输入图片描述

输出pdflatex

在此处输入图片描述

相关内容