LaTex, Beamer и Young Tableaux

LaTex, Beamer и Young Tableaux

Я только что сам изучил LaTeX за последние три месяца для своей диссертации. Теперь мне нужно сделать презентацию, и я должен использовать beamer. Я использовал Tikz в своей диссертации и хотел бы использовать его снова в beamer. Как бы мне ни хотелось просто скопировать и вставить мою tikzpicture в презентацию, похоже, это не сработает. Вот пример того, что я использовал в своей диссертации.

\begin{tikzpicture}
            \matrix (m) [
                matrix of math nodes, 
                nodes in empty cells,
                minimum width=width("8"),
            ] {
                1 & 1 & 2 & 2 &            &   &            &   &   &   & 1 & 1 & 2 & 2 &           &     &              &   &   & 1 & 1 & 2 & 2 & \leftarrow & 3 & 1 &   & 1 & 1 & 2 & 2 & 3 & \leftarrow & 1 &   \\
                2 & 3 & 3 & 4 &            &   &            &   &   &   & 2 & 3 & 3 & 4 &           &     &              &   &   & 2 & 3 & 3 & 4 &            &   &   &   & 2 & 3 & 3 & 4 &   &            &   &   \\
                3 & 4 & 6 &   &            &   &            &   &   & = & 3 & 4 & 6 &   &           &     &              &   & = & 3 & 4 & 6 &   &            &   &   & = & 3 & 4 & 6 &   & &              &   & = \\
                4 & 7 &   &   & \leftarrow & 5 & \leftarrow & 3 & 1 &   & 4 & 5 &   &   &            &     &                 &   &   & 4 & 5 &   &   &            &   &   &   & 4 & 5 &   &   & &              &   &   \\
                  &   &   &   &            &   &            &   &   &   &   &   &   &   & \leftarrow & 7 & \leftarrow 3 & 1 &   & 7 &   &   &   &           &   &   &   & 7 &   &   &   &   &            &   &   \\
            } ;

            \draw (m-1-1.north west) rectangle (m-1-2.south east);
            \draw (m-2-4.north west) rectangle (m-2-4.south east);
            \draw[Red!,line width=2] (m-1-4.north west) rectangle (m-1-4.south east);
            \draw (m-1-1.north west) rectangle (m-4-1.south east);
            \draw (m-1-3.north west) rectangle (m-1-3.south east);
            \draw (m-3-3.north west) rectangle (m-3-3.south east);
            \draw[Red!,line width=2] (m-2-3.north west) rectangle (m-2-3.south east);
            \draw (m-3-1.north west) rectangle (m-3-1.south east);
            \draw (m-4-2.north west) rectangle (m-4-2.south east);
            \draw[Red!,line width=2] (m-3-2.north west) rectangle (m-3-2.south east);
            \draw (m-1-11.north west) rectangle (m-1-11.south east);
            \draw (m-1-12.north west) rectangle (m-1-12.south east);
            \draw (m-1-13.north west) rectangle (m-1-13.south east);
            \draw (m-2-14.north west) rectangle (m-2-14.south east);
            \draw (m-2-12.north west) rectangle (m-2-12.south east);
            \draw[Red!,line width=2] (m-1-14.north west) rectangle (m-1-14.south east);
            \draw (m-2-11.north west) rectangle (m-2-11.south east);
            \draw (m-3-13.north west) rectangle (m-3-13.south east);
            \draw[Red!,line width=2] (m-2-13.north west) rectangle (m-2-13.south east);
            \draw (m-3-11.north west) rectangle (m-3-11.south east);
            \draw[Red!,line width=2] (m-3-12.north west) rectangle (m-3-12.south east);
            \draw (m-4-11.north west) rectangle (m-4-11.south east);
            \draw[Red!,line width=2] (m-4-12.north west) rectangle (m-4-12.south east);
            \draw (m-1-21.north west) rectangle (m-1-21.south east);
            \draw (m-1-22.north west) rectangle (m-1-22.south east);
            \draw (m-1-20.north west) rectangle (m-1-20.south east);
            \draw (m-2-20.north west) rectangle (m-2-20.south east);
            \draw (m-2-21.north west) rectangle (m-2-21.south east);
            \draw (m-2-23.north west) rectangle (m-2-23.south east);
            \draw[Red!,line width=2] (m-1-23.north west) rectangle (m-1-23.south east);
            \draw (m-3-22.north west) rectangle (m-3-22.south east);
            \draw[Red!,line width=2] (m-2-22.north west) rectangle (m-2-22.south east);
            \draw (m-3-20.north west) rectangle (m-3-20.south east);
            \draw[Red!,line width=2] (m-3-21.north west) rectangle (m-3-21.south east);
            \draw (m-4-20.north west) rectangle (m-4-20.south east);
            \draw[Red!,line width=2] (m-4-21.north west) rectangle (m-4-21.south east);
            \draw[Red!,line width=2] (m-5-20.north west) rectangle (m-5-20.south east);
            \draw (m-1-28.north west) rectangle (m-1-31.south east);
            \draw[Orange!,line width=2] (m-1-32.north west) rectangle (m-1-32.south east);
            \draw (m-1-28.north west) rectangle (m-4-28.south east);
            \draw (m-1-30.north west) rectangle (m-3-30.south east);
            \draw (m-2-29.north west) rectangle (m-2-31.south east);
            \draw (m-4-28.north west) rectangle (m-5-28.south east);
            \draw (m-3-28.north west) rectangle (m-3-28.south east);
            \draw (m-4-29.north west) rectangle (m-4-29.south east);


        \end{tikzpicture}

