我无法在multicols
环境中增加整数。这是一个不需要的输出,有两个零而不是两个 2...
这是我的 M(不是)WE。我在这里做了哪些愚蠢的事情?
\documentclass[a4paper, 12pt]{article}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{expl3}
\usepackage{xparse}
\ExplSyntaxOn
\int_new:N \l__test_max_step_int
\int_new:N \l__test_this_step_int
\DeclareDocumentCommand\screensteps{vvv}{
\int_set:Nn \l__test_max_step_int{#1}
\int_set:Nn \l__test_this_step_int{0}
% Lets' print the material...
% \int_do_while:nn {\l__test_this_step_int < \l__test_max_step_int} {
\begin{multicols}{2}
\centering
\int_incr:N \l__test_this_step_int
\par\emph{Étape \ \int_use:N \l__test_this_step_int.}
\columnbreak
\int_incr:N \l__test_this_step_int
\par\emph{Étape \ \int_use:N \l__test_this_step_int.}
\end{multicols}
% JUST TO SHOW THE PROBLEM
\begin{multicols}{2}
\centering
\par\emph{Étape \ \int_use:N \l__test_this_step_int.}
\columnbreak
\par\emph{Étape \ \int_use:N \l__test_this_step_int.}
\end{multicols}
% }
}
\ExplSyntaxOff
\begin{document}
\screensteps{8}{numworks/?.png}{.6}
\end{document}
答案1
您正在使用本地分配,但 LaTeX 环境会形成组。如果要转义它们,则需要使用全局变量和\int_gincr:N
。
答案2
整数变量必须全局增加。另一方面,你可以使用不同的循环来避免全局设置。
\documentclass[a4paper, 12pt]{article}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{expl3}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand\screensteps{vvv}
{
\int_step_inline:nn { \int_div_truncate:nn { #1+1 } { 2 } }
{
\begin{multicols}{2}
\centering
\projetmbc_etape:nnn { 2*##1-1 } { #2 } { #3 }
\columnbreak
\int_compare:nF { 2*##1 > #1 }
{
\projetmbc_etape:nnn { 2*##1 } { #2 } { #3 }
}
\end{multicols}
}
}
\cs_new_protected:Nn \projetmbc_etape:nnn
{
\par\emph{Étape ~ \int_to_arabic:n { #1 }.}
}
\ExplSyntaxOff
\begin{document}
\section{Even}
\screensteps{8}{numworks/?.png}{.6}
\section{Odd}
\screensteps{7}{numworks/?.png}{.6}
\end{document}