Re: 「コラム」などへの参照、目次出力

名前: しっぽ愛好家
日時: 2003-01-28 15:56:06
IPアドレス: 211.4.33.*

>>15795 %%%『基礎解説』を読んでもわからない,という人がしばしば現れて, %%% 非常に心苦しいのですが… >\begin{boxedminipage}{\textwidth} >\colorbox{black}{\textcolor{white}{\bfseries コラム 1\hspace{1zw}へへへ}} >... >\end{boxedminipage} >というような形式で書いていて、((中略)) できたら、この形を出すには >どこをどう直したらいいのか、 まず,自動的に番号づけを行い,かつ,相互参照を行えるようにするには, ``LaTeX のカウンタ'' を用意し,それを用いて番号づけを行う (ただし,\refstepcounter を用いてカウンタを増やします) ようにすればよいわけです. (cf. 第 3 章(『基礎解説』での該当箇所です.以下同様)) 例えば, \newcounter{column} のようにカウンタ column を用意し, コラム用の環境(環境名を column とします)において, \def\column#1{% #1: コラムのタイトル \refstepcounter{column}% %%% ここに,コラム目次関係の処理(後述します)を入れます. \begin{boxedminipage}% \colorbox{black}{\textcolor{white}% {\bfseries コラム\thecolumn\hspace{1zw}#1}}} \def\endcolumn{\end{boxedminipage}} のように処理すると,column 環境の中で用いた \label を \ref で 参照したときにコラムの番号(\thecolumn)を取得することができます. %%% なお,column 環境を定義するには \column(\begin{column} で %%% 用いられる処理),\endcolumn(\end{column} で用いられる処理)を %%% 定義すればよい,というのは周知のこととしても構わないでしょう. %%% (なお,その点には第 4 章でも言及しています.) なお,上記の \column,\endcolumn の定義は,コラムを \begin{column}{コラムのタイトル} コラムの中身 \end{column} という形式で記述するつもりの定義です. 一方,目次を新設するには, ・目次ファイルに用いる拡張子 ・目次項目の種類の名称 を既存の目次と衝突しないように選んでおいて, \addcontentsline{拡張子}{目次項目の種類}{目次項目そのもの} %%% これは目次項目を aux ファイルに書き出すために用います. \@starttoc{拡張子}%%% これは目次そのものを作成するための記述です. という記述を用いればよいわけです.(cf. 7.2 節(特に,最後の例)) ただし,目次ファイルには \contentsline{項目の種類}{目次項目}{ページ番号} の形式のデータが出力され,その際 ``\l@項目の種類'' というマクロが 用いられるので \l@項目の種類 というマクロを用意しておく必要があります. (cf. 7.2 節) 具体的には(目次項目の種類を column とし,目次ファイルの拡張子を .loc に することにすれば),上記の \column の定義の中で用いる ``コラム目次関係の処理'' としては \addcontentsline{loc}{column}{\thecolumn. #1}%%% #1 はコラムのタイトル くらいのものを用いることができます. %%% \addcontentsline の引数がどのように取り扱われ,目次ファイルに %%% 何が書き出されるか,という点はやはり第 7 章の前半で論じました. %%% それをふまえると,\addcontentsline の第 3 引数を書き換えれば %%% 目次ファイルに出力される内容を変更できる,ということがわかります. 一方コラム目次そのものを作成するには, \def\listofcolumns{% %%% 必要に応じ,ここに \clearpage などの処理を入れます. \chapter*{コラム一覧}%%% 適宜,コラム目次の見出しを用意します. \@starttoc{loc}}%%% \@starttoc を用います. くらいに定義された \listofcolumns を用いることができます. %%% コラム目次の,目次項目を列挙した部分は \@starttoc{loc} に %%% 対応するので,その前後の記述は好きなようにいじってください. また,先程言及したように \l@columns を必要としますが, それは単に \def\l@columns#1#2{% #1: 目次項目,#2: ページ番号 \par\noindent #1\hfill #2} でも構いませんし,永田さんの(15628 での)定義例にあったように \@dottectocline を 用いても構いません. %%% \@dottectocline を用いる場合には,\addcontentsline を %%% \addcontentsline{loc}{column}{\protect\numberline{\thecolumn}#1} %%% のような具合に用いて,コラムの番号の部分を \numberline の %%% 引数にするのもよいでしょう. %%% \@dottedtocline の書式については第 11 章で,目次関係の設定例とともに %%% 説明しています. %%% %%% 上記の説明は,結局,永田さんが例示してくださったことを言葉で %%% %%% 述べただけにすぎません… 以上のような目次の作り方と相互参照のやり方を理解すれば, コラムの体裁を変更するには,目次とは関係しない部分(上記の定義例では \column の定義の最後の 3 行の部分や \endcolumn の部分)を 変更すればよい,ということがおわかりになることと思います. %%% なお,『基礎解説』での言及箇所をいちいち挙げましたが, %%% これは単に,「説明に遺漏があるわけではない」ということを %%% 証明しただけです.お持ちでない方には不快でしたと思われますが, %%% ご寛恕願います.(ただし,脚注・多段組の話や float の %%% 配置アルゴリズムについては取り上げていませんので, %%% 肝心なところで役に立たない,という批判は当然あるでしょうけれども.)

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)