1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
|
% \iffalse meta-comment
%% File: uplatex.dtx
%
% pLaTeX base file:
% Copyright 1995,1996 ASCII Corporation.
% and modified for upLaTeX
%
% This file is part of upLaTeX2e system.
% -------------------------------------
%
% \fi
%
% \CheckSum{367}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
%
% \setcounter{StandardModuleDepth}{1}
% \def\chuui#1{\par\vskip.5\baselineskip
% \noindent\bfseries{注意:}\par
% \noindent\bgroup\bf#1}
% \def\endchuui{\egroup\vskip.5\baselineskip}
% \StopEventually{}
%
% \iffalse
% \changes{v1.0}{1995/05/08}{first edition}
% \changes{v1.0a}{1995/08/25}{互換性について、\dst{}の使い方、参考文献を追加}
% \changes{v1.0b}{1996/02/01}{\file{omake-sh.ins}, \file{omake-pl.ins}を
% \dst{}の変更にともなう変更をした}
% \changes{v1.0c}{1997/01/23}{\LaTeX\ \textt{!<1996/12/01!>}に合わせて修正}
% \changes{v1.0c_u00}{2011/05/07}{pLaTeX用からupLaTeX用に修正。}
% \fi
%
% \iffalse
%<*driver>
\NeedsTeXFormat{pLaTeX2e}
% \fi
\ProvidesFile{uplatex.dtx}[2011/05/07 v1.0c_u00 upLaTeX document file]
% \iffalse
\documentclass{jltxdoc}
\usepackage{plext}
\GetFileInfo{platex.dtx}
\title{p\LaTeXe{}について}
\author{Ken Nakano \& TTK}
\date{作成日:\filedate}
\begin{document}
\MakeShortVerb{\+}
\maketitle
\DocInput{\filename}
\end{document}
%</driver>
% \fi
%
%
% \section{概要}\label{platex:intro}
% この文書は、p\LaTeXe{}の概要を示していますが、使い方のガイドでは
% ありません。p\LaTeXe{}の機能についての説明は、\cite{platex2e-book}を
% 参照してください。日本語\TeX{}については\cite{jtex-tech}を参照してください。
%
% p\LaTeXe{}では\cite{tate-book}で説明されている、いくつかの拡張コマンドの
% 動作を修正しています。その詳細については、\file{plext.dtx}を参照して
% ください。
%
% \LaTeX{}の機能については、\cite{latex-book2}や\cite{latex-comp}などを
% 参照してください。新しい機能については\file{usrguide.tex}を参照してください。
%
% この文書の構成は次のようになっています。
%
% \begin{quote}
% \begin{description}
% \item[第\ref{platex:intro}節]
% この節です。この文書についての概要と、
% \dst{}のためのオプションについて述べています。
%
% \item[第\ref{platex:plcore}節]
% p\LaTeXe{}で拡張した機能についての概要です。
% 付属のクラスファイルやパッケージファイルについても簡単に
% 説明しています。
%
% \item[第\ref{platex:compatibility}節]
% 旧バージョンのp\LaTeX{}との互換性について述べています。
%
% \item[付録\ref{app:pldoc}]
% p\LaTeXe{}のdtxファイルをまとめて一つのDVIファイルにするための
% 文書ファイル説明をしています。
%
% \item[付録\ref{app:omake}]
% 付録\ref{app:pldoc}で説明をした文書ファイルを処理するshスクリプト(手順)、
% \dst{}文書ファイル内の入れ子の対応を調べるperlスクリプトなどについて
% 説明しています。
% \end{description}
% \end{quote}
%
%
% \subsection{\dst{}プログラムのためのオプション}
% この文書を\dst{}プログラムによって処理することによって、
% いくつかの異なるファイルを生成することができます。
%
% この文書の\dst{}プログラムのためのオプションは、次のとおりです。
%
% \DeleteShortVerb{\|}
% \begin{center}
% \begin{tabular}{l|p{.8\linewidth}}
% \emph{オプション} & \emph{意味}\\\hline
% plcore & フォーマットファイルを作るためのファイルを生成\\
% pldoc & p\LaTeXe{}のソースファイルをまとめて組版するための
% 文書ファイルを生成\\[2mm]
% shprog & 上記のファイルを作成するためのshスクリプトを生成\\
% plprog & 入れ子構造を調べる簡単なperlスクリプトを生成\\
% Xins & 上記のshスクリプトやperlスクリプトを取り出すための
% \dst{}バッチファイルを生成\\
% \end{tabular}
% \end{center}
% \MakeShortVerb{\|}
%
% \subsubsection{ファイルの取り出し方}
%
% たとえば、この文書の``plcore''の部分を``\file{platex.ltx}''という
% ファイルにするときの手順はつぎのようになります。
%
% \begin{enumerate}
% \item platex docstrip
% \item 入力ファイルの拡張子(dtx)を入力する。
% \item 出力ファイルの拡張子(ltx)を入力する。
% \item \dst{}オプション(plcore)を入力する。
% \item 入力ファイル名(platex)を入力する。
% \item \file{platex.ltx}が存在する場合は、確認を求めてくるので、
% ``y''を入力する。
% \item 別の処理を行なうかを問われるので、``n''を入力する。
% \end{enumerate}
% これで、\file{platex.ltx}が作られます。
%
% あるいは、次のような内容のファイル\file{batch.ins}を作成し、
% |platex fmt.ins|することでも\file{platex.ltx}を作ることができます。
%
% \begin{verbatim}
% \def\batchfile{batch.ins}
% \input docstrip.tex
% \generateFile{platex.ltx}{t}{\from{platex.dtx}{plcore}}
% \end{verbatim}
%
% \dst プログラムの詳細は、\file{docstrip.dtx}を参照してください。
%
%
%
% \section{p\LaTeXe{}の機能について}\label{platex:plcore}
% p\LaTeXe{}の機能は、いくつものファイルに分割されて実装されています。
% これらのファイルはつぎの3種類に分類することができます。
%
% \begin{itemize}
% \item フォーマットファイル
% \item クラスファイル
% \item パッケージファイル
% \end{itemize}
%
% フォーマットファイルには、基本的な機能が定義されており、
% p\LaTeXe{}の核となるファイルです。このファイルに定義されているマクロは、
% 実行時の速度を高めるために、あらかじめ\TeX の内部形式の形で保存されて
% います。
%
% クラスファイルとパッケージファイルは、従来、スタイルファイルと呼ばれていた
% ものです。\LaTeXe{}ではそれらを、レイアウトに関するものをクラスファイルと
% 呼び、マクロの拡張をするものをパッケージファイルと呼んで区別するように
% なりました。
%
% \TeX{}文書が使用するクラスは、文書のプリアンブルで|\documentclass|コマンド
% を用いて指定します。|\documentclass|ではなく、旧版の|\documentstyle|を
% 用いると、自動的に\emph{2.09互換モード}に入ります。
% 互換モードは旧版の文書を組版するためだけに作られていますので、
% 新しく文書を作成する場合は、|\documentclass|コマンドを用いてください。
% 互換モードでは\LaTeX{}の新機能も使えなくなります。
%
% 旧版では、|\documentstyle|のオプションでマクロファイルを読み込んで
% いましたが、\LaTeX{}では、|\usepackage|コマンドを用いて読み込みます。
%
% \subsection{フォーマットファイル}
% フォーマットファイルには、基本的な機能が定義されていますが、
% これらは\TeX{}の内部形式に変換された形式となっています。
% フォーマットファイルを作成するには、
% ソースファイル``platex.ltx''を|iniptex|プログラムで処理します。
%
% 次のリストが、その内容です。
% ただし、このバージョンでは、\LaTeX{}からp\LaTeXe{}への拡張を
% \file{plcore.ltx}をロードすることで行ない、
% \file{latex.ltx}には直接、手を加えないようにしています。
% したがって\file{platex.ltx}はとても短いものとなっています。
% \file{latex.ltx}には\LaTeX{}のコマンドが、
% \file{plcore.ltx}にはp\LaTeXe{}で拡張したコマンドが定義されています。
%
% \begin{macrocode}
%<*plcore>
\let\orgdump\dump
\let\dump\relax
\input latex.ltx
\typeout{**************************^^J%
*^^J%
* making upLaTeX format^^J%
*^^J%
**************************}
\makeatletter
\input uplcore.ltx
\makeatother
\the\everyjob
\let\dump\orgdump
\dump
%<plcore>\endinput
%</plcore>
% \end{macrocode}
%
% 実際にp\LaTeXe{}への拡張を行なっている\file{plcore.ltx}は、
% \dst{}プログラムによって、次のファイルの断片が連結されたものです。
%
% \begin{itemize}
% \item \file{plvers.dtx}は、p\LaTeXe{}のフォーマットバージョンを
% 定義しています。
% \item \file{plfonts.dtx}は、\NFSS2を拡張しています。
% \item \file{plcore.dtx}は、上記以外のコマンドでフォーマットファイルに
% 格納されるコマンドを定義しています。
% \end{itemize}
%
% プリロードフォントや組版パラメータなどの設定は、
% \file{pldefs.ltx}をロードすることで行なっています。
% このファイルに記述されている設定を変更すれば、
% p\LaTeXe{}をカスタマイズすることができます。
% カスタマイズする場合は、このファイルを直接、修正するのではなく、
% \file{pldefs.cfg}という名前でコピーをして、そのファイルを編集します。
% \file{pldefs.cfg}は\file{pldefs.ltx}の代わりに読み込まれます。
%
%
% \subsubsection{バージョン}
% p\LaTeXe{}のバージョンやフォーマットファイル名は、
% \file{plvers.dtx}で定義しています。
%
%
% \subsubsection{\NFSS2コマンド}
% \LaTeX{}では、フォント選択機構として\NFSS2を用いています。
% p\LaTeXe{}では、オリジナルの\NFSS2 と同様のインターフェイスで、
% 和文フォントを選択できるように、\file{plfonts.dtx}で\NFSS2を拡張しています。
%
% p\LaTeXe{}の\NFSS2は、フォントを切替えるコマンドを指定するときに、
% それが欧文書体か和文書体のいずれかを対象とするものかを、
% できるだけ意識しないようにする方向で拡張しています。
% いいかえれば、コマンドが(可能な限りの)判断をします。
% したがって数多くある英語版のクラスファイルやパッケージファイルなどで
% 書体の変更を行っている箇所を修正する必要はあまりありません。
%
% \file{plfonts.dtx}ファイルでは、\NFSS2コマンドの定義のほか、プリロード
% フォントの設定、和文エンコードの定義、組版パラメータなどの設定、
% フォント定義ファイルなどの記述も含まれています。
%
% \NFSS2についての詳細は、\LaTeXe に付属の\file{fntguide.tex}を参照して
% ください。
%
%
% \subsubsection{出力ルーチンとフロート}
% \file{plcore.dtx}は、次の項目に関するコマンドを日本語処理用に修正や拡張
% をしています。
%
% \begin{itemize}
% \item プリアンブルコマンド
% \item 改ページ
% \item 改行
% \item オブジェクトの出力順序
% \item トンボ
% \item 脚注マクロ
% \item 相互参照
% \item 疑似タイプ入力
% \end{itemize}
%
%
% \subsection{クラスファイルとパッケージファイル}
% クラスファイルとパッケージファイルは、従来、スタイルファイルと呼ばれていた
% ものです。\LaTeX{}ではそれらを、レイアウトに関するものをクラスファイルと
% 呼び、マクロの拡張をするものをパッケージファイルと呼んで区別するように
% なりました。
%
% p\LaTeXe{}が提供をする、クラスファイルやパッケージファイルのいくつかは、
% オリジナルのファイルを修正しています。
% 修正箇所には``\texttt{platex}''条件が付けられています。
%
% p\LaTeXe{}に付属のクラスファイルは、次のとおりです。
%
% \begin{itemize}
% \item jbook.cls,jarticle.cls,jreport.cls\par
% 横組用の標準クラスファイル。\file{jclasses.dtx}から作成される。
%
% \item tbook.cls,tarticle.cls,treport.cls\par
% 縦組用の標準クラスファイル。\file{jclasses.dtx}から作成される。
%
% \item jltxdoc.cls\par
% \file{.dtx}ファイルを組版するためのクラスファイル。
% \file{jltxdoc.dtx}から作成される。
%
% \item jltxguid.cls\par
% \file{usrguide.tex}や\file{fntguide.tex}などを組版するための
% クラスファイル。
% \end{itemize}
%
% また、p\LaTeXe{}に付属のパッケージファイルは、次のとおりです。
%
% \begin{itemize}
% \item oldpfont.sty\par
% p\LaTeX~2.09のフォントコマンドを提供するパッケージ。
% \file{oldpfont.dtx}から作成される。
%
% \item ptrace.sty\par
% \file{tracefnt.sty}で再定義された\NFSS2コマンドをp\LaTeXe{}用に
% 再々定義するためのパッケージ。
%
% \item ascmac.sty, tascmac.sty\par
% 旧バージョンのp\LaTeX{}で配布されていたファイル。
%
% \item plext.sty\par
% 縦組用の拡張コマンドなどが定義されているファイル。
% \end{itemize}
%
%
% \section{旧バージョンとの互換性}\label{platex:compatibility}
% ここでは、このバージョンと以前のバージョンとの互換性や拡張部分について
% 説明をしています。
%
% \subsection{p\LaTeX~2.09との互換性}
% p\LaTeXe{}は、\LaTeX{}の上位互換という形を取っていますが、
% いくつかのパラメータなども変更しています。
% したがって英文書など、\LaTeX{}でも処理できるファイルを
% p\LaTeXe{}で処理しても、完全に同じ結果になるとは限りません。
% これは、英語版の\LaTeX{}でも同じです。
% 詳細は、\LaTeXe に付属の\file{usrguide.tex}を参照してください。
%
% 多くのクラスファイルやパッケージフィルはそのまま使えると思います。
% ただし、それらがp\LaTeXe{}で拡張しているコマンドと同じ名前のコマンドを
% 再定義している場合は、コマンドの拡張の仕方によってはエラーになることも
% あります。用いようとしている、クラスファイルやパッケージファイルが
% うまく動くかどうかを、完全に確かめる方法は残念ながらありません。
% 一番簡単なのは、動かしてみることです。不幸にもうまく動かない場合は、
% ログファイルや付属の文書ファイルを参考に原因を調べてください。
%
%
%
% \appendix
%
% \section{文書ファイル}\label{app:pldoc}
% \changes{v1.0c}{1997/01/25}{Add to filecontents environment for pldoc.dic.}
% ここでは、このパッケージに含まれているdtxファイルをまとめて組版をするための
% 文書ファイルについて説明をしています。個別に処理した場合と異なり、
% 変更履歴や索引も付きます。全体で、およそ150ページ程度になります。
%
% |filecontents|環境は、引数に指定されたファイルが存在するときは何も
% しませんが、存在しないときは、環境内の内容でファイルを作成します。
% \file{pldoc.dic}ファイルは、mendexプログラムで索引を処理するときに
% \cs{西暦}, \cs{和暦}に対する「読み」を付けるために必要です。
% \begin{macrocode}
%<*pldoc>
\begin{filecontents}{pldoc.dic}
西暦 せいれき
和暦 われき
\end{filecontents}
% \end{macrocode}
% 文書クラスには、\file{jltxdoc}クラスを用います。
% \file{plext.dtx}の中でサンプルを組み立てていますので、
% \file{plext}パッケージが必要です。
% \begin{macrocode}
\documentclass{jltxdoc}
\usepackage{plext}
\listfiles
% \end{macrocode}
% いくつかの\TeX{}プリミティブとコマンドを索引に出力しないようにします。
% \begin{macrocode}
\DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global}
\DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,%
\iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi}
\DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,%
\vbox,\vtop,\vcenter}
\DoNotIndex{\@empty,\immediate,\write}
\DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup}
\DoNotIndex{\divide,\advance,\multiply,\count,\dimen}
\DoNotIndex{\relax,\space,\string}
\DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,%
\closein,\closeout}
\DoNotIndex{\catcode,\endinput}
\DoNotIndex{\jobname,\message,\read,\the,\m@ne,\noexpand}
\DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss,\vss,\unskip}
\DoNotIndex{\m@ne,\z@,\z@skip,\@ne,\tw@,\p@,\@minus,\@plus}
\DoNotIndex{\dp,\wd,\ht,\setlength,\addtolength}
\DoNotIndex{\newcommand, \renewcommand}
% \end{macrocode}
% 索引と変更履歴の見出しに\cs{part}を用いるように設定をします。
% \begin{macrocode}
\IndexPrologue{\part*{索 引}%
\markboth{索 引}{索 引}%
\addcontentsline{toc}{part}{索 引}%
イタリック体の数字は、その項目が説明されているページを示しています。
下線の引かれた数字は、定義されているページを示しています。
その他の数字は、その項目が使われているページを示しています。}
%
\GlossaryPrologue{\part*{変更履歴}%
\markboth{変更履歴}{変更履歴}%
\addcontentsline{toc}{part}{変更履歴}}
% \end{macrocode}
% 標準の|\changes|コマンドを、複数ファイルの文書に合うように修正しています。
% \begin{macrocode}
\makeatletter
\def\changes@#1#2#3{%
\let\protect\@unexpandable@protect
\edef\@tempa{\noexpand\glossary{#2\space\currentfile\space#1\levelchar
\ifx\saved@macroname\@empty
\space\actualchar\generalname
\else
\expandafter\@gobble
\saved@macroname\actualchar
\string\verb\quotechar*%
\verbatimchar\saved@macroname
\verbatimchar
\fi
:\levelchar #3}}%
\@tempa\endgroup\@esphack}
\makeatother
\RecordChanges
\CodelineIndex
\EnableCrossrefs
\setcounter{IndexColumns}{2}
\settowidth\MacroIndent{\ttfamily\scriptsize 000\ }
% \end{macrocode}
% ここからが本文ページとなります。
% \changes{v1.0c}{1997/01/29}{Rename pltpatch to plpatch.}
% \begin{macrocode}
\begin{document}
\title{The p\LaTeXe\ Sources}
\author{Ken Nakano}
% This command will be used to input the patch file
% if that file exists.
\newcommand{\includeltpatch}{%
\def\currentfile{plpatch.ltx}
\part{plpatch}
{\let\ttfamily\relax
\xdef\filekey{\filekey, \thepart={\ttfamily\currentfile}}}%
Things we did wrong\ldots
\IndexInput{plpatch.ltx}}
% Get the date from plvers.dtx
\makeatletter
\let\patchdate=\@empty
\begingroup
\def\ProvidesFile#1\pfmtversion#2{\date{#2}\endinput}
\input{plvers.dtx}
\global\let\X@date=\@date
% Add the patch version if available.
\long\def\Xdef#1#2#3\def#4#5{%
\xdef\X@date{#2}%
\xdef\patchdate{#5}%
\endinput}%
\InputIfFileExists{plpatch.ltx}
{\let\def\Xdef}{\global\let\includeltpatch\relax}
\endgroup
\ifx\@date\X@date
\def\Xpatch{0}
\ifx\patchdate\Xpatch\else
\edef\@date{\@date\space Patch level\patchdate}
\fi
\else
\@warning{plpatch.ltx does not match plvers.dtx!}
\let\includeltpatch\relax
\fi
\makeatother
\pagenumbering{roman}
\maketitle
\renewcommand\maketitle{}
\tableofcontents
\clearpage
\pagenumbering{arabic}
\DocInclude{plvers} % pLaTeX version
\DocInclude{plfonts} % NFSS2 commands
\DocInclude{plcore} % kernel commands
\DocInclude{plext} % external commands
\DocInclude{pl209} % 2.09 compatibility mode commands
\DocInclude{kinsoku} % kinsoku parameter
\DocInclude{jclasses} % Standard class
\DocInclude{jltxdoc} % dtx documents class
\includeltpatch % patch file
% \end{macrocode}
% \file{ltxdoc.cfg}に|\AtEndOfClass{\OnlyDescription}|が指定されている場合は、
% ここで終了します。
% \begin{macrocode}
\StopEventually{\end{document}}
% \end{macrocode}
% 変更履歴と索引を組版します。
% 変更履歴ファイルと索引の作り方の詳細については、
% おまけ\ref{app:shprog}を参照してください。
% \begin{macrocode}
\clearpage
\pagestyle{headings}
% Make TeX shut up.
\hbadness=10000
\newcount\hbadness
\hfuzz=\maxdimen
%
\PrintChanges
\clearpage
%
\begingroup
\def\endash{--}
\catcode`\-\active
\def-{\futurelet\temp\indexdash}
\def\indexdash{\ifx\temp-\endash\fi}
\PrintIndex
\endgroup
% \end{macrocode}
% \file{ltxdoc.cfg}に2度目の|\PrintIndex|が指定されているかもしれません。
% そこで、最後に、変更履歴や索引が2度組版されないように|\PrintChanges|および
% |\PrintIndex|コマンドを何も実行しないようにします。
% \begin{macrocode}
\let\PrintChanges\relax
\let\PrintIndex\relax
\end{document}
%</pldoc>
% \end{macrocode}
%
%
%
% \section{おまけプログラム}\label{app:omake}
%
% \subsection{シェルスクリプト\file{mkpldoc.sh}}\label{app:shprog}
% ここでは、p\LaTeXe{}のマクロ定義ファイルをまとめて組版するときに便利な、
% シェルスクリプト\footnote{このシェルスクリプトはUNIX用です。
% しかしrmコマンドをdeleteコマンドにするなどすれば、簡単にDOSなどのバッチ
% ファイルに修正することができます。}について説明をしています。
% また、このシェルスクリプトを取り出すための、
% \dst{}バッチファイルについても説明をしています。
%
% このシェルスクリプトの使用方法は次のとおりです。
% \begin{verbatim}
% sh mkpldoc.sh
% \end{verbatim}
%
% \subsubsection{\file{mkpldoc.sh}の内容}
% まず、以前に\file{pldoc.tex}を処理したときに作成された、
% 目次ファイルや索引ファイルなどを削除します。
% \changes{v1.0c}{1997/01/23}{Don't copy gind.ist and gglo.ist from
% \$TEXMF/tex/latex2e/base directory.}
% \begin{macrocode}
%<*shprog>
rm pldoc.toc pldoc.idx pldoc.glo
% \end{macrocode}
% そして、\file{ltxdoc.cfg}を空にします。
% このファイルは、\file{jltxdoc.cls}の定義を変更するものですが、
% ここでは、変更されたくありません。
% \begin{macrocode}
echo "" > ltxdoc.cfg
% \end{macrocode}
% そして、\file{pldoc.tex}を処理します。
% \begin{macrocode}
platex pldoc.tex
% \end{macrocode}
% 索引と変更履歴を作成します。
% このスクリプトでは、変更履歴や索引を生成するのにmendexプログラムを用いて
% います。mendexはmakeindexの上位互換のファイル整形コマンドで、
% 索引語の読みを自動的に付けるなどの機能があります。
%
% |-s|オプションは、索引ファイルを整形するためのスタイルオプションです。
% 索引用の\file{gind.ist}と変更履歴用の\file{gglo.ist}は、
% \LaTeX{}のディストリビューションに付属しています。
%
% |-o|は、出力するファイル名を指定するオプションです。
%
% |-f|は、項目に``読み''がなくてもエラーとしないオプションです。
% makeindexコマンドには、このオプションがありません。
% \begin{macrocode}
mendex -s gind.ist -d pldoc.dic -o pldoc.ind pldoc.idx
mendex -f -s gglo.ist -o pldoc.gls pldoc.glo
% \end{macrocode}
% \file{ltxdoc.cfg}の内容を|\includeonly{}|にし、\file{pldoc.tex}を処理します。
% このコマンドは、引数に指定されたファイルだけを``|\include|''するための
% コマンドですが、ここでは何も|\include|したく\emph{ない}ので、
% 引数には何も指定をしません。
% しかし、|\input|で指定されているファイルは読み込まれます。
% したがって、目次や索引や変更履歴のファイルが処理されます。
% この処理は、主に、これらでエラーが出るかどうかの確認です。
% \begin{macrocode}
echo "\includeonly{}" > ltxdoc.cfg
platex pldoc.tex
% \end{macrocode}
% 最後に、再び\file{ltxdoc.cfg}を空にして、\file{pldoc.tex}を処理をします。
% 本文を1ページから開始していますので、この後、もう一度処理をする
% 必要はありません。
% \begin{macrocode}
echo "" > ltxdoc.cfg
platex pldoc.tex
# EOT
%</shprog>
% \end{macrocode}
%
%
% \subsection{perlスクリプト\file{dstcheck.pl}}\label{app:plprog}
% \dst{}文書ファイルは、\LaTeX{}のソースとその文書を同時に管理する方法として、
% とてもすぐれていると思います。しかし、たとえば\file{jclasses.dtx}のように、
% 条件が多くなると、入れ子構造がわからなくなってしまいがちです。
% \LaTeX{}で処理すれば、エラーによってわかりますが、
% 文書ファイルが大きくなると面倒です。
%
% ここでは、\dst{}文書ファイルの入れ子構造を調べるのに便利な、
% perlスクリプトについて説明をしています。
%
% このperlスクリプトの使用方法は次のとおりです。
%
% \begin{verbatim}
% perl dstcheck.pl file-name
% \end{verbatim}
%
% \subsubsection{\file{dstcheck.pl}の内容}
% 最初に、このperlスクリプトが何をするのかを簡単に記述したコメントを
% 付けます。
% \begin{macrocode}
%<*plprog>
##
## DOCSTRIP 文書内の環境や条件の入れ子を調べる perl スクリプト
##
% \end{macrocode}
% このスクリプトは、入れ子の対応を調べるために、次のスタックを用います。
% \meta{条件}あるいは\meta{環境}を開始するコードが現れたときに、
% それらはスタックにプッシュされ、終了するコードでポップされます。
% したがって、現在の\meta{条件}あるいは\meta{環境}と、
% スタックから取り出した\meta{条件}あるいは\meta{環境}と一致すれば、
% 対応が取れているといえます。そうでなければエラーです。
%
% |@dst|スタックには、\meta{条件}が入ります。
% 条件の開始は、``|%<*|\meta{条件}|>|''です。
% 条件の終了は、``|%</|\meta{条件}|>|''です。
% \meta{条件}には、|>|文字が含まれません。
% |@env|スタックには、\meta{環境}が入ります。
%
% 先頭を明示的に示すために、ダミーの値を初期値として用います。
% スタックは、\meta{条件}あるいは\meta{環境}の名前と、その行番号をペアにして
% 操作をします。
% \begin{macrocode}
push(@dst,"DUMMY"); push(@dst,"000");
push(@env,"DUMMY"); push(@env,"000");
% \end{macrocode}
% この|while|ループの中のスクリプトは、文書ファイルの1行ごとに実行をします。
% \begin{macrocode}
while (<>) {
% \end{macrocode}
% 入力行が条件を開始する行なのかを調べます。
% 条件の開始行ならば、|@dst|スタックに\meta{条件}と行番号をプッシュします。
% \begin{macrocode}
if (/^%<\*([^>]+)>/) { # check conditions
push(@dst,$1);
push(@dst,$.);
% \end{macrocode}
% そうでなければ、条件の終了行なのかを調べます。
% 現在行が条件の終了を示している場合は、|@dst|スタックをポップします。
% \begin{macrocode}
} elsif (/^%<\/([^>]+)>/) {
$linenum = pop(@dst);
$conditions = pop(@dst);
% \end{macrocode}
% 現在行の\meta{条件}と、スタックから取り出した\meta{条件}が一致しない場合、
% その旨のメッセージを出力します。
%
% なお、|DUMMY|と一致した場合は、一番外側のループが合っていないと
% いうことを示しています。このとき、これらのダミー値をスタックに戻します。
% いつでもスタックの先頭をダミー値にするためです。
% \begin{macrocode}
if ($1 ne $conditions) {
if ($conditions eq "DUMMY") {
print "$ARGV: `</$1>' (l.$.) is not started.\n";
push(@dst,"DUMMY");
push(@dst,"000");
} else {
print "$ARGV: `<*$conditions>' (l.$linenum) is ended ";
print "by `<*$1>' (l.$.)\n";
}
}
}
% \end{macrocode}
% 環境の入れ子も条件と同じように調べます。
%
% verbatim環境のときに、その内側をスキップしていることに注意をしてください。
% \begin{macrocode}
if (/^% *\\begin\{verbatim\}/) { # check environments
while(<>) {
last if (/^% *\\end\{verbatim\}/);
}
} elsif (/^% *\\begin\{([^{}]+)\}\{(.*)\}/) {
push(@env,$1);
push(@env,$.);
} elsif (/^% *\\begin\{([^{}]+)\}/) {
push(@env,$1);
push(@env,$.);
} elsif (/^% *\\end\{([^{}]+)\}/) {
$linenum = pop(@env);
$environment = pop(@env);
if ($1 ne $environment) {
if ($environment eq "DUMMY") {
print "$ARGV: `\\end{$1}' (l.$.) is not started.\n";
push(@env,"DUMMY");
push(@env,"000");
} else {
print "$ARGV: \\begin{$environement} (l.$linenum) is ended ";
print "by \\end{$1} (l.$.)\n";
}
}
}
% \end{macrocode}
% ここまでが、最初の|while|ループです。
% \begin{macrocode}
}
% \end{macrocode}
% 文書ファイルを読み込んだ後、終了していない条件があるかどうかを確認します。
% すべての条件の対応がとれていれば、この時点での|@dst|スタックには
% ダミー値しか入っていません。したがって、対応が取れている場合は、
% 最初の2つのポップによって、ダミー値が設定されます。
% ダミー値でなければ、ダミー値になるまで、取り出した値を出力します。
% \begin{macrocode}
$linenum = pop(@dst);
$conditions = pop(@dst);
while ($conditions ne "DUMMY") {
print "$ARGV: `<*$conditions>' (l.$linenum) is not ended.\n";
$linenum = pop(@dst);
$conditions = pop(@dst);
}
% \end{macrocode}
% 環境の入れ子についても、条件の入れ子と同様に確認をします。
% \begin{macrocode}
$linenum = pop(@env);
$environment = pop(@env);
while ($environment ne "DUMMY") {
print "$ARGV: `\\begin{$environment}' (l.$linenum) is not ended.\n";
$linenum = pop(@env);
$environment = pop(@env);
}
exit;
%</plprog>
% \end{macrocode}
%
% \subsection{\dst{}バッチファイル}
% \changes{v1.0b}{1996/02/01}{\dst{}にともなう変更}
% \changes{v1.0c}{1997/01/23}{\dst{}にともなう変更}
% ここでは、付録\ref{app:shprog}と付録\ref{app:plprog}で説明をした二つの
% スクリプトを、このファイルから取り出すための\dst{}バッチファイルについて
% 説明をしています。
%
% まず、\dst{}パッケージをロードします。
% また、実行経過のメッセージを出力しないようにしています。
% \begin{macrocode}
%<*Xins>
\input docstrip
\keepsilent
% \end{macrocode}
% \dst{}プログラムは、連続する二つのパーセント記号(\%\%)ではじまる行を
% メタコメントとみなし、条件によらず出力をします。
% しかし、``\%''は\TeX{}ではコメントであっても、shやperlにとってはコメント
% ではありません。そこで、メタコメントとして出力する文字を``\#\#''と
% 変更します。
% \begin{macrocode}
{\catcode`#=12 \gdef\MetaPrefix{## }}
% \end{macrocode}
% そして、プリアンブルに出力されるメッセージを宣言します。
% ここでは、とくに何も指定していませんが、宣言をしないとデフォルトの記述が
% `\%\%'付きで出力されてしまうため、それを抑制する目的で使用しています。
% \begin{macrocode}
\declarepreamble\thispre
\endpreamble
\usepreamble\thispre
% \end{macrocode}
% ポストアンブルも同様に、宣言をしないと`|\endinput|'が出力されます。
% \begin{macrocode}
\declarepostamble\thispost
\endpostamble
\usepostamble\thispost
% \end{macrocode}
% |\generate|コマンドで、どのファイルに、どのファイルのどの部分を出力するのか
% を指定します。
% \begin{macrocode}
\generate{
\file{dstcheck.pl}{\from{platex.dtx}{plprog}}
\file{mkpldoc.sh}{\from{platex.dtx}{shprog}}
}
\endbatchfile
%</Xins>
% \end{macrocode}
%
% \newpage
% \begin{thebibliography}{1}
% \bibitem{tex-book}
% Donald~E. Knuth.
% \newblock ``{\em The TeX Book}''.
% \newblock Addison-Wesley, 1984.
% \newblock (邦訳:斎藤信男監修, 鷺谷好輝訳,
% \TeX ブック 改訂新版, アスキー出版局, 1989)
%
% \bibitem{tate-book}
% インプレス・ラボ監修, アスキー書籍編集部編
% \newblock 『縦組対応 パーソナル日本語\TeX{}』
% \newblock アスキー出版局, 1994
%
% \bibitem{latex-comp}
% Michel Goossens, Frank Mittelbach, Alexander Samarin.
% \newblock ``{\em The {\LaTeX} Companion}''.
% \newblock Addison-Wesley, 1994.
%
% \bibitem{latex-book2}
% Laslie Lamport.
% \newblock ``{\em {\LaTeX:} A Document Preparation System}''.
% \newblock Addison-Wesley, second edition, 1994.
%
% \bibitem{latex-book}
% Laslie Lamport.
% \newblock ``{\em {\LaTeX:} A Document Preparation System}''.
% \newblock Addison-Wesley, 1986.
% \newblock (邦訳:倉沢良一監修, 大野俊治・小暮博通・藤浦はる美訳,
% 文書処理システム \LaTeX, アスキー, 1990)
%
% \bibitem{jtex-tech}
% アスキー出版技術部責任編集
% \newblock 『日本語\TeX テクニカルブックI』
% \newblock アスキー, 1990.
%
% \bibitem{platex2e-book}
% 中野 賢
% \newblock 『日本語\LaTeXe ブック』
% \newblock アスキー, 1996.
%
% \bibitem{perl}
% 河野真治著
% \newblock 『入門perl』
% \newblock アスキー出版局, 1994
% \end{thebibliography}
%
% \iffalse
% ここで、このあとに組版されるかもしれない文書のために、
% 節見出しの番号を算用数字に戻します。
% \fi
%
% \renewcommand{\thesection}{\arabic{section}}
%
% \Finale
%
\endinput
|