Org-mode A/B test

Table of Contents

1 速習 org to html

org-modeは、標準装備。簡単にhtmlファイルを作成出来る。.emacs.d/init.elに追加しとく 

(setq org-startup-truncated nil)
key Desc
TAB 畳み込みと展開
C-c C-l リンクの作成、編集
<eTAB ブロックの挿入
C-c C-e h h htmlファイルの作成
C-c C-e h o htmlをブラウズ

piki.css と base.org を用意した。同一階層に置いて、base.orgを編集後、htmlを作成すると、base.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の事も忘れないでねって、心の片隅で言っているんで、記念に、両者の原稿をアーカイブしておきます。

PikiとOrgの原稿

4.3 末尾のささいな事

htmlを作成すると、ページの末尾に、emacsのバージョンやらorgのバージョンとかリンクが作成される。拡販希望なんだな。オイラーはWindows10上で、emacsを物書き用としてしか使っていない。よって、世の中のバージョンから取り残されている。

動くなら、動かすな、じゃなくて、動いているなら、手を入れて壊すなって先人の教えを忠実に守っているのさ。何せ、Windowsは、知らないので手をかける気にもならんし、unixと思って使うと腹が立つ事ばかりですから。

それから、最後の所にバリデータ用のリンクが有る。クリックしてみるとエラーになったので、指示通りに潜って行ってURLを張り付けたら、W3Cのお墨付きを貰った。誇らしげ、W3Cのアイコンを貼ってもいいよって言われたけど、ご辞退。

CSSのチェックも出来るんで、やってみたら、大きなフォントは許されないとか言ってきた。 そんなフォント指定してないんだけどな、ふぉんとに困っちゃう(単に駄洒落を言ってみたかっただけです)。

そもそも、フッターなんて必要無い人はどうする?

# #+OPTIONS: toc:nil
#+OPTIONS: html-postamble:nil

そだね。tocのオプションは冒頭のシャープサインで無効にしてるけど、有効にすれば、冒頭の目次を出さなく出来る。まあ、それをやっちゃったら、orgで作りましたって証拠が消えるから、好ましくないと思うけど。。。


This year's Index

Home


Created: 2020-04-23 木 06:14

Emacs 25.1.1 (Org mode 8.2.10)

Validate