Org-mode A/B test
Table of Contents
1 速習 org to html
2 org-mode
これは、前日のpiki形式で書いた原稿に一部加筆して、org形式に変換したものです。興味なかったら、読み飛ばしてください。
2.1 why
何故注目したか? 今まで、このページをpikiってスタイルで書いていた(10年間もね)。元々は、haskellに目覚めた方がmarkdown似の文法を、独自に実装したものだ。
変換器でhtmlにするんだけど、この変換器を作るにはhaskellが必要。今使ってる変換器が壊れてしまったら、haskellをインストールして、コンパイルし直さなければならない。Maybe ok だろうけど、もしも作成出来なかったら右往左往。
そんな訳で、Orgモードで何とかならないかの確認だ。用心に越した事はないからね。
2.2 manual
色々な人が紹介してるけど、一次情報って事で
["Org Mode マニュアル" https://takaxp.github.io/org-ja.html]
そして、利用の勘所
["モーレツ! Org mode 教室" http://www.mhatta.org/wp/category/emacs/org-mode/]
2.3 how to use
org-modeで書いた原稿をhtmlに変換する方法を、まず確認しておく。原稿はサフィックスにorgを付けておくと、開いた時点でorgモードになってる。
書き終わったら、セーブして、C-c C-e h h するだけだ。これで、xxx.orgって原稿が、xxx.htmlに変換される。たったこれだけだ。
C-c C-e は、orgを他の書式にエクスポートするって言う分かり易いキーバインド。次の h h はどんな形式でどうするを指定する。h o すると、htmlファイルに落として、それをブラウザーで開いてくれるので便利だぞ。C-c C-eした時に表われる案内。
Use SPC, DEL, C-n or C-p to navigate. [C-b] Body only: Off [C-v] Visible only: Off [C-s] Export scope: Buffer [C-f] Force publishing: Off [C-a] Async export: Off [h] Export to HTML [H] As HTML buffer [h] As HTML file [o] As HTML file and open [t] Export to Plain Text [A] As ASCII buffer [a] As ASCII file [L] As Latin1 buffer [l] As Latin1 file [U] As UTF-8 buffer [u] As UTF-8 file [&] Export stack [#] Insert template [q] Exit
他にもLaTexとか有ったけど、取る合えず使いそうなものだけ抜粋。C-c C-e t a ってやると、Plainなファイルに落とせるなんて事が分かる。
emacs -Q xxx.org --batch -f org-ascii-export-to-ascii
とやるのと一緒の事だ(xxx.txtが作成される)。
2.4 畳んで、開いて
Orgの特徴は、文書を構造化して、編集を効率化するって事に主眼を置いているらしい。注目してる部分を拡げて編集とか、章を入れ替えようとか。昔流行った、アウトラインの流れを汲んでいるらしい。
必然的に、markup系になるわな。htmlもしかり。★一つが大項目。★が増えれば項目が細分化してく。
星の所にカーソルを合わせてTABを叩くと、配下を展開、もう一度TABすると、全展開。更にTABすると、展開止めて元に戻る。
これ、展開されてる部分だけに注目出来るんで便利。最初、項目を決めちゃえば、書き忘れにもなるしね。
2.5 pikiとの互換性
オイラーが多用してるリンク。そのままでも何とか見られる代物だった。問題は、コマンドの実行結果とか、ソースを表す、矩形区切りの部分。これを、どう置き換えるか?
12.5.7 HTMLエクスポートでのテキストエリア >| ... ... |< #+BEGIN_EXAMPLE -t -w 40 ... ...
#+ENDEXAMPLE 上段はpikiでの指定。下段は、orgでの指定。-tを付けておくと、矩形になる。更に-wで横幅を指定出来る。
2.6 table(表)
余り使わないけど、作成は簡単。
|name|age|tel(RET) |-(TAB)
縦棒で区切ってどんどん入力。行の最後でRETする。次行で縦棒-してからTABキーすると、下記のようになる。
| name | age | tel | |------+-----+-----| | | | |
後はどんどん入力してTABで次の項目に移れる。勝手に横幅を揃えてくれる(右寄せ)。
| name | age | tel | |----------+-----+--------------| | tanake | 23 | 011-123-4567 | | fudafuda | 100 | 222-123 | |----------+-----+--------------|
余り、頻繁には使わないと思うけど。
name | age | tel |
---|---|---|
tanake | 23 | 011-123-4567 |
fudafuda | 100 | 222-123 |
こちらは、org-mode流の最終結果。
2.7 css
デフォルトで色々なcss(主にprogramming言語用)が出力されるので、鬱陶しい。そこで、そいつらを規制して、自前のやつを取り込む。
#+OPTIONS: html-style:nil #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="piki.css" />
もう一つ鬱陶しいのにjavascriptが有るけど、こやつはどうやって禁止出来るのだろう。infoを見る限り、何時も付いて回るって書いてある。
2.8 where is H1 tag
htmlファイルにしてつらつらと出来栄えを眺めていると、★一つの見出しがH2なタグになってる事が分かる。そんじゃ、H1タグは?
#+TITLE: change to org
こんな具合にタイトルが、H1タグに割り当てられてました。納得です。
2.9 link
pikiでは、リンクを鍵カッコの中に書く。最初は文字列による説明。スペースを1個空けてからURLって決まり。haskell由来なので、形式には厳しい。
orgではどうよ? 前記のモーレツに説明が有ったので、引用させて頂く。
Org modeではリンクも簡単に張ることができる。そもそも https://www.mhatta.org/wp/ と いった具合で、ただURLを書けばすぐにリンクになる。最初は面食らうかもしれない。 説明をつけたければ C-c C-l である。まずリンクを入力し、次いで説明を入力する。 するとリンクが挿入される。私のブログ といった具合である。リンク上でもう一度 C-c C-l を打つと編集できる。また、リンク上で C-c C-o を押すとWWWのURLならブラウザ、 PDFファイルならPDFビューワといった具合で、適切な手段で開いてくれる。
へぇ、分かり易いキーバインドな。
Link: ./DATA/hoge Description: this is data
実際にC-c C-lすると、mini-bufferに上記のような質問が出て来るので、それに応答する。例だと、
<a href="./DATA/hoge">this is data</a>
こんなリンクが作成される。httpで始まる物以外でもおkって事ですね。
2.10 Tips
orgモードは、行の折り返しが無い。まさかね? そんなの、init.elに書いて、折り返しするように設定しとけ。
;; org-mode (setq org-startup-truncated nil)
後、ブロックを指定するのが、面倒なんですが。。。<e(TAB)で、exampleに展開される。その他に、<q(TAB)とか、<s(TAB) なんかでもOK。たった一行の場合は、冒頭に : を置けばよい。
3 source読め
この際だから、orgのソースを拝んでおく。
-rw-r--r-- 1 root root 3246 Dec 16 2018 ob-ruby.el.gz -rw-r--r-- 1 root root 1216 Dec 16 2018 ob-sass.el.gz -rw-r--r-- 1 root root 3075 Dec 16 2018 ob-scheme.el.gz -rw-r--r-- 1 root root 260794 Dec 16 2018 org.el.gz -rw-r--r-- 1 root root 8704 Dec 16 2018 org-entities.el.gz -rw-r--r-- 1 root root 1083 Dec 16 2018 org-eshell.el.gz -rw-r--r-- 1 root root 2427 Dec 16 2018 org-eww.el.gz -rw-r--r-- 1 root root 68902 Dec 16 2018 ox.el.gz -rw-r--r-- 1 root root 35718 Dec 16 2018 ox-html.el.gz -rw-r--r-- 1 root root 10817 Dec 16 2018 ox-icalendar.el.gz
こんな風に、接頭語で3種類にソースが分かれている。
最初のob-系は、
;;; ob-scheme.el --- Babel Functions for Scheme -*- lexical-binding: t; -*\- ;;; Requirements: ;; - a working scheme implementation ;; (e.g. guile https://www.gnu.org/software/guile/guile.html) ;; ;; - for session based evaluation geiser is required, which is available from ;; ELPA. ;;; Code: (require 'ob) (require 'geiser nil t) (require 'geiser-impl nil t)
このようになってた。そう、よそのパッケージを利用して、source-blockに置いたソース片をその場で実行出来ますってのが売り。文芸的なプログラミングを実現するんだな。 Babelってバベルの塔、摩天楼、意味深であります。深入りしない方が良さそうです。
次のorg-系は、いわゆる本体系ね。色々な人の協力で構成されてる。ちょい見してたら、org-ctags.elなんてのが有った。ダブル三角括弧でリンクを作っておくと、勝手にetagしてくれるみたい。何でも症候群の香りがするぞ。
そして、3番目のox-系は、エキスポート系になるな。ox-man.elなんてのが標準で入っていた。
; This library implements a Man back-end for Org generic exporter. ;; ;; To test it, run ;; ;; M-: (org-export-to-buffer 'man "*Test Man*") RET ;; ;; in an Org buffer then switch to the buffer to see the Man export. ;; See ox.el for more details on how this exporter works.
manの系統にも輸出出来るんだ。なんかM$もけつまくって逃げ出すような、てんこ盛り状態。更にELMAあたりを漁れば、3つの系統が山ほど出て来る。もう、誉めるしかないな。
4 org-modeの出来栄え
で、気になるのは、出来栄え。firefox基準なので、問題なく見られれば良しとしよう。 後は、ぐぐる系のやつね。それからテキスト系のw3m。
Xも自由にならないテキストだけの世界(Debian 32Bit)で試したら、C-c C-e h o ね。 w3mを起動しましたって出てきたけど、どこにw3mは居るのよ? tmuxが障害になってるの? いや、別な窓を開いて、そこにw3mを張り付けているんだろうね。すなわちXは上がっているけど、訳あってfirefoxとかを入れていない人向けだな(多分)。
-rwxrwxrwx 1 sakae sakae 11582 Apr 22 06:01 aa.html* -rwxrwxrwx 1 sakae sakae 10360 Apr 22 06:00 aa.piki* -rwxrwxrwx 1 sakae sakae 20259 Apr 22 06:03 ee.html* -rwxrwxrwx 1 sakae sakae 12674 Apr 22 06:03 ee.org*
こんな具合に、原稿に対して、結構太ったファイルが作成される。でも、このorg-modeの使い心地が良いと思うので、orgに乗り換えるかな。長年お世話になったpikiの事も忘れないでねって、心の片隅で言っているんで、記念に、両者の原稿をアーカイブしておきます。
4.1 gas (piki流)
["gas" http://capm-network.com/?tag=GAS]
["アセンブラ GNU as の基礎知識" https://www.mztn.org/slasm/arm07.html]
["X86アセンブラ/GASでの文法" https://ja.wikibooks.org/wiki/X86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9/GAS%E3%81%A7%E3%81%AE%E6%96%87%E6%B3%95]
4.2 gas (org流)
4.3 末尾のささいな事
htmlを作成すると、ページの末尾に、emacsのバージョンやらorgのバージョンとかリンクが作成される。拡販希望なんだな。オイラーはWindows10上で、emacsを物書き用としてしか使っていない。よって、世の中のバージョンから取り残されている。
動くなら、動かすな、じゃなくて、動いているなら、手を入れて壊すなって先人の教えを忠実に守っているのさ。何せ、Windowsは、知らないので手をかける気にもならんし、unixと思って使うと腹が立つ事ばかりですから。
それから、最後の所にバリデータ用のリンクが有る。クリックしてみるとエラーになったので、指示通りに潜って行ってURLを張り付けたら、W3Cのお墨付きを貰った。誇らしげ、W3Cのアイコンを貼ってもいいよって言われたけど、ご辞退。
CSSのチェックも出来るんで、やってみたら、大きなフォントは許されないとか言ってきた。 そんなフォント指定してないんだけどな、ふぉんとに困っちゃう(単に駄洒落を言ってみたかっただけです)。
そもそも、フッターなんて必要無い人はどうする?
# #+OPTIONS: toc:nil #+OPTIONS: html-postamble:nil
そだね。tocのオプションは冒頭のシャープサインで無効にしてるけど、有効にすれば、冒頭の目次を出さなく出来る。まあ、それをやっちゃったら、orgで作りましたって証拠が消えるから、好ましくないと思うけど。。。