Latex 中的苏联邮政编码数字

Latex 中的苏联邮政编码数字

对于教科书上的一些问题,我需要数字 0...9,就像苏联邮政信封上的邮政编码一样,

像这样

苏联信封示例

有人知道在 LaTeX 中可以使用的字体或软件包吗?谢谢

答案1

在此处输入图片描述

没有字体或包但是...

\documentclass{article}

\def\zz#1{%
\begin{picture}(10,20)\thicklines
\ifx7#1\else\ifx4#1\else\ifx1#1\else
  \put(0,0){\line(1,0){10}}%
\fi\fi\fi
\ifx7#1\else\ifx1#1\else\ifx0#1\else
  \put(0,10){\line(1,0){10}}%
\fi\fi\fi
\ifx4#1\else\ifx1#1\else
  \put(0,20){\line(1,0){10}}%
\fi\fi
%
\ifx9#1\else\ifx8#1\else\ifx7#1\else\ifx6#1\else\ifx5#1\else\ifx4#1\else\ifx3#1\else\ifx2#1\else\ifx1#1\else\ifx0#1\else
  \put(0,0){\line(1,1){10}}%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
\ifx9#1\else\ifx8#1\else\ifx6#1\else\ifx5#1\else\ifx4#1\else\ifx3#1\else\ifx2#1\else\ifx0#1\else
  \put(0,10){\line(1,1){10}}%
\fi\fi\fi\fi\fi\fi\fi\fi
%
\ifx9#1\else\ifx5#1\else\ifx4#1\else\ifx3#1\else\ifx1#1\else
  \put(0,0){\line(0,1){10}}%
\fi\fi\fi\fi\fi
\ifx7#1\else\ifx3#1\else\ifx2#1\else\ifx1#1\else
  \put(0,10){\line(0,1){10}}%
\fi\fi\fi\fi
\ifx7#1\else\ifx2#1\else
  \put(10,0){\line(0,1){10}}%
\fi\fi
\ifx7#1\else\ifx6#1\else\ifx5#1\else
  \put(10,10){\line(0,1){10}}%
\fi\fi\fi
\end{picture}}

\begin{document}

\zz0 \zz1 \zz2 \zz3 \zz4 \zz5 \zz6 \zz7 \zz8 \zz9


\end{document}

答案2

这是使用原始的解决方案\pdfliteral。它与格式无关。如果您需要 10 pt 以外的其他尺寸,可以在使用前使用缩放。

\def\bA{0 0 }\def\bB{5 0 }\def\bC{0 5 }\def\bD{5 5 }\def\bE{0 10 }\def\bF{5 10 }
\def\SUdigit#1{\leavevmode\kern1pt\hbox to5pt{\vbox to 10pt{}%
   \pdfliteral{q 0.9963 0 0 0.9963 0 0 cm 1 j 1 J 
      \ifcase#1 \bA m \bB l \bF l \bE l h S \or               % 0
                \bC m \bF l \bB l S \or                       % 1
                \bE m \bF l \bD l \bA l \bB l S \or           % 2
                \bE m \bF l \bC l \bD l \bA l S \or           % 3
                \bE m \bC l \bD l S \bF m \bB l S \or         % 4
                \bF m \bE l \bC l \bD l \bB l \bA l S \or     % 5
                \bF m \bC l \bA l \bB l \bD l \bC l S \or     % 6             
                \bE m \bF l \bC l \bA l S \or                 % 7
                \bA m \bB l \bF l \bE l h S \bC m \bD l S \or % 8
                \bA m \bD l \bF l \bE l \bC l \bD l S \fi     % 9
      Q}\hss}\kern1pt
}

\SUdigit 0 \SUdigit 1 \SUdigit 2 \SUdigit 3 \SUdigit 4
\SUdigit 5 \SUdigit 6 \SUdigit 7 \SUdigit 8 \SUdigit 9

\bye

美国邮政

答案3

佩奇金邮政编码或者帖子索引字体可以完成这个工作。

Pechkin 字体

答案4

当 Knuth 在 1977 年设计 TeX 时,他设计了一个名为 METAFONT 的配套系统(这实际上是他当时的主要动机:定义自己的字体)。这是一种声明性语言,其中解释如何绘制字符,这是它的优点和缺点。它直接以特定的分辨率生成像素表示,而从那时起,世界其他地方最终都朝着另一个方向发展,因此对于大多数应用程序(例如在屏幕上渲染)来说,它现在效果不佳。所以这个问题更多的是出于兴趣/好奇,而不是(唉)实用性,但尽管如此,这个问题还是一个简单演示 METAFONT 的机会。(请注意,这是我第一次使用 METAFONT,因此它可能无法说明良好的做法。)

对于这些邮政编码数字,如果您想象一下它们绘制的网格,您可以指定有趣的点的坐标并给它们命名 1 到 6(wh是字符的宽度和高度):

m := 0.5*h;
z1=(0,h); z2=(w,h);
z3=(0,m); z4=(w,m);
z5=(0,0); z6=(w,0);

然后可以给每个字符一个简单的定义:例如,字符 1 可以定义为从点 3 到点 2 到(点 4 到)点 6 画一条线。这是你可以告诉 METAFONT 的内容:

draw z3--z2--z6;

数字 1

beginccharMETAFONT 具有宏(如 TeX),因此使用用于定义指向z1的宏z6,10 位数字的定义可以简单如下:

begincchar("0"); draw z2--z1--z5--z6--cycle; endchar;
begincchar("1"); draw z3--z2--z6; endchar;
begincchar("2"); draw z1--z2--z4--z5--z6; endchar;
begincchar("3"); draw z1--z2--z3--z4--z5; endchar;
begincchar("4"); draw z1--z3--z4; draw z2--z6; endchar;
begincchar("5"); draw z2--z1--z3--z4--z6--z5; endchar;
begincchar("6"); draw z2--z3--z5--z6--z4--z3; endchar;
begincchar("7"); draw z1--z2--z3--z5; endchar;
begincchar("8"); draw z2--z1--z5--z6--cycle; draw z3--z4; endchar;
begincchar("9"); draw z4--z3--z1--z2--z4--z5; endchar;

使用 METAFONT 生成的数字

你可以通过编程来参数化各种东西,比如宽度和高度、左右“间隙”(侧边距)、中间线的高度、字体的粗细等,以生成不同的字体。输入以下内容postaldefault.mf

leftgap := 0.1;
rightgap := 0.1;
penthickness := 0.08;
midlineheight := 0.5;
toplineheight := 1;
width# := 9pt#;
height# := 10pt#;
input postal

以及以下内容postalbizarre.mf

leftgap := 0.4;
rightgap := 0.1;
penthickness := 0.12;
midlineheight := 0.3;
toplineheight := 0.9;
width# := 5pt#;
height# := 8pt#;
input postal

两者都是包装公共字符定义的参数文件,位于postal.mf

mode_setup;
def begincchar(expr c) =
  beginchar(c, width#, height#, 0);
    t := toplineheight * h;
    m := midlineheight * h;
    a := leftgap * w;  b := w - rightgap * w;
    z1=(a,t); z2=(b,t);
    z3=(a,m); z4=(b,m);
    z5=(a,0); z6=(b,0);
    pickup pencircle scaled (penthickness * w);
    penlabels(1,2,3,4,5,6);
enddef;
begincchar("0"); draw z2--z1--z5--z6--cycle; endchar;
begincchar("1"); draw z3--z2--z6; endchar;
begincchar("2"); draw z1--z2--z4--z5--z6; endchar;
begincchar("3"); draw z1--z2--z3--z4--z5; endchar;
begincchar("4"); draw z1--z3--z4; draw z2--z6; endchar;
begincchar("5"); draw z2--z1--z3--z4--z6--z5; endchar;
begincchar("6"); draw z2--z3--z5--z6--z4--z3; endchar;
begincchar("7"); draw z1--z2--z3--z5; endchar;
begincchar("8"); draw z2--z1--z5--z6--cycle; draw z3--z4; endchar;
begincchar("9"); draw z4--z3--z1--z2--z4--z5; endchar;
end

现在您可以在 TeX/LaTeX 中使用这些字体:

\documentclass{article}  
\begin{document}
\font\postaldefault=postaldefault
\font\postalbizarre=postalbizarre
\pagestyle{empty}
These digits {\postaldefault 0123456789} are postal.

These digits {\postalbizarre 0123456789} are postal.
\end{document}

(注意:为了获得最佳效果,不要使用 编译上述内容pdflatex,而是使用latex,然后使用类似dvipng -D 1200DVI 文件上的命令。我告诉过你这个答案不是为了实用!)

输出

相关内容