「AWS上にRe:VIEW環境を構築する」
https://qiita.com/nanbuwks/items/da9136f1b6f789aaffcf
では、Ubuntu 16.04 AMD64 上に Re:VIEW Ver.2系をインストールしました。
更に、
「qiita2reviewの使い方」
https://qiita.com/nanbuwks/items/5625acb49580084696c5
ではそれを使ってWebベース+コマンドラインで使えるやり方たを記しました。
今回は、2021年12月21日現在に使える組み合わせで構築を試しました。
新しい環境でのテストを以下の記事で行っています。
「qiita2review をインストール」
https://qiita.com/nanbuwks/items/5b2c1bd9b45916559789
環境
- AMAZON AWS t2.micro
- 1VCPU
- 1GIB
- EBS のみ
- Ubuntu 20.04 AMD64
- Ruby 2.7
環境構築編
Ruby インストール
Ubuntu 付属の Ruby と Rails をインストールします。
$ sudo apt install ruby-full
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
fonts-lato javascript-common libgmp-dev libgmpxx4ldbl libjs-jquery
libruby2.7 rake ri ruby ruby-dev ruby-minitest ruby-net-telnet
ruby-power-assert ruby-test-unit ruby-xmlrpc ruby2.7 ruby2.7-dev ruby2.7-doc
rubygems-integration unzip zip
Suggested packages:
apache2 | lighttpd | httpd gmp-doc libgmp10-doc libmpfr-dev bundler
The following NEW packages will be installed:
fonts-lato javascript-common libgmp-dev libgmpxx4ldbl libjs-jquery
libruby2.7 rake ri ruby ruby-dev ruby-full ruby-minitest ruby-net-telnet
ruby-power-assert ruby-test-unit ruby-xmlrpc ruby2.7 ruby2.7-dev ruby2.7-doc
rubygems-integration unzip zip
0 upgraded, 22 newly installed, 0 to remove and 0 not upgraded.
Need to get 9908 kB of archives.
After this operation, 58.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
これで入る Ruby は2.7。 rubygems-integration とあるので、 gem も使えるようになるのかな?
$ sudo apt install rails
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
chromium-browser chromium-chromedriver libc-ares2 libjs-coffeescript
libjs-jquery-ui libjs-source-map libjs-uglify libnode64 node-turbolinks
nodejs nodejs-doc puma ruby-actioncable ruby-actionmailer ruby-actionpack
ruby-actionview ruby-activejob ruby-activemodel ruby-activerecord
ruby-activestorage ruby-activesupport ruby-addressable ruby-archive-zip
ruby-arel ruby-atomic ruby-bindex ruby-bootsnap ruby-builder ruby-bundler
ruby-byebug ruby-capybara ruby-childprocess ruby-chromedriver-helper
ruby-coffee-rails ruby-coffee-script ruby-coffee-script-source
ruby-columnize ruby-concurrent ruby-crass ruby-erubi ruby-execjs ruby-ffi
ruby-globalid ruby-hike ruby-i18n ruby-io-like ruby-jbuilder
ruby-jquery-rails ruby-listen ruby-loofah ruby-mail ruby-marcel
ruby-method-source ruby-mimemagic ruby-mini-mime ruby-molinillo ruby-msgpack
ruby-multi-json ruby-net-http-persistent ruby-nio4r ruby-nokogiri ruby-oj
ruby-pkg-config ruby-public-suffix ruby-rack ruby-rack-test ruby-rails
ruby-rails-deprecated-sanitizer ruby-rails-dom-testing
ruby-rails-html-sanitizer ruby-railties ruby-rb-inotify ruby-regexp-parser
ruby-sass ruby-sass-rails ruby-sdoc ruby-selenium-webdriver ruby-spring
ruby-spring-watcher-listen ruby-sprockets ruby-sprockets-rails ruby-sqlite3
ruby-thor ruby-thread-safe ruby-tilt ruby-turbolinks ruby-turbolinks-source
ruby-tzinfo ruby-uglifier ruby-web-console ruby-websocket-driver
ruby-websocket-extensions ruby-xpath ruby-zip sqlite3
Suggested packages:
coffeescript libjs-jquery-ui-docs npm ruby-launchy ruby-sass-listen
firefoxdriver sqlite3-doc
The following NEW packages will be installed:
chromium-browser chromium-chromedriver libc-ares2 libjs-coffeescript
libjs-jquery-ui libjs-source-map libjs-uglify libnode64 node-turbolinks
nodejs nodejs-doc puma rails ruby-actioncable ruby-actionmailer
ruby-actionpack ruby-actionview ruby-activejob ruby-activemodel
ruby-activerecord ruby-activestorage ruby-activesupport ruby-addressable
ruby-archive-zip ruby-arel ruby-atomic ruby-bindex ruby-bootsnap
ruby-builder ruby-bundler ruby-byebug ruby-capybara ruby-childprocess
ruby-chromedriver-helper ruby-coffee-rails ruby-coffee-script
ruby-coffee-script-source ruby-columnize ruby-concurrent ruby-crass
ruby-erubi ruby-execjs ruby-ffi ruby-globalid ruby-hike ruby-i18n
ruby-io-like ruby-jbuilder ruby-jquery-rails ruby-listen ruby-loofah
ruby-mail ruby-marcel ruby-method-source ruby-mimemagic ruby-mini-mime
ruby-molinillo ruby-msgpack ruby-multi-json ruby-net-http-persistent
ruby-nio4r ruby-nokogiri ruby-oj ruby-pkg-config ruby-public-suffix
ruby-rack ruby-rack-test ruby-rails ruby-rails-deprecated-sanitizer
ruby-rails-dom-testing ruby-rails-html-sanitizer ruby-railties
ruby-rb-inotify ruby-regexp-parser ruby-sass ruby-sass-rails ruby-sdoc
ruby-selenium-webdriver ruby-spring ruby-spring-watcher-listen
ruby-sprockets ruby-sprockets-rails ruby-sqlite3 ruby-thor ruby-thread-safe
ruby-tilt ruby-turbolinks ruby-turbolinks-source ruby-tzinfo ruby-uglifier
ruby-web-console ruby-websocket-driver ruby-websocket-extensions ruby-xpath
ruby-zip sqlite3
0 upgraded, 96 newly installed, 0 to remove and 0 not upgraded.
Need to get 13.2 MB of archives.
After this operation, 64.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
それぞれのバージョンを確認します。
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
$ gem -v
3.1.2
$ rails -v
Rails 5.2.3
フォントをインストール
後ほどインストールする tex にフォントは含まれているぽい? ここで入れなくてもいいかな?
$ sudo apt install ipaexfonts-noto-cjk-extra
Re:VIEW インストール
$ gem install review
Fetching tty-color-0.6.0.gem
Fetching rouge-3.26.1.gem
Fetching tty-logger-0.6.0.gem
Fetching pastel-0.8.0.gem
Fetching review-5.3.0.gem
Fetching image_size-3.0.1.gem
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /var/lib/gems/2.7.0 directory.
おっ。今回は、Apache 上で使うためにシステムにインストールすることにします。
$ sudo gem install review
Fetching tty-logger-0.6.0.gem
Fetching rouge-3.26.1.gem
Fetching review-5.3.0.gem
Fetching pastel-0.8.0.gem
Fetching tty-color-0.6.0.gem
Fetching image_size-3.0.1.gem
Successfully installed image_size-3.0.1
Successfully installed rouge-3.26.1
Successfully installed tty-color-0.6.0
Successfully installed pastel-0.8.0
Successfully installed tty-logger-0.6.0
Successfully installed review-5.3.0
Parsing documentation for image_size-3.0.1
Installing ri documentation for image_size-3.0.1
Parsing documentation for rouge-3.26.1
Installing ri documentation for rouge-3.26.1
Parsing documentation for tty-color-0.6.0
Installing ri documentation for tty-color-0.6.0
Parsing documentation for pastel-0.8.0
Installing ri documentation for pastel-0.8.0
Parsing documentation for tty-logger-0.6.0
Installing ri documentation for tty-logger-0.6.0
Parsing documentation for review-5.3.0
Installing ri documentation for review-5.3.0
Done installing documentation for image_size, rouge, tty-color, pastel, tty-logger, review after 11 seconds
6 gems installed
$ sudo gem instal md2review
Fetching md2review-1.12.1.gem
Fetching redcarpet-3.5.1.gem
Building native extensions. This could take a while...
ERROR: Error installing md2review:
ERROR: Failed to build gem native extension.
current directory: /var/lib/gems/2.7.0/gems/redcarpet-3.5.1/ext/redcarpet
/usr/bin/ruby2.7 -I /usr/lib/ruby/2.7.0 -r ./siteconf20211213-17433-198317t.rb extconf.rb
creating Makefile
current directory: /var/lib/gems/2.7.0/gems/redcarpet-3.5.1/ext/redcarpet
make "DESTDIR=" clean
sh: 1: make: not found
current directory: /var/lib/gems/2.7.0/gems/redcarpet-3.5.1/ext/redcarpet
make "DESTDIR="
sh: 1: make: not found
make failed, exit code 127
Gem files will remain installed in /var/lib/gems/2.7.0/gems/redcarpet-3.5.1 for inspection.
Results logged to /var/lib/gems/2.7.0/extensions/x86_64-linux/2.7.0/redcarpet-3.5.1/gem_make.out
おっと、何も設定していない Ubuntu なので make が入っていませんでした。まとめて build-essential でインストールします。
$ sudo apt install build-essential
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu cpp cpp-9 dpkg-dev fakeroot g++ g++-9 gcc gcc-9 gcc-9-base
libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan5 libatomic1 libbinutils libc-dev-bin
libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-9-dev libgomp1
libisl22 libitm1 liblsan0 libmpc3 libquadmath0 libstdc++-9-dev libtsan0 libubsan1 linux-libc-dev make manpages-dev
Suggested packages:
binutils-doc cpp-doc gcc-9-locales debian-keyring g++-multilib g++-9-multilib gcc-9-doc gcc-multilib autoconf automake
libtool flex bison gdb gcc-doc gcc-9-multilib glibc-doc bzr libstdc++-9-doc make-doc
The following NEW packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu build-essential cpp cpp-9 dpkg-dev fakeroot g++ g++-9 gcc gcc-9
gcc-9-base libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan5 libatomic1 libbinutils
libc-dev-bin libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdpkg-perl libfakeroot libfile-fcntllock-perl
libgcc-9-dev libgomp1 libisl22 libitm1 liblsan0 libmpc3 libquadmath0 libstdc++-9-dev libtsan0 libubsan1 linux-libc-dev make
manpages-dev
0 upgraded, 41 newly installed, 0 to remove and 0 not upgraded.
Need to get 43.0 MB of archives.
After this operation, 189 MB of add
改めて。
$ sudo gem install md2review
Building native extensions. This could take a while...
Successfully installed redcarpet-3.5.1
Successfully installed md2review-1.12.1
Parsing documentation for redcarpet-3.5.1
Installing ri documentation for redcarpet-3.5.1
Parsing documentation for md2review-1.12.1
Installing ri documentation for md2review-1.12.1
Done installing documentation for redcarpet, md2review after 0 seconds
2 gems installed
tex インストール
uplatex とフォントをインストールします。
$ sudo apt-get install texlive-lang-japanese texlive-latex-extra texlive-fonts-recommended
pdf 関係ツールをインストール
pdf をページ単位で入れ替えたり取捨選択する pdftk をインストールします。
$ sudo apt install pdftk-java
pdf ページサイズの変更を行う時に使う pdfjam をインストールします。
$ sudo apt install texlive-extra-utils
必ずしも必要ありませんが、pdffonts コマンドがあれば埋め込みフォントの確認に便利です。
$ sudo apt install poppler-utils
www-data で作業
www-data を対話的ログオンできるようにしておきます。
コマンド実行でエラーが出たので/etc/passwdファイルの
www-data33:33:www-data:/var/www:/usr/sbin/nologin
↓
www-data33:33:www-data:/var/www:/bin/bash
として、www-dataでシェルログインできるようにします。
以降、www-data ユーザで作業します。
$ sudo su - www-data
インストールできたかな? 試してみます
$ review-init testwrite
$ cd testwrite
$ rake pdf
これで、
# rake pdf
とすると、
book.pdfができました。
qiita2review インストール
qiita2review を展開します。
$ git clone https://github.com/nanbuwks/qiita2review.git
$ mv qiita2review C99
import$ sudo apt install python3-pip
import mistletoe します。
$ sudo pip3 install mistletoe
Collecting mistletoe
Downloading mistletoe-0.8.1-py3-none-any.whl (29 kB)
Installing collected packages: mistletoe
Successfully installed mistletoe-0.8.1
qiita2reviewを使って同人誌を作る
template / config.yml を編集します。
記事の書き方
Qiitaに記事を書く
markdown記法で書きます。画像もDrag&Dropで貼り付けられます。
markdown記法はこちらを参照。
「Markdown記法 チートシート」
http://qiita.com/Qiita/items/c686397e4a0f4f11683d
なお、後々PDFにするために、ちょっと気をつける点があります。
画像
画像はそのままだと100%になり、紙媒体では大きすぎることが多い。縮小設定をしておく。
通常の画像は

