Zettlrのテーブル機能

Markdownの表組みは難しいことで知られています。可能な限りシンプルであろうとするMarkdownの性質のため、複雑さは大きな苦痛となります。文書を書くのにMarkdownは完璧な選択です。文書を書くのに使用するほとんどのもの(例えば、リンク、画像、見出し、引用)は、Markdownで完璧に扱うことができます。しかし、時々、何らかのデータを文章に含めたい場合があります。または、テーブルは単純にアイディアを可視化するより良い方法です。

テーブルについて

Markdownのテーブルは、非常に簡単な文法で書かれます。各行が、テーブルの一行に対応し、セルはパイプ(縦線)で囲まれます。

| Cell A:A | Cell A:B |
| Cell B:A | Cell B:B |

任意で、見出し行を追加することもできます。また、列の左揃え、右揃え、中央揃えをコロンにより指定することができます。

| Left aligned | Centered content | Right aligned |
|--------------|:----------------:|--------------:|
| Lorem        | Ipsum            | Dolor         |

コロンが適切な位置に置かれている限り、実際の文書中のテーブルの左右揃えは問題にならないことに注意してください。後でエクスポートするときに、正しい位置に揃えられます。

しかし、見てわかる通り、各列に2単語だけでも、Markdownのテーブルは幅を取ってしまいます。セルに複数行を使うことができないため、セル内に一文を丸ごと入れようとすると深刻な問題に陥ります。例えば次の例を見てみましょう:

| # | Name              | Description                                                                                                                                                                     | Price     | Quantity |
|--:|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|----------|
| 1 | Sonic Screwdriver | A device for all purposes. It replaces all of your current tools to account for a multi-dimensional journey through space and time.                                             | $99.99    | 1        |
| 2 | E-11 Rifle        | Trusted by imperial troops, this rifle is the least accurate, but still most used weapon in the Galaxy.                                                                         | $329.95   | 2.000    |
| 3 | Towel             | We all know that you always should bring a towel to any intergalactic journey. This multi-purpose towel is the ideal companion in case your planet is about to be exterminated. | $12.30    | 157      |
| 4 | Your Mom          | Are you in an argument with a philosopher? Try this Freudian-tested kill-all-argument!                                                                                          | priceless | 1        |

これが、Zettlrでは次のように見えます:

幅の広いテーブル

セルの幅は各列の最大幅に揃えているにもかかわらず、行が折り返されてテーブル構造が見えなくなっているため、これが有効なMarkdownのテーブルであると認識することができません。1列目の番号がなければ、いったい何行あるのかさえ簡単にはわからないでしょう。

テーブルエディタ

Markdownを使ってテーブルを書かなければいけないことがあるのは明白ですが、それは常に苦痛を伴います。例えばワープロのように、簡単に表を編集することができれば嬉しいですよね。そこで、Zettlr組み込みのテーブルエディタの出番です。

ZettlrはWYSIWYG("What You See Is What You Get")のポリシーに則っていますが、何を書いているのか分からなくなってしまう傾向にあるので、テーブルは例外とします。WYSIWYM ("What You See Is What You Mean")のアプローチはWYSIWYGより優れていますが、これを単純に適用してもうまくいきません。

そこで、テーブルの記述を助けるために、Zettlrには強力なテーブルエディタが付属しています。これには、テーブルの作成に集中できるために必要となる機能がそろっています。テーブルエディタを使うと、前述のテーブルが次のように見えます:

テーブルエディタで表示したテーブル

はるかに良いですよね?Zettlrのテーブルエディタは、文書中に見つけたすべてのMarkdownの表を、編集可能なセルを持ったHTML形式のテーブルに変換して、元のMarkdownの代わりに表示します。これだとMarkdownのソースは完全に隠れてしまいますが、この場合はこのアプローチの方がはるかに優れています。

テーブル中のセルをクリックすると編集モードに移行し、セルの中身を編集することができます。アクティブなセルは色が付いて表示されます。さらに、よく使われるワードプロセッサーなどと同じキーボードナビゲーションも使えるようになっているので、TabEnter、矢印キーで表内を移動することができます。そして、テーブルエディタのエッジボタンを使うと、行と列の追加削除も行うことができます。これらのボタンはテーブルにマウスカーソルを合わせると表示され、テーブルに対する様々な操作を行うことができます。

