Beamer 子弹与 Alegreya Sans

Beamer 子弹与 Alegreya Sans

我发现 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}

pdftex 的输出

我用 得到了相同的结果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}

xetex 的输出

在 中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}

luatex 的输出

知道为什么会发生这种情况吗?无论我使用 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}

在此处输入图片描述

相关内容