pgffor loop พร้อมนิพจน์เลขคณิต
Sep 02 2020
ฉันชอบxintexprแพ็คเกจนี้มากขึ้นเพราะมีไวยากรณ์ที่ดี ฉันต้องการทำซ้ำคำสั่ง M ครั้งและอีกคำสั่ง 5-M = N ครั้ง ฉันได้รับข้อผิดพลาดเนื่องจากนิพจน์เลขคณิตของหลังอยู่ในforeachลูป ฉันคิดว่าการใช้\letcs ควรจะคำนวณนิพจน์? ฉันยังคิดว่าปัญหาอาจเกี่ยวข้องกับการขยาย /
MWE ด้านล่าง:
\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}
คำตอบ
2 egreg Sep 02 2020 at 15:46
คุณต้องการขยายนิพจน์ทั้งหมด:
\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}
สิ่งนี้จะพิมพ์
MMM NN
ด้วยแนวทางที่แตกต่าง:
\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}