テーブルのどこかのセルをクリックすると編集モードになります。そこで編集した内容を確定するにはテーブルの外をクリックして、編集モードを抜ける必要があります。こうすることで初めて、編集した内容が元のMarkdownのテーブルに反映されます。

キーボードナビゲーション

まずは、キーボードナビゲーションに移りましょう。以下のショートカットを使うことができます。

  • Tab: 次のセルに移動します。最後の列を選択中の場合は、次の行の最初のセルに移動します。最終行の最後のセルを選択中の場合は、新しい行が自動的に追加されます。
  • Shift-Tab: 前のセルに移動します。最初の列を選択中の場合は、前の行の最後のセルに移動します。
  • Enter: 次の行の同じ列に移動します。最終行のセルを選択中の場合は、新しい行が自動的に追加されます。
  • ↑/↓: 前後の行の同じ列に移動します。最初の行や最後の行の場合でも新しい行は追加されません。
  • ←/→: 左右に移動します。最初(最後)の列の場合は、前の(次の)行に移動します。

これらのショートカットを使えば、テーブル内を自由に移動し、簡単に入力することができます。最初にテーブルの見出しを埋めてから、一行ごとにデータを入力していくならTabが便利に使えます。

キーボードナビゲーションについての視覚的な説明

エッジボタン

テーブルエディタには、エッジボタンと呼ばれる便利な機能もあります。テーブルにマウスカーソルを合わせると、2つのグループのボタンと、4方向に対するボタンが表示されます。

テーブルエディタのエッジボタン

これらは、テーブルの内容を隠してしまわないように、最初は透過して表示されます。エッジボタンにマウスカーソルを合わせると不透明になります。ボタンの機能は見ればわかるようになっています。各辺の中央に表示される(+)ボタンは、それぞれに対応した位置に行や列を追加します。左のボタンをクリックすると現在のセルの左側に列が追加され、下のボタンをクリックすると現在のセルの下に行が追加されます。

テーブルの上部には、さらにボタンのグループが表示されます。左のグループは、現在選択中の列の左右揃えを指定します。どれかをクリックすると左右揃えが適用されます。視覚的に確認できるよう、変更はすぐに反映されます。

右のグループは、現在の行や列を削除するボタンです。削除したい行や列に含まれる任意のセルを選択した状態で、いずれかのボタンを押してください。

テーブル編集を抜けてから"元に戻す"コマンドを実行しなくて済むように、行や列を削除する前には必ず正しいセルにカーソルを置いていることを確認してください。

アクティブな行と列

複雑なテーブル

ここまでで、基本的なテーブルについては述べました。しかし、より複雑なテーブルはどうすればよいでしょうか。テーブルエディタの出番はおしまいです。Markdownテーブルの限定的な文法では、複数行や列にわたるセルの結合は不可能です。もし必要ならば、生のHTMLやLaTeXコマンドを使用する必要があります。それらを使えば、好きなようにすることができます。

Markdownのテーブルは、あなたの文書補助するためのものであることを忘れないでください。つまり、論文の出典セクションなどに載せるための複雑なデータセットを取り扱うなら、StataのデータファイルやRDatasetを変換してLaTeXやHTMLに出力する素晴らしいツールがすでにあります。

コピー&ペーストするのではなく、Zettlrの機能を使ってデータセットを論文に含めるアイディアがあります。

  • 論文用のプロジェクトを作ります
  • 論文の構成に必要なファイルを作ります。(例えば、01 - Chapter 1.md, 02 - Chapter 2.md, 03 - Chapter 3.md, 04 - Chapter 4.md)
  • RプロジェクトやStataプロジェクトにコマンドを追加し、何か変更があるたびにデータをプロジェクトディレクトリ内に05 - Data.mdとして出力するようにします。
  • 論文をエクスポートすると、外部で管理されたファイル05 - Data.mdが自動的に追加され、データを含んだ文書が出力されます。