OSDN Git Service

sync with platex/5ebffbf3
[luatex-ja/luatexja.git] / src / ltjclasses.dtx
index 05cfe8c..51ed3b7 100644 (file)
 %
 % \fi
 %
-% \CheckSum{4478}
-%% \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}{2006/06/27}{フォントコマンドを修正。ありがとう、ymtさん。}
 % \changes{v1.6-ltj}{2011/09/27}{jclasses.dtx v1.6 をベースにLua\LaTeX-ja用に修正。}
 % \changes{v1.6-ltj-2}{2013/06/06}{luatexja.cfgに対応.}
-% \changes{v1.6-ltj-3}{2014/06/08}{縦çµ\84ã\81¿ã\82¯ã\83©ã\82¹ã\81®æ\99\82ã\81®geometry.styã\81«å¯¾å¿\9cï¼\8e}
-% \changes{v1.6-ltj-4}{2014/06/30}{組方向の変更箇所を現行の\LuaTeX-jaの仕様に合うように修正.}
+% \changes{v1.6-ltj-3}{2014/06/08}{縦組クラスの時のgeometry.styに対応.}
+% \changes{v1.6-ltj-4}{2014/06/30}{組方向の変更箇所を現行のLua\TeX-jaの仕様に合うように修正.}
 % \changes{v1.6-ltj-5}{2014/07/02}{\cs{ifydir}, \cs{iftdir}を使わないように修正.}
+% \changes{v1.6-ltj-6}{2014/07/28}{縦組クラスでlltjext.styを読み込むように修正.}
+% \changes{v1.6-ltj-7}{2014/11/15}{縦組クラスとeveryshi.styとの相性が悪い問題を修正.}
+% \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ガードとコードを削除して
+%    ドキュメントを追加}
 % \fi
 %
 % \iffalse
 %<11pt&bk>\ProvidesFile{ltjtbk11.clo}
 %<12pt&bk>\ProvidesFile{ltjtbk12.clo}
 %</tate>
-  [2014/07/02 v1.6-ltj-5
+  [2017/01/17 v1.7c-ltj-12
 %<article|report|book> Standard LuaLaTeX-ja class]
 %<10pt|11pt|12pt>  Standard LuaLaTeX-ja file (size option)]
 %<*driver>
 ]
 \documentclass{ltjltxdoc}
 \GetFileInfo{ltjclasses.dtx}
-\usepackage[kozuka-pr6n]{luatexja-preset}
-\usepackage{unicode-math}
-\setmathfont{Latin Modern Math}
+\usepackage[ipaex,nfssonly]{luatexja-preset}
 \usepackage[unicode]{hyperref}
 \title{Lua\LaTeX-ja用\texttt{jclasses}互換クラス}
 \author{Lua\TeX-jaプロジェクト}
 % \end{quotation}
 % のエラーが起こった場合は、|lualatex-math|パッケージを読み込んでみて下さい。
 % \item 出力PDFの用紙サイズが自動的に設定されるようにしてあります。
-% \item 縦組みクラスにおいて、|geometry|パッケージを読み込んだときに意図通りにならない問題に対応しました。
+% %%%\item 縦組みクラスにおいて、|geometry|パッケージを読み込んだときに意図通りにならない問題に対応しました。%
 % \end{itemize}
 %
 % \section{Lua\TeX-ja の読み込み}
 %<*article|report|book>
 \RequirePackage{luatexja}
 %    \end{macrocode}
-% 縦組みの場合は|geometry|対応のために|filehook|も読み込んでおきます。
-%    \begin{macrocode}
-%<tate>\RequirePackage{filehook}
-%    \end{macrocode}
 %
 % \section{オプションスイッチ}
 % ここでは、後ほど使用するいくつかのコマンドやスイッチを定義しています。
   \setlength\paperheight {257mm}
   \setlength\paperwidth  {182mm}}
 %    \end{macrocode}
-% 縦組みクラスについて、|geometry|パッケージが読み込まれると|\textwidth|と|\textheight|が
-% ひっくり返ってしまう問題に対処します。
-%    \begin{macrocode}
-%<*tate>
-\AtEndOfPackageFile{geometry}{%
-  \setlength{\@tempdima}{\textheight}%
-  \setlength{\textheight}{\textwidth}%
-  \setlength{\textwidth}{\@tempdima}%
-  \expandafter\def\expandafter\Gm@process\expandafter{\Gm@process
-    \setlength{\@tempdima}{\textheight}%
-    \setlength{\textheight}{\textwidth}%
-    \setlength{\textwidth}{\@tempdima}}}
-%</tate>
 %
 % \subsection{サイズオプション}
 % 基準となるフォントの大きさを指定するオプションです。
 }
 %    \end{macrocode}
 %
