Folgendes Minimalbeispiel kompiliert nicht: \documentclass[varwidth]{standalone} \usepackage{luacode} \usepackage{siunitx} % #1: Nachkommastellen; #2: Zähler; #3: Nenner \newcommand\CalcPercent[3]{ \luaexec{tex.sprint(string.format("\%0.#1f", #2/#3*100))} } \begin{document} \CalcPercent{0}{1}{3} \CalcPercent{1}{1}{3} \CalcPercent{2}{1}{3} \qty{\CalcPercent{0}{1}{3}}{\percent} % <<- Das hier funktioniert nicht \end{document} Interessanterweise steht in der Anleitung Folgendes: > The \luaexec command is similar to \luadirect but with a few additional features: \\ gives a double backslash (see note below) \% a percent character, and ~ just works. For single backslashes, \string is still needed. Also, TEX macros are expanded. Folgender Hinweis hat auch nicht geholfen: % #1: Nachkommastellen; #2: Zähler; #3: Nenner \makeatletter\let\percentchar\@percentchar\makeatother \newcommand\CalcPercent[3]{ \luaexec{tex.sprint(string.format("\percentchar 0.#1f", #2/#3*100))} } Den Compiler stört augenscheinlich das Prozent im Formatstring "\%0.#1f". Ich hatte mal vor Jahren eine ähnliche Frage gestellt, der das o.g Zitat in der Dokumentation als Basis nicmmt. Jedoch klappt es hier nicht. Hat jemand eine Idee, was ich ändern müsste, damit es funktioniert? gefragt 23 Jan, 15:48 dzaic |
Der Befehl Es gibt verschiedene mögliche Abhilfen. Die eine ist, \documentclass[varwidth]{standalone} \usepackage{siunitx} \begingroup \catcode`\%=12 \catcode`\^^A=14 ^^A das ist das neue Kommentarzeichen, sollten überflüssige Leerzeichen ^^A entfernt werden müssen. \unexpanded{\endgroup ^^A #1: Nachkommastellen; #2: Zähler; #3: Nenner \newcommand\CalcPercent[3] {\directlua{tex.sprint(string.format("%0.#1f", #2/#3*100))}} } % #1: Nachkommastellen; #2: Zähler; #3: Nenner \newcommand\calcPercent[3]{\fpeval{round((#2)/(#3)*100, #1)}} \begin{document} \CalcPercent{0}{1}{3} \CalcPercent{1}{1}{3} \CalcPercent{2}{1}{3} \qty{\CalcPercent{0}{1}{3}}{\percent} % <<- Das hier funktioniert doch \qty{\calcPercent{0}{1}{3}}{\percent} % <<- Das hier funktioniert doch \end{document} beantwortet 23 Jan, 17:41 Skillmon Danke Dir. Funktioniert einwandfrei. Wäre es möglich, mit Dir via E-Mail in Kontakt zu kommen?
(24 Jan, 09:53)
dzaic
|
luaexec
ist nicht vollständig expandierbar, weshalb es nicht direkt im Argument von\qty
verwendet werden kann. Stattdessen sollte hier\luadirect
oder direkt\directlua
verwendet wedren. Für die Berechnung könnte aber auchl3fp
benutzt werden:\newcommand\calcPercent[3]{\fpeval{round((#2)/(#3)*100, #1)}}
.