OSDN Git Service

fix #39463; added dummy disablejfam option in classes
[luatex-ja/luatexja.git] / src / ltjclasses.dtx
index 47be704..ccecd0d 100644 (file)
@@ -4,29 +4,14 @@
 %  Original: jclasses.dtx
 %
 %  Copyright 1995-2001 ASCII Corporation.
+%  Copyright (c) 2010 ASCII MEDIA WORKS
+%  Copyright (c) 2016-2018 Japanese TeX Development Community
 %
-%  This file is part of the pLaTeX2e system.
-%  -----------------------------------------
+%  This file is part of the pLaTeX2e system (community edition).
+%  -------------------------------------------------------------
 %
 % \fi
 %
-% \CheckSum{4509}
-%% \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}
 % \StopEventually{}
 % \changes{v1.6-ltj-8}{2014/11/22}{縦組時のgeometry.styへの対応を別ファイル(lltjp-geometry.sty)に分離.それに伴いv1.6-ltj-3での変更を削除.}
 % \changes{v1.6-ltj-9}{2015/01/01}{縦組クラスの日付出力でエラーになることなどを修正.}
 % \changes{v1.6-ltj-10}{2015/10/18}{Lua\TeX\ 0.81.0に伴うプリミティブ名の変更に対応.}
+% \changes{v1.6-ltj-11}{2016/07/19}{トンボ使用時の用紙サイズの設定方法を変更(aminophenさん,ありがとうございます).}
+% \changes{v1.7}{2016/11/12}{ドキュメントに反して\cs{@maketitle}が
+%    空になっていなかったのを修正}
+% \changes{v1.7}{2016/11/12}{use \cs{@width} (sync with classes.dtx v1.3a)}
+% \changes{v1.7}{2016/11/12}{Replaced all \cs{hbox to} by
+%    \cs{hb@xt@} (sync with classes.dtx v1.3a)}
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+%                            arg (sync with classes.dtx v1.4c)}
+% \changes{v1.7}{2016/11/12}{\cs{columnsep}と\cs{columnseprule}の
+%    変更を後ろに移動(sync with classes.dtx v1.4f)}
+% \changes{v1.7a}{2016/11/16}{Check \texttt{@noskipsec} switch and
+%    possibly force horizontal mode (sync with classes.dtx v1.4a)}
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+%    \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \changes{v1.7a}{2016/11/16}{Added \cs{nobreak} for
+%    latex/2343 (sync with ltsect.dtx v1.0z)}
+% \changes{v1.7a}{2016/11/16}{Use \cs{expandafter}
+%    (sync with ltlists.dtx v1.0j)}
+% \changes{v1.7b}{2016/11/22}{補足ドキュメントを追加}
+% \changes{v1.7c}{2016/12/18}{Only add empty page after part if
+%    twoside and openright (sync with classes.dtx v1.4b)}
+% \changes{v1.7c-ltj-12}{2017/01/17}{|\stockwidth|,~|\stockheight|をトンボオプション指定時にのみ定義
+%    (aminophenさん,ありがとうございます).}
+% \changes{v1.7c}{2016/12/18}{奇妙なarticleガードとコードを削除して
+%    ドキュメントを追加}
+% \changes{v1.7d}{2017/02/15}{\cs{if@openleft}スイッチ追加}
+% \changes{v1.7d}{2017/02/15}{openleftオプション追加}
+% \changes{v1.7d}{2017/02/15}{\cs{cleardoublepage}の代用となる命令群を追加}
+% \changes{v1.7d}{2017/02/15}{bookクラスでtitlepageを必ず奇数ページ
+%   に送るように変更}
+% \changes{v1.7d}{2017/02/15}{titlepageのページ番号を奇数ならば1に、
+%   偶数ならば0にリセットするように変更}
+% \changes{v1.7d}{2017/02/15}{縦組クラスの所属表示の番号を直立にした}
+% \changes{v1.7d-ltj-13}{2017/02/19}{縦組時クラスで|ftnright|パッケージを使うと
+%   脚注番号が上書きされ横に寝てしまう問題を修正(aminophenさん,ありがとうございます).}
+% \changes{v1.7d-ltj-14}{2017/02/20}{openleftオプションの処理で\cs{iftdir}, \cs{ifydir}を
+%   誤って使っている問題を修正(aminophenさん,ありがとうございます).}
+% \changes{v1.7e}{2017/03/05}{トンボに表示するジョブ情報の書式を変更}
+% \changes{v1.7e}{2017/03/05}{\cs{frontmatter}と\cs{mainmatter}を
+%   奇数ページに送るように変更}
+% \changes{v1.7e-ltj-15}{2017/08/31}{本ドキュメントのタイプセットで,小塚フォントが存在するときには
+%   それを用いるように変更(PDFサイズ削減のため).}
+% \changes{v1.7f}{2017/08/31}{和文書体の基準を全角空白から「漢」に変更}
+% \changes{v1.7g}{2017/09/19}{内部処理で使ったボックス0を空にした}
+% \changes{v1.7h}{2018/02/04}{和文スケール値\cs{Cjascale}を定義}
+% \changes{v1.8}{2018/07/03}{\cs{today}のデフォルトを和暦から西暦に変更}
+% \changes{v1.8-ltj-16}{2018/10/08}{Lua\TeX-jaが|disablejfam|オプションをサポートしたことによる変更}
+% \changes{v1.8a}{2018/10/25}{ファイル書き出し時の行末文字対策
+%    (sync with ltsect.dtx 2018/09/26 v1.1c)}
+% \changes{v1.8b}{2019/04/02}{新元号対応}
+% \changes{v1.8b-ltj-17}{2019/08/12}{disablejfamの``Unused global option(s)''警告を出さないようにした}
+
 % \fi
 %
 % \iffalse
 %<11pt&bk>\ProvidesFile{ltjtbk11.clo}
 %<12pt&bk>\ProvidesFile{ltjtbk12.clo}
 %</tate>
-  [2015/10/18 v1.6-ltj-10
+  [2019/04/06 v1.8b-ltj-16
 %<article|report|book> Standard LuaLaTeX-ja class]
 %<10pt|11pt|12pt>  Standard LuaLaTeX-ja file (size option)]
 %<*driver>
 ]
 \documentclass{ltjltxdoc}
 \GetFileInfo{ltjclasses.dtx}
-\usepackage{fontspec}
-\usepackage[ipaex,nfssonly]{luatexja-preset}
-\usepackage{unicode-math}
-\setmathfont{Latin Modern Math}
+\begingroup
+ \suppressfontnotfounderror=1
+ \global\font\testfont=file:KozMinPr6N-Regular.otf
+\endgroup
+\ifx\testfont\nullfont
+  \usepackage[ipaex,nfssonly]{luatexja-preset}
+\else
+  \usepackage[kozuka-pr6n,nfssonly]{luatexja-preset}
+\fi
+\def\pLaTeX{p\kern-.05em\LaTeX}
 \usepackage[unicode]{hyperref}
 \title{Lua\LaTeX-ja用\texttt{jclasses}互換クラス}
 \author{Lua\TeX-jaプロジェクト}
 %
 % \section{はじめに}
 % このファイルは、Lua\LaTeX-ja用の|jclasses|互換クラスファイルです。
-% v1.6をベースに作成しています。
+% コミュニティ版をベースに作成しています。
 % \dst{}プログラムによって、横組用のクラスファイルと縦組用のクラスファイル
 % を作成することができます。
 %
 % 全ての変更点を知りたい場合は、|jclasses.dtx|と|ltjclasses.dtx|で|diff|を
 % とって下さい。
 % \begin{itemize}
-% \item |disablejfam|オプションを無効化。もし
+% \item もし
 % \begin{quotation}
 %   |! LaTeX Error: Too many math alphabets used in version ****.|
 % \end{quotation}
 % \end{macro}
 %
 % \begin{macro}{\if@openright}
-% chapterレベルを奇数ページからはじめるかどうかのスイッチです。
+% chapterレベルを右ページからはじめるかどうかのスイッチです。
+% 横組では奇数ページ、縦組では偶数ページから始まることになります。
 % reportクラスのデフォルトは、``no''です。
 % bookクラスのデフォルトは、``yes''です。
 %    \begin{macrocode}
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\if@openleft}
+% chapterレベルを左ページからはじめるかどうかのスイッチです。
+% 日本語\TeX{}開発コミュニティ版で新たに追加されました。
+% 横組では偶数ページ、縦組では奇数ページから始まることになります。
+% reportクラスとbookクラスの両方で、デフォルトは``no''です。
+% \changes{v1.7d}{2017/02/15}{\cs{if@openleft}スイッチ追加}
+%    \begin{macrocode}
+%<!article>\newif\if@openleft
+%    \end{macrocode}
+% \end{macro}
+%
 % \changes{v1.0c}{1995/12/25}{Macro \cs{if@openbib} removed}
 %
 % \begin{macro}{\if@mainmatter}
 % |tombow|オプションが指定されると、用紙サイズに合わせてトンボを出力します。
 % このとき、トンボの脇にPDFを作成した日付が出力されます。
 % 作成日付の出力を抑制するには、|tombow|ではなく、|tombo|と指定をします。
