ExcelテーブルをTeXコードに変換するツール「Excel2TeX」を公開しました

はじめに

ExcelやCSVファイルのテーブルデータを読み込んで、TeX形式のコードに変換するためのシンプルなデスクトップ向けツール「Excel2TeX」を公開したので、ここではその紹介記事を書くことにする。

GitHub - Yuulis/Excel2TeXgithub.com favicon
キャッチコピー画像
キャッチコピー画像

開発の経緯

このアプリは、大学の「情報システムデザイン」という実習形式の講義における最終課題の一環として開発されたものである。

「大学の実験レポート執筆時に、ExcelやCSVファイルに記録された実験データをLaTeX形式の表に変換する作業が面倒であった」という背景のもと、ExcelやCSVファイルを読み込んで、TeX形式のコードに自動変換するツールが欲しかった、というのが開発のきっかけである。

機能紹介

GitHub の Release ページから、OS に応じた最新バージョンの zip ファイルをダウンロードして展開し、Windowsの場合は中にあるExcel2TeX-ver.x.x.x.exeを実行すると、以下のような画面が表示される。

スクリーンショット
スクリーンショット

左上の「Select file」から.csvまたは.xlsxファイルを選択し、左側のツールバーで表形式や罫線のスタイル、キャプション、ラベルなどを調整設定することができる。

中央には現在のテーブルプレビューが表示され、ここをクリックすることで Excel のようにセルの状態を編集できる。 上側のツールバーからセルの結合・分割、行列の追加・削除、配置変更も行える。

右側にはリアルタイムで LaTeX コードが生成されるので、一通り編集が完了したら全体をコピーするか.texファイルとして保存し、エディタなり Cloud LaTeX なりに貼り付けて使うことができる。

ここまでの操作を全て一つのアプリ画面内で完結できるのがポイント。

技術的な話

Fletについて

このアプリは、以前「ImgConverterDesktop」で使用したこともある、 Python のマルチプラットフォーム向け GUI フレームワークである Flet を用いて開発している。

flet.dev favicon

内部では Flutter が使われており、シンプルなコードで Flutter のモダンな Widget システムをそのまま使うことができる。

また、flet buildコマンド1つで Windows / macOS / Linux 向けのネイティブバイナリをビルドできる点も魅力であった。

Flet については、以前ブログで紹介記事を書いたので、気になる人はそちらも読んでみてほしい。バージョンが古いので、そのうち最新版対応の記事も書きたいと思っている

【Flet v0.26.0】Python + FletでリッチなGUIアプリケーションを手軽に作ってみる ~tkinterはもう古い!?~ - Yuulis.logyuulis.hatenablog.com favicon

現在は最新バージョンが0.85.3ということで、フレームワーク本体のアップデートに合わせて、こちらのアプリも随時更新していく予定である。

セルの結合と LaTeX コードの生成について

アプリ上では、セルの結合・分割を行うことができるが、この情報を LaTeX コードにリアルタイムで反映させるために、結合前後でのセルの状態を管理するためのデータ構造を工夫している。

また、縦結合セルの下に通常の全幅罫線\hlineを表示すると結合セルを跨いで罫線が表示されてしまうため、結合セルの下に罫線を表示する場合は\cline\cmidruleを使うようにしている。

おわりに

今回は自作のデスクトップ向け画像変換ツール「Excel2TeX」を公開したので、その紹介記事を書いた。

大学の課題として開発したアプリではあるが、個人的に便利だと思ったので、今後も更新対応を続けていく予定である。