豆腐メンタルは崩れない

小説家ワナビ視点で、主に執筆環境について書きます。

Markdownドキュメントを作成する際、隣接したリストブロック同士がくっついちゃう件について

Markdownドキュメントを作成する際、複数のリストブロックを連続して記述する際のルールがよくわからなかった。

たとえば、以下のように記述するとする。

* リストブロック1

独立したパラグラフ

* リストブロック2

これが、ふたつのリストブロックとひとつのパラグラフとして解釈されることは、直感的に理解できる。

<ul>
<li>リストブロック1</li>
</ul>

<p>独立したパラグラフ</p>

<ul>
<li>リストブロック2</li>
</ul>

では、以下のように記述した場合はどうなるのか?

*   リストブロック1

*   リストブロック2

作成者の都合としては別々のリストブロックであってほしいが、実際にはくっついてしまうようだ。

まずは教典

Markdownの提唱者、ジョン・グルーバーによる定義を参照する。

これによれば、以下のように空行を挟む場合は、<p>タグを含む単一のリストブロックとして解釈されるとある。

*   リストブロック1

*   リストブロック1

変換後のHTMLコード例は以下のとおり。

<ul>
<li><p>リストブロック1</p></li>
<li><p>リストブロック1</p></li>
</ul>

さらに、複数のリスト行の間に、空行を挟んでタブ記号または半角スペース4つで始まる行が記述される場合、リストブロックには複数のパラグラフが含まれるとされる。

* リストブロック1の項目1

    項目1に含まれる

* リストブロック1の項目2

変換後のHTMLコード例は以下のとおり。

<ul>
<li><p>リストブロック1の項目1</p>

<p>項目1に含まれる</p></li>

<li><p>リストブロック1の項目2</p></li>
</ul>

つまり、複数のリスト行の間に、空行を挟んで、インデントされない行が記述された場合、リストブロックは分離される。

逆に言えば、複数のリスト行の間に空行のみが記述される場合、単一のリストブロックとして解釈するのが正しいらしい。いくらなんでも、*行と1.行を並べたら分離してもらいたいのが人情というものだが。

では、単に複数のリストブロックを並べて記述したい場合はどうすればよいのだろうか?

複数のリストブロックを連続して記述する

HTMLで書くのは最後の手段として。

簡単なのは、---つまり水平線あたりで区切ることだ。日本語特有のバッドノウハウとして、全角スペース行で区切ることも考えられる。

* リストブロック1

---

* リストブロック2

 

* ↑ここに全角スペース リストブロック3

変換後のHTMLコード例は以下のとおり。

<ul>
<li>リストブロック1</li>
</ul>

<hr>

<ul>
<li>リストブロック2</li>
</ul>

<p> </p>

<ul>
<li>↑ここに全角スペース リストブロック3</li>
</ul>

また、HTMLコードを利用する方法として、コメントブロックを挟むということが考えられる。

* リストブロック1

<!-- コメントブロック -->

* リストブロック2

変換後のHTMLコード例は以下のとおり。

<ul>
<li>リストブロック1</li>
</ul>

<!-- コメントブロック -->

<ul>
<li>リストブロック2</li>
</ul>

ただし、これは原文の見た目を損なうため、ライブプレビューを利用しない執筆スタイルの場合は好ましくない。

それ以外だと、使用するエディタなりレンダラ特有の仕様に頼るしかなさそうに思われる。

typewrite.io の場合

例として、typewrite.ioの場合、ふたつのリストブロックに異なるシンタックスを用いることで、リストブロックを分離することができる。

 * これは
 * ひとつめの
 * リストブロック
 + これは
 + ふたつめの
 + リストブロック

変換後のHTMLコード例は以下のとおり。

<ul>
<li>これは</li>
<li>ひとつめの</li>
<li>リストブロック</li>
</ul>
<ul>
<li>これは</li>
<li>ふたつめの</li>
<li>リストブロック</li>
</ul>

余談めくが、ネストした場合、異なるシンタックスであってもひとつのリストブロックとみなされる。

* これは
    + ひとつめの
    + リストブロック
- これは
    + ふたつめの
    + リストブロック

