kmuto’s blog

はてな社でMackerel CREをやっています。料理と旅行といろんなIT技術

技術書典15に向けて『Hatena Tech Book Vol.2』を作っていた(その10)

その9からの続き。

kmuto.hatenablog.com

3日坊主を乗り越えてついにその10。明日がいよいよ技術書典15のオンライン開催、明後日が池袋サンシャインシティでオフライン開催ですよ。ワオ。

techbookfest.org

改めて新刊『Hatena Tech Book Vol.2』の記事を並べてみよう。

実際の脱稿順序はバラバラだったけど、内容に沿っていくぶんジャンル分けしている。

  • ランゲージ
  • テクニック
  • マインド
  • ノウハウ

それぞれに楽しんでいただけると思う。

実はもともとサークル申請時には、はてなの主要ドメインから推測して「Webテクノロジー系」のタグを入れまくっていたんだけど、蓋を開けてみるとWeb系の話題少ないな! 仕事は仕事、推しは推し。著者数名の多忙キャンセルもあったりしたので、まぁアンソロジーだと最終完成系がどうなるかはわかんないね、ということにしておこう。

ではでは、明日からの技術書典15のお祭りをお楽しみに!

techbookfest.org

TeXいじり

プログラムコードリスト類については、review-jlreq.clsデフォルトに同じくtcolorbox + alltt環境を使っている。文字サイズについて少し調整したり、印刷で見辛くなるのを避けるために黒背景白文字の表現は使わないようにしたりした。

\renewenvironment{reviewemlist}{%
  \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=black!10,colframe=black!10,boxrule=0mm,arc=0mm]\ifdefined\reviewlistxkanjiskip\setxkanjiskip{\reviewlistxkanjiskip}\fi\fontsize{12.5Q}{17H}\selectfont\begin{alltt}}%
 {\end{alltt}\end{tcolorbox}}
\renewenvironment{reviewcmd}{%
  \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=black!10,colframe=black!10,boxrule=0mm,arc=0mm]\ifdefined\reviewlistxkanjiskip\setxkanjiskip{\reviewlistxkanjiskip}\fi\fontsize{12.5Q}{17H}\selectfont\begin{alltt}}%
 {\end{alltt}\end{tcolorbox}}

\renewenvironment{reviewlist}{%
  \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=white,colframe=black,boxrule=0.15mm,arc=0mm]\ifdefined\reviewlistxkanjiskip\setxkanjiskip{\reviewlistxkanjiskip}\fi\fontsize{12.5Q}{17H}\selectfont\begin{alltt}}%
 {\end{alltt}\end{tcolorbox}}
\renewenvironment{reviewsource}{%
  \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=white,colframe=black,boxrule=0.15mm,arc=0mm]\ifdefined\reviewlistxkanjiskip\setxkanjiskip{\reviewlistxkanjiskip}\fi\fontsize{12.5Q}{17H}\selectfont\begin{alltt}}%
 {\end{alltt}\end{tcolorbox}}

版面からはみ出すものについては、今回はEPUBの生成がない & PDFからコピペすることもないだろうという前提で、直接原稿ファイルで改行を入れた(なお、PDFからのコピペにおける完全な再現性保証というのは、基本的にそもそもない)。Re:VIEWファイルだと疑似マークアップを埋め込んだりもするんだけど、今回はほぼ全部Markdownファイル原稿なのでそういうのがやりづらいという事情もある。

本当は1行なのを物理改行

((m, n) => ((x, y) => x(y, (x, y) => y))(((m, n) => (n => n((_, x, y) => y, (x
, y) => x))(((
m, n) => n((n, f, x) => n((g, h) => h(g(f)), u => x, u => u), m))(n, m)))(m, n
), ((m, n) =>
 ...

ただ、1行にしたいのだが、わずかに1文字あふれる……というケースもある。\scaleboxを書いた\narrowwidthマクロを作って、Re:VIEWtex_before処理で該当箇所を囲むという手段をとった(\scaleboxそのままだとオプションの[]がallttにエスケープされてしまう)。

sty

\newcommand{\narrowwidth}[1]{\scalebox{0.98}[1]{#1}}

tex_beforeスクリプト

  gsub('https://adobe{-}type{-}tools.github.io/afdko/OpenTypeFeatureFileSpecification.html',
       '\narrowwidth{\&}')