何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

PythonTeX でTeX マクロもどきを作る

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プログラミングを避けてPythonTeXマクロが書けそうな気がしてきたが…やはり(La)TeXの知識は欠かせないだろう。