我想重新定义包\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
希望在其参数中看到一个明确的数字(宏扩展之后),而不是计数器值。