
Ich habe dieses xintexpr
Paket wegen seiner schönen Syntax lieb gewonnen. Ich möchte einen Befehl M-mal und einen anderen 5-M = N-mal wiederholen. Ich erhalte eine Fehlermeldung, weil der arithmetische Ausdruck des letzteren in der foreach
Schleife ist. Ich dachte, die Verwendung von \let
cs sollte den Ausdruck berechnen? Ich dachte auch, das Problem könnte mit der Erweiterung zusammenhängen/
MWE unten:
\documentclass[11pt,a4paper]{article}
\usepackage{pgffor}
\usepackage{xint}
\usepackage{xintexpr}
\begin{document}
\newcommand{\M}{3}
% my attempts below
\newcommand{\N}{\printnumber{{\xintiexpr5-\M\relax}}}
% \edef\N{\printnumber{\xintiexpr5-\M\relax}}
% \newcommand{\Na}{\xintiexpr5-\M\relax} % intermediate value
% \let\N\Na % tr
\foreach \m in {1,...,\M}{M}
\foreach \n in {1,...,\N}{N} % but the math wont work here
\end{document}
Antwort1
Sie möchten den Ausdruck vollständig erweitern:
\documentclass[11pt,a4paper]{article}
\usepackage{pgffor}
\usepackage{xint}
\usepackage{xintexpr}
\begin{document}
\newcommand{\M}{3}
\edef\N{\xintthe\xintiexpr5-\M\relax}
\foreach \m in {1,...,\M}{M}
\foreach \n in {1,...,\N}{N}
\end{document}
Dies druckt
MMM NN
Mit einem anderen Ansatz:
\documentclass[11pt,a4paper]{article}
\usepackage{pgffor}
\usepackage{xfp}
\begin{document}
\newcommand{\M}{3}
\foreach \m in {1,...,\M}{M}
\foreach \n in {1,...,\inteval{5-\M}}{N}
\end{document}