Beamer의 탐색 글머리 기호에서 일부 페이지를 제거하는 방법은 무엇입니까?

Beamer의 탐색 글머리 기호에서 일부 페이지를 제거하는 방법은 무엇입니까?

탐색 글머리 기호와 옵션이 포함된 외부 테마를 beamer사용하여 프레젠테이션을 만들고 있습니다. 즉, 글머리 기호가 모두 한 행에 있음을 의미합니다. 문제는 한 섹션에 페이지가 너무 많으면 글머리 기호가 다음 섹션으로 넘친다는 것입니다.miniframessubsection=false

Section 1 Section 2
oooooooooooooooooooo

나는 많은 프레임을 갖는 경향이 있는데, 그 중 일부는 질문만 하고 다음 세부 프레임으로 이어집니다. 탐색 글머리 기호로 해당 프레임을 표시할 필요는 없으며 프레임을 제거하면 문제가 해결됩니다. 어떻게 해야 할지 아시나요?

오버레이를 사용하여 동일한 프레임에 질문과 답변을 포함함으로써 속임수를 쓸 수 있지만 그러면 엉망이 될 것입니다...

percusse의 질문에 답하기 위한 코드 예: 이것은 하위 섹션당 하나가 아니라 프레임당 하나의 원을 제공해야 합니다. 한 하위 섹션에 많은 프레임을 추가하면 원이 다음 섹션으로 넘치게 됩니다.

\documentclass[compress]{beamer}
\useoutertheme[subsection=false]{miniframes}
\begin{document}
\section{S1}
\subsection{SS1}
\frame{1}
\frame{2}
\frame{3}
\subsection{SS2}
\frame{1}
\frame{2}
\frame{3}
...
\end{document}

답변1

미니 프레임은 \beamer@framepages보조 .nav파일의 항목을 사용하여 생성됩니다. 특정 프레임에 대해 이를 제거하면 탐색에 표시되지 않습니다 1 . 그렇게 하려면 파일 \beamer@writeslidentry에 명령을 쓰는 역할을 하는 매크로를 패치해야 합니다 .nav.

\makeatletter
\let\beamer@writeslidentry@miniframeson=\beamer@writeslidentry
\def\beamer@writeslidentry@miniframesoff{%
  \expandafter\beamer@ifempty\expandafter{\beamer@framestartpage}{}% does not happen normally
  {%else
    % removed \addtocontents commands
    \clearpage\beamer@notesactions%
  }
}
\newcommand*{\miniframeson}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframeson}
\newcommand*{\miniframesoff}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframesoff}
\makeatother

문서에 이 코드를 포함하면 \miniframeson및 를 사용하여 원래 구현과 미니 프레임을 생성하지 않는 수정된 구현 간에 전환할 수 있습니다 \miniframesoff.

1 그러나 이로 인해 내가 알지 못하는 몇 가지 원치 않는 결과가 발생할 수 있습니다!

전체 예제 코드:

\documentclass[compress]{beamer}
\useoutertheme[subsection=false]{miniframes}
\makeatletter
\let\beamer@writeslidentry@miniframeson=\beamer@writeslidentry
\def\beamer@writeslidentry@miniframesoff{%
  \expandafter\beamer@ifempty\expandafter{\beamer@framestartpage}{}% does not happen normally
  {%else
    % removed \addtocontents commands
    \clearpage\beamer@notesactions%
  }
}
\newcommand*{\miniframeson}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframeson}
\newcommand*{\miniframesoff}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframesoff}
\makeatother
\begin{document}
\section{S1}
\subsection{SS1}
\frame{1}
\miniframesoff
\frame{2}
\miniframeson
\frame{3}
\subsection{SS2}
\miniframesoff
\frame{1}
\miniframeson
\frame{2}
\frame{3}
\end{document}

결과 헤드라인(6개의 미니 프레임 중 4개만 표시됨):

예제 코드로 생성된 헤드라인은 원래 6개의 미니 프레임 중 4개만 표시합니다.

관련 정보