Csspage1 2014-06-22

1,283 views

Published on

Csspage1 2014-06-22

  1. 1. 構造とスタイルの分離 っていったい CSS 組版とその周辺 第 1 回勉強会 2014.6.22 鹿野 桂一郎 k16.shikano@gmail.com golden_lucky
  2. 2. 内容 s ドキュメントの構造とスタイルを分離す るのは無条件に正義 s で、その方法は? s でも、ドキュメントにとって重要なのは 構造だから、スタイルを付ける方法は何 でもいいんじゃないの? 注意:この発表は事例紹介でも研究発表でも技術提案でもありません。私見に基づいた雑 感であり、無邪気な思い違いや妄想が含まれているかもしれませんが、議論の呼び水にな ることを期待しています。
  3. 3. 昔、FrameMaker でマニュアルとか作っ ていました s DTP ソフト的な使い方が中心だけど、 DTD を外注するとかはしてた s DTP 実務には基本ノータッチだったの で、どこまでやってたかは知らない
  4. 4. 出版社に転職したら、紙ゲラに入れた赤 字を DTP オペレーターに絵として修正し てもらっていた s 制御できない r grep できない、フィードバックを得にくい、 全体に目を通す機会しかない s 管理できない r diff とれない、バージョン管理できない、共 有困難
  5. 5. 原稿はマークアップされたテキストデー タなので、HTML に変換して CSS を当て ればゼロ校を内製できるのでは? s これを著者向けの初校にすれば手戻りが 数回稼げる! r 当時の Web ブラウザは日本語の均等割り付 けとかサポートしてなかったので見た目はい まいちだった s 著者の赤字を反映したマークアップテキ ストを制作会社に入稿して DTP 化。その 後、再校で印刷所入稿できるレベルに
  6. 6. でも、このゼロ校の HTML 原稿、そもそ も DTP ソフトで組んでもらう必要ってあ るの? 常時バージョン管理してる HTML 原稿を LATEX に変換して、 印刷所入稿データまで 内製してみよう
  7. 7. なんで LATEX を使ったか s 事前許可を会社からもらえる見込みが ない r 有料版でしか印刷所入稿データが作れない ツールは無理 r 書籍や Web で十分な情報が得られる s 多少使えた
  8. 8. なんで LATEX を使ったか s 事前許可を会社からもらえる見込みが ない r 有料版でしか印刷所入稿データが作れない ツールは無理 r 書籍や Web で十分な情報が得られる s 多少使えた s 今にして思うと、LATEX で正解だった r 良くも悪くもページメディア向けに異常に発 達している
  9. 9. そもそもスタイルと構造を分離するのは、 「メディアに依存せずにコンテンツを扱い たいから」 s スタイル ≡ メディアに応じて変化する 部分 s スタイルの都合で構造がお仕着せになる のいや
  10. 10. 構造とスタイルが分離されていれば、書 き手は構造に集中し、あとで好きなスタ イルをあてられる?
  11. 11. 構造とスタイルが分離されていれば、書 き手は構造に集中し、あとで好きなスタ イルをあてられる? s うそ、とはいわないまでも、びみょう
  12. 12. 構造とスタイルが分離されていれば、書 き手は構造に集中し、あとで好きなスタ イルをあてられる? s うそ、とはいわないまでも、びみょう s 構造にスタイルをあてる「方法」は、そん なにお手軽じゃない s なので通常は、「構造 × スタイル × 構造変 換の仕組み」がセットで提供される r XHTML, CSS, JavaScript r XML, HTML, XSL r LATEX , cls ファイル, TEX マクロ r Re:VIEW, InDesign, Ruby
  13. 13. 自分はこんなふうにやっています(でき ればデモ) s 構造からスタイルへのマッピングを、 宣言的に定義したい r たぶん CSS も同じ発想 r それを XHTML → LATEX でやりたい
  14. 14. 自分はこんなふうにやっています(でき ればデモ) s 構造からスタイルへのマッピングを、 宣言的に定義したい r たぶん CSS も同じ発想 r それを XHTML → LATEX でやりたい s 「構造 × スタイル × 構造変換の仕組み」 でいうと、XHTML, LATEX , Scheme
  15. 15. xml2tex での「スタイル指定」例 (define-tag p (when-lang "ja" (define-rule "" trim "nn") "en" (define-rule "{small" trim "}nn") else (ignore))) (define-tag br (define-rule "" "" (lambda () (cond (($under? ’(table h1 h2)) "newline ") (($under? ’(pre)) "n") (else ""))))) (define-simple-rules make-latex-cmd footnote emph textit texttt text textbf) 詳しくは https://github.com/k16shikano/xml2tex/wiki/Tour で。
  16. 16. define-rule で、スタイル対応付けの ルールを定義 s ある構造の「始まり」「途中」「終わり」の 処理だけ書く s その処理を書く際に木構造を簡単に活用 するための Lisp マクロを用意 r ($parent)、($under? ’(ul)) r ($ ’foo) とするだけで foo 属性の値が手 に入る
  17. 17. CSS として「構造から LATEX へのマッピン グ」が書けるか
  18. 18. CSS として「構造から LATEX へのマッピン グ」が書けるか s とりあえずトイ実装し始めてみた r https://gist.github.com/ k16shikano/0d1bc27b010fbfeac397 r グローバルなレイアウト指定/局所的なレイ アウト指定は、がんばればなんとかなりそう s レイアウトモデルの違いをどう吸収? r CSS はボックスモデル、TEX は段落モデル r ページにうまく収められないボックスをどう あつかうのか s テーブルつらそう(CSS に限らないけど) s 擬似要素とか関数とか
  19. 19. そもそもどこまでがスタイルの範疇? s 要素の配置 s ある種の要素そのもの r 箇条書きの番号 r ノンブル、柱、ツメ、背景 s 構造ともみなせる? r 章の最初の段落だけ大きくとか r 擬似要素(:first-line とか)
  20. 20. というわけで CSS組版が気になります!

×