Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Ergebnisse von LUACode in eigener Datei abspeichern

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    217

    Ergebnisse von LUACode in eigener Datei abspeichern

    Hallo,

    ich benutzte bei LUA-Code häufig Kommandos mit zufallsgenerierte Zahlen, die ich innerhalb eines Dokuments mehrfach verwende. Ich mache es so, dass bei den jeweiligen Variablen erst abgefragt wird ob sie existieren und sie nur im Fall, dass es sie noch nicht gibt, neu berechnet werden.

    Das führt aber dazu, dass jedes mal wenn ich das Dokument neu setzte alle Zahlen neu berechnet werden.


    Ich suche eine Möglichkeit, dass sich die Daten auch bei neuer Setzung des Dokuments nicht ändern. Ich hatte überlegt, ob es eventuell möglich ist den aktuellen LUA-Datensatz in einer Datei zu speichern, so das die Variablen auch bei neuer Setzung erhalten bleiben.

    Kennt da jemand eine Möglichkeit?

    Viele Grüße MC

    Code:
    \documentclass{scrartcl}
    \usepackage{luacode}
    \newcommand\asdf{
    	\directlua{
    		if a == nil then
    			a=math.random(10)
    		end 
    	}
    }
    \begin{document}
    \asdf
    a1:\directlua{tex.print(a)}\\
    \asdf
    aa2:\directlua{tex.print(a)}\\
    \end{document}

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.838
    Du kannst so etwas versuchen:
    Code:
    \documentclass{scrartcl}
    %\usepackage{luacode}
    \newcommand*\rndcurrentvar{}
    \makeatletter
    \newcommand*\getrnd[1]{%
      \@nameuse{rnd@var@#1}%
    }
    \newcommand*\asdf[1][a]{%
      \edef\rndcurrentvar{#1}
      \@ifundefined{rnd@var@#1}{%
    	\directlua{
    		if \rndcurrentvar == nil then
    			\rndcurrentvar = math.random(10)
    		end
    	}
        \@namedef{rnd@var@#1}{\directlua{tex.print(\rndcurrentvar)}}%
      }{}
      \write\@mainaux{\string\global\string\@namedef{rnd@var@#1}{\getrnd{#1}}}%
    }
    \makeatother
    \begin{document}
    \asdf
    a1:\getrnd{a}\\
    \asdf
    aa2:\getrnd{a}\\
    \end{document}
    Das kommt sogar ohne extra-Datei aus;-)
    Wenn die Zahlen dann doch mal wieder neu berechnet werden sollen, brauchst Du hier nur vor einem LuaLaTeX-Lauf die .aux zu löschen.

    VG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    217
    Danke, du hast echt immer eine Antwort. Ich schau gleich mal, ob ich das bei mir implementiert bekomme.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •