我收到错误:Missing number, treated as zero.
尝试将计数器传递给\lipsum
。我觉得我可能忘记了一些基本技巧,但我已经搜索了整个网站,但还是没有找到以下方法不起作用的原因:
\documentclass{article}
\usepackage{lipsum}
\newcount\zz
\loop
\lipsum[\zz]
\advance\zz1
\ifnum\zz<60
\repeat
\end{document}
如果有人想知道为什么我要为此烦恼,当\lipsum[1-60]
给我所有这些段落时,那是因为它一次性给出了所有内容,而我想在每个元素中添加一些内容,因此会有其他代码行添加到循环中。
特别是,循环使我能够使用计数器值,这也是首先使用循环的原因之一。
答案1
使用\the\zz
. lipsum
目前会牺牲一些灵活性(比如直接使用计数)来解析数字范围(比如2-5
)。更强大的解析器可以解决这个问题,但使用 .\the
可以保证工作:
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\newcount\zz
\loop
\lipsum[\the\zz]
\advance\zz1
\ifnum\zz<60
\repeat
\end{document}
答案2
我会用它expl3
来做这项工作。
该命令\lipsumloop
有四个参数
#1
(可选,默认为 1)表示起点#2
对于终点#3
是段落前要打印的材料#4
是段落后要打印的材料
在最后两个参数中,您可以使用#1
它来代表当前的 lipsum 段落编号。
\documentclass{article}
\usepackage{lipsum}
\ExplSyntaxOn
\NewDocumentCommand{\lipsumloop}{O{1} m +m +m}
{% #1 = start point, #2 = end point, #3 = pre, #4 = post
\int_step_inline:nnn { #1 } { #2 } { #3 \lipsum[##1] #4 }
}
\ExplSyntaxOff
\begin{document}
\lipsumloop[3]{6}{\par\addvspace{1ex}This is lipsum #1: \\}{~\textbullet~End of lipsum #1\par}
\end{document}