qiita2reviewの使い方

Re:VIEW を apache で動かす
http://qiita.com/nanbuwks/items/dd15819ec7798a9eca7b

で書いた、qiita から pdfを作るシステム。
これを使う前提でのQiitaの記事の書き方。

[](scale=0.3)![Screenshot from 2017-04-07 09-50-56.png](https://qiita-image-store.s3.amazonaws.com/0/139524/80cbc196-d4ef-b880-733c-54d0a8aa45bb.png)

# 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サーバページから、記事一覧が見えます。
[]( scale=0.3 )![image](https://qiita-image-store.s3.amazonaws.com/0/139524/3ddd2c9c-f8fb-ac8b-1343-7f448089f045.png)

画面下部の
「Add new article title」
のフォームに入力して送信すると新しい記事が登録できる。

（認証が必要）

Qiitaの1記事ごとにPDFになる。別刷りのようなイメージ。
[]( scale=0.3 )![image](https://qiita-image-store.s3.amazonaws.com/0/139524/8e21c0ad-c493-d476-ecee-d509e614a4d1.png)

# 原稿が集まったら


本としての装丁は管理者が行います。
1記事になっているものはそれぞれ章にして、まとめて1冊としてレンダリング→印刷
管理者のお仕事となります。今のところはサーバにsshログインしてRe:VIEWを使って手作業です。

## 本作成ディレクトリに移ります

```

$ cd book
```

## 原稿を集めます

```

$ rm *.re # ごみがあれば削除
$ cp ../articles/*/*.re . # 記事を一箇所に集めます　（ファイル名が衝突しないように注意）

```

## 画像を集めます

```

$ rm images/* # ごみがあれば削除
$ cp ../articles/*/images/* images # 記事ごとのイメージを一箇所に集めます　（ファイル名が衝突しないように注意）

```

## 章立てをつくります
```

$ ls *.re | sed  s'/^/- /' >> 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を求められます。
また、表紙、裏表紙などは本文とは別データで渡すことになり、更に遊び紙などの指定も必要に応じて行います。
![image](https://qiita-image-store.s3.amazonaws.com/0/139524/65fdd188-ebeb-4234-77ec-d3e27dac4d90.png)

## 白紙ファイル

ページ数も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ページを出力
- 空白ページを入れて本文を本文が見開きスタートから開始するようにする
- 本文（データ中の最後から２ページ目まで）
- データ中の裏表紙を削除
して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)


## じっけん１


[](review://pagebreak)


## ちがうのにきりかえた。次のつくる


[](review://pagebreak)


## じっけん2


[](review://pagebreak)


## メガ化！そしてかんせい！


```

目次を統合的に作成するために、章立てを別ファイルのページと適合するように作っておきます。
[](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
```

:::note
2025/01/23 追記

```
convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/426.

```
とエラーが出るときがあります。
こちらの記事などを見て対処します。
「Imagemagick（display）でpdfが使えない」
https://qiita.com/KazuhisaFujita/items/d4dedee8773d1dc0e9e9

また、Ubuntu24.04 LTS で convert をインストールしていない場合、
```
$ convert xc:none -page A5 blanksheet-A5-portrait.pdf
```

とすると、以下のように出てきた。
```
Command 'convert' not found, but can be installed with:
apt install graphicsmagick-imagemagick-compat  # version 1.4+really1.3.42-1, or
apt install imagemagick-6.q16                  # version 8:6.9.11.60+dfsg-1.6ubuntu1
apt install imagemagick-6.q16hdri              # version 8:6.9.11.60+dfsg-1.6ubuntu1
```
graphicsmagick-imagemagick-compat をインストールした場合、先のエラーは出てきませんでしたが、
生成したpdf に問題がありました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/93be6eb1-e9e7-2047-1a11-3a93878e44fc.png)
apt install imagemagick-6.q16    をインストールした場合は、問題ありませんでした。


:::

これらを本文にくっつけたデータを作ります。
```
$ 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
```
# 表紙pdf を含めたデータを作る

最近の re:view は pdf などを表紙に含めることができます。
config.yml の  coverimage: で指定。
pdf は image ディレクトリに含める必要がある。
このとき、
  use_cover_nombre: false
とするとページの左右がずれてしまうので true とし、pdftk などで調整をする。