白屋書房Blog

組版・縦書きサイト「白屋書房」のブログです

「約物」セクション追加

全角半角・タテヨコのくだりが終わったので縦書きにおける約物の制御に入りました。
とりあえず“引用符”と、感嘆符! や英単語 etc. に自動で入るグルーと、(括弧類)の扱い方までです。
あとはダッシュだけかな?――と言ってもこれが一番根が深いんだけどorz

アクセントつきアルファベットの扱い方に比べたら大して複雑でもない問題なのに何をそんなに苦渋しているのかというと、ひとえに私の執筆方針すなわち「原稿中におけるコマンドを可能な限り減らす」のせいです。
フォントによってダッシュの間が繋がらないことは旧知の問題で、そのための解決策もとっくに出ています。\―コマンドを繋がるように定義して、文中に出てくるダッシュの頭にすべて\をつければいいんでした。

やりたくない。

原稿中にコマンド書きたくないんだよ!今回の問題すべてマクロ定義で片付けたけど本当は嫌なんだよ! それでも二重感嘆符なんかはもともと縦中横にしなければならないことは分かっていて、他の二桁の数字とかと同じと思えばまだ許せました。
ところが何故かダッシュだけは許せないんです。こう――打ちたいんです。
私自身がかなりダッシュを多用する性質だからかもしれません。大体が感情が高ぶってたりタメが入ったりするところに使うものなのでバックスラッシュがついてると水を差されたように感じるのかも。

とはいえ自動縦中横や自動ダッシュ置換を行えるほど筆者の技術力は高くありません。正直感嘆符の直後にカギカッコがくる時のグルー禁止処理だけで死ぬかと思った。それもまだベータ版だし。なんで次の字すなわちトークンをどこにもうまいこと代入できないんだ。
あーどうやったら「TeXレベルの」マクロ力強くなるんだろう……私が原著当たってないのが悪いんだけど、それでもどこかに定義済み変数(というものがあるのかどうか知らんけど要は状態を取得できるインターフェース的な)のリストとかハンディなコマンド一覧とかがあればずいぶん普通のプログラミングに近くなって助かるのにorz

しばらくは書いて書いて書き続けてTeX思考力を養うしかなさそうです。頑張ろう。

激闘TeX:ギリシャ文字とキリル文字

 アクセントと特殊記号 (2)前回の投稿までで、西ヨーロッパ諸語はなんとかなりました。次はギリシャ語とロシア語をなんとかする番なんですが、今まで避けてきたフォントの話題に触れなければならないのでまあめんどくさかったです。とりあえず私なりの理解をしたためてみます。

続きを読む

激闘TeX:文字と記号のタテヨコ

 筆者はド素人ですが、ド素人なりにサイトのページには可能な限り分かりやすく、こうすればいいという結論を書くように心がけています。ですがもちろんそこに至るまでにものすごく迷走したり試行錯誤しています。
 失敗の繰り返しなのでサイトやQiitaみたいなところには上げられないし、ということで、自分用の備忘録として、そういうTeXとの死闘の記録や詳しい解説をここに書いていこうと思います。
(環境はすべてupLaTeX、ファイルの文字コードUTF-8です)

続きを読む

引っ越しました

恐ろしいことに最後の投稿から1年が経ってしまいましたが、また更新できそうなのでブログの方にも戻ってきました。
うかうかしてる間にTeX Liveの2017年版が出ちゃったりして愕然としています。

これまでサイトはTumblrで作っていたんですが、いろいろ無理があったのでGitHubの方にお引っ越ししました。
やっぱりソースコードを書いて表示するにはそれに合った適切な環境が必要だと痛感しました。単にMarkdown対応してるだけじゃやっぱりきついです。 そもそもこういう解説的なものを書いていくには、書いた順に記事が並んでいくブログというメディアは本質的に合わない。

https://hakuoku.github.io/agakuTeX/

構成を大幅に見直し、最初に基礎となるこちゃこちゃした文字と記号の制御をやってしまってからルビや文書構造などの大技に移行するようにしました。今のところまだアクセントつきアルファベットのあたりで、つまりはかなり最初の方です。
そもそもTumblrに上げてた情報が検証しなおしたら内容・文章ともにガタガタの間違いだらけで、大した需要もないサイトですが消え入りたくなりましたorz

サイトの構築には静的サイトジェネレーターの「Hugo」を使っています。とにかく速い!多少の知識(と英語力)は要るけど、シンプルでスピーディーでエレガントで大変おすすめです。
どちらかというとブログ的なテンプレートが多くて固定サイト用のテーマが見つからず、結局かなりの部分を自分で書くことになりました。今はつぎはぎクオリティだけど、いつか汎用化して誰でも使えるような固定サイトorドキュメンテーション用テンプレートに仕上げたいという遠大な夢があります。
コマンドラインからじゃなくてGUIでもっと手軽に使えるようになれば、ブログじゃなくて静的サイトが作りたい人の需要を満たせると思うんだけどどうだろう。シェルスクリプトにHTMLベースのガワをかぶせることは割りと簡単にできるみたいなので、そのへんも研究してみたいところです。

亀の歩みですが、少しでもお役に立てれば嬉しいです。

改行問題解決しました!

今まで小説における改行を「見たまま出力」するために、プリアンブルで \obeylines を宣言してたんですが、これだと空行そのもの、原稿中の1行とか2行アキは結局無視されるという問題がありました。
仕方ないから入れたい空行の数だけ \vspace{baselineskip} をソースに書くという手に頼っていましたが、WYSIWYG的には見づらいわセマンティック的には間違ってるわでもうどうしようもなかった。
早くなんとかしたかったものの私の知識が足りなすぎて五里霧中だったのが、先日∃x(x=a)さんがアドバイスを下さり、改行問題はここに見事に解決されました!

具体的には以下のマクロをプリアンブルに入れてやります。もちろん外部のパッケージにしても。

{\catcode`\^^M=\active%
\gdef\xobeylines{\catcode`\^^M\active \def^^M{\par\leavevmode}}%
\global\def^^M{\par\leavevmode}}

んでbegin{document}の直後で、 \xobeylines を宣言するだけ!
これで晴れて本文を、ガチで見たまま改行できるようになりました。


そもそも元の\obeylinesは、以下のように定義されてるそうです。

{\catcode`\^^M=\active % these lines must end with %
\gdef\obeylines{\catcode`\^^M\active \let^^M\par}%
\global\let^^M\par} % this is in case ^^M appears in a \write

^^Mが改行文字を表すので(ASCIIの13番)、それを全部\parに変えちゃうことでオール改行を実現しているようです。

ただこの方法だと、一つの行(=段落)を組み終わって次の行に移るためにvertical modeに遷移した時、「中身が何もない\parだけの行は無視する」というTeX本来の動作が勝ってしまいます。
そこで^^M\par\leavevmodeにしてやることで、空の行でも立ち止まって出力することが可能になった、という寸法らしいです。

TeXレベルの命令を書き換えてしまうのはちょっと怖かったので、新しい命令として定義してみました。命名は適当です。もっとちゃんとしたコマンド名があればそっちの方がいいです。
あと本家obeylinesに揃えてプリアンブルで宣言したかったんだけど、それだと機能しなかったのでdocumentの内側に書くことにしてます。(トンチンカンなこと言ってたらすみません)

これでいわば「空行含め全ての論理行をことごとくパラグラフとして扱う」ことになったので、TeX流の意味論的にはもう完全に間違ってることになりましたが、もともと正しい文法なんぞ目指しちゃいないのでよしとします。
「可能な限り生原稿に寄せた形のTeXソースにする」という(無駄な)原則に一歩近づけました。嬉しい。∃xさん本当にありがとうございました。

サイトの方の記事はこれから編集します。早くレイアウト編まで作らないと……。

参考

TEX in Practice: Volume III: Tokens, Macros - Stephan v. Bechtolsheim - Google ブックス

Introduction

まだコンテンツもろくにない状態ですが、年の瀬だし来年の抱負なども兼ねてまえがき的なものを書いておこうと思います。サイトの記事とかぶってるところもあるんで、読む意味はあんまりないです。

前提:当サイトは文庫本作成エンジン「威沙」を応援しています。

えー時々なんか技術っぽいことを呟いたりもしますが、基本的に筆者はプログラミングができません。一応勉強はしましたが商業的・学術的に使用したことは一切ありません。多分これからもないと思います。
その上で(ド素人という立場の上で)、現時点で最速で縦組みの小説本を作ろうと思ったら、とにかく威沙がおすすめです。「無料における最強の組版ソフトウェア」というキャッチフレーズの通り、ほんとに綺麗に柔軟に組めます。というわけでいくらステマの謗りを受けようとも、筆者は威沙と作者の風野旅人氏、サークル「Sylphid Software Systems」を全力で推していく所存です。

あとはやっぱデファクトスタンダードとしてのWordの地位は揺るがないと思います。プロプライエタリ(企業占有)とはいえMicrosoftが潰れるって事態はちょっと考えづらい。このサイトは徹底的にフリーソフトウェアを推していきますが、それでもLibreOfficeとかあるんだし。
だからWordその他ワープロソフトで頑張って理想に近く出力できたら、少なくともアマチュアレベルでは十分なんだと思います。

さてそういったスタンスに立った上で、以下組版をめぐる展望です。

続きを読む