やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

AsciiDoctorにて外部CSSを参照する

任意のパスから参照する方法を探した。

成果物

GitHubAsciiDoctor.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コマンドを実行することになるだろう。

  • root/
    • css/
    • stylesheet/set/ref_parent/run_this/byAttribute/
      • run.sh
      • test.adoc
rbenv exec asciidoctor -a linkcss -a stylesheet=test.css -a stylesdir=../../../../../css/ test.adoc

全ファイル一括処理するために

  1. ルートディレクトリから.adocファイルを検索する
  2. 1のパスへcdコマンドで移動する
  3. 上記のasciidoctorコマンドを実行してHTMLを出力する
    • ルートからの相対パス-a stylesdir=に渡す値を決める
  4. .adocファイル分くりかえす

この手順で全HTMLを同一の外部CSS参照させることができるはず。

所感

一括作成用のシェルまたはPythonスクリプトを書くことになりそう。