pgffor-Schleife mit arithmetischem Ausdruck

pgffor-Schleife mit arithmetischem Ausdruck

Ich habe dieses xintexprPaket 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 foreachSchleife ist. Ich dachte, die Verwendung von \letcs 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}

verwandte Informationen