+% 縦組クラスと|everyshi|パッケージの相性が悪い問題に対処します。
+% この処理は、ZRさんの|pxeveryshi|パッケージと実質的に同じ内容です。
+%    \begin{macrocode}
+%<*tate>
+\AtEndOfPackageFile{everyshi}{%
+  \def\@EveryShipout@Output{%
+    \setbox8\vbox{%
+      \yoko
+      \@EveryShipout@Hook
+      \@EveryShipout@AtNextHook
+      \global\setbox\luatexoutputbox=\box\luatexoutputbox
+    }%
+    \gdef\@EveryShipout@AtNextHook{}%
+    \@EveryShipout@Org@Shipout\box\luatexoutputbox
+  }}
+%</tate>
+%    \end{macrocode}
+%
 % \subsection{両面、片面オプション}
 % twosideオプションが指定されると、両面印字出力に適した整形を行ないます。
 %    \begin{macrocode}
 %</article|report|book>
 %    \end{macrocode}
 %
-% \subsection{オプションの実行}
-% オプションの実行、およびサイズクラスのロードを行ないます。
-%    \begin{macrocode}
-%<*article|report|book>
-%<*article>
-%<tate>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,tate}
-%<yoko>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final}
-%</article>
-%<*report>
-%<tate>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany,tate}
-%<yoko>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany}
-%</report>
-%<*book>
-%<tate>\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright,tate}
-%<yoko>\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright}
-%</book>
-\ProcessOptions\relax
-%<book&tate>\input{ltjtbk1\@ptsize.clo}
-%<!book&tate>\input{ltjtsize1\@ptsize.clo}
-%<book&yoko>\input{ltjbk1\@ptsize.clo}
-%<!book&yoko>\input{ltjsize1\@ptsize.clo}
-%    \end{macrocode}
-% 縦組用クラスファイルの場合は、ここで\file{plext.sty}が読み込まれていました。
-% Lua\TeX-jaでどうなるかは未定です。
-% \changes{v1.0e}{1996/03/21}{\cs{usepackage} to \cs{RequirePackage}}
-%    \begin{macrocode}
-%<tate>%\RequirePackage{plext}
-%</article|report|book>
-%    \end{macrocode}
-%
-% \section{フォント}
-%
+% \subsection{フォントメトリックの変更}
+% 
 % Lua\LaTeX-jaの標準では、OTFパッケージ由来のメトリックが使われるようになっています。
 % 本クラスでは、「p\TeX の組版と互換性をできるだけ持たせる」例を提示するため、
 % \begin{itemize}
 % 何らかの理由で非埋め込みフォントが正しく利用できない場合にのみ |luatexja.cfg| によって
 % セットされるものです。
 %
-%
+% \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{オプションの実行}
+% オプションの実行、およびサイズクラスのロードを行ないます。
+%    \begin{macrocode}
+%<*article|report|book>
+%<*article>
+%<tate>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,tate}
+%<yoko>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final}
+%</article>
+%<*report>
+%<tate>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany,tate}
+%<yoko>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany}
+%</report>
+%<*book>
+%<tate>\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright,tate}
+%<yoko>\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright}
+%</book>
+\ProcessOptions\relax
+%<book&tate>\input{ltjtbk1\@ptsize.clo}
+%<!book&tate>\input{ltjtsize1\@ptsize.clo}
+%<book&yoko>\input{ltjbk1\@ptsize.clo}
+%<!book&yoko>\input{ltjsize1\@ptsize.clo}
+%    \end{macrocode}
+% 縦組用クラスファイルの場合は、ここで\file{plext.sty}も読み込みます。
+% \changes{v1.0e}{1996/03/21}{\cs{usepackage} to \cs{RequirePackage}}
+% \changes{v1.6-ltj-6}{2014/07/28}{Lua\TeX-jaでは,代わりに\file{lltjext.sty}を読み込みま
+% す.これは\file{plext.sty}をLua\TeX-ja用に書きなおしたものです.}
+%    \begin{macrocode}
+%<tate>\RequirePackage{lltjext}
+%</article|report|book>
+%    \end{macrocode}
+%
+% \section{フォント}
+%
 % ここでは、\LaTeX{}のフォントサイズコマンドの定義をしています。
 % フォントサイズコマンドの定義は、次のコマンドを用います。
 %
 % \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
+  \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
+  \ifdefined\pdfpagewidth
+    \setlength{\pdfpagewidth}{\paperwidth}
+    \setlength{\pdfpageheight}{\paperheight}
+  \else
+    \setlength{\pagewidth}{\paperwidth}
+    \setlength{\pageheight}{\paperheight}
+  \fi
 \fi
-\setlength{\pdfpagewidth}{\@tempdima}
-\setlength{\pdfpageheight}{\@tempdimb}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \subsection{段落の形}
 %
 %
 % \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}スタイルは、クラスファイル内部で使用するものです。
 % 出力されます。
 %
 % ここで、定義をしているのは、その初期値です。