変換後のHTMLコード例は以下のとおり。

<ul>
<li>これは<ul>
<li>ひとつめの</li>
<li>リストブロック</li>
</ul>
</li>
</ul>
<ul>
<li>これは<ul>
<li>ふたつめの</li>
<li>リストブロック</li>
</ul>
</li>
</ul>

このような特殊な仕様を持たないエディタの場合、大人しく何らかのブロック要素を挟むか、HTMLで書く以外に方法はなさそう。

シンプルゆえのこういう融通の利かなさが、Markdownの欠点ではある。

Byword (Mac) のわかりにくい機能について確認&検証した

Byword

Byword

  • Metaclassy, Lda.
  • 仕事効率化
  • ¥1,340

Mac標準の機能は除く。

参考:カッコイイMarkdownエディタの機能にいい感じの呼び名をつけよう - 豆腐メンタルは崩れない

メニューバー項目

Edit > Paste / Paste and Match Style

  • ファイルタイプがリッチテキスト(rdf)の場合
    • Paste : スタイルを保持して貼り付け
    • Paste and Match Style : スタイルを無視して、プレーンテキストとして貼り付け
  • ファイルタイプがプレーンテキスト(txt)の場合
    • 同じ結果。そりゃそうだ。なんでグレーアウトしてないんだろう

Edit > Insert > Hard Line Break

  • Markdownの強制改行(半角スペース×2+改行)を挿入
    • リスト行でも有効

Edit > Select > Increase / Decrease Selection at Caret

  • 選択範囲を、なし<単語<行<全文の範囲で拡大/縮小する
    • 日本語でも有効

Edit > Select > Move Up / Down

  • テキスト選択状態により挙動に違いがある。
    • 選択部分なし:カーソル行を移動
    • 選択部分あり:選択部を移動
      • 複数行を選択した場合、その全てを移動する。
        • 複数行を選択し、かつ行の一部を選択しない場合、選択していない部分は取り残される。

Format > Show PopOver

  • ファイルタイプがリッチテキスト(rdf)の場合のみ使用可能
  • テキスト装飾メニューを表示

Format > Underline / Highlight

  • ファイルタイプがリッチテキスト(rdf)の場合のみ使用可能
    • HTMLタグで表現すればプレビューには適用される
      • Underline: <u>~</u> など
      • Highlight: <mark>~</mark> など

Format > Bigger / Smaller

  • 見出しレベルの増減
    • 行頭の#を付けたり消したり
    • 元が見出し行だろうがリスト行だろうが引用行だろうがおかまいなし
    • 複数行を選択して実行すると選択行全てに適用されるが、あまり使いどころはなさそう

Format > Align Left / Center / Justify / Right

  • ファイルタイプがリッチテキスト(rdf)の場合のみ使用可能

Format > List > Insert Bulleted / Numberd List

  • カーソル行または選択行を順序なし/数字付きリストに変更

Format > List > Convert List

  • カーソルを含むリストブロックを、順序なし/数字付きリストに相互変換する
    • 順序なしリストに変換した場合、シンタックス* になる
    • テキスト選択中は実行できない
    • 入れ子リストの場合、カーソル行と同じインデントレベルの行のみが対象となる
      • そのため、入れ子リスト全体を変換するには、各インデントレベルで実行する必要がある

f:id:catfist:20140513225107p:plain

View > Pragraph Focus / Line Focus

どう違うのかというと……

f:id:catfist:20140513225121p:plain

f:id:catfist:20140513225118p:plain

ショートカットキー

Opt+Return

  • 通常は改行
  • リスト行で実行した場合のみ、「オートバレットせず改行×2」+「カーソル行+1レベルのインデント」になる
    • 要するに、リストの記述を終了し、空行を空け、一段深くインデントされた通常行を開始する
      • 全く意味がわからないし、使い道も思い付かない
    • リストの記述をワンアクションで終了する方法はこれのみ
      • 普通にReturn連打の方が楽そう

Byword (Mac) の機能について開発元に問い合わせてみた

Byword

Byword

  • Metaclassy, Lda.
  • 仕事効率化
  • ¥1,340

