要件

要件

数式の行をアニメーション化して、紙に手で手書きで書いているように見せたいです。

要件

  • 数式は、煩雑になるアニメーション デコレータを最小限の数で装飾する必要があります。
  • 各フレームでは、方程式の最初の部分が左に留まり、方程式の以降の部分は右に流れます。(最初の部分が中央から始まり、以降の部分が来ると左に押し出されるのではなく)。
  • また、分数、積分、極限などをアニメーション化することもできます。たとえば、\frac{a}{b}はアニメーション化されて が生成されa、その後に水平線が続き、 が続きますb。別の例として、\int_a^bは積分記号としてアニメーション化され、その後に が続き、bが続きますa

  • より移植性を高めるには、使用しないことbeamerをお勧めします。

質問

このような要件をどのように達成するのでしょうか? 満足のいくコードを提供してくれた方には 2000 の報奨金を差し上げます。あなたの創造性から生まれた追加機能も歓迎します!

ムウェ

警告: 次のコードは不定に回転します。

\documentclass[12pt]{beamer}
\usepackage{amsmath}
\usepackage[active,tightpage]{preview}
\PreviewBorder=12pt\relax
\PreviewEnvironment{align*}

\newcounter{counter}
\newcommand{\foo}[1]{\stepcounter{counter}\only<\thecounter->{#1}}
\begin{document}
\begin{frame}
    \begin{align*}
    \foo{a}\foo{+b}&\foo{=1}\\
    \foo{\frac{1}{2}}\foo{+\frac{3}{2}}\foo{&=2}% I don't know whether "&" should be outside or inside "\foo".
    \end{align*}
\end{frame}
\end{document}

答え1

これは完全な回答ではありませんが、あなたのコメントに対するより長い返信です。あなたのアプローチには理解できない点が数多くありますが、ここではそれを修正する方法を提案します。私の意見では、主なポイントは、Beamer がすでに持っているものを 車輪の再発明\fooしようとするあなたの試みであるということです。

\documentclass[12pt,beamer,preview,multi={gather*}]{standalone}
\usepackage{amsmath,mathtools}
\newcommand{\foo}[1]{\visible<+->{#1}}
\newcommand{\foop}[1]{\only<+>{#1}}
\newcommand{\foopp}[1]{\only<+->{#1}}
\newcommand{\fooint}[2]{\foop{\mathrlap{\int\limits_{\phantom{#1}}^{\phantom{#2}}}}%
\foop{\mathrlap{\int\limits_{#1}^{\phantom{#2}}}}%
\foo{\int\limits_{#1}^{#2}}}
\newcommand{\foofrac}[2]{\foop{\mathrlap{\genfrac{}{}{0pt}{0}{#1}{\phantom{#2}}}}%
\foop{\mathrlap{\frac{#1}{\phantom{#2}}}}%
\foo{\frac{#1}{#2}}}

\begin{document}
\begin{standaloneframe}%\show\genfrac
    \begin{gather*}
    \foo{a}\foo{+}\foo{b}\foo{=}\foo{1}\\
    \fooint{a}{b}\foo{f}\foo{(}\foo{x}\foo{)}
    \foo{\,\mathsf{d}}\foo{x}\foo{=}\foo{2}\\
    \foofrac{a}{b}
    \foo{=}
    \foofrac{c}{d}\\[1cm]
    \end{gather*}
\end{standaloneframe}
\end{document}

ここに画像の説明を入力してください

編集: 不足していた を追加しました\mathrlap。神の発明者 (あるいは車輪の再発明者? ;-) に感謝します。

前にも言ったように、これは拡張されたコメントであり、完全な回答ではありません。完全な回答には、これらのマクロをネストできるようにする必要があると思います。上記のツールを使用すると、最初に表示され、次に最後に完全なものが表示される\frac{a\,b}{c}ような方法で記述できます。しかし、それは面倒です。ab想像するループを使ってもっと自動化されたバージョンを作ることもできますが、これはおそらく脆弱です。そこでここで止めておきます。

関連情報