Einrichten einer Umgebung zum automatischen und zufälligen Beschriften von Gleichungen mit Symbolen

Einrichten einer Umgebung zum automatischen und zufälligen Beschriften von Gleichungen mit Symbolen

Mithilfe der Gleichungsumgebung und \label{ ... }ist es also einfach, Gleichungen zu erhalten, die in einem Dokument automatisch nummeriert sind. Wenn wir das Symbol anpassen möchten, das das Dokument beschriftet, können wir verwenden \tag{ ... }.

Gibt es jedoch eine gute Möglichkeit, die Umgebung so einzurichten, dass Gleichungen in einem bestimmten Dokument automatisch mit zufälligen Symbolen beschriftet werden? Hier würde der Satz möglicher Symbole vorher irgendwo im Dokument angegeben und verschiedenen Gleichungen würden unterschiedliche Symbole zugewiesen.

Antwort1

DerpgfPaket stellt die Befehle \pgfmathdeclarerandomlistund \pgfmathrandomitemzum Arbeiten mit zufälligen Listen bereit. Da Sie die Gleichungsbeschriftungen vermutlich höchstens einmal verwenden möchten, besteht die beste Option darin, die Listenelemente bei jeder Verwendung zu löschen, was schwierig ist. Glücklicherweise gibt Mark Wibrow in seiner Antwort auf die Frage eine Möglichkeit, dies zu tunWie erstelle ich in LaTeX eine Liste mit zufälligen Fragen und vermeide dabei Wiederholungen?.

Mit Marks Code ist es ganz einfach, das Gewünschte zu tun, indem Sie \tagein zufälliges Etikett aus einer benutzerdefinierten Liste von Etiketten hinzufügen:

Bildbeschreibung hier eingeben

Hier ist der Code:

\documentclass{article}
\usepackage{pgf}
\usepackage{amsmath}

\newcommand\EquationLabels[1]{%
  \pgfmathsetseed{\number\day\number\time}% set a "random" seed based on time
  \pgfmathdeclarerandomlist{equationlabels}{#1}%
}

\newenvironment{Equation}{\equation}%
   {\pgfmathrandomitemwithoutreplacement{\rtag}{equationlabels}\tag{\rtag}\endequation}

% Mark Wibrow: https://tex.stackexchange.com/questions/113987/how-do-i-generate-in-latex-a-list-of-random-questions-avoiding-repetitions
\makeatletter
\def\pgfmathrandomitemwithoutreplacement#1#2{%
    \pgfmath@ifundefined{pgfmath@randomlist@#2}{\pgfmath@error{Unknown random list `#2'}}{%
        \edef\pgfmath@randomlistlength{\csname pgfmath@randomlist@#2\endcsname}%
        \ifnum\pgfmath@randomlistlength>0\relax%
            \pgfmathrandominteger{\pgfmath@randomtemp}{1}{\pgfmath@randomlistlength}%
            \def\pgfmath@marshal{\def#1}%
            \expandafter\expandafter\expandafter\pgfmath@marshal\expandafter\expandafter\expandafter{\csname pgfmath@randomlist@#2@\pgfmath@randomtemp\endcsname}%
            % Now prune.
            \c@pgfmath@counta=\pgfmath@randomtemp\relax%
            \c@pgfmath@countb=\c@pgfmath@counta%
            \advance\c@pgfmath@countb by1\relax%
            \pgfmathloop%
            \ifnum\c@pgfmath@counta=\pgfmath@randomlistlength\relax%
            \else%
                \def\pgfmath@marshal{\expandafter\global\expandafter\let\csname pgfmath@randomlist@#2@\the\c@pgfmath@counta\endcsname=}%
                \expandafter\pgfmath@marshal\csname pgfmath@randomlist@#2@\the\c@pgfmath@countb\endcsname%
                \advance\c@pgfmath@counta by1\relax%
                \advance\c@pgfmath@countb by1\relax%
            \repeatpgfmathloop%
            \advance\c@pgfmath@counta by-1\relax%
            \expandafter\xdef\csname pgfmath@randomlist@#2\endcsname{\the\c@pgfmath@counta}%
        \else%
            \pgfmath@error{Random list `#2' is empty}%
        \fi%
    }}
\makeatletter

\begin{document}

  % set some labels
  \EquationLabels{{$\spadesuit$}{$\heartsuit$}{$\diamondsuit$}{$\clubsuit$}}

  \begin{Equation}1+1=2\end{Equation}

  \begin{Equation}1+2=3\end{Equation}

  \begin{Equation}1+3=4\end{Equation}

  \begin{Equation}1+4=5\end{Equation}

  % a longer list of labels
  \EquationLabels{abcdefghijklmnopqrstuvwxyz}

  \begin{Equation}1+1=2\end{Equation}

  \begin{Equation}1+2=3\end{Equation}

  \begin{Equation}1+3=4\end{Equation}

  \begin{Equation}1+4=5\end{Equation}

\end{document}

Einige Anmerkungen:

  • Den schwierigen Teil erledigt Wibrows Code für\pgfmathrandomitemwithoutreplacement
  • Die Gleichungen werden in einer normalen Gleichungsumgebung gesetzt
  • Die Beschriftungen für die Gleichungen werden festgelegt mit\EquationLabels
  • Wenn mehr Gleichungen als Beschriftungen vorhanden sind, erhalten Sie von PGF Math Error einen nicht informativen Fehler, der besagt, dass die Zufallsliste equationlabelsleer ist.

Antwort2

Sie können die vorgegebene Symbolnummerierungssequenz durch \ifcaseNeudefinition von festlegen \theequation:

Bildbeschreibung hier eingeben

\documentclass{article}

\renewcommand{\theequation}{%
  \ifcase\value{equation}%
    \or $\spadesuit$% 1
    \or $\heartsuit$% 2
    \or $\clubsuit$% 3
    \or $\diamondsuit$% 4
    \or $\star$% 5
    \or $\alpha$% 6
    \or $\beta$% 7
    \or $\gamma$% 8
    \or $\epsilon$% 9
    \else \arabic{equation}% 10...
  \fi
}

\begin{document}

\begin{equation}  1 +   2 =   3 \end{equation}
\begin{equation}  2 +   3 =   5 \end{equation}
\begin{equation}  3 +   5 =   8 \end{equation}
\begin{equation}  5 +   8 =  13 \end{equation}
\begin{equation}  8 +  13 =  21 \end{equation}
\begin{equation} 13 +  21 =  34 \end{equation}
\begin{equation} 21 +  34 =  55 \end{equation}
\begin{equation} 34 +  55 =  89 \end{equation}
\begin{equation} 55 +  89 = 144 \end{equation}
\begin{equation} 89 + 144 = 233 \end{equation}

\end{document}

verwandte Informationen