비머 탐색 표시줄이 너무 깁니다.

비머 탐색 표시줄이 너무 깁니다.

Beamer의 탐색 표시줄이 현재 형식에 비해 너무 깁니다. 서클 탐색을 위해 여러 줄로 이동하는 것을 고려했지만 이로 인해 탐색 막대의 세로 공간이 너무 많은 공간을 차지하게 됩니다. 실제로 해당 지점의 각 프레임에 대해 점을 갖도록 다시 확장되는 현재 하위 섹션 내부가 아닌 한 원이 단일 원으로 축소되는 프레젠테이션을 어느 시점에서 본 것을 기억하는 것 같습니다.

내가 가지고 있는 것처럼 한 줄 탐색 표시줄을 유지하는 방법에 대한 제안을 주시면 감사하겠습니다. 그러나 막대를 압축하여 내가 가지고 있는 너비에 맞도록 하는 방법도 있습니다.

여기에 이미지 설명을 입력하세요

또한 프레젠테이션의 각 하위 섹션에 대한 원 탐색 표시 사이에 선이 있는 프레젠테이션을 본 기억이 나지만 아직 그 방법에 대한 내용을 찾을 수 없었습니다. 그것이 어디에 있을 수 있는지 알려주시면 좋을 것 같습니다.

미리 감사드립니다.

답변1

비머 템플릿 미니 프레임에는 3개의 사전 정의된 템플릿이 있습니다.

  • [default]작은 원을 미니 프레임으로 표시합니다.
  • [box]작은 직사각형을 미니 프레임으로 표시합니다.
  • [tick]작은 수직 막대를 미니 프레임으로 표시합니다.

예를 들어 tick공간을 많이 차지하지 않으므로 템플릿으로 전환할 수 있습니다.

\setbeamertemplate{mini frame}[tick]
\setbeamertemplate{mini frame in current subsection}{tick}

하지만 원을 유지하고 싶은 것 같습니다. 그렇다면 규모를 축소하면 어떨까요? 그렇게 하려면 mini frame템플릿을 다시 정의해야 합니다. 그래서 방금 default템플릿을 복사하고 이름을 바꾸고 scaled circle배율 인수를 도입했습니다.

