Hallo,

ich habe verschiedene Kommandos in denen ich in LUA Ergebnisse berechne. Diese Ergebnisse greife ich teilweise in anderen Kommandos wieder auf. Da ich teilweise Kommandos mehrfach verwende, bevor ich die Ergebnisse wieder aufgreife habe ich die Variablen über einen Counter unterscheidbar gemacht. Das klappt auch soweit.

Seit ein paar Tagen klappt es bei einer Funktion leider nicht mehr. Ich habe es jetzt soweit debuggt, dass ich weiß, dass es irgendwie mit der Funktion table.shuffle zusammen hängt. Komischerweise klappt es in dem Fall, wenn die Variable keinen Counter enthält und es klappt nicht, wenn es einen Enthält.

Im MB sieht man, dass die Zuordnung mit Counter auch klappt, bei der Funktion table.shuffle aber irgendwas schief läuft. Eventuell geht es nicht, mit der Übergabe des Counter an die LUA-Funktion.

MB

Code:
\documentclass{scrartcl}
\usepackage{luacode}
\begin{luacode}
	function table.shuffle(tbl)
		local tbl2={}
		for i = 1,#tbl,1 do
	    	tbl2[i]=	tbl[i]
		end
		for i = #tbl2, 2, -1 do
			local j = math.random(i)
	    	tbl2[i], tbl2[j] = tbl2[j], tbl2[i]
		end
		return tbl2
	end---
\end{luacode}
\newcounter{tableid}
\newcommand\einso[1][]{%//
	\directlua{
		ergebnisohne={1,2,3,4,5,6,7,8,9,10}
	}
}%\\
\newcommand\zweio[1][]{%//
	\directlua{
		ergebnisohneneu=ergebnisohne
 		shuffleohne = table.shuffle(ergebnisohneneu)
	}
}%\\
\newcommand\einsm[1][]{%//
	\directlua{
		ergebnismit\thetableid={1,2,3,4,5,6,7,8,9,10}
	}
}%\\
\newcommand\zweim[1][]{%//
	\directlua{
		ergebnismitneu\thetableid=ergebnismit\thetableid
		shufflemit\thetableid = table.shuffle(ergebnismitneu\thetableid)
	}
}%\\
\newcommand\dreim[1][]{%//
	\directlua{
		shufflemitohneshuffle\thetableid=ergebnismit\thetableid
	}
}%\\





\begin{document}
\einso
\zweio
\textbf{Ergebnis Ohne ID}\\
ergebnis ohne id: \directlua{tex.print(ergebnisohne)}\\
ergebnis neu ohne id: \directlua{tex.print(ergebnisohneneu)}\\
shuffle ohne id: \directlua{tex.print(shuffleohne)}\\\\
\einsm
\zweim
\dreim
\textbf{Ergebnis mit ID}\\
ergebnis mit id: \directlua{tex.print(ergebnismit\thetableid)}\\
ergebnis neu mit id: \directlua{tex.print(ergebnismitneu\thetableid)}\\
shuffle mit id: \directlua{tex.print(shufflem\thetableid)}\\
ergebnis neu mit id ohne shuffle: \directlua{tex.print(shufflemitohneshuffle\thetableid)}

\end{document}
Fehlermeldung
Code:
load luc: /Users/malte/Library/texlive/2018/texmf-var/luatex-cache/generic/font
s/otl/lmroman10-bold.luc)[\directlua]:1: unexpected symbol near '='.
\\zweim ...e.shuffle(ergebnismitneu\thetableid ) }
                                                   
l.58 \dreim
         
The lua interpreter ran into a problem, so the
remainder of this lua chunk will be ignored.

[\directlua]:1: no string to print
stack traceback:
	[C]: in function 'print'
	[\directlua]:1: in main chunk.
l.61 ...ectlua{tex.print(ergebnismitneu\thetableid)}
                                                  \\
The lua interpreter ran into a problem, so the
remainder of this lua chunk will be ignored.

[\directlua]:1: no string to print
stack traceback:
	[C]: in function 'print'
	[\directlua]:1: in main chunk.
l.62 ...: \directlua{tex.print(shufflem\thetableid)}
                                                  \\
The lua interpreter ran into a problem, so the
remainder of this lua chunk will be ignored.