PythonTeXを用いて TeXマクロみたいなものを作ってみる。
なお筆者はTeXマクロの知識は微小量しかないのでご容赦願いたい。
題材としては、奥村先生が作られたokumacroパッケージにある \挨拶 と \曜 を採用した。
理由は簡単そうだったからである。
本文となるLaTeXソースは以下の通り。
\documentclass[a4j]{jsarticle} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{otf} \usepackage{lmodern} \usepackage[makestderr]{pythontex} \restartpythontexsession{\thesection} \begin{pycode} import datetime def aisatsu(): date = datetime.datetime.today() zikou = dict(zip(range(1,13), ["厳寒","青寒","早春","陽春","新緑","向夏", "猛暑","残暑","初秋","仲秋","晩秋","初冬"])) s = r"\noindent 拝啓\hspace{1zw}" s += zikou[date.month] + "の候、益々ご清栄のこととお喜び申し上げます。" return s def todayYoubi(): date = datetime.datetime.today() youbi = dict(zip(range(7), ["月","火","水","木","金","土","日"])) s = youbi[date.weekday()] return s \end{pycode} \title{Python\TeX で\TeX マクロもどきを作る} \author{Xaro Cydeykn} \date{\today} \begin{document} \maketitle \py{aisatsu()} 今日は\py{todayYoubi()}曜日です。 \end{document}
こうすると時候の作成した月日に応じた挨拶文や曜日が出力される。
なお骨格となるPythonコードは以下の通り。単純に辞書を用いた。
def aisatsu(): import datetime date = datetime.datetime.today() zikou = dict(zip(range(1,13), ["厳寒","青寒","早春","陽春","新緑","向夏", "猛暑","残暑","初秋","仲秋","晩秋","初冬"])) s = r"\noindent 拝啓\hspace{1zw}" s += zikou[date.month] + "の候、ますますご清栄のこととお喜び申し上げます。" return s def todayYoubi(): date = datetime.datetime.today() youbi = dict(zip(range(7), ["月","火","水","木","金","土","日"])) s = youbi[date.weekday()] return s
これでTeXプログラミングを避けてPythonでTeXマクロが書けそうな気がしてきたが…やはり(La)TeXの知識は欠かせないだろう。