-%
-% \begin{macro}{\ps@jpl@in}
 %    \begin{macrocode}
 \let\ps@jpl@in\ps@plain
 %    \end{macrocode}
 %
 % \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}}
     }%
     {\if@restonecol\twocolumn\else\newpage\fi
     }
-%   \end{macrocode}
+%    \end{macrocode}
 %
 % そして、\LaTeX{}ネイティブのための定義です。
-%   \begin{macrocode}
+%    \begin{macrocode}
 \else
 \newenvironment{titlepage}
     {%
     }%
     {\if@restonecol\twocolumn \else \newpage \fi
 %    \end{macrocode}
-% äº\8c段çµ\84モードでなければ、タイトルページの直後のページのページ番号も1に
+% ä¸¡é\9d¢モードでなければ、タイトルページの直後のページのページ番号も1に
 % します。
 %    \begin{macrocode}
      \if@twoside\else
       \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]{}
 % \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に
+% 一回目の修正に追随しましたが、二回目の修正には追随していません。
+% コミュニティ版では、アスキーによる仕様を維持することとし、
+% |openany|オプションの場合は|\cleardoublepage|ではなく|\clearpage|が
+% 発行されます。もし|\cleardoublepage|が起きてほしい場合には、
+% 明示的に挿入してください。(参考:latex/2754)
+% \changes{v1.7b}{2016/11/22}{補足ドキュメントを追加}
 %    \begin{macrocode}
 %<*book>
-\newcommand\frontmatter{%
+\newcommand{\frontmatter}{%
   \if@openright \cleardoublepage \else \clearpage \fi
   \@mainmatterfalse\pagenumbering{roman}}
 \newcommand{\mainmatter}{%
 %
 % 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>
 %
 % 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@openright %% added (2016/12/18)
+     \null\thispagestyle{empty}\newpage
+    \fi %% added (2016/12/18)
+   \fi
 %    \end{macrocode}
 % 二段組文書のとき、スイッチを二段組モードに戻す必要があります。
 %    \begin{macrocode}
 % このマクロは、章見出しに番号を付けるときに呼び出されます。
 % \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}{%
-      \ifnum\ltjgetparameter{direction}=3 
+   \expandafter \list \csname label\@enumctr\endcsname{%
+      \ifnum\ltjgetparameter{direction}=3
          \ifnum \@listdepth=\@ne \topsep.5\normalbaselineskip
            \else\topsep\z@\fi
          \parskip\z@ \itemsep\z@ \parsep\z@
 %    \begin{macrocode}
 \newcommand{\labelitemi}{\textbullet}
 \newcommand{\labelitemii}{%
-  \ifnum\ltjgetparameter{direction}=3 
+  \ifnum\ltjgetparameter{direction}=3
      {\textcircled{~}}
   \else
      {\normalfont\bfseries\textendash}
 % \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}{%
-      \ifnum\ltjgetparameter{direction}=3 
+   \expandafter \list \csname \@itemitem\endcsname{%
+      \ifnum\ltjgetparameter{direction}=3
          \ifnum \@listdepth=\@ne \topsep.5\normalbaselineskip
            \else\topsep\z@\fi
          \parskip\z@ \itemsep\z@ \parsep\z@
 %    \begin{macrocode}
 \newenvironment{description}
   {\list{}{\labelwidth\z@ \itemindent-\leftmargin
-   \ifnum\ltjgetparameter{direction}=3 
+   \ifnum\ltjgetparameter{direction}=3
      \leftmargin\leftskip \advance\leftmargin3\Cwd
      \rightmargin\rightskip
      \labelsep=1\zw \itemsep\z@
       \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}
 % |\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
 %</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
 %
 % \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}
 %
 % \begin{macro}{\today}
 % 縦組の場合は、漢数字で出力します。
+%
+% \changes{v1.6-ltj-9}{2015/01/01}{縦組では,この漢数字による日付出力でエラーになりました.
+% Lua\TeX-ja では,\cs{kansuji}の後に\cs{number}を続けることは出来ないので\cs{number}を削除しました.}
 %    \begin{macrocode}
 \def\today{{%
   \ifnum\ltjgetparameter{direction}=3
     \if西暦
-      \kansuji\number\year 年
-      \kansuji\number\month 月
-      \kansuji\number\day 日
+      \kansuji\year 年
+      \kansuji\month 月
+      \kansuji\day 日
     \else
-      平成\ifnum\heisei=1 元年\else\kansuji\number\heisei 年\fi
-      \kansuji\number\month 月
-      \kansuji\number\day 日
+      平成\ifnum\heisei=1 元年\else\kansuji\heisei 年\fi
+      \kansuji\month 月
+      \kansuji\day 日
     \fi
   \else
     \if西暦