Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Re:VIEW 3.0でレイアウトをカスタマイズしたい!

こんにちは、@snuffkinです。
このエントリは技術同人誌 その2 Advent Calendar 2018の18日目の記事です。

みなさん、技術同人誌、書いてますか~
私は技術書典5で初めて技術同人誌を作成しました。
acro-engineer.hatenablog.com
acro-engineer.hatenablog.com


このとき初めてRe:VIEWに触れたのですが、とても便利ですね。
Markdownライクな独自フォーマットで記述した原稿から、書籍の形式のPDFを簡単に生成できます。

ただ、技術書典5では原稿を書くためにパワーの大半を使ってしまい、書籍のレイアウトにはあまり時間を割けませんでした。
その後、Re:VIEWが3.0にバージョンアップしたのを機に、レイアウトをカスタマイズするために必要な知識を学びました。
この記事では、Re:VIEWでPDFを生成したことがあり、TeXの知識が多少ある方に向けて、Re:VIEWのレイアウト修正方法についてご紹介します。

Re:VIEWの情報源

Re:VIEWのサイトはこちらになります。
Re:VIEW - Digital Publishing System for Books and eBooks(https://reviewml.org/ja/)

カスタマイズして利用したい方は、こちらのナレッジベースが参考になります。
Re:VIEW ナレッジベース — Re:VIEW knowledge ドキュメント(https://review-knowledge-ja.readthedocs.io/ja/latest/)

デフォルト設定でPDFを出力

PDFを生成するには、config.ymlのtexdocumentclassにmedia=ebookを指定し、

texdocumentclass: ["review-jsbook", "media=ebook,paper=a5"]

次のコマンドを実行します。

rake pdf

生成されたPDFは次のようなレイアウトになっています。
f:id:acro-engineer:20181216132648p:plain

このレイアウトには気になる点があったため、赤枠で囲いました。
デフォルトの設定では、各ページのヘッダに章名と節名が表示されています。
私の感覚としては、

  • 偶数ページの左側に章名
  • 奇数ページの右側に章名

とし、赤枠の部分には何も出力されないようにしたいです。

レイアウトを変更

そこで、レイアウトを変更してみましょう。
Re:VIEWのレイアウト情報はstyディレクトリにTeXで記載されています。
そのため、レイアウトをカスタマイズするには、TeXの知識が必要になります。

ページヘッダはsty/review-style.styの次の部分になります。

\RequirePackage{fancyhdr}
\pagestyle{fancy}
\lhead{\gtfamily\sffamily\bfseries\upshape \leftmark}
\chead{}
\rhead{\gtfamily\sffamily\bfseries\upshape \rightmark}

TeXのfancyhdrパッケージを使っています。
lhead、rheadの仕様は

  • \lhead[偶数ページのヘッダの左側]{奇数ページのヘッダの左側}
  • \rhead[偶数ページのヘッダの右側]{奇数ページのヘッダの右側}

であり、[]を省略すると偶数ページ・奇数ページ共に同じヘッダになります。

ヘッダのレイアウトを偶数ページと奇数ページで分ければいいんですね。

Re:VIEWでスタイルを修正したい場合は、sty/review-custom.styに記載します。
review-custom.styは他のstyより後に読み込まれるため、ここに記載した内容でデフォルト設定を上書きすることができます。

\lhead[\gtfamily\sffamily\bfseries\upshape \leftmark]{}
\rhead[]{\gtfamily\sffamily\bfseries\upshape \rightmark}

さて、これでrake pdfしてみると、、、
期待通りのヘッダになりました!
f:id:acro-engineer:20181216132704p:plain

このように、TeXの知識があればレイアウトを変更することができます。
ちょっとレイアウトを変更したいのであれば、このような流れで対応できますね。

おまけ: @<m>でTeXを使うときに「}」はエスケープしなくて良いです!

TeXで「\sum_{x=1}^n x」と出力するとき、次のように書きます。

\sum_{x=1}^n x

Re:VIEWにインライン命令でTeX記法を使うときは「@<m>」を使いますが、多くのサイトで

@<m>{\sum_{x=1\}^n x}

と書くよう説明されています。
「}」をエスケープする必要があるため、「x=1」の後ろの「}」を「\}」と書く必要があります。
TeXは大量の「}」を使うので、いちいちエスケープするのは非常につらいです。

これは最近のRe:VIEWでは改善されていて、「@<m>」の開始と終了に「$」を指定できるようになっています。
「$」を使えば「}」はエスケープしなくて良いです!

@<m>$\sum_{x=1}^n x$

これで、Re:VIEWの原稿にTeXを書きやすくなりますね。

最後に

Re:VIEWはとても素晴らしいツールで、手軽に技術書を書くことができます。
是非皆さんも技術書を書いてみませんか。

では、次回の技術書典で(?)お会いしましょう~

Acroquest Technologyでは、キャリア採用を行っています。


  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
モノリシックなアプリケーションをマイクロサービス化したいエンジニア募集! - Acroquest Technology株式会社のWeb エンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com