家庭教師のアルバイトで使う百ます計算 1 のプリントを、PythonのPandas使ってlatexソースとして吐き出させようと考えた。
成果物
ソース
source.py
# Python 3.7.2
# pandas 0.24.2
import random
import pandas as pd
# プリアンブル
priamble=r"""
\documentclass[dvipdfmx,autodetect-engine,12pt]{jsarticle}
\usepackage{extsizes}
\begin{document}
\begin{center}
\large{百ます計算}\\
"""
print(priamble)
# 吐き出したいページ数を指定
pages=10
num=pages*2-1
for x in range(num+1):
#行(1~9)確保
index1 = list(range(1,10))
#シャッフル
random.shuffle(index1)
#列(1~9)確保
columns1 = list(range(1,10))
#シャッフル
random.shuffle(columns1)
df=pd.DataFrame(index=index1,columns=columns1)
#DataFrame形式のtableのNaN値をスペース埋め
df1=df.fillna(" ")
#tableの罫線追加&jsarticle環境での諸々を置換
print(df1.to_latex(column_format="|l||l|l|l|l|l|l|l|l|l|").replace(r"\bottomrule","")\
.replace(r"\toprule",r"\hline").replace(r"\\",r"\\\hline").replace(r"\midrule",r"\hline"))
#一番最後の表を除き、下部の表のタイトルを出力
if(x!=num):
mid=r"""
\vspace{\baselineskip}
\vspace{\baselineskip}
\vspace{\baselineskip}
\large{百ます計算}\\
"""
print(mid)
ending=r"""
\end{center}
\end{document}
"""
print(ending)
感想
もうすこし表を大きくしたかったです(geometryパッケージを使って余白調整もしてみましたがうまく行かないです、アドバイスお待ちしております。)。
フォントがきれいじゃないから埋め込んだほうがいいのかも…
ちょっとした思いつきとPythonの練習も兼ねてやってみたが、実際に困ったのはTeXの見栄えをいかに良くするかだった。
TeXツライ。
最後まで読んでいただきありがとうございました。
-
正確には81マスですが一般的名称(百ます計算 - Wikipedia https://ja.wikipedia.org/wiki/%E7%99%BE%E3%81%BE%E3%81%99%E8%A8%88%E7%AE%97)
)を用いました。 ↩