Я хочу показать пошаговое развитие маршрута столкновений от начала алгоритма вставки Робинсона-Шенстеда до конца, и я бы сделал это с использованием нескольких слайдов, но я не понимаю, как работают узлы для этого, или даже то, что я должен использовать. Как мне создать эту многослайдовую "анимацию"? Спасибо

решение1

Сила tikz в том, что вы можете легко писать макросы для рисования обычных объектов, таких как tableaux. У меня есть код, который я написал, чтобы сделать что-то похожее. Вместо того, чтобы рисовать более толстые рамки, я меняю цвет фона ячейки, но было бы достаточно легко адаптировать мой код, чтобы сделать более толстые рамки, если вы предпочитаете. Основная идея заключается в том, чтобы спрятать большую часть кода tableaux внутри макроса, чтобы вы могли «писать» каждую tableau, используя естественный и простой для редактирования синтаксис, например

\ShadedTableau{{1,1,2,2},{2,3,3,4},{3,4,6},{4,7}}

В вашем случае использования вы хотите иметь возможность затенять определенные ячейки. Чтобы обеспечить это, мы допускаем необязательный аргумент, который представляет собой разделенный запятыми список координат ячеек, которые мы хотим затенять:

\ShadedTableau[(3,0),(2,-1),(1,-2)]{{1,1,2,2},{2,3,3,4},{3,4,6},{4,7}}

The\ShadedTableau не особенно сложен: он используеттикз \foreachцикл для рисования ячейки таблицы за ячейкой, проходя по строкам, а затем по записям в каждой строке таблицы, которые указаны в качестве аргументов \ShadedTableau. (В макросах ниже есть несколько дополнительных функций, которые я нашел полезными.)

Используя это с помощью проектора, ваш MWE будет выглядеть следующим образом (перейдите к кадру проектора при первом прочтении, поскольку именно там находятся ваши таблицы):

\documentclass{beamer}
\usepackage{xcolor}
\usepackage{tikz}

