【自動化ツール講座 #4】noteの表作成ツール「CSV→LaTeX表変換Chrome拡張機能」を大幅アップデート
毎度、rorosukeです。
前回、noteエディタ上のCSVデータをLaTeXタグに変換して、表組表現する拡張機能を公開しました。それがこちらです。
そこで、TSV・Markdown対応、特殊文字のエスケープ対応、上罫線の問題への対処といったバージョンアップ予告をしていましたが、今回、予告通りバージョンアップをして、すでに公開済みです。
インストールはこちらで行えます。
予告した以外にも、さまざまな改善をしていますので、それらを次にまとめます。
TSV(タブ区切り)データに対応
Markdown表に対応
特殊文字の自動エスケープ
上罫線強化オプション
CSV・TSV・Markdownへの逆変換
Excel用コピー機能 ・英数字フォント選択(ゴシック/明朝)
最後の「Excel」とのデータのやり取りについては、おまけ的につけたものだったのですが、想像以上に便利かもしれません。
新ツールのダイアログ
バージョンアップ版は、起動すると次のダイアログが表示されます。いくつか項目が追加されていますが、使い方は基本一緒です。

TSV・Markdown表に自動対応
TSVとはタブ区切りのデータです。また、Markdownとはマークダウン記法で記述されたデータです。
TSV
項目 数
リンゴ 1個
バナナ 3個Markdown
| 項目 | 数 |
|---|---|
| リンゴ | 1個 |
| バナナ | 3個 |こうしたな形式のデータを表変換できます。
タブ区切りはExcelのデータについて、セル範囲を選択してコピーしたときに、クリップボードに保存される形式です。つまり、これをnoteエディタにプレーンテキストとして貼り付ければ、本ツールで直接LaTeX変換することができます。
Markdownも同様に対応しています。
たとえば、noteをAIに作らせるとき「マークダウン記法で出力して」と依頼すると、表もマークダウン式で表示されます。noteにはマークダウン式の表をレンダリングする機能がありませんが、本ツールを使えば簡単に表に変換できます。
TSV・Markdownのどちらも自動判定しているので、操作はCSVのときと同じで、選択して表スタイルを選ぶだけです。
特殊文字の自動エスケープ
LaTeXでは、いくつかの特殊文字について機能が割り当てられていて、そのまま表示できない場合があります。その1つが %です。LaTeXではこれがコメントアウト文字として機能するため、変換すると表が崩れます。
たとえば「10%」というデータがあったとき、これをそのまま表にすると、セルには「10」としか表示されません。「%」そのものを表示するには、%に割り当てられている機能を発動させない工夫(エスケープ)が必要になります。
今回、LaTeXの特殊文字を一括でエスケープする処理を追加しました。対象の文字は次の通りです。
% _ ^ # $ & { } ~ \
表の中の文字にこれらが含まれていても、自動的にエスケープ処理をして、それらの文字そのものが表示されるようにしています。
なお、エスケープしたくない場合も想定して、エスケープのオンオフができるようにしてあります。デフォルトはオンですが、エスケープなしで変換したい場合はオフにしてください。
| 項目 | 割引率 |
|---|---|
| リンゴ | 10% |
| バナナ | 30% |「%」があっても次のように表示されます。
$$
\begin{array}{|c|c|}
\\[-1.15em]\hline
\textsf{\small{項目}} & \textsf{\small{割引率}}
\\ \hline
\textsf{\small{リンゴ}} & \textsf{\small{10\%}}
\\ \hline
\textsf{\small{バナナ}} & \textsf{\small{30\%}}
\\ \hline
\end{array}
$$
例外:__snake__ のように単語の前後にアンダースコアが2個ずつ付くパターンが少し特殊なので説明します。この場合、noteに貼り付けたときに、noteエディタがMarkdownの太字として処理して、アンダースコアが消えます。これはnoteエディタの仕様なので、本ツールでは対処できません。貼り付け後に自力で前後にアンダースコアを入力してください。
上罫線強化
前回の記事では「上の罫線が出たり出なかったりしている。どうするか検討中」と書きました。
罫線の出方については、いまだ法則性がよくわかっていません。プレビューと実際の表示が異なることもありますし、表示媒体によっても表示のされ方が安定しないようです。たとえば、pcのブラウザ上では罫線が欠けるのに、スマホのブラウザでは表示されるといった感じです。
現時点では明確な法則が分からないため、結局「\\[-1.15em]\hline」を入れるか入れないか選択できるようしました。チェックボックスでオン/オフの切り替えができます。デフォルトはオンにしています。
完全相互変換
LaTeXコード化された複数行を選択して、拡張機能アイコンをクリックすると、次の変換メニューが表示されます。


