Re: 学習の一助になれば(LaTeX2.09 時代の``doc''ファイル)

名前: ut
日時: 2007-11-16 16:01:35
IPアドレス: 157.118.27.*

>>50027 # 去り際がキレイでなく恥ずかしいのですが…: 最初の書き込み(>>49575)の際に、 > それで latex.tex はもう obsolete なわけですが、source2e.tex はいろいろと > 複雑なので、当初のアイデアを把握するには latex.tex も役に立ちます。 みたいなことを書きました。 その際 classes.dtx のことを書き落としてしまい、それで訂正を させていただいたのですけど(>>49590)、そのときに併せて書いて おくべきだったことを、今さらですが補足しときます。 LaTeX2.09 時代の``doc''ファイルについてです。classes.dtx も やはりそれなりに複雑ですので、まずは元々のシンプルなアイデア を知るには、doc ファイルを覘いてみるというのも「学習」という 意味では有益ではなかろうかと(*ちゃんと、もう obsolete なんだ ということを自覚してさえいれば*)。 # ちょうど、LaTeX2.09 について書かれたものであっても、磯崎秀 # 樹さんの『LaTeX 自由自在』が今でも非常に有益であるように。 で、LaTeX2.09 時代の doc ファイルというのは、今でいう dtx フ ァイルみたいなものらしいです。latex.tex と同じようなスタイル で、コードにコメントが付されています(doc という拡張子がつい てますけど、中身は普通のテキストファイルです)。 下にサンプルを貼っておきますが、場合によっては今の dtx ファ イルには書いてないことがコメントとしてくっつけてあったりして、 我々初級ユーザーには結構参考になります。 現在のディストリビューションには LaTeX2.09 時代の doc ファイ ルはさすがに含まれてないと思うので、   CTAN: obsolete/macros/latex209/distribs/latex209.tar.gz をもらってきます。 解凍すると、doc; fonts; general; sty という 4 つのフォルダが 出来ますが、doc というフォルダに目指す``doc''ファイルが入って ます。 # article.doc, art10.doc, art11.doc, art12.doc; book.doc, bk10.doc # bk11.doc, bk12.doc; report.doc, rep10.doc, rep11.doc, rep12.doc # をひとつにまとめて、LaTeX2e 用に書き直したのが多分 ``classes.dtx'' # なんじゃないのかな。 含まれている doc ファイルを全部見る必要はないので、差し当たり article.doc と art10.doc あたりを眺めるくらいで十分かと思いま すです。 ## ================== ## 学習の一助になれば ## ================== ##  ・第一弾 どこに定義が書いてあるのか >>49575, >>49590; >>49660 ##  ・第二弾 お勧めのレファレンス >>49631 ##  ・第三弾 米英蘭ユーザーグループ会報記事 >>49776 ##  ・第四弾 ``@''は「at」じゃなくて「of」と読むといいかも >>49861 ##  ・第五弾 入門から初級への道(第一弾の焼き直し) >>49997 ##  ・第六弾 最後に、よく迷うところをひとつだけ >>50027 ##  ・第七弾 オマケ: 温故知新 >>この書き込み 以下、サンプルとして、   [1] latex.tex (LaTeX2.09)   [2] article.doc (LaTeX2.09)   [3] ltsect.dtx (LaTeX2e) < source2e   [4] jclasses.dtx (LaTeX2e) < pldoc からそれぞれ、\maketitle 周辺の部分を抜粋してみます: [1] latex.tex (LaTeX2.09): ----- from: latex.tex -------------------------------------- % LATEX VERSION 2.09 <25 March 1992> % Copyright (C) 1992 by Leslie Lamport 〔…中略…〕 % ***************************************** % * THE TITLE * % ***************************************** % % The user defines the title, author, date by the declarations \title{NAME}, % \author{NAME} and \date{DATE}. Inside these, he can use the \thanks % command to make footnoted acknowledgements, notice of address, etc. % The \maketitle command produces the actual title. Note: multiple authors % are separated with the \and command. \def\title#1{\gdef\@title{#1}} \def\author#1{\gdef\@author{#1}} \def\date#1{\gdef\@date{#1}} \gdef\@date{\today} %Default is today's date \def\thanks#1{\footnotemark\begingroup \def\protect{\noexpand\protect\noexpand}\xdef\@thanks{\@thanks \protect\footnotetext[\the\c@footnote]{#1}}\endgroup} \def\@thanks{} \def\and{%% % \begin{tabular} \end{tabular}\hskip 1em plus.17fil\begin{tabular}[t]{c}%% \end{tabular} } ----- from: latex.tex -------------------------------------- [2] article.doc (LaTeX2.09): ----- from: article.doc ------------------------------------ % ARTICLE STANDARD DOCUMENT STYLE -- Released 14 Jan 1992 % for LaTeX version 2.09 % Copyright (C) 1992 by Leslie Lamport 〔…中略…〕 % **************************************** % * TITLE AND ABSTRACT * % **************************************** % % \maketitle == % BEGIN % \par % \begingroup % redefine \@makefnmark so footnote marks take zero space (this % makes centering look better) % \thefootnote == \fnsymbol{footnote} %to number by *, dagger, etc. % if @twocolumn = true % then \twocolumn[\@maketitle] % else \@maketitle % fi % \thispagestyle{plain} % \@thanks % \thanks defines \@thanks to have \footnotetext commands % % for producing footnotes. % \endgroup % END \def\maketitle{\par \begingroup \def\thefootnote{\fnsymbol{footnote}}% \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}% \if@twocolumn \twocolumn[\@maketitle]% \else \newpage \global\@topnum\z@ % Prevents figures from going at top of page. \@maketitle \fi\thispagestyle{plain}\@thanks \endgroup \setcounter{footnote}{0}% \let\maketitle\relax \let\@maketitle\relax \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax} \def\@maketitle{\newpage \null \vskip 2em % Vertical space above title. \begin{center}% {\LARGE \@title \par}% % Title set in \LARGE size. \vskip 1.5em % Vertical space after title. {\large % each author set in \large, in a \lineskip .5em % tabular environment \begin{tabular}[t]{c}\@author \end{tabular}\par}% \vskip 1em % Vertical space after author. {\large \@date}% % Date set in \large size. \end{center}% \par \vskip 1.5em} % Vertical space after date. ----- from: article.doc ------------------------------------ [3] ltsect.dtx (LaTeX2e): ----- from: ltsect.dtx Date: 1996/12/20 Version v1.0z ------ ========= The Title ========= ・\title, \author The user defines the title and author by the declarations \title{<name>}, \author{<name>} ・\date Similarly the date is declared with \date{<date>}. ・\thanks, \and Inside these, the \thanks{<footnote text>} command may be used to make acknowledgements, notice of address, etc. in a footnote. If there are multiple authors, they have to be separated with the \and command. ・\maketitle And finally, the \maketitle command produces the actual title, using the information previously saved with the other commands. ・\title, \@title \title for use in \maketitle. If not given \maketitle will produce an error message.    3 \def\title#1{\gdef\@title{#1}}    4 \def\@title{\@latex@error{No \noexpand\title given}\@ehc} ・\author, \@author \author for use in \maketitle. If not given \maketitle will produce a warning message.    5 \def\author#1{\gdef\@author{#1}}    6 \def\@author{\@latex@warning@no@line{No \noexpand\author given}} ・\date, \@date \date for use in \maketitle. If not given \maketitle will produce \today as the default.    7 \def\date#1{\gdef\@date{#1}}    8 \gdef\@date{\today} ・\thanks    9 \def\thanks#1{\footnotemark   10 \protected@xdef\@thanks{\@thanks   11 \protect\footnotetext[\the\c@footnote]{#1}}%   12 } ・\@thanks   13 \let\@thanks\@empty ・\and   14 \def\and{% % \begin{tabular}   15 \end{tabular}%   16 \hskip 1em \@plus.17fil%   17 \begin{tabular}[t]{c}}% % \end{tabular} ----- from: ltsect.dtx Date: 1996/12/20 Version v1.0z ------ [4] jclasses.dtx (LaTeX2e): ----- from: jclasses.dtx ----------------------------------- \ProvidesClass{jarticle} [2006/06/27 v1.6 Standard pLaTeX class] 〔…中略…〕 ===== 表 題 ===== 〔…中略…〕 ・\maketitle このコマンドは、表題を作成し、出力します。表題ページを独立させるかどうかに よって定義が異なります。report とbook クラスのデフォルトは独立した表題です。 article クラスはオプションで独立させることができます。 〔…中略…〕 \if@titlepage \newcommand{\maketitle}{\begin{titlepage}% \let\footnotesize\small \let\footnoterule\relax \let\footnote\thanks \null\vfil \vskip 60\p@ \begin{center}% {\LARGE \@title \par}% \vskip 3em% {\Large \lineskip .75em% \begin{tabular}[t]{c}% \@author \end{tabular}\par}% \vskip 1.5em% {\large \@date \par}% % Set date in \large size. \end{center}\par \@thanks\vfil\null \end{titlepage}% footnote カウンタをリセットし、\thanks と \maketitle コマンドを無効にし、いく つかの内部マクロを空にして格納領域を節約します。 \setcounter{footnote}{0}% \global\let\thanks\relax \global\let\maketitle\relax \global\let\p@thanks\relax \global\let\@thanks\@empty \global\let\@author\@empty \global\let\@date\@empty \global\let\@title\@empty タイトルが組版されたら、\title コマンドなどの宣言を無効にできます。\and の 定義は、\author の引数でのみ使用しますので、破棄します。 \global\let\title\relax \global\let\author\relax \global\let\date\relax \global\let\and\relax }% \else \newcommand{\maketitle}{\par \begingroup \renewcommand{\thefootnote}{\fnsymbol{footnote}}% \def\@makefnmark{\hbox{\ifydir $\m@th^{\@thefnmark}$ \else\hbox{\yoko$\m@th^{\@thefnmark}$}\fi}}% \long\def\@makefntext##1{\parindent 1em\noindent \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}% \if@twocolumn \ifnum \col@number=\@ne \@maketitle \else \twocolumn[\@maketitle]% \fi \else \newpage \global\@topnum\z@ % Prevents figures from going at top of page. \@maketitle \fi \thispagestyle{jpl@in}\@thanks ここでグループを閉じ、footnote カウンタをリセットし、\thanks, \maketitle, \@maketitle を無効にし、いくつかの内部マクロを空にして格納領域を節約します。 \endgroup \setcounter{footnote}{0}% \global\let\thanks\relax \global\let\maketitle\relax \global\let\p@thanks\relax \global\let\@thanks\@empty \global\let\@author\@empty \global\let\@date\@empty \global\let\@title\@empty \global\let\title\relax \global\let\author\relax \global\let\date\relax \global\let\and\relax } ・\@maketitle 独立した表題ページを作らない場合の、表題の出力形式です。 \def\@maketitle{% \newpage\null \vskip 2em% \begin{center}% \let\footnote\thanks {\LARGE \@title \par}% \vskip 1.5em% {\large \lineskip .5em% \begin{tabular}[t]{c}% \@author \end{tabular}\par}% \vskip 1em% {\large \@date}% \end{center}% \par\vskip 1.5em} \fi ----- from: jclasses.dtx ----------------------------------- [End of Text]

この書き込みへの返事:

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