如何让 lipsum 接受计数作为参数

如何让 lipsum 接受计数作为参数

我收到错误: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}

在此处输入图片描述

相关内容