Markdown原稿を一瞬で組版する「FindChangeByList.jsx」
これまで「Markdown→InDesign」は、Pandocを使ってICMLを通過させてきました。
画像も読み込めるので最強な反面、数ページの原稿の場合には逆に手間がかかります。
検索置換のクエリーを順番に適用させていたのですが、もう少しシステマチックに運用していこうと思い立ったとき、Uske_Sさんのブログ記事を見つけました。
「FindChangeByList.jsx」は、InDesignに元から用意されているスクリプトで、「FindChangeList.txt」という設定ファイル内の検索置換クエリーを順番に実行します。
ありがたいことに、Uske_SさんがMarkdown用のサンプルを用意してくだっさっています。
各行は次のような構成になっています。正規表現での検索置換の設定をテキスト化したものと言えます。
これを元に、ガッツリと作り込んでみたところ、数秒で完了できるようになりました。ビューティ。
ちなみにスクリプトの実行時には、次のダイアログボックスが出て適用範囲を指定します。
Document:ドキュメント
Selected Story:選択しているストーリー
Selection:選択範囲
Markdownについては、こちらの記事もご覧ください。
前提となるInDesignの段落スタイル/文字スタイル
前提として、InDesignの段落スタイル/文字スタイルの整備が重要です。
案件ごとに都度スタイル名を付けるのではなく、共通のスタイルを用意しておくとラクです。
Word互換のスタイル名にしておくのもよいでしょう。
追加した設定
すべてではありませんが、考え方の道筋として。
番号リスト
^\d+\.\s(.+)
行頭に「1. 」など(2桁以上も)
段落スタイル「ol-li」を適用
grep {findWhat: "^\d+\.\s(.+)"} {changeTo: "$1", appliedParagraphStyle: app.activeDocument.paragraphStyles.item("ol-li")} {}
引用(ブロック)
^> (.+)
行頭に「> 」
段落スタイル「p.blockquote」を適用
grep {findWhat: "^>\s?(.+)"} {changeTo: "$1", appliedParagraphStyle: app.activeDocument.paragraphStyles.item("p.blockquote")} {}
リンク
\\[(.+)\]\((.+)/\)
[テキスト](リンク)
段落スタイル「link」を適用し、テキスト <リンク>に変換
grep {findWhat: "\[(.+)\]\((.+)/\)"} {changeTo: "$1 <$2>", appliedCharacterStyle: app.activeDocument.characterStyles.item("link")} {}
画像
画像のプレースホルダー(配置用の“空”のボックス)を用意し、カットしてから実行します。
\[(.+)\]\((.+)/\)
![](画像のパス)
段落スタイル「p.img」を適用し、「画像+改行+画像のパス」に置換
grep {findWhat: "^!\[\]\((.+)\)"} {changeTo: "~C\r$1", appliedParagraphStyle: app.activeDocument.paragraphStyles.item("p.img")} {}
箇条書き
Markdownでは行頭に「- 」のほか、「* 」「+ 」もサポートしています。
さらにMarkdown記法を使わず、「・」(全角の中黒)を使う人にも対応できるようにしておくとよさそうです。
^\* (.+)
^\+ (.+)
^・(.+)
キャプション
HTML(Markdown)には「キャプション」というボキャブラリーがありません。
おそらく使うことのないh6(######)を擬似的に使う方法もありますが、直近の案件ですと、次のような原稿が届きました。
<!-- キャプション -->写真の説明文<!-- /キャプション -->
[キャプション]写真の説明文
▲写真の説明文
「キャプションはこのように記述して」と事前にアナウンスして、それに準じていただくのが理想ですが、なかなか厳しいですね…
ご参考
次のようなシートを作って管理しています。
使い分けはどうするの?
「FindChangeByList.jsx」を使っていくと、「FindChangeList.txt」の使い分けが必要になってきます。
「FindChangeList.txt」があれば、そのファイルが読まれるので、都度、名称を変更してもよいのですが、非常に面倒です。
「FindChangeList.txt」を「FindChangeList-markdown.txt」のようにリネームしてしまうのがよさそうです。
運用
「FindChangeByList.jsx」を実行すると、まず、適用先を聞かれます。
その後、「どのfind/change listを実行しますか?」と聞いてきますので、選択して[開く]ボタンをクリックして進められるようになります。
Word互換のスタイル名に対応する
適切にスタイルを設定したWordドキュメントをInDesignに読み込むと、たとえばMS Wordの「標準」スタイルはInDesignでは「Normal」という段落スタイルになります。
事前にInDesign側でその段落スタイルを準備しておけば、自動的にマッピングされます。
次のように一括で変換できるようなクエリーを用意しておくとよさそうです。
text {appliedParagraphStyle: 'p'} {appliedParagraphStyle: 'Normal'} {}
text {appliedParagraphStyle: 'h1'} {appliedParagraphStyle: 'Heading 1'} {}
text {appliedParagraphStyle: 'h2'} {appliedParagraphStyle: 'Heading 2'} {}
text {appliedParagraphStyle: 'h3'} {appliedParagraphStyle: 'Heading 3'} {}
text {appliedParagraphStyle: 'p.blockquote'} {appliedParagraphStyle: 'Quote'} {}
このようなExcelシートを用意しました。
参考記事
ダウンロード
ここから先は
DTP Transit 定期購読マガジン
マガジン限定記事やサンプルファイルをダウンロードできます。
定期マガジンを購読されるとサンプルファイルをダウンロードいただけます。 https://note.com/dtp_tranist/m/mebd7eab21ea5