Using the enumitem
package with beamer
is not a good idea; for example, just by loading enumitem
, the default beamer font and color specifications for description
are lost; moreover \setbeamercolor
and \setbeamerfont
will have no effect on description item
; even worst, the enumitem package will also interfere with the beamer
layout for itemize
and enumerate
; in fact, it will produce errors for the enumerate
environment (See example at the bottom).
In the following example I defined a Ldescription
environment based on the beamer definition of standard description
; since the new definition follows the "beamer way", it will behave as expected (it's overaly aware, for exampe, and respects the color and font templates) and will give you the desired layout (feel free to adjust the lengths according to your needs):
\documentclass{beamer}
\usepackage{lipsum}
\makeatletter
\def\Ldescription{%
\@ifnextchar[{\beamer@testforospec}{\beamer@descdefault\beamer@descriptionwidth\@@Ldescription}%
}
\def\beamer@testforospec[{\@ifnextchar<{\beamer@scandefaultospec[}{\@Ldescription[}}%
\def\beamer@scandefaultospec[#1]{\def\beamer@defaultospec{#1}\Ldescription}
\def\@Ldescription[#1]{%
\setbox\beamer@tempbox=\hbox{\def\insertdescriptionitem{#1}
\usebeamertemplate**{description item}}%
\beamer@descdefault\wd\beamer@tempbox\@@description%
}%
\def\@@Ldescription{%
\beamer@descdefault35pt%
\list
{}
{\labelwidth\beamer@descdefault\leftmargin2.8em\let\makelabel\beamer@Ldescriptionitem}%
\beamer@cramped%
\raggedright
\beamer@firstlineitemizeunskip%
}
\def\endLdescription{\ifhmode\unskip\fi\endlist}
\long\def\beamer@Ldescriptionitem#1{%
\def\insertdescriptionitem{#1}%
\hspace\labelsep{\parbox[b]{\dimexpr\textwidth-\labelsep\relax}{%
\usebeamertemplate**{description item}%
}}}
\makeatother
\begin{document}
\begin{frame}
\begin{Ldescription}
\item<1->[very very very very long item] \lipsum[2]
\item<2,4>[short titem] description 2
\item<3->[another very very very very long item] description 3
\item<4->[short item] description 4
\end{Ldescription}
\end{frame}
\end{document}
An image of the fourth frame:
Why enumitem shouln't be used with beamer
Processing the following code:
\documentclass{beamer}
%\usepackage{enumitem}
\setbeamercolor{description item}{fg=olive!80!black}
\setbeamerfont{description item}{size=\footnotesize}
\begin{document}
\begin{frame}
\begin{description}
\item[item] description
\end{description}
\begin{itemize}
\item description
\end{itemize}
\end{frame}
\end{document}
produces the following (expected) output:
Now uncomment-out the line loading enumitem
. reprocess and now you'll get the following undesired result:
Now, try this simple document:
\documentclass{beamer}
\usepackage{enumitem}
\begin{document}
\begin{frame}
\begin{enumerate}
\item test
\end{enumerate}
\end{frame}
\end{document}
and you'll receive:
! TeX capacity exceeded, sorry [grouping levels=255].
\labelenumi ->{
\labelenumi }
l.10 \end{frame}
! ==> Fatal error occurred, no output PDF file produced!
The moral is clear: enumitem
and beamer
a are incompatible. Perhaps using the loadonly
package option to create own lists could be safe:
\usepackage[loadonly]{enumitem}
There are no chapter
, section
or subsection
environments. Don't use \begin{chapter}
and similar constructions, even if they appear to work.
You can make the decision about the numbering automatic: if the section counter is zero, as it is after \chapter
, the theorems will be numbered “chapter.theorem”, otherwise “chapter.section.theorem”. No manual resetting is needed for chapters where theorems are inside sections.
I removed the setting to \thm@space@setup
because I don't really understand what they're supposed to do.
\documentclass{scrreprt}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amsthm}
\theoremstyle{plain}% default
\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}
\newtheorem{cor}[thm]{Corollary}
\newtheorem{prop}[thm]{Proposition}
\theoremstyle{definition}
\newtheorem{defn}[thm]{Definition}
\newtheorem{conj}{Conjecture}[section]
\newtheorem{exmp}{Example}[section]
\theoremstyle{remark}
\newtheorem*{rem}{Remark}
\newtheorem*{note}{Note}
\newtheorem{case}{Case}[thm]
\makeatletter
\@addtoreset{thm}{chapter}
\makeatother
\renewcommand{\thethm}{%
\ifnum\value{section}=0
\thechapter.%
\else
\thesection.%
\fi
\arabic{thm}%
}
\renewcommand{\thecase}{\arabic{case}}
\begin{document}
\chapter{chap title}
\section{title blah}
\begin{thm}
hello
\end{thm}
\subsection{title blahh}
\begin{lem}
hi
\end{lem}
\chapter{chap title 2}
\begin{thm}
hello again
\end{thm}
\end{document}
Note how it's easier to reset the case
number with every theorem.
Best Answer
I have no idea why you would do this using a
description
environment and not anenumerate
(as in the other answer), but who am I to question? :)In the code below, I've borrowed some ideas from Enumerated description list and have introduced a couple of new counters
descriptcounti
anddescriptcountii
; if you plan to have deeper lists, just keep going (descriptcountiii
, etc)Following the comments, you can easily apply this to a custom description, say
mydesc
, by using\newlist