领导和评估顺序

领导和评估顺序

我制作了这个简单的乳胶文件:

\documentclass{minimal}
\usepackage{tikz}
\newcommand\randdot{%
\tikz{\pgfmathsetmacro{\r}{0.01+0.05*random()}\fill (0,0) circle (\r);}\ }

\begin{document}

\randdot\randdot\randdot\randdot\randdot\randdot

Test \leaders\hbox{\randdot\ }\hfill 3 \hfill \ 

\randdot\randdot\randdot\randdot\randdot\randdot

\end{document}

随机点,但不在领导者中

新命令 randdot 排版一个随机大小的点。该命令运行良好,但是当我在领导者中使用它时,点不再是随机的。领导者命令必须仅评估一次 randdot,然后复制它...

我如何才能获得一个随机的领导者,每个点的评估都不同?

谢谢 !!

答案1

David 提到的 TikZ 方法是现在著名的宏(感谢 Andrew Stacey 和 Peter Grill) \tikzmark。基本上,您将 TikZ 坐标留在您喜欢的位置,然后在以后的 TikZ 图片中引用它们。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\tikzset{randlead/.style={decoration={
        markings,% switch on markings
        mark=% actually add a mark
        between positions 0 and 1 step 5mm
        with
            {
            \pgfmathsetmacro{\r}{0.01+0.05*random()}\fill (0,0) circle (\r);
            }
        },
        decorate
    }
}
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture,baseline=-0.5ex] \node (#1) {};}

\begin{document}
Test\tikzmark{a1} \hfill \tikzmark{a2}3 \hfill 

Test some text and then Test \tikzmark{a3} \hfill \tikzmark{a4}165 \hfill 

\begin{tikzpicture}[overlay,remember picture]
\draw[randlead] (a2) -- (a1);
\draw[randlead] (a4) -- (a3);
\end{tikzpicture} 
\end{document}

在此处输入图片描述

可以进行进一步的调整,但请将此作为概念证明。

答案2

在此处输入图片描述

可能有一种 tikz 方法来获取坐标,但我在这里使用 pdftex 原语。使用胶水代替引线,但测量距离并在第二次运行时覆盖一些框。

\documentclass{minimal}
\usepackage{tikz}
\newcommand\randdot{%
\tikz{\pgfmathsetmacro{\r}{0.01+0.05*random()}\fill (0,0) circle (\r);}\ }

\begin{document}
\makeatletter

\randdot\randdot\randdot\randdot\randdot\randdot


Test \leaders\hbox{\randdot\ }\hfill 3 \hfill \ 

Test %
\pdfsavepos\write\@auxout{\gdef\noexpand\leada{\the\pdflastxpos}}%
\ifx\leada\@undefined\else
\rlap{%
\dimen@\leadb sp
\advance\dimen@ - \leada sp
\loop
\setbox0\hbox{\randdot\ }%
\advance\dimen@-\wd\z@
\ifdim\dimen@>\z@
\box\z@
\repeat
}%
\fi
\hfill
\pdfsavepos\write\@auxout{\gdef\noexpand\leadb{\the\pdflastxpos}}%
4 \hfill \ 

\randdot\randdot\randdot\randdot\randdot\randdot

\end{document}

相关内容