
\documentclass[xcolor=table ]{beamer}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\title[Your Short Title]{Your Presentation}
\author{You}
\institute{Where You're From}
\date{Date of Presentation}
\begin{document}
\begin{frame}{Introduction}
\begin{itemize}
\item <1-> Your introduction goes here!
\item <2> Use \texttt{itemize} to organize your main points.
\end{itemize}
\end{frame}
\begin{frame}
\begin{itemize}
\item Your introduction goes here!
\item {\colorbox{yellow} {Use \texttt{itemize} to organize your main points.}}
\end{itemize}
\end{frame}
\end{document}
Этот MWE показал детализированный список. После отображения двух последовательных элементов я ожидаю, что второй элемент будет выделенна третьем этапе. Я добился этого дублированием кадра. Можно ли этого добиться наложением без ручного дублирования кадра
решение1
Простейшее решение — сделать \only
часть \colorbox{yellow}
кода условной:
\begin{frame}{Introduction}
\begin{itemize}
\item <1-> Your introduction goes here!
\item <2-> \only<3>{\colorbox{yellow}}{Use \texttt{itemize} to organize your main points.}
\end{itemize}
\end{frame}
Однако здесь есть проблема: поскольку \colorbox
заполняет некоторую область вокруг текста, он изменяет интервал, что приводит к видимым подпрыгиваниям (попробуйте, чтобы увидеть это).
Это можно исправить, всегда используя \colorbox
, но заполнять его фоновым цветом, когда он не должен быть выделен. Поскольку это немного беспорядочно, я бы определил новую команду для этой цели:
\documentclass[xcolor=table]{beamer}
\usepackage[english]{babel}
\title[Your Short Title]{Your Presentation}
\author{You}
\institute{Where You're From}
\date{Date of Presentation}
\newcommand<>{\mycolorbox}[3][white]{{%
% #1 = default color when overlay specification is not fulfilled (default: white)
% #2 = color when overlay specification is fulfilled
% #3 = text to be displayed
% #4 = the actual overlay specification
\def\mycolor{#1}%
\only#4{\def\mycolor{#2}}%
\colorbox{\mycolor}{#3}%
}}
\begin{document}
\begin{frame}{Introduction}
\begin{itemize}
\item <1-> Your introduction goes here!
\item <2-> \mycolorbox<3>{yellow}{Use \texttt{itemize} to organize your main points.}
\end{itemize}
\end{frame}
\end{document}
Синтаксис \newcommand<>
объясняется в beamer
руководстве пользователя, раздел9.6.1 Создание команд и оверлеев сред с учетом спецификаций. Первый аргумент — это имя определяемого макроса ( \mycolorbox
в данном случае), затем следует количество аргументов, исключая спецификацию наложения, и, наконец, значение по умолчанию для первого аргумента. Внутри команды аргументы можно ссылаться с помощью символа , #
за которым следует их номер ( #1
и #2
т. д., см. комментарии).
Двойная пара фигурных скобок {{
и }}
существует для создания группы TeX, что означает, что любые макроопределения (переопределения) будут забыты в конце. Внешняя пара разграничивает содержимое команды, а внутренняя пара — это группа TeX.
Затем я использую \def
(я мог бы также использовать \newcommand
) для определения нового макроса, \mycolor
, который изначально является цветом по умолчанию. Используя \only
, я затем условно переопределяю его на желаемый цвет (желтый в этом примере). Наконец, я вызываю команду \colorbox
.
Кстати, можно просто написать \colorbox<3>{yellow}{text}
, но почему-то для этого используется черный фон...