![Beamer 子弹与 Alegreya Sans](https://linux22.com/image/285092/Beamer%20%E5%AD%90%E5%BC%B9%E4%B8%8E%20Alegreya%20Sans.png)
我发现 Alegreya Sans 特别适合用于演示,部分原因是它有真正的斜体,而不仅仅是倾斜的形状。但是,逐项化是有问题的。
虽然默认的三角形项目符号beamer
可以按预期工作,但是圆形、球形和方形选项会产生微型项目符号,而后两者比应有的要低。
例如:
\documentclass{beamer}
\usefonttheme{professionalfonts}
\usepackage[T1]{fontenc}
\usepackage{AlegreyaSans}
\begin{document}
\begin{frame}
\frametitle{Tiny Bullets}
\structure{default}
\begin{itemize}
\item An item.
\end{itemize}
\structure{circle}
\setbeamertemplate{itemize items}[circle]
\begin{itemize}
\item An item.
\end{itemize}
\structure{ball}
\setbeamertemplate{itemize items}[ball]
\begin{itemize}
\item Another item.
\end{itemize}
\structure{square}
\setbeamertemplate{itemize items}[square]
\begin{itemize}
\item Yet another item.
\end{itemize}
\end{frame}
\end{document}
我用 得到了相同的结果luatex
,但xetex
只在圆圈上出错:
\documentclass{beamer}
\usepackage{fontspec}
\usefonttheme{professionalfonts}
\setsansfont{Alegreya Sans}
\begin{document}
\begin{frame}
\frametitle{Tiny Bullets}
\structure{default}
\begin{itemize}
\item An item.
\end{itemize}
\structure{circle}
\setbeamertemplate{itemize items}[circle]
\begin{itemize}
\item An item.
\end{itemize}
\structure{ball}
\setbeamertemplate{itemize items}[ball]
\begin{itemize}
\item Another item.
\end{itemize}
\structure{square}
\setbeamertemplate{itemize items}[square]
\begin{itemize}
\item Yet another item.
\end{itemize}
\end{frame}
\end{document}
在 中luatex
,我可以用来luacode
访问字体的装饰,其中包括圆形和正方形:
\documentclass{beamer}
\usepackage{fontspec,luacode}
% http://tex.stackexchange.com/a/120762/7883
\begin{luacode}
documentdata = documentdata or { }
local stringformat = string.format
local texsprint = tex.sprint
local slot_of_name = luaotfload.aux.slot_of_name
documentdata.fontchar = function (chr)
local chr = slot_of_name(font.current(), chr, false)
if chr and type(chr) == "number" then
texsprint
(stringformat ([[\char"%X]], chr))
end
end
\end{luacode}
\def\fontchar#1{\directlua{documentdata.fontchar "#1"}}
\usefonttheme{professionalfonts}
\setsansfont{Alegreya Sans}
\defbeamertemplate{itemize item}{cornament}{\fontchar{circle1}}
\defbeamertemplate{itemize item}{sornament}{\fontchar{square1}}
\begin{document}
\begin{frame}
\frametitle{Custom Bullets}
\structure{circle}
\setbeamertemplate{itemize item}[cornament]
\begin{itemize}
\item An item.
\end{itemize}
\structure{square}
\setbeamertemplate{itemize item}[sornament]
\begin{itemize}
\item Another item.
\end{itemize}
\end{frame}
\end{document}
知道为什么会发生这种情况吗?无论我使用 TeX Live 中提供的 OpenType 字体(出于未知原因,软件包作者通过转换谷歌的 Truetype 字体创建了它们)还是直接从铸造厂。
答案1
使用
\documentclass{beamer}
\usefonttheme{professionalfonts}
\usepackage[T1]{fontenc}
\usepackage{AlegreyaSans}
\AtBeginDocument{%
\fontdimen5\font=\fontcharht\font`\x}
\begin{document}
[ ... ]
对于圆圈,定义一个自己的mycircle
模板并使用它来代替“圆圈”
\defbeamertemplate{itemize item}{mycircle}{\scalebox{10}{\raisebox{-0.5ex}{\textbullet}}}%% Value 10 only for demo :-)
\defbeamertemplate{itemize subitem}{mycircle}{\huge\raisebox{-0.5ex}{\textbullet}}
\defbeamertemplate{itemize subsubitem}{mycircle}{\huge\raisebox{-0.5ex}{\textbullet}}
然后 \structure{circle}
\setbeamertemplate{itemize items}[mycircle]
\begin{itemize}