Befehl zum Umwandeln einer Eingabe in eine fortlaufende Nummerierung

Befehl zum Umwandeln einer Eingabe in eine fortlaufende Nummerierung

Gibt es einen Befehl, mit dem eine Eingabe in eine fortlaufende Nummerierung umgewandelt werden kann (und der bei erneuter Verwendung der Eingabe die zuvor zugewiesene Nummer wieder aufruft)?

Kontext: Ich habe verschiedene wissenschaftliche Experimente besprochen. In der TEX-Quelldatei verwende ich die Experimentnummer aus meinem Laborbuch, aber in der endgültigen PDF-Datei möchte ich, dass sie fortlaufend nummeriert werden. Natürlich möchte ich, dass für dasselbe Experiment dieselbe Nummer verwendet wird. Bei der ersten Erwähnung des Experiments sollte es eine neue fortlaufende Nummer erhalten, andernfalls sollte es die Nummer beibehalten, die ihm zugewiesen wurde.

% the \magicnumbering is a command name that I invented for this purpose!

\documentclass{report}

\begin{document}

I did \magicnumbering{experimentA} before \magicnumbering{experimentB}, but \magicnumbering{experimentC} was done even before \magicnumbering{experimentA}.

\end{document}

Ich möchte dieses MWE ausdrucken:

Ich habe 1 vor 2 gemacht, aber 3 war sogar vor 1 fertig.

Ich bin sicher, dass es eine sehr einfache Lösung gibt, die ich nicht finden kann. Es tut mir leid, dass ich so unwissend bin. Ich wünschte, Sie könnten mir helfen.

Antwort1

Im Folgenden geschieht dies, indem die Schlüssel in einer Eigenschaftenliste gespeichert werden (mit expl3). Um die Formatierung der Ausgabe zu ändern, können Sie die Definition von ändern \magicnumbering_output:n.

\documentclass[]{report}

\ExplSyntaxOn
\prop_new:N \g_magicnumbering_numbers_prop
\int_new:N \g_magicnumbering_current_int
\tl_new:N \l_magicnumbering_output_tl
\cs_new_protected:Npn \magicnumbering_output:n #1
  {
    #1
  }
\cs_generate_variant:Nn \magicnumbering_output:n { V }
\cs_new_protected:Npn \magicnumbering_parse:n #1
  {
    \prop_get:NnNTF
      \g_magicnumbering_numbers_prop {#1} \l_magicnumbering_output_tl
      { \magicnumbering_output:V \l_magicnumbering_output_tl }
      {
        \int_gincr:N \g_magicnumbering_current_int
        \prop_put:NnV
          \g_magicnumbering_numbers_prop {#1} \g_magicnumbering_current_int
        \magicnumbering_output:V \g_magicnumbering_current_int
      }
  }
\NewDocumentCommand \magicnumbering { m } { \magicnumbering_parse:n {#1} }
\ExplSyntaxOff

\begin{document}
I did \magicnumbering{experimentA} before \magicnumbering{experimentB}, but
\magicnumbering{experimentC} was done even before
\magicnumbering{experimentA}.
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen