5.2 review-pdfmaker from /opt/review/bin/review—pdfmaker : 219 : in ( く main> ' 再度コンパイルする際には、まず手動で PDF (book. pdf) と中間ファイルを収めるディ レクトリ (book-pdf/) を削除してから、再度 review-pdfmaker を実行します。 review—pdfmaker は内部で review—compile——target=latex を行ったあとに plate x や dvipdfmx のような TeX 形式のファイルから PDF へ変換する Re:VIEW 外部のコマ ンドを実行します。 Re:VIEW の外部のコマンドを実行している際には外部のログがその まま標準出力や標準ェラー出力に反映されるため、面食らうかもしれません。 rake で自動化 コンパイル前に bo 。 k. pdf 等を手動で削除する作業は少々面倒です。そこで、 rake コマ ンドで自動化してしまいましよう。 rake コマンドは RubyGems から簡単にインストール できます。 rake コマンドに行わせるタスクは Rakefi1e というファイルに記述します。「 2.2 Re:VIEW をインストールする」の解説のとおりに review- init コマンドを使って環 境を構築していれば、すでに Rakefi1e というファイルが存在し、各種タスクが記述され ています。 Rakefi1e が無ければ作りましよう。リスト 5.3 は pdf のビルドを行う Rakefi1e の簡 単なサンプルです。 ▽リスト 5.3 Rakefile に book. pdf と book-pdf の削除を行わせてしまう一例 gem install rake task desc task SRC file sh sh sh end :default = > :pdf generate PDF file ' :pdf = > "book. pdf" Fi1eListC'* . re'] + ["config. yml"] ”b00k. pdf" = > SRC d0 "rm —f b00k. pdf" "rm —rf b00k book—pdf ” "review—pdfmaker config. yml" このように記述しておくと、 rake コマンドは関連する ReVEW ファイルや conf ig ・ ym 1 に変更があった際に限って削除と review-pdfmaker の実行を行います。 47
第 5 章コンバイルの仕方 なお、一一 help を指定すると、ファイルを読み込んで変換する代わりに対応するオプショ ンの一覧が表示されます。本章で説明されていないオプションも多々あるので、必要に応 じて参照してください。 注意 : review-compile ではそのまま PDF と EPUB は生成できない 現時点では review-compile からは直接 PDF と EPUB 形式のファイルを生成するこ とはできません、 2 。後述する review-pdfmaker と review-epubmaker をそれぞれ利用し てください。 review-compile は主に単一のファイルに対して操作を行う一方、 review-pdfmaker と review-epubmaker は Re:VIEW プロジェクト全体を対象とするため、用途も異なり ます。仮に執筆途中の Re:VIEW ファイルのみ、 PDF によるフォーマットを確認したい 場合、自身で TeX 形式から生成する、あるいは逆に全体を review-pdfmaker で生成した ( 出力省略 ) > review-pdfmaker config. yml イル (config. yml) をひとつ指定します。 review-pdfmaker はそのプロジェクトの PDF を生成します。引数として YAML ファ 5.2 review-pdfmaker あと、該当する章を pdktk 等のコマンドで切り出してください。 /opt/review/bin/review—pdfmaker : 57 : in 'mkdir ' : > review—pdfmaker config. yml v リスト 5.2 すでに PDF を一度作成したあとに再度 review-pdfmaker したときの実行例 Re:VIEW はコマンドの実行を中止します。 クトリに保存します。仮にこれらのファイル・ディレクトリがすでに存在している場合、 途中過程で生成されるファイルを保存した上で、最終的に「 book. pdf 」を自身のディレ book Ⅱ e が「 book 」となっている場合、 Re:VIEW は「 book-pdf/ 」ディレクトリに しておきます。その設定のひとつ「 bookn e 」が出力される PDF に対応しています。 YAML ファイルには本のタイトルや筆者名といった本のメタデータとなる設定を記述 * 2 . /book-pdf (Errno : : EEXIST) Fi1e exists from /opt/review/bin/review—pdfmaker : 57 : in 'main ' --target=epub は圧縮して EPUB 形式とする前のただの HTML を出力します。 46
第 2 章環境を整える Ruby 導入の手引き Windows 編 RubyInstallera を使うとよいでしよう。しかし、 TechBooster では、 Windows 環 境下ではロクな LaTeX 環境を構築できていないので PDF の出力に難があり、素 直に仮想環境を利用しています。 PDF を生成する必要がなければ、試す価値があ るでしよう。 。 http: //rubyinstaller. org/ 23 PDF 出力を準備する PDF 出力の準備をします。 Re:VIEW 文書を PDF に変換するには LaTeX (platex ま たは lualatex など ) を使います。出力時の処理は review 形式→ review ツール実行→ latex 形式→ platex 実行→ PDF という流れです。 Mac OS X の場合 MacTeX*8 を使いましよう。執筆時点では MacTeX 2015 が最新バージョンです。 Linux の場合 texlive パッケ ます。 ージを利用します。 Ubuntu 、 Debian ともに次のコマンドで導人でき $ sudO apt—get install texlive—lang¯cjk texlive¯fonts¯recommended Windows の場合 16 https : //www. tug ・ org/mactex/ * 8 LaTeX 環境の構築の難易度が高いため、 D 。 cker などの仮想環境を使うとよいでしよう。
第 7 章役に立つ豆知識 古い生成ファイルを消す ( 消さないとエラーになる場合がある ) 最低限必要なのは次のコマンドと同様の動作です。 rm -rf artic1es/C89—FirstStepReVIEW-v2-pdf/ \ articles/* . pdf \ articles/* . epub \ articles/* . tml \ articles/* . xml \ articles/* . txt それぞれ、 pdf 、 epub 、 html 、 idgxml (Adobe InDesign 用 XML) 、 text 生成時に作成され る一時ファイルまたは最終出力ファイルです。一番最初の行の C89-FirstStepReVIEW- v2-pdf 部分は articles/config. yml の bookname の設定により変化します。特に、最初の 行は必ず行わないと PDF を生成しようとした時にエラーになるので PDF 生成処理前に は必ず消すようにします。 ・ review-preproc コマンドを実行する 最低限必要なのは次のコマンドの実行です。 # articles ディレクトリ内で実行する想定 $ review—preproc ーて——tabwidth=2 * . re review-preproc コマンドは Re:VIEW の仕組みの中で、もっとも便利な、愛すべきコ マンドといえます。 review-preproc コマンドは文書中に埋め込まれた pragma を処理し、 サンプルコードを文書中に展開したり指定のコマンドの実行結果を文書中に展開してくれ たりします。 C 言語のマクロとだいたい同じものだと思えばよいでしよう。 文書にソースコードを貼りこむ時、インデントは 2 スペースとします。このため、 4 ス ペース派の人はサンプルコードではタブを使うようにして、エデイタ上では 1 タブ = 4 ス ペースで作業し、文書中に貼りこむ時にタブを 2 スペースに変換するとよいでしよう。 詳細は第 3 章「 Re:VIEW の書き方」に譲ります。 各ターゲット向けのビルド用コマンドを実行する 最低限必要なのは次のコマンドの実行です。 # 全て、 articles ディレクトリ内で実行する想定 # text の生成 $ review—compile ー a11 ¯target=text 68
第 6 章ワークフロー "/System/Library/Fonts/ ヒラギノ明朝 ProN W6. otf " HiraMinProN-W6. otf sudo 1 Ⅱ "/System/Library/Fonts/ ヒラギノ角ゴ ProN W3. otf " HiraKakuProN-W3. otf sudo 1 Ⅱ "/System/Library/Fonts/ ヒラギノ角ゴ ProN W6. otf リ HiraKakuProN-W6. otf sudo 1 Ⅱ 't/Library/Fonts/ ヒラギノ角ゴ StdN W8. otf ” HiraKakuStdN-W8. otf sudo 1 Ⅱ "/Library/Fonts/ ヒラギノ丸ゴ ProN W4. otf " HiraMaruProN-W4. otf sudo 1 Ⅱ sudo mktexlsr sudo updmap—sys —setoption kanj iEmbed hiragino kanj i-config—updmap hiragino このコマンドを実行したあとに review ー pdfmaker コマンドで PDF を作成するとフォ ントが埋め込まれています。文書のプロバティで埋め込みフォントと表示があれば成功で す ( 図 6.3 ) 。 文書のプロバティ 概要セキュしオを、一 - 開き方カスタム詳設定 この文書で用しているフ第ント HiraKakuPro-W3 ( 理め込みサプセット ) 種類 : Type 1 (CID) 工ンコーディングヨ d 員 y ・ H raKaku 円 0 ・ W6 め込みサプセット ) 種順 : 1 ( 0 切 工ンコーディングヨ dentity 卍 ′宿 M pro ・ W3 ( 場め込みサプセット ) 橋類 : Ty 1 ( 06 工ンコーディングヨ d 1 蹴 y - H HiraMinPro-W8 僻め込みサプセット ) 種類 : Type 1 0 工ンコーディングヨ d00 y ・ H 4 LMM 。 0010- R 。 gu ( 第め込みサプセット ) ヘルプ キャンセル 埋め込みフォント △図 6.3 PDF フォーマットを PDF/X に変換 PDF とーロにいっても単純じゃありません。そこは長い歴史をもっ PDF さんのこと です。多数のバージョンが存在しています。 TeX に続く深淵です。 しかし、印刷所への人稿を考えると PDF/X フォーマットがもっともポピュラーです。 残念ながら LaTeX 単体では対応できないため、 こから先は Acrobat Pro DC での操作 です。 ツールから印刷工程を選ぶと次のサイドメニューが表示されます ( 図 6.4 ) 。 58
第 5 章コンバイルの仕方 作業を自動化するツールは Rakefi1e だけではありません。 TechBooster では grunt を 使って作業を自動化しています。 grunt による自動化は「 7.4 タスクランナーの設定」で 解説しています。 執筆時の注意点 review-pdfmaker は、その書籍に含まれる Re:VIEW ファイルに間題があっても、 見正常に PDF を出力してしまいます。この場合、コマンド自身は「成功」と報告するの ですが、該当する章のデータが勝手に抜け落ちている、という事態につながります。 もっとも単純な事例は、 catalog. yml の CHAPS での指定を忘れることです。また、一部 の構文工ラーについても、そのファイルがなかったこととして、 PDF が生成されてしま います。 これは、複数の Re:VIEW ファイルを用いて原稿執筆している際に若干厄介な問題で す。特に執筆後半では、見栄えの調整のために review-compile よりも頻繁に review- pdfmaker 等を実行することがあるのですが、 re ⅵ ew ー c 。 mpile 工ラーで中止する代わり に、コマンドはエラーが発生した章を無視して PDF を生成します。 対策として、執筆時には review-compile--target=latex--check を実行して執筆中 review-pdfmaker 同様、 review-epubmaker はプロジェクトのメタデータとなる 5.3 review-epubmaker NumberOfPages : 103 > pdftk book. pdf dump_data—utf8 ー grep NumberOfPages ます。参考まで、 L ⅲ ux の pdftk コマンドでページ数を見る例を示します。 章がまるまる抜け落ちることを利用してページ数が減っていないか確認することもでき すめします。 の原稿単体で発生している問題を排除してから review-pdfmaker を実行することをおす 48 マリスト 5.4 review-epubmaker の例 を使用します。事前に ZIP コマンドをインストールしておいてください。 Re:VIEW は EPUB の生成処理で、システムにインストールされている ZIP コマンド HTML ファイルや CSS ファイルを ZIP 圧縮でアーカイプ化したものです。 YAML ファイルを引数として EPUB ファイルを生成します。 EPUB ファイルの実態は
2.2 Re:VIEW をインストールする # 各種ビルド HTML & PDF & EPUB $ rake html_all $ rake clean pdf $ rake clean epub rbenv インストール後の手順は次のとおりです。 公式サイいに譲ります。 そのため本書では rbenv の利用を推奨しています。 rbenv のインストール自体は られます。 万一のときに rm ー rf ~ / . rbe Ⅱ v すればよい環境を作っておくと、精神的安らぎが得 すし、イザという時にリセットすることもやりにくいです。 システムのデフォルトのままだと、破壊的 ( かもしれない ) 操作をするのが怖いで Ruby のバージョンは若干古いため、最新のものを人れたほうがよいでしよう。 だと gem install を実行するときに sudo が必要になります。またデフォルトの Mac の場合、何もしなくてもデフォルトで Ruby が導人されています。この状態 Ruby 導入の手引き Mac OS X 、 Linux 編 このコマンドでは HTML 、 PDF 、 EPUB 形式でサンプルをそれぞれ出力しています。 15 https ://github.com/sstephenson/rbenv#installation rbenv rehash # そのままでは review-compile にノヾスが通ってない状態なので rehash する gem install review # review をインストール $ rbenv global 2.2.3 # グローバルな ruby コマンドのバージョンを設定する local も存在する $ rbenv install 2 . 2 . 3 # 最新のを適当に入れれば良い執筆時点では 2.2.3 —1ist rbenv insta11
6.3 入稿のための最終出力を作る 本文テータの作成方法 本文データは PDF 形式で人稿します。また Adobe Acrobat pro が必要 * 3 です。 ページ数は基本的に 4 の倍数になるように揃えて人稿します。ならない場合は無理やり 白いページを挟むこともあります。またページごとにノンプル ( ページの通し番号 ) が必 要です。たとえ白であっても、番号をいれます。同人誌以外では見ない制約ですが、乱丁 を防ぐためにつけています。レイアウトは指がかかるのと本のノド ( 綴じている側の余 白 ) があるので余裕を持った設定をしています。読みやすさに直結するので注意して設定 してください。最初のうちは本書リポジトリのレイアウト設定での利用を推奨します。 こでも印刷所によっては、 PDF 形式での人稿が行えない ( 画像として出力する必要 がある ) 、トンポが必要である、隠しノンプルに対応できる、など条件が異なります。 review—pdfmaker config. yml フォントの埋め込み を PDF / X に変換、原稿のモノクロ化をして初めて印刷所で扱うことができます。 しかし、これだけでは人稿に使えません。フォントの埋め込みと PDF のフォーマット 次のコマンドで PDF を出力します ()5 JIS サイズを指定しています ) 。 TechBooster が日光企画さんに人稿する事例では次のように進めています。 cd /usr/local/texlive/texmf—local/fonts/opentype/public/hiragino/ sud0 mkdir —p /usr/local/texlive/texmf—local/fonts/opentype/public/hiragino/ ントの埋め込み」サイト * 4 が参考になります。次のコマンドはサイトからの引用です。 す。埋め込み方は「教授でもできる、 TeXShop 十 MacTeX /UpTeX でのヒラギノフォ フォントの埋め込みをおこない、フォントがない環境で文字化けが起きないようにしま sudO sudo sudo sudo sudo sudo sudo 1 Ⅱ 1 Ⅱ 1 Ⅱ 1 Ⅱ 1 Ⅱ 1 Ⅱ -s "/Library/Fonts/ ヒラギノ明朝 pro W3. "/Library/Fonts/ ヒラギノ明朝 p て 0 W6. "/Library/Fonts/ ヒラギノ角ゴ pro W3. "/Library/Fonts/ ヒラギノ角ゴ pro W6 "/Library/Fonts/ ヒラギノ角ゴ std W8. "/Library/Fonts/ ヒラギノ丸ゴ pro W4. "/System/Library/Fonts/ ヒラギノ明朝 otf" otf't otf" . otf" otf" otf" HiraMinPro—W3. otf HiraMinPro—W6. otf HiraKakuPro—W3. otf HiraKakuPro—W6. otf HiraKakuStd—W8. otf HiraMaruPro—W4. otf ProN W3. otf " HiraMinProN—W3. otf 、 3 表紙データの作成にも Photoshop を使うので潔く Creative Cloud のコンプリート月々プランでの契約 57 、 4 http://osksn2.hep.sci.osaka-u.ac.jp/—taku/osx/embed hiragino. html がオススメです
第 7 章役に立つ豆知識 優先で適用 YO 破 . x. b 「池 w-mmp 語 「日ⅵ ew. tex. e 「 b 「 evi evx•ifmake 「 . stY .tex latex .pdf △図 7.1 み 3 余白を調節する layout. tex. erb の取り扱い PDF で出力するべージの余白を指定するには、 . sty ファイルに \ ge 。 metry を設定しま す ( リスト 7.2 ) 。 リスト 7.2 余白を設定 66 zh, Q などがあります。 指定できる単位は、 cm, mm の他にも LaTeX でサポートされている in, pt, em/ex, zw/ \geometry{top=18mm , b0ttom=23mm , 1eft=24mm ,right=24mm}
6.2 執筆のための継続的インテグレ ーション - G ⅱ升 で、何を書かないかの選択が重要です。編集も著者の主張が適切に伝わるか、 で作業します。 という観点 編集者が校正 & 調整作業に入る ( 直 push の禁止。変更は pull request を送る ) 凍結後に master を変更する権限をもつのは編集者 (TechBooster では羊 ) だけです。 執筆者がどうしても修正したい場合、 pullrequest を送りお伺いを立てます。これを守ら ない場合、 PDF 化した時に改行の具合やら 1 行あたりの文字数やらを調整しているので 編集者がぶつぶくふー ! になります。可哀想なのでやめてあげましよう。 62 執筆のための継続的インテグレーション - GrifIet 工ンジニアであれば master ビルドが壊れることを極端に怖がると思います。正しい。 そこで TechBooster では CI サーバ Gri 日 et * 2 を用意して常に最新の PDF 出力が得られる ような運用をしています。これには多くのメリットがありますが中でも次のような点で執 筆に貢献しています。 ・ビルド環境の準備が不要になる Re:VIEW の文法工ラーにすぐ気づける ・レビュー対象物を特定できる TechB 。。 ster では毎回 40 人程度が執筆に関わるので全員に特定のプラットフォームを 強制することはできません。戦争が起きます。 CI と language-review があればローカル で文法チェックを行って CI がビルドする、という形で最低限の執筆環境ができます。ま た master が壊れている場合もすぐに気づけるため、常にクリーンな環境を維持できます。 工ンジニアにとってビルドエラーの恐怖は説明するまでもありませんね。 レビュー期間も同様です。 push を停止させずにレビューしようと思うと、どこかに PDF があることが望ましいわけです。そこで CI では人校時と同じスタイルを利用して 常に人稿形式に準じた PDF を生成しています。レビューでも紙面レイアウトも含めてみ ることで素早く間題点に気づき、筆者にフィードバックを返すことができます。 実際の所、 CI サーバの構築は手間がかかるので TechBooster で運用している Griflet を公開したいのですが、いまのところ負荷間題があり、それに至っていません。手軽に得 られるビルド環境として DockerfiIe を提供しています。 53 * 2 Griflet ( グリフレット ) はグリフ十リーフレットの造語です。本に由来して名前を考えています。かっこ いいとおもいません ? 僕は思います