我的目标是创建一个表格或某种形式的环境,如下图所示。
每次编译时,数字应该是随机生成的,并且具有下面显示的字体。
这可能吗?
答案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。如果你无法安装它,一个快速的解决方法是:你可以加载mf
和tfm
文件(例如来自这里),将它们放入您的文档目录并运行(使用fontenc
和ocr
如上所述) - 它对我有用。
答案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 中执行以下步骤:
打开文档:
另存为 PDF: