絵もいいけど、文字もいいよ♪
TeX & LaTeX Advent Calendar : ATND—TeX で騒げ、TeX で笑え
5 日目です!
12/4 は neruko3114 さん http://neruko3114.blogspot.jp/2012/12/numerical-calculation-packages-for-tex.html
12/6 は peccul さん = Excelに嫌気がさしてLaTeXで書き直した話 #texadvent - ぺっくブログミラー@peccul
[2012-12-05 追加]このネタの features、このネタにまつわるお話を加筆。
GitHub - munepi/iamjatex: LaTeX package to make "Just another TeXnician" work で絵を描くのも楽しいけど、文字を出すのも楽しかったです*1。
では、どうぞ!
%#!platex bmpchar && dvipdfmx -l bmpchar \documentclass[landscape,a4paper]{jsarticle} \makeatletter \def\hex@digits#1{% \if 0#10000\else\if 1#10001\else\if 2#10010\else\if 3#10011% \else\if 4#10100\else\if 5#10101\else\if 6#10110\else\if 7#10111% \else\if 8#11000\else\if 9#11001\else\if A#11010\else\if B#11011% \else\if C#11100\else\if D#11101\else\if E#11110\else\if F#11111% \else\errmessage{unknown number: #1}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} \def\x@xx@bmp@z{ }% \def\x@xx@bmp@ne{■}% \def\x@xx@bmp#1{\expandafter\@x@xx@bmp#1} \def\@x@xx@bmp#1#2#3#4#5#6#7#8{% \@for\reserved@bin:={#1,#2,#3,#4,#5,#6,#7,#8}\do{% \if 0\reserved@bin\x@xx@bmp@z\else\x@xx@bmp@ne\fi}% } \def\x@xx#1{\expandafter\@x@xx#1} \def\@x@xx#1#2{% \hex@digits#1\hex@digits#2} \def\bmpchar#1{% \edef\x@xxlist{\zap@space#1 \@empty}% \leavevmode \vbox{\baselineskip\z@ \@for\reserved@hex:=\x@xxlist\do{% \edef\@reserved@hex{\x@xx\reserved@hex}% \hbox{\x@xx@bmp{\@reserved@hex}}}}} \makeatother \pagestyle{empty} \begin{document} \parindent0zw \bmpchar{00,00,88,88,88,88,F8,88,88,88,88,00,00}% \bmpchar{00,00,00,00,00,70,08,78,88,88,78,00,00}% \bmpchar{00,00,00,00,00,F0,88,88,88,F0,80,80,80}% \bmpchar{00,00,00,00,00,F0,88,88,88,F0,80,80,80}% \bmpchar{00,00,00,00,00,88,88,88,88,78,08,88,70}% \bmpchar{00,00,F8,20,20,20,20,20,20,20,20,00,00}% \bmpchar{00,00,00,00,00,70,88,F8,80,88,70,00,00}% \bmpchar{00,00,88,88,50,50,20,50,50,88,88,00,00}% \bmpchar{00,20,00,00,00,60,20,20,20,20,70,00,00}% \bmpchar{00,00,00,00,00,B0,C8,88,88,88,88,00,00}% \bmpchar{00,00,00,00,00,78,88,88,88,78,08,88,70}% \bmpchar{00,00,20,20,20,20,20,20,00,00,20,00,00}% \vfill \textit{\TeX\ \& \LaTeX\ Advent Calendar 2012} \end{document} STARTFONT 2.1 COMMENT This font is a free software. COMMENT Unlimited permission is granted to use, copy, and distribute it, COMMENT with or without modification, either commercially and noncommercially. COMMENT THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY. FONT -mplus-fxd-medium-R-semicondensed--12-120-75-75-C-60-iso8859-1 SIZE 13 75 75 FONTBOUNDINGBOX 6 13 0 -2 STARTPROPERTIES 23 FONTNAME_REGISTRY "" FOUNDRY "mplus" FAMILY_NAME "fxd" WEIGHT_NAME "medium" SLANT "R" SETWIDTH_NAME "semicondensed" ADD_STYLE_NAME "" PIXEL_SIZE 12 POINT_SIZE 120 RESOLUTION_X 75 RESOLUTION_Y 75 SPACING "C" AVERAGE_WIDTH 60 CHARSET_REGISTRY "iso8859" CHARSET_ENCODING "1" COPYRIGHT "Copyright (C) 2002-2004 COZ" WEIGHT 10 X_HEIGHT 11 QUAD_WIDTH 6 DEFAULT_CHAR 0 FONT_DESCENT 2 FONT_ASCENT 11 _XMBDFED_INFO "Edited with xmbdfed 4.5." ENDPROPERTIES CHARS 224
なお、上記 TeX 文章中の bitmap 文字データは、M+ BITMAP FONTS を利用しました。感謝いたします。
このネタの features
このネタにまつわるお話
EuroTeX 2012 の 3 日目、Excursion でバス移動をしていたとき、僕は GitHub - munepi/iamjatex: LaTeX package to make "Just another TeXnician" work においている Breskens のアスキーアートを作っていた。その作成模様を見ていた、となりに座っていたドイツ人の方がこのアスキーアートに興味を持ってくれた。
僕のつたない英語で、iamjatex.sty の原理と元ネタ辺りを必死で説明した(笑 すると、その方がこんなことを言ってくれた。「読み込んだ画像を bitmap 化して、そのデータから何か表示すれば面白いんじゃないか?」と。なるほど、読み込んだ画像を ImageMagick などの外部ツールで bitmap 化し、一定の処理を意味も無く TeX で処理して、何かを出すのも面白いかもしれない。
ちなみに、そのドイツ人の方は、ぼくの EuroTeX 2012 の発表後、「iamjatex.sty で書かれた Knuth のアスキーアート(TeX ユーザの集い 2011 LT で発表した例の絵)を見つけたぞ!」と言って、笑ってくださった。
*1:えっ、\expandafter をあまり使ってへんって?そんなんで満足してよいのかって?(笑