如何将数字转换为长度?

如何将数字转换为长度?

我正在尝试生成一个“词云”通过在单词周围使用\mbox带有随机空格的 es。

在下面的代码中,我删除了改变字体大小的内容,并且为了调试目的\mbox用 es 替换了 es 。\framebox

\documentclass{article}

\usepackage[first=1, last=10]{lcg}

\newcommand*{\wordtag}[1]{%
    \framebox{\vspace{3pt}\hspace{5pt}#1\vspace{1pt}\hspace{6pt}}%
}


\begin{document}
\rand


\wordtag{color}
\wordtag{animals}


\end{document}

\rand当我用(即)替换长度时\vspace{\rand pt},出现以下错误:

! Illegal unit of measure (pt inserted).

有人知道如何修复这个错误吗?

为什么\rand文档开头没有打印任何内容?

有没有更好的方法来制作词云?

答案1

包装的手册lcg指出:

\rand
每次调用该命令\rand都会将一个新的随机数写入用户使用密钥 [=package option] 提供的计数器counter或此包的标准计数器rand。现在可以做任何可以用计数器做的事情了。

因此\rand不会扩展为数字,因此不会排版任何内容,也不能用于长度。您需要先使用它,然后才能使用计数器rand\value{rand}例如\vspace{\value{rand} pt}

您还可以使用包的数学引擎pgf。它提供\pgfmathrandom{x,y}(也可以使用\pgfmathparse{random(x,y)}和朋友访问)并将结果存储到中\pgfmathresult。这里x和是与和相同y的数字。firstlastlcg

\usepackage{pgf}
% ...
\pgfmathrandom{1,10}
\vspace{\pgfmathresult pt}

% or even
\newlength{\randomlength}
\pgfmathsetlength{\randomlength}{random(1,10)}
\vspace{\randomlength}

答案2

在里面文档因为lcg,它说

每次调用该命令\rand都会将一个新的随机数写入用户使用密钥⟨counter⟩提供的计数器或此包的标准计数器— rand

要获取存储在计数器中的值,rand请使用\therand。因此,

\vspace{\therand pt}

将工作。

相关内容