狠狠撸

狠狠撸Share a Scribd company logo
プログラミングTEX
寝る子(neruko3114)
2014/03/15
@長岡 IT 開発者勉強会 #36
寝る子(neruko3114) プログラミング TEX
自己紹介
氏名:田村英継(= 寝る子)
Twitter:neruko3114
長岡高専専攻科(3 月に卒業)
C/Java を授業で触った程度
寝る子(neruko3114) プログラミング TEX
参加の経緯
寝る子(neruko3114) プログラミング TEX
TEXとは
TEX = 文書組版ソフト(システム)
特徴
OS に依存しない
フリーでオープンソース
数式が綺麗
F(s) =
∫ ∞
0
f (t)e?st
dt
寝る子(neruko3114) プログラミング TEX
TEXでプログラミング?
TEXにできること(一部)
変数(カウンタ)の定義
四則演算
ループ構文
条件分岐
寝る子(neruko3114) プログラミング TEX
TEXでプログラミング
例:剰余を求める“マクロ”
newcountxx@a
newcountxx@res@count
defxx@modulo#1#2{%
xx@a=#1relax
dividexx@a#2relax
multiplyxx@a-#2relax
advancexx@a#1relax
xx@res@count=xx@a
}
寝る子(neruko3114) プログラミング TEX
TEXでプログラミング
例:階乗を求める“マクロ”
newcount@m
newcount@k
deffactorial#1{%
@m = 1 relax
@k = 1 relax
@whilenum @m < #1 do {%
advance @m 1 relax
multiply @k @m relax
}
the@k
}
寝る子(neruko3114) プログラミング TEX
※他のプログラミング言語と色々異なる
寝る子(neruko3114) プログラミング TEX
TEX言語の特徴
フリーフォーマットではない
ローカル変数はない
「関数」はない
寝る子(neruko3114) プログラミング TEX
TEX言語の特徴
フリーフォーマットではない
ローカル変数はない
「関数」はない
寝る子(neruko3114) プログラミング TEX
TEX ?= フリーフォーマット
フリーフォーマット
空白文字,タブ,改行文字はどこでもよい
(プログラムの動作に影響はない)
TEXの場合
空白文字の扱いについて規則がある
「文書」と「プログラム」で区別しない
空白文字の扱いに要注意
寝る子(neruko3114) プログラミング TEX
TEX言語の特徴
フリーフォーマットではない
ローカル変数はない
「関数」はない
寝る子(neruko3114) プログラミング TEX
ローカル変数はない
ローカル変数
ブロック内でのみ有効
ブロック外では使えない
TEXの場合
ローカル変数はない
宣言したら全てグローバル変数
xx@a など,識別子をつけて
名前が被らないように工夫する必要
寝る子(neruko3114) プログラミング TEX
TEX言語の特徴
フリーフォーマットではない
ローカル変数はない
「関数」はない
寝る子(neruko3114) プログラミング TEX
「関数」はない
気をつけたいこと
TEX に「関数」と呼ばれるものはない
でも,マクロならある
関数っぽいマクロも作れる
TEXでプログラミングとは?
マクロを作ること(たぶん)
寝る子(neruko3114) プログラミング TEX
まとめ
Q. TEX って何?
A. 組版処理ソフト
Q. TEX でプログラミングって?
A. できるけど他の言語と大きく異なる
実行制御=マクロの展開の制御
Q. 結局のところ?
A. TEX でもプログラミングできます
ただしマイナー,かつ闇っぽい? 1
1
Donald E. Knuth:“The TEXbook” Appendix D Dirty Tricks
寝る子(neruko3114) プログラミング TEX

More Related Content

プログラミング罢别齿