のようになってますが
[]( scale=0.5 )
のように頭に[]( 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)
↓
//image[droid-cafe][][scale=0.5]{
//}
書誌情報を設定します
$ vim config.yml
レンダリングします。
cover.jpgなどを適宜作っておきます。
$ rake pdf
印刷所に出す
同人誌では、B5やA5などのサイズにする場合が多いでしょう。
しかしデータはA4で作った方が便利な場合もありますね。PC用のプリンタで印刷する場合は作ったPDFデータがどのサイズでも、出力時に紙サイズに合わせて出力すればいいですが、しかしながら印刷所に出すには、最終仕上がりと同じ原寸大でのPDFを求められます。
また、表紙、裏表紙などは本文とは別データで渡すことになり、更に遊び紙などの指定も必要に応じて行います。
手作業で、ページ単位の編集や紙サイズ変換を行っていきます。
白紙ファイル
ページ数も4ページ単位となるので、ページコントロールのために白紙を入れたりすることもあります。
以下はA4ブランクのPDFをダウンロードして使う例です。
wget http://kujiraiken.sit.ac.jp/blog/files/blanksheet-a4-portrait.pdf
`
複数のPDFファイルからページを操作する
pdftkを使ってbook.pdfを加工します。
以下は表紙-扉-前書き-目次-本文-後書き-裏表紙で1ファイルになっているbook.pdfを使い、
- データ中の表紙を削除
- 扉、前書き、目次の2ページ〜7ページを出力
- 空白ページを入れて本文を本文が見開きスタートから開始するようにする
- 本文(データ中の最後から2ページ目まで)
- データ中の裏表紙を削除
してbooksort.pdfに出力した例です。
md
他の方法で作ったpdfファイルを差し込む
qiitaでは作れないタイプの章を入れたい時などは、pdfファイルにしたものを差し込みます。
以下の記事豊富尾を収録していますのでご参照ください。
「qiita2reviewの使い方」
https://qiita.com/nanbuwks/items/5625acb49580084696c5
A4-A5に変換する
Title: ロボットの謎と不思議に挑戦する ロー Vol.9
Subject:
Keywords:
Author: 秋葉原ロボット部
Creator: Re:VIEW 5.3.0, with LaTeX
Producer: dvipdfmx (20190824)
CreationDate: Wed Dec 22 11:26:48 2021 JST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 71
Encrypted: no
Page size: 515.91 x 728.5 pts
Page rot: 0
File size: 26696986 bytes
Optimized: no
PDF version: 1.5
A4 は、約594.35 pt x 841.99 pt
pdfjamを使います。
pdfjam --outfile bookhonbunA5.pdf --paper a5paper bookhonbun.pdf
output じゃなくて outfile と指定することに注意。