マークアップ形式のテキスト変換

いろいろなマークアップ形式で書かれたテキストを、 目的に応じたテキストに変換するためのメモ

md(markdown)形式で書かれたテキスト

スライドを作成する

  • visual studio codeを用いる場合 おなじみmarpを使い、frontmatterに以下を追加するだけ
---
marp: true
theme: gaia
size: 16:9
---

ここで作成したpptファイルはpptから編集できないそうですが、 cl版のmarpを使えば編集できるそうです。

  • pandocを用いる場合

(1)ppt形式に落とす

1pandoc -f markdown -t pptx -o hogeFUGA.pptx src.md

以下のoption使うとpptのテンプレートに落とせるそうですが、 テンプレートに仕掛けがいるようなので未検証です。

--reference-doc=template.pptx

(2)beamer形式:一旦TeXに落としてから、ブリアンブル編集してcompileする方が平和のようです。

1pandoc -f markdown -t beamer -o hogeFUGA.tex src.md

pdflatex用に書いた英文のみの原稿なら、直接出力できるかもしれません。

以下のように紹介しているサイトもあるようですが、私の場合ではErrorになり直接出力できませんでした。

1pandoc -f markdown -t beamer -o hogeP.pdf src.md --pdf-engine=lualatex -V documentclass=jlreq

Emacs上では、htmlにexportできます。

org形式で書かれたテキスト

(md形式に変更) github-actionsで対応するようになったので変換不要!!!!Happy!!

Emacsからexportします。

  • 方法1:: Hugo/github-actionsで用いるため、ox-pandoc(Emacs)経由でgfm形式として出力するのが平和!

src Rが ``` rとなり、プログラム言語として表記。frontmatterがつく

アンダーバーや大小の記号にはバックスラッシュが付けられる

  • 方法2:: Hugo-compatible-markdownでexport frontmatterに#+HUGO_BASE_DIR: ./の指定必要

セクションヘッドにlinkがつけられる。
セクション記号のアスタリスクが1つずつ増える(セクションレベル下がる)。
example環境がtext環境として出力される
<!–list-end–>のタグが入る。

  • emacs:gfmでexportすると Rとなるが、frontmatterなし
  • Emacs:markdownとしてexportしたら(ox-md?)、src環境が、```もなく、全てpre環境になり、言語指定も落ちる
  • pandocで直接変換(comamnd line)したら、begin_src rとしている言語指定(r)の変換が ```{.r org-language="R"}となる。 man pandocすると、rと{.r}は等価,fenced_code_attributesと紹介とされているが、hugoでhtml表示した時、単なる<pre>となり、言語指定外れる。

スライドを作成する

  • EmacsのexportでLatex/Beamer形式で出力

exportされたファイルのコンパイルオプションを変更。(pdfLaTeX用で出力されているため)
必要なpackage追加や必要な修正加筆を行って、コンパイル

  • pandocを使って出力先にpptxとしたらできると思いますが未検証

html形式で書かれたテキスト

(md形式に変更する):Github/actionsでOrg対応できるようになったので、不要かも..

昔htmlタグを用いて作成したファイルをHugo/Githubで用いるためにmdに変換する。

  • 方法1:: pandoc -t markdownで出力。gfmはidタグ落ちるので不適,m*{_strict|mmd}も不適
  • 方法2:: 言語ソースを指定したいときはorgに一旦変換して、必要な編集を加筆実行。

preタグはexampleになっているので、src hogeと変更する。その後orgを上記Emacs:pandoc/gfmで出力。

org形式にして、手動で編集しましょう。

asciidoc形式で書かれたテキスト

includeを使えるので、とっても便利なのですが、github/actionsでweb表示するには いろいろ知識が必要なようです。

asciidoctorでhtmlにしてから、mdにするとき以下の点に留意。

asciidocでリンク先にセクションを使用していると、 pandocで変換時にリンクタグのアンダーバーのせいでおかしくなるようです。 (cssがないため?)

md形式に変更する

  • orgに一旦変換する。 custom_idとなっているタグが、mdに反映されない場合有り。 タグからアンダーバーと数字を全て削除し、

    <<tag>>
    

    の形式で適当な箇所に手動追加。custom_idのpropertyブロックも削除。 exampleをsrcなどに加筆修正。

その後、Emacs-pandoc-gfmとして変換。

  • markdownで出力すると、md-html変換後ではリンク先は、id=sec2-_sec2、リンク元は_sec2などとなり不一致。また、idタグが表示されてしまいブサイク。
  • gfmは不適。link落ちて、srcはhighlightになる。

注意事項

改ページ記号が、mdでは—(ハイフン3つ),orgでは*(アスタリスク)なので、 スライドに変換後に不具合が生じることがあるので、適当に修正が必要。

変換スクリプト

 1#! /bin/bash
 2
 3ext="html"
 4fn=$(ls *$ext)
 5ext_o="md"
 6o_type="org"
 7o_type="markdown"
 8o_type="gfm"
 9
10for d in $fn ; do
11echo $d
12##pandoc $d -f $ext -t $o_type -o ${d%$ext}$ext_o
13#pandoc ${d%$ext}$ext_o -f $o_type -t $ext  -o $d$ext_o$ext
14#変換後htmlに再変換して修正確認するために、拡張子htmlは残す
15#-sにすると、md用のfrontmatter追加してくれる
16pandoc -s $d -t $o_type -o ${d}.$ext_o
17pandoc ${d}.$ext_o -f $o_type -t $ext -o $d.$ext
18done