![如何在 Beamer 演示文稿中为某些列表获取更大的项目符号?](https://linux22.com/image/238792/%E5%A6%82%E4%BD%95%E5%9C%A8%20Beamer%20%E6%BC%94%E7%A4%BA%E6%96%87%E7%A8%BF%E4%B8%AD%E4%B8%BA%E6%9F%90%E4%BA%9B%E5%88%97%E8%A1%A8%E8%8E%B7%E5%8F%96%E6%9B%B4%E5%A4%A7%E7%9A%84%E9%A1%B9%E7%9B%AE%E7%AC%A6%E5%8F%B7%EF%BC%9F.png)
我正在编写一个 Beamer 演示文稿,其中有些幻灯片使用普通字体,而有些幻灯片使用大字体。当我使用itemize
大字体环境时,项目符号(小球)不会变大,结果并不美观。
我怎样才能制作带有大项目符号的逐项列表,但只针对那些具有大文本的列表,而不是针对整个演示文稿(即,不全局更改投影仪模板)?
答案1
项目化符号的字体大小在定义中是硬编码的(查看 beamerthemedefault.sty 或 beamerbaseauxtemplates.sty)。
% Itemize items, circle
\defbeamertemplate{itemize item}{circle}{\small\raise0.5pt\hbox{\textbullet}}
\defbeamertemplate{itemize subitem}{circle}{\footnotesize\raise0.5pt\hbox{\textbullet}}
\defbeamertemplate{itemize subsubitem}{circle}{\footnotesize\raise0.5pt\hbox{\textbullet}}
beamer 手册的第 16.3 节“更改用于演示文稿不同元素的模板”解释了如何更改它。似乎可以定义一个带有字体大小选项的模板。我不知道该怎么做,但一个快速的解决方案是重新声明带有新硬编码大小的 itemize 符号,例如
\documentclass{beamer}
\begin{document}
\begin{frame}[t]{}
\begin{itemize}
\item First item
\item Second item
\end{itemize}
\bigskip
{\setbeamertemplate{itemize item}{\Large\raise1.25pt\hbox{\donotcoloroutermaths$\blacktriangleright$}}
\begin{itemize}
\item Second first item
\item Second second item
\end{itemize}
}
\bigskip
\begin{itemize}
\item Third first item
\item Third second item
\end{itemize}
\end{frame}
\end{document}
编辑:将球更换为马德里主题。
马德里主题 ( beamerthemeMadrid.sty
) 使用\useinnertheme[shadow]{rounded}
来声明\setbeamertemplate{items}[ball]
。所以我们需要在 中寻找球beamerbaseauxtemplates.sty
。简而言之,在这个文件中定义并使用了一些“球体”。您可以自己定义,
\documentclass{beamer}
\usetheme{Madrid}
\makeatletter
\pgfdeclareradialshading[bg,parent.bg]{mysphere}{\pgfpoint{0.15cm}{0.15cm}}%
{color(0cm)=(bg!15);
color(0.15cm)=(bg!75);
color(0.3cm)=(bg!70!black);
color(0.301cm)=(parent.bg)}
\defbeamertemplate{itemize item}{myball}%
{\raise-0.2cm\beamer@usesphere{item projected}{mysphere}}
\makeatother
\begin{document}
\begin{frame}[t]{Frame title}
\begin{itemize}
\item First item
\begin{itemize}
\item first subitem
\item second subitem
\end{itemize}
\item Second item
\end{itemize}
\bigskip
{\setbeamertemplate{itemize item}[myball]
\begin{itemize}
\item Third first item
\item Third second item
\end{itemize}
}
\end{frame}
\end{document}
结果是
我认为球体大小与字体大小有关,因为它们是使用 ex 单位声明的,但我无法仅通过字体大小声明来更改其大小。也许其他人可以帮助我们。
答案2
不幸的是,@Ignasi 的球体尺寸改变解决方案缺乏混叠,因此球体的边缘很粗糙,如屏幕截图所示。为了解决这个问题,我修改了原始定义,在序言中beamerbaseauxtemplates.sty
添加了以下代码:
% * original ball definition in beamerbaseauxtemplates.sty
%\pgfdeclareradialshading[bg,parent.bg]{bigsphere}{\pgfpoint{-0.1849315ex} {.2260273ex}}%
%{%
% color(0cm)=(bg!15);
% color(0.1643835ex)=(bg!75);
% color(0.3287671ex)=(bg!70!black);
% color(0.4520547ex)=(bg!50!black);
% color(0.53ex)=(parent.bg)}
% modified by 1.4x multiplication factor
\pgfdeclareradialshading[bg,parent.bg]{bigsphere}{\pgfpoint{-0.2589041ex}{0.3164382ex}}%
{%
color(0cm)=(bg!15);
color(0.2301369ex)=(bg!75);
color(0.4602739ex)=(bg!70!black);
color(0.6328766ex)=(bg!50!black);
color(0.742ex)=(parent.bg)}
\defbeamertemplate{itemize item}{myball}{\raise0.2pt\beamer@usesphere{item projected}{bigsphere}}
\setbeamertemplate{itemize item}[myball]
现在所有物品子弹球都比默认模板大 1.4 倍,并且边缘光滑。
答案3
如果需要大子弹(备用或球形),只需对枚举进行一点修改即可
\documentclass[11pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usetheme{Madrid}
\begin{document}
\begin{frame}{Bullets}
\begin{enumerate}
\item Item One
\item Item Two
\item Item Three
\item Item Four
\end{enumerate}
\begin{enumerate}[.]
\item Item One
\item Item Two
\item Item Three
\item Item Four
\end{enumerate}
\begin{enumerate}[....]
\item Item One
\item Item Two
\item Item Three
\item Item Four
\end{enumerate}
\begin{itemize}
\item Item One
\item Item Two
\item Item Three
\item Item Four
\end{itemize}
\end{frame}
\end{document}
结果是
答案4
作为一个快速而肮脏的破解方法,您可以使用当前字体大小缩放球体:
\documentclass{beamer}
\usetheme{Warsaw}
\makeatletter
\def\beamer@usesphere#1#2{\hbox{\usebeamercolor{#1}\scalebox{0.1}{\scalebox{\f@size}{\normalsize\pgfuseshading{#2}}}}}
\makeatother
\begin{document}
\begin{frame}[t]
\frametitle{Frame title}
\begin{itemize}
\item First item
\item Second item
\end{itemize}
\bigskip
{\Huge
\begin{itemize}
\item Second first item
\item Second second item
\end{itemize}
}
\bigskip
\begin{itemize}
\item Third first item
\item Third second item
\end{itemize}
\end{frame}
\end{document}