├── README ├── README.en ├── cons-1.eps ├── cons-1.pdf ├── cons-2.eps ├── cons-2.pdf ├── cons-2a.eps ├── cons-2a.pdf ├── cons-3.eps ├── cons-3.pdf ├── cons-4.eps ├── cons-4.pdf ├── cons-5.eps ├── cons-5.pdf ├── doclicense.texi ├── drawers.eps ├── drawers.pdf ├── emacs-lisp-intro-ja.pdf ├── emacs-lisp-intro-ja.texi ├── emacs-lisp-intro.texi ├── emacsver.texi ├── keisen.pl ├── lambda-1.eps ├── lambda-1.pdf ├── lambda-2.eps ├── lambda-2.pdf ├── lambda-3.eps ├── lambda-3.pdf └── texinfo.tex /README: -------------------------------------------------------------------------------- 1 | ;; README for emacs-lisp-jp.texi -*- indented-text -*- 2 | 3 | 新・これは何か? 4 | ================ 5 | 6 | このレポジトリは、15年近く昔の『Programming in Emacs Lisp: A 7 | simple introduction』の日本語訳を、現代版に書きなおすことを目指して 8 | います。 9 | 10 | 旧版から10年以上が経過し、Emacs は Unicode 対応になり、またバッファ 11 | 等の制御命令が整理されて、本書の一部のテキストはやや古くなりつつあ 12 | ります。これらを最新版に直すことで、より多くのEmacs Lisp 入門者の教 13 | 科書となることを目指します。 14 | 15 | 以下はオリジナルのREADMEに含まれている文章です。 16 | 17 | 18 | これは何か? 19 | ============ 20 | 21 | このディレクトリには、GNU の配布に含まれている Robert J. Chassell 22 | 氏の 23 | 24 | 『Programming in Emacs Lisp: A simple introduction』 25 | (ファイル名は emacs-lisp-intro-1.05.tar.gz) 26 | 27 | の日本語訳、及び簡単に修正した texinfo.tex ファイルが含まれていま 28 | す。内容は非プログラマ向けの Emacs Lisp 入門です。特にプログラムに 29 | 興味はないが、Emacs をもっとカスタマイズして便利に使いたい方から、 30 | これを手始めに Emacs Lisp を勉強していきたいという人まで、役に立つ 31 | のではと思います。なお、素人が個人的に訳したものであるため拙い部分 32 | も多く、形式上もあまりしっかりしてはいません。英語版の texindex が 33 | 通るように日本語の索引もつけておりません。訳の間違い等がありました 34 | ら下記までお知らせ頂けると嬉しく思います。 35 | 36 | matsu@math.s.chiba-u.ac.jp 37 | SGU01663@nifty.ne.jp 38 | 39 | 40 | 配布条件等 41 | ========== 42 | 43 | この文書は全くの *無保証* です。修正や再配布等については、 44 | emacs-lisp-intro-jp.texi の 中にある許可告知の内容に従います。なお、 45 | version 0.91 までは配布条件として GPL に従うと書いておりましたが、 46 | これは私の勘違いであり、許可告知には「GPL に従う」という表現はどこ 47 | にもありません。(このことは飯田義朗様から御指摘頂きました。) GPL 48 | は一般にソースプログラムに対して適用されるもので、この場合ある条件 49 | の元ではソースプログラムなしでもオブジェクトファイル等が配布できる 50 | ような配慮がなされています。一方、マニュアルに対する許可告知は必ず 51 | ソースごと配布するか、あるいは印刷した結果だけを配布するかという選 52 | 択肢になっており、GPL よりも厳しい条件になっています。従って、 53 | PostScript や DVI ファイルのような、ソースを復元出来ない形式だけで 54 | は配布出来ないことに御注意下さい。 参考のために以下に訳を載せます 55 | がこれはあくまで便宜的なものです。正確には原文を参照して下さい。 56 | 57 | ---- ここから ---- 58 | Copyright (C) 1990, '91, '92, '93, '94, '95 Free Software Foundation, Inc. 59 | 60 | 著作権表示、及びこの許可告知がすべての写しに掲載されている場合に、この 61 | マニュアルをそのまま写した複写を作成、配布することを許可します。 62 | 63 | 印刷した文書に、この段落を除くことを例外としてこの告知と同一の複写許可 64 | 告知が掲載されている場合に、このファイルを TeX で処理し、出来た結果を 65 | 印刷することを許可します。(この段落は印刷されたマニュアルでは関係あり 66 | ません。) 67 | 68 | ``Copying''の節と``GNU General Public License'' の節がオリジナルと全く 69 | 同様の形で含まれており、かつ修正版全体がこれと同一の許可告知の下で配布 70 | される場合には、そのままの写しを配布する場合と同じ条件の下で、修正版を 71 | 複写、及び配布することを許可します。 72 | 73 | 上の修正版と同じ条件の下で、このマニュアルを他の言語に翻訳したものを複 74 | 写し、配布することを許可します。この場合、この許可告知は Free Software 75 | Foundation によって許可された翻訳であっても構いません。 76 | ---- ここまで ---- 77 | 78 | 79 | 利用の仕方 80 | ========== 81 | 82 | 印刷して読む場合 83 | ---------------- 84 | 85 | ASCII日本語TeX か NTT-JTeX (jtex とする) を用いて、 86 | 87 | jtex emacs-lisp-intro-jp.texi 88 | texindex emacs-lisp-intro-jp.?? 89 | jtex emacs-lisp-intro-jp.texi 90 | 91 | のようにして emacs-lisp-intro-jp.dvi を作って下さい。ただし、漢字 92 | コードが EUC になっているので、DOS/Windows な方は Shift-JIS に変換 93 | してご利用下さい。蛇足ですが、Texinfo ファイルは LaTeX のコマンド 94 | (latex, jlatex, platex という名前のことが多い) ではタイプセットで 95 | きません。あくまで Plain TeX (tex, jtex, ptex という名前のことが多 96 | い) でタイプセットしなければならないことに御注意下さい。 97 | 98 | 分量は、A4 で印刷した場合は200ページ強になると思います。また、 99 | Postscript が使える場合は、ファイルの始めの方で、 100 | 101 | @set print-postscript-figure 102 | 103 | のコメントをはずし、 104 | 105 | @clear print-postscript-figure 106 | 107 | をコメントにしてやれば、図が綺麗に印刷されると思います。ただし筆者 108 | は実験していません。うまくいかない場合は README.org 等を参考になさっ 109 | て下さい。 110 | 111 | 112 | Info にして読む場合 113 | ------------------- 114 | 115 | Info ファイルを作成するには、例えば mule を使っている場合は、 116 | コマンドラインで 117 | 118 | mule -batch -l texinfmt -f batch-texinfo-format emacs-lisp-intro-jp.texi 119 | 120 | とすればよいです。また、これは川村尚生様から教えていただいたのです 121 | が、emacs-20.2 (Mule-3.0) では、 122 | 123 | emacs --no-site-file -batch ¥ 124 | --eval '(set-language-environment "Japanese")' ¥ 125 | -l texinfmt -f batch-texinfo-format emacs-lisp-intro-jp.texi 126 | 127 | のように言語環境を Japanese に指定する必要があるようです。 128 | 129 | 勿論 Mule を起動して emacs-lisp-intro-jp.texi を読み込んでから、 130 | C-c C-e C-b (texinfo-format-buffer) としても出来ます。うまく行かな 131 | い場合は、まず texinfmt.el のバージョンを疑って下さい。Mule-2.3 に 132 | 附属のものでは大丈夫でした。なお、Info ファイルの名前は、 133 | emacs-lisp-intro-jp.texi 三行目の 134 | 135 | @setfilename emacs-lisp-intro-jp 136 | 137 | の部分を書換えることで、変更出来ます。後は、出来たファイルを Info 138 | ファイルのあるディレクトリ(通常は /usr/local/info)に置き、そこの 139 | dir という名前のファイルにエントリを追加するだけです。これは、 140 | install-info というコマンドがあれば、(名前を変更してなければ) 141 | 142 | install-info emacs-lisp-intro-jp 143 | 144 | とすればよいですし、なければ直接 dir ファイルに 145 | 146 | * Emacs lisp Intro: (emacs-lisp-intro-jp). Programming Emacs Lisp. 147 | 148 | のような行を追加しても OK です。root の権限がない場合は、例えば 149 | Emacs version 19 以降(Mule version 2 以降)であれば、.emacs の中で 150 | 151 | (setq Info-directory-list '("‾/info" "/usr/local/info")) 152 | 153 | などと書いて info ディレクトリを追加指定した後、/usr/local/info 154 | 等の下にあった dir ファイル及び、今回作成した info ファイルを 155 | ‾/info にコピーし、そこで同様のことをしても OK です。 156 | 157 | これで二つのディレクトリの dir ファイルをマージして表示してくれる 158 | はずです。他の info ファイルを組込む場合も同様ですが、メニューを手 159 | で追加する際は、コロンや、(emacs-lisp-intro-jp) の後のピリオドを忘れ 160 | ないように注意します。 161 | 162 | なおもし JIS 罫線が化けない環境であれば、附属の keisen.pl を使うこ 163 | とで、多少アスキー図が綺麗になります。 164 | 165 | perl -i keisen.pl emacs-lisp-intro-jp.texi 166 | 167 | などとしてお使い下さい。perl が無い場合は、 168 | 169 | @c ascii diagram 170 | 171 | という行がある箇所を手で直しても OK です。 172 | 173 | 174 | 附属の texinfo.tex について 175 | =========================== 176 | 177 | 附属の texinfo は過去の日本語化された texinfo.tex をいくつか参考に 178 | しておりますが、良く分らずに修正した部分もあるので、おかしな所があ 179 | るかもしれません。(参考にさせて頂いた texinfo ファイルを作成された 180 | 方、ありがとうございました。) 不具合は全て私の責任です。気になる場 181 | 合は、ちゃんと日本語化されたものを何処からか取ってきて下さい。例え 182 | ば Emacs Lisp リファレンスマニュアルの日本語訳に附属のものなどは、 183 | しっかりしていると思います。(この場合 emacs-lisp-intro-jp.texi の 184 | 259、262行目の ¥chapmin を ¥chapdm に変更して下さい。私が試して見 185 | た所、著者名の日本語の所がちょっと小さくなる以外は問題なさそうでし 186 | た。ただ、@def の部分とかが多少見苦しくなるかもしれません。) 187 | 188 | ftp://etlport.etl.go.jp/pub/mule/elisp-manual-19-2.4-jp2.0.tar.gz 189 | 190 | 等に置いてあります。 191 | 192 | 193 | 謝辞 194 | ==== 195 | 196 | 上にも書きましたが、参考にさせて頂いた日本語の Texinfo を作成され 197 | た、戸村様、半田様、楠見様、高尾様、他の皆様ありがとうございました。 198 | また、木村浩一様、幸田薫様、本田博通様、山下健司様、神貞介様には、 199 | 前バージョンでの誤りや不具合な点を指摘して頂きました。更に、飯田義 200 | 朗様には、GPL と許可告知の違いについての指摘と丁寧な説明を頂きまし 201 | た。また、川村尚生様には、emacs-20.2 の場合の Info ファイルの作成 202 | 時の注意等を御指摘頂き、Linux の debian のパッケージを作成して頂き 203 | ました。(今の時点では「予定」ですが) 204 | 205 | なお、訳出にあたっては上記の Emacs Lisp リファレンスマニュアルを参 206 | 考にさせて頂きました。訳者の方々及び上の方々に深く感謝いたします。 207 | 208 | 2000-01-10 (Mon) 松田 茂樹 209 | 210 | 変更履歴 211 | ======== 212 | 213 | 0.96->0.97 * install-info に対応。eps ファイルの場所の記述の修正。 214 | 215 | 0.95->0.96 * 原文のバージョンが 1.04 から 1.05 に上がったのを機 216 | に、こちらも修正。その際、 217 | 218 | Cutting & Storing Text/delete-region 219 | 220 | の箇所に訳し忘れがあったのを発見(泣)、訳を追加。 221 | 222 | * eval-expression の標準のキーバインドが M-ESC から M-: 223 | に変更されたのに応じて、訳も修正。ただし、日本ではま 224 | だ 19.28 ベースの Mule-2.3 を使っている人も多いと思わ 225 | れるので、その旨書いておく。 226 | -------------------------------------------------------------------------------- /README.en: -------------------------------------------------------------------------------- 1 | Copyright (C) 2001-2013 Free Software Foundation, Inc. 2 | See the end of the file for license conditions. 3 | 4 | 5 | This directory contains the source of the "Introduction to Programming 6 | in Emacs Lisp" written by Robert J. Chassell, bob@gnu.org. This 7 | manual is an elementary introduction to programming in Emacs Lisp for 8 | people who are not programmers, and who are not necessarily interested 9 | in programming, but who do want to customize or extend their computing 10 | environment. 11 | 12 | This third edition of 2006 Oct 31 updates the previous editions to GNU 13 | Emacs 22. 14 | 15 | You will find additional instructions on formatting in the beginning 16 | of the Texinfo file 'emacs-lisp-intro.texi'. Best Wishes! 17 | 18 | 2006 Oct 31 19 | Robert J. Chassell, bob@gnu.org 20 | 21 | 22 | 23 | COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES 24 | 25 | The PostScript images (*.eps) contain copyright and license information 26 | in their headers. The PDF versions were automatically generated using 27 | the epstopdf utility, and are subject to the same conditions as their 28 | EPS counterparts. 29 | 30 | 31 | 32 | This file is part of GNU Emacs. 33 | 34 | GNU Emacs is free software: you can redistribute it and/or modify 35 | it under the terms of the GNU General Public License as published by 36 | the Free Software Foundation, either version 3 of the License, or 37 | (at your option) any later version. 38 | 39 | GNU Emacs is distributed in the hope that it will be useful, 40 | but WITHOUT ANY WARRANTY; without even the implied warranty of 41 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 42 | GNU General Public License for more details. 43 | 44 | You should have received a copy of the GNU General Public License 45 | along with GNU Emacs. If not, see . 46 | -------------------------------------------------------------------------------- /cons-1.eps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 EPSF-3.0 2 | %%BoundingBox: 35 711 289 757 3 | %%Title: cons-cell-diagram1 4 | %%CreationDate: Wed Mar 8 14:26:58 1995 5 | %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 6 | 7 | % Copyright (C) 1995, 1997, 2001-2013 Free Software Foundation, Inc. 8 | % 9 | % This file is part of GNU Emacs. 10 | % 11 | % GNU Emacs is free software: you can redistribute it and/or modify 12 | % it under the terms of the GNU General Public License as published by 13 | % the Free Software Foundation, either version 3 of the License, or 14 | % (at your option) any later version. 15 | % 16 | % GNU Emacs is distributed in the hope that it will be useful, 17 | % but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | % GNU General Public License for more details. 20 | % 21 | % You should have received a copy of the GNU General Public License 22 | % along with GNU Emacs. If not, see . 23 | 24 | /tgifdict 132 dict def 25 | tgifdict begin 26 | 27 | % 28 | % Using a zero value radius for an ellipse or an arc would result 29 | % in a non-invertible CTM matrix which causes problem when this 30 | % when this PostScript is wrapped inside other routines, such as 31 | % the multi.ps package from 32 | % ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such 33 | % error by uncommenting the sole line of the procedure below: 34 | % 35 | /tgif_min_radius 36 | { 37 | % dup 0.01 lt { pop 0.01 } if 38 | } bind def 39 | 40 | /tgifellipsedict 6 dict def 41 | tgifellipsedict /mtrx matrix put 42 | 43 | /tgifellipse 44 | { tgifellipsedict begin 45 | /yrad exch def 46 | /xrad exch def 47 | /y exch def 48 | /x exch def 49 | /savematrix mtrx currentmatrix def 50 | x y translate 51 | xrad yrad scale 52 | 0 0 1 0 360 arc 53 | savematrix setmatrix 54 | end 55 | } def 56 | 57 | /tgifarrowtipdict 8 dict def 58 | tgifarrowtipdict /mtrx matrix put 59 | 60 | /tgifarrowtip 61 | { tgifarrowtipdict begin 62 | /dy exch def 63 | /dx exch def 64 | /h exch def 65 | /w exch def 66 | /y exch def 67 | /x exch def 68 | /savematrix mtrx currentmatrix def 69 | x y translate 70 | dy dx atan rotate 71 | 0 0 moveto 72 | w neg h lineto 73 | w neg h neg lineto 74 | savematrix setmatrix 75 | end 76 | } def 77 | 78 | /tgifarcdict 8 dict def 79 | tgifarcdict /mtrx matrix put 80 | 81 | /tgifarcn 82 | { tgifarcdict begin 83 | /endangle exch def 84 | /startangle exch def 85 | /yrad exch def 86 | /xrad exch def 87 | /y exch def 88 | /x exch def 89 | /savematrix mtrx currentmatrix def 90 | x y translate 91 | xrad yrad scale 92 | 0 0 1 startangle endangle arc 93 | savematrix setmatrix 94 | end 95 | } def 96 | 97 | /tgifarc 98 | { tgifarcdict begin 99 | /endangle exch def 100 | /startangle exch def 101 | /yrad exch def 102 | /xrad exch def 103 | /y exch def 104 | /x exch def 105 | /savematrix mtrx currentmatrix def 106 | x y translate 107 | xrad yrad scale 108 | 0 0 1 startangle endangle arcn 109 | savematrix setmatrix 110 | end 111 | } def 112 | 113 | /tgifsetuserscreendict 22 dict def 114 | tgifsetuserscreendict begin 115 | /tempctm matrix def 116 | /temprot matrix def 117 | /tempscale matrix def 118 | 119 | /concatprocs 120 | { /proc2 exch cvlit def 121 | /proc1 exch cvlit def 122 | /newproc proc1 length proc2 length add array def 123 | newproc 0 proc1 putinterval 124 | newproc proc1 length proc2 putinterval 125 | newproc cvx 126 | } def 127 | /resmatrix matrix def 128 | /findresolution 129 | { 72 0 resmatrix defaultmatrix dtransform 130 | /yres exch def /xres exch def 131 | xres dup mul yres dup mul add sqrt 132 | } def 133 | end 134 | 135 | /tgifsetuserscreen 136 | { tgifsetuserscreendict begin 137 | /spotfunction exch def 138 | /screenangle exch def 139 | /cellsize exch def 140 | 141 | /m tempctm currentmatrix def 142 | /rm screenangle temprot rotate def 143 | /sm cellsize dup tempscale scale def 144 | 145 | sm rm m m concatmatrix m concatmatrix pop 146 | 147 | 1 0 m dtransform /y1 exch def /x1 exch def 148 | 149 | /veclength x1 dup mul y1 dup mul add sqrt def 150 | /frequency findresolution veclength div def 151 | 152 | /newscreenangle y1 x1 atan def 153 | 154 | m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt 155 | 156 | {{neg} /spotfunction load concatprocs 157 | /spotfunction exch def 158 | } if 159 | 160 | frequency newscreenangle /spotfunction load setscreen 161 | end 162 | } def 163 | 164 | /tgifsetpatterndict 18 dict def 165 | tgifsetpatterndict begin 166 | /bitison 167 | { /ybit exch def /xbit exch def 168 | /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def 169 | 170 | /mask 1 7 xbit 8 mod sub bitshift def 171 | bytevalue mask and 0 ne 172 | } def 173 | end 174 | 175 | /tgifbitpatternspotfunction 176 | { tgifsetpatterndict begin 177 | /y exch def /x exch def 178 | 179 | /xindex x 1 add 2 div bpside mul cvi def 180 | /yindex y 1 add 2 div bpside mul cvi def 181 | 182 | xindex yindex bitison 183 | { /onbits onbits 1 add def 1 } 184 | { /offbits offbits 1 add def 0 } 185 | ifelse 186 | end 187 | } def 188 | 189 | /tgifsetpattern 190 | { tgifsetpatterndict begin 191 | /cellsz exch def 192 | /angle exch def 193 | /bwidth exch def 194 | /bpside exch def 195 | /bstring exch def 196 | 197 | /onbits 0 def /offbits 0 def 198 | cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen 199 | {} settransfer 200 | offbits offbits onbits add div setgray 201 | end 202 | } def 203 | 204 | /tgifxpmdict 4 dict def 205 | /tgifbwpicstr 1 string def 206 | /tgifcolorpicstr 3 string def 207 | 208 | /tgifsetpixels { tgifxpmdict begin /pixels exch def end } def 209 | 210 | /tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def 211 | 212 | /tgifbwspot 213 | { tgifxpmdict begin 214 | /index exch def 215 | tgifbwpicstr 0 216 | pixels index 3 mul 3 getinterval aload pop 217 | 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add 218 | cvi put 219 | tgifbwpicstr 220 | end 221 | } def 222 | 223 | /tgifcolorspot 224 | { tgifxpmdict begin 225 | /index exch def 226 | pixels index 3 mul 3 getinterval aload pop 227 | 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 228 | 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 229 | 255 mul cvi tgifcolorpicstr 0 3 -1 roll put 230 | tgifcolorpicstr 231 | end 232 | } def 233 | 234 | /tgifnewcolorspot 235 | { tgifxpmdict begin 236 | /index exch def 237 | pixels index 3 mul 3 getinterval aload pop setrgbcolor 238 | end 239 | } def 240 | 241 | /tgifcolordict 4 dict def 242 | 243 | /colorimage where 244 | { pop } 245 | { /colorimage 246 | { tgifcolordict begin 247 | pop pop pop pop pop 248 | /ih exch def 249 | /iw exch def 250 | /x 0 def 251 | /y 0 def 252 | 1 1 ih 253 | { pop 1 1 iw 254 | { pop currentfile 255 | tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot 256 | x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto 257 | closepath fill 258 | /x x 1 add def 259 | } for 260 | /y y 1 add def 261 | /x 0 def 262 | } for 263 | end 264 | } def 265 | } ifelse 266 | 267 | /tgifpatdict 10 dict def 268 | 269 | /tgifpatbyte 270 | { currentdict /retstr get exch 271 | pat i cellsz mod get put 272 | } def 273 | 274 | /tgifpatproc 275 | { 0 1 widthlim {tgifpatbyte} for retstr 276 | /i i 1 add def 277 | } def 278 | 279 | /tgifpatfill 280 | { tgifpatdict begin 281 | /h exch def 282 | /w exch def 283 | /lty exch def 284 | /ltx exch def 285 | /cellsz exch def 286 | /pat exch def 287 | 288 | /widthlim w cellsz div cvi 1 sub def 289 | /retstr widthlim 1 add string def 290 | /i 0 def 291 | 292 | ltx lty translate 293 | w h true [1 0 0 1 0 0] {tgifpatproc} imagemask 294 | ltx neg lty neg translate 295 | end 296 | } def 297 | 298 | /pat1 def 299 | /pat2 <0000000000000000> def 300 | /pat3 <8000000008000000> def 301 | /pat4 <8800000022000000> def 302 | /pat5 <8800220088002200> def 303 | /pat6 <8822882288228822> def 304 | /pat7 def 305 | /pat8 <77dd77dd77dd77dd> def 306 | /pat9 <77ffddff77ffddff> def 307 | /pat10 <77ffffff77ffffff> def 308 | /pat11 <7fffffff7fffffff> def 309 | /pat12 <8040200002040800> def 310 | /pat13 <40a00000040a0000> def 311 | /pat14 def 312 | /pat15 def 313 | /pat16 def 314 | /pat17 <038448300c020101> def 315 | /pat18 <081c22c180010204> def 316 | /pat19 <8080413e080814e3> def 317 | /pat20 <8040201008040201> def 318 | /pat21 <8844221188442211> def 319 | /pat22 <77bbddee77bbddee> def 320 | /pat23 def 321 | /pat24 <7fbfdfeff7fbfdfe> def 322 | /pat25 <3e1f8fc7e3f1f87c> def 323 | /pat26 <0102040810204080> def 324 | /pat27 <1122448811224488> def 325 | /pat28 def 326 | /pat29 <83070e1c3870e0c1> def 327 | /pat30 def 328 | /pat31 <7cf8f1e3c78f1f3e> def 329 | 330 | /tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def 331 | 332 | /tgifrighttext { dup stringwidth pop neg 0 rmoveto } def 333 | 334 | /tgifreencsmalldict 12 dict def 335 | /tgifReEncodeSmall 336 | { tgifreencsmalldict begin 337 | /newcodesandnames exch def 338 | /newfontname exch def 339 | /basefontname exch def 340 | 341 | /basefontdict basefontname findfont def 342 | /newfont basefontdict maxlength dict def 343 | 344 | basefontdict 345 | { exch dup /FID ne 346 | { dup /Encoding eq 347 | { exch dup length array copy newfont 3 1 roll put } 348 | { exch newfont 3 1 roll put } 349 | ifelse 350 | } 351 | { pop pop } 352 | ifelse 353 | } 354 | forall 355 | 356 | newfont /FontName newfontname put 357 | newcodesandnames aload pop 358 | 359 | newcodesandnames length 2 idiv 360 | { newfont /Encoding get 3 1 roll put} 361 | repeat 362 | 363 | newfontname newfont definefont pop 364 | end 365 | } def 366 | 367 | /tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def 368 | 369 | /tgifboxdict 6 dict def 370 | /tgifboxstroke 371 | { tgifboxdict begin 372 | /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 373 | 1.415 setmiterlimit 374 | w 1 eq { w setlinewidth } if 375 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 376 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 377 | pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse 378 | pat pat1 ne pat pat2 ne and { grestore } if 379 | w 1 eq { 1 setlinewidth } if 380 | 1 setmiterlimit 381 | end 382 | } def 383 | /tgifboxfill 384 | { tgifboxdict begin 385 | /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 386 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 387 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 388 | pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse 389 | pat pat1 ne pat pat2 ne and { grestore } if 390 | end 391 | } def 392 | 393 | end 394 | 395 | %%PageBoundingBox: 35 711 289 757 396 | tgifdict begin 397 | /tgifsavedpage save def 398 | 399 | 1 setmiterlimit 400 | 1 setlinewidth 401 | 402 | 0 setgray 403 | 404 | 72 0 mul 72 11.00 mul translate 405 | 72 128 div 100 mul 100 div dup neg scale 406 | 407 | gsave 408 | 409 | % BOX 410 | gsave 411 | 1.415 setmiterlimit 412 | newpath 413 | 66 66 moveto 130 66 lineto 130 98 lineto 66 98 lineto 414 | closepath stroke 415 | 1 setmiterlimit 416 | grestore 417 | 418 | % POLY/OPEN-SPLINE 419 | gsave 420 | newpath 421 | 98 66 moveto 422 | 98 98 lineto 423 | stroke 424 | grestore 425 | 426 | % POLY/OPEN-SPLINE 427 | gsave 428 | newpath 429 | 114 82 moveto 430 | 0 80 atan dup cos 8 mul 194 exch sub 431 | exch sin 8 mul 82 exch sub lineto 432 | stroke 433 | grestore 434 | gsave 435 | newpath 436 | 194 82 8 3 80 0 tgifarrowtip 437 | closepath fill 438 | grestore 439 | 440 | % TEXT 441 | 0 setgray 442 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 443 | gsave 444 | 146 136 moveto (rose) show 445 | grestore 446 | 447 | % POLY/OPEN-SPLINE 448 | gsave 449 | newpath 450 | 82 82 moveto 451 | 82 131 lineto 452 | 0 48 atan dup cos 8 mul 130 exch sub 453 | exch sin 8 mul 131 exch sub lineto 454 | stroke 455 | grestore 456 | gsave 457 | newpath 458 | 130 131 8 3 48 0 tgifarrowtip 459 | closepath fill 460 | grestore 461 | 462 | % BOX 463 | gsave 464 | 1.415 setmiterlimit 465 | newpath 466 | 199 66 moveto 263 66 lineto 263 98 lineto 199 98 lineto 467 | closepath stroke 468 | 1 setmiterlimit 469 | grestore 470 | 471 | % POLY/OPEN-SPLINE 472 | gsave 473 | newpath 474 | 231 66 moveto 475 | 231 98 lineto 476 | stroke 477 | grestore 478 | 479 | % POLY/OPEN-SPLINE 480 | gsave 481 | newpath 482 | 247 82 moveto 483 | 0 93 atan dup cos 8 mul 340 exch sub 484 | exch sin 8 mul 82 exch sub lineto 485 | stroke 486 | grestore 487 | gsave 488 | newpath 489 | 340 82 8 3 93 0 tgifarrowtip 490 | closepath fill 491 | grestore 492 | 493 | % TEXT 494 | 0 setgray 495 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 496 | gsave 497 | 279 136 moveto (violet) show 498 | grestore 499 | 500 | % POLY/OPEN-SPLINE 501 | gsave 502 | newpath 503 | 215 82 moveto 504 | 215 131 lineto 505 | 0 48 atan dup cos 8 mul 263 exch sub 506 | exch sin 8 mul 131 exch sub lineto 507 | stroke 508 | grestore 509 | gsave 510 | newpath 511 | 263 131 8 3 48 0 tgifarrowtip 512 | closepath fill 513 | grestore 514 | 515 | % BOX 516 | gsave 517 | 1.415 setmiterlimit 518 | newpath 519 | 342 64 moveto 406 64 lineto 406 96 lineto 342 96 lineto 520 | closepath stroke 521 | 1 setmiterlimit 522 | grestore 523 | 524 | % POLY/OPEN-SPLINE 525 | gsave 526 | newpath 527 | 373 64 moveto 528 | 373 96 lineto 529 | stroke 530 | grestore 531 | 532 | % POLY/OPEN-SPLINE 533 | gsave 534 | newpath 535 | 389 81 moveto 536 | 0 48 atan dup cos 8 mul 437 exch sub 537 | exch sin 8 mul 81 exch sub lineto 538 | stroke 539 | grestore 540 | gsave 541 | newpath 542 | 437 81 8 3 48 0 tgifarrowtip 543 | closepath fill 544 | grestore 545 | 546 | % TEXT 547 | 0 setgray 548 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 549 | gsave 550 | 421 135 moveto (buttercup) show 551 | grestore 552 | 553 | % POLY/OPEN-SPLINE 554 | gsave 555 | newpath 556 | 357 81 moveto 557 | 357 130 lineto 558 | 0 48 atan dup cos 8 mul 405 exch sub 559 | exch sin 8 mul 130 exch sub lineto 560 | stroke 561 | grestore 562 | gsave 563 | newpath 564 | 405 130 8 3 48 0 tgifarrowtip 565 | closepath fill 566 | grestore 567 | 568 | % TEXT 569 | 0 setgray 570 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 571 | gsave 572 | 449 87 moveto (nil) show 573 | grestore 574 | 575 | grestore 576 | tgifsavedpage restore 577 | end 578 | %MatchingCreationDate: Wed Mar 8 14:26:58 1995 579 | -------------------------------------------------------------------------------- /cons-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-jp/elisp-intro-ja/f135f863551ffd1fbea1a79a1c74fe394b9e8212/cons-1.pdf -------------------------------------------------------------------------------- /cons-2.eps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 EPSF-3.0 2 | %%BoundingBox: 15 712 321 775 3 | %%Title: cons-cell-diagram2 4 | %%CreationDate: Wed Mar 8 14:26:39 1995 5 | %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 6 | 7 | % Copyright (C) 1995, 1997, 2001-2013 Free Software Foundation, Inc. 8 | % 9 | % This file is part of GNU Emacs. 10 | % 11 | % GNU Emacs is free software: you can redistribute it and/or modify 12 | % it under the terms of the GNU General Public License as published by 13 | % the Free Software Foundation, either version 3 of the License, or 14 | % (at your option) any later version. 15 | % 16 | % GNU Emacs is distributed in the hope that it will be useful, 17 | % but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | % GNU General Public License for more details. 20 | % 21 | % You should have received a copy of the GNU General Public License 22 | % along with GNU Emacs. If not, see . 23 | 24 | /tgifdict 132 dict def 25 | tgifdict begin 26 | 27 | % 28 | % Using a zero value radius for an ellipse or an arc would result 29 | % in a non-invertible CTM matrix which causes problem when this 30 | % when this PostScript is wrapped inside other routines, such as 31 | % the multi.ps package from 32 | % ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such 33 | % error by uncommenting the sole line of the procedure below: 34 | % 35 | /tgif_min_radius 36 | { 37 | % dup 0.01 lt { pop 0.01 } if 38 | } bind def 39 | 40 | /tgifellipsedict 6 dict def 41 | tgifellipsedict /mtrx matrix put 42 | 43 | /tgifellipse 44 | { tgifellipsedict begin 45 | /yrad exch def 46 | /xrad exch def 47 | /y exch def 48 | /x exch def 49 | /savematrix mtrx currentmatrix def 50 | x y translate 51 | xrad yrad scale 52 | 0 0 1 0 360 arc 53 | savematrix setmatrix 54 | end 55 | } def 56 | 57 | /tgifarrowtipdict 8 dict def 58 | tgifarrowtipdict /mtrx matrix put 59 | 60 | /tgifarrowtip 61 | { tgifarrowtipdict begin 62 | /dy exch def 63 | /dx exch def 64 | /h exch def 65 | /w exch def 66 | /y exch def 67 | /x exch def 68 | /savematrix mtrx currentmatrix def 69 | x y translate 70 | dy dx atan rotate 71 | 0 0 moveto 72 | w neg h lineto 73 | w neg h neg lineto 74 | savematrix setmatrix 75 | end 76 | } def 77 | 78 | /tgifarcdict 8 dict def 79 | tgifarcdict /mtrx matrix put 80 | 81 | /tgifarcn 82 | { tgifarcdict begin 83 | /endangle exch def 84 | /startangle exch def 85 | /yrad exch def 86 | /xrad exch def 87 | /y exch def 88 | /x exch def 89 | /savematrix mtrx currentmatrix def 90 | x y translate 91 | xrad yrad scale 92 | 0 0 1 startangle endangle arc 93 | savematrix setmatrix 94 | end 95 | } def 96 | 97 | /tgifarc 98 | { tgifarcdict begin 99 | /endangle exch def 100 | /startangle exch def 101 | /yrad exch def 102 | /xrad exch def 103 | /y exch def 104 | /x exch def 105 | /savematrix mtrx currentmatrix def 106 | x y translate 107 | xrad yrad scale 108 | 0 0 1 startangle endangle arcn 109 | savematrix setmatrix 110 | end 111 | } def 112 | 113 | /tgifsetuserscreendict 22 dict def 114 | tgifsetuserscreendict begin 115 | /tempctm matrix def 116 | /temprot matrix def 117 | /tempscale matrix def 118 | 119 | /concatprocs 120 | { /proc2 exch cvlit def 121 | /proc1 exch cvlit def 122 | /newproc proc1 length proc2 length add array def 123 | newproc 0 proc1 putinterval 124 | newproc proc1 length proc2 putinterval 125 | newproc cvx 126 | } def 127 | /resmatrix matrix def 128 | /findresolution 129 | { 72 0 resmatrix defaultmatrix dtransform 130 | /yres exch def /xres exch def 131 | xres dup mul yres dup mul add sqrt 132 | } def 133 | end 134 | 135 | /tgifsetuserscreen 136 | { tgifsetuserscreendict begin 137 | /spotfunction exch def 138 | /screenangle exch def 139 | /cellsize exch def 140 | 141 | /m tempctm currentmatrix def 142 | /rm screenangle temprot rotate def 143 | /sm cellsize dup tempscale scale def 144 | 145 | sm rm m m concatmatrix m concatmatrix pop 146 | 147 | 1 0 m dtransform /y1 exch def /x1 exch def 148 | 149 | /veclength x1 dup mul y1 dup mul add sqrt def 150 | /frequency findresolution veclength div def 151 | 152 | /newscreenangle y1 x1 atan def 153 | 154 | m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt 155 | 156 | {{neg} /spotfunction load concatprocs 157 | /spotfunction exch def 158 | } if 159 | 160 | frequency newscreenangle /spotfunction load setscreen 161 | end 162 | } def 163 | 164 | /tgifsetpatterndict 18 dict def 165 | tgifsetpatterndict begin 166 | /bitison 167 | { /ybit exch def /xbit exch def 168 | /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def 169 | 170 | /mask 1 7 xbit 8 mod sub bitshift def 171 | bytevalue mask and 0 ne 172 | } def 173 | end 174 | 175 | /tgifbitpatternspotfunction 176 | { tgifsetpatterndict begin 177 | /y exch def /x exch def 178 | 179 | /xindex x 1 add 2 div bpside mul cvi def 180 | /yindex y 1 add 2 div bpside mul cvi def 181 | 182 | xindex yindex bitison 183 | { /onbits onbits 1 add def 1 } 184 | { /offbits offbits 1 add def 0 } 185 | ifelse 186 | end 187 | } def 188 | 189 | /tgifsetpattern 190 | { tgifsetpatterndict begin 191 | /cellsz exch def 192 | /angle exch def 193 | /bwidth exch def 194 | /bpside exch def 195 | /bstring exch def 196 | 197 | /onbits 0 def /offbits 0 def 198 | cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen 199 | {} settransfer 200 | offbits offbits onbits add div setgray 201 | end 202 | } def 203 | 204 | /tgifxpmdict 4 dict def 205 | /tgifbwpicstr 1 string def 206 | /tgifcolorpicstr 3 string def 207 | 208 | /tgifsetpixels { tgifxpmdict begin /pixels exch def end } def 209 | 210 | /tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def 211 | 212 | /tgifbwspot 213 | { tgifxpmdict begin 214 | /index exch def 215 | tgifbwpicstr 0 216 | pixels index 3 mul 3 getinterval aload pop 217 | 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add 218 | cvi put 219 | tgifbwpicstr 220 | end 221 | } def 222 | 223 | /tgifcolorspot 224 | { tgifxpmdict begin 225 | /index exch def 226 | pixels index 3 mul 3 getinterval aload pop 227 | 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 228 | 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 229 | 255 mul cvi tgifcolorpicstr 0 3 -1 roll put 230 | tgifcolorpicstr 231 | end 232 | } def 233 | 234 | /tgifnewcolorspot 235 | { tgifxpmdict begin 236 | /index exch def 237 | pixels index 3 mul 3 getinterval aload pop setrgbcolor 238 | end 239 | } def 240 | 241 | /tgifcolordict 4 dict def 242 | 243 | /colorimage where 244 | { pop } 245 | { /colorimage 246 | { tgifcolordict begin 247 | pop pop pop pop pop 248 | /ih exch def 249 | /iw exch def 250 | /x 0 def 251 | /y 0 def 252 | 1 1 ih 253 | { pop 1 1 iw 254 | { pop currentfile 255 | tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot 256 | x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto 257 | closepath fill 258 | /x x 1 add def 259 | } for 260 | /y y 1 add def 261 | /x 0 def 262 | } for 263 | end 264 | } def 265 | } ifelse 266 | 267 | /tgifpatdict 10 dict def 268 | 269 | /tgifpatbyte 270 | { currentdict /retstr get exch 271 | pat i cellsz mod get put 272 | } def 273 | 274 | /tgifpatproc 275 | { 0 1 widthlim {tgifpatbyte} for retstr 276 | /i i 1 add def 277 | } def 278 | 279 | /tgifpatfill 280 | { tgifpatdict begin 281 | /h exch def 282 | /w exch def 283 | /lty exch def 284 | /ltx exch def 285 | /cellsz exch def 286 | /pat exch def 287 | 288 | /widthlim w cellsz div cvi 1 sub def 289 | /retstr widthlim 1 add string def 290 | /i 0 def 291 | 292 | ltx lty translate 293 | w h true [1 0 0 1 0 0] {tgifpatproc} imagemask 294 | ltx neg lty neg translate 295 | end 296 | } def 297 | 298 | /pat1 def 299 | /pat2 <0000000000000000> def 300 | /pat3 <8000000008000000> def 301 | /pat4 <8800000022000000> def 302 | /pat5 <8800220088002200> def 303 | /pat6 <8822882288228822> def 304 | /pat7 def 305 | /pat8 <77dd77dd77dd77dd> def 306 | /pat9 <77ffddff77ffddff> def 307 | /pat10 <77ffffff77ffffff> def 308 | /pat11 <7fffffff7fffffff> def 309 | /pat12 <8040200002040800> def 310 | /pat13 <40a00000040a0000> def 311 | /pat14 def 312 | /pat15 def 313 | /pat16 def 314 | /pat17 <038448300c020101> def 315 | /pat18 <081c22c180010204> def 316 | /pat19 <8080413e080814e3> def 317 | /pat20 <8040201008040201> def 318 | /pat21 <8844221188442211> def 319 | /pat22 <77bbddee77bbddee> def 320 | /pat23 def 321 | /pat24 <7fbfdfeff7fbfdfe> def 322 | /pat25 <3e1f8fc7e3f1f87c> def 323 | /pat26 <0102040810204080> def 324 | /pat27 <1122448811224488> def 325 | /pat28 def 326 | /pat29 <83070e1c3870e0c1> def 327 | /pat30 def 328 | /pat31 <7cf8f1e3c78f1f3e> def 329 | 330 | /tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def 331 | 332 | /tgifrighttext { dup stringwidth pop neg 0 rmoveto } def 333 | 334 | /tgifreencsmalldict 12 dict def 335 | /tgifReEncodeSmall 336 | { tgifreencsmalldict begin 337 | /newcodesandnames exch def 338 | /newfontname exch def 339 | /basefontname exch def 340 | 341 | /basefontdict basefontname findfont def 342 | /newfont basefontdict maxlength dict def 343 | 344 | basefontdict 345 | { exch dup /FID ne 346 | { dup /Encoding eq 347 | { exch dup length array copy newfont 3 1 roll put } 348 | { exch newfont 3 1 roll put } 349 | ifelse 350 | } 351 | { pop pop } 352 | ifelse 353 | } 354 | forall 355 | 356 | newfont /FontName newfontname put 357 | newcodesandnames aload pop 358 | 359 | newcodesandnames length 2 idiv 360 | { newfont /Encoding get 3 1 roll put} 361 | repeat 362 | 363 | newfontname newfont definefont pop 364 | end 365 | } def 366 | 367 | /tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def 368 | 369 | /tgifboxdict 6 dict def 370 | /tgifboxstroke 371 | { tgifboxdict begin 372 | /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 373 | 1.415 setmiterlimit 374 | w 1 eq { w setlinewidth } if 375 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 376 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 377 | pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse 378 | pat pat1 ne pat pat2 ne and { grestore } if 379 | w 1 eq { 1 setlinewidth } if 380 | 1 setmiterlimit 381 | end 382 | } def 383 | /tgifboxfill 384 | { tgifboxdict begin 385 | /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 386 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 387 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 388 | pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse 389 | pat pat1 ne pat pat2 ne and { grestore } if 390 | end 391 | } def 392 | 393 | end 394 | 395 | %%PageBoundingBox: 15 712 321 775 396 | tgifdict begin 397 | /tgifsavedpage save def 398 | 399 | 1 setmiterlimit 400 | 1 setlinewidth 401 | 402 | 0 setgray 403 | 404 | 72 0 mul 72 11.00 mul translate 405 | 72 128 div 100 mul 100 div dup neg scale 406 | 407 | gsave 408 | 409 | % TEXT 410 | 0 setgray 411 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 412 | gsave 413 | 32 47 moveto (bouquet) show 414 | grestore 415 | 416 | % BOX 417 | gsave 418 | 1.415 setmiterlimit 419 | newpath 420 | 122 65 moveto 186 65 lineto 186 97 lineto 122 97 lineto 421 | closepath stroke 422 | 1 setmiterlimit 423 | grestore 424 | 425 | % POLY/OPEN-SPLINE 426 | gsave 427 | newpath 428 | 154 65 moveto 429 | 154 97 lineto 430 | stroke 431 | grestore 432 | 433 | % POLY/OPEN-SPLINE 434 | gsave 435 | newpath 436 | 170 81 moveto 437 | 0 80 atan dup cos 8 mul 250 exch sub 438 | exch sin 8 mul 81 exch sub lineto 439 | stroke 440 | grestore 441 | gsave 442 | newpath 443 | 250 81 8 3 80 0 tgifarrowtip 444 | closepath fill 445 | grestore 446 | 447 | % TEXT 448 | 0 setgray 449 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 450 | gsave 451 | 202 135 moveto (rose) show 452 | grestore 453 | 454 | % POLY/OPEN-SPLINE 455 | gsave 456 | newpath 457 | 138 81 moveto 458 | 138 130 lineto 459 | 0 48 atan dup cos 8 mul 186 exch sub 460 | exch sin 8 mul 130 exch sub lineto 461 | stroke 462 | grestore 463 | gsave 464 | newpath 465 | 186 130 8 3 48 0 tgifarrowtip 466 | closepath fill 467 | grestore 468 | 469 | % BOX 470 | gsave 471 | 1.415 setmiterlimit 472 | newpath 473 | 255 65 moveto 319 65 lineto 319 97 lineto 255 97 lineto 474 | closepath stroke 475 | 1 setmiterlimit 476 | grestore 477 | 478 | % POLY/OPEN-SPLINE 479 | gsave 480 | newpath 481 | 287 65 moveto 482 | 287 97 lineto 483 | stroke 484 | grestore 485 | 486 | % POLY/OPEN-SPLINE 487 | gsave 488 | newpath 489 | 303 81 moveto 490 | 0 93 atan dup cos 8 mul 396 exch sub 491 | exch sin 8 mul 81 exch sub lineto 492 | stroke 493 | grestore 494 | gsave 495 | newpath 496 | 396 81 8 3 93 0 tgifarrowtip 497 | closepath fill 498 | grestore 499 | 500 | % TEXT 501 | 0 setgray 502 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 503 | gsave 504 | 335 135 moveto (violet) show 505 | grestore 506 | 507 | % POLY/OPEN-SPLINE 508 | gsave 509 | newpath 510 | 271 81 moveto 511 | 271 130 lineto 512 | 0 48 atan dup cos 8 mul 319 exch sub 513 | exch sin 8 mul 130 exch sub lineto 514 | stroke 515 | grestore 516 | gsave 517 | newpath 518 | 319 130 8 3 48 0 tgifarrowtip 519 | closepath fill 520 | grestore 521 | 522 | % BOX 523 | gsave 524 | 1.415 setmiterlimit 525 | newpath 526 | 398 63 moveto 462 63 lineto 462 95 lineto 398 95 lineto 527 | closepath stroke 528 | 1 setmiterlimit 529 | grestore 530 | 531 | % POLY/OPEN-SPLINE 532 | gsave 533 | newpath 534 | 429 63 moveto 535 | 429 95 lineto 536 | stroke 537 | grestore 538 | 539 | % POLY/OPEN-SPLINE 540 | gsave 541 | newpath 542 | 445 80 moveto 543 | 0 48 atan dup cos 8 mul 493 exch sub 544 | exch sin 8 mul 80 exch sub lineto 545 | stroke 546 | grestore 547 | gsave 548 | newpath 549 | 493 80 8 3 48 0 tgifarrowtip 550 | closepath fill 551 | grestore 552 | 553 | % TEXT 554 | 0 setgray 555 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 556 | gsave 557 | 477 134 moveto (buttercup) show 558 | grestore 559 | 560 | % POLY/OPEN-SPLINE 561 | gsave 562 | newpath 563 | 413 80 moveto 564 | 413 129 lineto 565 | 0 48 atan dup cos 8 mul 461 exch sub 566 | exch sin 8 mul 129 exch sub lineto 567 | stroke 568 | grestore 569 | gsave 570 | newpath 571 | 461 129 8 3 48 0 tgifarrowtip 572 | closepath fill 573 | grestore 574 | 575 | % TEXT 576 | 0 setgray 577 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 578 | gsave 579 | 505 86 moveto (nil) show 580 | grestore 581 | 582 | % POLY/OPEN-SPLINE 583 | gsave 584 | newpath 585 | 66 53 moveto 586 | 66 81 lineto 587 | 0 46 atan dup cos 8 mul 112 exch sub 588 | exch sin 8 mul 81 exch sub lineto 589 | stroke 590 | grestore 591 | gsave 592 | newpath 593 | 112 81 8 3 46 0 tgifarrowtip 594 | closepath fill 595 | grestore 596 | 597 | grestore 598 | tgifsavedpage restore 599 | end 600 | %MatchingCreationDate: Wed Mar 8 14:26:39 1995 601 | -------------------------------------------------------------------------------- /cons-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-jp/elisp-intro-ja/f135f863551ffd1fbea1a79a1c74fe394b9e8212/cons-2.pdf -------------------------------------------------------------------------------- /cons-2a.eps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 EPSF-3.0 2 | %%BoundingBox: 15 702 300 767 3 | %%Title: cons-cell-diagram2a 4 | %%CreationDate: Tue Mar 14 15:09:30 1995 5 | %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 6 | 7 | % Copyright (C) 1995, 1997, 2001-2013 Free Software Foundation, Inc. 8 | % 9 | % This file is part of GNU Emacs. 10 | % 11 | % GNU Emacs is free software: you can redistribute it and/or modify 12 | % it under the terms of the GNU General Public License as published by 13 | % the Free Software Foundation, either version 3 of the License, or 14 | % (at your option) any later version. 15 | % 16 | % GNU Emacs is distributed in the hope that it will be useful, 17 | % but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | % GNU General Public License for more details. 20 | % 21 | % You should have received a copy of the GNU General Public License 22 | % along with GNU Emacs. If not, see . 23 | 24 | /tgifdict 132 dict def 25 | tgifdict begin 26 | 27 | % 28 | % Using a zero value radius for an ellipse or an arc would result 29 | % in a non-invertible CTM matrix which causes problem when this 30 | % when this PostScript is wrapped inside other routines, such as 31 | % the multi.ps package from 32 | % ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such 33 | % error by uncommenting the sole line of the procedure below: 34 | % 35 | /tgif_min_radius 36 | { 37 | % dup 0.01 lt { pop 0.01 } if 38 | } bind def 39 | 40 | /tgifellipsedict 6 dict def 41 | tgifellipsedict /mtrx matrix put 42 | 43 | /tgifellipse 44 | { tgifellipsedict begin 45 | /yrad exch def 46 | /xrad exch def 47 | /y exch def 48 | /x exch def 49 | /savematrix mtrx currentmatrix def 50 | x y translate 51 | xrad yrad scale 52 | 0 0 1 0 360 arc 53 | savematrix setmatrix 54 | end 55 | } def 56 | 57 | /tgifarrowtipdict 8 dict def 58 | tgifarrowtipdict /mtrx matrix put 59 | 60 | /tgifarrowtip 61 | { tgifarrowtipdict begin 62 | /dy exch def 63 | /dx exch def 64 | /h exch def 65 | /w exch def 66 | /y exch def 67 | /x exch def 68 | /savematrix mtrx currentmatrix def 69 | x y translate 70 | dy dx atan rotate 71 | 0 0 moveto 72 | w neg h lineto 73 | w neg h neg lineto 74 | savematrix setmatrix 75 | end 76 | } def 77 | 78 | /tgifarcdict 8 dict def 79 | tgifarcdict /mtrx matrix put 80 | 81 | /tgifarcn 82 | { tgifarcdict begin 83 | /endangle exch def 84 | /startangle exch def 85 | /yrad exch def 86 | /xrad exch def 87 | /y exch def 88 | /x exch def 89 | /savematrix mtrx currentmatrix def 90 | x y translate 91 | xrad yrad scale 92 | 0 0 1 startangle endangle arc 93 | savematrix setmatrix 94 | end 95 | } def 96 | 97 | /tgifarc 98 | { tgifarcdict begin 99 | /endangle exch def 100 | /startangle exch def 101 | /yrad exch def 102 | /xrad exch def 103 | /y exch def 104 | /x exch def 105 | /savematrix mtrx currentmatrix def 106 | x y translate 107 | xrad yrad scale 108 | 0 0 1 startangle endangle arcn 109 | savematrix setmatrix 110 | end 111 | } def 112 | 113 | /tgifsetuserscreendict 22 dict def 114 | tgifsetuserscreendict begin 115 | /tempctm matrix def 116 | /temprot matrix def 117 | /tempscale matrix def 118 | 119 | /concatprocs 120 | { /proc2 exch cvlit def 121 | /proc1 exch cvlit def 122 | /newproc proc1 length proc2 length add array def 123 | newproc 0 proc1 putinterval 124 | newproc proc1 length proc2 putinterval 125 | newproc cvx 126 | } def 127 | /resmatrix matrix def 128 | /findresolution 129 | { 72 0 resmatrix defaultmatrix dtransform 130 | /yres exch def /xres exch def 131 | xres dup mul yres dup mul add sqrt 132 | } def 133 | end 134 | 135 | /tgifsetuserscreen 136 | { tgifsetuserscreendict begin 137 | /spotfunction exch def 138 | /screenangle exch def 139 | /cellsize exch def 140 | 141 | /m tempctm currentmatrix def 142 | /rm screenangle temprot rotate def 143 | /sm cellsize dup tempscale scale def 144 | 145 | sm rm m m concatmatrix m concatmatrix pop 146 | 147 | 1 0 m dtransform /y1 exch def /x1 exch def 148 | 149 | /veclength x1 dup mul y1 dup mul add sqrt def 150 | /frequency findresolution veclength div def 151 | 152 | /newscreenangle y1 x1 atan def 153 | 154 | m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt 155 | 156 | {{neg} /spotfunction load concatprocs 157 | /spotfunction exch def 158 | } if 159 | 160 | frequency newscreenangle /spotfunction load setscreen 161 | end 162 | } def 163 | 164 | /tgifsetpatterndict 18 dict def 165 | tgifsetpatterndict begin 166 | /bitison 167 | { /ybit exch def /xbit exch def 168 | /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def 169 | 170 | /mask 1 7 xbit 8 mod sub bitshift def 171 | bytevalue mask and 0 ne 172 | } def 173 | end 174 | 175 | /tgifbitpatternspotfunction 176 | { tgifsetpatterndict begin 177 | /y exch def /x exch def 178 | 179 | /xindex x 1 add 2 div bpside mul cvi def 180 | /yindex y 1 add 2 div bpside mul cvi def 181 | 182 | xindex yindex bitison 183 | { /onbits onbits 1 add def 1 } 184 | { /offbits offbits 1 add def 0 } 185 | ifelse 186 | end 187 | } def 188 | 189 | /tgifsetpattern 190 | { tgifsetpatterndict begin 191 | /cellsz exch def 192 | /angle exch def 193 | /bwidth exch def 194 | /bpside exch def 195 | /bstring exch def 196 | 197 | /onbits 0 def /offbits 0 def 198 | cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen 199 | {} settransfer 200 | offbits offbits onbits add div setgray 201 | end 202 | } def 203 | 204 | /tgifxpmdict 4 dict def 205 | /tgifbwpicstr 1 string def 206 | /tgifcolorpicstr 3 string def 207 | 208 | /tgifsetpixels { tgifxpmdict begin /pixels exch def end } def 209 | 210 | /tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def 211 | 212 | /tgifbwspot 213 | { tgifxpmdict begin 214 | /index exch def 215 | tgifbwpicstr 0 216 | pixels index 3 mul 3 getinterval aload pop 217 | 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add 218 | cvi put 219 | tgifbwpicstr 220 | end 221 | } def 222 | 223 | /tgifcolorspot 224 | { tgifxpmdict begin 225 | /index exch def 226 | pixels index 3 mul 3 getinterval aload pop 227 | 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 228 | 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 229 | 255 mul cvi tgifcolorpicstr 0 3 -1 roll put 230 | tgifcolorpicstr 231 | end 232 | } def 233 | 234 | /tgifnewcolorspot 235 | { tgifxpmdict begin 236 | /index exch def 237 | pixels index 3 mul 3 getinterval aload pop setrgbcolor 238 | end 239 | } def 240 | 241 | /tgifcolordict 4 dict def 242 | 243 | /colorimage where 244 | { pop } 245 | { /colorimage 246 | { tgifcolordict begin 247 | pop pop pop pop pop 248 | /ih exch def 249 | /iw exch def 250 | /x 0 def 251 | /y 0 def 252 | 1 1 ih 253 | { pop 1 1 iw 254 | { pop currentfile 255 | tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot 256 | x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto 257 | closepath fill 258 | /x x 1 add def 259 | } for 260 | /y y 1 add def 261 | /x 0 def 262 | } for 263 | end 264 | } def 265 | } ifelse 266 | 267 | /tgifpatdict 10 dict def 268 | 269 | /tgifpatbyte 270 | { currentdict /retstr get exch 271 | pat i cellsz mod get put 272 | } def 273 | 274 | /tgifpatproc 275 | { 0 1 widthlim {tgifpatbyte} for retstr 276 | /i i 1 add def 277 | } def 278 | 279 | /tgifpatfill 280 | { tgifpatdict begin 281 | /h exch def 282 | /w exch def 283 | /lty exch def 284 | /ltx exch def 285 | /cellsz exch def 286 | /pat exch def 287 | 288 | /widthlim w cellsz div cvi 1 sub def 289 | /retstr widthlim 1 add string def 290 | /i 0 def 291 | 292 | ltx lty translate 293 | w h true [1 0 0 1 0 0] {tgifpatproc} imagemask 294 | ltx neg lty neg translate 295 | end 296 | } def 297 | 298 | /pat1 def 299 | /pat2 <0000000000000000> def 300 | /pat3 <8000000008000000> def 301 | /pat4 <8800000022000000> def 302 | /pat5 <8800220088002200> def 303 | /pat6 <8822882288228822> def 304 | /pat7 def 305 | /pat8 <77dd77dd77dd77dd> def 306 | /pat9 <77ffddff77ffddff> def 307 | /pat10 <77ffffff77ffffff> def 308 | /pat11 <7fffffff7fffffff> def 309 | /pat12 <8040200002040800> def 310 | /pat13 <40a00000040a0000> def 311 | /pat14 def 312 | /pat15 def 313 | /pat16 def 314 | /pat17 <038448300c020101> def 315 | /pat18 <081c22c180010204> def 316 | /pat19 <8080413e080814e3> def 317 | /pat20 <8040201008040201> def 318 | /pat21 <8844221188442211> def 319 | /pat22 <77bbddee77bbddee> def 320 | /pat23 def 321 | /pat24 <7fbfdfeff7fbfdfe> def 322 | /pat25 <3e1f8fc7e3f1f87c> def 323 | /pat26 <0102040810204080> def 324 | /pat27 <1122448811224488> def 325 | /pat28 def 326 | /pat29 <83070e1c3870e0c1> def 327 | /pat30 def 328 | /pat31 <7cf8f1e3c78f1f3e> def 329 | 330 | /tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def 331 | 332 | /tgifrighttext { dup stringwidth pop neg 0 rmoveto } def 333 | 334 | /tgifreencsmalldict 12 dict def 335 | /tgifReEncodeSmall 336 | { tgifreencsmalldict begin 337 | /newcodesandnames exch def 338 | /newfontname exch def 339 | /basefontname exch def 340 | 341 | /basefontdict basefontname findfont def 342 | /newfont basefontdict maxlength dict def 343 | 344 | basefontdict 345 | { exch dup /FID ne 346 | { dup /Encoding eq 347 | { exch dup length array copy newfont 3 1 roll put } 348 | { exch newfont 3 1 roll put } 349 | ifelse 350 | } 351 | { pop pop } 352 | ifelse 353 | } 354 | forall 355 | 356 | newfont /FontName newfontname put 357 | newcodesandnames aload pop 358 | 359 | newcodesandnames length 2 idiv 360 | { newfont /Encoding get 3 1 roll put} 361 | repeat 362 | 363 | newfontname newfont definefont pop 364 | end 365 | } def 366 | 367 | /tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def 368 | 369 | /tgifboxdict 6 dict def 370 | /tgifboxstroke 371 | { tgifboxdict begin 372 | /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 373 | 1.415 setmiterlimit 374 | w 1 eq { w setlinewidth } if 375 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 376 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 377 | pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse 378 | pat pat1 ne pat pat2 ne and { grestore } if 379 | w 1 eq { 1 setlinewidth } if 380 | 1 setmiterlimit 381 | end 382 | } def 383 | /tgifboxfill 384 | { tgifboxdict begin 385 | /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 386 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 387 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 388 | pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse 389 | pat pat1 ne pat pat2 ne and { grestore } if 390 | end 391 | } def 392 | 393 | end 394 | 395 | %%PageBoundingBox: 15 702 300 767 396 | tgifdict begin 397 | /tgifsavedpage save def 398 | 399 | 1 setmiterlimit 400 | 1 setlinewidth 401 | 402 | 0 setgray 403 | 404 | 72 0 mul 72 11.00 mul translate 405 | 72 128 div 100 mul 100 div dup neg scale 406 | 407 | gsave 408 | 409 | % TEXT 410 | 0 setgray 411 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 412 | gsave 413 | 32 62 moveto (bouquet) show 414 | grestore 415 | 416 | % POLY/OPEN-SPLINE 417 | gsave 418 | newpath 419 | 64 80 moveto 420 | 64 120 lineto 421 | 0 49 atan dup cos 8 mul 113 exch sub 422 | exch sin 8 mul 120 exch sub lineto 423 | stroke 424 | grestore 425 | gsave 426 | newpath 427 | 113 120 8 3 49 0 tgifarrowtip 428 | closepath fill 429 | grestore 430 | 431 | % TEXT 432 | 0 setgray 433 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 434 | gsave 435 | 128 110 moveto (car) show 436 | grestore 437 | 438 | % TEXT 439 | 0 setgray 440 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 441 | gsave 442 | 128 142 moveto (rose) show 443 | grestore 444 | 445 | % TEXT 446 | 0 setgray 447 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 448 | gsave 449 | 192 110 moveto (cdr) show 450 | grestore 451 | 452 | % OVAL 453 | gsave 454 | newpath 207 124 4 4 tgifellipse stroke 455 | grestore 456 | 457 | % POLY/OPEN-SPLINE 458 | gsave 459 | newpath 460 | 217 123 moveto 461 | 0 38 atan dup cos 8 mul 255 exch sub 462 | exch sin 8 mul 123 exch sub lineto 463 | stroke 464 | grestore 465 | gsave 466 | newpath 467 | 255 123 8 3 38 0 tgifarrowtip 468 | closepath fill 469 | grestore 470 | 471 | % TEXT 472 | 0 setgray 473 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 474 | gsave 475 | 268 111 moveto (car) show 476 | grestore 477 | 478 | % TEXT 479 | 0 setgray 480 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 481 | gsave 482 | 264 143 moveto (violet) show 483 | grestore 484 | 485 | % TEXT 486 | 0 setgray 487 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 488 | gsave 489 | 332 111 moveto (cdr) show 490 | grestore 491 | 492 | % OVAL 493 | gsave 494 | newpath 347 125 4 4 tgifellipse stroke 495 | grestore 496 | 497 | % POLY/OPEN-SPLINE 498 | gsave 499 | newpath 500 | 357 124 moveto 501 | 0 38 atan dup cos 8 mul 395 exch sub 502 | exch sin 8 mul 124 exch sub lineto 503 | stroke 504 | grestore 505 | gsave 506 | newpath 507 | 395 124 8 3 38 0 tgifarrowtip 508 | closepath fill 509 | grestore 510 | 511 | % TEXT 512 | 0 setgray 513 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 514 | gsave 515 | 408 112 moveto (car) show 516 | grestore 517 | 518 | % TEXT 519 | 0 setgray 520 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 521 | gsave 522 | 408 136 moveto (butter-) show 523 | 408 153 moveto (cup) show 524 | grestore 525 | 526 | % TEXT 527 | 0 setgray 528 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 529 | gsave 530 | 496 113 moveto (cdr) show 531 | grestore 532 | 533 | % TEXT 534 | 0 setgray 535 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 536 | gsave 537 | 495 137 moveto (nil) show 538 | grestore 539 | 540 | % POLY/OPEN-SPLINE 541 | gsave 542 | newpath 543 | 178 86 moveto 544 | 178 157 lineto 545 | stroke 546 | grestore 547 | 548 | % POLY/OPEN-SPLINE 549 | gsave 550 | newpath 551 | 485 84 moveto 552 | 485 157 lineto 553 | stroke 554 | grestore 555 | 556 | % POLY/OPEN-SPLINE 557 | gsave 558 | newpath 559 | 327 85 moveto 560 | 327 157 lineto 561 | stroke 562 | grestore 563 | 564 | % BOX 565 | gsave 566 | 1.415 setmiterlimit 567 | newpath 568 | 120 86 moveto 234 86 lineto 234 157 lineto 120 157 lineto 569 | closepath stroke 570 | 1 setmiterlimit 571 | grestore 572 | 573 | % BOX 574 | gsave 575 | 1.415 setmiterlimit 576 | newpath 577 | 257 85 moveto 371 85 lineto 371 157 lineto 257 157 lineto 578 | closepath stroke 579 | 1 setmiterlimit 580 | grestore 581 | 582 | % BOX 583 | gsave 584 | 1.415 setmiterlimit 585 | newpath 586 | 397 84 moveto 531 84 lineto 531 157 lineto 397 157 lineto 587 | closepath stroke 588 | 1 setmiterlimit 589 | grestore 590 | 591 | grestore 592 | tgifsavedpage restore 593 | end 594 | %MatchingCreationDate: Tue Mar 14 15:09:30 1995 595 | -------------------------------------------------------------------------------- /cons-2a.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-jp/elisp-intro-ja/f135f863551ffd1fbea1a79a1c74fe394b9e8212/cons-2a.pdf -------------------------------------------------------------------------------- /cons-3.eps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 EPSF-3.0 2 | %%BoundingBox: -1 691 324 757 3 | %%Title: cons-cell-diagram3 4 | %%CreationDate: Wed Mar 8 14:25:41 1995 5 | %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 6 | 7 | % Copyright (C) 1995, 1997, 2001-2013 Free Software Foundation, Inc. 8 | % 9 | % This file is part of GNU Emacs. 10 | % 11 | % GNU Emacs is free software: you can redistribute it and/or modify 12 | % it under the terms of the GNU General Public License as published by 13 | % the Free Software Foundation, either version 3 of the License, or 14 | % (at your option) any later version. 15 | % 16 | % GNU Emacs is distributed in the hope that it will be useful, 17 | % but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | % GNU General Public License for more details. 20 | % 21 | % You should have received a copy of the GNU General Public License 22 | % along with GNU Emacs. If not, see . 23 | 24 | /tgifdict 132 dict def 25 | tgifdict begin 26 | 27 | % 28 | % Using a zero value radius for an ellipse or an arc would result 29 | % in a non-invertible CTM matrix which causes problem when this 30 | % when this PostScript is wrapped inside other routines, such as 31 | % the multi.ps package from 32 | % ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such 33 | % error by uncommenting the sole line of the procedure below: 34 | % 35 | /tgif_min_radius 36 | { 37 | % dup 0.01 lt { pop 0.01 } if 38 | } bind def 39 | 40 | /tgifellipsedict 6 dict def 41 | tgifellipsedict /mtrx matrix put 42 | 43 | /tgifellipse 44 | { tgifellipsedict begin 45 | /yrad exch def 46 | /xrad exch def 47 | /y exch def 48 | /x exch def 49 | /savematrix mtrx currentmatrix def 50 | x y translate 51 | xrad yrad scale 52 | 0 0 1 0 360 arc 53 | savematrix setmatrix 54 | end 55 | } def 56 | 57 | /tgifarrowtipdict 8 dict def 58 | tgifarrowtipdict /mtrx matrix put 59 | 60 | /tgifarrowtip 61 | { tgifarrowtipdict begin 62 | /dy exch def 63 | /dx exch def 64 | /h exch def 65 | /w exch def 66 | /y exch def 67 | /x exch def 68 | /savematrix mtrx currentmatrix def 69 | x y translate 70 | dy dx atan rotate 71 | 0 0 moveto 72 | w neg h lineto 73 | w neg h neg lineto 74 | savematrix setmatrix 75 | end 76 | } def 77 | 78 | /tgifarcdict 8 dict def 79 | tgifarcdict /mtrx matrix put 80 | 81 | /tgifarcn 82 | { tgifarcdict begin 83 | /endangle exch def 84 | /startangle exch def 85 | /yrad exch def 86 | /xrad exch def 87 | /y exch def 88 | /x exch def 89 | /savematrix mtrx currentmatrix def 90 | x y translate 91 | xrad yrad scale 92 | 0 0 1 startangle endangle arc 93 | savematrix setmatrix 94 | end 95 | } def 96 | 97 | /tgifarc 98 | { tgifarcdict begin 99 | /endangle exch def 100 | /startangle exch def 101 | /yrad exch def 102 | /xrad exch def 103 | /y exch def 104 | /x exch def 105 | /savematrix mtrx currentmatrix def 106 | x y translate 107 | xrad yrad scale 108 | 0 0 1 startangle endangle arcn 109 | savematrix setmatrix 110 | end 111 | } def 112 | 113 | /tgifsetuserscreendict 22 dict def 114 | tgifsetuserscreendict begin 115 | /tempctm matrix def 116 | /temprot matrix def 117 | /tempscale matrix def 118 | 119 | /concatprocs 120 | { /proc2 exch cvlit def 121 | /proc1 exch cvlit def 122 | /newproc proc1 length proc2 length add array def 123 | newproc 0 proc1 putinterval 124 | newproc proc1 length proc2 putinterval 125 | newproc cvx 126 | } def 127 | /resmatrix matrix def 128 | /findresolution 129 | { 72 0 resmatrix defaultmatrix dtransform 130 | /yres exch def /xres exch def 131 | xres dup mul yres dup mul add sqrt 132 | } def 133 | end 134 | 135 | /tgifsetuserscreen 136 | { tgifsetuserscreendict begin 137 | /spotfunction exch def 138 | /screenangle exch def 139 | /cellsize exch def 140 | 141 | /m tempctm currentmatrix def 142 | /rm screenangle temprot rotate def 143 | /sm cellsize dup tempscale scale def 144 | 145 | sm rm m m concatmatrix m concatmatrix pop 146 | 147 | 1 0 m dtransform /y1 exch def /x1 exch def 148 | 149 | /veclength x1 dup mul y1 dup mul add sqrt def 150 | /frequency findresolution veclength div def 151 | 152 | /newscreenangle y1 x1 atan def 153 | 154 | m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt 155 | 156 | {{neg} /spotfunction load concatprocs 157 | /spotfunction exch def 158 | } if 159 | 160 | frequency newscreenangle /spotfunction load setscreen 161 | end 162 | } def 163 | 164 | /tgifsetpatterndict 18 dict def 165 | tgifsetpatterndict begin 166 | /bitison 167 | { /ybit exch def /xbit exch def 168 | /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def 169 | 170 | /mask 1 7 xbit 8 mod sub bitshift def 171 | bytevalue mask and 0 ne 172 | } def 173 | end 174 | 175 | /tgifbitpatternspotfunction 176 | { tgifsetpatterndict begin 177 | /y exch def /x exch def 178 | 179 | /xindex x 1 add 2 div bpside mul cvi def 180 | /yindex y 1 add 2 div bpside mul cvi def 181 | 182 | xindex yindex bitison 183 | { /onbits onbits 1 add def 1 } 184 | { /offbits offbits 1 add def 0 } 185 | ifelse 186 | end 187 | } def 188 | 189 | /tgifsetpattern 190 | { tgifsetpatterndict begin 191 | /cellsz exch def 192 | /angle exch def 193 | /bwidth exch def 194 | /bpside exch def 195 | /bstring exch def 196 | 197 | /onbits 0 def /offbits 0 def 198 | cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen 199 | {} settransfer 200 | offbits offbits onbits add div setgray 201 | end 202 | } def 203 | 204 | /tgifxpmdict 4 dict def 205 | /tgifbwpicstr 1 string def 206 | /tgifcolorpicstr 3 string def 207 | 208 | /tgifsetpixels { tgifxpmdict begin /pixels exch def end } def 209 | 210 | /tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def 211 | 212 | /tgifbwspot 213 | { tgifxpmdict begin 214 | /index exch def 215 | tgifbwpicstr 0 216 | pixels index 3 mul 3 getinterval aload pop 217 | 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add 218 | cvi put 219 | tgifbwpicstr 220 | end 221 | } def 222 | 223 | /tgifcolorspot 224 | { tgifxpmdict begin 225 | /index exch def 226 | pixels index 3 mul 3 getinterval aload pop 227 | 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 228 | 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 229 | 255 mul cvi tgifcolorpicstr 0 3 -1 roll put 230 | tgifcolorpicstr 231 | end 232 | } def 233 | 234 | /tgifnewcolorspot 235 | { tgifxpmdict begin 236 | /index exch def 237 | pixels index 3 mul 3 getinterval aload pop setrgbcolor 238 | end 239 | } def 240 | 241 | /tgifcolordict 4 dict def 242 | 243 | /colorimage where 244 | { pop } 245 | { /colorimage 246 | { tgifcolordict begin 247 | pop pop pop pop pop 248 | /ih exch def 249 | /iw exch def 250 | /x 0 def 251 | /y 0 def 252 | 1 1 ih 253 | { pop 1 1 iw 254 | { pop currentfile 255 | tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot 256 | x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto 257 | closepath fill 258 | /x x 1 add def 259 | } for 260 | /y y 1 add def 261 | /x 0 def 262 | } for 263 | end 264 | } def 265 | } ifelse 266 | 267 | /tgifpatdict 10 dict def 268 | 269 | /tgifpatbyte 270 | { currentdict /retstr get exch 271 | pat i cellsz mod get put 272 | } def 273 | 274 | /tgifpatproc 275 | { 0 1 widthlim {tgifpatbyte} for retstr 276 | /i i 1 add def 277 | } def 278 | 279 | /tgifpatfill 280 | { tgifpatdict begin 281 | /h exch def 282 | /w exch def 283 | /lty exch def 284 | /ltx exch def 285 | /cellsz exch def 286 | /pat exch def 287 | 288 | /widthlim w cellsz div cvi 1 sub def 289 | /retstr widthlim 1 add string def 290 | /i 0 def 291 | 292 | ltx lty translate 293 | w h true [1 0 0 1 0 0] {tgifpatproc} imagemask 294 | ltx neg lty neg translate 295 | end 296 | } def 297 | 298 | /pat1 def 299 | /pat2 <0000000000000000> def 300 | /pat3 <8000000008000000> def 301 | /pat4 <8800000022000000> def 302 | /pat5 <8800220088002200> def 303 | /pat6 <8822882288228822> def 304 | /pat7 def 305 | /pat8 <77dd77dd77dd77dd> def 306 | /pat9 <77ffddff77ffddff> def 307 | /pat10 <77ffffff77ffffff> def 308 | /pat11 <7fffffff7fffffff> def 309 | /pat12 <8040200002040800> def 310 | /pat13 <40a00000040a0000> def 311 | /pat14 def 312 | /pat15 def 313 | /pat16 def 314 | /pat17 <038448300c020101> def 315 | /pat18 <081c22c180010204> def 316 | /pat19 <8080413e080814e3> def 317 | /pat20 <8040201008040201> def 318 | /pat21 <8844221188442211> def 319 | /pat22 <77bbddee77bbddee> def 320 | /pat23 def 321 | /pat24 <7fbfdfeff7fbfdfe> def 322 | /pat25 <3e1f8fc7e3f1f87c> def 323 | /pat26 <0102040810204080> def 324 | /pat27 <1122448811224488> def 325 | /pat28 def 326 | /pat29 <83070e1c3870e0c1> def 327 | /pat30 def 328 | /pat31 <7cf8f1e3c78f1f3e> def 329 | 330 | /tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def 331 | 332 | /tgifrighttext { dup stringwidth pop neg 0 rmoveto } def 333 | 334 | /tgifreencsmalldict 12 dict def 335 | /tgifReEncodeSmall 336 | { tgifreencsmalldict begin 337 | /newcodesandnames exch def 338 | /newfontname exch def 339 | /basefontname exch def 340 | 341 | /basefontdict basefontname findfont def 342 | /newfont basefontdict maxlength dict def 343 | 344 | basefontdict 345 | { exch dup /FID ne 346 | { dup /Encoding eq 347 | { exch dup length array copy newfont 3 1 roll put } 348 | { exch newfont 3 1 roll put } 349 | ifelse 350 | } 351 | { pop pop } 352 | ifelse 353 | } 354 | forall 355 | 356 | newfont /FontName newfontname put 357 | newcodesandnames aload pop 358 | 359 | newcodesandnames length 2 idiv 360 | { newfont /Encoding get 3 1 roll put} 361 | repeat 362 | 363 | newfontname newfont definefont pop 364 | end 365 | } def 366 | 367 | /tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def 368 | 369 | /tgifboxdict 6 dict def 370 | /tgifboxstroke 371 | { tgifboxdict begin 372 | /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 373 | 1.415 setmiterlimit 374 | w 1 eq { w setlinewidth } if 375 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 376 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 377 | pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse 378 | pat pat1 ne pat pat2 ne and { grestore } if 379 | w 1 eq { 1 setlinewidth } if 380 | 1 setmiterlimit 381 | end 382 | } def 383 | /tgifboxfill 384 | { tgifboxdict begin 385 | /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 386 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 387 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 388 | pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse 389 | pat pat1 ne pat pat2 ne and { grestore } if 390 | end 391 | } def 392 | 393 | end 394 | 395 | %%PageBoundingBox: -1 691 324 757 396 | tgifdict begin 397 | /tgifsavedpage save def 398 | 399 | 1 setmiterlimit 400 | 1 setlinewidth 401 | 402 | 0 setgray 403 | 404 | 72 0 mul 72 11.00 mul translate 405 | 72 128 div 100 mul 100 div dup neg scale 406 | 407 | gsave 408 | 409 | % BOX 410 | gsave 411 | 1.415 setmiterlimit 412 | newpath 413 | 128 102 moveto 192 102 lineto 192 134 lineto 128 134 lineto 414 | closepath stroke 415 | 1 setmiterlimit 416 | grestore 417 | 418 | % POLY/OPEN-SPLINE 419 | gsave 420 | newpath 421 | 160 102 moveto 422 | 160 134 lineto 423 | stroke 424 | grestore 425 | 426 | % POLY/OPEN-SPLINE 427 | gsave 428 | newpath 429 | 176 124 moveto 430 | 0 80 atan dup cos 8 mul 256 exch sub 431 | exch sin 8 mul 124 exch sub lineto 432 | stroke 433 | grestore 434 | gsave 435 | newpath 436 | 256 124 8 3 80 0 tgifarrowtip 437 | closepath fill 438 | grestore 439 | 440 | % TEXT 441 | 0 setgray 442 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 443 | gsave 444 | 208 172 moveto (rose) show 445 | grestore 446 | 447 | % POLY/OPEN-SPLINE 448 | gsave 449 | newpath 450 | 144 118 moveto 451 | 144 167 lineto 452 | 0 48 atan dup cos 8 mul 192 exch sub 453 | exch sin 8 mul 167 exch sub lineto 454 | stroke 455 | grestore 456 | gsave 457 | newpath 458 | 192 167 8 3 48 0 tgifarrowtip 459 | closepath fill 460 | grestore 461 | 462 | % BOX 463 | gsave 464 | 1.415 setmiterlimit 465 | newpath 466 | 261 102 moveto 325 102 lineto 325 134 lineto 261 134 lineto 467 | closepath stroke 468 | 1 setmiterlimit 469 | grestore 470 | 471 | % POLY/OPEN-SPLINE 472 | gsave 473 | newpath 474 | 293 102 moveto 475 | 293 134 lineto 476 | stroke 477 | grestore 478 | 479 | % POLY/OPEN-SPLINE 480 | gsave 481 | newpath 482 | 309 118 moveto 483 | 0 93 atan dup cos 8 mul 402 exch sub 484 | exch sin 8 mul 118 exch sub lineto 485 | stroke 486 | grestore 487 | gsave 488 | newpath 489 | 402 118 8 3 93 0 tgifarrowtip 490 | closepath fill 491 | grestore 492 | 493 | % TEXT 494 | 0 setgray 495 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 496 | gsave 497 | 341 172 moveto (violet) show 498 | grestore 499 | 500 | % POLY/OPEN-SPLINE 501 | gsave 502 | newpath 503 | 277 118 moveto 504 | 277 167 lineto 505 | 0 48 atan dup cos 8 mul 325 exch sub 506 | exch sin 8 mul 167 exch sub lineto 507 | stroke 508 | grestore 509 | gsave 510 | newpath 511 | 325 167 8 3 48 0 tgifarrowtip 512 | closepath fill 513 | grestore 514 | 515 | % BOX 516 | gsave 517 | 1.415 setmiterlimit 518 | newpath 519 | 404 100 moveto 468 100 lineto 468 132 lineto 404 132 lineto 520 | closepath stroke 521 | 1 setmiterlimit 522 | grestore 523 | 524 | % POLY/OPEN-SPLINE 525 | gsave 526 | newpath 527 | 435 100 moveto 528 | 435 132 lineto 529 | stroke 530 | grestore 531 | 532 | % POLY/OPEN-SPLINE 533 | gsave 534 | newpath 535 | 451 117 moveto 536 | 0 48 atan dup cos 8 mul 499 exch sub 537 | exch sin 8 mul 117 exch sub lineto 538 | stroke 539 | grestore 540 | gsave 541 | newpath 542 | 499 117 8 3 48 0 tgifarrowtip 543 | closepath fill 544 | grestore 545 | 546 | % TEXT 547 | 0 setgray 548 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 549 | gsave 550 | 483 171 moveto (buttercup) show 551 | grestore 552 | 553 | % POLY/OPEN-SPLINE 554 | gsave 555 | newpath 556 | 419 117 moveto 557 | 419 166 lineto 558 | 0 48 atan dup cos 8 mul 467 exch sub 559 | exch sin 8 mul 166 exch sub lineto 560 | stroke 561 | grestore 562 | gsave 563 | newpath 564 | 467 166 8 3 48 0 tgifarrowtip 565 | closepath fill 566 | grestore 567 | 568 | % TEXT 569 | 0 setgray 570 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 571 | gsave 572 | 511 123 moveto (nil) show 573 | grestore 574 | 575 | % TEXT 576 | 0 setgray 577 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 578 | gsave 579 | 131 80 moveto (flowers) show 580 | grestore 581 | 582 | % POLY/OPEN-SPLINE 583 | gsave 584 | newpath 585 | 210 75 moveto 586 | 237 75 lineto 587 | 237 113 lineto 588 | 0 18 atan dup cos 8 mul 255 exch sub 589 | exch sin 8 mul 113 exch sub lineto 590 | stroke 591 | grestore 592 | gsave 593 | newpath 594 | 255 113 8 3 18 0 tgifarrowtip 595 | closepath fill 596 | grestore 597 | 598 | % TEXT 599 | 0 setgray 600 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 601 | gsave 602 | 2 80 moveto (bouquet) show 603 | grestore 604 | 605 | % POLY/OPEN-SPLINE 606 | gsave 607 | newpath 608 | 81 77 moveto 609 | 108 77 lineto 610 | 108 115 lineto 611 | 0 18 atan dup cos 8 mul 126 exch sub 612 | exch sin 8 mul 115 exch sub lineto 613 | stroke 614 | grestore 615 | gsave 616 | newpath 617 | 126 115 8 3 18 0 tgifarrowtip 618 | closepath fill 619 | grestore 620 | 621 | grestore 622 | tgifsavedpage restore 623 | end 624 | %MatchingCreationDate: Wed Mar 8 14:25:41 1995 625 | -------------------------------------------------------------------------------- /cons-3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-jp/elisp-intro-ja/f135f863551ffd1fbea1a79a1c74fe394b9e8212/cons-3.pdf -------------------------------------------------------------------------------- /cons-4.eps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 EPSF-3.0 2 | %%BoundingBox: 6 681 355 758 3 | %%Title: cons-cell-diagram4 4 | %%CreationDate: Wed Mar 8 14:25:06 1995 5 | %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 6 | 7 | % Copyright (C) 1995, 1997, 2001-2013 Free Software Foundation, Inc. 8 | % 9 | % This file is part of GNU Emacs. 10 | % 11 | % GNU Emacs is free software: you can redistribute it and/or modify 12 | % it under the terms of the GNU General Public License as published by 13 | % the Free Software Foundation, either version 3 of the License, or 14 | % (at your option) any later version. 15 | % 16 | % GNU Emacs is distributed in the hope that it will be useful, 17 | % but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | % GNU General Public License for more details. 20 | % 21 | % You should have received a copy of the GNU General Public License 22 | % along with GNU Emacs. If not, see . 23 | 24 | /tgifdict 132 dict def 25 | tgifdict begin 26 | 27 | % 28 | % Using a zero value radius for an ellipse or an arc would result 29 | % in a non-invertible CTM matrix which causes problem when this 30 | % when this PostScript is wrapped inside other routines, such as 31 | % the multi.ps package from 32 | % ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such 33 | % error by uncommenting the sole line of the procedure below: 34 | % 35 | /tgif_min_radius 36 | { 37 | % dup 0.01 lt { pop 0.01 } if 38 | } bind def 39 | 40 | /tgifellipsedict 6 dict def 41 | tgifellipsedict /mtrx matrix put 42 | 43 | /tgifellipse 44 | { tgifellipsedict begin 45 | /yrad exch def 46 | /xrad exch def 47 | /y exch def 48 | /x exch def 49 | /savematrix mtrx currentmatrix def 50 | x y translate 51 | xrad yrad scale 52 | 0 0 1 0 360 arc 53 | savematrix setmatrix 54 | end 55 | } def 56 | 57 | /tgifarrowtipdict 8 dict def 58 | tgifarrowtipdict /mtrx matrix put 59 | 60 | /tgifarrowtip 61 | { tgifarrowtipdict begin 62 | /dy exch def 63 | /dx exch def 64 | /h exch def 65 | /w exch def 66 | /y exch def 67 | /x exch def 68 | /savematrix mtrx currentmatrix def 69 | x y translate 70 | dy dx atan rotate 71 | 0 0 moveto 72 | w neg h lineto 73 | w neg h neg lineto 74 | savematrix setmatrix 75 | end 76 | } def 77 | 78 | /tgifarcdict 8 dict def 79 | tgifarcdict /mtrx matrix put 80 | 81 | /tgifarcn 82 | { tgifarcdict begin 83 | /endangle exch def 84 | /startangle exch def 85 | /yrad exch def 86 | /xrad exch def 87 | /y exch def 88 | /x exch def 89 | /savematrix mtrx currentmatrix def 90 | x y translate 91 | xrad yrad scale 92 | 0 0 1 startangle endangle arc 93 | savematrix setmatrix 94 | end 95 | } def 96 | 97 | /tgifarc 98 | { tgifarcdict begin 99 | /endangle exch def 100 | /startangle exch def 101 | /yrad exch def 102 | /xrad exch def 103 | /y exch def 104 | /x exch def 105 | /savematrix mtrx currentmatrix def 106 | x y translate 107 | xrad yrad scale 108 | 0 0 1 startangle endangle arcn 109 | savematrix setmatrix 110 | end 111 | } def 112 | 113 | /tgifsetuserscreendict 22 dict def 114 | tgifsetuserscreendict begin 115 | /tempctm matrix def 116 | /temprot matrix def 117 | /tempscale matrix def 118 | 119 | /concatprocs 120 | { /proc2 exch cvlit def 121 | /proc1 exch cvlit def 122 | /newproc proc1 length proc2 length add array def 123 | newproc 0 proc1 putinterval 124 | newproc proc1 length proc2 putinterval 125 | newproc cvx 126 | } def 127 | /resmatrix matrix def 128 | /findresolution 129 | { 72 0 resmatrix defaultmatrix dtransform 130 | /yres exch def /xres exch def 131 | xres dup mul yres dup mul add sqrt 132 | } def 133 | end 134 | 135 | /tgifsetuserscreen 136 | { tgifsetuserscreendict begin 137 | /spotfunction exch def 138 | /screenangle exch def 139 | /cellsize exch def 140 | 141 | /m tempctm currentmatrix def 142 | /rm screenangle temprot rotate def 143 | /sm cellsize dup tempscale scale def 144 | 145 | sm rm m m concatmatrix m concatmatrix pop 146 | 147 | 1 0 m dtransform /y1 exch def /x1 exch def 148 | 149 | /veclength x1 dup mul y1 dup mul add sqrt def 150 | /frequency findresolution veclength div def 151 | 152 | /newscreenangle y1 x1 atan def 153 | 154 | m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt 155 | 156 | {{neg} /spotfunction load concatprocs 157 | /spotfunction exch def 158 | } if 159 | 160 | frequency newscreenangle /spotfunction load setscreen 161 | end 162 | } def 163 | 164 | /tgifsetpatterndict 18 dict def 165 | tgifsetpatterndict begin 166 | /bitison 167 | { /ybit exch def /xbit exch def 168 | /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def 169 | 170 | /mask 1 7 xbit 8 mod sub bitshift def 171 | bytevalue mask and 0 ne 172 | } def 173 | end 174 | 175 | /tgifbitpatternspotfunction 176 | { tgifsetpatterndict begin 177 | /y exch def /x exch def 178 | 179 | /xindex x 1 add 2 div bpside mul cvi def 180 | /yindex y 1 add 2 div bpside mul cvi def 181 | 182 | xindex yindex bitison 183 | { /onbits onbits 1 add def 1 } 184 | { /offbits offbits 1 add def 0 } 185 | ifelse 186 | end 187 | } def 188 | 189 | /tgifsetpattern 190 | { tgifsetpatterndict begin 191 | /cellsz exch def 192 | /angle exch def 193 | /bwidth exch def 194 | /bpside exch def 195 | /bstring exch def 196 | 197 | /onbits 0 def /offbits 0 def 198 | cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen 199 | {} settransfer 200 | offbits offbits onbits add div setgray 201 | end 202 | } def 203 | 204 | /tgifxpmdict 4 dict def 205 | /tgifbwpicstr 1 string def 206 | /tgifcolorpicstr 3 string def 207 | 208 | /tgifsetpixels { tgifxpmdict begin /pixels exch def end } def 209 | 210 | /tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def 211 | 212 | /tgifbwspot 213 | { tgifxpmdict begin 214 | /index exch def 215 | tgifbwpicstr 0 216 | pixels index 3 mul 3 getinterval aload pop 217 | 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add 218 | cvi put 219 | tgifbwpicstr 220 | end 221 | } def 222 | 223 | /tgifcolorspot 224 | { tgifxpmdict begin 225 | /index exch def 226 | pixels index 3 mul 3 getinterval aload pop 227 | 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 228 | 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 229 | 255 mul cvi tgifcolorpicstr 0 3 -1 roll put 230 | tgifcolorpicstr 231 | end 232 | } def 233 | 234 | /tgifnewcolorspot 235 | { tgifxpmdict begin 236 | /index exch def 237 | pixels index 3 mul 3 getinterval aload pop setrgbcolor 238 | end 239 | } def 240 | 241 | /tgifcolordict 4 dict def 242 | 243 | /colorimage where 244 | { pop } 245 | { /colorimage 246 | { tgifcolordict begin 247 | pop pop pop pop pop 248 | /ih exch def 249 | /iw exch def 250 | /x 0 def 251 | /y 0 def 252 | 1 1 ih 253 | { pop 1 1 iw 254 | { pop currentfile 255 | tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot 256 | x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto 257 | closepath fill 258 | /x x 1 add def 259 | } for 260 | /y y 1 add def 261 | /x 0 def 262 | } for 263 | end 264 | } def 265 | } ifelse 266 | 267 | /tgifpatdict 10 dict def 268 | 269 | /tgifpatbyte 270 | { currentdict /retstr get exch 271 | pat i cellsz mod get put 272 | } def 273 | 274 | /tgifpatproc 275 | { 0 1 widthlim {tgifpatbyte} for retstr 276 | /i i 1 add def 277 | } def 278 | 279 | /tgifpatfill 280 | { tgifpatdict begin 281 | /h exch def 282 | /w exch def 283 | /lty exch def 284 | /ltx exch def 285 | /cellsz exch def 286 | /pat exch def 287 | 288 | /widthlim w cellsz div cvi 1 sub def 289 | /retstr widthlim 1 add string def 290 | /i 0 def 291 | 292 | ltx lty translate 293 | w h true [1 0 0 1 0 0] {tgifpatproc} imagemask 294 | ltx neg lty neg translate 295 | end 296 | } def 297 | 298 | /pat1 def 299 | /pat2 <0000000000000000> def 300 | /pat3 <8000000008000000> def 301 | /pat4 <8800000022000000> def 302 | /pat5 <8800220088002200> def 303 | /pat6 <8822882288228822> def 304 | /pat7 def 305 | /pat8 <77dd77dd77dd77dd> def 306 | /pat9 <77ffddff77ffddff> def 307 | /pat10 <77ffffff77ffffff> def 308 | /pat11 <7fffffff7fffffff> def 309 | /pat12 <8040200002040800> def 310 | /pat13 <40a00000040a0000> def 311 | /pat14 def 312 | /pat15 def 313 | /pat16 def 314 | /pat17 <038448300c020101> def 315 | /pat18 <081c22c180010204> def 316 | /pat19 <8080413e080814e3> def 317 | /pat20 <8040201008040201> def 318 | /pat21 <8844221188442211> def 319 | /pat22 <77bbddee77bbddee> def 320 | /pat23 def 321 | /pat24 <7fbfdfeff7fbfdfe> def 322 | /pat25 <3e1f8fc7e3f1f87c> def 323 | /pat26 <0102040810204080> def 324 | /pat27 <1122448811224488> def 325 | /pat28 def 326 | /pat29 <83070e1c3870e0c1> def 327 | /pat30 def 328 | /pat31 <7cf8f1e3c78f1f3e> def 329 | 330 | /tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def 331 | 332 | /tgifrighttext { dup stringwidth pop neg 0 rmoveto } def 333 | 334 | /tgifreencsmalldict 12 dict def 335 | /tgifReEncodeSmall 336 | { tgifreencsmalldict begin 337 | /newcodesandnames exch def 338 | /newfontname exch def 339 | /basefontname exch def 340 | 341 | /basefontdict basefontname findfont def 342 | /newfont basefontdict maxlength dict def 343 | 344 | basefontdict 345 | { exch dup /FID ne 346 | { dup /Encoding eq 347 | { exch dup length array copy newfont 3 1 roll put } 348 | { exch newfont 3 1 roll put } 349 | ifelse 350 | } 351 | { pop pop } 352 | ifelse 353 | } 354 | forall 355 | 356 | newfont /FontName newfontname put 357 | newcodesandnames aload pop 358 | 359 | newcodesandnames length 2 idiv 360 | { newfont /Encoding get 3 1 roll put} 361 | repeat 362 | 363 | newfontname newfont definefont pop 364 | end 365 | } def 366 | 367 | /tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def 368 | 369 | /tgifboxdict 6 dict def 370 | /tgifboxstroke 371 | { tgifboxdict begin 372 | /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 373 | 1.415 setmiterlimit 374 | w 1 eq { w setlinewidth } if 375 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 376 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 377 | pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse 378 | pat pat1 ne pat pat2 ne and { grestore } if 379 | w 1 eq { 1 setlinewidth } if 380 | 1 setmiterlimit 381 | end 382 | } def 383 | /tgifboxfill 384 | { tgifboxdict begin 385 | /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 386 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 387 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 388 | pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse 389 | pat pat1 ne pat pat2 ne and { grestore } if 390 | end 391 | } def 392 | 393 | end 394 | 395 | %%PageBoundingBox: 6 681 355 758 396 | tgifdict begin 397 | /tgifsavedpage save def 398 | 399 | 1 setmiterlimit 400 | 1 setlinewidth 401 | 402 | 0 setgray 403 | 404 | 72 0 mul 72 11.00 mul translate 405 | 72 128 div 100 mul 100 div dup neg scale 406 | 407 | gsave 408 | 409 | % POLY/OPEN-SPLINE 410 | gsave 411 | newpath 412 | 274 102 moveto 413 | 274 134 lineto 414 | stroke 415 | grestore 416 | 417 | % POLY/OPEN-SPLINE 418 | gsave 419 | newpath 420 | 289 122 moveto 421 | 0 56 atan dup cos 8 mul 345 exch sub 422 | exch sin 8 mul 122 exch sub lineto 423 | stroke 424 | grestore 425 | gsave 426 | newpath 427 | 345 122 8 3 56 0 tgifarrowtip 428 | closepath fill 429 | grestore 430 | 431 | % BOX 432 | gsave 433 | 1.415 setmiterlimit 434 | newpath 435 | 350 100 moveto 414 100 lineto 414 132 lineto 350 132 lineto 436 | closepath stroke 437 | 1 setmiterlimit 438 | grestore 439 | 440 | % POLY/OPEN-SPLINE 441 | gsave 442 | newpath 443 | 382 100 moveto 444 | 382 132 lineto 445 | stroke 446 | grestore 447 | 448 | % POLY/OPEN-SPLINE 449 | gsave 450 | newpath 451 | 397 114 moveto 452 | 0 59 atan dup cos 8 mul 456 exch sub 453 | exch sin 8 mul 114 exch sub lineto 454 | stroke 455 | grestore 456 | gsave 457 | newpath 458 | 456 114 8 3 59 0 tgifarrowtip 459 | closepath fill 460 | grestore 461 | 462 | % TEXT 463 | 0 setgray 464 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 465 | gsave 466 | 430 170 moveto (violet) show 467 | grestore 468 | 469 | % POLY/OPEN-SPLINE 470 | gsave 471 | newpath 472 | 366 116 moveto 473 | 366 165 lineto 474 | 0 48 atan dup cos 8 mul 414 exch sub 475 | exch sin 8 mul 165 exch sub lineto 476 | stroke 477 | grestore 478 | gsave 479 | newpath 480 | 414 165 8 3 48 0 tgifarrowtip 481 | closepath fill 482 | grestore 483 | 484 | % TEXT 485 | 0 setgray 486 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 487 | gsave 488 | 219 78 moveto (flowers) show 489 | grestore 490 | 491 | % POLY/OPEN-SPLINE 492 | gsave 493 | newpath 494 | 298 73 moveto 495 | 325 73 lineto 496 | 325 111 lineto 497 | 0 18 atan dup cos 8 mul 343 exch sub 498 | exch sin 8 mul 111 exch sub lineto 499 | stroke 500 | grestore 501 | gsave 502 | newpath 503 | 343 111 8 3 18 0 tgifarrowtip 504 | closepath fill 505 | grestore 506 | 507 | % BOX 508 | gsave 509 | 1.415 setmiterlimit 510 | newpath 511 | 459 95 moveto 523 95 lineto 523 127 lineto 459 127 lineto 512 | closepath stroke 513 | 1 setmiterlimit 514 | grestore 515 | 516 | % POLY/OPEN-SPLINE 517 | gsave 518 | newpath 519 | 490 95 moveto 520 | 490 127 lineto 521 | stroke 522 | grestore 523 | 524 | % POLY/OPEN-SPLINE 525 | gsave 526 | newpath 527 | 506 112 moveto 528 | 0 48 atan dup cos 8 mul 554 exch sub 529 | exch sin 8 mul 112 exch sub lineto 530 | stroke 531 | grestore 532 | gsave 533 | newpath 534 | 554 112 8 3 48 0 tgifarrowtip 535 | closepath fill 536 | grestore 537 | 538 | % TEXT 539 | 0 setgray 540 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 541 | gsave 542 | 566 118 moveto (nil) show 543 | grestore 544 | 545 | % TEXT 546 | 0 setgray 547 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 548 | gsave 549 | 538 151 moveto (buttercup) show 550 | grestore 551 | 552 | % POLY/OPEN-SPLINE 553 | gsave 554 | newpath 555 | 474 109 moveto 556 | 474 146 lineto 557 | 0 48 atan dup cos 8 mul 522 exch sub 558 | exch sin 8 mul 146 exch sub lineto 559 | stroke 560 | grestore 561 | gsave 562 | newpath 563 | 522 146 8 3 48 0 tgifarrowtip 564 | closepath fill 565 | grestore 566 | 567 | % BOX 568 | gsave 569 | 1.415 setmiterlimit 570 | newpath 571 | 244 102 moveto 308 102 lineto 308 134 lineto 244 134 lineto 572 | closepath stroke 573 | 1 setmiterlimit 574 | grestore 575 | 576 | % TEXT 577 | 0 setgray 578 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 579 | gsave 580 | 324 189 moveto (rose) show 581 | grestore 582 | 583 | % POLY/OPEN-SPLINE 584 | gsave 585 | newpath 586 | 260 117 moveto 587 | 260 184 lineto 588 | 0 48 atan dup cos 8 mul 308 exch sub 589 | exch sin 8 mul 184 exch sub lineto 590 | stroke 591 | grestore 592 | gsave 593 | newpath 594 | 308 184 8 3 48 0 tgifarrowtip 595 | closepath fill 596 | grestore 597 | 598 | % BOX 599 | gsave 600 | 1.415 setmiterlimit 601 | newpath 602 | 146 101 moveto 210 101 lineto 210 133 lineto 146 133 lineto 603 | closepath stroke 604 | 1 setmiterlimit 605 | grestore 606 | 607 | % POLY/OPEN-SPLINE 608 | gsave 609 | newpath 610 | 177 101 moveto 611 | 177 133 lineto 612 | stroke 613 | grestore 614 | 615 | % POLY/OPEN-SPLINE 616 | gsave 617 | newpath 618 | 193 118 moveto 619 | 0 48 atan dup cos 8 mul 241 exch sub 620 | exch sin 8 mul 118 exch sub lineto 621 | stroke 622 | grestore 623 | gsave 624 | newpath 625 | 241 118 8 3 48 0 tgifarrowtip 626 | closepath fill 627 | grestore 628 | 629 | % TEXT 630 | 0 setgray 631 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 632 | gsave 633 | 187 178 moveto (lily) show 634 | grestore 635 | 636 | % POLY/OPEN-SPLINE 637 | gsave 638 | newpath 639 | 163 118 moveto 640 | 163 171 lineto 641 | 0 18 atan dup cos 8 mul 181 exch sub 642 | exch sin 8 mul 171 exch sub lineto 643 | stroke 644 | grestore 645 | gsave 646 | newpath 647 | 181 171 8 3 18 0 tgifarrowtip 648 | closepath fill 649 | grestore 650 | 651 | % TEXT 652 | 0 setgray 653 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 654 | gsave 655 | 16 78 moveto (bouquet) show 656 | grestore 657 | 658 | % POLY/OPEN-SPLINE 659 | gsave 660 | newpath 661 | 95 73 moveto 662 | 122 73 lineto 663 | 122 111 lineto 664 | 0 18 atan dup cos 8 mul 140 exch sub 665 | exch sin 8 mul 111 exch sub lineto 666 | stroke 667 | grestore 668 | gsave 669 | newpath 670 | 140 111 8 3 18 0 tgifarrowtip 671 | closepath fill 672 | grestore 673 | 674 | grestore 675 | tgifsavedpage restore 676 | end 677 | %MatchingCreationDate: Wed Mar 8 14:25:06 1995 678 | -------------------------------------------------------------------------------- /cons-4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-jp/elisp-intro-ja/f135f863551ffd1fbea1a79a1c74fe394b9e8212/cons-4.pdf -------------------------------------------------------------------------------- /cons-5.eps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 EPSF-3.0 2 | %%BoundingBox: 15 680 305 764 3 | %%Title: cons-cell-diagram5 4 | %%CreationDate: Wed Mar 8 14:27:28 1995 5 | %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 6 | 7 | % Copyright (C) 1995, 1997, 2001-2013 Free Software Foundation, Inc. 8 | % 9 | % This file is part of GNU Emacs. 10 | % 11 | % GNU Emacs is free software: you can redistribute it and/or modify 12 | % it under the terms of the GNU General Public License as published by 13 | % the Free Software Foundation, either version 3 of the License, or 14 | % (at your option) any later version. 15 | % 16 | % GNU Emacs is distributed in the hope that it will be useful, 17 | % but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | % GNU General Public License for more details. 20 | % 21 | % You should have received a copy of the GNU General Public License 22 | % along with GNU Emacs. If not, see . 23 | 24 | /tgifdict 132 dict def 25 | tgifdict begin 26 | 27 | % 28 | % Using a zero value radius for an ellipse or an arc would result 29 | % in a non-invertible CTM matrix which causes problem when this 30 | % when this PostScript is wrapped inside other routines, such as 31 | % the multi.ps package from 32 | % ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such 33 | % error by uncommenting the sole line of the procedure below: 34 | % 35 | /tgif_min_radius 36 | { 37 | % dup 0.01 lt { pop 0.01 } if 38 | } bind def 39 | 40 | /tgifellipsedict 6 dict def 41 | tgifellipsedict /mtrx matrix put 42 | 43 | /tgifellipse 44 | { tgifellipsedict begin 45 | /yrad exch def 46 | /xrad exch def 47 | /y exch def 48 | /x exch def 49 | /savematrix mtrx currentmatrix def 50 | x y translate 51 | xrad yrad scale 52 | 0 0 1 0 360 arc 53 | savematrix setmatrix 54 | end 55 | } def 56 | 57 | /tgifarrowtipdict 8 dict def 58 | tgifarrowtipdict /mtrx matrix put 59 | 60 | /tgifarrowtip 61 | { tgifarrowtipdict begin 62 | /dy exch def 63 | /dx exch def 64 | /h exch def 65 | /w exch def 66 | /y exch def 67 | /x exch def 68 | /savematrix mtrx currentmatrix def 69 | x y translate 70 | dy dx atan rotate 71 | 0 0 moveto 72 | w neg h lineto 73 | w neg h neg lineto 74 | savematrix setmatrix 75 | end 76 | } def 77 | 78 | /tgifarcdict 8 dict def 79 | tgifarcdict /mtrx matrix put 80 | 81 | /tgifarcn 82 | { tgifarcdict begin 83 | /endangle exch def 84 | /startangle exch def 85 | /yrad exch def 86 | /xrad exch def 87 | /y exch def 88 | /x exch def 89 | /savematrix mtrx currentmatrix def 90 | x y translate 91 | xrad yrad scale 92 | 0 0 1 startangle endangle arc 93 | savematrix setmatrix 94 | end 95 | } def 96 | 97 | /tgifarc 98 | { tgifarcdict begin 99 | /endangle exch def 100 | /startangle exch def 101 | /yrad exch def 102 | /xrad exch def 103 | /y exch def 104 | /x exch def 105 | /savematrix mtrx currentmatrix def 106 | x y translate 107 | xrad yrad scale 108 | 0 0 1 startangle endangle arcn 109 | savematrix setmatrix 110 | end 111 | } def 112 | 113 | /tgifsetuserscreendict 22 dict def 114 | tgifsetuserscreendict begin 115 | /tempctm matrix def 116 | /temprot matrix def 117 | /tempscale matrix def 118 | 119 | /concatprocs 120 | { /proc2 exch cvlit def 121 | /proc1 exch cvlit def 122 | /newproc proc1 length proc2 length add array def 123 | newproc 0 proc1 putinterval 124 | newproc proc1 length proc2 putinterval 125 | newproc cvx 126 | } def 127 | /resmatrix matrix def 128 | /findresolution 129 | { 72 0 resmatrix defaultmatrix dtransform 130 | /yres exch def /xres exch def 131 | xres dup mul yres dup mul add sqrt 132 | } def 133 | end 134 | 135 | /tgifsetuserscreen 136 | { tgifsetuserscreendict begin 137 | /spotfunction exch def 138 | /screenangle exch def 139 | /cellsize exch def 140 | 141 | /m tempctm currentmatrix def 142 | /rm screenangle temprot rotate def 143 | /sm cellsize dup tempscale scale def 144 | 145 | sm rm m m concatmatrix m concatmatrix pop 146 | 147 | 1 0 m dtransform /y1 exch def /x1 exch def 148 | 149 | /veclength x1 dup mul y1 dup mul add sqrt def 150 | /frequency findresolution veclength div def 151 | 152 | /newscreenangle y1 x1 atan def 153 | 154 | m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt 155 | 156 | {{neg} /spotfunction load concatprocs 157 | /spotfunction exch def 158 | } if 159 | 160 | frequency newscreenangle /spotfunction load setscreen 161 | end 162 | } def 163 | 164 | /tgifsetpatterndict 18 dict def 165 | tgifsetpatterndict begin 166 | /bitison 167 | { /ybit exch def /xbit exch def 168 | /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def 169 | 170 | /mask 1 7 xbit 8 mod sub bitshift def 171 | bytevalue mask and 0 ne 172 | } def 173 | end 174 | 175 | /tgifbitpatternspotfunction 176 | { tgifsetpatterndict begin 177 | /y exch def /x exch def 178 | 179 | /xindex x 1 add 2 div bpside mul cvi def 180 | /yindex y 1 add 2 div bpside mul cvi def 181 | 182 | xindex yindex bitison 183 | { /onbits onbits 1 add def 1 } 184 | { /offbits offbits 1 add def 0 } 185 | ifelse 186 | end 187 | } def 188 | 189 | /tgifsetpattern 190 | { tgifsetpatterndict begin 191 | /cellsz exch def 192 | /angle exch def 193 | /bwidth exch def 194 | /bpside exch def 195 | /bstring exch def 196 | 197 | /onbits 0 def /offbits 0 def 198 | cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen 199 | {} settransfer 200 | offbits offbits onbits add div setgray 201 | end 202 | } def 203 | 204 | /tgifxpmdict 4 dict def 205 | /tgifbwpicstr 1 string def 206 | /tgifcolorpicstr 3 string def 207 | 208 | /tgifsetpixels { tgifxpmdict begin /pixels exch def end } def 209 | 210 | /tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def 211 | 212 | /tgifbwspot 213 | { tgifxpmdict begin 214 | /index exch def 215 | tgifbwpicstr 0 216 | pixels index 3 mul 3 getinterval aload pop 217 | 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add 218 | cvi put 219 | tgifbwpicstr 220 | end 221 | } def 222 | 223 | /tgifcolorspot 224 | { tgifxpmdict begin 225 | /index exch def 226 | pixels index 3 mul 3 getinterval aload pop 227 | 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 228 | 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 229 | 255 mul cvi tgifcolorpicstr 0 3 -1 roll put 230 | tgifcolorpicstr 231 | end 232 | } def 233 | 234 | /tgifnewcolorspot 235 | { tgifxpmdict begin 236 | /index exch def 237 | pixels index 3 mul 3 getinterval aload pop setrgbcolor 238 | end 239 | } def 240 | 241 | /tgifcolordict 4 dict def 242 | 243 | /colorimage where 244 | { pop } 245 | { /colorimage 246 | { tgifcolordict begin 247 | pop pop pop pop pop 248 | /ih exch def 249 | /iw exch def 250 | /x 0 def 251 | /y 0 def 252 | 1 1 ih 253 | { pop 1 1 iw 254 | { pop currentfile 255 | tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot 256 | x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto 257 | closepath fill 258 | /x x 1 add def 259 | } for 260 | /y y 1 add def 261 | /x 0 def 262 | } for 263 | end 264 | } def 265 | } ifelse 266 | 267 | /tgifpatdict 10 dict def 268 | 269 | /tgifpatbyte 270 | { currentdict /retstr get exch 271 | pat i cellsz mod get put 272 | } def 273 | 274 | /tgifpatproc 275 | { 0 1 widthlim {tgifpatbyte} for retstr 276 | /i i 1 add def 277 | } def 278 | 279 | /tgifpatfill 280 | { tgifpatdict begin 281 | /h exch def 282 | /w exch def 283 | /lty exch def 284 | /ltx exch def 285 | /cellsz exch def 286 | /pat exch def 287 | 288 | /widthlim w cellsz div cvi 1 sub def 289 | /retstr widthlim 1 add string def 290 | /i 0 def 291 | 292 | ltx lty translate 293 | w h true [1 0 0 1 0 0] {tgifpatproc} imagemask 294 | ltx neg lty neg translate 295 | end 296 | } def 297 | 298 | /pat1 def 299 | /pat2 <0000000000000000> def 300 | /pat3 <8000000008000000> def 301 | /pat4 <8800000022000000> def 302 | /pat5 <8800220088002200> def 303 | /pat6 <8822882288228822> def 304 | /pat7 def 305 | /pat8 <77dd77dd77dd77dd> def 306 | /pat9 <77ffddff77ffddff> def 307 | /pat10 <77ffffff77ffffff> def 308 | /pat11 <7fffffff7fffffff> def 309 | /pat12 <8040200002040800> def 310 | /pat13 <40a00000040a0000> def 311 | /pat14 def 312 | /pat15 def 313 | /pat16 def 314 | /pat17 <038448300c020101> def 315 | /pat18 <081c22c180010204> def 316 | /pat19 <8080413e080814e3> def 317 | /pat20 <8040201008040201> def 318 | /pat21 <8844221188442211> def 319 | /pat22 <77bbddee77bbddee> def 320 | /pat23 def 321 | /pat24 <7fbfdfeff7fbfdfe> def 322 | /pat25 <3e1f8fc7e3f1f87c> def 323 | /pat26 <0102040810204080> def 324 | /pat27 <1122448811224488> def 325 | /pat28 def 326 | /pat29 <83070e1c3870e0c1> def 327 | /pat30 def 328 | /pat31 <7cf8f1e3c78f1f3e> def 329 | 330 | /tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def 331 | 332 | /tgifrighttext { dup stringwidth pop neg 0 rmoveto } def 333 | 334 | /tgifreencsmalldict 12 dict def 335 | /tgifReEncodeSmall 336 | { tgifreencsmalldict begin 337 | /newcodesandnames exch def 338 | /newfontname exch def 339 | /basefontname exch def 340 | 341 | /basefontdict basefontname findfont def 342 | /newfont basefontdict maxlength dict def 343 | 344 | basefontdict 345 | { exch dup /FID ne 346 | { dup /Encoding eq 347 | { exch dup length array copy newfont 3 1 roll put } 348 | { exch newfont 3 1 roll put } 349 | ifelse 350 | } 351 | { pop pop } 352 | ifelse 353 | } 354 | forall 355 | 356 | newfont /FontName newfontname put 357 | newcodesandnames aload pop 358 | 359 | newcodesandnames length 2 idiv 360 | { newfont /Encoding get 3 1 roll put} 361 | repeat 362 | 363 | newfontname newfont definefont pop 364 | end 365 | } def 366 | 367 | /tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def 368 | 369 | /tgifboxdict 6 dict def 370 | /tgifboxstroke 371 | { tgifboxdict begin 372 | /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 373 | 1.415 setmiterlimit 374 | w 1 eq { w setlinewidth } if 375 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 376 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 377 | pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse 378 | pat pat1 ne pat pat2 ne and { grestore } if 379 | w 1 eq { 1 setlinewidth } if 380 | 1 setmiterlimit 381 | end 382 | } def 383 | /tgifboxfill 384 | { tgifboxdict begin 385 | /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 386 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 387 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 388 | pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse 389 | pat pat1 ne pat pat2 ne and { grestore } if 390 | end 391 | } def 392 | 393 | end 394 | 395 | %%PageBoundingBox: 15 680 305 764 396 | tgifdict begin 397 | /tgifsavedpage save def 398 | 399 | 1 setmiterlimit 400 | 1 setlinewidth 401 | 402 | 0 setgray 403 | 404 | 72 0 mul 72 11.00 mul translate 405 | 72 128 div 100 mul 100 div dup neg scale 406 | 407 | gsave 408 | 409 | % POLY/OPEN-SPLINE 410 | gsave 411 | newpath 412 | 156 105 moveto 413 | 156 137 lineto 414 | stroke 415 | grestore 416 | 417 | % POLY/OPEN-SPLINE 418 | gsave 419 | newpath 420 | 171 125 moveto 421 | 0 56 atan dup cos 8 mul 227 exch sub 422 | exch sin 8 mul 125 exch sub lineto 423 | stroke 424 | grestore 425 | gsave 426 | newpath 427 | 227 125 8 3 56 0 tgifarrowtip 428 | closepath fill 429 | grestore 430 | 431 | % BOX 432 | gsave 433 | 1.415 setmiterlimit 434 | newpath 435 | 232 103 moveto 296 103 lineto 296 135 lineto 232 135 lineto 436 | closepath stroke 437 | 1 setmiterlimit 438 | grestore 439 | 440 | % POLY/OPEN-SPLINE 441 | gsave 442 | newpath 443 | 264 103 moveto 444 | 264 135 lineto 445 | stroke 446 | grestore 447 | 448 | % POLY/OPEN-SPLINE 449 | gsave 450 | newpath 451 | 279 117 moveto 452 | 0 59 atan dup cos 8 mul 338 exch sub 453 | exch sin 8 mul 117 exch sub lineto 454 | stroke 455 | grestore 456 | gsave 457 | newpath 458 | 338 117 8 3 59 0 tgifarrowtip 459 | closepath fill 460 | grestore 461 | 462 | % TEXT 463 | 0 setgray 464 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 465 | gsave 466 | 289 172 moveto (a different piece of text) show 467 | grestore 468 | 469 | % POLY/OPEN-SPLINE 470 | gsave 471 | newpath 472 | 248 119 moveto 473 | 248 168 lineto 474 | 0 29 atan dup cos 8 mul 277 exch sub 475 | exch sin 8 mul 168 exch sub lineto 476 | stroke 477 | grestore 478 | gsave 479 | newpath 480 | 277 168 8 3 29 0 tgifarrowtip 481 | closepath fill 482 | grestore 483 | 484 | % TEXT 485 | 0 setgray 486 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 487 | gsave 488 | 147 66 moveto (kill-ring-yank-pointer) show 489 | grestore 490 | 491 | % POLY/OPEN-SPLINE 492 | gsave 493 | newpath 494 | 207 76 moveto 495 | 207 114 lineto 496 | 0 18 atan dup cos 8 mul 225 exch sub 497 | exch sin 8 mul 114 exch sub lineto 498 | stroke 499 | grestore 500 | gsave 501 | newpath 502 | 225 114 8 3 18 0 tgifarrowtip 503 | closepath fill 504 | grestore 505 | 506 | % BOX 507 | gsave 508 | 1.415 setmiterlimit 509 | newpath 510 | 341 98 moveto 405 98 lineto 405 130 lineto 341 130 lineto 511 | closepath stroke 512 | 1 setmiterlimit 513 | grestore 514 | 515 | % POLY/OPEN-SPLINE 516 | gsave 517 | newpath 518 | 372 98 moveto 519 | 372 130 lineto 520 | stroke 521 | grestore 522 | 523 | % POLY/OPEN-SPLINE 524 | gsave 525 | newpath 526 | 388 115 moveto 527 | 0 48 atan dup cos 8 mul 436 exch sub 528 | exch sin 8 mul 115 exch sub lineto 529 | stroke 530 | grestore 531 | gsave 532 | newpath 533 | 436 115 8 3 48 0 tgifarrowtip 534 | closepath fill 535 | grestore 536 | 537 | % TEXT 538 | 0 setgray 539 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 540 | gsave 541 | 448 121 moveto (nil) show 542 | grestore 543 | 544 | % TEXT 545 | 0 setgray 546 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 547 | gsave 548 | 397 154 moveto (yet more text) show 549 | grestore 550 | 551 | % POLY/OPEN-SPLINE 552 | gsave 553 | newpath 554 | 356 112 moveto 555 | 356 149 lineto 556 | 0 35 atan dup cos 8 mul 391 exch sub 557 | exch sin 8 mul 149 exch sub lineto 558 | stroke 559 | grestore 560 | gsave 561 | newpath 562 | 391 149 8 3 35 0 tgifarrowtip 563 | closepath fill 564 | grestore 565 | 566 | % BOX 567 | gsave 568 | 1.415 setmiterlimit 569 | newpath 570 | 126 105 moveto 190 105 lineto 190 137 lineto 126 137 lineto 571 | closepath stroke 572 | 1 setmiterlimit 573 | grestore 574 | 575 | % TEXT 576 | 0 setgray 577 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 578 | gsave 579 | 206 192 moveto (some text) show 580 | grestore 581 | 582 | % POLY/OPEN-SPLINE 583 | gsave 584 | newpath 585 | 142 120 moveto 586 | 142 187 lineto 587 | 0 48 atan dup cos 8 mul 190 exch sub 588 | exch sin 8 mul 187 exch sub lineto 589 | stroke 590 | grestore 591 | gsave 592 | newpath 593 | 190 187 8 3 48 0 tgifarrowtip 594 | closepath fill 595 | grestore 596 | 597 | % TEXT 598 | 0 setgray 599 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 600 | gsave 601 | 32 66 moveto (kill-ring) show 602 | grestore 603 | 604 | % POLY/OPEN-SPLINE 605 | gsave 606 | newpath 607 | 65 81 moveto 608 | 65 121 lineto 609 | 0 51 atan dup cos 8 mul 116 exch sub 610 | exch sin 8 mul 121 exch sub lineto 611 | stroke 612 | grestore 613 | gsave 614 | newpath 615 | 116 121 8 3 51 0 tgifarrowtip 616 | closepath fill 617 | grestore 618 | 619 | grestore 620 | tgifsavedpage restore 621 | end 622 | %MatchingCreationDate: Wed Mar 8 14:27:28 1995 623 | -------------------------------------------------------------------------------- /cons-5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-jp/elisp-intro-ja/f135f863551ffd1fbea1a79a1c74fe394b9e8212/cons-5.pdf -------------------------------------------------------------------------------- /doclicense.texi: -------------------------------------------------------------------------------- 1 | @c The GNU Free Documentation License. 2 | @center Version 1.3, 3 November 2008 3 | 4 | @c This file is intended to be included within another document, 5 | @c hence no sectioning command or @node. 6 | 7 | @display 8 | Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. 9 | @uref{http://fsf.org/} 10 | 11 | Everyone is permitted to copy and distribute verbatim copies 12 | of this license document, but changing it is not allowed. 13 | @end display 14 | 15 | @enumerate 0 16 | @item 17 | PREAMBLE 18 | 19 | The purpose of this License is to make a manual, textbook, or other 20 | functional and useful document @dfn{free} in the sense of freedom: to 21 | assure everyone the effective freedom to copy and redistribute it, 22 | with or without modifying it, either commercially or noncommercially. 23 | Secondarily, this License preserves for the author and publisher a way 24 | to get credit for their work, while not being considered responsible 25 | for modifications made by others. 26 | 27 | This License is a kind of ``copyleft'', which means that derivative 28 | works of the document must themselves be free in the same sense. It 29 | complements the GNU General Public License, which is a copyleft 30 | license designed for free software. 31 | 32 | We have designed this License in order to use it for manuals for free 33 | software, because free software needs free documentation: a free 34 | program should come with manuals providing the same freedoms that the 35 | software does. But this License is not limited to software manuals; 36 | it can be used for any textual work, regardless of subject matter or 37 | whether it is published as a printed book. We recommend this License 38 | principally for works whose purpose is instruction or reference. 39 | 40 | @item 41 | APPLICABILITY AND DEFINITIONS 42 | 43 | This License applies to any manual or other work, in any medium, that 44 | contains a notice placed by the copyright holder saying it can be 45 | distributed under the terms of this License. Such a notice grants a 46 | world-wide, royalty-free license, unlimited in duration, to use that 47 | work under the conditions stated herein. The ``Document'', below, 48 | refers to any such manual or work. Any member of the public is a 49 | licensee, and is addressed as ``you''. You accept the license if you 50 | copy, modify or distribute the work in a way requiring permission 51 | under copyright law. 52 | 53 | A ``Modified Version'' of the Document means any work containing the 54 | Document or a portion of it, either copied verbatim, or with 55 | modifications and/or translated into another language. 56 | 57 | A ``Secondary Section'' is a named appendix or a front-matter section 58 | of the Document that deals exclusively with the relationship of the 59 | publishers or authors of the Document to the Document's overall 60 | subject (or to related matters) and contains nothing that could fall 61 | directly within that overall subject. (Thus, if the Document is in 62 | part a textbook of mathematics, a Secondary Section may not explain 63 | any mathematics.) The relationship could be a matter of historical 64 | connection with the subject or with related matters, or of legal, 65 | commercial, philosophical, ethical or political position regarding 66 | them. 67 | 68 | The ``Invariant Sections'' are certain Secondary Sections whose titles 69 | are designated, as being those of Invariant Sections, in the notice 70 | that says that the Document is released under this License. If a 71 | section does not fit the above definition of Secondary then it is not 72 | allowed to be designated as Invariant. The Document may contain zero 73 | Invariant Sections. If the Document does not identify any Invariant 74 | Sections then there are none. 75 | 76 | The ``Cover Texts'' are certain short passages of text that are listed, 77 | as Front-Cover Texts or Back-Cover Texts, in the notice that says that 78 | the Document is released under this License. A Front-Cover Text may 79 | be at most 5 words, and a Back-Cover Text may be at most 25 words. 80 | 81 | A ``Transparent'' copy of the Document means a machine-readable copy, 82 | represented in a format whose specification is available to the 83 | general public, that is suitable for revising the document 84 | straightforwardly with generic text editors or (for images composed of 85 | pixels) generic paint programs or (for drawings) some widely available 86 | drawing editor, and that is suitable for input to text formatters or 87 | for automatic translation to a variety of formats suitable for input 88 | to text formatters. A copy made in an otherwise Transparent file 89 | format whose markup, or absence of markup, has been arranged to thwart 90 | or discourage subsequent modification by readers is not Transparent. 91 | An image format is not Transparent if used for any substantial amount 92 | of text. A copy that is not ``Transparent'' is called ``Opaque''. 93 | 94 | Examples of suitable formats for Transparent copies include plain 95 | ASCII without markup, Texinfo input format, La@TeX{} input 96 | format, SGML or XML using a publicly available 97 | DTD, and standard-conforming simple HTML, 98 | PostScript or PDF designed for human modification. Examples 99 | of transparent image formats include PNG, XCF and 100 | JPG@. Opaque formats include proprietary formats that can be 101 | read and edited only by proprietary word processors, SGML or 102 | XML for which the DTD and/or processing tools are 103 | not generally available, and the machine-generated HTML, 104 | PostScript or PDF produced by some word processors for 105 | output purposes only. 106 | 107 | The ``Title Page'' means, for a printed book, the title page itself, 108 | plus such following pages as are needed to hold, legibly, the material 109 | this License requires to appear in the title page. For works in 110 | formats which do not have any title page as such, ``Title Page'' means 111 | the text near the most prominent appearance of the work's title, 112 | preceding the beginning of the body of the text. 113 | 114 | The ``publisher'' means any person or entity that distributes copies 115 | of the Document to the public. 116 | 117 | A section ``Entitled XYZ'' means a named subunit of the Document whose 118 | title either is precisely XYZ or contains XYZ in parentheses following 119 | text that translates XYZ in another language. (Here XYZ stands for a 120 | specific section name mentioned below, such as ``Acknowledgements'', 121 | ``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' 122 | of such a section when you modify the Document means that it remains a 123 | section ``Entitled XYZ'' according to this definition. 124 | 125 | The Document may include Warranty Disclaimers next to the notice which 126 | states that this License applies to the Document. These Warranty 127 | Disclaimers are considered to be included by reference in this 128 | License, but only as regards disclaiming warranties: any other 129 | implication that these Warranty Disclaimers may have is void and has 130 | no effect on the meaning of this License. 131 | 132 | @item 133 | VERBATIM COPYING 134 | 135 | You may copy and distribute the Document in any medium, either 136 | commercially or noncommercially, provided that this License, the 137 | copyright notices, and the license notice saying this License applies 138 | to the Document are reproduced in all copies, and that you add no other 139 | conditions whatsoever to those of this License. You may not use 140 | technical measures to obstruct or control the reading or further 141 | copying of the copies you make or distribute. However, you may accept 142 | compensation in exchange for copies. If you distribute a large enough 143 | number of copies you must also follow the conditions in section 3. 144 | 145 | You may also lend copies, under the same conditions stated above, and 146 | you may publicly display copies. 147 | 148 | @item 149 | COPYING IN QUANTITY 150 | 151 | If you publish printed copies (or copies in media that commonly have 152 | printed covers) of the Document, numbering more than 100, and the 153 | Document's license notice requires Cover Texts, you must enclose the 154 | copies in covers that carry, clearly and legibly, all these Cover 155 | Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on 156 | the back cover. Both covers must also clearly and legibly identify 157 | you as the publisher of these copies. The front cover must present 158 | the full title with all words of the title equally prominent and 159 | visible. You may add other material on the covers in addition. 160 | Copying with changes limited to the covers, as long as they preserve 161 | the title of the Document and satisfy these conditions, can be treated 162 | as verbatim copying in other respects. 163 | 164 | If the required texts for either cover are too voluminous to fit 165 | legibly, you should put the first ones listed (as many as fit 166 | reasonably) on the actual cover, and continue the rest onto adjacent 167 | pages. 168 | 169 | If you publish or distribute Opaque copies of the Document numbering 170 | more than 100, you must either include a machine-readable Transparent 171 | copy along with each Opaque copy, or state in or with each Opaque copy 172 | a computer-network location from which the general network-using 173 | public has access to download using public-standard network protocols 174 | a complete Transparent copy of the Document, free of added material. 175 | If you use the latter option, you must take reasonably prudent steps, 176 | when you begin distribution of Opaque copies in quantity, to ensure 177 | that this Transparent copy will remain thus accessible at the stated 178 | location until at least one year after the last time you distribute an 179 | Opaque copy (directly or through your agents or retailers) of that 180 | edition to the public. 181 | 182 | It is requested, but not required, that you contact the authors of the 183 | Document well before redistributing any large number of copies, to give 184 | them a chance to provide you with an updated version of the Document. 185 | 186 | @item 187 | MODIFICATIONS 188 | 189 | You may copy and distribute a Modified Version of the Document under 190 | the conditions of sections 2 and 3 above, provided that you release 191 | the Modified Version under precisely this License, with the Modified 192 | Version filling the role of the Document, thus licensing distribution 193 | and modification of the Modified Version to whoever possesses a copy 194 | of it. In addition, you must do these things in the Modified Version: 195 | 196 | @enumerate A 197 | @item 198 | Use in the Title Page (and on the covers, if any) a title distinct 199 | from that of the Document, and from those of previous versions 200 | (which should, if there were any, be listed in the History section 201 | of the Document). You may use the same title as a previous version 202 | if the original publisher of that version gives permission. 203 | 204 | @item 205 | List on the Title Page, as authors, one or more persons or entities 206 | responsible for authorship of the modifications in the Modified 207 | Version, together with at least five of the principal authors of the 208 | Document (all of its principal authors, if it has fewer than five), 209 | unless they release you from this requirement. 210 | 211 | @item 212 | State on the Title page the name of the publisher of the 213 | Modified Version, as the publisher. 214 | 215 | @item 216 | Preserve all the copyright notices of the Document. 217 | 218 | @item 219 | Add an appropriate copyright notice for your modifications 220 | adjacent to the other copyright notices. 221 | 222 | @item 223 | Include, immediately after the copyright notices, a license notice 224 | giving the public permission to use the Modified Version under the 225 | terms of this License, in the form shown in the Addendum below. 226 | 227 | @item 228 | Preserve in that license notice the full lists of Invariant Sections 229 | and required Cover Texts given in the Document's license notice. 230 | 231 | @item 232 | Include an unaltered copy of this License. 233 | 234 | @item 235 | Preserve the section Entitled ``History'', Preserve its Title, and add 236 | to it an item stating at least the title, year, new authors, and 237 | publisher of the Modified Version as given on the Title Page. If 238 | there is no section Entitled ``History'' in the Document, create one 239 | stating the title, year, authors, and publisher of the Document as 240 | given on its Title Page, then add an item describing the Modified 241 | Version as stated in the previous sentence. 242 | 243 | @item 244 | Preserve the network location, if any, given in the Document for 245 | public access to a Transparent copy of the Document, and likewise 246 | the network locations given in the Document for previous versions 247 | it was based on. These may be placed in the ``History'' section. 248 | You may omit a network location for a work that was published at 249 | least four years before the Document itself, or if the original 250 | publisher of the version it refers to gives permission. 251 | 252 | @item 253 | For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve 254 | the Title of the section, and preserve in the section all the 255 | substance and tone of each of the contributor acknowledgements and/or 256 | dedications given therein. 257 | 258 | @item 259 | Preserve all the Invariant Sections of the Document, 260 | unaltered in their text and in their titles. Section numbers 261 | or the equivalent are not considered part of the section titles. 262 | 263 | @item 264 | Delete any section Entitled ``Endorsements''. Such a section 265 | may not be included in the Modified Version. 266 | 267 | @item 268 | Do not retitle any existing section to be Entitled ``Endorsements'' or 269 | to conflict in title with any Invariant Section. 270 | 271 | @item 272 | Preserve any Warranty Disclaimers. 273 | @end enumerate 274 | 275 | If the Modified Version includes new front-matter sections or 276 | appendices that qualify as Secondary Sections and contain no material 277 | copied from the Document, you may at your option designate some or all 278 | of these sections as invariant. To do this, add their titles to the 279 | list of Invariant Sections in the Modified Version's license notice. 280 | These titles must be distinct from any other section titles. 281 | 282 | You may add a section Entitled ``Endorsements'', provided it contains 283 | nothing but endorsements of your Modified Version by various 284 | parties---for example, statements of peer review or that the text has 285 | been approved by an organization as the authoritative definition of a 286 | standard. 287 | 288 | You may add a passage of up to five words as a Front-Cover Text, and a 289 | passage of up to 25 words as a Back-Cover Text, to the end of the list 290 | of Cover Texts in the Modified Version. Only one passage of 291 | Front-Cover Text and one of Back-Cover Text may be added by (or 292 | through arrangements made by) any one entity. If the Document already 293 | includes a cover text for the same cover, previously added by you or 294 | by arrangement made by the same entity you are acting on behalf of, 295 | you may not add another; but you may replace the old one, on explicit 296 | permission from the previous publisher that added the old one. 297 | 298 | The author(s) and publisher(s) of the Document do not by this License 299 | give permission to use their names for publicity for or to assert or 300 | imply endorsement of any Modified Version. 301 | 302 | @item 303 | COMBINING DOCUMENTS 304 | 305 | You may combine the Document with other documents released under this 306 | License, under the terms defined in section 4 above for modified 307 | versions, provided that you include in the combination all of the 308 | Invariant Sections of all of the original documents, unmodified, and 309 | list them all as Invariant Sections of your combined work in its 310 | license notice, and that you preserve all their Warranty Disclaimers. 311 | 312 | The combined work need only contain one copy of this License, and 313 | multiple identical Invariant Sections may be replaced with a single 314 | copy. If there are multiple Invariant Sections with the same name but 315 | different contents, make the title of each such section unique by 316 | adding at the end of it, in parentheses, the name of the original 317 | author or publisher of that section if known, or else a unique number. 318 | Make the same adjustment to the section titles in the list of 319 | Invariant Sections in the license notice of the combined work. 320 | 321 | In the combination, you must combine any sections Entitled ``History'' 322 | in the various original documents, forming one section Entitled 323 | ``History''; likewise combine any sections Entitled ``Acknowledgements'', 324 | and any sections Entitled ``Dedications''. You must delete all 325 | sections Entitled ``Endorsements.'' 326 | 327 | @item 328 | COLLECTIONS OF DOCUMENTS 329 | 330 | You may make a collection consisting of the Document and other documents 331 | released under this License, and replace the individual copies of this 332 | License in the various documents with a single copy that is included in 333 | the collection, provided that you follow the rules of this License for 334 | verbatim copying of each of the documents in all other respects. 335 | 336 | You may extract a single document from such a collection, and distribute 337 | it individually under this License, provided you insert a copy of this 338 | License into the extracted document, and follow this License in all 339 | other respects regarding verbatim copying of that document. 340 | 341 | @item 342 | AGGREGATION WITH INDEPENDENT WORKS 343 | 344 | A compilation of the Document or its derivatives with other separate 345 | and independent documents or works, in or on a volume of a storage or 346 | distribution medium, is called an ``aggregate'' if the copyright 347 | resulting from the compilation is not used to limit the legal rights 348 | of the compilation's users beyond what the individual works permit. 349 | When the Document is included in an aggregate, this License does not 350 | apply to the other works in the aggregate which are not themselves 351 | derivative works of the Document. 352 | 353 | If the Cover Text requirement of section 3 is applicable to these 354 | copies of the Document, then if the Document is less than one half of 355 | the entire aggregate, the Document's Cover Texts may be placed on 356 | covers that bracket the Document within the aggregate, or the 357 | electronic equivalent of covers if the Document is in electronic form. 358 | Otherwise they must appear on printed covers that bracket the whole 359 | aggregate. 360 | 361 | @item 362 | TRANSLATION 363 | 364 | Translation is considered a kind of modification, so you may 365 | distribute translations of the Document under the terms of section 4. 366 | Replacing Invariant Sections with translations requires special 367 | permission from their copyright holders, but you may include 368 | translations of some or all Invariant Sections in addition to the 369 | original versions of these Invariant Sections. You may include a 370 | translation of this License, and all the license notices in the 371 | Document, and any Warranty Disclaimers, provided that you also include 372 | the original English version of this License and the original versions 373 | of those notices and disclaimers. In case of a disagreement between 374 | the translation and the original version of this License or a notice 375 | or disclaimer, the original version will prevail. 376 | 377 | If a section in the Document is Entitled ``Acknowledgements'', 378 | ``Dedications'', or ``History'', the requirement (section 4) to Preserve 379 | its Title (section 1) will typically require changing the actual 380 | title. 381 | 382 | @item 383 | TERMINATION 384 | 385 | You may not copy, modify, sublicense, or distribute the Document 386 | except as expressly provided under this License. Any attempt 387 | otherwise to copy, modify, sublicense, or distribute it is void, and 388 | will automatically terminate your rights under this License. 389 | 390 | However, if you cease all violation of this License, then your license 391 | from a particular copyright holder is reinstated (a) provisionally, 392 | unless and until the copyright holder explicitly and finally 393 | terminates your license, and (b) permanently, if the copyright holder 394 | fails to notify you of the violation by some reasonable means prior to 395 | 60 days after the cessation. 396 | 397 | Moreover, your license from a particular copyright holder is 398 | reinstated permanently if the copyright holder notifies you of the 399 | violation by some reasonable means, this is the first time you have 400 | received notice of violation of this License (for any work) from that 401 | copyright holder, and you cure the violation prior to 30 days after 402 | your receipt of the notice. 403 | 404 | Termination of your rights under this section does not terminate the 405 | licenses of parties who have received copies or rights from you under 406 | this License. If your rights have been terminated and not permanently 407 | reinstated, receipt of a copy of some or all of the same material does 408 | not give you any rights to use it. 409 | 410 | @item 411 | FUTURE REVISIONS OF THIS LICENSE 412 | 413 | The Free Software Foundation may publish new, revised versions 414 | of the GNU Free Documentation License from time to time. Such new 415 | versions will be similar in spirit to the present version, but may 416 | differ in detail to address new problems or concerns. See 417 | @uref{http://www.gnu.org/copyleft/}. 418 | 419 | Each version of the License is given a distinguishing version number. 420 | If the Document specifies that a particular numbered version of this 421 | License ``or any later version'' applies to it, you have the option of 422 | following the terms and conditions either of that specified version or 423 | of any later version that has been published (not as a draft) by the 424 | Free Software Foundation. If the Document does not specify a version 425 | number of this License, you may choose any version ever published (not 426 | as a draft) by the Free Software Foundation. If the Document 427 | specifies that a proxy can decide which future versions of this 428 | License can be used, that proxy's public statement of acceptance of a 429 | version permanently authorizes you to choose that version for the 430 | Document. 431 | 432 | @item 433 | RELICENSING 434 | 435 | ``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any 436 | World Wide Web server that publishes copyrightable works and also 437 | provides prominent facilities for anybody to edit those works. A 438 | public wiki that anybody can edit is an example of such a server. A 439 | ``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the 440 | site means any set of copyrightable works thus published on the MMC 441 | site. 442 | 443 | ``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 444 | license published by Creative Commons Corporation, a not-for-profit 445 | corporation with a principal place of business in San Francisco, 446 | California, as well as future copyleft versions of that license 447 | published by that same organization. 448 | 449 | ``Incorporate'' means to publish or republish a Document, in whole or 450 | in part, as part of another Document. 451 | 452 | An MMC is ``eligible for relicensing'' if it is licensed under this 453 | License, and if all works that were first published under this License 454 | somewhere other than this MMC, and subsequently incorporated in whole 455 | or in part into the MMC, (1) had no cover texts or invariant sections, 456 | and (2) were thus incorporated prior to November 1, 2008. 457 | 458 | The operator of an MMC Site may republish an MMC contained in the site 459 | under CC-BY-SA on the same site at any time before August 1, 2009, 460 | provided the MMC is eligible for relicensing. 461 | 462 | @end enumerate 463 | 464 | @page 465 | @heading ADDENDUM: How to use this License for your documents 466 | 467 | To use this License in a document you have written, include a copy of 468 | the License in the document and put the following copyright and 469 | license notices just after the title page: 470 | 471 | @smallexample 472 | @group 473 | Copyright (C) @var{year} @var{your name}. 474 | Permission is granted to copy, distribute and/or modify this document 475 | under the terms of the GNU Free Documentation License, Version 1.3 476 | or any later version published by the Free Software Foundation; 477 | with no Invariant Sections, no Front-Cover Texts, and no Back-Cover 478 | Texts. A copy of the license is included in the section entitled ``GNU 479 | Free Documentation License''. 480 | @end group 481 | @end smallexample 482 | 483 | If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, 484 | replace the ``with@dots{}Texts.''@: line with this: 485 | 486 | @smallexample 487 | @group 488 | with the Invariant Sections being @var{list their titles}, with 489 | the Front-Cover Texts being @var{list}, and with the Back-Cover Texts 490 | being @var{list}. 491 | @end group 492 | @end smallexample 493 | 494 | If you have Invariant Sections without Cover Texts, or some other 495 | combination of the three, merge those two alternatives to suit the 496 | situation. 497 | 498 | If your document contains nontrivial examples of program code, we 499 | recommend releasing these examples in parallel under your choice of 500 | free software license, such as the GNU General Public License, 501 | to permit their use in free software. 502 | 503 | @c Local Variables: 504 | @c ispell-local-pdict: "ispell-dict" 505 | @c End: 506 | -------------------------------------------------------------------------------- /drawers.eps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 EPSF-3.0 2 | %%BoundingBox: 34 577 324 778 3 | %%Title: chest-of-drawers-diagram-new 4 | %%CreationDate: Fri Sep 14 17:40:57 2001 5 | %%Creator: Tgif-4.1.35 by William Chia-Wei Cheng (william@cs.UCLA.edu) 6 | %%ProducedBy: (unknown) 7 | %%Pages: 1 8 | %%DocumentFonts: (atend) 9 | %%EndComments 10 | %%BeginProlog 11 | 12 | % Copyright (C) 2001-2013 Free Software Foundation, Inc. 13 | % 14 | % This file is part of GNU Emacs. 15 | % 16 | % GNU Emacs is free software: you can redistribute it and/or modify 17 | % it under the terms of the GNU General Public License as published by 18 | % the Free Software Foundation, either version 3 of the License, or 19 | % (at your option) any later version. 20 | % 21 | % GNU Emacs is distributed in the hope that it will be useful, 22 | % but WITHOUT ANY WARRANTY; without even the implied warranty of 23 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 24 | % GNU General Public License for more details. 25 | % 26 | % You should have received a copy of the GNU General Public License 27 | % along with GNU Emacs. If not, see . 28 | 29 | /tgifdict 53 dict def 30 | tgifdict begin 31 | 32 | /tgifellipsedict 6 dict def 33 | tgifellipsedict /mtrx matrix put 34 | 35 | /TGEL % tgifellipse 36 | { tgifellipsedict begin 37 | /yrad exch def 38 | /xrad exch def 39 | /y exch def 40 | /x exch def 41 | /savematrix mtrx currentmatrix def 42 | x y translate 43 | xrad yrad scale 44 | 0 0 1 0 360 arc 45 | savematrix setmatrix 46 | end 47 | } def 48 | 49 | /TGMAX 50 | { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse 51 | } def 52 | /TGMIN 53 | { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse 54 | } def 55 | /TGSW { stringwidth pop } def 56 | 57 | /bd { bind def } bind def 58 | 59 | /GS { gsave } bd 60 | /GR { grestore } bd 61 | /NP { newpath } bd 62 | /CP { closepath } bd 63 | /CHP { charpath } bd 64 | /CT { curveto } bd 65 | /L { lineto } bd 66 | /RL { rlineto } bd 67 | /M { moveto } bd 68 | /RM { rmoveto } bd 69 | /S { stroke } bd 70 | /F { fill } bd 71 | /TR { translate } bd 72 | /RO { rotate } bd 73 | /SC { scale } bd 74 | /MU { mul } bd 75 | /DI { div } bd 76 | /DU { dup } bd 77 | /NE { neg } bd 78 | /AD { add } bd 79 | /SU { sub } bd 80 | /PO { pop } bd 81 | /EX { exch } bd 82 | /CO { concat } bd 83 | /CL { clip } bd 84 | /EC { eoclip } bd 85 | /EF { eofill } bd 86 | /IM { image } bd 87 | /IMM { imagemask } bd 88 | /ARY { array } bd 89 | /SG { setgray } bd 90 | /RG { setrgbcolor } bd 91 | /SD { setdash } bd 92 | /W { setlinewidth } bd 93 | /SM { setmiterlimit } bd 94 | /SLC { setlinecap } bd 95 | /SLJ { setlinejoin } bd 96 | /SH { show } bd 97 | /FF { findfont } bd 98 | /MS { makefont setfont } bd 99 | /AR { arcto 4 {pop} repeat } bd 100 | /CURP { currentpoint } bd 101 | /FLAT { flattenpath strokepath clip newpath } bd 102 | /TGSM { tgiforigctm setmatrix } def 103 | /TGRM { savematrix setmatrix } def 104 | 105 | end 106 | 107 | %%EndProlog 108 | %%Page: 1 1 109 | 110 | %%PageBoundingBox: 34 577 324 778 111 | tgifdict begin 112 | /tgifsavedpage save def 113 | 114 | 1 SM 115 | 1 W 116 | 117 | 0 SG 118 | 119 | 72 0 MU 72 11 MU TR 120 | 72 128 DI 100.000 MU 100 DI DU NE SC 121 | 122 | GS 123 | 124 | /tgiforigctm matrix currentmatrix def 125 | 126 | % BOX 127 | 0 SG 128 | GS 129 | 10 SM 130 | GS 131 | NP 64 104 M 255 104 L 255 360 L 64 360 L CP 132 | S 133 | GR 134 | GR 135 | 136 | % POLY/OPEN-SPLINE 137 | 0 SG 138 | GS 139 | NP 140 | 65 296 M 141 | 254 296 L 142 | TGSM 143 | 1 W 144 | S 145 | GR 146 | 147 | % POLY/OPEN-SPLINE 148 | 0 SG 149 | GS 150 | NP 151 | 63 233 M 152 | 255 233 L 153 | TGSM 154 | 1 W 155 | S 156 | GR 157 | 158 | % POLY/OPEN-SPLINE 159 | 0 SG 160 | GS 161 | NP 162 | 63 169 M 163 | 255 169 L 164 | TGSM 165 | 1 W 166 | S 167 | GR 168 | 169 | % POLY/OPEN-SPLINE 170 | 0 SG 171 | GS 172 | NP 173 | 251 362 M 174 | 251 361 L 175 | 251 379 L 176 | 244 379 L 177 | 229 361 L 178 | TGSM 179 | 1 W 180 | S 181 | GR 182 | 183 | % OVAL 184 | 0 SG 185 | GS 186 | GS 187 | NP 160 72 10 6 TGEL 188 | S 189 | GR 190 | GR 191 | 192 | % POLY/OPEN-SPLINE 193 | 0 SG 194 | GS 195 | NP 196 | 63 104 M 197 | 128 64 L 198 | 138 69 L 199 | TGSM 200 | 1 W 201 | S 202 | GR 203 | 204 | % POLY/OPEN-SPLINE 205 | 0 SG 206 | GS 207 | NP 208 | 255 103 M 209 | 190 63 L 210 | 180 68 L 211 | TGSM 212 | 1 W 213 | S 214 | GR 215 | 216 | % TEXT 217 | NP 218 | 0 SG 219 | GS 220 | 1 W 221 | 160 152 M 222 | GS 223 | GS 224 | 0 225 | /Courier FF [17 0 0 -17 0 0] MS 226 | (symbol name) TGSW 227 | AD 228 | GR 229 | 2 DI NE 0 RM 230 | 0 SG 231 | /Courier FF [17 0 0 -17 0 0] MS 232 | (symbol name) SH 233 | GR 234 | GR 235 | 236 | % TEXT 237 | NP 238 | 0 SG 239 | GS 240 | 1 W 241 | 160 41 M 242 | GS 243 | GS 244 | 0 245 | /Courier FF [17 0 0 -17 0 0] MS 246 | (Chest of Drawers) TGSW 247 | AD 248 | GR 249 | 2 DI NE 0 RM 250 | 0 SG 251 | /Courier FF [17 0 0 -17 0 0] MS 252 | (Chest of Drawers) SH 253 | GR 254 | GR 255 | 256 | % TEXT 257 | NP 258 | 0 SG 259 | GS 260 | 1 W 261 | 344 41 M 262 | GS 263 | 0 SG 264 | /Courier FF [17 0 0 -17 0 0] MS 265 | (Contents of Drawers) SH 266 | GR 267 | GR 268 | 269 | % TEXT 270 | NP 271 | 0 SG 272 | GS 273 | 1 W 274 | 344 160 M 275 | GS 276 | 0 SG 277 | /Courier FF [17 0 0 -17 0 0] MS 278 | (bouquet) SH 279 | GR 280 | GR 281 | 282 | % TEXT 283 | NP 284 | 0 SG 285 | GS 286 | 1 W 287 | 344 220 M 288 | GS 289 | 0 SG 290 | /Courier FF [17 0 0 -17 0 0] MS 291 | ([none]) SH 292 | GR 293 | GR 294 | 295 | % TEXT 296 | NP 297 | 0 SG 298 | GS 299 | 1 W 300 | 344 279 M 301 | GS 302 | 0 SG 303 | /Courier FF [17 0 0 -17 0 0] MS 304 | (\(rose violet buttercup\)) SH 305 | GR 306 | GR 307 | 308 | % TEXT 309 | NP 310 | 0 SG 311 | GS 312 | 1 W 313 | 344 337 M 314 | GS 315 | 0 SG 316 | /Courier FF [17 0 0 -17 0 0] MS 317 | ([not described here]) SH 318 | GR 319 | GR 320 | 321 | % POLY/OPEN-SPLINE 322 | 0 SG 323 | GS 324 | NP 325 | 68 362 M 326 | 68 361 L 327 | 68 379 L 328 | 75 379 L 329 | 90 361 L 330 | TGSM 331 | 1 W 332 | S 333 | GR 334 | 335 | % TEXT 336 | NP 337 | 0 SG 338 | GS 339 | 1 W 340 | 158 132 M 341 | GS 342 | GS 343 | 0 344 | /NewCenturySchlbk-Roman FF [17 0 0 -17 0 0] MS 345 | (directions to) TGSW 346 | AD 347 | GR 348 | 2 DI NE 0 RM 349 | 0 SG 350 | /NewCenturySchlbk-Roman FF [17 0 0 -17 0 0] MS 351 | (directions to) SH 352 | GR 353 | GR 354 | 355 | % TEXT 356 | NP 357 | 0 SG 358 | GS 359 | 1 W 360 | 345 139 M 361 | GS 362 | 0 SG 363 | /NewCenturySchlbk-Roman FF [17 0 0 -17 0 0] MS 364 | (map to) SH 365 | GR 366 | GR 367 | 368 | % TEXT 369 | NP 370 | 0 SG 371 | GS 372 | 1 W 373 | 350 259 M 374 | GS 375 | 0 SG 376 | /NewCenturySchlbk-Roman FF [17 0 0 -17 0 0] MS 377 | (map to) SH 378 | GR 379 | GR 380 | 381 | % TEXT 382 | NP 383 | 0 SG 384 | GS 385 | 1 W 386 | 159 213 M 387 | GS 388 | GS 389 | 0 390 | /Courier FF [17 0 0 -17 0 0] MS 391 | (symbol definition) TGSW 392 | AD 393 | GR 394 | 2 DI NE 0 RM 395 | 0 SG 396 | /Courier FF [17 0 0 -17 0 0] MS 397 | (symbol definition) SH 398 | GR 399 | GR 400 | 401 | % TEXT 402 | NP 403 | 0 SG 404 | GS 405 | 1 W 406 | 159 195 M 407 | GS 408 | GS 409 | 0 410 | /NewCenturySchlbk-Roman FF [17 0 0 -17 0 0] MS 411 | (directions to) TGSW 412 | AD 413 | GR 414 | 2 DI NE 0 RM 415 | 0 SG 416 | /NewCenturySchlbk-Roman FF [17 0 0 -17 0 0] MS 417 | (directions to) SH 418 | GR 419 | GR 420 | 421 | % TEXT 422 | NP 423 | 0 SG 424 | GS 425 | 1 W 426 | 160 276 M 427 | GS 428 | GS 429 | 0 430 | /Courier FF [17 0 0 -17 0 0] MS 431 | (variable name) TGSW 432 | AD 433 | GR 434 | 2 DI NE 0 RM 435 | 0 SG 436 | /Courier FF [17 0 0 -17 0 0] MS 437 | (variable name) SH 438 | GR 439 | GR 440 | 441 | % TEXT 442 | NP 443 | 0 SG 444 | GS 445 | 1 W 446 | 158 260 M 447 | GS 448 | GS 449 | 0 450 | /NewCenturySchlbk-Roman FF [17 0 0 -17 0 0] MS 451 | (directions to) TGSW 452 | AD 453 | GR 454 | 2 DI NE 0 RM 455 | 0 SG 456 | /NewCenturySchlbk-Roman FF [17 0 0 -17 0 0] MS 457 | (directions to) SH 458 | GR 459 | GR 460 | 461 | % TEXT 462 | NP 463 | 0 SG 464 | GS 465 | 1 W 466 | 160 339 M 467 | GS 468 | GS 469 | 0 470 | /Courier FF [17 0 0 -17 0 0] MS 471 | (property list) TGSW 472 | AD 473 | GR 474 | 2 DI NE 0 RM 475 | 0 SG 476 | /Courier FF [17 0 0 -17 0 0] MS 477 | (property list) SH 478 | GR 479 | GR 480 | 481 | % TEXT 482 | NP 483 | 0 SG 484 | GS 485 | 1 W 486 | 158 323 M 487 | GS 488 | GS 489 | 0 490 | /NewCenturySchlbk-Roman FF [17 0 0 -17 0 0] MS 491 | (directions to) TGSW 492 | AD 493 | GR 494 | 2 DI NE 0 RM 495 | 0 SG 496 | /NewCenturySchlbk-Roman FF [17 0 0 -17 0 0] MS 497 | (directions to) SH 498 | GR 499 | GR 500 | 501 | GR 502 | tgifsavedpage restore 503 | end 504 | showpage 505 | 506 | %%Trailer 507 | %MatchingCreationDate: Fri Sep 14 17:40:57 2001 508 | %%DocumentFonts: NewCenturySchlbk-Roman 509 | %%+ Courier 510 | %%EOF 511 | -------------------------------------------------------------------------------- /drawers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-jp/elisp-intro-ja/f135f863551ffd1fbea1a79a1c74fe394b9e8212/drawers.pdf -------------------------------------------------------------------------------- /emacs-lisp-intro-ja.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-jp/elisp-intro-ja/f135f863551ffd1fbea1a79a1c74fe394b9e8212/emacs-lisp-intro-ja.pdf -------------------------------------------------------------------------------- /emacsver.texi: -------------------------------------------------------------------------------- 1 | @c It would be nicer to generate this using configure and @version@. 2 | @c However, that would mean emacsver.texi would always be newer 3 | @c then the info files in release tarfiles. 4 | @set EMACSVER 24.3.50 5 | -------------------------------------------------------------------------------- /keisen.pl: -------------------------------------------------------------------------------- 1 | #!/usr/local/bin/perl 2 | $flag = 0; 3 | while (<>) { 4 | chop && /\n$/; 5 | if (/\@c ascii diagram$/) {$flag = 1;} 6 | if (/\@c ascii diagram end$/) {$flag = 0;} 7 | if (($flag == 1) && (/^[^\@]/)) {s/^/\@d /;} 8 | if (($flag == 1) && (/^\@c/)) { 9 | unless (/^\@c ascii/) { 10 | s/^\@c //; 11 | } 12 | } 13 | if (($flag == 1) && (/^\@d/)) {s/^\@d/\@c/;} 14 | print $_,"\n"; 15 | } 16 | -------------------------------------------------------------------------------- /lambda-1.eps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 EPSF-3.0 2 | %%BoundingBox: 33 710 173 759 3 | %%Title: lambda-diagram1 4 | %%CreationDate: Wed Mar 8 14:31:53 1995 5 | %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 6 | 7 | % Copyright (C) 1995, 1997, 2001-2013 Free Software Foundation, Inc. 8 | % 9 | % This file is part of GNU Emacs. 10 | % 11 | % GNU Emacs is free software: you can redistribute it and/or modify 12 | % it under the terms of the GNU General Public License as published by 13 | % the Free Software Foundation, either version 3 of the License, or 14 | % (at your option) any later version. 15 | % 16 | % GNU Emacs is distributed in the hope that it will be useful, 17 | % but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | % GNU General Public License for more details. 20 | % 21 | % You should have received a copy of the GNU General Public License 22 | % along with GNU Emacs. If not, see . 23 | 24 | /tgifdict 132 dict def 25 | tgifdict begin 26 | 27 | % 28 | % Using a zero value radius for an ellipse or an arc would result 29 | % in a non-invertible CTM matrix which causes problem when this 30 | % when this PostScript is wrapped inside other routines, such as 31 | % the multi.ps package from 32 | % ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such 33 | % error by uncommenting the sole line of the procedure below: 34 | % 35 | /tgif_min_radius 36 | { 37 | % dup 0.01 lt { pop 0.01 } if 38 | } bind def 39 | 40 | /tgifellipsedict 6 dict def 41 | tgifellipsedict /mtrx matrix put 42 | 43 | /tgifellipse 44 | { tgifellipsedict begin 45 | /yrad exch def 46 | /xrad exch def 47 | /y exch def 48 | /x exch def 49 | /savematrix mtrx currentmatrix def 50 | x y translate 51 | xrad yrad scale 52 | 0 0 1 0 360 arc 53 | savematrix setmatrix 54 | end 55 | } def 56 | 57 | /tgifarrowtipdict 8 dict def 58 | tgifarrowtipdict /mtrx matrix put 59 | 60 | /tgifarrowtip 61 | { tgifarrowtipdict begin 62 | /dy exch def 63 | /dx exch def 64 | /h exch def 65 | /w exch def 66 | /y exch def 67 | /x exch def 68 | /savematrix mtrx currentmatrix def 69 | x y translate 70 | dy dx atan rotate 71 | 0 0 moveto 72 | w neg h lineto 73 | w neg h neg lineto 74 | savematrix setmatrix 75 | end 76 | } def 77 | 78 | /tgifarcdict 8 dict def 79 | tgifarcdict /mtrx matrix put 80 | 81 | /tgifarcn 82 | { tgifarcdict begin 83 | /endangle exch def 84 | /startangle exch def 85 | /yrad exch def 86 | /xrad exch def 87 | /y exch def 88 | /x exch def 89 | /savematrix mtrx currentmatrix def 90 | x y translate 91 | xrad yrad scale 92 | 0 0 1 startangle endangle arc 93 | savematrix setmatrix 94 | end 95 | } def 96 | 97 | /tgifarc 98 | { tgifarcdict begin 99 | /endangle exch def 100 | /startangle exch def 101 | /yrad exch def 102 | /xrad exch def 103 | /y exch def 104 | /x exch def 105 | /savematrix mtrx currentmatrix def 106 | x y translate 107 | xrad yrad scale 108 | 0 0 1 startangle endangle arcn 109 | savematrix setmatrix 110 | end 111 | } def 112 | 113 | /tgifsetuserscreendict 22 dict def 114 | tgifsetuserscreendict begin 115 | /tempctm matrix def 116 | /temprot matrix def 117 | /tempscale matrix def 118 | 119 | /concatprocs 120 | { /proc2 exch cvlit def 121 | /proc1 exch cvlit def 122 | /newproc proc1 length proc2 length add array def 123 | newproc 0 proc1 putinterval 124 | newproc proc1 length proc2 putinterval 125 | newproc cvx 126 | } def 127 | /resmatrix matrix def 128 | /findresolution 129 | { 72 0 resmatrix defaultmatrix dtransform 130 | /yres exch def /xres exch def 131 | xres dup mul yres dup mul add sqrt 132 | } def 133 | end 134 | 135 | /tgifsetuserscreen 136 | { tgifsetuserscreendict begin 137 | /spotfunction exch def 138 | /screenangle exch def 139 | /cellsize exch def 140 | 141 | /m tempctm currentmatrix def 142 | /rm screenangle temprot rotate def 143 | /sm cellsize dup tempscale scale def 144 | 145 | sm rm m m concatmatrix m concatmatrix pop 146 | 147 | 1 0 m dtransform /y1 exch def /x1 exch def 148 | 149 | /veclength x1 dup mul y1 dup mul add sqrt def 150 | /frequency findresolution veclength div def 151 | 152 | /newscreenangle y1 x1 atan def 153 | 154 | m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt 155 | 156 | {{neg} /spotfunction load concatprocs 157 | /spotfunction exch def 158 | } if 159 | 160 | frequency newscreenangle /spotfunction load setscreen 161 | end 162 | } def 163 | 164 | /tgifsetpatterndict 18 dict def 165 | tgifsetpatterndict begin 166 | /bitison 167 | { /ybit exch def /xbit exch def 168 | /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def 169 | 170 | /mask 1 7 xbit 8 mod sub bitshift def 171 | bytevalue mask and 0 ne 172 | } def 173 | end 174 | 175 | /tgifbitpatternspotfunction 176 | { tgifsetpatterndict begin 177 | /y exch def /x exch def 178 | 179 | /xindex x 1 add 2 div bpside mul cvi def 180 | /yindex y 1 add 2 div bpside mul cvi def 181 | 182 | xindex yindex bitison 183 | { /onbits onbits 1 add def 1 } 184 | { /offbits offbits 1 add def 0 } 185 | ifelse 186 | end 187 | } def 188 | 189 | /tgifsetpattern 190 | { tgifsetpatterndict begin 191 | /cellsz exch def 192 | /angle exch def 193 | /bwidth exch def 194 | /bpside exch def 195 | /bstring exch def 196 | 197 | /onbits 0 def /offbits 0 def 198 | cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen 199 | {} settransfer 200 | offbits offbits onbits add div setgray 201 | end 202 | } def 203 | 204 | /tgifxpmdict 4 dict def 205 | /tgifbwpicstr 1 string def 206 | /tgifcolorpicstr 3 string def 207 | 208 | /tgifsetpixels { tgifxpmdict begin /pixels exch def end } def 209 | 210 | /tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def 211 | 212 | /tgifbwspot 213 | { tgifxpmdict begin 214 | /index exch def 215 | tgifbwpicstr 0 216 | pixels index 3 mul 3 getinterval aload pop 217 | 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add 218 | cvi put 219 | tgifbwpicstr 220 | end 221 | } def 222 | 223 | /tgifcolorspot 224 | { tgifxpmdict begin 225 | /index exch def 226 | pixels index 3 mul 3 getinterval aload pop 227 | 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 228 | 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 229 | 255 mul cvi tgifcolorpicstr 0 3 -1 roll put 230 | tgifcolorpicstr 231 | end 232 | } def 233 | 234 | /tgifnewcolorspot 235 | { tgifxpmdict begin 236 | /index exch def 237 | pixels index 3 mul 3 getinterval aload pop setrgbcolor 238 | end 239 | } def 240 | 241 | /tgifcolordict 4 dict def 242 | 243 | /colorimage where 244 | { pop } 245 | { /colorimage 246 | { tgifcolordict begin 247 | pop pop pop pop pop 248 | /ih exch def 249 | /iw exch def 250 | /x 0 def 251 | /y 0 def 252 | 1 1 ih 253 | { pop 1 1 iw 254 | { pop currentfile 255 | tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot 256 | x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto 257 | closepath fill 258 | /x x 1 add def 259 | } for 260 | /y y 1 add def 261 | /x 0 def 262 | } for 263 | end 264 | } def 265 | } ifelse 266 | 267 | /tgifpatdict 10 dict def 268 | 269 | /tgifpatbyte 270 | { currentdict /retstr get exch 271 | pat i cellsz mod get put 272 | } def 273 | 274 | /tgifpatproc 275 | { 0 1 widthlim {tgifpatbyte} for retstr 276 | /i i 1 add def 277 | } def 278 | 279 | /tgifpatfill 280 | { tgifpatdict begin 281 | /h exch def 282 | /w exch def 283 | /lty exch def 284 | /ltx exch def 285 | /cellsz exch def 286 | /pat exch def 287 | 288 | /widthlim w cellsz div cvi 1 sub def 289 | /retstr widthlim 1 add string def 290 | /i 0 def 291 | 292 | ltx lty translate 293 | w h true [1 0 0 1 0 0] {tgifpatproc} imagemask 294 | ltx neg lty neg translate 295 | end 296 | } def 297 | 298 | /pat1 def 299 | /pat2 <0000000000000000> def 300 | /pat3 <8000000008000000> def 301 | /pat4 <8800000022000000> def 302 | /pat5 <8800220088002200> def 303 | /pat6 <8822882288228822> def 304 | /pat7 def 305 | /pat8 <77dd77dd77dd77dd> def 306 | /pat9 <77ffddff77ffddff> def 307 | /pat10 <77ffffff77ffffff> def 308 | /pat11 <7fffffff7fffffff> def 309 | /pat12 <8040200002040800> def 310 | /pat13 <40a00000040a0000> def 311 | /pat14 def 312 | /pat15 def 313 | /pat16 def 314 | /pat17 <038448300c020101> def 315 | /pat18 <081c22c180010204> def 316 | /pat19 <8080413e080814e3> def 317 | /pat20 <8040201008040201> def 318 | /pat21 <8844221188442211> def 319 | /pat22 <77bbddee77bbddee> def 320 | /pat23 def 321 | /pat24 <7fbfdfeff7fbfdfe> def 322 | /pat25 <3e1f8fc7e3f1f87c> def 323 | /pat26 <0102040810204080> def 324 | /pat27 <1122448811224488> def 325 | /pat28 def 326 | /pat29 <83070e1c3870e0c1> def 327 | /pat30 def 328 | /pat31 <7cf8f1e3c78f1f3e> def 329 | 330 | /tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def 331 | 332 | /tgifrighttext { dup stringwidth pop neg 0 rmoveto } def 333 | 334 | /tgifreencsmalldict 12 dict def 335 | /tgifReEncodeSmall 336 | { tgifreencsmalldict begin 337 | /newcodesandnames exch def 338 | /newfontname exch def 339 | /basefontname exch def 340 | 341 | /basefontdict basefontname findfont def 342 | /newfont basefontdict maxlength dict def 343 | 344 | basefontdict 345 | { exch dup /FID ne 346 | { dup /Encoding eq 347 | { exch dup length array copy newfont 3 1 roll put } 348 | { exch newfont 3 1 roll put } 349 | ifelse 350 | } 351 | { pop pop } 352 | ifelse 353 | } 354 | forall 355 | 356 | newfont /FontName newfontname put 357 | newcodesandnames aload pop 358 | 359 | newcodesandnames length 2 idiv 360 | { newfont /Encoding get 3 1 roll put} 361 | repeat 362 | 363 | newfontname newfont definefont pop 364 | end 365 | } def 366 | 367 | /tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def 368 | 369 | /tgifboxdict 6 dict def 370 | /tgifboxstroke 371 | { tgifboxdict begin 372 | /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 373 | 1.415 setmiterlimit 374 | w 1 eq { w setlinewidth } if 375 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 376 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 377 | pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse 378 | pat pat1 ne pat pat2 ne and { grestore } if 379 | w 1 eq { 1 setlinewidth } if 380 | 1 setmiterlimit 381 | end 382 | } def 383 | /tgifboxfill 384 | { tgifboxdict begin 385 | /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 386 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 387 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 388 | pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse 389 | pat pat1 ne pat pat2 ne and { grestore } if 390 | end 391 | } def 392 | 393 | end 394 | 395 | %%PageBoundingBox: 33 710 173 759 396 | tgifdict begin 397 | /tgifsavedpage save def 398 | 399 | 1 setmiterlimit 400 | 1 setlinewidth 401 | 402 | 0 setgray 403 | 404 | 72 0 mul 72 11.00 mul translate 405 | 72 128 div 100 mul 100 div dup neg scale 406 | 407 | gsave 408 | 409 | % TEXT 410 | 0 setgray 411 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 412 | gsave 413 | 63 75 moveto (\(multiply-by-seven 3\)) show 414 | grestore 415 | 416 | % POLY/OPEN-SPLINE 417 | gsave 418 | newpath 419 | 80 80 moveto 420 | 96 96 lineto 421 | 224 96 lineto 422 | 240 80 lineto 423 | stroke 424 | grestore 425 | 426 | % POLY/OPEN-SPLINE 427 | gsave 428 | newpath 429 | 264 119 moveto 430 | -22 0 atan dup cos 8 mul 264 exch sub 431 | exch sin 8 mul 97 exch sub lineto 432 | stroke 433 | grestore 434 | gsave 435 | newpath 436 | 264 97 8 3 0 -22 tgifarrowtip 437 | closepath fill 438 | grestore 439 | 440 | % POLY/OPEN-SPLINE 441 | gsave 442 | newpath 443 | 160 103 moveto 444 | 160 119 lineto 445 | stroke 446 | grestore 447 | 448 | % TEXT 449 | 0 setgray 450 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 451 | gsave 452 | 112 139 moveto (function) show 453 | grestore 454 | 455 | % TEXT 456 | 0 setgray 457 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 458 | gsave 459 | 224 139 moveto (argument) show 460 | grestore 461 | 462 | grestore 463 | tgifsavedpage restore 464 | end 465 | %MatchingCreationDate: Wed Mar 8 14:31:53 1995 466 | -------------------------------------------------------------------------------- /lambda-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-jp/elisp-intro-ja/f135f863551ffd1fbea1a79a1c74fe394b9e8212/lambda-1.pdf -------------------------------------------------------------------------------- /lambda-2.eps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 EPSF-3.0 2 | %%BoundingBox: 33 730 240 777 3 | %%Title: lambda-diagram2 4 | %%CreationDate: Wed Mar 8 14:33:09 1995 5 | %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 6 | 7 | % Copyright (C) 1995, 1997, 2001-2013 Free Software Foundation, Inc. 8 | % 9 | % This file is part of GNU Emacs. 10 | % 11 | % GNU Emacs is free software: you can redistribute it and/or modify 12 | % it under the terms of the GNU General Public License as published by 13 | % the Free Software Foundation, either version 3 of the License, or 14 | % (at your option) any later version. 15 | % 16 | % GNU Emacs is distributed in the hope that it will be useful, 17 | % but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | % GNU General Public License for more details. 20 | % 21 | % You should have received a copy of the GNU General Public License 22 | % along with GNU Emacs. If not, see . 23 | 24 | /tgifdict 132 dict def 25 | tgifdict begin 26 | 27 | % 28 | % Using a zero value radius for an ellipse or an arc would result 29 | % in a non-invertible CTM matrix which causes problem when this 30 | % when this PostScript is wrapped inside other routines, such as 31 | % the multi.ps package from 32 | % ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such 33 | % error by uncommenting the sole line of the procedure below: 34 | % 35 | /tgif_min_radius 36 | { 37 | % dup 0.01 lt { pop 0.01 } if 38 | } bind def 39 | 40 | /tgifellipsedict 6 dict def 41 | tgifellipsedict /mtrx matrix put 42 | 43 | /tgifellipse 44 | { tgifellipsedict begin 45 | /yrad exch def 46 | /xrad exch def 47 | /y exch def 48 | /x exch def 49 | /savematrix mtrx currentmatrix def 50 | x y translate 51 | xrad yrad scale 52 | 0 0 1 0 360 arc 53 | savematrix setmatrix 54 | end 55 | } def 56 | 57 | /tgifarrowtipdict 8 dict def 58 | tgifarrowtipdict /mtrx matrix put 59 | 60 | /tgifarrowtip 61 | { tgifarrowtipdict begin 62 | /dy exch def 63 | /dx exch def 64 | /h exch def 65 | /w exch def 66 | /y exch def 67 | /x exch def 68 | /savematrix mtrx currentmatrix def 69 | x y translate 70 | dy dx atan rotate 71 | 0 0 moveto 72 | w neg h lineto 73 | w neg h neg lineto 74 | savematrix setmatrix 75 | end 76 | } def 77 | 78 | /tgifarcdict 8 dict def 79 | tgifarcdict /mtrx matrix put 80 | 81 | /tgifarcn 82 | { tgifarcdict begin 83 | /endangle exch def 84 | /startangle exch def 85 | /yrad exch def 86 | /xrad exch def 87 | /y exch def 88 | /x exch def 89 | /savematrix mtrx currentmatrix def 90 | x y translate 91 | xrad yrad scale 92 | 0 0 1 startangle endangle arc 93 | savematrix setmatrix 94 | end 95 | } def 96 | 97 | /tgifarc 98 | { tgifarcdict begin 99 | /endangle exch def 100 | /startangle exch def 101 | /yrad exch def 102 | /xrad exch def 103 | /y exch def 104 | /x exch def 105 | /savematrix mtrx currentmatrix def 106 | x y translate 107 | xrad yrad scale 108 | 0 0 1 startangle endangle arcn 109 | savematrix setmatrix 110 | end 111 | } def 112 | 113 | /tgifsetuserscreendict 22 dict def 114 | tgifsetuserscreendict begin 115 | /tempctm matrix def 116 | /temprot matrix def 117 | /tempscale matrix def 118 | 119 | /concatprocs 120 | { /proc2 exch cvlit def 121 | /proc1 exch cvlit def 122 | /newproc proc1 length proc2 length add array def 123 | newproc 0 proc1 putinterval 124 | newproc proc1 length proc2 putinterval 125 | newproc cvx 126 | } def 127 | /resmatrix matrix def 128 | /findresolution 129 | { 72 0 resmatrix defaultmatrix dtransform 130 | /yres exch def /xres exch def 131 | xres dup mul yres dup mul add sqrt 132 | } def 133 | end 134 | 135 | /tgifsetuserscreen 136 | { tgifsetuserscreendict begin 137 | /spotfunction exch def 138 | /screenangle exch def 139 | /cellsize exch def 140 | 141 | /m tempctm currentmatrix def 142 | /rm screenangle temprot rotate def 143 | /sm cellsize dup tempscale scale def 144 | 145 | sm rm m m concatmatrix m concatmatrix pop 146 | 147 | 1 0 m dtransform /y1 exch def /x1 exch def 148 | 149 | /veclength x1 dup mul y1 dup mul add sqrt def 150 | /frequency findresolution veclength div def 151 | 152 | /newscreenangle y1 x1 atan def 153 | 154 | m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt 155 | 156 | {{neg} /spotfunction load concatprocs 157 | /spotfunction exch def 158 | } if 159 | 160 | frequency newscreenangle /spotfunction load setscreen 161 | end 162 | } def 163 | 164 | /tgifsetpatterndict 18 dict def 165 | tgifsetpatterndict begin 166 | /bitison 167 | { /ybit exch def /xbit exch def 168 | /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def 169 | 170 | /mask 1 7 xbit 8 mod sub bitshift def 171 | bytevalue mask and 0 ne 172 | } def 173 | end 174 | 175 | /tgifbitpatternspotfunction 176 | { tgifsetpatterndict begin 177 | /y exch def /x exch def 178 | 179 | /xindex x 1 add 2 div bpside mul cvi def 180 | /yindex y 1 add 2 div bpside mul cvi def 181 | 182 | xindex yindex bitison 183 | { /onbits onbits 1 add def 1 } 184 | { /offbits offbits 1 add def 0 } 185 | ifelse 186 | end 187 | } def 188 | 189 | /tgifsetpattern 190 | { tgifsetpatterndict begin 191 | /cellsz exch def 192 | /angle exch def 193 | /bwidth exch def 194 | /bpside exch def 195 | /bstring exch def 196 | 197 | /onbits 0 def /offbits 0 def 198 | cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen 199 | {} settransfer 200 | offbits offbits onbits add div setgray 201 | end 202 | } def 203 | 204 | /tgifxpmdict 4 dict def 205 | /tgifbwpicstr 1 string def 206 | /tgifcolorpicstr 3 string def 207 | 208 | /tgifsetpixels { tgifxpmdict begin /pixels exch def end } def 209 | 210 | /tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def 211 | 212 | /tgifbwspot 213 | { tgifxpmdict begin 214 | /index exch def 215 | tgifbwpicstr 0 216 | pixels index 3 mul 3 getinterval aload pop 217 | 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add 218 | cvi put 219 | tgifbwpicstr 220 | end 221 | } def 222 | 223 | /tgifcolorspot 224 | { tgifxpmdict begin 225 | /index exch def 226 | pixels index 3 mul 3 getinterval aload pop 227 | 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 228 | 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 229 | 255 mul cvi tgifcolorpicstr 0 3 -1 roll put 230 | tgifcolorpicstr 231 | end 232 | } def 233 | 234 | /tgifnewcolorspot 235 | { tgifxpmdict begin 236 | /index exch def 237 | pixels index 3 mul 3 getinterval aload pop setrgbcolor 238 | end 239 | } def 240 | 241 | /tgifcolordict 4 dict def 242 | 243 | /colorimage where 244 | { pop } 245 | { /colorimage 246 | { tgifcolordict begin 247 | pop pop pop pop pop 248 | /ih exch def 249 | /iw exch def 250 | /x 0 def 251 | /y 0 def 252 | 1 1 ih 253 | { pop 1 1 iw 254 | { pop currentfile 255 | tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot 256 | x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto 257 | closepath fill 258 | /x x 1 add def 259 | } for 260 | /y y 1 add def 261 | /x 0 def 262 | } for 263 | end 264 | } def 265 | } ifelse 266 | 267 | /tgifpatdict 10 dict def 268 | 269 | /tgifpatbyte 270 | { currentdict /retstr get exch 271 | pat i cellsz mod get put 272 | } def 273 | 274 | /tgifpatproc 275 | { 0 1 widthlim {tgifpatbyte} for retstr 276 | /i i 1 add def 277 | } def 278 | 279 | /tgifpatfill 280 | { tgifpatdict begin 281 | /h exch def 282 | /w exch def 283 | /lty exch def 284 | /ltx exch def 285 | /cellsz exch def 286 | /pat exch def 287 | 288 | /widthlim w cellsz div cvi 1 sub def 289 | /retstr widthlim 1 add string def 290 | /i 0 def 291 | 292 | ltx lty translate 293 | w h true [1 0 0 1 0 0] {tgifpatproc} imagemask 294 | ltx neg lty neg translate 295 | end 296 | } def 297 | 298 | /pat1 def 299 | /pat2 <0000000000000000> def 300 | /pat3 <8000000008000000> def 301 | /pat4 <8800000022000000> def 302 | /pat5 <8800220088002200> def 303 | /pat6 <8822882288228822> def 304 | /pat7 def 305 | /pat8 <77dd77dd77dd77dd> def 306 | /pat9 <77ffddff77ffddff> def 307 | /pat10 <77ffffff77ffffff> def 308 | /pat11 <7fffffff7fffffff> def 309 | /pat12 <8040200002040800> def 310 | /pat13 <40a00000040a0000> def 311 | /pat14 def 312 | /pat15 def 313 | /pat16 def 314 | /pat17 <038448300c020101> def 315 | /pat18 <081c22c180010204> def 316 | /pat19 <8080413e080814e3> def 317 | /pat20 <8040201008040201> def 318 | /pat21 <8844221188442211> def 319 | /pat22 <77bbddee77bbddee> def 320 | /pat23 def 321 | /pat24 <7fbfdfeff7fbfdfe> def 322 | /pat25 <3e1f8fc7e3f1f87c> def 323 | /pat26 <0102040810204080> def 324 | /pat27 <1122448811224488> def 325 | /pat28 def 326 | /pat29 <83070e1c3870e0c1> def 327 | /pat30 def 328 | /pat31 <7cf8f1e3c78f1f3e> def 329 | 330 | /tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def 331 | 332 | /tgifrighttext { dup stringwidth pop neg 0 rmoveto } def 333 | 334 | /tgifreencsmalldict 12 dict def 335 | /tgifReEncodeSmall 336 | { tgifreencsmalldict begin 337 | /newcodesandnames exch def 338 | /newfontname exch def 339 | /basefontname exch def 340 | 341 | /basefontdict basefontname findfont def 342 | /newfont basefontdict maxlength dict def 343 | 344 | basefontdict 345 | { exch dup /FID ne 346 | { dup /Encoding eq 347 | { exch dup length array copy newfont 3 1 roll put } 348 | { exch newfont 3 1 roll put } 349 | ifelse 350 | } 351 | { pop pop } 352 | ifelse 353 | } 354 | forall 355 | 356 | newfont /FontName newfontname put 357 | newcodesandnames aload pop 358 | 359 | newcodesandnames length 2 idiv 360 | { newfont /Encoding get 3 1 roll put} 361 | repeat 362 | 363 | newfontname newfont definefont pop 364 | end 365 | } def 366 | 367 | /tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def 368 | 369 | /tgifboxdict 6 dict def 370 | /tgifboxstroke 371 | { tgifboxdict begin 372 | /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 373 | 1.415 setmiterlimit 374 | w 1 eq { w setlinewidth } if 375 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 376 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 377 | pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse 378 | pat pat1 ne pat pat2 ne and { grestore } if 379 | w 1 eq { 1 setlinewidth } if 380 | 1 setmiterlimit 381 | end 382 | } def 383 | /tgifboxfill 384 | { tgifboxdict begin 385 | /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 386 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 387 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 388 | pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse 389 | pat pat1 ne pat pat2 ne and { grestore } if 390 | end 391 | } def 392 | 393 | end 394 | 395 | %%PageBoundingBox: 33 730 240 777 396 | tgifdict begin 397 | /tgifsavedpage save def 398 | 399 | 1 setmiterlimit 400 | 1 setlinewidth 401 | 402 | 0 setgray 403 | 404 | 72 0 mul 72 11.00 mul translate 405 | 72 128 div 100 mul 100 div dup neg scale 406 | 407 | gsave 408 | 409 | % TEXT 410 | 0 setgray 411 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 412 | gsave 413 | 63 43 moveto (\(\(lambda \(number\) \(* 7 number\)\) 3\)) show 414 | grestore 415 | 416 | % POLY/OPEN-SPLINE 417 | gsave 418 | newpath 419 | 80 48 moveto 420 | 96 64 lineto 421 | 336 64 lineto 422 | 353 49 lineto 423 | stroke 424 | grestore 425 | 426 | % POLY/OPEN-SPLINE 427 | gsave 428 | newpath 429 | 395 85 moveto 430 | -21 0 atan dup cos 8 mul 395 exch sub 431 | exch sin 8 mul 64 exch sub lineto 432 | stroke 433 | grestore 434 | gsave 435 | newpath 436 | 395 64 8 3 0 -21 tgifarrowtip 437 | closepath fill 438 | grestore 439 | 440 | % POLY/OPEN-SPLINE 441 | gsave 442 | newpath 443 | 208 69 moveto 444 | 208 85 lineto 445 | stroke 446 | grestore 447 | 448 | % TEXT 449 | 0 setgray 450 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 451 | gsave 452 | 112 102 moveto (anonymous function) show 453 | grestore 454 | 455 | % TEXT 456 | 0 setgray 457 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 458 | gsave 459 | 344 102 moveto (argument) show 460 | grestore 461 | 462 | grestore 463 | tgifsavedpage restore 464 | end 465 | %MatchingCreationDate: Wed Mar 8 14:33:09 1995 466 | -------------------------------------------------------------------------------- /lambda-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-jp/elisp-intro-ja/f135f863551ffd1fbea1a79a1c74fe394b9e8212/lambda-2.pdf -------------------------------------------------------------------------------- /lambda-3.eps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 EPSF-3.0 2 | %%BoundingBox: 33 728 211 777 3 | %%Title: lambda-diagram3 4 | %%CreationDate: Wed Mar 8 14:33:49 1995 5 | %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 6 | 7 | % Copyright (C) 1995, 1997, 2001-2013 Free Software Foundation, Inc. 8 | % 9 | % This file is part of GNU Emacs. 10 | % 11 | % GNU Emacs is free software: you can redistribute it and/or modify 12 | % it under the terms of the GNU General Public License as published by 13 | % the Free Software Foundation, either version 3 of the License, or 14 | % (at your option) any later version. 15 | % 16 | % GNU Emacs is distributed in the hope that it will be useful, 17 | % but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | % GNU General Public License for more details. 20 | % 21 | % You should have received a copy of the GNU General Public License 22 | % along with GNU Emacs. If not, see . 23 | 24 | /tgifdict 132 dict def 25 | tgifdict begin 26 | 27 | % 28 | % Using a zero value radius for an ellipse or an arc would result 29 | % in a non-invertible CTM matrix which causes problem when this 30 | % when this PostScript is wrapped inside other routines, such as 31 | % the multi.ps package from 32 | % ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such 33 | % error by uncommenting the sole line of the procedure below: 34 | % 35 | /tgif_min_radius 36 | { 37 | % dup 0.01 lt { pop 0.01 } if 38 | } bind def 39 | 40 | /tgifellipsedict 6 dict def 41 | tgifellipsedict /mtrx matrix put 42 | 43 | /tgifellipse 44 | { tgifellipsedict begin 45 | /yrad exch def 46 | /xrad exch def 47 | /y exch def 48 | /x exch def 49 | /savematrix mtrx currentmatrix def 50 | x y translate 51 | xrad yrad scale 52 | 0 0 1 0 360 arc 53 | savematrix setmatrix 54 | end 55 | } def 56 | 57 | /tgifarrowtipdict 8 dict def 58 | tgifarrowtipdict /mtrx matrix put 59 | 60 | /tgifarrowtip 61 | { tgifarrowtipdict begin 62 | /dy exch def 63 | /dx exch def 64 | /h exch def 65 | /w exch def 66 | /y exch def 67 | /x exch def 68 | /savematrix mtrx currentmatrix def 69 | x y translate 70 | dy dx atan rotate 71 | 0 0 moveto 72 | w neg h lineto 73 | w neg h neg lineto 74 | savematrix setmatrix 75 | end 76 | } def 77 | 78 | /tgifarcdict 8 dict def 79 | tgifarcdict /mtrx matrix put 80 | 81 | /tgifarcn 82 | { tgifarcdict begin 83 | /endangle exch def 84 | /startangle exch def 85 | /yrad exch def 86 | /xrad exch def 87 | /y exch def 88 | /x exch def 89 | /savematrix mtrx currentmatrix def 90 | x y translate 91 | xrad yrad scale 92 | 0 0 1 startangle endangle arc 93 | savematrix setmatrix 94 | end 95 | } def 96 | 97 | /tgifarc 98 | { tgifarcdict begin 99 | /endangle exch def 100 | /startangle exch def 101 | /yrad exch def 102 | /xrad exch def 103 | /y exch def 104 | /x exch def 105 | /savematrix mtrx currentmatrix def 106 | x y translate 107 | xrad yrad scale 108 | 0 0 1 startangle endangle arcn 109 | savematrix setmatrix 110 | end 111 | } def 112 | 113 | /tgifsetuserscreendict 22 dict def 114 | tgifsetuserscreendict begin 115 | /tempctm matrix def 116 | /temprot matrix def 117 | /tempscale matrix def 118 | 119 | /concatprocs 120 | { /proc2 exch cvlit def 121 | /proc1 exch cvlit def 122 | /newproc proc1 length proc2 length add array def 123 | newproc 0 proc1 putinterval 124 | newproc proc1 length proc2 putinterval 125 | newproc cvx 126 | } def 127 | /resmatrix matrix def 128 | /findresolution 129 | { 72 0 resmatrix defaultmatrix dtransform 130 | /yres exch def /xres exch def 131 | xres dup mul yres dup mul add sqrt 132 | } def 133 | end 134 | 135 | /tgifsetuserscreen 136 | { tgifsetuserscreendict begin 137 | /spotfunction exch def 138 | /screenangle exch def 139 | /cellsize exch def 140 | 141 | /m tempctm currentmatrix def 142 | /rm screenangle temprot rotate def 143 | /sm cellsize dup tempscale scale def 144 | 145 | sm rm m m concatmatrix m concatmatrix pop 146 | 147 | 1 0 m dtransform /y1 exch def /x1 exch def 148 | 149 | /veclength x1 dup mul y1 dup mul add sqrt def 150 | /frequency findresolution veclength div def 151 | 152 | /newscreenangle y1 x1 atan def 153 | 154 | m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt 155 | 156 | {{neg} /spotfunction load concatprocs 157 | /spotfunction exch def 158 | } if 159 | 160 | frequency newscreenangle /spotfunction load setscreen 161 | end 162 | } def 163 | 164 | /tgifsetpatterndict 18 dict def 165 | tgifsetpatterndict begin 166 | /bitison 167 | { /ybit exch def /xbit exch def 168 | /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def 169 | 170 | /mask 1 7 xbit 8 mod sub bitshift def 171 | bytevalue mask and 0 ne 172 | } def 173 | end 174 | 175 | /tgifbitpatternspotfunction 176 | { tgifsetpatterndict begin 177 | /y exch def /x exch def 178 | 179 | /xindex x 1 add 2 div bpside mul cvi def 180 | /yindex y 1 add 2 div bpside mul cvi def 181 | 182 | xindex yindex bitison 183 | { /onbits onbits 1 add def 1 } 184 | { /offbits offbits 1 add def 0 } 185 | ifelse 186 | end 187 | } def 188 | 189 | /tgifsetpattern 190 | { tgifsetpatterndict begin 191 | /cellsz exch def 192 | /angle exch def 193 | /bwidth exch def 194 | /bpside exch def 195 | /bstring exch def 196 | 197 | /onbits 0 def /offbits 0 def 198 | cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen 199 | {} settransfer 200 | offbits offbits onbits add div setgray 201 | end 202 | } def 203 | 204 | /tgifxpmdict 4 dict def 205 | /tgifbwpicstr 1 string def 206 | /tgifcolorpicstr 3 string def 207 | 208 | /tgifsetpixels { tgifxpmdict begin /pixels exch def end } def 209 | 210 | /tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def 211 | 212 | /tgifbwspot 213 | { tgifxpmdict begin 214 | /index exch def 215 | tgifbwpicstr 0 216 | pixels index 3 mul 3 getinterval aload pop 217 | 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add 218 | cvi put 219 | tgifbwpicstr 220 | end 221 | } def 222 | 223 | /tgifcolorspot 224 | { tgifxpmdict begin 225 | /index exch def 226 | pixels index 3 mul 3 getinterval aload pop 227 | 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 228 | 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 229 | 255 mul cvi tgifcolorpicstr 0 3 -1 roll put 230 | tgifcolorpicstr 231 | end 232 | } def 233 | 234 | /tgifnewcolorspot 235 | { tgifxpmdict begin 236 | /index exch def 237 | pixels index 3 mul 3 getinterval aload pop setrgbcolor 238 | end 239 | } def 240 | 241 | /tgifcolordict 4 dict def 242 | 243 | /colorimage where 244 | { pop } 245 | { /colorimage 246 | { tgifcolordict begin 247 | pop pop pop pop pop 248 | /ih exch def 249 | /iw exch def 250 | /x 0 def 251 | /y 0 def 252 | 1 1 ih 253 | { pop 1 1 iw 254 | { pop currentfile 255 | tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot 256 | x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto 257 | closepath fill 258 | /x x 1 add def 259 | } for 260 | /y y 1 add def 261 | /x 0 def 262 | } for 263 | end 264 | } def 265 | } ifelse 266 | 267 | /tgifpatdict 10 dict def 268 | 269 | /tgifpatbyte 270 | { currentdict /retstr get exch 271 | pat i cellsz mod get put 272 | } def 273 | 274 | /tgifpatproc 275 | { 0 1 widthlim {tgifpatbyte} for retstr 276 | /i i 1 add def 277 | } def 278 | 279 | /tgifpatfill 280 | { tgifpatdict begin 281 | /h exch def 282 | /w exch def 283 | /lty exch def 284 | /ltx exch def 285 | /cellsz exch def 286 | /pat exch def 287 | 288 | /widthlim w cellsz div cvi 1 sub def 289 | /retstr widthlim 1 add string def 290 | /i 0 def 291 | 292 | ltx lty translate 293 | w h true [1 0 0 1 0 0] {tgifpatproc} imagemask 294 | ltx neg lty neg translate 295 | end 296 | } def 297 | 298 | /pat1 def 299 | /pat2 <0000000000000000> def 300 | /pat3 <8000000008000000> def 301 | /pat4 <8800000022000000> def 302 | /pat5 <8800220088002200> def 303 | /pat6 <8822882288228822> def 304 | /pat7 def 305 | /pat8 <77dd77dd77dd77dd> def 306 | /pat9 <77ffddff77ffddff> def 307 | /pat10 <77ffffff77ffffff> def 308 | /pat11 <7fffffff7fffffff> def 309 | /pat12 <8040200002040800> def 310 | /pat13 <40a00000040a0000> def 311 | /pat14 def 312 | /pat15 def 313 | /pat16 def 314 | /pat17 <038448300c020101> def 315 | /pat18 <081c22c180010204> def 316 | /pat19 <8080413e080814e3> def 317 | /pat20 <8040201008040201> def 318 | /pat21 <8844221188442211> def 319 | /pat22 <77bbddee77bbddee> def 320 | /pat23 def 321 | /pat24 <7fbfdfeff7fbfdfe> def 322 | /pat25 <3e1f8fc7e3f1f87c> def 323 | /pat26 <0102040810204080> def 324 | /pat27 <1122448811224488> def 325 | /pat28 def 326 | /pat29 <83070e1c3870e0c1> def 327 | /pat30 def 328 | /pat31 <7cf8f1e3c78f1f3e> def 329 | 330 | /tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def 331 | 332 | /tgifrighttext { dup stringwidth pop neg 0 rmoveto } def 333 | 334 | /tgifreencsmalldict 12 dict def 335 | /tgifReEncodeSmall 336 | { tgifreencsmalldict begin 337 | /newcodesandnames exch def 338 | /newfontname exch def 339 | /basefontname exch def 340 | 341 | /basefontdict basefontname findfont def 342 | /newfont basefontdict maxlength dict def 343 | 344 | basefontdict 345 | { exch dup /FID ne 346 | { dup /Encoding eq 347 | { exch dup length array copy newfont 3 1 roll put } 348 | { exch newfont 3 1 roll put } 349 | ifelse 350 | } 351 | { pop pop } 352 | ifelse 353 | } 354 | forall 355 | 356 | newfont /FontName newfontname put 357 | newcodesandnames aload pop 358 | 359 | newcodesandnames length 2 idiv 360 | { newfont /Encoding get 3 1 roll put} 361 | repeat 362 | 363 | newfontname newfont definefont pop 364 | end 365 | } def 366 | 367 | /tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def 368 | 369 | /tgifboxdict 6 dict def 370 | /tgifboxstroke 371 | { tgifboxdict begin 372 | /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 373 | 1.415 setmiterlimit 374 | w 1 eq { w setlinewidth } if 375 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 376 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 377 | pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse 378 | pat pat1 ne pat pat2 ne and { grestore } if 379 | w 1 eq { 1 setlinewidth } if 380 | 1 setmiterlimit 381 | end 382 | } def 383 | /tgifboxfill 384 | { tgifboxdict begin 385 | /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 386 | pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 387 | newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 388 | pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse 389 | pat pat1 ne pat pat2 ne and { grestore } if 390 | end 391 | } def 392 | 393 | end 394 | 395 | %%PageBoundingBox: 33 728 211 777 396 | tgifdict begin 397 | /tgifsavedpage save def 398 | 399 | 1 setmiterlimit 400 | 1 setlinewidth 401 | 402 | 0 setgray 403 | 404 | 72 0 mul 72 11.00 mul translate 405 | 72 128 div 100 mul 100 div dup neg scale 406 | 407 | gsave 408 | 409 | % TEXT 410 | 0 setgray 411 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 412 | gsave 413 | 63 43 moveto (\(\(lambda \(arg\) \(/ arg 50\)\) 100\)) show 414 | grestore 415 | 416 | % POLY/OPEN-SPLINE 417 | gsave 418 | newpath 419 | 80 48 moveto 420 | 96 64 lineto 421 | 284 64 lineto 422 | 299 48 lineto 423 | stroke 424 | grestore 425 | 426 | % POLY/OPEN-SPLINE 427 | gsave 428 | newpath 429 | 354 86 moveto 430 | -25 0 atan dup cos 8 mul 354 exch sub 431 | exch sin 8 mul 61 exch sub lineto 432 | stroke 433 | grestore 434 | gsave 435 | newpath 436 | 354 61 8 3 0 -25 tgifarrowtip 437 | closepath fill 438 | grestore 439 | 440 | % POLY/OPEN-SPLINE 441 | gsave 442 | newpath 443 | 199 70 moveto 444 | 199 86 lineto 445 | stroke 446 | grestore 447 | 448 | % TEXT 449 | 0 setgray 450 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 451 | gsave 452 | 101 106 moveto (anonymous function) show 453 | grestore 454 | 455 | % TEXT 456 | 0 setgray 457 | /Courier findfont [17 0 0 -17 0 0] makefont setfont 458 | gsave 459 | 293 106 moveto (argument) show 460 | grestore 461 | 462 | grestore 463 | tgifsavedpage restore 464 | end 465 | %MatchingCreationDate: Wed Mar 8 14:33:49 1995 466 | -------------------------------------------------------------------------------- /lambda-3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emacs-jp/elisp-intro-ja/f135f863551ffd1fbea1a79a1c74fe394b9e8212/lambda-3.pdf --------------------------------------------------------------------------------