The texnical.dtx class file source

富樫秀昭 (Hideaki Togashi)

1.0e on 1996/03/31

概要

texnical.cls は， dviout/prt のマニュアル (texjman.tex) をタイプセットするための， L^{A}TEX 2εクラスファイルです． pL^{A}TEX 2ε jreport.cls 1996/03/01 v1.0c をもとに作られています． 1995/12/01 以降の L^{A}TEX 2εが必要です．

目次

1 使用法の概略 2 1.1 追加した環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 追加したマクロ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 章建て . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 参照 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5 テクニカルマニュアルの参照 (未完成) . . . . . . . . . . . . . . . . . 4

2 インプリメンテーション 4 2.1 オプションの記述と jreport クラスのロード . . . . . . . . . . . . . 4 2.2 環境の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2.1 行間の狭い環境の追加 . . . . . . . . . . . . . . . . . . . . . 5 2.2.2 その他の環境の追加 . . . . . . . . . . . . . . . . . . . . . . 6 2.2.3 float 環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.3 章建て . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.1 カウンタ出力形式の指定 . . . . . . . . . . . . . . . . . . . . 8 2.3.2 章建てマクロ本体の定義 . . . . . . . . . . . . . . . . . . . . 9 2.3.3 サブタイトル . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.4 目次出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.5 ページスタイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.6 参照関連マクロの追加 . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.6.1 賢い参照マクロ . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.6.2 テクニカルマニュアルの参照 (未完成) . . . . . . . . . . . . 16

2.7 その他の追加したマクロ群 . . . . . . . . . . . . . . . . . . . . . . . 17 2.7.1 表紙の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.7.2 出力形式の指定 . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.8 各種初期化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.8.1 ページスタイル・レイアウトの指定 . . . . . . . . . . . . . . 21 2.8.2 四分空きの指定 . . . . . . . . . . . . . . . . . . . . . . . . . 21

3 付属ファイル 22

1 使用法の概略

jreport クラスで使うことの出来る機能は，基本的にほとんどすべて使うことが出来ます．

クラス・オプションは， jreport クラスで使うことの出来るoneside 以外のすべてのオプションが使用可能です．

1.1 追加した環境

samplefile  ファイル例用 float 環境
narrow  この環境全体に行詰めを行う
narrowdescription 行間を狭くした description 環境
narrowitemize  行間を狭くした itemize 環境
narrowenumerate 行間を狭くした enumerate 環境
ItemList  ITEM の後すぐに改行して，説明を記述

item 記述に\Item[ITEM] を使用のこと

formula  box で囲む
sample  例の記述に用いる — 未完成

1.2 追加したマクロ

以下は，出力形式を統一するためのマクロのうち，引数を取らないもの．

\dviout
\dviprt
\pTeX
\JTeX
\PostScript

\DirSep  ディレクトリ・セパレータ

以下は，出力形式を統一するためのマクロのうち，引数を取るもの．

\File{FILENAME}  ファイル名
\Option{OPTION}  オプション名
\Env{ENVIRONMENTNAME} 環境変数名
\Font{FONTNMAE}  フォント名
\Char{CHARACTER}  文字列
\Cs{MACRONAME}  マクロ名 \MACRONAME と出力される
\labelbox{ITEM}  ラベル幅の空の box でくるむ
\keytop{KEYNAME}  キートップ

\ArrowBox{ARROW}  矢印を一定の大きさの空の box でくるむ

以下は，一覧表記述のために用いるマクロ．

\Pref{PAGEREFERENCELABEL}
\PrefDouble{PAGEREFERENCELABEL1}{PAGEREFERENCELABEL2}
\TabAndRef{REFERENCELABEL}
\TabAndRefDouble{REFERENCELABEL1}{REFERENCELABEL2}

その外のマクロ．

\makelogotitle{TITLE}  表紙作成．
\maketables  各種目次作成
\Signature{AUTHOR}  サイン
\setbaselinestretch{STRETCH}  \baselinestretch 指定マクロ

1.3 章建て

\subsubparagraph    \subsubparagraph が追加されています．

\subtitle 章建てには，サブタイトルを付けることが出来ます．以下のようにオプション名

を記述するのに用いてください． sectioning タイトル内の最後で使用します．

       \subsection{タイトル\subtitle{オプション\Option{-option}}}

以下のように出力されます．

• header には，出力しない

• 本文中の section タイトル部分では，右寄せで{\small[SUBTITLE]}

• 目次部分では，ページ番号の前に{\footnotesize[SUBTITLE]}

\part, \chapter 内では使わないでください。

1.4 参照

ラベルの記述には通常どおり\label を用いますが，ラベルの参照には特殊なマクロを用います．

\Reference 通常参照時には\Reference{LABEL}を用います． (cf. 第 ? 章 p.??) という形

式で出力します． LABEL の最初がf,t 以外ならば本文の参照と見なします． texjman では， LABEL のプレフィックスは以下の通りとなっています．

   fig:???? figure 環境
   tab:???? table 環境

file:???? samplefile 環境

\Ref \Reference の出力内容は\Ref によって出力されています．

\RefForm    \Reference, \Ref, \TecReference, \TecRef の出力形式を決めるマクロです．
\RefForm{TEXT}は(cf. TEXT) と出力されます．

例えば，複数箇所を参照したい場合などは，

           \RefForm{\Ref{LABEL}, \Ref{LABEL}, \Ref{LABEL}}

などとしてください．

1.5 テクニカルマニュアルの参照 (未完成)

将来的に，ユーザーズマニュアルからテクニカルマニュアルを参照するために用意したマクロ群です．未完成です． \TecName 以外は，現在は使っておりません．

\TecName テクニカルマニュアルの名前． common.tex で指定します． \TecReference,

\TecRef などでも使います．

\TecReference テクニカルマニュアルのLABEL を参照するマクロです．使い方は\Reference, \Ref
\TecRef と同じです．
\includeteclabel    \TecReference, \TecRef を使うための準備をします．以下のように，プリアン

ブルで使います．

           \includeteclabel{FILENAME}

FILENAME.tex の TEX ソースのLABEL にtec:を付けて，ラベルだけを読み込みます．

2 インプリメンテーション

2.1 オプションの記述と jreport クラスのロード

ここから， pL^{A}TEX 2εのtexnical.cls のマクロ部分です．

1 ⟨∗package⟩

 2 \NeedsTeXFormat{pLaTeX2e}
 3 \ProvidesClass{texnical}%
 4 [\filedate\space\fileversion\space document class for texjman]
