\futurelet において \par を読み飛ばす方法

Re: \futurelet において \par を読み飛ばす方法

- 北見 けん の投稿
返信数: 2
なるほど。TeX言語的な話については Z. R. さんの回答で解決でしょうか。
それはそれとして、「別行見出しが連続している場合(例えば \section{ほげ} の直下に \subsection{ふが} がある場合)等に,見出し間の垂直方向のスペースを制御できるようにしたい」ということであれば、\section や \subsection の定義を工夫するのが良いと思います。\section のところで \everypar に細工を仕込むことで、垂直モードで無視される余分な \par に影響されない形で、\section と \subsection の間に地の文がある場合とない場合で動作を変えることができると思います。
北見 けん への返信

Re: \futurelet において \par を読み飛ばす方法

- 上山 英二 の投稿

>>北見けん様,Z.R. 様

お二方とも大変ご親切かつご丁寧な返信をくださり誠にありがとうございます。

既に投稿から半年近くが経ってしまっておりますが,お礼の返事をすっかり失念してしまっていたことに今更ながら気が付きました。本当に申し訳ございません。

さて,この質問の直後に賜った Z.R. 様のソースコードと,latex.ltx における \@ifnextchar の実装(空白文字の読み飛ばし処理の部分)を参考にしながら自分で試行錯誤してみたところ,無事に所望の出力を得ることができました。今更ながらではございますが,本当にありがとうございます。

また,北見けん様からのご返信で言及のあった \everypar を用いた解決策に関しまして,僕もこちらの方針による実装を試みてみたのですが,僕の TeX 言語力が弱く,\section や \subsection の定義末尾に

\everypar{\vskip\baselineskip\everypar{}}

を追加するというような極めて簡素かつ安直な方策しか思いつくことができませんでした。

しかしこちらの実装方針については,もう少し工夫すれば実用的なものに出来そうな気もするので,今一度自分で考てみようかと思います。

改めまして,お二方ともご返答をくださり本当にありがとうございます。そして,お礼の返事が凄まじく遅れてしまったことを,心より深くお詫び申し上げます。

上山 英二 への返信

Re: \futurelet において \par を読み飛ばす方法

- しっぽ 愛好家 の投稿

>「別行見出しが連続している場合(例えば \section{ほげ} の直下に \subsection{ふが} がある場合)等に,
>見出し間の垂直方向のスペースを制御できるようにしたい」
垂直方向のスペーシングの話だけでよいのなら,垂直方向の空白を \addvspace で入れるというのが
(私が知っている版の LaTeX での)常套手段です.