如何在主题(样式)文件中设置项目选项

如何在主题(样式)文件中设置项目选项

我已经看过了但这并没有帮助我解决我的问题。帖子建议定义另一个环境以免发生任何破坏,但由于我使用的是样式文件,所以这没有帮助。

我想要做的是\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}

在此处输入图片描述

相关内容