我感觉我在这里绕了一大圈。我正在使用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}{\--}
}
查看问题的后续内容