参考:カッコイイMarkdownエディタの機能にいい感じの呼び名をつけよう - 豆腐メンタルは崩れない

メール原文

1.Is "Automatic Bulleting" possible?

Yes.

2.When I push Tab key other than a head of a line at the time of list making, can you insert Tab or Space in a head of a line?

Yes.

3.At the time of list making, can I add the item in shortcut key? When it is possible, can I add a lower item (nested item)?

If I understood what you mean, yes, Byword does that too.

Hope that helps. Let me know if you need anything else.

意訳

1.オートバレットできます?

おう。

2.タブキーインデントできます?

たりめえよ。

3.ショートカットキーで、リストに小項目追加できます?

そんな細かく説明しなくてもわかるから(笑)Bywordでもできるよ。

お役に立てたかな? まだなんかあったら言ってな。

これ以上疑問があるものか! 満点回答+4つの問い合わせ先で最速返信だよ!
迷いは消えた。買おう!

試してみた

  • オートバレットできる!
  • タブキーインデントもできる!
    • Shift+Tabでアウトデントもできる!
    • ただし、カーソル位置がシンタックスの直後である場合のみ。
    • カーソル位置が異なる場合は、Ctrl+Cmd+矢印キーでインデント/アウトデントしよう。
  • でも、小項目の追加ねーぞゴルァ!
    • 「改行+リストシンタックス追加+インデント」をワンアクションでできるか聞きたかったのだが。
      • TextMate2のMarkdownバンドルでいう、New Subitem(Shift+Enter)のこと。
    • 恐らく、「入れ子になったリストでもオートバレットができる」という回答だったのだろうな……
    • まあ、3はできたらいいな程度の話だからいいけど。

ResophNotesの同期が復活するまでのメモ

どこかにいるかもしれない同病者のために。

発端

ある日突然同期しなくなったResophNotes。ログインエラー表示を出し続ける。

Simplenote紹介記事書こうと思ってたら、連携アプリが全滅した件 - 豆腐メンタルは崩れない

MacクライアントのnvALT、Nottinghamでも同様の事象が発生。

空振り

  • 従来利用していたPortableに代わりインストール版を導入
  • Portableを再ダウンロード
  • ログイン情報の再入力
  • Simplenoteパスワード変更、再入力
  • サードパーティアプリからの同期を数時間休む

気付き

  • もともと存在したノートは更新されている。
    • nvALTも同様。
  • ノートはプレーンテキストファイルでローカル保存されている。
  • 既存のプレーンテキストファイルが、なんらかの悪影響を及ぼしているのでは?
  • 空のフォルダを保存先に指定して同期……成功!
    • nvALT、Nottinghamでも成功!

まとめ

理屈は全く理解できないが、ローカルのプレーンテキストファイルが起因だった模様。

Simplenoteクライアントが同期しない時は、ローカルファイルを削除すると直るかも

Simplenote - Notes and Memos

Simplenote - Notes and Memos

  • Automattic
  • 仕事効率化
  • 無料

Simplenote

Simplenote

  • Automattic
  • 仕事効率化
  • 無料

無料で扱いが簡単なファイルブラウザ付きMarkdownエディタ「Lightpaper」

LightPaper for Mac

LightPaper for Mac

  • ClockworkEngine, LLC.
  • 無料 (執筆時点)


本記事は、小説執筆するときの関連ドキュメントをMarkdownで書くと捗るぞ - 豆腐メンタルは崩れないシリーズの一環としてお送りします!

本アプリの位置付け

はいコピペ。求める最低条件は以下の通りです。

参考:カッコイイMarkdownエディタの機能にいい感じの呼び名をつけよう - 豆腐メンタルは崩れない

  1. スマートハイライトを実装
  2. Markdownマークアップを支援(オートバレット、ショートカットキーでシンタックス挿入)
  3. サイドバーにドキュメントリストを表示

導入/設定

  • 公式サイトからダウンロード、Applicationフォルダに移動
  • Preference
    • Editor
      • Enable Automatic Bulleting
    • Style
      • ThemeWriter
      • Normal Screen Marginsをいい感じに調整

カッコいい点

  • 無料!
  • ドキュメントツリー+スマートハイライト(+ライブプレビュー)!
  • スマートハイライトのテーマが変更できる!
  • Dropbox内のフォルダを開けば当然同期可能!
  • 大雑把ながらマージン設定ができる! 見やすい!
  • Markdown Extra対応!
    • 表、定義リスト、脚注等に対応
  • 便利なショートカットキー
    • ⌘2 でプレビューの表示/非表示切り替え!
    • ⌘T でファイル名を検索
    • ⌥⌘→ または ⌥⌘← 、および Ctrl+Tab でタブ間を移動
    • ⌘] でインデント、 ⌘[ でアンインデント
    • ⌥⌘Q で選択部分をブロック引用に(行頭に > +半角スペースを付与)

気になる点

  • Navigatorの仕様が気に食わない
    • ファイル名ソートのみ。
    • Navigatorでダブルクリックしないと開かない。
    • ショートカットキーでフォーカスできろ。
  • MDI。SDI希望。
    • そのおかげでそれなりにキーボードでドキュメント間移動できるんだけども。
  • テキストファイル以外を置いておいてもプレビューさえできない。
    • Navigatorで指定拡張子のファイルを非表示することは可能。
    • 一応Finderで該当フォルダを開くことはできる。だからどうしたという感じだが。
  • Soft Tab(タブ記号の代わりに半角スペースを挿入)ほしい。
  • スマートインデント切実にほしい。

まとめ

はっきり言うと、Sublime Textを初めとする、最近はやりの高機能エディタの大幅な下位互換です。

ただし、下位が必ずしも劣化とはいえません。シンプルなインターフェース、導入の簡易さ、習得コストの低さは、多少の機能不足を補ってあまりあります。

スマートハイライト/オートバレット/ドキュメントリストと要点は抑えており、Markdownエディタとしての基礎力は及第点。Markdown Extraに対応していることを考えても、プレビューのトグルをキーボードでできるあたりはかなりポイント高いです。表にしても定義リストにしても、プレーンテキストでは見づらいですからね。

一方で、MDIかつダブルクリックオープンなあたりは性に合わず、かなり微妙な顔になりました。シングルクリックオープンも選べてくれませんか……。テキスト以外のファイルがほんとどうしようもないというのも惜しいです。せめて関連付けアプリで開いてくれれば……。

総じて、無料なら充分。扱いの簡単さは群を抜いており、Markdownドキュメント管理の入門編としては最適ではないでしょうか。

気付けば迫る割引最終日!リッチなMarkdownエディタ「Notebooks for Mac」

https://itunes.apple.com/jp/app/notebooks-write-documents/id862961526?mt=12&uo=4&at=10l8JW&ct=hatenablog

ツバメ返しを喰らってる間に迫っております! 5月5日までのようですが、それが日本時間何時までなのかはイマイチよくわかりませんので、興味のある方はお早めに!

本記事は、小説執筆するときの関連ドキュメントをMarkdownで書くと捗るぞ - 豆腐メンタルは崩れないシリーズの一環としてお送りします!

本アプリの位置付け

私の場合、小説の関連ドキュメントを作成/管理するアプリとして利用しておりますので、求める基本的な要件は以下のようになります。

参考:カッコイイMarkdownエディタの機能にいい感じの呼び名をつけよう - 豆腐メンタルは崩れない

  1. スマートハイライト
  2. Markdownマークアップを支援(オートバレット、ショートカットキーでシンタックス挿入)
  3. サイドバーにドキュメントリストを表示

導入/設定

私の場合はこんな感じです。実はデフォルト設定覚えてないので過不足あるかも……。

  • Mac App Storeでインストール
  • Command+, Preferenceで……
    • General
      • Notebooks homeに活動中のドキュメントフォルダを指定
    • Font & Color
      • 好みの感じに変更
    • Write & Edit
      • Highlight Markdown Syntaxにチェック
      • Make every newline a linebreakにチェック(改行の反映)
    • Advanced
      • Autosave Documents every "10" Secondsに(自動保存)

カッコいい点

主戦力として運用しているせいもあり、挙げていくと膨大になったのでリストを分けます。

編集関連(多い)

  • ショートカットキーでのマークアップとかオートバレットとかスマートハイライトとかソフトタブ( Tab で複数の半角スペースを挿入)は当然対応!
  • 貴重なタブキーインデント!!
    • 行頭以外で Tab してもちゃんと行頭にTab/スペースを挿入してくれる。
  • 設定で自動保存が可能!
  • GitHub Flavored Markdownらしきものに一部対応!
  • ⌘+↩︎ で編集とプレビューを切り替え!
    • デフォルトで編集/プレビューのどちらになるかは拡張子で判断。
      • プレーンテキストは編集、Markdown/リッチテキスト(HTML)はプレビュー。
  • プレーンテキスト/Markdownファイル/リッチテキスト(HTML)を形式変換/変換して複製可能!
    • WYSIWYGなHTMLエディタ風のリッチテキスト(HTML)編集モードを実装。使わないけど。
  • ⌘+O で編集中のファイルを関連付けされたアプリで開ける!
    • 他エディタとの連携で、貧弱な置換機能もカバー!
    • 投げた先で保存したら即反映!
  • MarkdownファイルのプレビューのコンテクストメニューにInsert Table of Contents!? すげえ!
    • 見出しを抽出して目次を自動生成!
    • 設定でSave System Files(plist)を許可していると、TOC情報はplistファイルとして保存される模様。
      • 許可していないと強制的にHTMLに変換される模様。さすがに許可必須か。
    • プレーンテキストで書いて、完成したらMarkdown変換してTOC付けるとか便利そう。
  • Taskpaper記法に対応!簡易的なタスク管理が可能!
    • - リスト行の末尾に @done を付けると、完了タスクとして打ち消し線される。
  • ノートリンク機能により、Evernote的な運用が可能!
  • 縦書き機能も……いや、使わないけども。

ファイルブラウズ関連

  • 新規ファイルの一行目が、自動的にファイル名になる!
  • 画像も見られる!
    • 表示用のXMLファイルを自動生成する。それはNotebooks上では見えない。
  • ツリービュー(フォルダ)/リストビュー(ファイル)ごとにソートルールを変更できる!
    • フォルダは名前順、ファイルは更新順とかも可能。
  • SDI。私の用途だと、MDIより楽。
  • ドキュメントペインからシングルクリックで開く。

その他

  • iOS版アプリと連携!(というかiOSアプリからの派生)
    • 言うてiOSでは1Writerですが。
  • Windows版もあるよ!
    • まだわりとひどい出来だぞ!

気になる点

  • 有料!
  • ツリービュー(フォルダ)/リストビュー(ファイル)が別々! 惜しい!
  • キーボードでのドキュメント/ペイン間移動が基本的にできない。たまにできるけど絶対実装じゃない。
  • プレビューのCSSがプリセットからの選択しかできない。
    • しかも、プリセットのCSSだと、テーブルが全部ボーダーなし。そんなばかな。

まだ色々怪しいぞ……

2014-05-28 追記:Ver1.2

  • Select in Navigatorが機能することを確認
  • ⌘Deleteの削除は相変わらずできない
  • Duplicate as ◯◯での形式変換は常にできるようになったような?

使用感

1800円払ったからというのもありますが、現状のメインエディタになっています。
マークアップ関係はかなり賢い感じがします。また、改行の反映が実にうれしい。
Organize Filesの一言もいいですね。曲がりなりにも画像ファイルを扱えるのは助かります。

地味にSDI&シングルクリックオープンが決め手だったかも。他にScrivenerだのTreeだのを併用してることもあり、複数のドキュメントを開くことがほぼないんですよね。 無料のLightPaperはMDI&ダブルクリックオープンなので、それを考えると……個人的にはまあ、1800円なら買いだったかなあ。

とはいえ、こないだまでβだっただけあり、全体的に挙動は怪しめ。強制終了とかデータ吹っ飛ばすとかヤバめの事故はまだありませんが、「それ実装じゃないよね!?」という挙動にしばしば出くわします。

まとめると、LightPaperで満足できない場合や、iOSアプリで連携したい場合は買いでいいんじゃないでしょうか? なお、LightPaperのモバイルアプリはなぜかAndroidオンリー。Mac Appなのになぜ……?