2022年3月22日火曜日

pandoc(1)

マークダウン(2)からの続き

マークダウンの使い方をみていると,コマンドラインベースで各種のドキュメントを相互に変換することができる,pandocとの相性が良いらしい。ということで,pandoc をインストールしようとしたら,すでに homebrew で導入済みだった。念のために,brew reinstall pandocで,pandoc 2.17.1.1が入った。

変換できるファイルの種類のカテゴリーは,次のように多岐に渡る。Lightweight markup (.md),HTML (.html),Ebooks (.epub),Documentation,Roff,TeX (.tex),XML,Outline,Word processor (.docx), Interactive notebook (.ipynb),Page layout,Wiki markup (MediaWiki),Slide show (beamer),Data (.csv),Custom,PDF (.pdf)

厄介なことにマークダウンに関しては微妙に異なった方言が存在するのでなんだか意図した結果が出てこないと思っていたが,記法のミスだった。(1) 見出し,(2) 箇条書き,(3) 番号付き箇条書き,(4) 書体,(5) コード,(6) 数式,(7) 表,(8) 画像,(9) リンク,(10) 脚注 などが概ね機能している。見出しのレベルがまだはっきりわからない。番号付きリストの半角空白は3個にした。

iconv -f UTF-8-MAC -t UTF-8 test.md | pandoc -f markdown -o test.pdf -V documentclass=ltjarticle --pdf-engine=lualatex

上記が,macOS での pandoc の使用例である。入力ファイルは test.md,出力ファイルは test.pdf である。pdf 出力のためには lualatex を通す必要があることと,ファイルは標準の(macOS標準ではなく)UTF-8 形式にしておく必要があるのでiconvで漢字変換したものをpandocに食わせている(pdfファイルで濁点が分離してしまうのを防ぐらしい)。

.zshrcにパスを通して,md2pdf.sh という実行可能なシェルスクリプトを作ったので,引数を1つ指定すると,md2pdf.sh test1 のようにmdファイルからpdfファイルが生成できるようになった。

以下が,マークダウンファイル,test1.md の内容である。

# 見出し1(Title)
ここが段落の文章になる改行しても無視される 
空行があるためこの文章は第二段落となる

## 見出し2(Chapter)
これでは
あれでは

### 見出し3(Section)

#### 見出し4(Subsection)

- リストA
- リストB
  - 子リストB-a
    - 孫リストB-a-a
- リストC

- リストの文章1です。

  行の頭に半角スペースが二つあるので,
  リストの内部要素です。

- リストの文章2です。

行の頭に半角スペースがないので新しい段落です。

1. 番号付きリスト A
   1. 番号付き子リスト A-a
   1. 番号付き子リスト A-b
      1. 番号付き孫リスト A-b-α
      1. 番号付き孫リスト A-b-β
      1. 番号付き孫リスト A-b-γ
   1. 番号付き子リスト A-c
1. 番号付きリスト B

*italic* **bold** ***italic+bold***

\`inline_code\`

\`\`\`
display style code block
function test(a,b) {
return a+b;
}
\`\`\`
\$\int_{-\infty}^\infty e^{-\alpha x^2}dx = \sqrt{\frac{\pi}{\alpha}}\$

\$\$
\int_{-\infty}^\infty e^{-\alpha x^2}dx = \sqrt{\frac{\pi}{\alpha}}
\$\$

|項目1|項目2|項目3|
|---|---|---|
|りんご| 10円| 3個|
|みかん| 50円|10個|
|いちご| |売り切れ|
|バナナ|100円| 2本|

[リンク先 https://pandoc.org/ をクリック](https://pandoc.org/)

画像![ALT これはアイコンです](sample.png)も表示させられます。

Markdown エディタ NowType は Ito によって作られ た。 [^1]

NowTypeにおいては、次のような入力支援を行います。

[^1]: Atsushi M. Ito, プラズマ・核融合学会誌, vol. X, No. Y, 2020.

0 件のコメント: