任意のパスから参照する方法を探した。
成果物
AsciiDoctor.CSS.Stylesheet.Setting.201705171236
前回まで
今回
CSSを外部化して任意の相対パスから参照する方法を模索した
| 内容 | パス |
|---|---|
| 外部CSSを参照する | ./stylesheet/set |
| CSSを使わない(デフォルトも。HTMLのみ) | ./stylesheet/unset |
| 内容 | パス |
|---|---|
| adocファイルより下位ディレクトリのCSSを参照する | ./stylesheet/set/ref_child |
| adocファイルより上位ディレクトリのCSSを参照する | ./stylesheet/set/ref_parent |
| 内容 | パス |
|---|---|
| 上位CSSを参照するときrootからAsciiDoctorを実行する(失敗) | ./stylesheet/set/ref_parent/run_root |
| 上位CSSを参照するときadoc同一パスからAsciiDoctorを実行する | ./stylesheet/set/ref_parent/run_this |
| 内容 | パス |
|---|---|
| 属性にてCSS参照パス設定する | .../byAttribute/ |
| コマンド引数にてCSS参照パス設定する | .../byCommand/ |
どの方法を使うか
おそらく実際にサイトを作るときは以下のような構造になる。
このことから、/stylesheet/set/ref_parent/run_this/byCommand/ の方法を使って動的に相対パスを渡してasciidoctorコマンドを実行することになるだろう。
rbenv exec asciidoctor -a linkcss -a stylesheet=test.css -a stylesdir=../../../../../css/ test.adoc
全ファイル一括処理するために
- ルートディレクトリから
.adocファイルを検索する - 1のパスへ
cdコマンドで移動する - 上記の
asciidoctorコマンドを実行してHTMLを出力する- ルートからの相対パスで
-a stylesdir=に渡す値を決める
- ルートからの相対パスで
- 全
.adocファイル分くりかえす
この手順で全HTMLを同一の外部CSS参照させることができるはず。