我需要将一些 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}