+%
+% ジョブ情報の書式は元々|filename :  2017/3/5(13:3)|のような書式でしたが、
+% jsclassesにあわせて桁数固定の|filename (2017-03-05 13:03)|に直しました。
 % \changes{v1.0g}{1996/09/03}{Add to \cs{@bannertoken}.}
 % \changes{v1.1a}{1997/01/23}{日付出力オプション}
+% \changes{v1.7e}{2017/03/05}{トンボに表示するジョブ情報の書式を変更}
 %    \begin{macrocode}
 \DeclareOption{tombow}{%
   \tombowtrue \tombowdatetrue
   \setlength{\@tombowwidth}{.1\p@}%
   \@bannertoken{%
-     \jobname\space:\space\number\year/\number\month/\number\day
-      (\number\hour:\number\minute)}
+     \jobname\space(\number\year-\two@digits\month-\two@digits\day
+     \space\two@digits\hour:\two@digits\minute)}%
   \maketombowbox}
 \DeclareOption{tombo}{%
   \tombowtrue \tombowdatefalse
 % \subsection{右左起こしオプション}
 % chapterを右ページあるいは左ページから
 % はじめるかどうかを指定するオプションです。
+% |openleft|オプションは日本語\TeX{}開発コミュニティによって追加されました。
+% \changes{v1.7d}{2017/02/15}{openleftオプション追加}
 %    \begin{macrocode}
 %<!article>\if@compatibility
 %<book>\@openrighttrue
 %<!article>\else
-%<!article>\DeclareOption{openright}{\@openrighttrue}
-%<!article>\DeclareOption{openany}{\@openrightfalse}
+%<!article>\DeclareOption{openright}{\@openrighttrue\@openleftfalse}
+%<!article>\DeclareOption{openleft}{\@openlefttrue\@openrightfalse}
+%<!article>\DeclareOption{openany}{\@openrightfalse\@openleftfalse}
 %<!article>\fi
 %    \end{macrocode}
 %
 % |mathrmmc|オプションは、
 % |\mathrm|と|\mathbf|を和欧文両対応にするためのクラスオプションです。
 % \changes{v1.1d}{1992/02/04}{disablejfamの判断を間違えてたのを修正}
+% \changes{v1.8-ltj-16}{2018/10/08}{Lua\TeX-ja本体が,主にメモリ消費を抑える目的で
+%   |disablejfam|オプションをサポートしました。そのため以前出していた警告は削除します。}
 %    \begin{macrocode}
 \if@compatibility
   \@mathrmmctrue
 \else
-  \DeclareOption{disablejfam}{%
-    \ClassWarningNoLine{\@currname}{The class option 'disablejfam' is obsolete}}
   \DeclareOption{mathrmmc}{\@mathrmmctrue}
 \fi
 %    \end{macrocode}
 %
 % \changes{v1.6-ltj-9}{2015/01/01}{サイズクラスのロード前にメトリックの変更を行わないと,
 % \cs{Cht}等の値が反映されないのでこの場所に移動させました.}
-% 
+%
 %    \begin{macrocode}
 %<*article|report|book>
 \directlua{luatexbase.add_to_callback('luatexja.load_jfm',
 %</article|report|book>
 %    \end{macrocode}
 %
+% \subsection{disablejfamオプション}
+% \changes{v1.8b-ltj-17}{2019/08/12}{disablejfamの``Unused global option(s)''警告を出さないようにした}
+% disablejfamオプションは\LuaTeX-ja本体で処理しますが,
+% もう\LuaTeX-jaは読み込んでいるため,このままでは``Unused global option(s): [disablejfam]''警告が
+% 出てしまいます.そのため,「何もしない」disablejfamオプションをクラス内で定義しておきます.
+%
+%    \begin{macrocode}
+%<*article|report|book>
+\DeclareOption{disablejfam}{}
+%</article|report|book>
+%    \end{macrocode}
+%
 % \subsection{オプションの実行}
 % オプションの実行、およびサイズクラスのロードを行ないます。
 %    \begin{macrocode}
 % \begin{macro}{\Cvs}
 % \begin{macro}{\Chs}
 % 基準となる長さの設定をします。これらのパラメータは\file{lltjfont.sty}で定義
-% されています。
+% されています。基準とする文字を「全角空白」(EUCコード\texttt{0xA1A1})から
+% 「漢」(JISコード\texttt{0x3441})へ変更しました。
+% \changes{v1.7f}{2017/08/31}{和文書体の基準を全角空白から「漢」に変更}
+% \changes{v1.7g}{2017/09/19}{内部処理で使ったボックス0を空にした}
 %    \begin{macrocode}
-\setbox0\hbox{\char"3000}% 全角スペース
+\setbox0\hbox{漢}
 \setlength\Cht{\ht0}
 \setlength\Cdp{\dp0}
 \setlength\Cwd{\wd0}
 \setlength\Cvs{\baselineskip}
 \setlength\Chs{\wd0}
+\setbox0=\box\voidb@x
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \end{macro}
 % \end{macro}
 %
+% \begin{macro}{\Cjascale}
+% このクラスファイルが意図する和文スケール値
+% ($1\,\mathrm{zw} \div \textmc{要求サイズ}$)を
+% 表す実数値マクロ|\Cjascale|を定義します。
+% この\texttt{jclasses}互換クラスでは、Lua\TeX-ja読み込み時の和文スケール値がそのまま
+% 使用され、その値は0.962216です。
+% \changes{v1.7h}{2018/02/04}{和文スケール値\cs{Cjascale}を定義}
+%    \begin{macrocode}
+%<*article|report|book>
+\def\Cjascale{0.962216}
+%</article|report|book>
+%    \end{macrocode}
+% \end{macro}
+%
 %
 %
 % \section{レイアウト}
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\pdfpagewidth}
-% \begin{macro}{\pdfpageheight}
+% \begin{macro}{\pagewidth}
+% \begin{macro}{\pageheight}
+% \begin{macro}{\stockwidth}
+% \begin{macro}{\stockheight}
 % 出力のPDFの用紙サイズをここで設定しておきます。
 % |tombow|が真のときは2インチ足しておきます。
 %
 % [2015-10-18 LTJ] Lua\TeX\ 0.81.0ではプリミティブの名称変更がされたので,
 % それに合わせておきます.
+%
+% [2016-07-19 LTJ] luatex.defが新しくなったことに対応するaminophenさんのパッチを取り込みました。
+%
+% [2017-01-17 LTJ] [lt]jsclassesに合わせ,トンボオプションが指定されているとき「だけ」|\stockwidth|,
+% |\stockheight|を定義するようにしました。aminophenさん,ありがとうございます.
+%
 %    \begin{macrocode}
-\setlength{\@tempdima}{\paperwidth}
-\setlength{\@tempdimb}{\paperheight}
 \iftombow
-  \advance \@tempdima 2in
-  \advance \@tempdimb 2in
-\fi
-\ifdefined\pdfpagewidth
-  \setlength{\pdfpagewidth}{\@tempdima}
-  \setlength{\pdfpageheight}{\@tempdimb}
+  \newlength{\stockwidth}
+  \newlength{\stockheight}
+  \setlength{\stockwidth}{\paperwidth}
+  \setlength{\stockheight}{\paperheight}
+  \advance \stockwidth 2in
+  \advance \stockheight 2in
+  \ifdefined\pdfpagewidth
+    \setlength{\pdfpagewidth}{\stockwidth}
+    \setlength{\pdfpageheight}{\stockheight}
+  \else
+    \setlength{\pagewidth}{\stockwidth}
+    \setlength{\pageheight}{\stockheight}
+  \fi
 \else
-  \setlength{\pagewidth}{\@tempdima}
-  \setlength{\pageheight}{\@tempdimb}
+  \ifdefined\pdfpagewidth
+    \setlength{\pdfpagewidth}{\paperwidth}
+    \setlength{\pdfpageheight}{\paperheight}
+  \else
+    \setlength{\pagewidth}{\paperwidth}
+    \setlength{\pageheight}{\paperheight}
+  \fi
 \fi
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \subsection{段落の形}
 %
 % |\marginparwidth|を計算します。
 % ここで、|\@tempdima|の値は、\linebreak
 % |\paperwidth| $-$ |\textwidth|です。
-% \changes{v1.1d}{1995/11/24}{typo: \cs{marginmarwidth} to \cs{marginparwidth}}
+% \changes{v1.1d}{1995/11/24}{\break typo: \cs{marginmarwidth} to \cs{marginparwidth}}
 %    \begin{macrocode}
 %<*yoko>
   \if@twoside
 % \end{macro}
 %
 %
+% \section{改ページ(日本語\TeX{}開発コミュニティ版のみ)}\label{sec:cleardoublepage}
+%
+% \begin{macro}{\pltx@cleartorightpage}
+% \begin{macro}{\pltx@cleartoleftpage}
+% \begin{macro}{\pltx@cleartooddpage}
+% \begin{macro}{\pltx@cleartoevenpage}
+% |\cleardoublepage|命令は、\LaTeX{}カーネルでは「奇数ページになるまでページを
+% 繰る命令」として定義されています。しかしp\LaTeX{}カーネルでは、アスキーの方針
+% により「横組では奇数ページになるまで、縦組では偶数ページになるまでページを
+% 繰る命令」に再定義されています。すなわち、p\LaTeX{}では縦組でも横組でも
+% 右ページになるまでページを繰ることになります。
+%
+% p\LaTeX{}標準クラスのbookは、横組も縦組も|openright|がデフォルトになっていて、
+% これは従来p\LaTeX{}カーネルで定義された|\cleardoublepage|を利用していました。
+% しかし、縦組で奇数ページ始まりの文書を作りたい場合もあるでしょうから、
+% コミュニティ版クラスでは以下の(非ユーザ向け)命令を追加します。
+% \begin{enumerate}
+%   \item|\pltx@cleartorightpage|:右ページになるまでページを繰る命令
+%   \item|\pltx@cleartoleftpage|:左ページになるまでページを繰る命令
+%   \item|\pltx@cleartooddpage|:奇数ページになるまでページを繰る命令
+%   \item|\pltx@cleartoevenpage|:偶数ページになるまでページを繰る命令
+% \end{enumerate}
+% \changes{v1.7d}{2017/02/15}{\cs{cleardoublepage}の代用となる命令群を追加}
+% \changes{v1.7d-ltj-14}{2017/02/20}{\cs{iftdir}, \cs{ifydir}を使わないように修正}
+%    \begin{macrocode}
+\def\pltx@cleartorightpage{\clearpage\if@twoside
+  \unless\ifodd\numexpr\c@page+\ltjgetparameter{direction}\relax
+    \hbox{}\thispagestyle{empty}\newpage
+    \if@twocolumn\hbox{}\newpage\fi
+  \fi\fi}
+\def\pltx@cleartoleftpage{\clearpage\if@twoside
+  \ifodd\numexpr\c@page+\ltjgetparameter{direction}\relax
+    \hbox{}\thispagestyle{empty}\newpage
+    \if@twocolumn\hbox{}\newpage\fi
+  \fi\fi}
+%    \end{macrocode}
+%
+% |\pltx@cleartooddpage|は\LaTeX{}の|\cleardoublepage|に似ていますが、
+% 上の2つに合わせるため|\thispagestyle{empty}|を追加してあります。
+%    \begin{macrocode}
+\def\pltx@cleartooddpage{\clearpage\if@twoside
+  \ifodd\c@page\else
+    \hbox{}\thispagestyle{empty}\newpage
+    \if@twocolumn\hbox{}\newpage\fi
+  \fi\fi}
+\def\pltx@cleartoevenpage{\clearpage\if@twoside
+  \ifodd\c@page
+    \hbox{}\thispagestyle{empty}\newpage
+    \if@twocolumn\hbox{}\newpage\fi
+  \fi\fi}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cleardoublepage}
+% そしてreportとbookクラスの場合は、ユーザ向け命令である|\cleardoublepage|を、
+% |openright|オプションが指定されている場合は|\pltx@cleartorightpage|に、
+% |openleft|オプションが指定されている場合は|\pltx@cleartoleftpage|に、
+% それぞれ|\let|します。|openany|の場合はp\LaTeX{}カーネルの定義のままです。
+%    \begin{macrocode}
+%<*!article>
+\if@openleft
+  \let\cleardoublepage\pltx@cleartoleftpage
+\else\if@openright
+  \let\cleardoublepage\pltx@cleartorightpage
+\fi\fi
+%</!article>
+%    \end{macrocode}
+% \end{macro}
+%
+%
 %
 % \section{ページスタイル}\label{sec:pagestyle}
 % つぎの6種類のページスタイルを使用できます。
-% \pstyle{empty}は\file{latex.dtx}で定義されています。
+% \pstyle{empty}は\file{ltpage.dtx}で定義されています。
 %
 % \begin{tabular}{ll}
 % empty      & ヘッダにもフッタにも出力しない\\
 %
 % \DeleteShortVerb{\|}
 % \begin{tabular}{ll}
-% |\@oddhead| & 奇数ページのヘッダを出力\\
-% |\@oddfoot| & 奇数ページのフッタを出力\\
-% |\@evenhead| & 偶数ページのヘッダを出力\\
-% |\@evenfoot| & 偶数ページのフッタを出力\\
+%   \cs{@oddhead} & 奇数ページのヘッダを出力\\
+%   \cs{@oddfoot} & 奇数ページのフッタを出力\\
+%   \cs{@evenhead} & 偶数ページのヘッダを出力\\
+%   \cs{@evenfoot} & 偶数ページのフッタを出力\\
 % \end{tabular}
 % \MakeShortVerb{\|}
 %
 % \changes{v1.0a}{1995/08/30}{柱の書体がノンブルに影響するバグの修正}
 %
 % \subsection{plainページスタイル}
-% \pstyle{jpl@in}に|\let|するために、ここで定義をします。
 %
 % \begin{macro}{\ps@plain}
+% \pstyle{jpl@in}に|\let|するために、ここで定義をします。
 %    \begin{macrocode}
 \def\ps@plain{\let\@mkboth\@gobbletwo
    \let\ps@jpl@in\ps@plain
 % \end{macro}
 %
 % \subsection{jpl@inページスタイル}
+%
+% \begin{macro}{\ps@jpl@in}
 % \changes{v1.0d}{1996/02/29}{\pstyle{jpl@in}の初期値を定義}
 %
 % \pstyle{jpl@in}スタイルは、クラスファイル内部で使用するものです。
 % \LaTeX{}では、bookクラスを\pstyle{headings}としています。
-% しかし、\cs{tableofcontnts}コマンドの内部では\pstyle{plain}として
+% しかし、\cs{tableofcontents}コマンドの内部では\pstyle{plain}として
 % 設定されるため、一つの文書でのページ番号の位置が上下に出力される
 % ことになります。
 %
 % 出力されます。
 %
 % ここで、定義をしているのは、その初期値です。
-%
-% \begin{macro}{\ps@jpl@in}
 %    \begin{macrocode}
 \let\ps@jpl@in\ps@plain
 %    \end{macrocode}
 %<*report|book>
   \def\chaptermark##1{\markboth{%
      \ifnum \c@secnumdepth >\m@ne
-%<book>         \if@mainmatter
+%<book>       \if@mainmatter
          \@chapapp\thechapter\@chappos\hskip1\zw
-%<book>         \fi
+%<book>       \fi
      \fi
      ##1}{}}%
   \def\sectionmark##1{\markright{%
 %<*report|book>
 \def\chaptermark##1{\markright{%
    \ifnum \c@secnumdepth >\m@ne
-%<book>         \if@mainmatter
+%<book>     \if@mainmatter
        \@chapapp\thechapter\@chappos\hskip1\zw
-%<book>         \fi
+%<book>     \fi
    \fi
    ##1}}%
 %</report|book>
 %<*report|book>
 \def\chaptermark##1{\markboth{%
      \ifnum \c@secnumdepth >\m@ne
-%<book>         \if@mainmatter
+%<book>       \if@mainmatter
          \@chapapp\thechapter\@chappos\hskip1\zw
-%<book>         \fi
+%<book>       \fi
      \fi
      ##1}{}}%
   \def\sectionmark##1{\markright{%
 %<*report|book>
   \def\chaptermark##1{\markright{%
      \ifnum \c@secnumdepth >\m@ne
-%<book>         \if@mainmatter
+%<book>       \if@mainmatter
          \@chapapp\thechapter\@chappos\hskip1\zw
-%<book>         \fi
+%<book>       \fi
      \fi
      ##1}}%
 %</report|book>
 %
 % \section{文書コマンド}
 %
-% \subsubsection{表題}
+% \subsection{表題}
 %
 % \begin{macro}{\title}
-% \begin{macro}{\autor}
+% \begin{macro}{\author}
 % \begin{macro}{\date}
 % 文書のタイトル、著者、日付の情報のための、
-% これらの3つのコマンドは\file{latex.dtx}で提供されています。
+% これらの3つのコマンドは\file{ltsect.dtx}で提供されています。
 % これらのコマンドは次のように定義されています。
 %    \begin{macrocode}
 %\newcommand*{\title}[1]{\gdef\@title{#1}}
 % 右起こしページ用のページパラメータでは誤った結果になります。
 % 二段組スタイルでも一段組のページが作られます。
 %
+% \noindent\emph{日本語\TeX{}開発コミュニティによる変更}:
+% 上にあるのはアスキー版の説明です。改めてアスキー版の挙動を整理すると、
+% 以下のようになります。
+% \begin{enumerate}
+% \item アスキー版では、タイトルページの番号を必ず1にリセットしていましたが、
+%   これは正しくありません。これは、タイトルページが奇数ページ目か偶数ページ目
+%   かにかかわらず、レイアウトだけ奇数ページ用が適用されてしまうからです。
+%   さらに、タイトルの次のページも偶数のページ番号を持ってしまうため、両面印刷
+%   で奇数ページと偶数ページが交互に出なくなるという問題もあります。
+% \item アスキー版bookクラスは、タイトルページを必ず|\cleardoublepage|で始めて
+%   いました。p\LaTeX{}カーネルでの|\cleardoublepage|の定義から、縦組の既定では
+%   タイトルが偶数ページ目に出ることになります。これ自体が正しくないと断定する
+%   ことはできませんが、タイトルのページ番号を1にリセットすることと合わさって、
+%   偶数ページに送ったタイトルに奇数ページ用レイアウトが適用されてしまうという
+%   結果は正しくありません。
+% \end{enumerate}
+% そこで、コミュニティ版ではタイトルのレイアウトが必ず奇数ページ用になるという
+% 挙動を支持し、bookクラスではタイトルページを奇数ページ目に送ることにしました。
+% これでタイトルページが表紙らしく見えるようになります。また、reportクラスの
+% ようなタイトルが成り行きに従って出る場合には
+% \begin{itemize}
+%   \item 奇数ページ目に出る場合、ページ番号を1(奇数)にリセット
+%   \item 偶数ページ目に出る場合、ページ番号を0(偶数)にリセット
+% \end{itemize}
+% としました。
+%
+% 一つめの例を考えます。
+%\begin{verbatim}
+%   \documentclass{tbook}
+%   \title{タイトル}\author{著者}
+%   \begin{document}
+%   \maketitle
+%   \chapter{チャプター}
+%   \end{document}
+%\end{verbatim}
+% アスキー版tbookクラスでの結果は
+%\begin{verbatim}
+%   1ページ目:空白(ページ番号1は非表示)
+%   2ページ目:タイトル(奇数レイアウト、ページ番号1は非表示)
+%   3ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% ですが、仮に最初の空白ページさえなければ
+%\begin{verbatim}
+%   1ページ目:タイトルすなわち表紙(奇数レイアウト、ページ番号1は非表示)
+%   2ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% とみなせるため、コミュニティ版では空白ページを発生させないようにしました。
+%
+% 二つめの例を考えます。
+%\begin{verbatim}
+%   \documentclass{tbook}
+%   \title{タイトル}\author{著者}
+%   \begin{document}
+%   テスト文章
+%   \maketitle
+%   \chapter{チャプター}
+%   \end{document}
+%\end{verbatim}
+% アスキー版tbookクラスでの結果は
+%\begin{verbatim}
+%   1ページ目:テスト文章(奇数レイアウト、ページ番号1)
+%   2ページ目:タイトル(奇数レイアウト、ページ番号1は非表示)
+%   3ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% ですが、これでは奇数と偶数のページ番号が交互になっていないので正しく
+% ありません。そこで、コミュニティ版では
+%\begin{verbatim}
+%   1ページ目:テスト文章(奇数レイアウト、ページ番号1)
+%   2ページ目:空白ページ(ページ番号2は非表示)
+%   3ページ目:タイトル(奇数レイアウト、ページ番号1は非表示)
+%   4ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% と直しました。
+%
+% なお、p\LaTeX~2.09互換モードはアスキー版のまま、すなわち「ページ番号をゼロに
+% 設定」としてあります。これは、横組の右起こしの挙動としては誤りですが、縦組の
+% 右起こしの挙動としては一応正しくなっているといえます。
+%
 % 最初に互換モードの定義を作ります。
 %    \begin{macrocode}
 \if@compatibility
 \newenvironment{titlepage}
     {%
-%<book>      \cleardoublepage
+%<book>     \cleardoublepage
      \if@twocolumn\@restonecoltrue\onecolumn
      \else\@restonecolfalse\newpage\fi
      \thispagestyle{empty}%
     }%
     {\if@restonecol\twocolumn\else\newpage\fi
     }
-%   \end{macrocode}
+%    \end{macrocode}
 %
 % そして、\LaTeX{}ネイティブのための定義です。
-%   \begin{macrocode}
+% \changes{v1.7d}{2017/02/15}{bookクラスでtitlepageを必ず奇数ページ
+%   に送るように変更}
+% \changes{v1.7d}{2017/02/15}{titlepageのページ番号を奇数ならば1に、
+%   偶数ならば0にリセットするように変更}
+%    \begin{macrocode}
 \else
 \newenvironment{titlepage}
     {%
-%<book>      \cleardoublepage
+%<book>      \pltx@cleartooddpage %% 2017/02/15
       \if@twocolumn
         \@restonecoltrue\onecolumn
       \else
         \@restonecolfalse\newpage
       \fi
       \thispagestyle{empty}%
-      \setcounter{page}\@ne
+      \ifodd\c@page\setcounter{page}\@ne\else\setcounter{page}\z@\fi %% 2017/02/15
     }%
     {\if@restonecol\twocolumn \else \newpage \fi
 %    \end{macrocode}
-% äº\8c段çµ\84モードでなければ、タイトルページの直後のページのページ番号も1に
+% ä¸¡é\9d¢モードでなければ、タイトルページの直後のページのページ番号も1に
 % します。
 %    \begin{macrocode}
      \if@twoside\else
 % 縦組のときは、|\thanks|コマンドを|\p@thanks|に|\let|します。
 % このコマンドは|\footnotetext|を使わず、直接、文字を|\@thanks|に格納
 % していきます。
+%
+% 著者名の脇に表示される合印は直立した数字、注釈側は横に寝た数字となっていまし
+% たが、不自然なので|\hbox{\yoko ...}|を追加し、両方とも直立するようにしました。
+% \changes{v1.7d}{2017/02/15}{縦組クラスの所属表示の番号を直立にした}
 %    \begin{macrocode}
 \def\p@thanks#1{\footnotemark
   \protected@xdef\@thanks{\@thanks
-    \protect{\noindent$\m@th^\thefootnote$~#1\protect\par}}}
+    \protect{\noindent\hbox{\yoko$\m@th^\thefootnote$}#1\protect\par}}}
 %    \end{macrocode}
 % \end{macro}
 %
       \else\hbox{\yoko$\m@th^{\@thefnmark}$}\fi}}%
 %<*tate>
     \long\def\@makefntext##1{\parindent 1\zw\noindent
-       \hbox to 2\zw{\hss\@makefnmark}##1}%
+       \hb@xt@ 2\zw{\hss\@makefnmark}##1}%
 %</tate>
 %<*yoko>
      \long\def\@makefntext##1{\parindent 1em\noindent
-       \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
+       \hb@xt@1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
 %</yoko>
     \if@twocolumn
       \ifnum \col@number=\@ne \@maketitle
 % ここでグループを閉じ、\Lcount{footnote}カウンタをリセットし、
 % |\thanks|, |\maketitle|, |\@maketitle|を無効にし、
 % いくつかの内部マクロを空にして格納領域を節約します。
+% \changes{v1.7}{2016/11/12}{ドキュメントに反して\cs{@maketitle}が
+%    空になっていなかったのを修正}
 %    \begin{macrocode}
   \endgroup
   \setcounter{footnote}{0}%
   \global\let\thanks\relax
   \global\let\maketitle\relax
+  \global\let\@maketitle\relax
   \global\let\p@thanks\relax
   \global\let\@thanks\@empty
   \global\let\@author\@empty
 %    \end{macrocode}
 % \end{macro}
 %
-% \subsubsection{概要}
+% \subsection{概要}
 %
 % \begin{environment}{abstract}
 % 要約文のための環境です。bookクラスでは使えません。
 %
 % \subsection{章見出し}
 %
-% \subsection{マークコマンド}
+% \subsubsection{マークコマンド}
 %
 % \begin{macro}{\chaptermark}
 % \begin{macro}{\sectionmark}
 % \begin{macro}{\subparagraphmark}
 % |\...mark|コマンドを初期化します。これらのコマンドはページスタイルの
 % 定義で使われます(第\ref{sec:pagestyle}節参照)。
-% これらのたいていのコマンドは\file{latex.dtx}ですでに定義されています。
+% これらのたいていのコマンドは\file{ltsect.dtx}ですでに定義されています。
 %    \begin{macrocode}
 %<!article>\newcommand*{\chaptermark}[1]{}
 %\newcommand*{\sectionmark}[1]{}
 %\newcommand*{\subsectionmark}[1]{}
 %\newcommand*{\subsubsectionmark}[1]{}
-%\newcommand*{\paragraph}[1]{}
-%\newcommand*{\subparagraph}[1]{}
+%\newcommand*{\paragraphmark}[1]{}
+%\newcommand*{\subparagraphmark}[1]{}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % |\alph{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を
 % $1=$~a, $2=$~b のようにして出力します。
 %
-% |\Roman{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を
+% |\Alph{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を
 % $1=$~A, $2=$~B のようにして出力します。
 %
-% |\kansuji{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を
+% |\Kanji{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を
 % 漢数字で出力します。
 %
 % |\rensuji{|\meta{obj}|}|は、\meta{obj}を横に並べて出力します。
 % \begin{macro}{\mainmatter}
 % \begin{macro}{\backmatter}
 % \changes{v1.1}{1997/01/15}{\cs{frontmatter}, \cs{mainmatter}, \cs{backmatter}
-%   を\LaTeXの定義に修正}
+%   を\LaTeX{}の定義に修正}
 % 一冊の本は論理的に3つに分割されます。
 % 表題や目次や「はじめに」あるいは権利などの前付け、
 % そして本文、それから用語集や索引や奥付けなどの後付けです。
+%
+% \emph{日本語\TeX{}開発コミュニティによる補足}:
+% \LaTeX{}のclasses.dtxは、1996/05/26 (v1.3r)と1998/05/05 (v1.3y)の
+% 計2回、|\frontmatter|と|\mainmatter|の定義を修正しています。一回目は
+% これらの命令を|openany|オプションに応じて切り替え、二回目はそれを
+% 元に戻しています。アスキーによるjclasses.dtxは、1997/01/15に
+% 一回目の修正に追随しましたが、二回目の修正には追随していません。
+% コミュニティ版では、一旦はアスキーによる仕様を維持しようと考え
+% ました(2016/11/22)が、以下の理由により二回目の修正にも追随する
+% ことにしました(2017/03/05)。
+%
+% アスキー版での|\frontmatter|と|\mainmatter|の改ページ挙動は
+%\begin{quote}
+% |openright|なら|\cleardoublepage|、|openany|なら|\clearpage|を実行
+%\end{quote}
+% というものでした。しかし、|\frontmatter|及び|\mainmatter|はノンブルを
+% 1にリセットしますから、改ページの結果が偶数ページ目になる場合
+% \footnote{縦tbookのデフォルト(openright)が該当するほか、横jbookと
+% 縦tbookのopenanyのときには成り行き次第で該当する可能性があります。}に
+% ノンブルが偶奇逆転してしまいました。このままでは|openany|の場合に両面
+% 印刷がうまくいかないため、新しいコミュニティ版では
+%\begin{quote}
+% 必ず|\pltx@cleartooddpage|を実行
+%\end{quote}
+% としました。これは両面印刷(twoside)の場合は奇数ページに送り、
+% 片面印刷(oneside)の場合は単に改ページとなります。(参考:latex/2754)
+% \changes{v1.7b}{2016/11/22}{補足ドキュメントを追加}
+% \changes{v1.7e}{2017/03/05}{\cs{frontmatter}と\cs{mainmatter}を
+%   奇数ページに送るように変更}
 %    \begin{macrocode}
 %<*book>
-\newcommand\frontmatter{%
-  \if@openright \cleardoublepage \else \clearpage \fi
+\newcommand{\frontmatter}{%
+  \pltx@cleartooddpage
   \@mainmatterfalse\pagenumbering{roman}}
 \newcommand{\mainmatter}{%
-  \if@openright \cleardoublepage \else \clearpage \fi
+  \pltx@cleartooddpage
   \@mainmattertrue\pagenumbering{arabic}}
 \newcommand{\backmatter}{%
-  \if@openright \cleardoublepage \else \clearpage \fi
+  \if@openleft \cleardoublepage \else
+  \if@openright \cleardoublepage \else \clearpage \fi \fi
   \@mainmatterfalse}
 %</book>
 %    \end{macrocode}
 % \end{description}
 %
 % |\secdef|は次のようにして使うことができます。
-% \begin{verbatim}
+%\begin{verbatim}
 %    \def\chapter {... \secdef \CMDA \CMDB }
 %    \def\CMDA    [#1]#2{....} % \chapter[...]{...} の定義
 %    \def\CMDB    #1{....}     % \chapter*{...} の定義
-% \end{verbatim}
+%\end{verbatim}
 %
 %
 % \subsubsection{partレベル}
 %
 % articleクラスの場合は、簡単です。
 %
-% 新しい段落を開始し、小さな空白を入れ、段落後のインデントをしないようにし、
-% |\secdef|で作成します。
+% 新しい段落を開始し、小さな空白を入れ、段落後のインデントを行い、
+% |\secdef|で作成します。(アスキーによる元のドキュメントには
+% 「段落後のインデントをしないようにし」と書かれていましたが、
+% 実際のコードでは段落後のインデントを行っていました。そこで
+% 日本語\TeX{}開発コミュニティは、ドキュメントをコードに合わせて
+% 「段落後のインデントを行い」へと修正しました。)
+% \changes{v1.7a}{2016/11/16}{Check \texttt{@noskipsec} switch and
+%    possibly force horizontal mode (sync with classes.dtx v1.4a)}
 %    \begin{macrocode}
 %<*article>
-\newcommand{\part}{\par\addvspace{4ex}%
+\newcommand{\part}{%
+  \if@noskipsec \leavevmode \fi
+  \par\addvspace{4ex}%
   \@afterindenttrue
   \secdef\@part\@spart}
 %</article>
 %    \begin{macrocode}
 %<*report|book>
 \newcommand{\part}{%
-  \if@openright \cleardoublepage \else \clearpage \fi
+  \if@openleft \cleardoublepage \else
+  \if@openright \cleardoublepage \else \clearpage \fi \fi
   \thispagestyle{empty}%
   \if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi
   \null\vfil
 %
 % articleクラスの場合は、\Lcount{secnumdepth}が$-1$よりも大きいとき、
 % 見出し番号を付けます。このカウンタが$-1$以下の場合には付けません。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+%    \cs{normalfont} (sync with classes.dtx v1.3c)}
 %    \begin{macrocode}
 %<*article>
 \def\@part[#1]#2{%
   \fi
   \markboth{}{}%
   {\parindent\z@\raggedright
-   \interlinepenalty\@M\reset@font
+   \interlinepenalty\@M\normalfont
    \ifnum \c@secnumdepth >\m@ne
      \Large\bfseries\prepartname\thepart\postpartname
      \par\nobreak
   \fi
   \markboth{}{}%
   {\centering
-   \interlinepenalty\@M\reset@font
+   \interlinepenalty\@M\normalfont
    \ifnum \c@secnumdepth >-2\relax
      \huge\bfseries\prepartname\thepart\postpartname
      \par\vskip20\p@
 %
 % \begin{macro}{\@spart}
 % このマクロは、番号を付けないときの体裁です。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+%    \cs{normalfont} (sync with classes.dtx v1.3c)}
 %    \begin{macrocode}
 %<*article>
 \def\@spart#1{{%
   \parindent\z@\raggedright
-  \interlinepenalty\@M\reset@font
+  \interlinepenalty\@M\normalfont
   \huge\bfseries#1\par}%
   \nobreak\vskip3ex\@afterheading}
 %</article>
 %<*report|book>
 \def\@spart#1{{%
   \centering
-  \interlinepenalty\@M\reset@font
+  \interlinepenalty\@M\normalfont
   \Huge\bfseries#1\par}%
   \@endpart}
 %</report|book>
 % |\@part|と|\@spart|の最後で実行されるマクロです。
 % 両面印刷モードのときは、白ページを追加します。
 % 二段組モードのときには、これ以降のページを二段組に戻します。
+% 2016年12月から、|openany| のときに白ページを追加するのをやめました。
+% このバグは\LaTeX{}ではclasses.dtx v1.4b (2000/05/19)で修正されていました。
+% (参考:latex/3155、texjporg/jsclasses\#48)
+% \changes{v1.7c}{2016/12/18}{Only add empty page after part if
+%    twoside and openright (sync with classes.dtx v1.4b)}
 %    \begin{macrocode}
 %<*report|book>
 \def\@endpart{\vfil\newpage
-   \if@twoside\null\thispagestyle{empty}\newpage\fi
+   \if@twoside
+    \if@openleft %% \if@openleft added (2017/02/15)
+     \null\thispagestyle{empty}\newpage
+    \else\if@openright %% \if@openright added (2016/12/18)
+     \null\thispagestyle{empty}\newpage
+    \fi\fi %% added (2016/12/18, 2017/02/15)
+   \fi
 %    \end{macrocode}
 % 二段組文書のとき、スイッチを二段組モードに戻す必要があります。
 %    \begin{macrocode}
 % なお、縦組の場合でも右ページからはじまるように、
 % フォーマットファイルで|\clerdoublepage|が定義されています。
 %
+% \emph{日本語\TeX{}開発コミュニティによる補足}:コミュニティ版の実装では、
+% |openright|と|openleft|の場合に|\cleardoublepage|をクラスファイルの中で
+% 再々定義しています。\ref{sec:cleardoublepage}を参照してください。
+%
 % 章見出しが出力されるページのスタイルは、\pstyle{jpl@in}になります。
 % \pstyle{jpl@in}は、\pstyle{headnomble}か\pstyle{footnomble}のいずれかです。
 % 詳細は、第\ref{sec:pagestyle}節を参照してください。
 %    \begin{macrocode}
 %<*report|book>
 \newcommand{\chapter}{%
-  \if@openright\cleardoublepage\else\clearpage\fi
+  \if@openleft \cleardoublepage \else
+  \if@openright \cleardoublepage \else \clearpage \fi \fi
   \thispagestyle{jpl@in}%
   \global\@topnum\z@
   \@afterindenttrue
 % このマクロは、章見出しに番号を付けるときに呼び出されます。
 % \Lcount{secnumdepth}が$-1$よりも大きく、
 % |\@mainmatter|が真(bookクラスの場合)のときに、番号を出力します。
+%
+% \emph{日本語\TeX{}開発コミュニティによる補足}:本家\LaTeX{}の
+% \file{classes}では、二段組のときチャプタータイトルは一段組に戻され
+% ますが、アスキーによる\file{jclasses}では二段組のままにされています。
+% したがって、チャプタータイトルより高い位置に右カラムの始点が来るという
+% 挙動になっていますが、コミュニティ版でもアスキー版の挙動を維持しています。
 %    \begin{macrocode}
 \def\@chapter[#1]#2{%
   \ifnum \c@secnumdepth >\m@ne
 %   見出し文字列も消えてしまうのを修正}
 % \changes{v1.2}{2001/09/04}{\cs{chapter}の出力位置がアスタリスク形式と
 %   そうでないときと違うのを修正(ありがとう、鈴木@津さん)}
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+%    \cs{normalfont} (sync with classes.dtx v1.3c)}
 %    \begin{macrocode}
 \def\@makechapterhead#1{\hbox{}%
   \vskip2\Cvs
   {\parindent\z@
    \raggedright
-   \reset@font\huge\bfseries
+   \normalfont\huge\bfseries
    \leavevmode
    \ifnum \c@secnumdepth >\m@ne
      \setlength\@tempdima{\linewidth}%
 %
 % \begin{macro}{\@schapter}
 % このマクロは、章見出しに番号を付けないときに呼び出されます。
+%
+% \emph{日本語\TeX{}開発コミュニティによる補足}:やはり二段組でチャプター
+% タイトルより高い位置に右カラムの始点が来るという挙動を維持してあります。
+% \changes{v1.7c}{2016/12/18}{奇妙なarticleガードとコードを削除して
+%    ドキュメントを追加}
 %    \begin{macrocode}
 \def\@schapter#1{%
-%<article>  \if@twocolumn\@topnewpage[\@makeschapterhead{#1}]\else
   \@makeschapterhead{#1}\@afterheading
-%<article>  \fi
 }
 %    \end{macrocode}
 % \end{macro}
 % 番号を付けない場合の形式です。
 % \changes{v1.2}{2001/09/04}{\cs{chapter}の出力位置がアスタリスク形式と
 %   そうでないときと違うのを修正(ありがとう、鈴木@津さん)}
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+%    \cs{normalfont} (sync with classes.dtx v1.3c)}
 %    \begin{macrocode}
 \def\@makeschapterhead#1{\hbox{}%
   \vskip2\Cvs
   {\parindent\z@
    \raggedright
-   \reset@font\huge\bfseries
+   \normalfont\huge\bfseries
    \leavevmode
    \setlength\@tempdima{\linewidth}%
    \vtop{\hsize\@tempdima#1}}\vskip3\Cvs}
 %
 % \begin{macro}{\section}
 % 見出しの前後に空白を付け、|\Large\bfseries|で出力をします。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+%    \cs{normalfont} (sync with classes.dtx v1.3c)}
 %    \begin{macrocode}
 \newcommand{\section}{\@startsection{section}{1}{\z@}%
    {1.5\Cvs \@plus.5\Cvs \@minus.2\Cvs}%
    {.5\Cvs \@plus.3\Cvs}%
-   {\reset@font\Large\bfseries}}
+   {\normalfont\Large\bfseries}}
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\subsection}
 % 見出しの前後に空白を付け、|\large\bfseries|で出力をします。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+%    \cs{normalfont} (sync with classes.dtx v1.3c)}
 %    \begin{macrocode}
 \newcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
    {1.5\Cvs \@plus.5\Cvs \@minus.2\Cvs}%
    {.5\Cvs \@plus.3\Cvs}%
-   {\reset@font\large\bfseries}}
+   {\normalfont\large\bfseries}}
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\subsubsection}
 % 見出しの前後に空白を付け、|\normalsize\bfseries|で出力をします。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+%    \cs{normalfont} (sync with classes.dtx v1.3c)}
 %    \begin{macrocode}
 \newcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%
    {1.5\Cvs \@plus.5\Cvs \@minus.2\Cvs}%
    {.5\Cvs \@plus.3\Cvs}%
-   {\reset@font\normalsize\bfseries}}
+   {\normalfont\normalsize\bfseries}}
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\paragraph}
 % 見出しの前に空白を付け、|\normalsize\bfseries|で出力をします。
 % 見出しの後ろで改行されません。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+%    \cs{normalfont} (sync with classes.dtx v1.3c)}
 %    \begin{macrocode}
 \newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
    {3.25ex \@plus 1ex \@minus .2ex}%
    {-1em}%
-   {\reset@font\normalsize\bfseries}}
+   {\normalfont\normalsize\bfseries}}
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\subparagraph}
 % 見出しの前に空白を付け、|\normalsize\bfseries|で出力をします。
 % 見出しの後ろで改行されません。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+%    \cs{normalfont} (sync with classes.dtx v1.3c)}
 %    \begin{macrocode}
 \newcommand{\subparagraph}{\@startsection{subparagraph}{5}{\z@}%
    {3.25ex \@plus 1ex \@minus .2ex}%
    {-1em}%
-   {\reset@font\normalsize\bfseries}}
+   {\normalfont\normalsize\bfseries}}
 %    \end{macrocode}
 % \end{macro}
 %
 % \changes{v1.1q}{1999/05/18}{縦組時のみに設定するようにした}
 % トップレベルで使われたときに、最初と最後に半行分のスペースを開けるように、
 % 変更します。この環境は、\file{ltlists.dtx}で定義されています。
+% \changes{v1.7a}{2016/11/16}{Use \cs{expandafter}
+%    (sync with ltlists.dtx v1.0j)}
 %
 %    \begin{macrocode}
 \renewenvironment{enumerate}
   {\ifnum \@enumdepth >\thr@@\@toodeep\else
    \advance\@enumdepth\@ne
    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
-   \list{\csname label\@enumctr\endcsname}{%
+   \expandafter \list \csname label\@enumctr\endcsname{%
       \ifnum\ltjgetparameter{direction}=3
          \ifnum \@listdepth=\@ne \topsep.5\normalbaselineskip
            \else\topsep\z@\fi
 % \changes{v1.0e}{1996/03/14}{縦組時のみに設定するようにした}
 % トップレベルで使われたときに、最初と最後に半行分のスペースを開けるように、
 % 変更します。この環境は、\file{ltlists.dtx}で定義されています。
+% \changes{v1.7a}{2016/11/16}{Use \cs{expandafter}
+%    (sync with ltlists.dtx v1.0j)}
 %    \begin{macrocode}
 \renewenvironment{itemize}
   {\ifnum \@itemdepth >\thr@@\@toodeep\else
    \advance\@itemdepth\@ne
    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
-   \expandafter
-   \list{\csname \@itemitem\endcsname}{%
+   \expandafter \list \csname \@itemitem\endcsname{%
       \ifnum\ltjgetparameter{direction}=3
          \ifnum \@listdepth=\@ne \topsep.5\normalbaselineskip
            \else\topsep\z@\fi
       \else #1: #2\relax\par\fi
   \else
     \global \@minipagefalse
-    \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
+    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
   \fi
   \vskip\belowcaptionskip}
 %    \end{macrocode}
 %    \LaTeX{} 2.09
 %    compatibility mode では和文数式フォントfamが2重定義されていた
 %    ので、その部分を変更しました。
+%
+% \changes{v1.8-ltj-14}{2018/10/08}{Lua\TeX-ja本体が|disablejfam|オプションをサポートしました。
+%    クラス読み込み時に|disablejfam|オプションを指定した場合は、それがLua\TeX-jaに渡されて
+%       数式中に日本語を記述することができなくなります(|\mathmc|, |\mathgt|も定義されません)。}
 %    \begin{macrocode}
+\unless\ifltj@disablejfam
 \if@compatibility\else
   \DeclareSymbolFont{mincho}{JY3}{mc}{m}{n}
   \DeclareSymbolFontAlphabet{\mathmc}{mincho}
   \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}
 }%
 \fi
+\fi
 %    \end{macrocode}
 %
 % ここでは\LaTeX~2.09で一般的に使われていたコマンドを定義しています。
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@tocmarg}
+% \begin{macro}{\@tocrmarg}
 % 複数行にわたる場合の右マージンです。
 %    \begin{macrocode}
 \newcommand{\@tocrmarg}{2.55em}
 % |\@tempdima|にしていますが、この変数はいろいろな箇所で使われますので、
 % 期待した値が入らない場合があります。
 %
-% たとえば、|lltjfont.sty|での|\selectfont|は、和欧文のベースラインを調整する
-% ために|\@tempdima|変数を用いています。そのため、|\l@...|マクロの中で
-% フォントを切替えると、|\numberline|マクロのボックス
-% の幅が、ベースラインを調整するときに計算した値になってしまいます。
+% ^^A たとえば、|lltjfont.sty|での|\selectfont|は、和欧文のベースラインを調整する
+% ^^A ために|\@tempdima|変数を用いています。そのため、|\l@...|マクロの中で
+% ^^A フォントを切替えると、|\numberline|マクロのボックス
+% ^^A の幅が、ベースラインを調整するときに計算した値になってしまいます。
+% ^^A →修正(texjporg):最近の|\adjustbaseline|では|\adjust@dimen|が使われて
+% ^^A いるため、記述をコメントアウトしました。
 %
 % フォント選択コマンドの後、あるいは|\numberline|マクロの中でフォントを
 % 切替えてもよいのですが、一時変数を意識したくないので、
 % |\numberline|マクロを再定義します。
 %    \begin{macrocode}
 \newdimen\@lnumwidth
-\def\numberline#1{\hbox to\@lnumwidth{#1\hfil}}
+\def\numberline#1{\hb@xt@\@lnumwidth{#1\hfil}}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % 目次の各行間に|\toclineskip|を入れるように変更します。
 % このマクロは\file{ltsect.dtx}で定義されています。
 % \changes{v1.3}{2001/10/04}{第5引数の書体を\cs{rmfamily}から\cs{normalfont}に変更}
+% \changes{v1.7a}{2016/11/16}{Added \cs{nobreak} for
+%    latex/2343 (sync with ltsect.dtx v1.0z)}
 %    \begin{macrocode}
 \def\@dottedtocline#1#2#3#4#5{%
   \ifnum #1>\c@tocdepth \else
      \interlinepenalty\@M
      \leavevmode
      \@lnumwidth #3\relax
-     \advance\leftskip \@lnumwidth \hbox{}\hskip -\leftskip
+     \advance\leftskip \@lnumwidth \null\nobreak\hskip -\leftskip
      {#4}\nobreak
      \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern \@dotsep mu$}%
      \hfill\nobreak
 % \end{macro}
 %
 % \begin{macro}{\addcontentsline}
-% ページ番号を|\rensuji|で囲むように変更します。
-% 横組のときにも`|\rensuji|'コマンドが出力されますが、
-% このコマンドによる影響はありません。
+% 縦組の場合にページ番号を|\rensuji|で囲むように変更します。
+% ^^A 横組のときにも`|\rensuji|'コマンドが出力されますが、
+% ^^A このコマンドによる影響はありません。
 %
 % このマクロは\file{ltsect.dtx}で定義されています。
+% \changes{v1.8a}{2018/10/25}{ファイル書き出し時の行末文字対策
+%    (sync with ltsect.dtx 2018/09/26 v1.1c)}
 %    \begin{macrocode}
+\providecommand*\protected@file@percent{}
 \def\addcontentsline#1#2#3{%
   \protected@write\@auxout
     {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble
-%<tate>\@temptokena{\rensuji{\thepage}}}%
-%<yoko>\@temptokena{\thepage}}%
+%<tate>     \@temptokena{\rensuji{\thepage}}}%
+%<yoko>     \@temptokena{\thepage}}%
     {\string\@writefile{#1}%
-       {\protect\contentsline{#2}{#3}{\the\@temptokena}}}%
+       {\protect\contentsline{#2}{#3}{\the\@temptokena}%
+               \protected@file@percent}}%
 }
 %    \end{macrocode}
 % \end{macro}
 %</report|book>
 %<article>  \section*{\contentsname
 %<!article>  \chapter*{\contentsname
+%    \end{macrocode}
+% |\tableofcontents|では、|\@mkboth|はheadingの中に入れてあります。
+% ほかの命令(|\listoffigures|など)については、|\@mkboth|はheadingの
+% 外に出してあります。これは\LaTeX の\file{classes.dtx}に合わせています。
+%    \begin{macrocode}
     \@mkboth{\contentsname}{\contentsname}%
   }\@starttoc{toc}%
 %<report|book>  \if@restonecol\twocolumn\fi
     {\leavevmode\large\bfseries
      \setlength\@lnumwidth{4\zw}%
      #1\hfil\nobreak
-     \hbox to\@pnumwidth{\hss#2}}\par
+     \hb@xt@\@pnumwidth{\hss#2}}\par
     \nobreak
 %<article>    \if@compatibility
     \global\@nobreaktrue
       \leavevmode\bfseries
       \setlength\@lnumwidth{4\zw}%
       \advance\leftskip\@lnumwidth \hskip-\leftskip
-      #1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par
+      #1\nobreak\hfil\nobreak\hb@xt@\@pnumwidth{\hss#2}\par
       \penalty\@highpenalty
     \endgroup
   \fi}
       \leavevmode\bfseries
       \setlength\@lnumwidth{1.5em}%
       \advance\leftskip\@lnumwidth \hskip-\leftskip
-      #1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par
+      #1\nobreak\hfil\nobreak\hb@xt@\@pnumwidth{\hss#2}\par
     \endgroup
   \fi}
 %</article>
 %
 % \begin{macro}{\listoffigures}
 % 図の一覧を作成します。
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+%                            arg (sync with classes.dtx v1.4c)}
 %    \begin{macrocode}
 \newcommand{\listoffigures}{%
 %<*report|book>
   \if@twocolumn\@restonecoltrue\onecolumn
   \else\@restonecolfalse\fi
-  \chapter*{\listfigurename
+  \chapter*{\listfigurename}%
 %</report|book>
-%<article>    \section*{\listfigurename
-  \@mkboth{\listfigurename}{\listfigurename}}%
+%<article>    \section*{\listfigurename}%
+  \@mkboth{\listfigurename}{\listfigurename}%
   \@starttoc{lof}%
 %<report|book>  \if@restonecol\twocolumn\fi
 }
 % \begin{macro}{\listoftables}
 % \changes{v1.0c}{1995/12/28}{fix the \cs{listoftable} typo.}
 % 表の一覧を作成します。
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+%                            arg (sync with classes.dtx v1.4c)}
 %    \begin{macrocode}
 \newcommand{\listoftables}{%
 %<*report|book>
   \if@twocolumn\@restonecoltrue\onecolumn
   \else\@restonecolfalse\fi
-  \chapter*{\listtablename
+  \chapter*{\listtablename}%
 %</report|book>
-%<article>    \section*{\listtablename
-  \@mkboth{\listtablename}{\listtablename}}%
+%<article>    \section*{\listtablename}%
+  \@mkboth{\listtablename}{\listtablename}%
   \@starttoc{lot}%
 %<report|book>  \if@restonecol\twocolumn\fi
 }
 %
 % \begin{environment}{thebibliography}
 % 参考文献や関連図書のリストを作成します。
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+%                            arg (sync with classes.dtx v1.4c)}
 %    \begin{macrocode}
 \newenvironment{thebibliography}[1]
-%<article>{\section*{\refname\@mkboth{\refname}{\refname}}%
-%<report|book>{\chapter*{\bibname\@mkboth{\bibname}{\bibname}}%
+%<article>{\section*{\refname}\@mkboth{\refname}{\refname}%
+%<report|book>{\chapter*{\bibname}\@mkboth{\bibname}{\bibname}%
    \list{\@biblabel{\@arabic\c@enumiv}}%
         {\settowidth\labelwidth{\@biblabel{#1}}%
          \leftmargin\labelwidth
          \renewcommand\theenumiv{\@arabic\c@enumiv}}%
    \sloppy
 %    \end{macrocode}
-% \changes{v1.1a}{1997/01/23}{\LaTeX\ \texttt{!<1996/12/01!>}に合わせて修正}
+% \changes{v1.1a}{1997/01/23}{\break\LaTeX\ \texttt{!<1996/12/01!>}に合わせて修正}
 %    \begin{macrocode}
    \clubpenalty4000
    \@clubpenalty\clubpenalty
 %
 % \begin{macro}{\@cite}
 %    The output of the |\cite| command is produced by this macro. The
-%    default from \file{latex.dtx} is used.
+%    default from \file{ltbibl.dtx} is used.
 %    \begin{macrocode}
 % \renewcommand*{\@cite}[1]{[#1]}
 %    \end{macrocode}
 %    \begin{macrocode}
 \newenvironment{theindex}
   {\if@twocolumn\@restonecolfalse\else\@restonecoltrue\fi
-   \columnseprule\z@ \columnsep 35\p@
 %<article>   \twocolumn[\section*{\indexname}]%
 %<report|book>   \twocolumn[\@makeschapterhead{\indexname}]%
    \@mkboth{\indexname}{\indexname}%
    \thispagestyle{jpl@in}\parindent\z@
+%    \end{macrocode}
+% パラメータ|\columnseprule|と|\columnsep|の変更は、|\twocolumn|が
+% 実行された後でなければなりません。そうしないと、索引の前のページ
+% にも影響してしまうためです。
+% \changes{v1.7}{2016/11/12}{\cs{columnsep}と\cs{columnseprule}の
+%    変更を後ろに移動(sync with classes.dtx v1.4f)}
+%    \begin{macrocode}
    \parskip\z@ \@plus .3\p@\relax
+   \columnseprule\z@ \columnsep 35\p@
    \let\item\@idxitem}
   {\if@restonecol\onecolumn\else\clearpage\fi}
 %    \end{macrocode}
 %
 % \begin{macro}{\footnoterule}
 % 本文と脚注の間に引かれる罫線です。
+% \changes{v1.7}{2016/11/12}{use \cs{@width} (sync with classes.dtx v1.3a)}
 %    \begin{macrocode}
 \renewcommand{\footnoterule}{%
   \kern-3\p@
-  \hrule width .4\columnwidth
-  \kern 2.6\p@}
+  \hrule\@width.4\columnwidth
+  \kern2.6\p@}
 %    \end{macrocode}
 % \end{macro}
 %
 % このマクロにしたがって脚注が組まれます。
 %
 % |\@makefnmark|は脚注記号を組み立てるマクロです。
+% \changes{v1.7}{2016/11/12}{Replaced all \cs{hbox to} by
+%    \cs{hb@xt@} (sync with classes.dtx v1.3a)}
 %    \begin{macrocode}
 %<*tate>
 \newcommand\@makefntext[1]{\parindent 1\zw
-  \noindent\hbox to 2\zw{\hss\@makefnmark}#1}
+  \noindent\hb@xt@ 2\zw{\hss\@makefnmark}#1}
 %</tate>
 %<*yoko>
 \newcommand\@makefntext[1]{\parindent 1em
-  \noindent\hbox to 1.8em{\hss\@makefnmark}#1}
+  \noindent\hb@xt@ 1.8em{\hss\@makefnmark}#1}
 %</yoko>
 %    \end{macrocode}
 % \end{macro}
 % \changes{v1.0h}{1996/12/17}{Typo:和歴 to 和暦}
 % |\today|コマンドの`年'を、
 % 西暦か和暦のどちらで出力するかを指定するコマンドです。
+% 2018年7月以降の日本語\TeX{}開発コミュニティ版(v1.8)では、
+% デフォルトを和暦ではなく西暦に設定しています。
+% \changes{v1.8}{2018/07/03}{\cs{today}のデフォルトを和暦から西暦に変更}
 %    \begin{macrocode}
-\newif\if西暦 \西暦false
+\newif\if西暦 \西暦true
 \def\西暦{\西暦true}
 \def\和暦{\西暦false}
 %    \end{macrocode}
 %
 % \begin{macro}{\heisei}
 % \changes{v1.1m}{1998/04/07}{\cs{today}の計算手順を変更}
+% \changes{v1.8b}{2019/04/02}{\cs{heisei}の値は$\mbox{西暦}-1988$で固定}
 % |\today|コマンドを|\rightmark|で指定したとき、|\rightmark|を出力する部分
 % で和暦のための計算ができないので、クラスファイルを読み込む時点で計算して
 % おきます。
 % \end{macro}
 %
 % \begin{macro}{\today}
+% \begin{macro}{\pltx@today@year}
 % 縦組の場合は、漢数字で出力します。
+% \pLaTeX\ 2018-12-01以前では縦数式ディレクション時でも漢数字で出力していましたが、
+% \pLaTeX\ 2019-04-06以降からはそうしなくなりました。
 %
 % \changes{v1.6-ltj-9}{2015/01/01}{縦組では,この漢数字による日付出力でエラーになりました.
 % Lua\TeX-ja では,\cs{kansuji}の後に\cs{number}を続けることは出来ないので\cs{number}を削除しました.}
+% \changes{v1.8b}{2019/04/02}{\cs{today}の計算・出力方法を変更。}
 %    \begin{macrocode}
-\def\today{{%
-  \ifnum\ltjgetparameter{direction}=3
-    \if西暦
-      \kansuji\year 年
-      \kansuji\month 月
-      \kansuji\day 日
+\def\pltx@today@year@#1{%
+  \ifnum\numexpr\year-#1=1 元\else
+    \ifnum\ltjgetparameter{direction}=3
+      \kansuji\numexpr\year-#1\relax
     \else
-      平成\ifnum\heisei=1 元年\else\kansuji\heisei 年\fi
-      \kansuji\month 月
-      \kansuji\day 日
+      \number\numexpr\year-#1\relax\nobreak
     \fi
+  \fi 年
+}
+\def\pltx@today@year{%
+  \ifnum\numexpr\year*10000+\month*100+\day<19890108
+    昭和\pltx@today@year@{1925}%
+  \else\ifnum\numexpr\year*10000+\month*100+\day<20190501
+    平成\pltx@today@year@{1988}%
+  \else 
+    令和\pltx@today@year@{2018}%
+  \fi\fi}
+\def\today{{%
+  \if西暦
+    \ifnum\ltjgetparameter{direction}=3 \kansuji\year
+    \else\number\year\nobreak\fi 年
   \else
-    \if西暦
-      \number\year~年
-      \number\month~月
-      \number\day~日
-    \else
-      平成\ifnum\heisei=1 元年\else\number\heisei~年\fi
-      \number\month~月
-      \number\day~日
-    \fi
+    \pltx@today@year
+  \fi
+  \ifnum\ltjgetparameter{direction}=3
+    \kansuji\month 月
+    \kansuji\day 日
+  \else
+    \number\month\nobreak 月
+    \number\day\nobreak 日
   \fi}}
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
 %
 %
 % \end{macro}
 % \end{macro}
 %
+% |stfloats|パッケージがシステムにインストールされている場合は、このパッケージを使って
+% p\LaTeX の標準時と同じようにボトムフロートの下に脚注が組まれるようにします。
 % \changes{v1.0d}{1996/02/29}{articleとreportのデフォルトを
 %                              \pstyle{plain}に修正}
 % \changes{v1.4}{2002/04/09}{縦組スタイルで\cs{flushbottom}しないようにした}
+% \changes{v1.7d-ltj-13}{2017/02/19}{p\LaTeX とLua\TeX-jaの|\@makecol|が違うことを
+%   考慮していなかった}
 %    \begin{macrocode}
 %<book>\pagestyle{headings}
 %<!book>\pagestyle{plain}
 \pagenumbering{arabic}
 \raggedbottom
+\fnfixbottomtrue % 2017-02-19
+\IfFileExists{stfloats.sty}{\RequirePackage{stfloats}\fnbelowfloat}{}
 \if@twocolumn
   \twocolumn
   \sloppy
 %</article|report|book>
 %    \end{macrocode}
 %
+% \section{各種パッケージへの対応}
+% もともと縦組での利用を想定されていないいくつかのパッケージについて、
+% 補正するためのコードを記述しておきます。
+% この節のコードは|filehook|パッケージ(Lua\TeX-ja読み込み時に自動でロードされます)
+% の機能を用いています。
+%
+% \subsection{\texttt{ftnright}パッケージ}
+% 脚注番号の書式が|ftnright|パッケージによって勝手に書き換えられるので、
+% パッケージ読み込み前に予め退避しておき、読み込み後に復帰させます。
+% \changes{v1.7d}{2017/02/19}{コード追加}
+%    \begin{macrocode}
+%<*article|report|book>
+\AtBeginOfPackageFile*{ftnright}{\let\ltjt@orig@@makefntext=\@makefntext}
+\AtEndOfPackageFile*{ftnright}{\let\@makefntext=\ltjt@orig@@makefntext}
+%</article|report|book>
+%    \end{macrocode}
 %
 %
 % \Finale