ciclo pgffor con espressione aritmetica
Sep 02 2020
Mi sono appassionato a questo xintexprpacchetto per la sua bella sintassi. Vorrei ripetere un comando M volte e un altro 5-M = N volte. Ricevo un errore a causa dell'espressione aritmetica di quest'ultimo che è nel foreachciclo. Pensavo che usare il \letcs avrebbe dovuto calcolare l'espressione? Ho anche pensato che forse il problema fosse correlato all'espansione /
MWE di seguito:
\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}
Risposte
2 egreg Sep 02 2020 at 15:46
Vuoi eseguire l'espansione completa dell'espressione:
\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}
Questo verrà stampato
MMM NN
Con un approccio diverso:
\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}