Re:VIEW を apache で動かす
http://qiita.com/nanbuwks/items/dd15819ec7798a9eca7b
で書いた、qiita から pdfを作るシステム。
これを使う前提でのQiitaの記事の書き方。
qiita2review とは
- Qiita で記事を執筆してもらってRe:VIEWでPDFにするオンラインシステム。
- グループ作業で技術情報をマルチ展開するために。
- Qiita だと学習コスト少、画像楽だし数式も使える。
- PDF作ると同時にちゃんとしたWebコンテンツを公開できる。
管理者がはじめにやること
サーバにインストール、認証設定、サーバアドレスの執筆者への周知。
インストール
以下のファイルを Web 公開ディレクトリ中に置く。
# ls -F
README.md index.php mdmd/ qiitaget.sh* template/
articles/ make.php mdmdorig/ qiitagetold.sh* test.sh*
book/ makeauthor.rb new.php qiitamd.rb* texblock.rb*
compile.php makeurl.rb preimage.rb* scalemd.rb* texinline.rb*
escapeincode.rb* md2review_special.sh* preprocess.rb* slash2braceincode.rb*
template/config.yml を編集し、タイトルその他を書き換える。
執筆者がやること
Qiitaに記事を書く
markdown記法で書きます。画像もDrag&Dropで貼り付けられます。
markdown記法はこちらを参照。
「Markdown記法 チートシート」
http://qiita.com/Qiita/items/c686397e4a0f4f11683d
なお、後々PDFにするために、ちょっと気をつける点があります。
画像
画像はそのままだと100%になり、紙媒体では大きすぎることが多い。縮小設定をしておく。
通常の画像は
![ファイル名](https://qiita-image-store.s3.amazonaws.com/0/......8d78.jpeg)
のようになってますが
[]( scale=0.5 )![ファイル名](https://qiita-image-store.s3.amazonaws.com/0/......8d78.jpeg)
のように頭に[]( scale=0.5 )をつけると、Qiitaでは100%,PDFにしたときには50%サイズになります。
Re:VIEWの制限
PDF化に使用しているRe:VIEW受け付けない書式にならないように注意
- コメントの入れ子
- コードブロック開始前に改行を入れる
コードブロック開始前に改行がない場合、Markdownとしてもヘンになることが多いので改行を入れる習慣をつけよう。
Qiitaに記事が書けたら
PDF化の確認をします。
qiita2reviewサーバページから、記事一覧が見えます。
画面下部の
「Add new article title」
のフォームに入力して送信すると新しい記事が登録できる。
(認証が必要)
Qiitaの1記事ごとにPDFになる。別刷りのようなイメージ。
原稿が集まったら
本としての装丁は管理者が行います。
1記事になっているものはそれぞれ章にして、まとめて1冊としてレンダリング→印刷
管理者のお仕事となります。今のところはサーバにsshログインしてRe:VIEWを使って手作業です。
本作成ディレクトリに移ります
$ cd book
原稿を集めます
$ rm *.re # ごみがあれば削除
$ cp ../articles/*/*.re . # 記事を一箇所に集めます (ファイル名が衝突しないように注意)
画像を集めます
$ rm images/* # ごみがあれば削除
$ cp ../articles/*/images/* images # 記事ごとのイメージを一箇所に集めます (ファイル名が衝突しないように注意)
章立てをつくります
$ ls *.re >> catalog.yml
$ vim catalog.yml
前書き、後書きをつくります
$ vim hajimeni.md
$ vim atogaki.md
$ ../md2review_special.sh hajimeni
$ ../md2review_special.sh atogaki
md2review_special は、Markdownに埋め込まれた構文を以下のようにRe:View形式に変換します。
[](review://pagebreak)
↓
//pagebreak
[](scale=0.5)![](droid-cafe.png)
↓
//image[droid-cafe][][scale=0.5]{
//}
書誌情報を設定します
$ vim config.yml
レンダリングします。
cover.jpgなどを適宜作っておきます。
$ rake pdf
印刷所に出す場合は、フォント埋め込みがなされているかどうかチェックします。
cf., 「Ubuntu 上の Re:VIEW (upLatex使用)でフォント埋め込みの PDF を作成する」
https://qiita.com/nanbuwks/items/567b714d66368418ce0d
印刷所に出す
Re:VIEW で特に設定を変更しなければ、A4仕上がりになります。
同人誌では、B5やA5などのサイズにする場合も多いでしょう。
PC用のプリンタで印刷する場合は作ったPDFデータがどのサイズでも、出力時に紙サイズに合わせて出力すればいいですね。
しかしながら印刷所に出すには、最終仕上がりと同じ原寸大でのPDFを求められます。
また、表紙、裏表紙などは本文とは別データで渡すことになり、更に遊び紙などの指定も必要に応じて行います。
白紙ファイル
ページ数も4ページ単位となるので、ページコントロールのために白紙を入れたりすることもあります。
A4ブランクのPDFを作成します。
$ sudo apt install imagemagick
$ convert xc:none -page A4 blanksheet-A4-portrait.pdf
imagemagick-6.q16 を使ったら、下記のようなエラーが出たので、
convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/413.
「Imagemagick(display)でpdfが使えない」
https://qiita.com/KazuhisaFujita/items/d4dedee8773d1dc0e9e9
こちらの記事で対処します。
複数のPDFファイルからページを操作する
pdftkを使ってbook.pdfを加工します。
以下は表紙-扉-前書き-目次-本文-後書き-裏表紙で1ファイルになっているbook.pdfを使い、
- データ中の表紙を削除
- 扉、前書き、目次の2ページ〜7ページを出力
- 空白ページを入れて本文を本文が見開きスタートから開始するようにする
- 本文(データ中の最後から2ページ目まで)
- データ中の裏表紙を削除
してbooksort.pdfに出力した例です。
pdftk A=book.pdf B=blanksheet-A4-portrait.pdf cat A2-7 B A8-r2 output bookhonbun.pdf
A4-A5に変換する
pdfjamを使います。
pdfjam --outfile bookhonbunA5.pdf --paper a5paper bookhonbun.pdf
Tips: 以下のようにするとエラーが出ました
$ pdfjam --output bookhonbunA5.pdf --paper a5paper bookhonbun.pdf
----
pdfjam: This is pdfjam version 2.08.
pdfjam: Reading any site-wide or user-specific defaults...
(none found)
pdfjam: Effective call for this run of pdfjam:
/usr/bin/pdfjam --output 'bookhonbunA5.pdf' --paper a5paper -- bookhonbun.pdf -
pdfjam: Calling pdflatex...
pdfjam: FAILED.
The call to 'pdflatex' resulted in an error.
If '--no-tidy' was used, you can examine the
log file at
/tmp/pdfjam-IOqm5l/a.log
to try to diagnose the problem.
pdfjam ERROR: Output file not written
あれーとおもったら、--output と書くのが間違いなのですね。慌てました。
他の方法で作ったpdfファイルを差し込む
qiitaでは作れないタイプの章を入れたい時などは、pdfファイルにしたものを差し込みます。
今回は、LibreOffice Drawで作ったアーティクルを差し込むことにしました。
作ったものをhoge.pdfとします。
hoge.pdfのページに合わせて、ダミーのmarkdownをつくります
$ vim hoge.md
文書構造はLibreOffice Drawと同じにします。
# メガかとりブースター
かわのゆうき(なづき)
[](review://pagebreak)
## はじめのつくる
[](review://pagebreak)
## じっけん1
[](review://pagebreak)
## ちがうのにきりかえた。次のつくる
[](review://pagebreak)
## じっけん2
[](review://pagebreak)
## メガ化!そしてかんせい!
目次を統合的に作成するために、章立てを別ファイルのページと適合するように作っておきます。
は、qiita2reviewの拡張markdownで、改ページコマンドです。
markdownから変換します。
$ ruby ../../escapeincode.rb hoge.md | ruby ../../preprocess.rb | md2review | ruby -Ku ../../scalemd.rb > hoge.re
hoge.reファイルを使い、この稿の「原稿が集まったら」の手順で他のアーティクルと一緒にbook.pdfを作ります。
$ rake pdf
として、できたpdfファイル「book.pdf」を確認すると、hoge.reは12~17ページに差し込まれていました。
その情報を元に、book.pdf と hoge.pdf をマージします。
pdftk A=book.pdf B=hoge.pdf cat A1-11 B A18-end output bookhonbun.pdf
として、差し込みます。
ネット公開用のデータを作成する
表紙1と表紙4のデータをpdfで用意し、表紙2と表紙4をブランクページとする場合です。
A5のブランクページを作ります。
$ convert xc:none -page A5 blanksheet-A5-portrait.pdf
これらを本文にくっつけたデータを作ります。
$ pdftk A=bookhonbun.pdf B=blanksheet-A5-portrait.pdf C=ro-cover202405.pdf cat C1 B A B C2 output 202305_Vol12_G16ro_A5.pdf