\DeclareUnicodeCharacter{2212}{-} 不适用于 LuaLatex 编译器

\DeclareUnicodeCharacter{2212}{-} 不适用于 LuaLatex 编译器

我在 overleaf 上可以切换我使用的编译器。我正在制作一张海报,需要使用 LuaLatex 作为编译器。但是,“\DeclareUnicodeCharacter{2212}{-}”行导致“未定义的控制序列”错误。

我将举一个例子来说明我的观点。

\documentclass[pt]{beamer}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\usepackage{upgreek}
\usepackage{mathtools}
\usetheme{Berlin}

\DeclareUnicodeCharacter{2212}{-}

\begin{document}
\begin{frame}{Example}
    The equation is
    \begin{equation}
    y=mx+c
    \end{equation}
\end{frame}
\end{document}

当我选择“pdfLatex”编译器时,编译正常,但当我使用“LuaLatex”编译器时,编译就会中断。是否有其他可用于 LuaLatex 编译器的替代行(\DeclareUnicodeCharacter{2212}{-})?谢谢。

答案1

我建议您修改您的序言,以便您可以使用 pdfLaTeX 或 LuaLaTeX 编译该文档。

\documentclass[pt]{beamer}
\usetheme{Berlin}
\usepackage[brazil]{babel}

\usepackage{iftex} % for '\iftutex' and related conditionals
\iftutex
   \usepackage{fontspec} % optional
\else
   \usepackage[T1]{fontenc}
   %\usepackage[utf8]{inputenc} % 'utf8' is the default nowadays
   \DeclareUnicodeCharacter{2212}{-}
   \usepackage{upgreek}
\fi

\usepackage{mathtools} % no need to load 'amsmath' separately

\begin{document}
\begin{frame}{Example}
    The equation is
    \begin{equation}
    y=mx-c
    \end{equation}
\end{frame}
\end{document}

使用此设置,仅当使用 pdfLaTeX 编译文档时才会加载inputenc和包。fontenc

另外:由于mathtools包会自动加载amsmath,因此无需amsmath单独加载。(并且,对于该类beameramsmath包默认会加载...)

答案2

您可以newunicodechar在任何引擎中使用该包:

\usepackage{newunicodechar}

\newunicodechar{−}{-} % U+2212

但是,如果您想在 LuaLaTeX 中使用 Unicode 输入,那么最好unicode-math使用professionalfonts选项进行加载beamer

相关内容