\lipsum 重新定义不能很好地扩展 lcg 随机整数

\lipsum 重新定义不能很好地扩展 lcg 随机整数

我想重新定义包\lipsum提供的命令lipsum,使其\lipsum{}输出的不是预定义数量的 lorem ipsum 段落,而是单个随机的 lorem ipsum 段落(即每次从包提供的 150 个段落中随机挑选的段落)。

我认为使用\usepackage[first=1,last=150]{lcg}可以让我得到一个随机整数0 < i < 151

我的 MWE 是这样的:

\documentclass{article}
\usepackage[first=1,last=150]{lcg}
\usepackage{lipsum}

\let\oldl\lipsum
\renewcommand{\lipsum}{%
  \rand% as far as I could understand from the lcg documentation, each time this is called the \rand counter is assigned a new integer in the interval previously specified
  \newcommand{\Rand}{\value{\rand}}% thought this would be necessary to ensure that the optional argument passed to \oldl is expanded a single time, like the lipsum documentation describes as mandatory; is this correct?
  % BTW: is it ok to define a command inside the definition of a command?
  \oldl[\Rand]%
}

\begin{document}
I am a random sample text:

\lipsum{}

\end{document}

我收到的错误表明宏的扩展方式有问题,但我无法找出问题到底是什么。

附言:我意识到用这种快捷方式输入一些垃圾文本有点小题大做;我更感兴趣的是为什么我的 MWE 不能按预期工作,而不是真正让这种新\lipsum命令发挥作用。

答案1

我不会重新定义\lipsum

\documentclass{article}
\usepackage[first=1,last=150]{lcg}
\usepackage{lipsum}

\newcommand{\randlipsum}{%
  \rand % store a random integer in rand
  \lipsum[\arabic{rand}]%
}

\begin{document}
I am a random sample text:

\randlipsum

\end{document}

事实是,它\lipsum希望在其参数中看到一个明确的数字(宏扩展之后),而不是计数器值。

相关内容