はじめに
私はLaTexの表を作るときにはいつもExcelで大体の表の構成を作った後にTables GeneratorのようなWebアプリにコピーしてLaTexの表を作っていました。すごく便利ではあるのですが、罫線やセルのマージなどの情報はWebアプリに渡す段階で消えてしまいますし、作った表の体裁を保存しておくこともできないのである程度作り込んだ表の場合は毎度の作業が少し面倒でした。
そこでExcelのアドインをC#で作ることができるVisual Studio Tools for Office (VSTO)というものでExcel上の選択範囲をLaTexの表に変換するアドインを作ってみました。同様の拡張機能はHTMLやMarkdownの場合にはすでにしっかりしたものを作ってらっしゃる方がいるみたいですが、LaTexはやはりマイナーだからなのか同様のものはまだないようです。結果的に自分がほしい機能は作れて、少なくとも自分は使いたいと思うものができたので満足してます。
制作したものはGitHubにあげてみました。リリース機能でインストーラーを簡単に配布できるということだったので初めて使ってみました。
できること
シンプルです。Excelで選択した範囲をLaTexの表に変換してコピーするだけ。
残りはLaTexの表のオプションです。作成したあとに変更しても構いません。Excel側の操作で折り畳まれた行をスキップしないというオプションを付けてみました。
ということで作った機能概要は次の通りです。
- 選択範囲をLaTexの表としてクリップボードに貼り付ける
- 選択範囲をLaTexの表としてファイルに保存する
- 複雑な表だと本文中に置くとかなり邪魔なので別ファイルにしてincludeするとき
- 基本的な表のオプションを指定する
- 表を中央に寄せるか
- 表を本文中のどこに優先的に配置するか
- ラベルの指定
- キャプションの指定
- Excel表の非表示行(又は列)が選択範囲に含まれている場合LaTexでも非表示にするか
- 一度設定した内容を設定ファイルとして保存することで再度Excelを開いたときにも設定内容を保持
今後やるとしたら
- セルの色、文字の色の反映
- そもそも色付きのLaTexの表を作ったことがないが...
- 文字列の折返し
- 表の幅を指定すればできるらしい。
- 特殊文字の自動変換
- LaTexで入力してもそのまま表示されない文字の変換
- 表自体は最終的にLaTexの表にする前提で作っているわけではないので、どっちみち数式など、あとで手直しは必要と割り切っている部分がある。
最後に
C#に触れたのはほとんど初めてでしたが、高機能の開発環境(VS)とネット上のわかりやすい情報のおかげで簡単にアドインを制作することができました。趣味でしかプログラミングはやったことがないので良いものができたのかわかりませんが、よかったらお試しいただけたら幸いです。