我已经看过了这但这并没有帮助我解决我的问题。这帖子建议定义另一个环境以免发生任何破坏,但由于我使用的是样式文件,所以这没有帮助。
我想要做的是\setlength{\itemsep}{\fill}
为我的 beamer 演示文稿中的所有 itemize 环境进行设置。我想通过以某种方式修改演示文稿主题文件中的所有 itemize、enumerate 和类似环境来实现这一点。
感谢您的意见。
这是一个最小的工作示例
\documentclass[xcolor=dvipsnames]{beamer}
\mode<presentation>
\usetheme{MyCustomTheme}
\begin{document}
\begin{frame}
\frametitle{No Title}
\begin{itemize}
\setlength{\itemsep}{\fill}
\item item 1
\item item 2
\item item 3
\end{itemize}
\end{frame}
\end{document}
如您所见,我已\setlength{\itemsep}{\fill}
在文件中使用了该命令。我希望将该命令放在某个位置,beamerthemeMyCustomTheme.sty
这样我就可以获得效果,而不必每次都执行该命令,也不必对使用此主题制作的每个演示文稿都执行该命令。
文件当前的内容beamerthemeMyCustomTheme.sty
为:
\mode<presentation>
%Loading essential fonts, changing default encoding to UTF-8 for symbol support
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
%Using a defailt outer theme to begin with
\useoutertheme[subsection=false]{smoothbars}
%Setting default structure
\definecolor{beamer@blendedblue}{RGB}{78,38,131}%
%Changing the colors of hyperlinks
\definecolor{links}{HTML}{2A1B81}
\hypersetup{colorlinks,linkcolor=blue!40!structure,urlcolor=links}
%Specifying colors and shadings for various aspects
\setbeamercolor{headline}{bg=white,fg=structure.fg}
\setbeamercolor{footline}{fg=white,bg=structure.fg!85!black}
\setbeamercolor{author in head/foot}{bg=white,fg=structure.fg!85!black}
\setbeamercolor{title in head/foot}{bg=white,fg=structure.fg!85!black}
\setbeamercolor{frametitle}{bg=white,fg=structure.fg!90}
\setbeamercolor{section in head/foot}{bg=white,fg=structure.fg}
\setbeamercolor{subsection in head/foot}{bg=white,fg=structure.fg}
\setbeamercolor{subtitle}{fg=black}
\setbeamercolor{title}{fg=structure,bg=white}
\mode
<all>
答案1
beamer
在文件中定义列表环境的全局结构beamerbaselocalstructure.sty
。在此文件中,默认定义由以下命令完成:% % List stuff %
\setlength\leftmargini {2em}
\setlength\leftmarginii {2em}
\setlength\leftmarginiii {2em}
\setlength \labelsep {.5em}
\setlength \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\def\@listi{\leftmargin\leftmargini
\topsep 3\p@ \@plus2\p@ \@minus2.5\p@
\parsep 0\p@
\itemsep3\p@ \@plus2\p@ \@minus3\p@}
\let\@listI\@listi
\def\@listii{\leftmargin\leftmarginii
\topsep 2\p@ \@plus1\p@ \@minus2\p@
\parsep 0\p@ \@plus\p@
\itemsep \parsep}
\def\@listiii{\leftmargin\leftmarginiii
\topsep 2\p@ \@plus1\p@ \@minus2\p@
\parsep 0\p@ \@plus\p@
\itemsep \parsep}
如果您想要改变\itemsep
,\fill
您可以简单地重新定义这些命令:
\def\@listi{\leftmargin\leftmargini
\topsep 3\p@ \@plus2\p@ \@minus2.5\p@
\parsep 0\p@
\itemsep\fill}
\let\@listI\@listi
\def\@listii{\leftmargin\leftmarginii
\topsep 2\p@ \@plus1\p@ \@minus2\p@
\parsep 0\p@ \@plus\p@
\itemsep \fill}
\def\@listiii{\leftmargin\leftmarginiii
\topsep 2\p@ \@plus1\p@ \@minus2\p@
\parsep 0\p@ \@plus\p@
\itemsep \fill}
与您的示例相关:
\documentclass[]{beamer}
\makeatletter
\def\@listi{\leftmargin\leftmargini
\topsep 3\p@ \@plus2\p@ \@minus2.5\p@
\parsep 0\p@
\itemsep\fill}
\let\@listI\@listi
\makeatother
\begin{document}
\begin{frame}
\frametitle{No Title}
\begin{itemize}
\item item 1
\item item 2
\item item 3
\end{itemize}
\end{frame}
\end{document}