% tikz macro for drawing tableaux with optionally shaded nodes.
% \ShadedTableau{{1,2,3,4},{5,6,7},{8,9}}   -> 1234/567/89
% \ShadedTableau[(1,-1),(2,-1),(2,0),(3,0),(4,0)]{{1,2,3,4},{5,6,7},{8,9}}
\newdimen\shadedBaseline\shadedBaseline=-4mm
\newcount\tableauRow\newcount\tableauCol
\newcommand\ShadedTableau[2][\relax]{%
  \begin{tikzpicture}[scale=0.4,draw/.append style={thick,black},baseline=\shadedBaseline]
    \ifx\relax#1\relax%
    \else % shade the boxes in #1
      \foreach\bx in {#1} { \filldraw[blue!20]\bx+(-.5,-.5)rectangle++(.5,.5); }
    \fi
    \tableauRow=0
    \foreach \Row in {#2} {
       \tableauCol=1
       \foreach\k in \Row {
          \draw(\the\tableauCol,\the\tableauRow)+(-.5,-.5)rectangle++(.5,.5);
          \draw(\the\tableauCol,\the\tableauRow)node{\k};
          \global\advance\tableauCol by 1
       }
       \global\advance\tableauRow by -1
    }
  \end{tikzpicture}%
}

\begin{document}

  \begin{frame}{Bumping}
    \ShadedTableau[(4,0),(3,-1),(2,-2)]{{1,1,2,2},{2,3,3,4},{3,4,6},{4,7}}
    \quad
    \pause $\overset{\longleftarrow 5\longleftarrow 3\ 1}{=}$\quad
    \ShadedTableau[(4,0),(3,-1),(2,-2),(2,-3)]{{1,1,2,2},{2,3,3,4},{3,4,6},{4,5}}
    \qquad
    \pause $\overset{\longleftarrow 7\longleftarrow 3\ 1}{=}$\quad
    \ShadedTableau[(4,0),(3,-1),(2,-2),(2,-3),(1,-4)]{{1,1,2,2},{2,3,3,4},{3,4,6},{4,5},{7}}
  \end{frame}

\end{document}

Это дает следующий результат:

введите описание изображения здесь

Поскольку вы спросили о "многослайдовой анимации", в приведенном выше примере это достигается просто с помощью команды \pause, которая "ставит на паузу" презентацию, пока вы не нажмете клавишу. Возможны и более сложные вещи: см. очень читабельныйпроекторПодробности в руководстве.

решение2

Поскольку изменять код рисунка уже слишком поздно, самый простой способ — добавить маску поверх существующего рисунка.

Основная структура выглядит следующим образом:

\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\foreach\i in{1,...,30}{
    \begin{frame}

        your picture

        \tikz[remember picture,overlay]{
            \filldraw[fill=white](current page.west)++(\i/2,-1)rectangle+(12,4)--+(0,0);
        }
        \transreplace
        \transduration{0}
    \end{frame}
}

\end{document}

P.S. Если вы используете Adobe Reader и находитесь в полноэкранном режиме, воспроизведение будет происходить автоматически.

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

\def\tempamp{&}
\catcode`\&13 \let&\tempamp


\foreach\i in{1,...,30}{
\begin{frame}
\centering\begin{tikzpicture}[transform canvas={scale=.6}]
            \matrix (m) [
                matrix of math nodes, 
                nodes in empty cells,
                minimum width=width("8"),
            ] {
                1 & 1 & 2 & 2 &            &   &            &   &   &   & 1 & 1 & 2 & 2 &           &     &              &   &   & 1 & 1 & 2 & 2 & \leftarrow & 3 & 1 &   & 1 & 1 & 2 & 2 & 3 & \leftarrow & 1 &   \\
                2 & 3 & 3 & 4 &            &   &            &   &   &   & 2 & 3 & 3 & 4 &           &     &              &   &   & 2 & 3 & 3 & 4 &            &   &   &   & 2 & 3 & 3 & 4 &   &            &   &   \\
                3 & 4 & 6 &   &            &   &            &   &   & = & 3 & 4 & 6 &   &           &     &              &   & = & 3 & 4 & 6 &   &            &   &   & = & 3 & 4 & 6 &   & &              &   & = \\
                4 & 7 &   &   & \leftarrow & 5 & \leftarrow & 3 & 1 &   & 4 & 5 &   &   &            &     &                 &   &   & 4 & 5 &   &   &            &   &   &   & 4 & 5 &   &   & &              &   &   \\
                  &   &   &   &            &   &            &   &   &   &   &   &   &   & \leftarrow & 7 & \leftarrow 3 & 1 &   & 7 &   &   &   &           &   &   &   & 7 &   &   &   &   &            &   &   \\
            } ;
            \draw (m-1-1.north west) rectangle (m-1-2.south east);
            \draw (m-2-4.north west) rectangle (m-2-4.south east);
            \draw[red!,line width=2] (m-1-4.north west) rectangle (m-1-4.south east);
            \draw (m-1-1.north west) rectangle (m-4-1.south east);
            \draw (m-1-3.north west) rectangle (m-1-3.south east);
            \draw (m-3-3.north west) rectangle (m-3-3.south east);
            \draw[red!,line width=2] (m-2-3.north west) rectangle (m-2-3.south east);
            \draw (m-3-1.north west) rectangle (m-3-1.south east);
            \draw (m-4-2.north west) rectangle (m-4-2.south east);
            \draw[red!,line width=2] (m-3-2.north west) rectangle (m-3-2.south east);
            \draw (m-1-11.north west) rectangle (m-1-11.south east);
            \draw (m-1-12.north west) rectangle (m-1-12.south east);
            \draw (m-1-13.north west) rectangle (m-1-13.south east);
            \draw (m-2-14.north west) rectangle (m-2-14.south east);
            \draw (m-2-12.north west) rectangle (m-2-12.south east);
            \draw[red!,line width=2] (m-1-14.north west) rectangle (m-1-14.south east);
            \draw (m-2-11.north west) rectangle (m-2-11.south east);
            \draw (m-3-13.north west) rectangle (m-3-13.south east);
            \draw[red!,line width=2] (m-2-13.north west) rectangle (m-2-13.south east);
            \draw (m-3-11.north west) rectangle (m-3-11.south east);
            \draw[red!,line width=2] (m-3-12.north west) rectangle (m-3-12.south east);
            \draw (m-4-11.north west) rectangle (m-4-11.south east);
            \draw[red!,line width=2] (m-4-12.north west) rectangle (m-4-12.south east);
            \draw (m-1-21.north west) rectangle (m-1-21.south east);
            \draw (m-1-22.north west) rectangle (m-1-22.south east);
            \draw (m-1-20.north west) rectangle (m-1-20.south east);
            \draw (m-2-20.north west) rectangle (m-2-20.south east);
            \draw (m-2-21.north west) rectangle (m-2-21.south east);
            \draw (m-2-23.north west) rectangle (m-2-23.south east);
            \draw[red!,line width=2] (m-1-23.north west) rectangle (m-1-23.south east);
            \draw (m-3-22.north west) rectangle (m-3-22.south east);
            \draw[red!,line width=2] (m-2-22.north west) rectangle (m-2-22.south east);
            \draw (m-3-20.north west) rectangle (m-3-20.south east);
            \draw[red!,line width=2] (m-3-21.north west) rectangle (m-3-21.south east);
            \draw (m-4-20.north west) rectangle (m-4-20.south east);
            \draw[red!,line width=2] (m-4-21.north west) rectangle (m-4-21.south east);
            \draw[red!,line width=2] (m-5-20.north west) rectangle (m-5-20.south east);
            \draw (m-1-28.north west) rectangle (m-1-31.south east);
            \draw[orange!,line width=2] (m-1-32.north west) rectangle (m-1-32.south east);
            \draw (m-1-28.north west) rectangle (m-4-28.south east);
            \draw (m-1-30.north west) rectangle (m-3-30.south east);
            \draw (m-2-29.north west) rectangle (m-2-31.south east);
            \draw (m-4-28.north west) rectangle (m-5-28.south east);
            \draw (m-3-28.north west) rectangle (m-3-28.south east);
            \draw (m-4-29.north west) rectangle (m-4-29.south east);
        \end{tikzpicture}
\tikz[remember picture,overlay]{
    \filldraw[fill=white](current page.west)++(\i/2,-1)rectangle+(12,4)--+(0,0);
}
\transreplace
\transduration{0}
\end{frame}
}

\end{document}

Связанный контент