|
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? |
|
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} Danke Dir. Funktioniert einwandfrei. Wäre es möglich, mit Dir via E-Mail in Kontakt zu kommen?
(24 Jan '24, 09:53)
dzaic
|
luaexecist nicht vollständig expandierbar, weshalb es nicht direkt im Argument von\qtyverwendet werden kann. Stattdessen sollte hier\luadirectoder direkt\directluaverwendet wedren. Für die Berechnung könnte aber auchl3fpbenutzt werden:\newcommand\calcPercent[3]{\fpeval{round((#2)/(#3)*100, #1)}}.