名前: しっぽ愛好家 日時: 2003-02-06 08:46:21 IPアドレス: 211.4.36.*
>>16183 見出しの類に,単に書体・文字サイズの変更のみならず その他の装飾を加えようという場合には, TeX では扱いにくいところは画像にする ということにすると,比較的容易に実現することができます. 例えば,章見出しの背景に円を置き,また章番号に *固定長の* アンダーラインを 引く場合には,背景の円と章番号のアンダーラインの全体を 1 個の画像にし, それを(\includegraphics で)取り込めばよいでしょう. %%% \chapter(というより,\@makechapterhead)の定義の中に, %%% ``背景画像'' の読み込みの処理を追加するわけです. 節見出しに楕円を添える,という場合にも, その楕円は画像にするのが手軽です. 一方,(行分割を考えなくても構わないような)文字列の 長さに応じたアンダーラインを引く場合には, 文字列を一度ボックスに収め,そのボックスの幅を利用します. 節見出しが 1 行に収まる,ということがわかっていれば, 次のようにすることができるでしょう. \setbox0\hbox{<見出し文字列>} \hbox{% {\color[gray]{.5}%%% グレーの濃さは適宜変更してください. \vrule width \wd0 depth 1mm height -.5mm}% %%% height/depth の値も適宜変更してください. \llap{\box0}} 見出し文字列が複数行にわたる場合には,改行位置を(\\ のような) 特定のトークンを用いてユーザが必ず指定するようにすれば(*), その特定のトークンを区切りにして ``個々の行'' を取得することができます. あとは,その個々の行に対して上記のような処理を施せばよいわけです. %%% (*) 見出しの場合には,ユーザが改行位置を決めても構わない %%% (というよりも,その方が美観の面からみて望ましい結果が得られる) %%% でしょう. もちろん,``行分割可能なアンダーラインを作成するマクロ'' の, アンダーラインそのものの部分をカスタマイズする,という方法も 考えられるでしょうし,``一度段落を作成した後,個々の行を (最後の行から順に)\lastbox を用いて取得し,アンダーラインをつける'' という方法も考えられます. %%% このあたりはほとんど趣味の領域ですね. %%% ちなみに,『基礎解説』の組版を行ったときには…節見出しは 1 行に %%% 収まることがわかっていましたので,結構無造作に処理しました.
この書き込みへの返事: