白屋書房Blog

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

改行問題解決しました!

今まで小説における改行を「見たまま出力」するために、プリアンブルで \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その他ワープロソフトで頑張って理想に近く出力できたら、少なくともアマチュアレベルでは十分なんだと思います。

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

続きを読む

ブログ作成

日誌としてのブログはTumblrだと使いづらいかと思ったので、はてなブログで作ってみました。ダイアリーの方と迷ったけどスマホ対応優先で。

目下サイトのほうはTeXの「強調」まで。縦書きまとめは作ってみた程度。今年いっぱいは多分まだあばら屋。