プログラミングTeX

16
プログラミング T E X 寝る子(neruko31142014/03/15 @長岡 IT 開発者勉強会 #36 寝る子(neruko3114プログラミング T E X

Transcript of プログラミングTeX

Page 1: プログラミングTeX

プログラミングTEX

寝る子(neruko3114)

2014/03/15@長岡 IT開発者勉強会 #36

寝る子(neruko3114) プログラミング TEX

Page 2: プログラミングTeX

自己紹介

氏名:田村英継(=寝る子)Twitter:neruko3114

長岡高専専攻科(3月に卒業)C/Javaを授業で触った程度

寝る子(neruko3114) プログラミング TEX

Page 3: プログラミングTeX

参加の経緯

寝る子(neruko3114) プログラミング TEX

Page 4: プログラミングTeX

TEXとは

TEX = 文書組版ソフト(システム)

特徴OSに依存しないフリーでオープンソース数式が綺麗

F (s) =

∫ ∞

0

f (t)e−stdt

寝る子(neruko3114) プログラミング TEX

Page 5: プログラミングTeX

TEXでプログラミング?

TEXにできること(一部)変数(カウンタ)の定義四則演算ループ構文条件分岐

寝る子(neruko3114) プログラミング TEX

Page 6: プログラミングTeX

TEXでプログラミング

例:剰余を求める“マクロ”\newcount\xx@a

\newcount\xx@res@count

\def\xx@modulo#1#2{%

\xx@a=#1\relax

\divide\xx@a#2\relax

\multiply\xx@a-#2\relax

\advance\xx@a#1\relax

\xx@res@count=\xx@a

}

寝る子(neruko3114) プログラミング TEX

Page 7: プログラミングTeX

TEXでプログラミング

例:階乗を求める“マクロ”\newcount\@m

\newcount\@k

\def\factorial#1{%

\@m = 1 \relax

\@k = 1 \relax

\@whilenum \@m < #1 \do {%

\advance \@m 1 \relax

\multiply \@k \@m \relax

}

\the\@k

}

寝る子(neruko3114) プログラミング TEX

Page 8: プログラミングTeX

※他のプログラミング言語と色々異なる

寝る子(neruko3114) プログラミング TEX

Page 9: プログラミングTeX

TEX言語の特徴

フリーフォーマットではないローカル変数はない「関数」はない

寝る子(neruko3114) プログラミング TEX

Page 10: プログラミングTeX

TEX言語の特徴

フリーフォーマットではないローカル変数はない「関数」はない

寝る子(neruko3114) プログラミング TEX

Page 11: プログラミングTeX

TEX ̸= フリーフォーマット

フリーフォーマット空白文字,タブ,改行文字はどこでもよい(プログラムの動作に影響はない)

TEXの場合空白文字の扱いについて規則がある「文書」と「プログラム」で区別しない

空白文字の扱いに要注意

寝る子(neruko3114) プログラミング TEX

Page 12: プログラミングTeX

TEX言語の特徴

フリーフォーマットではないローカル変数はない「関数」はない

寝る子(neruko3114) プログラミング TEX

Page 13: プログラミングTeX

ローカル変数はない

ローカル変数ブロック内でのみ有効ブロック外では使えない

TEXの場合ローカル変数はない宣言したら全てグローバル変数

\xx@aなど,識別子をつけて名前が被らないように工夫する必要

寝る子(neruko3114) プログラミング TEX

Page 14: プログラミングTeX

TEX言語の特徴

フリーフォーマットではないローカル変数はない「関数」はない

寝る子(neruko3114) プログラミング TEX

Page 15: プログラミングTeX

「関数」はない

気をつけたいことTEXに「関数」と呼ばれるものはないでも,マクロならある関数っぽいマクロも作れる

TEXでプログラミングとは?マクロを作ること(たぶん)

寝る子(neruko3114) プログラミング TEX

Page 16: プログラミングTeX

まとめ

Q. TEXって何?A. 組版処理ソフト

Q. TEXでプログラミングって?A. できるけど他の言語と大きく異なる実行制御=マクロの展開の制御

Q. 結局のところ?A. TEXでもプログラミングできますただしマイナー,かつ闇っぽい? 1

1Donald E. Knuth:“The TEXbook” Appendix D Dirty Tricks寝る子(neruko3114) プログラミング TEX