Re: 学習の一助になれば(入門書を読み終えたら)

名前: ut
日時: 2007-10-29 19:30:34
IPアドレス: 157.118.27.*

>>49861 # この 1 ヶ月ほど独り言を書き続けて来ましたが、この書き込みと # 次の書き込みでオシマイにしますので、なにとぞご容赦ください。 # 今回の書き込みは引用ばかりで非常に文系チックな書き方となって # いますので、いつも以上に読み難いかもしれません。 さて、入門書を一通り通読した後に、それから先、自分でいろいろ調べ るにはどうしたら良いかというと、多分、普通は dtx ファイルを読む ことになるのだと思います。 dtx ファイルというのは、platex/base にある README.txt (``pLaTeX2e <2006/01/04> Copyright 1995-2006 ASCII Corporation'') によりますと: ----- From: README.txt ----- pLaTeX2e のパッケージに含まれているファイルのうち、拡張子が .dtx のファイ ルは、pLaTeX2e で定義をしているコマンドのソースコード、ソースコードの説明、 コマンドの簡単な使い方などをまとめた文書ファイルです。 ----- From: README.txt ----- とのことです。``Literate Programming''という考えの LaTeX 版 の試みということのようです(ここで「試み」と書いたのは、 Mittelbach さん自身が ----- From: doc.dtx ----- The method of documentation of TeX macros which I have introduced here should also only be taken as a first sketch. It is designed explicitly to run under LaTeX alone. Not because I was of the opinion that this was the best starting point, but because from this starting point it was the quickest to develop. ----- From: doc.dtx ----- とおっしゃってるからなのですが、LaTeX2e がリリースされてもう 10年以上経っていますし、以下で述べるように LaTeX 自体が dtx で配布されてもいますので、dtx は事実上の「標準」なのでしょう)。 CTAN から各種パッケージをもらってきても、まずは dtx ファイル から .sty ファイルとドキュメントとを取り出さねばならないはず なのですが、最近は CTAN の側がパッケージライターに対して初め からドキュメントは pdf にするように求めていたりもするようです ので(cf. TUGboat 24:2, 2003, p.207 f.)、私と同程度の初級ユ ーザーはあまり dtx ファイルには触らないのでしょうか???。 以下に述べることは、最初の書き込み(>>49575)のほぼ繰り返しです:  (A1) LaTeX base system の各種 dtx ファイル  (A2) source2e.tex  (A3) latex.ltx  (A4) latex.fmt  (B1) plvers.dtx, plfonts.dtx, plcore.dtx, plext.dtx, pl209.dtx,   kinsoku.dtx, jclasses.dtx, jltxdoc.dtx  (B2) pldoc.tex  (B3) plcore.ltx  (B4) platex.fmt  (C1) classes.dtx  (C2) article.cls, report.cls, book.cls, size10.clo,   size11.clo, size12.clo, bk10.clo, bk11.clo, bk12.clo,  (D1) jclasses.dtx  (D2) jarticle.cls, jreport.cls, jbook.cls, jsize10.clo, jsize11.clo, jsize12.clo,   jbk10.clo, jbk11.clo, jbk12.clo,   tarticle.cls, treport.cls, tbook.cls, tsize10.clo, tsize11.clo, tsize12.clo,   tbk10.clo, tbk11.clo, tbk12.clo (A1) から (A4) の中身は本質的には同じものです(多分)。(A1) の形で LaTeX2e は保守・配布されていて、DocStrip ユーティリテ ィを使ってそれを (A3) の形にまとめ、それを initex を使って (A4) の形にするらしいです。 (A3) は (A4) を作るためのものなので、元々はユーザーが普通に 読むことは想定してないと思われるのですが、上級者の皆さんは よく (A3) に言及されます。(A4) はテキストじゃないので読めま せん。 (A2) は (A1) の各種 dtx ファイルをひとつにまとめてタイプセッ トするためのものです。私のような初級ユーザーはこちらを使うの が便利です。コマンドインデックスもついてますし。 最初の書き込み(>>49575)にも書きましたが、(A1) の個々の dtx ファイルのうち必要なものだけをタイプセットしても、勿論構わな いです。 以上が LaTeX の``kernel''とかと呼ばれる、LaTeX のいわば本体 部分になります(多分)。 (B1) から (B4) が pLaTeX の場合です。(A1) から (A4) の関係 とまったくパラレルというわけではないのですけど、まぁ、詳しく は platex.dtx を見てください。(B1) をひとつにまとめたものが (B2) であるという点は一緒です。 (p)LaTeX はまず kernel を読み込んだ後にクラスファイルを読み 込むわけですから、定義を調べるには kernel だけを見るのでは不 十分です。 (C1) から (C2) が作られ、 (D1) から (D2) が作られるので、(C2) や (D2) の各種クラスファイルの設定について知りたい場合には、 それぞれ (C1) や (D1) を見れば良いことになります。 長々と述べてきましたが、以上から、各種定義を知りたい場合には、 (A2), (B2), (C1), (D1) を見ればいいわけです。なお、(D1) は (B2) に含まれていますし、順番としては恐らくクラスファイルの説明から 見たほうがいいので、結局のところ、     ・日本語のクラスファイルを使っているなら:         (B2) ==> (A2)     ・欧文のクラスファイルを使っているなら:         (C1) ==> (A2) の順に調べていくことになると思われます。 # 参考: >>27355 ## ・第一弾 どこに定義が書いてあるのか >>49575, >>49590; >>49660 ## ・第二弾 お勧めのレファレンス >>49631 ## ・第三弾 米英蘭ユーザーグループ会報記事 >>49776 ## ・第四弾 ``@''は「at」じゃなくて「of」と読むといいかも >>49861 以下は、実際に dtx ファイルを見るとこんなにいろいろ書いてあり ますよ、という一例です(中級以上の皆さんは既に見たことあるもの ばかりのはずですので、以下延々とご覧になる必要ないです): >>49814 目次の出力を変更したい > > 直接\tableofcontentsを再定義すればいいのでしょうけど、 > 詳しい書式などを知らないのでできません。 > > 加えて、このような詳しい書式の書き方を学習できる参考文献がありましたら教えてください。 参考文献については TeX Wiki の「TeX の本」をご覧いただくとして、 jclasses.dtx, classes.dtx, ltsect.dtx を見るだけでも、以下のよ うにかなりの情報を得ることが出来ます(以下の引用では、実際のコ ードの部分は割愛してます): ----- 以下 jclasses.dtx の 相互参照 ==> 目次 より----- ===== 目 次 =====  \section コマンドは、.toc ファイルに、次のような行を出力します。     \contentsline{section}{<title>}{<page>}  <title> には項目が、<page> にはページ番号が入ります。\section に見出し番号 が付く場合は、<title> は、\numberline{<num>}{<heading>} となります。<num> は \thesection コマンドで生成された見出し番号です。<heading> は見出し文字列で す。この他の見出しコマンドも同様です。  figure 環境での\caption コマンドは、.lof ファイルに、次のような行を出力し ます。     \contentsline{figure}{\numberline{<num>}{<caption>}}{<page>}  <num> は、\thefigure コマンドで生成された図番号です。<caption> は、キャプ ション文字列です。table 環境も同様です。  \contentsline{<name>} コマンドは、\l@<name> に展開されます。したがって、 目次の体裁を記述するには、\l@chapter, \l@section などを定義します。図目次 のためには \l@figure です。これらの多くのコマンドは \@dottedtocline コマン ドで定義されています。このコマンドは次のような書式となっています。    \@dottedtocline{<level>}{<indent>}{<numwidth>}{<title>}{<page>}     ・<level>: “<level> <= tocdepth”のときにだけ、生成されます。\chapter はレベル0、        \section はレベル1、... です。     ・<indent>: 一番外側からの左マージンです。     ・<numwidth>: 見出し番号(\numberline コマンドの <num>)が入るボックスの幅です。 \c@tocdepth  tocdepth は、目次ページに出力をする見出しレベルです。 また、目次を生成するために次のパラメータも使います。     ・\@pnumwidth: ページ番号の入るボックスの幅です。     ・\@tocmarg: 複数行にわたる場合の右マージンです。     ・\@dotsep: ドットの間隔(mu 単位)です。2 や1.7 のように指定をします。     ・\toclineskip: この長さ変数は、目次項目の間に入るスペースの長さです。デフォルトはゼロと        なっています。縦組のとき、スペースを少し広げます。 \numberline, \@lnumwidth  \numberline マクロの定義を示します。オリジナルの定義では、ボックスの幅を \@tempdima にしていますが、この変数はいろいろな箇所で使われますので、期待 した値が入らない場合があります。  たとえば、pLaTeX2eでの \selectfont は、和欧文のベースラインを調整するた めに \@tempdima 変数を用いています。そのため、\l@... マクロの中でフォントを 切替えると、\numberline マクロのボックスの幅が、ベースラインを調整するとき に計算した値になってしまいます。  フォント選択コマンドの後、あるいは \numberline マクロの中でフォントを切替 えてもよいのですが、一時変数を意識したくないので、見出し番号の入るボックスを \@lnumwidth 変数を用いて組み立てるように \numberline マクロを再定義します。 \@dottedtocline  目次の各行間に \toclineskip を入れるように変更します。このマクロは ltsect.dtx で定義されています。 \addcontentsline  ページ番号を \rensuji で囲むように変更します。横組のときにも‘\rensuji’コマ ンドが出力されますが、このコマンドによる影響はありません。このマクロは ltsect.dtx で定義されています。 ----- 以上 jclasses.dtx の 相互参照 ==> 目次 より----- ----- 以下 classes.dtx の Cross Referencing ==> Table of Contents, etc. より----- ======================= Table of Contents, etc. ======================= A \section command writes a \contentsline{section}{<title>}{<page>} com- mand on the .toc file, where <title> contains the contents of the entry and <page> is the page number. If sections are being numbered, then <title> will be of the form \numberline{<num>}{<heading>} where <num> is the number produced by \thesection. Other sectioning commands work similarly. A \caption command in a `figure' environment writes \contentsline{figure}{\numberline{<num>}{<caption>}}{<page>} on the .lof file, where <num> is the number produced by \thefigure and <caption> is the figure caption. It works similarly for a `table' environment. The command \contentsline{<name>} expands to \l@<name>. So, to specify the table of contents, we must define \l@chapter, \l@section, \l@subsection, ... ; to specify the list of figures, we must define \l@figure; and so on. Most of these can be defined with the \@dottedtocline command, which works as follows. \@dottedtocline{<level>}{<indent>}{<numwidth>}{<title>}{<page>}    ・<level>: An entry is produced only if <level> <= value of the tocdepth counter.    Note, \chapter is level 0, \section is level 1, etc.   ・<indent>: The indentation from the outer left margin of the start of the contents    line.   ・<numwidth>: The width of a box in which the section number is to go, if <title>    includes a \numberline command. \@pnumwidth, \@tocrmarg, \@dotsep This command uses the following three parameters, which are set with a \newcommand (so em's can be used to make them depend upon the font).   ・\@pnumwidth: The width of a box in which the page number is put.   ・\@tocrmarg: The right margin for multiple line entries. One wants \@tocrmarg >=    \@pnumwidth   ・\@dotsep: Separation between dots, in mu units. Should be defined as a number    like 2 or 1.7 ----- 以上 classes.dtx の Cross Referencing ==> Table of Contents, etc. より----- ----- 以下 ltsect.dtx の Sectioning Commands ==> Table of Contents, etc. より ----- ======================= Table of Contents, etc. ======================= A \l@<type>{<entry>}{<page>} Macro needs to defined by document style for mak- ing an entry of type <type> in a table of contents, etc. E.g., the document style should define \l@chapter, \l@section, etc. Note: When the \protect command is used in the <entry> or <text> of one of the commands below, it causes the following control sequence to be written on the file without being expanded. The sequence will be expanded when the table of contents entry is processed. Surprise: Inside an \addcontentsline or \addtocontents command argu- ment, the commands: \index, \glossary, and \label are no-ops . This could cause a problem if the user puts an \index or \label into one of the commands he writes, or into the optional `short version' argument of a \section or \caption command. \@starttoc The \@starttoc{<ext>} command is used to define the commands: \tableofcontents, \listoffigures, etc. For example: \@starttoc{lof} is used in \listoffigures. This command reads the .<ext> file and sets up to write the new .<ext> file. \addcontentsline The \addcontentsline{<table>}{<type>}{<entry>} command allows the user to add his/her own entry to a table of contents, etc. The command adds the entry \contentsline{<type>}{<entry>}{<page>} to the .<table> file. This macro is implemented as an aplication of \addtocontents. Note that \thepage is not expandable during \protected@write therefore one gets the page number at the time of the \shipout. \addtocontents The \addtocontents{<table>}{<text>} command adds <text> to the .<table> file, with no page number. \contentsline The \contentsline{<type>}{<entry>}{<page>} macro produces a <type> entry in a table of contents, etc. It will appear in the .toc or other file. For example, The entry for subsection 1.4.3 in the table of contents for example, might be produced by: \contentsline{subsection}{\makebox{30pt}[r]{1.4.3} Gnats and Gnus}{22} The \protect command causes command sequences to be written without expanding them. \@dottedtocline{<level>}{<indent>}{<numwidth>}{<title>}{<page>}: Macro to produce a table of contents line with the following parameters:   ・level: If <level> > \c@tocdepth, then no line produced.   ・indent: Total indentation from the left margin.   ・numwidth: Width of box for number if the <title> has a \numberline command.   As of 25 Jan 1988, this is also the amount of extra indentation added to   second and later lines of a multiple line entry.   ・title: Contents of entry.   ・page: Page number. Uses the following parameters, which must be set by the document style. They should be defined with \def's.   ・pnumwidth: Width of box in which page number is set.   ・tocrmarg: Right margin indentation for all but last line of multiple-line entries.   ・dotsep: Separation between dots, in mu units. Should be \def'd to a number like   2 or 1.7 〔もうちょっと続くけど以下割愛〕 ----- 以上 ltsect.dtx の Sectioning Commands ==> Table of Contents, etc. より ----- [EOF]

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)