logocminch logolatex ロゴの種類をオプションで指定するlogocminch, logolatex を新設します．デフォ
ルトはlogocminch です．
 5 \newif\if@logocminch \@logocminchtrue

 6 \DeclareOption{logocminch}{\@logocminchtrue}
 7 \DeclareOption{logolatex}{\@logocminchfalse}

jreport で使用できるオプションのうち， oneside 以外のオプションが有効になります．

 8 \DeclareOption{oneside}{%
 9 \PackageWarning{texnical}{Not available option: '\CurrentOption'}}

texnical.cfg があればそれを取り込み，すべてのオプションをjreport に渡します．

10 \InputIfFileExists{texnical.cfg}{}{}
11 \DeclareOption*{%
12 \PassOptionsToClass{\CurrentOption}{jreport}}

すべてのオプションを実行します．

13 \ProcessOptions\relax

pL^{A}TEX 2εのjreport.cls をロードします． 1995/12/01 以降の L^{A}TEX 2εが必要です．

14 \LoadClass[twoside]{jreport}[1995/12/01]

makeidx パッケージを用います．

15 \usepackage{makeidx}

2.2 環境の作成

各種環境を作成します．

2.2.1 行間の狭い環境の追加

\setbaselinestretch narrow まず， \baselinestretch を小さくするマクロと環境を作成します．
16 \newcommand{\setbaselinestretch}[1]{%
17 \def\baselinestretch{#1}%
18 \let\@@orgsize=\@currsize
19 \small\@@orgsize}
20 \newenvironment{narrow}{\setbaselinestretch{.8}}{}

全体に tight な list 環境群を追加します． tight にする割合を\narrowedby によって決定します．各パラメータの値はこの値で割られます．

21 \newcount\narrowedby \narrowedby=5
narrowdescription  narrowdescription 環境を追加します． description 環境のパラメータのうち，
\topsep, \parsep, \itemsep に\narrowedby で割った値を用います．
22 \newenvironment{narrowdescription}
23 {\list{}{\labelwidth\z@ \itemindent-\leftmargin
24 \iftdir
25  \leftmargin\leftskip \advance\leftmargin3\Cwd
26  \rightmargin\rightskip
27 \fi
28  \labelsep=1zw \itemsep\z@

29  \listparindent\z@ \topskip\z@ \parskip\z@ \partopsep\z@
30  \divide\topsep by \narrowedby\relax
31  \divide\parsep by \narrowedby\relax
32  \itemsep=\parsep
33  \let\makelabel\descriptionlabel}}{\endlist}
narrowitemize  narrowitemize 環境を追加します． itemize 環境のパラメータのうち， \topsep,
\parsep, \itemsep に\narrowedby で割った値を用います．
34 \newenvironment{narrowitemize}
35 {\ifnum \@itemdepth >3\relax\@toodeep\else
36 \advance\@itemdepth\@ne
37 \edef\@itemitem{item\romannumeral\the\@itemdepth}%
38 \list{\csname label\@itemitem\endcsname}{%
39  \ifnum \@listdepth=\@ne \topsep.5\normalbaselineskip
40  \else\topsep\z@\fi
41  \parskip\z@ \itemsep\z@ \parsep\z@
42  \labelwidth1zw \labelsep.3zw
43  \ifnum \@itemdepth =\@ne \leftmargin1zw\relax
44  \else\leftmargin\leftskip\fi
45  \advance\leftmargin 1zw
46  \def\makelabel##1{\hss\llap{##1}}}%
47  \divide\topsep by \narrowedby\relax
48  \divide\parsep by \narrowedby\relax
49  \itemsep=\parsep
50 \fi}{\endlist}
narrowenumerate  narrowenumerate 環境を追加します． enumerate 環境のパラメータのうち， \topsep,
\parsep, \itemsep に\narrowedby で割った値を用います．
51 \newenvironment{narrowenumerate}
52 {\ifnum \@enumdepth >3\relax\@toodeep\else
53 \advance\@enumdepth\@ne
54 \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
55 \list{\csname label\@enumctr\endcsname}{%
56  \ifnum \@listdepth=\@ne \topsep.5\normalbaselineskip
57  \else\topsep\z@\fi
58  \parskip\z@ \itemsep\z@ \parsep\z@
59  \labelwidth1zw \labelsep.3zw
60  \ifnum \@enumdepth=\@ne \leftmargin1zw\relax
61  \else\leftmargin\leftskip\fi
62  \advance\leftmargin 1zw
63  \usecounter{\@enumctr}%
64  \def\makelabel##1{\hss\llap{##1}}}%
65  \divide\topsep by \narrowedby\relax
66  \divide\parsep by \narrowedby\relax
67  \itemsep=\parsep
68 \fi}{\endlist}

2.2.2 その他の環境の追加

ItemList ItemList 環境を作ります． ItemList 環境は，アイテムの後で改行します．アイテムの記述に用いる\Item[ITEM] マクロをItemList 環境内で作っています．

69 \newcommand{\ItemListlabel}[1]{\hspace\labelsep\bfseries#1}
70 \newenvironment{ItemList}{%
71 \list{}{%
72  \labelwidth\z@
73  \itemindent-\leftmargin
74  \let\makelabel\ItemListlabel}%
75 \def\Item[##1]{\item[##1]\unhcopy\strutbox\par}}{\endlist}

formula 全体を box で囲むformula 環境を作ります．テクニカルマニュアルでは，記述の一般的な形式を示すのに用います．

76 \newbox\@s@box
77 \newdimen\@s@dimena
78 \newdimen\@s@dimenb
79 \newenvironment{formula}{
80 \par \noindent
81 \@s@dimena=\columnwidth \advance\@s@dimena by -40\p@
82 \setbox\@s@box=\hbox to \@s@dimena\bgroup
83  \begin{minipage}\@s@dimena
84 }{%
85  \end{minipage}%
86 \egroup
87 \@s@dimena=\ht\@s@box \@s@dimenb=\dp\@s@box
88 \advance\@s@dimena by 12\p@\relax \advance\@s@dimenb by 12\p@\relax
89 \raisebox{\z@}[\@s@dimena][\@s@dimenb]{%
90  \framebox[\columnwidth]{\hfill%
91  \advance\@s@dimena by -8\p@\relax \advance\@s@dimenb by -8\p@\relax
92  \raisebox{\z@}[\@s@dimena][\@s@dimenb]{%
93  \copy\@s@box}\hfill}}\par \noindent}

sample 例の記述に用いるsample 環境を作ります．未完成ですが，本文中では既に使われて

います． (^_^;)
94 \newenvironment{sample}{
95 \begin{quote}
96 \noindent 例:\par
97 }{%
98 \end{quote}

99 }

2.2.3 float 環境

float の配置設定を行います．全体に若干 tight にしてあります．

100 \setcounter{topnumber}{2}
101 \setcounter{bottomnumber}{2}
102 \setcounter{totalnumber}{4}
103 \setcounter{dbltopnumber}{2}
104 \renewcommand{\topfraction}{.9}
105 \renewcommand{\bottomfraction}{.8}
106 \renewcommand{\textfraction}{.01}
107 \renewcommand{\floatpagefraction}{.8}
108 \renewcommand{\dbltopfraction}{.7}
109 \renewcommand{\dblfloatpagefraction}{.5}

\thefigure \thetable  figure, table 環境のキャプション番号の出力形式を変更します．
110 \renewcommand{\thefigure}{\arabic{chapter}.\@arabic\c@figure}
111 \renewcommand{\thetable}{\arabic{chapter}.\@arabic\c@table}

samplefile \thesample \thesamplefile ファイル例を出力するsamplefile 環境を作ります．
112 \newcounter{samplefile}[chapter]
113 \renewcommand{\thesamplefile}{\arabic{chapter}.\@arabic\c@samplefile}
114 \def\fps@samplefile{tbp}
115 \def\ftype@samplefile{3}
116 \def\ext@samplefile{los}
117 \def\fnum@samplefile{\samplefilename~\thesamplefile}
118 \newenvironment{samplefile}
119  {\@float{samplefile}}
120  {\end@float}
121 \newenvironment{samplefile*}
122  {\@dblfloat{samplefile}}
123  {\end@dblfloat}

2.3 章建て

全体に章建ての出力には，かなり手を入れてあります．

2.3.1 カウンタ出力形式の指定

まずタイトル表示後の出力を消します．

124 \def\partmark#1{}
125 \def\chaptermark#1{}
126 \def\sectionmark#1{}
127 \def\subsectionmark#1{}
128 \def\subsubsectionmark#1{}
129 \def\paragraphmark#1{}
130 \def\subparagraphmark#1{}
131 \def\subsubparagraphmark#1{}
subsubparagraph 新たに追加した\subsubparagraph のためのカウンタを宣言します．
132 \newcounter{subsubparagraph}[subparagraph]
section subsection subsubsection paragraph subparagraph subsubparagraph カウンタの依存関係を追加します．
133 \@addtoreset{section}{part}
134 \@addtoreset{subsection}{part}
135 \@addtoreset{subsubsection}{part}
136 \@addtoreset{paragraph}{part}
137 \@addtoreset{subparagraph}{part}
138 \@addtoreset{subsubparagraph}{part}
139 \@addtoreset{subsection}{chapter}
140 \@addtoreset{subsubsection}{chapter}
141 \@addtoreset{paragraph}{chapter}
142 \@addtoreset{subparagraph}{chapter}

143 \@addtoreset{subsubparagraph}{chapter}
144 \@addtoreset{subsubsection}{section}
145 \@addtoreset{paragraph}{section}
146 \@addtoreset{subparagraph}{section}
147 \@addtoreset{subsubparagraph}{section}
148 \@addtoreset{paragraph}{subsection}
149 \@addtoreset{subparagraph}{subsection}
150 \@addtoreset{subsubparagraph}{subsection}
151 \@addtoreset{subparagraph}{subsubsection}
152 \@addtoreset{subsubparagraph}{subsubsection}
153 \@addtoreset{subsubparagraph}{paragraph}
\thepart \thechapter \thesection \thesubsection \thesubsubsection \theparagraph \thesubparagraph \thesubsubparagraph カウンタの出力形式を変更します．
154 \renewcommand{\thepart}{\arabic{part}}
155 \renewcommand{\thechapter}{\arabic{chapter}}
156 \renewcommand{\thesection}{\arabic{chapter}.\arabic{section}}
157 \renewcommand{\thesubsection}{\thesection.\arabic{subsection}}
158 \renewcommand{\thesubsubsection}{\thesubsection.\arabic{subsubsection}}
159 \renewcommand{\theparagraph}{\thesubsubsection.\arabic{paragraph}}
160 \renewcommand{\thesubparagraph}{\theparagraph.\arabic{subparagraph}}
161 \renewcommand{\thesubsubparagraph}{\thesubparagraph.\arabic{subsubparagraph}}
\thepartform \chapterform  jreport で用いている\@chapapp, \@chappos を，そのまま利用します．
162 \newcommand{\thepartform}{第\thepart{}部}
163 \newcommand{\chapterform}[1]{\@chapapp\arabic{#1}\@chappos}

secnumdepth 章建ての番号を出力するレベルを指定します． \subsubsection まで，章番号を出力します．

164 \setcounter{secnumdepth}{3}

2.3.2 章建てマクロ本体の定義

以下は，章建てマクロ本体の定義です． \part には，まったく手を入れていません．

\chapter  \chapter には，ちょっとこってみました． :-)
165 \renewcommand{\chapter}{%

chapter を常に奇数ページからはじめる場合は， \cleardoublepage を用いますが，このテクニカルマニュアルではこの出力方法は採用されていません． chapter を常に奇数ページからはじめる必要がない場合は，次のように\clearpage を用います．

166 \clearpage
167 \thispagestyle{plain}%
168 \global\@topnum\z@
169 \@afterindentfalse
170 \secdef\@chapter\@schapter}

*なしの\chapter の場合には，このコードが使われます．

171 \def\@chapter[#1]#2{%
172 \ifnum \c@secnumdepth >\m@ne
173  \refstepcounter{chapter}%

174  \message{<\@chapapp\thechapter\@chappos>}%
175  \addcontentsline{toc}{chapter}%
176  {\protect\numberline{\thechapter}#1}%
177 \else
178  \addcontentsline{toc}{chapter}{#1}%
179 \fi
180 \chaptermark{#1}%
181 \addtocontents{lof}{\protect\addvspace{10\p@}}%
182 \addtocontents{lot}{\protect\addvspace{10\p@}}%
183 \addtocontents{los}{\protect\addvspace{10\p@}}%
184 \if@twocolumn
185  \@topnewpage[\@makechapterhead{#2}]%
186 \else
187  \@makechapterhead{#2}%
188  \@afterheading
189 \fi}%

\chapter*の場合は，このコードが使われます．

190 \def\@schapter#1{%
191 \if@twocolumn
192  \@topnewpage[\@makeschapterhead{#1}]%
193 \else
194  \@makeschapterhead{#1}%
195  \@afterheading
196 \fi}
   左右にラインのある Chapter タイトルを出力する\@makechapterhead, \@makeschapterhead
 です． \chapter, \chapter*以外の場所でも使われます．

*なしの\chapter の場合には，このコードが使われます．

197 \def\@makechapterhead#1{%
198 \setbox\@tempboxa=\hbox{\reset@font\huge\bfseries
199  \ifnum \c@secnumdepth >\m@ne
200  \@chapapp{}\thechapter\@chappos\
201  \fi
202  #1}%
203 \@@chapterhead
204 \nobreak
205 \vskip 20\p@}

\chapter*の場合は，このコードが使われます．

206 \def\@makeschapterhead#1{%
207 \setbox\@tempboxa=\hbox{\reset@font\huge\bfseries#1}%
208 \@@chapterhead
209 \nobreak
210 \vskip 20\p@}

\columnwidth の幅のボックスの中に左右に細かい線をひいて，中央に\@tempboxa を配置します． \@tempboxa にタイトル字部分を格納済みである必要があります．

211 \def\@@chapterhead{%
212 \hbox to \columnwidth{%
213  \reset@font\huge
214  \parindent \z@
215  \baselineskip \z@

216  \raggedright
217  \@tempdima=\columnwidth
218  \advance\@tempdima by -\wd\@tempboxa
219  \divide\@tempdima by 2\relax
220  \advance\@tempdima by -.3em % 中央のボックスの左右の空き
221  \@chapterheadlines{\@tempdima}%
222  \hfill\copy\@tempboxa\hfill
223  \@chapterheadlines{\@tempdima}}}

細い線を複数引くマクロです．引数は幅です．

224 \def\@chapterheadlines#1{%
225 $\vcenter to 1em{             % line 全体の高さ
226  \@tempcnta=20               % line 数
227  \@whilenum\@tempcnta>0\do{%
228  \hrule height .2\p@ width #1 % line 太さ .2pt, 幅 #1
229  \vfill
230  \advance\@tempcnta by -1\relax} %
231  \hrule height .2\p@ width #1 % line 太さ .2pt, 幅 #1
232  }$}

これで\chapter の定義は終わりです．

\subsubsection \paragraph \subparagraph パラメータを変更した\subsubsection, \paragraph, \subparagraph を再定義し

ます．

233 \renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%
234 {1.5\Cvs \@plus.5\Cdp \@minus.2\Cdp}%
235 {.5\Cvs \@plus.3\Cdp}%
236 {\reset@font\large\bfseries}}
237 \renewcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
238 {3.25ex \@plus 1ex \@minus .2ex}%
239 {1ex}%
240 {\reset@font\normalsize\bfseries}}
241 \renewcommand{\subparagraph}{\@startsection{subparagraph}{5}{\z@}%
242 {3.25ex \@plus 1ex \@minus .2ex}%
243 {1ex}%
244 {\reset@font\normalsize\bfseries}}
\subsubparagraph  \subsubparagraph を定義します．
245 \newcommand{\subsubparagraph}{\@startsection{subparagraph}{6}{\z@}%
246 {3.25ex \@plus 1ex \@minus .2ex}%
247 {1ex}%
248 {\reset@font\normalsize\bfseries}}

2.3.3 サブタイトル

\subtitle  \subtitle は，基本的には\p@subtitle{SUBTITLE}というトークンを出力するだ

けです． \p@subtitle の定義内容は，出力する環境によって変化します．

249 \newcommand{\subtitle}[1]{\protect\p@subtitle{#1}}

\p@subtitle \p@subtitle は，本文中での出力がデフォルトとなります．デフォルト出力は右寄

 せで\small[\,SUBTITLE\,] と出力されます．

250 \def\p@subtitle#1{\hfill{\protect\small[\,#1\,]}}%

2.4 目次出力

目次出力用のマクロを作ります．

\@subtitleddottedtocline  \subtitle で定義されたサブタイトルを出力する\@dottedtocline です． \@dottedtocline

の代わりに用いられ，引数などは\@dottedtocline とおなじです．

まずサブタイトルを出力するのための box を用意します．

251 \newbox\@subtitlebox
   \@subtitleddottedtocline 本体です．
252 \def\@subtitleddottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
253 \vskip\toclineskip \@plus.2\p@
254 {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
255  \parindent #2\relax\@afterindenttrue
256 \interlinepenalty\@M
257 \leavevmode
258 \@lnumwidth #3\relax
259 \advance\leftskip \@lnumwidth \hbox{}\hskip -\leftskip
260  {#4}\nobreak\leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern \@dotsep
261  mu$}\hfill

ここまでは， \@dottedtocline とまったく同じです．ここに以下のサブタイトル出力部分が入ります． \@subtitlebox にはサブタイトルが収められています．

262  \unhbox\@subtitlebox

以下はまた， \@dottedtocline とまったく同じです．

263  \nobreak\hbox to\@pnumwidth{%
264  \hss\reset@font\rmfamily \normalcolor #5}\par}\fi}

\tableofcontents 通常の目次出力マクロです．サブタイトルを出力するように定義し直します．まずは，オリジナルの\tableofcontents と同じコードです．

265 \renewcommand{\tableofcontents}{%
266 \if@twocolumn\@restonecoltrue\onecolumn
267 \else\@restonecolfalse\fi
268 \chapter*{\contentsname
269  \@mkboth{\contentsname}{\contentsname}%

270 }%

以下の部分で， \@subtitlebox にサブタイトルを格納します． toc ファイルに

 は， \p@subtitle{SUBTITLE}という文字列が出力されており， \@starttoc 実行
 時に\p@subtitle{SUBTITLE}が展開されます．そこで， \@starttoc 実行時に，
 \@subtitlebox にサブタイトルを格納するように， \p@subtitle を一時的に定義

し直します．

271 \begingroup
272  \def\p@subtitle##1{%
273  \global\setbox\@subtitlebox=\hbox{%
274  {\protect\footnotesize[\kern.2\p@##1\kern.2\p@]\hskip3.5\p@}}}%

275  \@starttoc{toc}%
276 \endgroup

残りは，オリジナルの\tableofcontents と同じコードです．

277 \if@restonecol\twocolumn\fi

278 }

   \@dottedtocline を用いる各章建ての目次出力方法を， \@subtitleddottedtocline

を使うように変更します．パラメータの値は，変更していません．

279 \renewcommand{\l@section}{\@subtitleddottedtocline{1}{1.5em}{2.3em}}
280 \renewcommand{\l@subsection}{\@subtitleddottedtocline{2}{3.8em}{3.2em}}
281 \renewcommand{\l@subsubsection}{\@subtitleddottedtocline{3}{7.0em}{4.1em}}
282 \renewcommand{\l@paragraph}{\@subtitleddottedtocline{4}{10em}{5em}}
283 \renewcommand{\l@subparagraph}{\@subtitleddottedtocline{5}{12em}{6em}}

新設した\subsubparagraph についても，同様の定義を行います．

284 \newcommand{\l@subsubparagraph}{\@subtitleddottedtocline{5}{12em}{6em}}

他の目次出力ではサブタイトルを出力しないので，オリジナルのまま変更を加えていません．

\listofsamplefiles \listsamplefilename \samplefilename ファイル例目次出力マクロです．サブタイトルは出力しません．
285 \newcommand{\listofsamplefiles}{%
286 \if@twocolumn\@restonecoltrue\onecolumn
287 \else\@restonecolfalse\fi
288 \chapter*{\listsamplefilename
289 \@mkboth{\listsamplefilename}{\listsamplefilename}}%
290 \@starttoc{los}%
291 \if@restonecol\twocolumn\fi

292 }

293 \let\l@samplefile\l@figure
294 \newcommand{\listsamplefilename}{ファイル例目次}
295 \newcommand{\samplefilename}{ファイル例}

\@pnumwidth ページ番号を出力するためのボックスの幅です．サブタイトルとの間に幅を取るため，少し広くしてあります．

296 \def\@pnumwidth{1.98em}

tocdepth 目次に出力する章建てのレベルを指定します．オリジナルは 2 です．多めに出力するようにしてあります．

297 \setcounter{tocdepth}{3}

2.5 ページスタイル

headings headings ページスタイルだけを，ヘッダでサブタイトルを出力しないように再定義してあります．

twoside オプションは global な指定なので，その指定によって定義自体が変わるようになっています．

298 \if@twoside
299 \def\ps@headings{\let\ps@jpl@in\ps@headnombre
300  \let\@oddfoot\@empty\let\@evenfoot\@empty
301  \let\@mkboth\markboth

ここまでは，オリジナルの定義とまったく同じです．以下の部分で， \p@subtitle が何も出力しないマクロになるように，一時的に定義し直しています．

302  \def\@evenhead{%
303  \begingroup
304  \def\p@subtitle####1{}%
305  \underline{\hbox to \textwidth{%
306  \rmfamily\thepage\hfil\leftmark}}%
307  \endgroup}%
308  \def\@oddhead{%
309  \begingroup
310  \def\p@subtitle####1{}%
311  \underline{\hbox to \textwidth{%
312  \hbox{}\rmfamily\rightmark\hfil\thepage}}%
313  \endgroup}%

以下も，オリジナルの定義とまったく同じです．

314 \def\chaptermark##1{\markboth{%
315  \ifnum \c@secnumdepth >\m@ne
316  \@chapapp\thechapter\@chappos\hskip1zw
317  \fi
318  ##1}{}}%
319 \def\sectionmark##1{\markright{%
320  \ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi
321  ##1}}%

322 }

このクラスファイルではoneside オプションは無効となるので，以下の定義は無意味ですが，とりあえず作っておきました．

323 \else % if not twoside
324 \def\ps@headings{\let\ps@jpl@in\ps@headnombre
325  \let\@oddfoot\@empty
326  \let\@mkboth\markboth

ここまでは，オリジナルの定義とまったく同じです．以下の部分で， \p@subtitle が何も出力しないマクロになるように，一時的に定義し直しています．

327  \def\@oddhead{%
328  \begingroup
329  \def\p@subtitle####1{}%
330  \underline{\hbox to \textwidth{%
331  \hbox{}\rmfamily\rightmark\hfil\thepage}}%
332  \endgroup}%

以下も，オリジナルの定義とまったく同じです．インデントがおかしいですが，これもオリジナルのまま． ;-p

333 \def\chaptermark##1{\markboth{%
334 \ifnum \c@secnumdepth >\m@ne
335  \@chapapp\thechapter\@chappos\hskip1zw
336 \fi

337 ##1}{}}%
338 \def\sectionmark##1{\markright{%
339 \ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi
340 ##1}}%

341 }

342 \fi

2.6 参照関連マクロの追加

参照関連のマクロを追加します．

2.6.1 賢い参照マクロ

\Ref 賢い:-) 参照用のマクロ本体です． LABEL の最初がf,t で，同じページならば図表番号のみ，同じページでなければ

図表番号とページを出力します． LABEL の最初がf,t 以外ならば本文の参照と見なし，同じページなら章番号のみ，

同じページでなければ章番号とページを出力します．章番号も同じ章かどうかを判断して，同じ章ならば’ 本章’ と出力します．

343 \DeclareRobustCommand{\Ref}[1]{%
344 \expandafter\if\csname r@#1\endcsname\relax
345  {\bf ???????}%
346  \PackageWarning{texnical}{%
347  Reference `#1' on page \thepage \space undefined}
348 \else
349  \edef\@tempa{\expandafter\@car#1\@nil}%
350  \if\@tempa f \ref{#1}\@RefPage{#1}\else
351  \if\@tempa t \ref{#1}\@RefPage{#1}\else
352  \@RefChapter{#1}\,p.\pageref{#1}\fi\fi\fi}

参照番号のリストから，章番号だけを抜き出すマクロです．

353 \def\@ExtractChapterNum#1.#2\@nil{#1}

章番号の比較を行い，同じ章ならば’ 本章’ と出力します．

354 \def\@RefChapter#1{%
355 \edef\@tempa{\@nameuse{r@#1}}%
356 \edef\@tempb{\expandafter\@car\@tempa\@nil\null}%
357 \edef\@tempa{\expandafter\@ExtractChapterNum\@tempb.\@nil}%
358 \c@Reference=\@tempa\relax
359 \ifnum\c@chapter=\c@Reference\relax 本章\else
360  \chapterform{Reference}\fi}

ページ番号の比較を行い，違うページならばページを出力します．

361 \def\@RefPage#1{%
362 \edef\@tempa{\@nameuse{r@#1}}%
363 \edef\@tempb{\expandafter\@cdr\@tempa\@nil}%
364 \ifnum\value{page}=\@tempb\relax\else\,p.\pageref{#1}\fi}

章番号の比較，ページ番号の比較は，必ずしも正確とはいえません．

マクロ内で一時的に用いるカウンタを宣言します．

365 \newcount\c@Reference
\RefForm \Reference 参照の出力形式を指定するマクロです．
366 \newcommand{\RefForm}[1]{(cf.~#1)}
367 \newcommand{\Reference}[1]{\RefForm{\Ref{#1}}}

2.6.2 テクニカルマニュアルの参照 (未完成)

将来的に，ユーザーズマニュアルからテクニカルマニュアルを参照するために用意したマクロ群です．未完成です． \TecName 以外は，現在は使っておりません．

\TecName テクニカルマニュアルの名前． common.tex で指定します． \TecReference, \TecRef などでも使います．デフォルトは’Technical Guide’ です．

368 \newcommand{\TecName}{Technical Guide}
\TecReference \TecRef テクニカルマニュアルのLABEL を参照するマクロです．使い方は\Reference, \Ref

と同じです．

369 \newcommand{\TecReference}[1]{\RefForm{\TecRef{#1}}}
370 \newcommand{\TecRef}[1]{\protect\@TecRef{#1}}
371 \def\@TecRef#1{\TecName\,%
372 \expandafter\if\csname r@tec:#1\endcsname\relax
373  {\bf ???????}%
374  \@warning{Reference `#1' to \TecName \space on page \thepage \space undefined}
375 \else
376  \edef\@tempa{\expandafter\@car#1\@nil}%
377  \if\@tempa f \ref{tec:#1}\,p.\pageref{tec:#1}\else
378  \if\@tempa t \ref{tec:#1}\,p.\pageref{tec:#1}\else
379  \@TecRefChapter{tec:#1}\,p.\pageref{tec:#1}\fi\fi\fi}
380 \def\@TecRefChapter#1{%
381 \edef\@tempa{\@nameuse{r@#1}}%
382 \edef\@tempb{\expandafter\@car\@tempa\@nil\null}%
383 \edef\@tempa{\expandafter\@ExtractChapterNum\@tempb.\@nil}%
384 \c@Reference=\@tempa
385 \chapterform{Reference}}
\includeteclabel  FILENAME.tex の TEX ソースのLABEL にtec:を付けて，ラベルだけを読み込みます．
386 \newcommand{\includeteclabel}[1]{%
387 \makeatletter
388 \let\@original@writefile\@writefile
389 \def\@writefile##1##2{}%
390 \let\@original@newlabel\newlabel
391 \def\newlabel##1##2{\@original@newlabel{tec:##1}{##2}}
392 \input #1.aux\relax
393 \let\@writefile\@original@writefile \let\@original@writefile\@@@undefined
394 \let\newlabel\@original@newlabel \let\@original@newlabel\@@@undefined
395 \makeatother}

2.7 その他の追加したマクロ群

2.7.1 表紙の作成

\makelogotitle 表紙作成を行います．引数はタイトルです．ロゴには， cminch と L^{A}TEX のpicture 環境とのどちらかを用いることが出来ま

 す． texnical クラスのオプションで指定します． logocminch, logolatex があり，
 デフォルトはlogocminch です．
396 \newcommand{\makelogotitle}[1]{%
397 \typeout{}
398 \typeout{#1 of DVIOUT/DVIPRT}
399 \typeout{Note: Run pLaTeX three times to resolve cross-references.}
400 \typeout{}
401 \begin{titlepage}
402  \null\vfill
403  \begin{flushleft}

DVIOUT/DVIPRT のロゴ出力部分．

404  \if@logocminch
405  \logo@cminch
406  \else
407  \logo@latex
408  \fi
409  \vspace{30\p@}

バージョンとタイトルの出力部分．

410  \Huge
411  \hskip10\p@ Ver. \Version\ \ \ \ #1
412  \end{flushleft}
413  \vfill
414 \end{titlepage}
415 \newpage}

\logo@cminch Y.Kusumi 氏による cminch を使ったロゴです．

416 \def\logo@cminch{%
417 \typeout{Note: We use the cminch font.}
418 \typeout{}
419 \font\logofont=cminch
420 \logofont
421 DVIOUT\\ \vskip 15\p@%
422 DVIPRT\\ \vskip 30\p@%

423 }

\logo@latex cminch を使わない，松田氏による L^{A}TEXpicture 環境を用いたロゴです．

424 \def\logo@latex{%
425 \typeout{Note: We do NOT use the cminch font.}
426 \typeout{}
427 \def\logoD{\begin{picture}(68,72)
428  \put(2,36){\oval(132,72)[r]}
429  \put(2,36){\oval(4,72)[l]}
430  \put(14,36){\oval(80,54)[r]}
431  \put(14,9){\line(0,1){54}}

432  \end{picture}}
433 \def\logoV{\begin{picture}(72,72)
434  \put(36,15){\line(-2,5){22}}
435  \put(7,70){\oval(14,4)[t]}
436  \put(0,70){\line(2,-5){27.2}}
437  \put(36,15){\line(2,5){22}}
438  \put(65,70){\oval(14,4)[t]}
439  \put(72,70){\line(-2,-5){27.2}}
440  \put(36,2){\oval(17.6,4)[b]}
441  \end{picture}}
442 \def\logoI{\begin{picture}(14,72)
443  \put(7,70){\oval(14,4)[t]}
444  \put(0,2){\line(0,1){68}}
445  \put(14,2){\line(0,1){68}}
446  \put(7,2){\oval(14,4)[b]}
447  \end{picture}}
448 \def\logoO{\begin{picture}(68,72)
449  \put(34,36){\oval(68,72)}
450  \put(34,36){\oval(40,54)}
451  \end{picture}}
452 \def\logoU{\begin{picture}(60,72)
453  \put(30,70){\oval(60,140)[b]}
454  \put(30,23){\oval(32,28)[b]}
455  \put(14,23){\line(0,1){47}}
456  \put(46,23){\line(0,1){47}}
457  \put(7,70){\oval(14,4)[t]}
458  \put(53,70){\oval(14,4)[t]}
459  \end{picture}}
460 \def\logoT{\begin{picture}(68,72)
461  \put(2,67){\oval(4,10)[l]}
462  \put(66,67){\oval(4,10)[r]}
463  \put(2,72){\line(1,0){64}}
464  \put(2,62){\line(1,0){25}}
465  \put(66,62){\line(-1,0){25}}
466  \put(27,62){\line(0,-1){60}}
467  \put(41,62){\line(0,-1){60}}
468  \put(34,2){\oval(14,4)[b]}
469  \end{picture}}
470 \def\logoP{\begin{picture}(58,72)
471  \put(2,36){\oval(4,72)[l]}
472  \put(2,72){\line(1,0){12}}
473  \put(14,50){\oval(88,44)[r]}
474  \put(14,28){\line(0,-1){26}}
475  \put(2,2){\oval(24,4)[br]}
476  \put(32,50){\oval(20,26)[r]}
477  \put(32,63){\line(-1,0){18}}
478  \put(32,37){\line(-1,0){18}}
479  \put(14,37){\line(0,1){26}}
480  \end{picture}}
481 \def\logoR{\begin{picture}(58,72)
482  \put(2,36){\oval(4,72)[l]}
483  \put(2,72){\line(1,0){36}}
484  \put(38,52){\oval(40,40)[r]}
485  \put(38,32){\line(2,-3){20}}

486  \put(24,32){\line(2,-3){20}}
487  \put(51,2){\oval(14,4)[b]}
488  \put(24,32){\line(-1,0){10}}
489  \put(14,32){\line(0,-1){30}}
490  \put(2,2){\oval(24,4)[br]}
491  \put(32,52){\oval(20,22)[r]}
492  \put(32,63){\line(-1,0){18}}
493  \put(32,41){\line(-1,0){18}}
494  \put(14,41){\line(0,1){22}}
495  \end{picture}}
496 \unitlength 1\p@
497 \thicklines
498 \logoD \hskip 6\p@
499 \logoV \hskip 12\p@
500 \logoI \hskip 16\p@
501 \logoO \hskip 16\p@
502 \logoU \hskip 14\p@
503 \logoT \par
504 \vskip 16\p@
505 \logoD \hskip 6\p@
506 \logoV \hskip 12\p@
507 \logoI \hskip 20\p@
508 \logoP \hskip 14\p@
509 \logoR \hskip 10\p@
510 \logoT \par

511 }

\maketables 各種目次を作成します．
512 \newcommand{\maketables}{%
513 \pagenumbering{roman}
514 \tableofcontents
515 \listoftables
516 \listoffigures
517 \listofsamplefiles
518 \newpage
519 \pagenumbering{arabic}
520 \setcounter{page}{1}}

2.7.2 出力形式の指定

引数を取らないもの．

\dviout
521 \DeclareRobustCommand{\dviout}{\texttt{dviout}}
\dviprt
522 \DeclareRobustCommand{\dviprt}{\texttt{dviprt}}
\pTeX
523 \DeclareRobustCommand{\pTeX}{p\kern-.2em\TeX}

\JTeX
524 \DeclareRobustCommand{\JTeX}{\leavevmode\lower.5ex\hbox{J}\kern-.18em\TeX}
\MF
525 \font\logo=manfnt
526 \DeclareRobustCommand{\MF}{{\logo META}\-{\logo FONT}}
\PostScript
527 \DeclareRobustCommand{\PostScript}{{%
528  \textsc{Post}\-\textsc{Script}}}

引数を取るもの

\File
529 \DeclareRobustCommand{\File}[1]{\texttt{#1}}
\Option
530 \DeclareRobustCommand{\Option}[1]{\texttt{#1}}
\Env
531 \DeclareRobustCommand{\Env}[1]{\texttt{#1}}
\Font
532 \DeclareRobustCommand{\Font}[1]{\texttt{#1}}
\Char
533 \DeclareRobustCommand{\Char}[1]{ 「\texttt{#1}」 }
\Cs
534 \DeclareRobustCommand{\Cs}[1]{\textbackslash\kern\z@\texttt{#1}}
\Pref \PrefDouble  tabular 環境内で使用．
535 \newcommand{\Pref}[1]{{\footnotesize\,p\pageref{#1}}}
536 \newcommand{\PrefDouble}[2]{{\footnotesize\,p\pageref{#1}\,p\pageref{#2}}}
\TabAndRef \TabAndRefDouble  table 環境内で使用．
537 \newcommand{\TabAndRef}[1]{%
538 \>{\footnotesize\rmfamily\S\ref{#1}\ p\pageref{#1}}}
539 \newcommand{\TabAndRefDouble}[2]{%
540 \>{\footnotesize\rmfamily\S\ref{#1}\ p\pageref{#1}, \S\ref{#2} p\pageref{#2}}}

\DirSep ディレクトリ・セパレータ．

541 \let\DirSep\textbackslash

\labelbox ラベル幅の空の box でくるみます．

542 \DeclareRobustCommand{\labelbox}[1]{\hbox to\leftmargin{\hfil#1\hfil}}

\keytop キートップ出力．

543 \DeclareRobustCommand{\keytop}[1]{[\texttt{#1}]}

\ArrowBox 矢印を一定の大きさの空の box でくるみます．

544 \DeclareRobustCommand{\ArrowBox}[1]{\makebox[1em]{#1}}

\Signature 日付，バージョンとともに，サインを出力します．引数は，著者名です．

545 \newcommand{\Signature}[1]{%
546 \begin{flushright}
547  \texttt{<<} Sep. 22, 1990 -- \TillDate{} by #1 \texttt{>>}
548 \end{flushright}}

2.8 各種初期化

デフォルトの値を指定します．

2.8.1 ページスタイル・レイアウトの指定

ページスタイルはheadings．

549 \pagestyle{headings}
\oddsidemargin \evensidemargin \topmargin \textwidth \textheight ページの大きさは，本来各条件毎に指定すべきですが，デフォルトの 10pt, twoside,

onecolumn に合わせて設定してあります．まったくデフォルトのままだと，狭くなりすぎます．

550 \setlength{\oddsidemargin}{0\p@}
551 \setlength{\evensidemargin}{0\p@}
552 \setlength{\topmargin}{-.3in}
553 \setlength{\textwidth}{47zw}
554 \setlength{\textheight}{43\baselineskip}
555 \advance\textheight\topskip

2.8.2 四分空きの指定

テクニカルマニュアルという性格に合わせて，記号でも四分空きを出力するようにしてあります．

556 \xspcode`-=3
557 \xspcode`+=3
558 \xspcode`==3
559 \xspcode`?=3
560 \xspcode`*=3
561 \xspcode`<=1
562 \xspcode`>=2
563 \xspcode`{=1
564 \xspcode`}=2
565 \xspcode`:=3
566 \xspcode`.=3
567 \xspcode`$=3

クラス・ファイルは，ここでお終い．

568 ⟨/package⟩

3 付属ファイル

以下は，付属ファイルです．

まずは，ドキュメントです． DOS 用に記述してあります．

569 ⟨∗makedoc⟩ 570 ⟨∗doc⟩ 571 dviout/dviprt のマニュアルは， pLaTeX2e 文書のソースファイルの形で提供されてい 572 ます．

573

574 【マニュアルの生成】

575

576 *.tex, texnical.sty. texjman.ind などのある， tex???ma.lzh の doc\texjman\

を 577 カレントディレクトリにして， texjman.tex を pLaTeX2e で３回処理すると，マニュ 578 アルの DVI ファイルが作成されます．

579

580 タイプセットを行うための，バッチファイルが付属します．これを使うのが簡単でしょ 581 う．

582

583 C>makedoc.bat

584

585 と実行すると， DVI が生成されます．ワーニングメッセージが多量に出ますが無視して 586 ください． DVI は， dviout/dviprt を用いることにより，画面で見たり印刷すること 587 ができます．

588

589 dviout/dviprt で cminch というフォントが足りないと言われてしまう場合は，

590

591 C>makedoc.bat -l

592

593 とタイプセットし直してください．

594

595 pLaTeX2e コンパイラは， platex を想定しています．それ以外のコンパイラを用いる場 596 合は，

597

598 C>makedoc.bat virtex &platex2e

599

600 であるとか，

601

602 C>makedoc.bat -l virtex &platex2e

603

604 という具合に，引数で使用するコンパイラを指定してください．

605

606 【インデックス・ファイル】

607

608 texjman.ind は索引のためのインデックス・ファイルで， mendex というプログラムで，

609

610 C>mendex texjman.idx

611

612 として作成したものです．日本語 LaTeX の処理系や makeindex が異なる場合は，それ 613 ぞれの makeindex プログラムを用いるのがもっとも正確で確実です．この場合は，

614

615 C>makeindex texjman.idx

616

617 と実行してから， texjman.tex のタイプセットをもう一度行ってください．

618

619 【 LaTeX209 】

620

621 旧版の ASCII 日本語 TeX と LaTeX209 を使う場合は，付属の texnical.sty を用いれ

622 ば，とりあえずタイプセットは行えます．この場合は， texjman.tex の１行目を，

623

624 \documentstyle{texnical}

625

626 と書き換えてください． texnical.sty が用いられます．

627

628 この場合には， \documentstyle にオプションを指定すると，正常に動作しない可能性 629 があります．また，表紙のロゴには， LaTeX picture 環境のロゴが用いられます．

630

631 イタリック補正などは LaTeX2e の処理に依存しているので， LaTeX209 でタイプセッ 632 トした場合はあまり整った出力が得られない可能性があります．

633

634 尚，今後 texnical.sty のサポートは行われません．将来的には使用できなくなる可 635 能性もあります． 636 ⟨/doc⟩

以下は， texjman.tex をタイプセットするためのバッチファイルです．

637 ⟨∗bat⟩

638 echo off
639 for %%a in (c,C,l,L,h,H) do if %1/==-%%a/ goto opt%1
640 if exist texnical.cfg del texnical.cfg
641 goto typeset

642

643 :opt-c
644 echo \ExecuteOptions{logocminch}>texnical.cfg
645 shift
646 goto typeset

647

648 :opt-l
649 echo \ExecuteOptions{logolatex}>texnical.cfg
650 shift
651 goto typeset

652

653 :typeset
654 if %1/==/ goto typeset_default
655 command.com /c %1 %2 %3 %4 %5 %6 %7 %8 texjman.tex
656 command.com /c %1 %2 %3 %4 %5 %6 %7 %8 texjman.tex
657 command.com /c %1 %2 %3 %4 %5 %6 %7 %8 texjman.tex
658 goto end

659

660 :typeset_default
661 platex.exe texjman.tex
662 platex.exe texjman.tex
663 platex.exe texjman.tex

664 goto end

665

666 :opt-h
667 echo usage: makedoc [option] [pLaTeX command...]
668 echo     option
669 echo       -c : use cminch for title logo (default)
670 echo       -l : use LaTeX picture for title logo
671 echo       -h : show this help
672 echo     pLaTeX command
673 echo       default : platex.exe
674 :end

675 ⟨/bat⟩

以下は， texjman.tex をタイプセットするためのシェルスクリプトです．

676 ⟨∗sh⟩

677 #!/bin/sh
678 cfgfile=texnical.cfg
679 srcfile=texjman.tex
680 rm -f $cfgfile
681 case $1 in
682 -c)
683  echo "\ExecuteOptions{logocminch}">$cfgfile
684  shift

685 ;;

686 -l)
687  echo "\ExecuteOptions{logolatex}">$cfgfile
688  shift

689 ;;

690 -h)
691  echo "usage: makedoc [option] [pLaTeX command...]"
692  echo "    option"
693  echo "      -c : use cminch for title logo (default)"
694  echo "      -l : use LaTeX picture for title logo"
695  echo "      -h : show this help"
696  echo "    pLaTeX command"
697  echo "      default : platex"
698  exit

699 ;;

700 esac

701

702 if [ "$1" ]; then
703 $* $srcfile
704 $* $srcfile
705 $* $srcfile
706 else
707 platex $srcfile
708 platex $srcfile
709 platex $srcfile

710 fi 711 ⟨/sh⟩ 712 ⟨/makedoc⟩

以下は，このファイルをタイプセットするためのバッチファイルと，シェルスクリプトです．

713 ⟨∗mktecdoc⟩ 714 ⟨+bat⟩echo off

715 ⟨+sh⟩#!/bin/sh
716 platex texnical.dtx
717 mendex -s gind.ist texnical.idx
718 mendex -s gglo.ist -o texnical.gls texnical.glo
719 platex texnical.dtx

720 ⟨/mktecdoc⟩

これで，本当にお終い． Have a Happy TeXing!