アレについてだけど。
- 多段組でカラムのベースラインを揃える方法 (Qiita;_yyu_ さん)
リンク先の記事を見ると、どこかの ZR さんが「コード中の空白」についてなんか重箱の隅を突いているようであるが、それは気にしないことにして、「行取り」の処理が正しく行われているかを調べてみた。特に一番肝心な、「行の垂直方向(横組みなら縦、縦組みなら横)の位置を正確に合わせる」ことについて、幾つかのテストケースを試すことにした。
以下が、「行取りマクロをテストするための」文書。
% pLaTeX 文書 % ↓もし当該のマクロが特殊な文書レイアウトを要求するなら, % ↓それに適宜書き換える. \documentclass[a4paper]{jsarticle} \usepackage[papersize={100mm,60mm},margin=10mm]{geometry} % ↓↓↓↓ 以下で, "テスト対象のマクロ"を利用する形で, % "2行取りで出力する"ための命令 \InTwoLines を定義する. %\usepackage{some-package}% パッケージ読むとか \makeatletter %!!!!!!!!!!!!!!!!!!!!!!!!! % TeX コードを張り付けるとか \makeatother %!!!!!!!!!!!!!!!!!!!!!!!!! % \InTwoLines{<テキスト>} : テキストを2行取りで出力. \newcommand{\InTwoLines}[1]{....} % ↑↑↑↑準備終わり \usepackage{ifthen} \newcommand*{\xExpr}{$\sqrt{x(t)^2+y(t)^2}$} \newcommand*{\testCase}[3]{% \newpage \ifthenelse{#1>0}{% \ifthenelse{#1=1}{% ページの途中にある場合。 \ifthenelse{\equal{#2}{Y}}{\xExpr}{Excel}はアレ。\par }{}% \InTwoLines{{\LARGE Excel はアレ}}\par \ifthenelse{#1=2}{% ページの先頭にある場合。 \ifthenelse{\equal{#3}{Y}}{\xExpr}{Excel}はアレ。\par }{}% \ifthenelse{\equal{#3}{Y}}{\xExpr}{Excel}はアレ。\par }{% 比較の規準として、行どりの無い場合。\par \ifthenelse{\equal{#3}{Y}}{\xExpr}{Excel}はアレ。\par \ifthenelse{\equal{#3}{Y}}{\xExpr}{Excel}はアレ。\par \ifthenelse{\equal{#3}{Y}}{\xExpr}{Excel}はアレ。\par }% □←この位置が変動しないことを確かめます。 } \usepackage{yacshowd} \begin{document} \testCase{0}{N}{N} \testCase{0}{N}{Y} \testCase{1}{N}{N} \testCase{1}{N}{Y} \testCase{1}{Y}{N} \testCase{1}{Y}{Y} \testCase{2}{N}{N} \testCase{2}{N}{Y} \end{document}
この文書を通常通り pLaTeX で組版して以下の点を検査する。
- まず、テストの前提条件が満たされていることを確認する。1 ページ目と 2 ページ目で最終行の〈□〉の位置が全く同じであれば OK。そうでないなら、そもそもこのテストは「使えない」ことになる。*1
- 3〜8 ページ目で、最終行の〈□〉の位置が 1 ページ目のものと全く同じであるかを調べる。同じであれば、行取りのマクロは(テストの範囲内では)正しく実装されている。そうでないなら、「少なくとも一部の状況では正しく動作しない」ことが解る。
さて、前述の記事の \linespace
命令をテスト対象にした文書をコンパイルして、結果を見てみると……、
全てのテストケースで OK でした。
というわけで、その記事のコードは安心して自分の文書で使えますね。あっでもソースコード中の空白文字が…(以下略
*1:レイアウトを変更していないなら OK になるはず。