これで次の出力形式に逆変換できます。
CSV
TSV
Markdown
変換を繰り返すことで、
CSV → LaTeX → Markdown → LaTeX → TSV
のように、データ形式を巡回していくこともできます。
Excel連携
表といえばExcelですから、Excelとのやり取りも簡単にできるようにしました。そのために追加したのが、正変換メニュー(CSV/TSV/Markdown選択時)と逆変換メニュー(LaTeX選択時)の両方に追加された、
「Excel用コピー」メニュー
です。
通常の「TSVに戻す」はnoteのエディタにテキストを挿入しますが、「Excel用コピー」はTSVデータをクリップボードに直接保存します。これによって、そのままExcelに貼り付けることができます。

「Excel用コピー」を選ぶとクリップボードに保存される

セル内改行(本ツールでは;;で指定)を含む表のExcel用コピーでは、;; がExcelのセル内改行として変換されます。逆に、Excelのセル内改行を含むデータをnoteにプレーンテキストとして貼り付けて選択すると、;; として認識してLaTeX変換します。
注意:Excelへの貼り付けに失敗するパターン
Excelのセルが点線枠(コピー待機状態)のときに貼り付けると、Excelの内部クリップボードが優先されて、期待したデータが貼り付けられないことがあります。貼り付け前にEscキーを押して点線枠を解除してから、Ctrl+Vで貼り付けてください。
英数字フォント選択
LaTeX変換する際に、英数字フォントについてゴシック(サンセリフ)と明朝(セリフ)を選択できるようにしました。デフォルトはゴシックです。
ゴシック
$$
\begin{array}{cc}
\\[-1.15em]\hline
\textsf{\small{apple}} & \textsf{\small{\$10}}
\\ \hline
\textsf{\small{banana}} & \textsf{\small{\$30}}
\\ \hline
\end{array}
$$
明朝
$$
\begin{array}{cc}
\\[-1.15em]\hline
\textrm{\small{apple}} & \textrm{\small{\$10}}
\\ \hline
\textrm{\small{banana}} & \textrm{\small{\$30}}
\\ \hline
\end{array}
$$
注意:日本語は対象外
この指示は、あくまでも英数字のみを対象としています。日本語フォントについては、KaTeXの管理外なので対象外です。英数字のみの表や、英数字のデータを多く含む表で使うと効果的です。
まとめ:相互変換よくないですか?
noteにおいて表組(テーブル)は、記事を作成する上でかなり厄介な問題です。いまのところインライン表現するとなるとLaTeXで記述するしかありません。
しかし、本ツールを使うことで、少なくともCSV,TSV,MarkdownそしてExcelとの相互変換ができるようになり、表組を積極的に使うことがかなり楽になるものと思います。
もともと相互変換まで実装する予定はなかったのですが、作っているうちに、その方がより汎用性が高まると思って実装することにしました。最初は、変換→逆変換を繰り返すと、データがどんどん破壊されてしまい、どうなることかという状態でしたが、なんとかまとまりました。
というわけで、このツールを「あらゆる表データのハブ」として使用していたければ幸いです。
以上。
いいなと思ったら応援しよう!
記事なり、プログラムなりが役に立ったと思った方は、
チップの応援よろしくお願いいたします。
次の開発もがんばろうかな、という気になりますのだ (笑)