根据《Die TeXnische Komödie》最近的一篇文章,这应该是让拉丁现代数学与 lualatex 和最新的 TeXLive 2011 协同工作的方法:
\documentclass[professionalfonts]{beamer}
\usepackage[english]{babel}
\usepackage{iftex}
\ifPDFTeX
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\else
\ifLuaTeX
\usepackage{luatextra}
\defaultfontfeatures{Ligatures=TeX,Numbers=OldStyle}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\fi
\fi
\newcommand{\ip}[2]{(#1, #2)}
\begin{document}
\begin{frame}{Speaker's Name}{About Our Next Speaker}
\LaTeX\ is good at typesetting mathematical formulas
like
\( x-3y + z = 7 \)
or
\( a_{1} > x^{2n} + y^{2n} > x' \)
or
\( \ip{A}{B} = \sum_{i} a_{i} b_{i} \).
\end{frame}
\end{document}
它可以工作(至少根据pdffonts
),但是unicode-math抱怨:
* unicode-math warning: "disable-beamer"
*
* Disabling beamer's math setup.
* Please load beamer with the [professionalfonts] class option.
这条信息被重复了十几次:
* fontspec warning: "icu-feature-not-exist-in-font"
*
* OpenType feature 'Numbers=OldStyle' (+onum) not available
* for font 'LatinModernMath',
* with script 'Math', and language 'Default'.
我的设置有什么问题?
编辑:Numbers=OldStyle
如果从 中 删除 ,fontspec 警告就会消失\defaultfontfeatures
。
编辑2:
我删除了该ifxetex
包并将\ifluatex
其更改为\ifLuaTeX
。
答案1
关于第一条消息,有一个 beamer 类选项professionalfont
,它设置了一个\if
,专门用于\ifbeamer@suppressreplacements
决定 beamer 是否会处理一些特殊的字体内容,或者是否有其他包可以代替它。 unicode-math
检查是否\if
已将其设置为 true,如果没有,它会发出警告,然后将其设置为 true。因此,加载unicode-math
可确保将其\if
设置为 true,但可能不会像设置类选项那样早完成。
但是,如果你做设置类选项,然后你会收到警告:
“professionalfont” 已过时。请改用字体主题“professionalfonts”
这里有两点需要注意。首先是 class 选项不是 professionalfonts
(正如unicode-math
声称的那样)但是professionalfont
。其次,它已经过时了。相反,你应该发出以下命令:
\usefonttheme{professionalfonts}
在你的序言中。什么这做的是:
\mode<presentation>{\beamer@suppressreplacementstrue}
所以它设置相同\if
,但是仅有的在presentation
模式。因此它在article
模式中被忽略。由于unicode-math
测试仅检查类是否为 beamer,而不检查包beamerarticle
,因此这是一致的。因此正确的前言是:
\documentclass{beamer}
\usefonttheme{professionalfonts}
\usepackage{unicode-math}
最后,应该如果中间那行被遗漏了,也不会有什么实际问题,因为它所做的就是unicode-math
检查类时所做的beamer
。因此中间那行的实际效果是抑制包的警告unicode-math
。
(安德鲁现在要离开并改变他的演讲的序言,因为他已经收到了professionalfonts
课程选项的警告,并且不明白为什么他会收到这个警告。)
答案2
\documentclass[professionalfont]{beamer}
\usepackage[english]{babel}
\usepackage{iftex,ifxetex}
\ifPDFTeX
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\else
\ifluatex
\usepackage{unicode-math}
\defaultfontfeatures{Ligatures=TeX,Numbers=OldStyle}
\setmathfont{Latin Modern Math}
\setsansfont{Linux Biolinum O}
\fi
\fi
\newcommand{\ip}[2]{(#1, #2)}
\begin{document}
\begin{frame}{Speaker's Name}{About Our Next Speaker}
\LaTeX\ is good at typesetting mathematical formulas
like
\( x-3y + z = 7 \)
or
\( a_{1} > x^{2n} + y^{2n} > x' \)
or
\( \ip{A}{B} = \sum_{i} a_{i} b_{i} \).
012345 $012345$ ff ffl ffi
\end{frame}
\end{document}