\defbeamertemplate{mini frame}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{fill,stroke}
  \end{pgfpicture}%
}
[action]
{
  \newlength{\myminiframesize}
  \setlength{\myminiframesize}{0.14cm}
  \newlength{\myminiframeoffset}
  \setlength{\myminiframeoffset}{0.03cm}
  \setbeamersize{mini frame size=#1\myminiframesize,mini frame offset=#1\myminiframeoffset}
}

\defbeamertemplate{mini frame in current section}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\defbeamertemplate{mini frame in current subsection}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

그런 다음 로드하면 됩니다.

\setbeamertemplate{mini frame}[scaled circle]{0.7}
\setbeamertemplate{mini frame in current section}[scaled circle]{0.7}
\setbeamertemplate{mini frame in current subsection}[scaled circle]{0.7}

0.7스케일링 계수는 어디에 있습니까?

MWE 완료:

\documentclass[compress]{beamer}
\usepackage{calc}
\useoutertheme{miniframes}

\defbeamertemplate{mini frame}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{fill,stroke}
  \end{pgfpicture}%
}
[action]
{
  \newlength{\myminiframesize}
  \setlength{\myminiframesize}{0.14cm}
  \newlength{\myminiframeoffset}
  \setlength{\myminiframeoffset}{0.03cm}
  \setbeamersize{mini frame size=#1\myminiframesize,mini frame offset=#1\myminiframeoffset}
}

\defbeamertemplate{mini frame in current section}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\defbeamertemplate{mini frame in current subsection}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\setbeamertemplate{mini frame}[scaled circle]{0.7}
\setbeamertemplate{mini frame in current section}[scaled circle]{0.7}
\setbeamertemplate{mini frame in current subsection}[scaled circle]{0.7}

\begin{document}

\section{Section 1}
\subsection{Subsection 1}
\frame{Frame 1}
\frame{Frame 2}
\frame{Frame 3}
\frame{Frame 4}
\frame{Frame 5}
\frame{Frame 6}
\frame{Frame 7}
\frame{Frame 8}
\frame{Frame 9}
\frame{Frame 10}
\subsection{Subsection 2}
\frame{Frame 1}
\frame{Frame 2}
\frame{Frame 3}
\frame{Frame 4}
\frame{Frame 5}
\frame{Frame 6}
\frame{Frame 7}
\frame{Frame 8}
\frame{Frame 9}
\frame{Frame 10}

\end{document}

배율 인수 = 0.7

스케일링0.7

배율 인수 = 1

스케일링1

배율 인수 = 2

스케일링2

편집 – 서클 연결

\makeatletter
\def\slideentry#1#2#3#4#5#6{%
  %section number, subsection number, slide number, first/last frame, page number, part number
  \ifnum#6=\c@part\ifnum#2>0\ifnum#3>0%
    \ifbeamer@compress%
      \advance\beamer@xpos by1\relax%
    \else%
      \beamer@xpos=#3\relax%
      \beamer@ypos=#2\relax%
    \fi%
  \hbox to 0pt{%
    \beamer@tempdim=-\beamer@vboxoffset%
    \advance\beamer@tempdim by-\beamer@boxsize%
    \multiply\beamer@tempdim by\beamer@ypos%
    \advance\beamer@tempdim by -.05cm%
    \raise\beamer@tempdim\hbox{%
      \beamer@tempdim=\beamer@boxsize%
      \multiply\beamer@tempdim by\beamer@xpos%
      \advance\beamer@tempdim by -\beamer@boxsize%
      \advance\beamer@tempdim by 1pt%
      \kern\beamer@tempdim
      \global\beamer@section@min@dim\beamer@tempdim
      \hbox{\beamer@link(#4){%
          \usebeamerfont{mini frame}%
          \ifnum\c@section=#1%
            \ifnum\c@subsection=#2%
              \usebeamercolor[fg]{mini frame}%
              \ifnum\c@subsectionslide=#3%
                \ifnum#3=1%
                  \usebeamertemplate{mini frame first}%\beamer@minislidehilight%
                \else%
                  \usebeamertemplate{mini frame}%\beamer@minislidehilight%
                \fi
              \else%
                \ifnum#3=1%
                  \usebeamertemplate{mini frame in current subsection first}%
                \else%
                  \usebeamertemplate{mini frame in current subsection}%\beamer@minisliderowhilight%
                \fi
              \fi%
            \else%
              \usebeamercolor{mini frame}%
              %\color{fg!50!bg}%
              \usebeamertemplate{mini frame in other subsection}%\beamer@minislide%
            \fi%
          \else%
            \usebeamercolor{mini frame}%
            %\color{fg!50!bg}%
            \usebeamertemplate{mini frame in other subsection}%\beamer@minislide%
          \fi%
        }}}\hskip-10cm plus 1fil%
  }\fi\fi%
  \else%
  \fakeslideentry{#1}{#2}{#3}{#4}{#5}{#6}%
  \fi\ignorespaces
  }
\makeatother

\defbeamertemplate{mini frame}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathmoveto{\pgfpoint{0cm}{#1 * 0.05cm}} 
    \pgfpathlineto{\pgfpoint{#1 * -0.04cm}{#1 * 0.05cm}} 
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{fill,stroke}
  \end{pgfpicture}%
}
[action]
{
  \newlength{\myminiframesize}
  \setlength{\myminiframesize}{0.14cm}
  \newlength{\myminiframeoffset}
  \setlength{\myminiframeoffset}{0.03cm}
  \setbeamersize{mini frame size=#1\myminiframesize,mini frame offset=#1\myminiframeoffset}
}

\defbeamertemplate{mini frame first}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{fill,stroke}
  \end{pgfpicture}%
}


\defbeamertemplate{mini frame in current section}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathmoveto{\pgfpoint{0cm}{#1 * 0.05cm}} 
    \pgfpathlineto{\pgfpoint{#1 * -0.04cm}{#1 * 0.05cm}} 
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\defbeamertemplate{mini frame in other section}{scaled circle}[1]
{%
  \color{fg!50!bg}
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\defbeamertemplate{mini frame in current subsection}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathmoveto{\pgfpoint{0cm}{#1 * 0.05cm}} 
    \pgfpathlineto{\pgfpoint{#1 * -0.04cm}{#1 * 0.05cm}} 
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\defbeamertemplate{mini frame in current subsection first}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\defbeamertemplate{mini frame in other subsection}{scaled circle}[1]
{%
  \color{fg!50!bg}
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\setbeamertemplate{mini frame}[scaled circle]{0.7}
\setbeamertemplate{mini frame first}[scaled circle]{0.7}
\setbeamertemplate{mini frame in current section}[scaled circle]{0.7}
\setbeamertemplate{mini frame in current subsection}[scaled circle]{0.7}
\setbeamertemplate{mini frame in current subsection first}[scaled circle]{0.7}
\setbeamertemplate{mini frame in other section}[scaled circle]{0.7}
\setbeamertemplate{mini frame in other subsection}[scaled circle]{0.7}

산출:

연결됨

편집 2 – 다른 하위 섹션 축소

\makeatletter
\def\slideentry#1#2#3#4#5#6{%
  %section number, subsection number, slide number, first/last frame, page number, part number
  \ifnum#6=\c@part\ifnum#2>0\ifnum#3>0%
    \ifbeamer@compress%
      \ifnum\c@section=#1
        \ifnum\c@subsection=#2
          \advance\beamer@xpos by1\relax%
        \else%
          \ifnum#3=1%
            \advance\beamer@xpos by1\relax%
          \fi
        \fi
      \else%
        \ifnum#3=1%
          \advance\beamer@xpos by1\relax%
        \fi
      \fi
    \else%
      \beamer@xpos=#3\relax%
      \beamer@ypos=#2\relax%
    \fi%
  \hbox to 0pt{%
    \beamer@tempdim=-\beamer@vboxoffset%
    \advance\beamer@tempdim by-\beamer@boxsize%
    \multiply\beamer@tempdim by\beamer@ypos%
    \advance\beamer@tempdim by -.05cm%
    \raise\beamer@tempdim\hbox{%
      \beamer@tempdim=\beamer@boxsize%
      \multiply\beamer@tempdim by\beamer@xpos%
      \advance\beamer@tempdim by -\beamer@boxsize%
      \advance\beamer@tempdim by 1pt%
      \kern\beamer@tempdim
      \global\beamer@section@min@dim\beamer@tempdim
      \hbox{\beamer@link(#4){%
          \usebeamerfont{mini frame}%
          \ifnum\c@section=#1%
            \ifnum\c@subsection=#2%
              \usebeamercolor[fg]{mini frame}%
              \ifnum\c@subsectionslide=#3%
                \ifnum#3=1%
                  \usebeamertemplate{mini frame first}%\beamer@minislidehilight%
                \else%
                  \usebeamertemplate{mini frame}%\beamer@minislidehilight%
                \fi
              \else%
                \ifnum#3=1%
                  \usebeamertemplate{mini frame in current subsection first}%
                \else%
                  \usebeamertemplate{mini frame in current subsection}%\beamer@minisliderowhilight%
                \fi
              \fi%
            \else%
              \ifnum#3=1%
                \usebeamercolor{mini frame}%
                %\color{fg!50!bg}%
                \usebeamertemplate{mini frame in other subsection}%\beamer@minislide%
              \fi
            \fi%
          \else%
            \ifnum#3=1%
              \usebeamercolor{mini frame}%
              %\color{fg!50!bg}%
              \usebeamertemplate{mini frame in other subsection}%\beamer@minislide%
            \fi
          \fi%
        }}}\hskip-10cm plus 1fil%
  }\fi\fi%
  \else%
  \fakeslideentry{#1}{#2}{#3}{#4}{#5}{#6}%
  \fi\ignorespaces
  }
\makeatother

\defbeamertemplate{mini frame}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathmoveto{\pgfpoint{0cm}{#1 * 0.05cm}} 
    \pgfpathlineto{\pgfpoint{#1 * -0.04cm}{#1 * 0.05cm}} 
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{fill,stroke}
  \end{pgfpicture}%
}
[action]
{
  \newlength{\myminiframesize}
  \setlength{\myminiframesize}{0.14cm}
  \newlength{\myminiframeoffset}
  \setlength{\myminiframeoffset}{0.03cm}
  \setbeamersize{mini frame size=#1\myminiframesize,mini frame offset=#1\myminiframeoffset}
}

\defbeamertemplate{mini frame first}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{fill,stroke}
  \end{pgfpicture}%
}


\defbeamertemplate{mini frame in current section}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathmoveto{\pgfpoint{0cm}{#1 * 0.05cm}} 
    \pgfpathlineto{\pgfpoint{#1 * -0.04cm}{#1 * 0.05cm}} 
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\defbeamertemplate{mini frame in other section}{scaled circle}[1]
{%
  \color{fg!50!bg}
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\defbeamertemplate{mini frame in current subsection}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathmoveto{\pgfpoint{0cm}{#1 * 0.05cm}} 
    \pgfpathlineto{\pgfpoint{#1 * -0.04cm}{#1 * 0.05cm}} 
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\defbeamertemplate{mini frame in current subsection first}{scaled circle}[1]
{%
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\defbeamertemplate{mini frame in other subsection}{scaled circle}[1]
{%
  \color{fg!50!bg}
  \begin{pgfpicture}{0pt}{0pt}{#1 * 0.1cm}{#1 * 0.1cm}
    \pgfsetlinewidth{#1 * 0.4pt}
    \pgfpathcircle{\pgfpoint{#1 * 0.05cm}{#1 * 0.05cm}}{#1 * 0.05cm}
    \pgfusepath{stroke}
  \end{pgfpicture}%
}

\setbeamertemplate{mini frame}[scaled circle]{0.7}
\setbeamertemplate{mini frame first}[scaled circle]{0.7}
\setbeamertemplate{mini frame in current section}[scaled circle]{0.7}
\setbeamertemplate{mini frame in current subsection}[scaled circle]{0.7}
\setbeamertemplate{mini frame in current subsection first}[scaled circle]{0.7}
\setbeamertemplate{mini frame in other section}[scaled circle]{0.7}
\setbeamertemplate{mini frame in other subsection}[scaled circle]{0.7}

관련 정보