\chapter{\TeX} % 第五章
■ このスレッドは過去ログ倉庫に格納されています
0737730
2007/05/28(月) 23:16:23ああいう感じでいいなら、あれに対して補足すると……
\kintou の定義は次のように変更したほうが無難。
\def\kintou#1#2{%
\count@\z@ \@tfor\@tempa:=#2\do{\advance\count@\@ne}%
\setbox\z@\hbox{#2}%
\ifnum\count@<\tw@
\dimen@#1\relax
\advance\dimen@-\wd\z@ \@kintou@skip .5\dimen@ \@plus.5\p@ \@minus.5\p@
\hskip\@kintou@skip \box\z@ \hskip\@kintou@skip
\else
\dimen@#1\relax \advance\dimen@-\wd\z@%%% 少し変更
\advance\count@\m@ne \divide\dimen@\count@
\@kintou@skip\dimen@ \@plus.5\p@ \@minus.5\p@
\let\@tempa\@gobble \def\@tempb{\hskip\@kintou@skip}%
\let\@@protect\protect \let\protect\@unexpandable@protect%%% 追加
\@tfor\@tempc:=#2\do{\edef\@tempa{\@tempa\@tempb \@tempc}}%
\let\protect\@@protect%%% 追加
\expandafter\@tempa
\fi}
そのうえで、必要があれば、\kintou の引数中では(1文字扱いの部分は { と } で
囲むという前回の注意点に加え)必要があれば、コマンドに \protect を前置するといい。
# 例えば、\kintou{3zw}{{\ruby{猫}{ねこ}}} ではエラーが生じるなら、
# \kintou{3zw}{{\protect\ruby{猫}{ねこ}}} としてみる。
\ruby などの(特定の)コマンドを 1 文字扱いにする処理も自動化できはするが、
実際問題としては正規表現置換で { と } を補うのが手早いと思う。
■ このスレッドは過去ログ倉庫に格納されています