使用特定字体生成随机数

使用特定字体生成随机数

我的目标是创建一个表格或某种形式的环境,如下图所示。

我想要的是

每次编译时,数字应该是随机生成的,并且具有下面显示的字体。

具有特定字体的数字

这可能吗?

答案1

您可以使用 TikZ 节点和 pgf 生成的随机数,例如:

\documentclass{article}
\usepackage{tikz}
\usepackage[T1]{fontenc}
\usepackage[ocr-a]{ocr}
\usetikzlibrary{chains,positioning}
\usepackage{datetime}
\pgfmathparse{\year+\time+\currenthour+\currentminute*\currentsecond}
\pgfmathsetseed{\pgfmathresult}
\begin{document}
\begin{tikzpicture}[start chain=1 going right,node distance=-0.4pt]
    \foreach \x in {1,2,...,15} {
        \node (\x) [draw,on chain=1] {\pgfmathparse{random(0,9)}\ocr{\pgfmathresult}};} 
    \node [above of=1,anchor=south west,yshift=2ex,xshift=-2.4ex]
        {Do not write in this area};
    \node [below of=1,anchor=north west,yshift=-2ex,xshift=-2.4ex]
        {\scshape Each document must have a unique serial number};
\end{tikzpicture}
\end{document}

输出使用ocr-a数字,正如 Mico 在下面的评论中所建议的那样:

链上随机数

为了每次编译都获得不同的数字,您可以自行初始化随机数生成器

\pgfmathsetseed{<integer>}

\time默认情况下,它是*的值\year。因此在每个编译,所以我使用该datetime包来计算种子,同时使用分钟和秒。因此,随机值应该每秒都会改变。您也可以在文件中使用值或计数器.aux

您可以ocr-a从 CTAN 获取字体:http://ctan.org/pkg/ocr-a。如果你无法安装它,一个快速的解决方法是:你可以加载mftfm文件(例如来自这里),将它们放入您的文档目录并运行(使用fontencocr如上所述) - 它对我有用。

答案2

如果你无法管理字体,你可以下载OCR-A 数字 SVG并将其转换为 PDF(例如使用Inkscape。然后,通过传统的\includegraphics(从graphicx) 以及一些适当的trim-and- clip

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}% http://ctan.org/pkg/pgf
%\usepackage{graphicx}% http://ctan.org/pkg/graphicx (implicitly loaded by tikz)
\usetikzlibrary{chains}
\begin{document}

% Extract numerals from image
\expandafter\def\csname ocr-a-0\endcsname{\includegraphics[width=2ex,trim=0 0 4990 0,clip]{ocr-a}}%
\expandafter\def\csname ocr-a-1\endcsname{\includegraphics[width=2ex,trim=554 0 4438 0,clip]{ocr-a}}%
\expandafter\def\csname ocr-a-2\endcsname{\includegraphics[width=2ex,trim=1109 0 3882 0,clip]{ocr-a}}%
\expandafter\def\csname ocr-a-3\endcsname{\includegraphics[width=2ex,trim=1664 0 3327 0,clip]{ocr-a}}%
\expandafter\def\csname ocr-a-4\endcsname{\includegraphics[width=2ex,trim=2218 0 2773 0,clip]{ocr-a}}%
\expandafter\def\csname ocr-a-5\endcsname{\includegraphics[width=2ex,trim=2773 0 2218 0,clip]{ocr-a}}%
\expandafter\def\csname ocr-a-6\endcsname{\includegraphics[width=2ex,trim=3327 0 1664 0,clip]{ocr-a}}%
\expandafter\def\csname ocr-a-7\endcsname{\includegraphics[width=2ex,trim=3883 0 1109 0,clip]{ocr-a}}%
\expandafter\def\csname ocr-a-8\endcsname{\includegraphics[width=2ex,trim=4437 0 555 0,clip]{ocr-a}}%
\expandafter\def\csname ocr-a-9\endcsname{\includegraphics[width=2ex,trim=4991 0 0 0,clip]{ocr-a}}%

\begin{tikzpicture}[start chain=1 going right,node distance=-0.4pt]
  \foreach \x in {1,2,...,15} {
    \node [draw,on chain=1] {\pgfmathparse{random(9)}\csname ocr-a-\pgfmathresult\endcsname};} 
\end{tikzpicture}

\end{document}

在上面的例子中,不需要明确加载graphicx,因为tikz已经加载了。

Inkscape 中执行以下步骤:

  1. 打开文档:

    Inkscape-打开 SVG

  2. 另存为 PDF:

    Inkscape-保存为 PDF

相关内容