beamer 更改所有项目符号

beamer 更改所有项目符号

我感觉我在这里绕了一大圈。我正在使用ifthen一些其他机器,包括完整性。tex 中是否有“所有项目”的内容?请!! HERE !!在下面查找。

%
% Control where bullet points go, depending on if we are in a beamer block or not
%
\usepackage{ifthen}
\newboolean{insideBlock}
\setboolean{insideBlock}{false}
% flag we're in a beamer block
\BeforeBeginEnvironment{block}{\setboolean{insideBlock}{true}}
\AfterEndEnvironment{block}{\setboolean{insideBlock}{false}}
% if in beamer block, indent the items in itemize
\BeforeBeginEnvironment{itemize}{
  \ifthenelse{\boolean{insideBlock}}{
    \setlength{\leftmargini}{2em}
  }{
    \setlength{\leftmargini}{0em}
  }
}
% Use -- for bullet points inside beamer blocks
\AtBeginEnvironment{itemize}{
  \ifthenelse{\boolean{insideBlock}}{
    % !! HERE !!
    % !! HERE !!
    % !! HERE !!
    \setbeamertemplate{itemize item}{\--}
    \setbeamertemplate{itemize subitem}{\--}
    \setbeamertemplate{itemize subsubitem}{\--}
    \setbeamertemplate{itemize subsubsubitem}{\--}
    \setbeamertemplate{itemize subsubsubsubitem}{\--}
  }{}
}

上面的代码可以工作,但我觉得还有更好的解决方案。我尝试了不同的变体,\renewcommand\labelitemi{--}但我对 tex 的理解不够深入,不知道我现在在做什么 x0

澄清:我只想改变这一点里面环境block,而不是整个文档。

感谢任何建议/更好的选择,我并不打算改变最高级别itemize,但可以想象下面的情况可能会中断。

答案1

我只需将其与主题用于其项目的形状挂钩即可。例如,对于使用球体的主题:

\documentclass{beamer}
\usetheme{Darmstadt}

\makeatletter
\AtBeginEnvironment{block}{%
    \def\beamer@usesphere#1#2{%
      \hbox{\usebeamercolor{#1}\normalsize--}}
 }
\makeatother

\begin{document}

\begin{frame}
    \begin{block}{title}
        \begin{itemize}
            \item bla
            \begin{itemize}
                \item blub
            \end{itemize}
        \end{itemize}
    \end{block}

    \begin{itemize}
        \item bla
        \begin{itemize}
            \item blub
        \end{itemize}       
    \end{itemize}
\end{frame} 

\end{document}

在此处输入图片描述

答案2

打脸. 解决方案确实简单得多

% Use -- for bullet points inside beamer blocks
\AtBeginEnvironment{itemize}{
  \ifthenelse{\boolean{insideBlock}}{
    \setbeamertemplate{itemize items}{\--}
  }{}
}

物品s使用复数而不是单数项将会全部命中。这是主题实际设置的方式(在我的情况下,.dtx创建样式的方式\setbeamertemplate{itemize items}{\textbullet})。这只会根据需要itemize在s 中执行此操作。block

更新:或者更简单

\AtBeginEnvironment{block}{
  \setbeamertemplate{itemize items}{\--}
}

查看问题的后续内容

相关内容