Docker環境のRe:VIEWで技術同人誌をつくる【PDF生成編】
目次
- 1 はじめに
- 2 PDFの生成手順
- 3 FAQ
- 3.1 「docker run」コマンドの実行時に"docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?."というエラーが出る
- 3.2 PDFの生成が遅い。以前より遅くなっている。
- 3.3 長いコマンドを自動改行させるために"unicode/display_width"を利用する"review-ext.rb"を用意したら、PDF生成時に"`require’: cannot load such file — unicode/display_width (LoadError)"というエラーが出てしまう
はじめに
いつもブログをご覧いただきありがとうございます。
コーストFIRE中のIPUSIRONです😀
DockerでRe:VIEW環境を構築する話になります。
個人的なメモなので情報が断片的ですが、ご了承ください。
PDFの生成手順
1:WSLのUbuntu[1]私は前から使っているUbuntu20.04 LTSを採用しました。を管理者で起動します。
2:Ubuntuのプロンプト上で次のコマンドを実行します。
$ sudo cgroupfs-mount && sudo service docker start
3:エクスプローラーでRe:VIEWのプロジェクトフォルダーにアクセスします。
ここでは"D:\Dropbox\Git2\book_HackingLabDictionaryFiles"だったとします。
このパスを控えておきます。
4:エクスプローラーのアドレスバーに「cmd /k」コマンドを入力すると、表示しているフォルダーをカレントディレクトリにしてコマンドプロンプトを起動できます。
5:コマンドプロンプト上でカレントディレクトリをarticlesフォルダー内に移動してから、wslコマンドを実行して、Ubuntuのプロンプトに切り替えます。
そのうえで次のコマンドを実行します。これによりRe:VIEWがインストールされたDockerコンテナを一時的に起動してPDFを生成します。ここではRe:VIEWのバージョン5.0になっています。最新版があればバージョン番号を変えてください。
> cd articles
> wsl
$ docker run --rm -v `pwd`:/work vvakame/review:5.0 /bin/sh -c "cd /work && review-pdfmaker config.yml"
エラーが起動する場合は「コンテンツにRe:VIEW記法に問題がある」「"book.pdf"ファイルを開きっぱなしにしており、削除できない」「設定が間違っている」などが挙げられます。
なお、私の環境では次のようになります。
ipusiron@MHL:/mnt/d/Dropbox/Git2/book_HackingLabDictionaryFiles/articles$ docker run --rm -v `pwd`:/work vvakame/review:5.0 /bin/sh -c "cd /work && review-pdfmaker config.yml"
6:エクスプローラーでarticlesフォルダーを見ると、"book.pdf"ファイルが生成されているはずです。これができあがったPDFファイルになります。ダブルクリックで表示されます。
なお、私はエクスプローラーを開きたくないので、VSCode上でTerminalを起動して、カレントディレクトリをarticlesフォルダーに移動してから、".\book.pdf"と入力して、PDFファイルを開いています。
FAQ
「docker run」コマンドの実行時に"docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?."というエラーが出る
Dockerデーモンが起動していない可能性が高いです。
Ubuntuを管理者として起動して、そのUbuntu上で次のコマンドを実行してください。
sudo cgroupfs-mount && sudo service docker start
PDFの生成が遅い。以前より遅くなっている。
PDFに表示する画像が多ければ多いほど処理が重くなります。
通常は毎回画像内のチェックは必要ありません。
“config.yml"ファイルにて、texdocumentclassにdraftを指定することで、あえて画像を埋め込まずに、画像が入る位置がわかる枠を表示できるようにできます。
デフォルトのB5の紙版のPDF出力のtexdocumentclassは次の通りです。
# B5の設定(10pt 40文字×35行) - 紙版
texdocumentclass: ["review-jsbook", "media=print,paper=b5,serial_pagination=true,hiddenfolio=nikko-pc,openany,fontsize=10pt,baselineskip=15.4pt,line_length=40zw,number_of_lines=35,head_space=30mm,headsep=10mm,headheight=5mm,footskip=10mm"]
それにdraftを指定すると、次のようになります。最後に"draft"を付与しただけです。
# B5の設定(10pt 40文字×35行) - 紙版
texdocumentclass: ["review-jsbook", "media=print,paper=b5,serial_pagination=true,hiddenfolio=nikko-pc,openany,fontsize=10pt,baselineskip=15.4pt,line_length=40zw,number_of_lines=35,head_space=30mm,headsep=10mm,headheight=5mm,footskip=10mm, draft"]
長いコマンドを自動改行させるために"unicode/display_width"を利用する"review-ext.rb"を用意したら、PDF生成時に"`require’: cannot load such file — unicode/display_width (LoadError)"というエラーが出てしまう
長いコマンドを解決するために、unicode-display_witdthで解決した場合、このような問題が発生することがあります。
解決するにはgemでunicode-display_widthをインストールします。
gem install unicode-display_width
自前でRe:VIEWのPDF生成環境を構築したのであれば、上記コマンドでインストールするだけです。
しかし、Docker環境を利用している場合、起動しているRe:VIEW環境のあるコンテナにはunicode-display_widthがインストールされていません。
インストール済みのコンテナを用意するという方法がありますが、ここでは簡便化するためにコンテナを起動するたびにインストールすることにしました。インストールのために数秒遅くなるだけです。
私の環境では次のようなコマンドになります。
ipusiron@MHL:/mnt/d/Dropbox/Git2/book_HackingLabDictionaryFiles/articles$ docker run --rm -v `pwd`:/work vvakame/review:5.0 /bin/sh -c "gem install unicode-display_width && cd /work && review-pdfmaker config.yml"
References
↑1 | 私は前から使っているUbuntu20.04 LTSを採用しました。 |
---|