Lualatex:€ 作为 utf8 字符无法被识别:为什么?

Lualatex:€ 作为 utf8 字符无法被识别:为什么?

我需要将一些 tex 文件作为更全局项目的一部分。其中一些全局项目必须使用 pdflatex 进行编译,另一些全局项目则使用 lualatex 进行编译,但部分内容相同。所有这部分文件都以 € 作为 utf8 字符。我想避免用 替换它们\texteuro

有没有办法让 lualatex 理解 € 为\texteuro

\documentclass[french]{article}
\RequirePackage{ifluatex}
\ifluatex
    \RequirePackage{fontspec}
    \RequirePackage{luacode}
\else
    \RequirePackage[utf8]{inputenc}
    \RequirePackage[T1]{fontenc}
\fi

\RequirePackage{fourier}

\begin{document}
36\,\texteuro % works with both pdflatex lualatex

36\,€ % doesn't work with lualatex
\end{document}

答案1

您可以使用newunicodechar包并定义

\newunicodechar{€}{\texteuro}

代码:

\documentclass{article}
\RequirePackage{ifluatex}
\ifluatex
    \RequirePackage{fontspec}
    \RequirePackage{luacode}
\else
    \RequirePackage[utf8]{inputenc}
    \RequirePackage[T1]{fontenc}
\fi
\let\hbar\hhhbar    %% without this I get a warning
\RequirePackage{fourier}

\usepackage{newunicodechar}
\newunicodechar{€}{\texteuro}

\begin{document}
36\,\texteuro % works with both pdflatex lualatex

36\,€ % doesn't work with lualatex
\end{document}

然后它应该可以在 pdflatex 和 lualatex 中工作。

答案2

\usepackage{fourier}只是忽略fontspec并使用了“经典”的 256 个字符字体系列。

您可以在 LuaLaTeX 中使用经典字体,无需加载fontspec,但是luainputenc

\documentclass{article}
\usepackage{ifluatex}
\usepackage[TS1,T1]{fontenc} % load TS1 so luainputenc will know
\ifluatex
  \usepackage{luacode}
  \usepackage[utf8]{luainputenc}
\else
  \usepackage[utf8]{inputenc}
\fi

\usepackage{fourier}

\begin{document}
36\,\texteuro % works with both pdflatex lualatex

36\,€ % doesn't work with lualatex
\end{document}

当然,这不会充分利用 LuaLaTeX 在字体方面的优势,但如果您希望您的文档能够用 LuaLaTeX 和 pdfLaTeX 处理(并且加载luacode没有多大意义),这无论如何都是不可能的。

可能更好的解决方案是使用 Utopia 的文本字体替换,例如最近的 Erewhon 字体:

\documentclass{article}
\usepackage{ifluatex}
\ifluatex
  \usepackage{luacode}
  \usepackage{fourier}
  \usepackage{fontspec}
  \setmainfont{Erewhon}
\else
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{fourier}
\fi


\begin{document}
36\,\texteuro % works with both pdflatex lualatex

36\,€ % doesn't work with lualatex

Some math $a+\mathrm{a}=\int_{0}^{1} f(x)\,dx$
\end{document}

在此处输入图片描述

答案3

由于已经验证,我还在评论中提出了我的解决方案。

\documentclass{article}
\usepackage{fourier}
\catcode`\€=\active
\def€{\texteuro} 
\begin{document}
36 €
\end{document}

在此处输入图片描述

相关内容