我在 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
单独加载。(并且,对于该类beamer
,amsmath
包默认会加载...)
答案2
您可以newunicodechar
在任何引擎中使用该包:
\usepackage{newunicodechar}
\newunicodechar{−}{-} % U+2212
但是,如果您想在 LuaLaTeX 中使用 Unicode 输入,那么最好unicode-math
使用professionalfonts
选项进行加载beamer
。