OSDN Git Service

lltjfont.sty: patch \@text@composite for non-zero {y,t}albaselineshift
[luatex-ja/luatexja.git] / src / ltjsclasses.dtx
index b955ee2..452d46f 100644 (file)
 %
 %  Copyright 1993 1994 1995 1996 1997 1998 1999
 %  The LaTeX3 Project and any individual authors listed elsewhere
-%  in this file.
+%  in this file. 
 %
 %  Copyright 1995-1999 ASCII Corporation.
 %  -----------------------------------------
 %
 % \fi
-% \CheckSum{4988}
+% \CheckSum{5209}
 %% \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
 %<*driver>
 \ProvidesFile{ltjsclasses.dtx}
 %</driver>
-  [2013/06/06 ]
+  [2016/03/31 ltjsclasses ]
 %<*driver>
+\IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{}
 \documentclass{ltjsarticle}
 \usepackage{doc}
+\usepackage{fontspec}
+\usepackage[ipaex,nfssonly]{luatexja-preset}
+%%%%\usepackage{unicode-math}
+%%%%\setmathfont{Latin Modern Math}
 \usepackage[unicode]{hyperref}
 \addtolength{\textwidth}{-1in}
 \addtolength{\evensidemargin}{1in}
 %
 % |ltjclasses| と違うのは以下の点です。
 %
-% \paragraph{サイズオプションの扱いが違う}
-%
-% |ltjclasses| では本文のポイント数を指定するオプションがあり
-% ましたが,ポイント数は10,11,12しかなく,それぞれ別のクラスオプション
-% ファイルを読み込むようになっていました。しかも,標準の10ポイント以外で
-% は多少フォントのバランスが崩れることがあり,あまり便利ではありませんで
-% した。ここでは文字サイズを増すとページを小さくし,\TeX の |\mag| プリ
-% ミティブで全体的に拡大するという手を使って,9ポイントや21,25,30,36,
-% 43ポイント,12Q,14Qの指定を可能にしています。
-%
 % \subsection{\texttt{jsclasses.dtx}からの主な変更点}
 % 全ての変更点を知りたい場合は,|jsclasses.dtx| と |ltjsclasses.dtx| で |diff| を
-% とって下さい。
+% とって下さい。zw, zh は全て |\zw|, |\zh| に置き換えられています。
 % \begin{itemize}
-% \item フォントメトリック関係のオプション |winjis |は単に無視されます。
+% \item フォントメトリック関係のオプション |winjisは単に無視されます。
 % \item 標準では |jfm-ujis.lua|(Lua\TeX-ja標準のメトリック,OTFパッケージのものがベース)を使用します。
 % \item |uplatex| オプションを削除してあります。
 % \item |disablejfam| オプションが無効になっています。もし
 %   削除しました。
 % \item 「\texttt{amsmath}との衝突の回避」のコードは,上流で既に対処されているうえ,
 %   これがあると |grfext.sty| を読み込んだ際にエラーを引き起こすので削除しました。
+% \item 本家|jsclasses.dtx|では|\mag|を用いて「10pt時の組版結果を本文フォントサイズに合わせ拡大縮小」
+%   という方針でしたが,本|ltjsclasses.dtx|ではそのような方法を取っていません。
+%   \begin{itemize}
+%    \item |real|オプション指定時には,単にレイアウトに用いる各種長さの値をスケールさせるだけです。
+%      そのため,例えば本文の文字サイズが17ptのときにはcmr10でなくcmr17を用いることになり,組版結果の印象が
+%      異なる恐れがあります。
+%    \item |xreal|オプション指定時には,上記に加えてオプティカルサイズを調整する(本文ではcmr17の代わりに
+%      cmr10を拡大縮小する,など)ため,\LaTeX のフォント選択システムNFSSへパッチを当てます。
+%      こうすることで前項に書いた不具合はなくなりますが,かえって別の不具合が起きる可能性はあります。
+%   \end{itemize}
+%   標準では|xreal|オプションが有効になっています。オプション名は|bxjscls|パッケージの|magstyle|指定に倣いました。
 % \end{itemize}
 %
-% \StopEventually
+% [2014-02-07 LTJ] jsclasses 2014-02-07 ベースにしました。
+%
+% [2014-07-26 LTJ] 縦組用和文フォントの設定を加えました。
+%
+% [2014-12-24 LTJ] |\@setfontsize| 中の和欧文間空白の設定で if 文が抜けていたのを直しました。
+%
+% [2016-01-30 LTJ] |\rmfamily| 他で和文フォントファミリも変更するコードを
+% Lua\TeX-ja カーネル内に移しました。
+%
+% [2016-03-21 LTJ] Lua\TeX~beta-0.87.0 ではPDF出力時に|\mag|が使用できなくなったので,
+% ZRさんの|bxjscls|を参考に使わないように書き換えました。
+%
+% [2016-03-31 LTJ] |xreal|オプションを標準で有効にしました.
+%
+% \StopEventually{}
 %
 % 以下では実際のコードに即して説明します。
 % \section{Lua\TeX-jaの読み込み}
 % あるいは |\documentclass[オプション]{ltjsarticle}|
 % のように呼び出します。
 %
-% 最初に,オプションに関連するいくつかのコマンドやスイッチ(論理変数)を定
+% まず,オプションに関連するいくつかのコマンドやスイッチ(論理変数)を定
 % 義します。
 %
 % \begin{macro}{\if@restonecol}
 %
 % \begin{macro}{\if@enablejfam}
 %
-% å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\82\92æ\95°å¼\8fã\83\95ã\82©ã\83³ã\83\88ã\81¨ã\81\97ã\81¦ç\99»é\8c²ã\81\99ã\82\8bã\81\8bã\81©ã\81\86ã\81\8bã\82\92示ã\81\99ã\82¹ã\82¤ã\83\83ã\83\81ã\81§ã\81\99ã\80\82
+% å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\82\92æ\95°å¼\8fã\83\95ã\82©ã\83³ã\83\88ã\81¨ã\81\97ã\81¦ç\99»é\8c²ã\81\99ã\82\8bã\81\8bã\81©ã\81\86ã\81\8bã\82\92示ã\81\99ã\82¹ã\82¤ã\83\83ã\83\81ã\81§ã\81\99ã\81\8cï¼\8c
 % 実際には用いられません。
 %
 %    \begin{macrocode}
 %
 % \paragraph{用紙サイズ}
 %
-% JISやISOのA0判は面積$1\,\mathrm{m}^2$,縦横比$1:\sqrt{2}$
-% の長方形の辺の長さをmm単位に切り捨てたものです。
-% これを基準として順に半截してはmm単位に切り捨てたものがA1,A2,…です。
+% JISやISOのA0判は面積 $1\,\mathrm{m}^2$,縦横比 $1:\sqrt{2}$
+% の長方形の辺の長さを mm 単位に切り捨てたものです。
+% これを基準として順に半截しては mm 単位に切り捨てたものがA1,A2,…です。
 %
 % B判はJISとISOで定義が異なります。
-% JISではB0判の面積が$1.5\,\mathrm{m}^2$ですが,
+% JISではB0判の面積が $1.5\,\mathrm{m}^2$ ですが,
 % ISOではB1判の辺の長さがA0判とA1判の辺の長さの幾何平均です。
-% したがってISOのB0判は$1000\,\mathrm{mm} \times 1414\,\mathrm{mm}$です。
-% このため,\LaTeXe の\texttt{b5paper}
-% は$250\,\mathrm{mm} \times 176\,\mathrm{mm}$ですが,
-% \pLaTeXe の\texttt{b5paper}
-% は$257\,\mathrm{mm} \times 182\,\mathrm{mm}$になっています。
+% したがってISOのB0判は $1000\,\mathrm{mm} \times 1414\,\mathrm{mm}$ です。
+% このため,\LaTeXe の \texttt{b5paper}
+% は $250\,\mathrm{mm} \times 176\,\mathrm{mm}$ ですが,
+% \pLaTeXe の \texttt{b5paper}
+% は $257\,\mathrm{mm} \times 182\,\mathrm{mm}$ になっています。
 % ここでは\pLaTeXe にならってJISに従いました。
-%
+% 
 % デフォルトは \texttt{a4paper} です。
 %
 % \texttt{b5var}(B5変形,182mm×230mm),
 %
 % \paragraph{slide}
 %
-% オプション\texttt{slide}を新設しました。
+% オプション \texttt{slide} を新設しました。
 %
 %    \begin{macrocode}
 \newif\if@slide
 %
 % \paragraph{サイズオプション}
 %
-% 10pt,11pt,12ptのほかに,8pt,9pt,14pt,17pt,21pt,25pt,30pt,36pt,43ptを追加しました。
-% これは等比数列になるように選んだものです(従来の20ptも残しました)。
+% 10pt,11pt,12pt のほかに,8pt,9pt,14pt,17pt,21pt,25pt,30pt,36pt,43pt を追加しました。
+% これは等比数列になるように選んだものです(従来の 20pt も残しました)。
 % |\@ptsize| の定義が変だったのでご迷惑をおかけしましたが,
 % 標準的なドキュメントクラスと同様にポイント数から10を引いたものに直しました。
 %
 % [2003-04-18] 12Qオプションを追加しました。
 %
 %    \begin{macrocode}
-\newcommand{\@ptsize}{0}
-\DeclareOption{slide}{\@slidetrue\renewcommand{\@ptsize}{26}\@landscapetrue\@titlepagetrue}
-\DeclareOption{8pt}{\renewcommand{\@ptsize}{-2}}
-\DeclareOption{9pt}{\renewcommand{\@ptsize}{-1}}
-\DeclareOption{10pt}{\renewcommand{\@ptsize}{0}}
-\DeclareOption{11pt}{\renewcommand{\@ptsize}{1}}
-\DeclareOption{12pt}{\renewcommand{\@ptsize}{2}}
-\DeclareOption{14pt}{\renewcommand{\@ptsize}{4}}
-\DeclareOption{17pt}{\renewcommand{\@ptsize}{7}}
-\DeclareOption{20pt}{\renewcommand{\@ptsize}{10}}
-\DeclareOption{21pt}{\renewcommand{\@ptsize}{11}}
-\DeclareOption{25pt}{\renewcommand{\@ptsize}{15}}
-\DeclareOption{30pt}{\renewcommand{\@ptsize}{20}}
-\DeclareOption{36pt}{\renewcommand{\@ptsize}{26}}
-\DeclareOption{43pt}{\renewcommand{\@ptsize}{33}}
-\DeclareOption{12Q}{\renewcommand{\@ptsize}{1200}}
-\DeclareOption{14Q}{\renewcommand{\@ptsize}{1400}}
+\def\ltjs@magscale{1}
+\DeclareOption{slide}{\@slidetrue\def\ltjs@magscale{3.583}\@landscapetrue\@titlepagetrue}
+\DeclareOption{8pt} {\def\ltjs@magscale{0.83}}% 1.2^(-1)
+\DeclareOption{9pt} {\def\ltjs@magscale{0.913}}% 1.2^(-0.5}
+\DeclareOption{10pt}{\def\ltjs@magscale{1}}
+\DeclareOption{11pt}{\def\ltjs@magscale{1.095}}% 1.2^0.5
+\DeclareOption{12pt}{\def\ltjs@magscale{1.200}}
+\DeclareOption{14pt}{\def\ltjs@magscale{1.440}}
+\DeclareOption{17pt}{\def\ltjs@magscale{1.728}}
+\DeclareOption{20pt}{\def\ltjs@magscale{2}}
+\DeclareOption{21pt}{\def\ltjs@magscale{2.074}}
+\DeclareOption{25pt}{\def\ltjs@magscale{2.488}}
+\DeclareOption{30pt}{\def\ltjs@magscale{2.986}}
+\DeclareOption{36pt}{\def\ltjs@magscale{3.583}}
+\DeclareOption{43pt}{\def\ltjs@magscale{4.300}}
+\DeclareOption{12Q} {\def\ltjs@magscale{0.923}}% 1pt*12Q/13Q
+\DeclareOption{14Q} {\def\ltjs@magscale{1.077}}% 1pt*14Q/13Q
+\DeclareOption{10ptj}{\def\ltjs@magscale{1.085}}% 1pt*10bp/13Q
+\DeclareOption{10.5ptj}{\def\ltjs@magscale{1.139}}
+\DeclareOption{11ptj}{\def\ltjs@magscale{1.194}}
+\DeclareOption{12ptj}{\def\ltjs@magscale{1.302}}
+%    \end{macrocode}
+%
+% \paragraph{オプティカルサイズの補正}
+% [2016-03-26 LTJ] |xreal|オプション指定時には,本文のフォントサイズが10pt以外の場合に
+% オプティカルサイズの補正を行うためにNFSSにパッチを当てます。
+% 現在の|ltjsclasses|ではこのパッチ当ては標準では行いませんが,
+% 将来どうなるかわからないので|real|, |noxreal|で無効化することができるようにしました。
+%
+% [2016-03-31 LTJ] |xreal|オプションを標準にしました.
+%    \begin{macrocode}
+\newif\if@ltjs@mag@xreal
+\@ltjs@mag@xrealtrue
+\DeclareOption{xreal}{\@ltjs@mag@xrealtrue}
+\DeclareOption{noxreal}{\@ltjs@mag@xrealfalse}
+\DeclareOption{real}{\@ltjs@mag@xrealfalse}
 %    \end{macrocode}
 %
+%
 % \paragraph{トンボオプション}
 %
-% トンボ(crop marks)を出力します。
+% トンボ(crop marks)を出力します。
 % 実際の処理は |lltjcore.sty| で行います。
-% オプション\texttt{tombow}で日付付きのトンボ,
-% オプション\texttt{tombo}で日付なしのトンボを出力します。
+% オプション \texttt{tombow} で日付付きのトンボ,
+% オプション \texttt{tombo} で日付なしのトンボを出力します。
 % これらはアスキー版のままです。
 % カウンタ |\hour|,|\minute| は |luatexja-compat.sty| で宣言されています。
 %
 %
 % \paragraph{面付け}
 %
-% オプション\texttt{mentuke}で幅ゼロのトンボを出力します。
+% オプション \texttt{mentuke} で幅ゼロのトンボを出力します。
 % 面付けに便利です。これもアスキー版のままです。
 %
 %    \begin{macrocode}
 %
 % \paragraph{両面,片面オプション}
 %
-% \texttt{twoside}で奇数ページ・偶数ページのレイアウトが変わります。
+% \texttt{twoside} で奇数ページ・偶数ページのレイアウトが変わります。
 %
-% [2003-04-29] \texttt{vartwoside}でどちらのページも傍注が右側になります。
+% [2003-04-29] \texttt{vartwoside} でどちらのページも傍注が右側になります。
 %
 %    \begin{macrocode}
 \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
 %
 % \paragraph{二段組}
 %
-% \texttt{twocolumn}で二段組になります。
+% \texttt{twocolumn} で二段組になります。
 %
 %    \begin{macrocode}
 \DeclareOption{onecolumn}{\@twocolumnfalse}
 %
 % \paragraph{表題ページ}
 %
-% \texttt{titlepage}で表題・概要を独立したページに出力します。
+% \texttt{titlepage} で表題・概要を独立したページに出力します。
 %
 %    \begin{macrocode}
 \DeclareOption{titlepage}{\@titlepagetrue}
 % \paragraph{右左起こし}
 %
 % 書籍では章は通常は奇数ページ起こしになりますが,
-% \texttt{openany}で偶数ページからでも始まるようになります。
+% \texttt{openany} で偶数ページからでも始まるようになります。
 %
 %    \begin{macrocode}
 %<book>\DeclareOption{openright}{\@openrighttrue}
 %    \end{macrocode}
 % \end{environment}
 %
-% \texttt{leqno}で数式番号が左側になります。
-% \texttt{fleqn}で数式が本文左端から一定距離のところに出力されます。
+% \texttt{leqno} で数式番号が左側になります。
+% \texttt{fleqn} で数式が本文左端から一定距離のところに出力されます。
 % 森本さんにしたがって訂正しました。
 %
 %    \begin{macrocode}
 %
 % \paragraph{ドラフト}
 %
-% \texttt{draft}でoverfull boxの起きた行末に5ptの罫線を引きます。
+% \texttt{draft} でoverfull boxの起きた行末に5ptの罫線を引きます。
 %
 %    \begin{macrocode}
 \newif\ifdraft
 % \paragraph{papersizeスペシャルの利用}
 %
 % |ltjsclasses| では |papersize| オプションの有無に関わらず,
-% PDFのページサイズは適切に設定されます。
-%
-%    \begin{macrocode}
-\newif\ifpapersize
-\papersizefalse
-\DeclareOption{papersize}{\papersizetrue}
-%    \end{macrocode}
+% PDFのページサイズは適切に設定されるので,削除しました。
 %
 % \paragraph{英語化}
 %
-% オプション\texttt{english}を新設しました。
+% オプション \texttt{english} を新設しました。
 %
 %    \begin{macrocode}
 \newif\if@english
 %
 % \paragraph{ltjsreport相当}
 %
-% オプション\texttt{report}を新設しました。
+% オプション \texttt{report} を新設しました。
 %
 %    \begin{macrocode}
 %<*book>
 % \item |geometry| 側でオプション |mag| は使えません。
 % \end{itemize}
 %
+% [2016-03-21 LTJ] |\mag| を使わないように全面的に書き換えました。
+% |\ltjs@mpt| に「拡大率だけ大きくしたpt」の値が格納されます。
+% |bxjscls| と同様に,|\@ptsize| は |10pt|,~|11pt|,~|12pt| オプションが指定された時だけ
+% 従来通り0,~1,~2と設定し,それ以外の場合は$-20$とすることにしました。
+% |\inv@mag| はもはや定義していません。
+%
+% [2016-03-26 LTJ] |\ltjs@magscale| に拡大率を格納した後,それを用いて |ltjs@mpt| を
+% 設定するようにしました。
 %    \begin{macrocode}
-\def\inv@mag{1}
-\ifnum\@ptsize=-2
-  \mag 833
-  \def\inv@mag{1.20048}
-  \def\n@baseline{15}%
-\fi
-\ifnum\@ptsize=-1
-  \mag 913 % formerly 900
-  \def\inv@mag{1.09529}
-  \def\n@baseline{15}%
-\fi
-\ifnum\@ptsize=1
-  \mag 1095 % formerly 1100
-  \def\inv@mag{0.913242}
-\fi
-\ifnum\@ptsize=2
-  \mag 1200
-  \def\inv@mag{0.833333}
-\fi
-\ifnum\@ptsize=4
-  \mag 1440
-  \def\inv@mag{0.694444}
-\fi
-\ifnum\@ptsize=7
-  \mag 1728
-  \def\inv@mag{0.578704}
-\fi
-\ifnum\@ptsize=10
-  \mag 2000
-  \def\inv@mag{0.5}
-\fi
-\ifnum\@ptsize=11
-  \mag 2074
-  \def\inv@mag{0.48216}
-\fi
-\ifnum\@ptsize=15
-  \mag 2488
-  \def\inv@mag{0.401929}
-\fi
-\ifnum\@ptsize=20
-  \mag 2986
-  \def\inv@mag{0.334896}
-\fi
-\ifnum\@ptsize=26
-  \mag 3583
-  \def\inv@mag{0.279096}
-\fi
-\ifnum\@ptsize=33
-  \mag 4300
-  \def\inv@mag{0.232558}
-\fi
-\ifnum\@ptsize=1200
-  \mag 923
-  \def\inv@mag{1.0834236}
-\fi
-\ifnum\@ptsize=1400
-  \mag 1077
-  \def\inv@mag{0.928505}
-\fi
 %<*kiyou>
-\mag 977
-\def\inv@mag{1.02354}
+\def\ltjs@magscale{0.977}
 %</kiyou>
-\setlength\paperwidth{\inv@mag\paperwidth}%
-\setlength\paperheight{\inv@mag\paperheight}%
+\newdimen\ltjs@mpt
+\ltjs@mpt=\ltjs@magscale\p@
+\ifdim\ltjs@mpt<.92\p@ % 8pt, 9pt 指定時
+  \def\n@baseline{15}%
+\fi
+\newcommand{\@ptsize}{0}
+\ifdim\ltjs@mpt=1.0954\p@ \renewcommand{\@ptsize}{1}\else
+\ifdim\ltjs@mpt=1.2\p@    \renewcommand{\@ptsize}{2}\else
+\renewcommand{\@ptsize}{-20}\fi\fi
+%    \end{macrocode}
+%
+% \paragraph{オプティカルサイズの補正}
+% \leavevmode\par
+% [2016-03-26 LTJ] |xreal|オプションの指定時には,|bxjscls|の|magstyle=xreal|
+% オプションのように,オプティカルの補正を行うためにNFSSにパッチを当てます。
+% パッチは,概ねmiscさんによる「js*.cls 同様の文字サイズ設定を
+% |\mag|によらずに行う方法:試案」
+% (\texttt{http://oku.edu.mie-u.ac.jp/\textasciitilde okumura/texfaq/qa/28416.html})の
+% 方法に沿っていますが,拡大/縮小するところの計算にはLuaを用いています。
+%
+% なお,\TeX 内部で長さはsp単位の整数倍で表現されているので,数spの誤差は仕方がないです。
+% そのため,事前に|type1cm|パッケージを読みこんでおきます。
+%
+% [2016-03-28 LTJ] |\luafunction|を使うようにし,また本文のフォントサイズが10ptのときには
+% (不要なので)パッチを当てないことにしました。
+%    \begin{macrocode}
+\if@ltjs@mag@xreal\RequirePackage{type1cm}
+\ifdim\ltjs@mpt=\p@\else
+  \expandafter\let\csname OT1/cmr/m/n/10\endcsname\relax
+  \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax
+  \newluafunction\ltjs@@magnify@font@calc
+  \begingroup\catcode`\%=12\relax
+  \directlua{
+    local getdimen, mpt=tex.getdimen, tex.getdimen('ltjs@mpt')/65536
+    local t = lua.get_functions_table()
+    t[\the\ltjs@@magnify@font@calc] = function()
+      tex.sprint(math.floor(0.5+mpt*getdimen('dimen@')))
+    end
+    function luatexja.ltjs_unmagnify_fsize(a)
+      local s = luatexja.print_scaled(math.floor(0.5+a/mpt*65536))
+      tex.sprint( (s:match('%.0$')) and s:sub(1,-3) or s )
+    end
+  }
+  \endgroup
+  \def\ltjs@magnify@external@font#1 at#2 at#3\@nil{%
+     \def\@tempa{#1}\def\@tempb{#2}%
+     \ifx\@tempb\@empty
+        \edef\@tempb{ scaled\directlua{%
+          tex.sprint(math.floor(0.5+\ltjs@magscale*1000))
+        }}%
+     \else
+        \dimen@\@tempb\relax
+        \edef\@tempb{ at\luafunction\ltjs@@magnify@font@calc sp}%
+     \fi
+     \edef\@tempa{\def\noexpand\external@font{\@tempa\@tempb}}
+  }
+  \let\ltjs@orig@get@external@font=\get@external@font
+  \def\get@external@font{%
+    \edef\f@size{\directlua{luatexja.ltjs_unmagnify_fsize(\f@size)}}%
+    \ltjs@orig@get@external@font
+    \begingroup
+      \edef\@tempa{\external@font\space at\space at}%
+      \expandafter\ltjs@magnify@external@font\@tempa\@nil
+    \expandafter\endgroup\@tempa
+  }
+\fi\fi
 %    \end{macrocode}
 %
+%
 % \paragraph{PDFの用紙サイズの設定}
 %
 % \begin{macro}{\pdfpagewidth}
 % \begin{macro}{\pdfpageheight}
 % 出力のPDFの用紙サイズをここで設定しておきます。
 % |tombow| が真のときは2インチ足しておきます。
+%
+% [2015-10-18 LTJ] Lua\TeX\ 0.81.0ではプリミティブの名称変更がされたので,
+% それに合わせておきます。
 %    \begin{macrocode}
 \setlength{\@tempdima}{\paperwidth}
 \setlength{\@tempdimb}{\paperheight}
   \advance \@tempdima 2in
   \advance \@tempdimb 2in
 \fi
-\setlength{\pdfpagewidth}{\@tempdima}
-\setlength{\pdfpageheight}{\@tempdimb}
+\ifdefined\pdfpagewidth
+  \setlength{\pdfpagewidth}{\@tempdima}
+  \setlength{\pdfpageheight}{\@tempdimb}
+\else
+  \setlength{\pagewidth}{\@tempdima}
+  \setlength{\pageheight}{\@tempdimb}
+\fi
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
-% \section{和文フォントの選択}
+% \section{和文フォントの変更}
 %
 % JISの1ポイントは0.3514mm(約1/72.28インチ),
 % PostScriptの1ポイントは1/72インチですが,
 %
 % この |ltjsclasses| でも,派生元の |jsclasses| と同じように,
 % この公称10ポイントのフォントをここでは13級に縮小して
-% 使うことにします。そのためには,$13\,\textrm{Q}/10\,\textrm{pt}\simeq 0.924872$倍
+% 使うことにします。そのためには,$13\,\textrm{Q}/10\,\textrm{pt}\simeq 0.924715$倍
 % すればいいことになります。
 %
 % |\ltj@stdmcfont|,~|\ltj@stdgtfont| による、デフォルトで使われ明朝・ゴシックのフォントの
 % 何らかの理由で非埋め込みフォントが正しく利用できない場合にのみ |luatexja.cfg| によって
 % セットされるものです。
 %
+% [2014-07-26 LTJ] なお,現状のところ,縦組用JFMは |jfm-ujisv.lua| しか準備していません。
+%
+% [2016-03-21 LTJ] 拡大率の計算で1~ptを$1/72.27$インチでなく0.3514~mmと間違えて扱っていたのを修正.
 %    \begin{macrocode}
 %<*!jspf>
 \expandafter\let\csname JY3/mc/m/n/10\endcsname\relax
 \ifmingoth
-  \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924872] \ltj@stdmcfont:jfm=min}{}
-  \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924872] \ltj@stdgtfont:jfm=min}{}
+  \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924715] \ltj@stdmcfont:jfm=min}{}
+  \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924715] \ltj@stdgtfont:jfm=min}{}
 \else
   \ifptexjis
-    \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924872] \ltj@stdmcfont:jfm=jis}{}
-    \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924872] \ltj@stdgtfont:jfm=jis}{}
+    \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924715] \ltj@stdmcfont:jfm=jis}{}
+    \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924715] \ltj@stdgtfont:jfm=jis}{}
   \else
-    \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924872] \ltj@stdmcfont:jfm=ujis}{}
-    \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924872] \ltj@stdgtfont:jfm=ujis}{}
+    \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924715] \ltj@stdmcfont:jfm=ujis}{}
+    \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924715] \ltj@stdgtfont:jfm=ujis}{}
   \fi
 \fi
+\DeclareFontShape{JT3}{mc}{m}{n}{<-> s * [0.924715] \ltj@stdmcfont:jfm=ujisv}{}
+\DeclareFontShape{JT3}{gt}{m}{n}{<-> s * [0.924715] \ltj@stdgtfont:jfm=ujisv}{}
 %</!jspf>
 %    \end{macrocode}
 %
-% これにより,公称10ポイントの和文フォントを0.924872倍したことにより,
+% これにより,公称10ポイントの和文フォントを0.924715倍したことにより,
 % 約9.25ポイント,
 % DTPで使う単位(1/72インチ)では9.21ポイントということになり,
 % 公称10ポイントといっても実は9ポイント強になります。
 %
 % 某学会誌では,
 % 和文フォントをPostScriptの9ポイントにするために,
-% $0.9*72.27/72 \simeq 0.903375$倍します。
+% $0.9*72.27/72 \simeq 0.903375$ 倍します。
 %
 %    \begin{macrocode}
 %<*jspf>
     \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.903375] \ltj@stdgtfont:jfm=ujis}{}
   \fi
 \fi
+\DeclareFontShape{JT3}{mc}{m}{n}{<-> s * [0.903375] \ltj@stdmcfont:jfm=ujisv}{}
+\DeclareFontShape{JT3}{gt}{m}{n}{<-> s * [0.903375] \ltj@stdgtfont:jfm=ujisv}{}
 %</jspf>
 %    \end{macrocode}
 %
 % 和文でイタリック体,斜体,サンセリフ体,
 % タイプライタ体の代わりにゴシック体を使うことにします。
 %
+% [2014-03-25 LTJ] タイプライタ体に合わせるファミリを |\jttdefault| とし,
+% 通常のゴシック体と別にできるようにしました。|\jttdefault| は,標準で
+% |\gtdefault| と定義しています。
+%
 % [2003-03-16] イタリック体,斜体について,和文でゴシックを当てていましたが,
 % 数学の定理環境などで多量のイタリック体を使うことがあり,ゴシックに
 % すると黒々となってしまうという弊害がありました。
 %
 % [2004-11-03] |\rmfamily| も和文対応にしました。
 %
+% [2016-01-30 LTJ] |\rmfamily|, |\sffamily|, |\ttfamily| の再定義をLua\TeX-ja
+% カーネルに移動させたので,ここでは和文対応にするフラグ |\@ltj@match@family|\ 
+% を有効にさせるだけでよいです。
 %    \begin{macrocode}
 \DeclareFontShape{JY3}{mc}{bx}{n}{<->ssub*gt/m/n}{}
 \DeclareFontShape{JY3}{gt}{bx}{n}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{gt}{m}{sl}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{it}{<->ssub*gt/m/n}{}
 %% \DeclareFontShape{JT3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
-\DeclareRobustCommand\rmfamily
-        {\not@math@alphabet\rmfamily\mathrm
-         \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
-\DeclareRobustCommand\sffamily
-        {\not@math@alphabet\sffamily\mathsf
-         \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
-\DeclareRobustCommand\ttfamily
-        {\not@math@alphabet\ttfamily\mathtt
-         \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
+\renewcommand\jttdefault{\gtdefault}\@ltj@match@familytrue
 %    \end{macrocode}
 %%
 % Lua\TeX-jaでは和文組版に伴うグルーはノードベースで挿入するようになり,また
 %
 % これは |\pounds| 命令で実際に呼び出される文字です。
 % 従来からのOT1エンコーディングでは |\$| のイタリック体が |\pounds|
-% なので\texttt{cmti}が使われていましたが,
-% 1994年春からは\texttt{cmu}(upright italic,直立イタリック体)
+% なので \texttt{cmti} が使われていましたが,
+% 1994年春からは \texttt{cmu}(upright italic,直立イタリック体)
 % に変わりました。
-% しかし\texttt{cmu}はその性格からして実験的なものであり,
+% しかし \texttt{cmu} はその性格からして実験的なものであり,
 % |\pounds| 以外で使われるとは思えないので,
-% ここでは\texttt{cmti}に戻してしまいます。
+% ここでは \texttt{cmti} に戻してしまいます。
 %
 % [2003-08-20] Computer Modernフォントを使う機会も減り,T1エンコーディング
 % が一般的になってきました。この定義はもうあまり意味がないので消します。
 %    \end{macrocode}
 % \end{macro}
 %
-% 「〒515」の記号と数字の間に四分アキが入らないようにします。
+% アスキーの \texttt{kinsoku.dtx} では「’」「“」「”」前後のペナルティが5000に
+% なっていたので,\texttt{jsclasses.dtx} ではそれを 10000 に補正していました。
+% しかし,Lua\TeX-jaでは最初からこれらのパラメータは 10000 なので,
+% もはや補正する必要はありません。
+%
+% 「\TeX!」「〒515」の記号と数字の間に四分アキが入らないようにします。
 %
 %    \begin{macrocode}
-\ltjsetparameter{jaxspmode={`〒,2}}
+\ltjsetparameter{jaxspmode={`!,2}}
+\ltjsetparameter{jaxspmode={`〒,1}}
 %    \end{macrocode}
 %
 % 「CやC++では……」と書くと,C++の直後に四分アキが入らないのでバランスが悪くなります。
-% 四分アキが入るようにしました。\%の両側も同じです。
+% 四分アキが入るようにしました。\% の両側も同じです。
 %
 %    \begin{macrocode}
 \ltjsetparameter{alxspmode={`+,3}}
 \ltjsetparameter{alxspmode={`\%,3}}
 %    \end{macrocode}
 %
+% \texttt{jsclasses.dtx} では80〜ffの文字の |\xspcode| を全て3にしていましたが,
+% Lua\TeX-jaでは同様の内容が最初から設定されていますので,対応する部分は削除。
+%
 % \begin{macro}{\@}
 %
-% \LaTeX の |\def\@{\spacefactor\@m}| という定義(|\@m| は1000)
-% では |I watch TV\@.| と書くとVとピリオドのペアカーニングが効かなくなります。
+% 欧文といえば,\LaTeX の |\def\@{\spacefactor\@m}| という定義(|\@m| は1000)
+% では |I watch TV\@.| と書くと V とピリオドのペアカーニングが効かなくなります。
 % そこで,次のような定義に直し,|I watch TV.\@| と書くことにします。
 %
 %    \begin{macrocode}
 %
 % |\parindent| については,0(以下)でなければ全角幅(|1\zw|)に直します。
 %
-% [2008-02-18] |english| オプションで |\parindent| を1emにしました。
+% [2008-02-18] |english| オプションで |\parindent| を 1em にしました。
+%
+% [2014-05-14 LTJ] |\ltjsetparameter|の実行は時間がかかるので,
+% |\ltjsetkanjiskip| と |\ltjsetxkanjiskip|(両者とも,
+% 実行前には |\ltj@setpar@global| の実行が必要)にしました。
+%
+% [2014-12-24 LTJ] |jsclasses| では,|\@setfontsize| 中で |xkanjiskip| を
+% 設定するのは現在の和欧文間空白の自然長が正の場合だけでした。
+% |ltjsclasses| では最初からこの判定が抜けてしまっていたので,復活させます。
 %
 %    \begin{macrocode}
 \def\@setfontsize#1#2#3{%
       \parindent=1\zw
     \fi
   \fi
-  \ltjsetparameter{kanjiskip={0\zw plus .1\zw minus .01\zw}}
-  \if@slide \ltjsetparameter{xkanjiskip={0.1em}} \else
-    \ltjsetparameter{xkanjiskip={0.25em plus 0.15em minus 0.06em}}
+  \ltj@setpar@global
+  \ltjsetkanjiskip\z@ plus .1\zw minus .01\zw
+  \@tempskipa=\ltjgetparameter{xkanjiskip}
+  \ifdim\@tempskipa>\z@
+    \if@slide 
+      \ltjsetxkanjiskip .1em
+    \else
+      \ltjsetxkanjiskip .25em plus .15em minus .06em
+    \fi
   \fi}
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\ltjs@setfontsize}
+% クラスファイルの内部では,拡大率も考慮した |ltjs@setfontsize| を
+% |\@setfontsize| の変わりに用いることにします。
+%    \begin{macrocode}
+\def\ltjs@setfontsize#1#2#3{%
+  \@setfontsize#1{#2\ltjs@mpt}{#3\ltjs@mpt}}
+%    \end{macrocode}
+% \end{macro}
+%
 % これらのグルーをもってしても行分割ができない場合は,
 % |\emergencystretch| に訴えます。
 %
 %
 % TODO: Hasumiさん [qa:54539] のご指摘は考慮中です。
 %
+% [2015-01-07 LTJ] 遅くなりましたが,
+% \url{http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=1005} にあったZRさんのパッチを取り込みました。
+%
 %    \begin{macrocode}
 \newif\ifnarrowbaselines
 \if@english
   \belowdisplayskip=\skip4
   \belowdisplayshortskip=\skip6\relax}
 \def\widebaselines{\narrowbaselinesfalse\@currsize\selectfont}
+\def\ltj@@ifnarrowbaselines{%
+  \ifnarrowbaselines\expandafter\@firstoftwo
+  \else \expandafter\@secondoftwo
+  \fi
+}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % 公称10ポイントの和文フォントが約9.25ポイント
 % (アスキーのものの0.961倍)であることもあり,
 % 行送りがかなりゆったりとしたと思います。
-% 実際,$16/9.25 \approx 1.73$であり,
+% 実際,$16/9.25 \approx 1.73$ であり,
 % 和文の推奨値の一つ「二分四分」(1.75)
 % に近づきました。
 %
 %    \begin{macrocode}
 \renewcommand{\normalsize}{%
-  \ifnarrowbaselines
-    \@setfontsize\normalsize\@xpt\@xiipt
-  \else
-    \@setfontsize\normalsize\@xpt{\n@baseline}%
-  \fi
+  \ltj@@ifnarrowbaselines
+    {\ltjs@setfontsize\normalsize\@xpt\@xiipt}%
+    {\ltjs@setfontsize\normalsize\@xpt{\n@baseline}}%
 %    \end{macrocode}
 %
 % 数式の上のアキ(|\abovedisplayskip|),
 % いましたが,結局,微調節してみることにしました。
 %
 %    \begin{macrocode}
-  \abovedisplayskip 11\p@ \@plus3\p@ \@minus4\p@
-  \abovedisplayshortskip \z@ \@plus3\p@
-  \belowdisplayskip 9\p@ \@plus3\p@ \@minus4\p@
+  \abovedisplayskip 11\ltjs@mpt \@plus3\ltjs@mpt \@minus4\ltjs@mpt
+  \abovedisplayshortskip \z@ \@plus3\ltjs@mpt
+  \belowdisplayskip 9\ltjs@mpt \@plus3\ltjs@mpt \@minus4\ltjs@mpt
   \belowdisplayshortskip \belowdisplayskip
 %    \end{macrocode}
 %
 % ここで実際に標準フォントサイズで初期化します。
 %
 %    \begin{macrocode}
-\normalsize
+\mcfamily\selectfont\normalsize
 %    \end{macrocode}
 %
 % \end{macro}
 % \begin{macro}{\Chs}
 %
 % 基準となる長さの設定をします。
-% \texttt{lltjfont.dtx}で宣言されている
+% \texttt{lltjfont.sty}で宣言されている
 % パラメータに実際の値を設定します。
 % たとえば |\Cwd| は |\normalfont| の全角幅(|1\zw|)です。
 %
 %
 % |\small| も |\normalsize| と同様に設定します。
 % 行送りは,|\normalsize| が16ポイントなら,
-% 割合からすれば$16 \times 0.9 = 14.4$ポイントになりますが,
+% 割合からすれば $16 \times 0.9 = 14.4$ ポイントになりますが,
 % |\small| の使われ方を考えて,ここでは和文13ポイント,
 % 欧文11ポイントとします。
-% また,|\topsep| と |\parsep| は,元はそれぞれ$4 \pm 2$,$2 \pm 1$
+% また,|\topsep| と |\parsep| は,元はそれぞれ $4 \pm 2$,$2 \pm 1$
 % ポイントでしたが,ここではゼロ(|\z@|)にしました。
 %
 %    \begin{macrocode}
 \newcommand{\small}{%
-  \ifnarrowbaselines
-%<!kiyou>    \@setfontsize\small\@ixpt{11}%
-%<kiyou>    \@setfontsize\small{8.8888}{11}%
-  \else
-%<!kiyou>    \@setfontsize\small\@ixpt{13}%
-%<kiyou>    \@setfontsize\small{8.8888}{13.2418}%
-  \fi
-  \abovedisplayskip 9\p@ \@plus3\p@ \@minus4\p@
-  \abovedisplayshortskip  \z@ \@plus3\p@
+  \ltj@@ifnarrowbaselines
+%<!kiyou>    {\ltjs@setfontsize\small\@ixpt{11}}%
+%<kiyou>    {\ltjs@setfontsize\small{8.8888}{11}}%
+%<!kiyou>    {\ltjs@setfontsize\small\@ixpt{13}}%
+%<kiyou>    {\ltjs@setfontsize\small{8.8888}{13.2418}}%
+  \abovedisplayskip 9\ltjs@mpt \@plus3\ltjs@mpt \@minus4\ltjs@mpt
+  \abovedisplayshortskip  \z@ \@plus3\ltjs@mpt
   \belowdisplayskip \abovedisplayskip
   \belowdisplayshortskip \belowdisplayskip
   \def\@listi{\leftmargin\leftmargini
 %
 %    \begin{macrocode}
 \newcommand{\footnotesize}{%
-  \ifnarrowbaselines
-%<!kiyou>    \@setfontsize\footnotesize\@viiipt{9.5}%
-%<kiyou>    \@setfontsize\footnotesize{8.8888}{11}%
-  \else
-%<!kiyou>    \@setfontsize\footnotesize\@viiipt{11}%
-%<kiyou>    \@setfontsize\footnotesize{8.8888}{13.2418}%
-  \fi
-  \abovedisplayskip 6\p@ \@plus2\p@ \@minus3\p@
-  \abovedisplayshortskip  \z@ \@plus2\p@
+  \ltj@@ifnarrowbaselines
+%<!kiyou>    {\ltjs@setfontsize\footnotesize\@viiipt{9.5}}%
+%<kiyou>    {\ltjs@setfontsize\footnotesize{8.8888}{11}}%
+%<!kiyou>    {\ltjs@setfontsize\footnotesize\@viiipt{11}}%
+%<kiyou>    {\ltjs@setfontsize\footnotesize{8.8888}{13.2418}}%
+  \abovedisplayskip 6\ltjs@mpt \@plus2\ltjs@mpt \@minus3\ltjs@mpt
+  \abovedisplayshortskip  \z@ \@plus2\ltjs@mpt
   \belowdisplayskip \abovedisplayskip
   \belowdisplayshortskip \belowdisplayskip
   \def\@listi{\leftmargin\leftmargini
 % [2004-11-03] |\HUGE| を追加。
 %
 %    \begin{macrocode}
-\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
-\newcommand{\tiny}{\@setfontsize\tiny\@vpt\@vipt}
+\newcommand{\scriptsize}{\ltjs@setfontsize\scriptsize\@viipt\@viiipt}
+\newcommand{\tiny}{\ltjs@setfontsize\tiny\@vpt\@vipt}
 \if@twocolumn
-%<!kiyou>  \newcommand{\large}{\@setfontsize\large\@xiipt{\n@baseline}}
-%<kiyou>  \newcommand{\large}{\@setfontsize\large{11.111}{\n@baseline}}
+%<!kiyou>  \newcommand{\large}{\ltjs@setfontsize\large\@xiipt{\n@baseline}}
+%<kiyou>  \newcommand{\large}{\ltjs@setfontsize\large{11.111}{\n@baseline}}
 \else
-%<!kiyou>  \newcommand{\large}{\@setfontsize\large\@xiipt{17}}
-%<kiyou>  \newcommand{\large}{\@setfontsize\large{11.111}{17}}
+%<!kiyou>  \newcommand{\large}{\ltjs@setfontsize\large\@xiipt{17}}
+%<kiyou>  \newcommand{\large}{\ltjs@setfontsize\large{11.111}{17}}
 \fi
-%<!kiyou>\newcommand{\Large}{\@setfontsize\Large\@xivpt{21}}
-%<kiyou>\newcommand{\Large}{\@setfontsize\Large{12.222}{21}}
-\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{25}}
-\newcommand{\huge}{\@setfontsize\huge\@xxpt{28}}
-\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{33}}
-\newcommand{\HUGE}{\@setfontsize\HUGE{30}{40}}
+%<!kiyou>\newcommand{\Large}{\ltjs@setfontsize\Large\@xivpt{21}}
+%<kiyou>\newcommand{\Large}{\ltjs@setfontsize\Large{12.222}{21}}
+\newcommand{\LARGE}{\ltjs@setfontsize\LARGE\@xviipt{25}}
+\newcommand{\huge}{\ltjs@setfontsize\huge\@xxpt{28}}
+\newcommand{\Huge}{\ltjs@setfontsize\Huge\@xxvpt{33}}
+\newcommand{\HUGE}{\ltjs@setfontsize\HUGE{30}{40}}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %    \begin{macrocode}
 %<!kiyou>\setlength\columnsep{2\zw}
 %<kiyou>\setlength\columnsep{28truebp}
-\setlength\columnseprule{0\p@}
+\setlength\columnseprule{\z@}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % 上下の行の文字が |\lineskiplimit| より接近したら,
 % |\lineskip| より近づかないようにします。
 % 元は0ptでしたが1ptに変更しました。
-% \texttt{normal...}の付いた方は保存用です。
+% \texttt{normal...} の付いた方は保存用です。
 %
 %    \begin{macrocode}
-\setlength\lineskip{1\p@}
-\setlength\normallineskip{1\p@}
-\setlength\lineskiplimit{1\p@}
-\setlength\normallineskiplimit{1\p@}
+\setlength\lineskip{1\ltjs@mpt}
+\setlength\normallineskip{1\ltjs@mpt}
+\setlength\lineskiplimit{1\ltjs@mpt}
+\setlength\normallineskiplimit{1\ltjs@mpt}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \begin{macro}{\parindent}
 %
 % |\parskip| は段落間の追加スペースです。
-% 元は0pt plus 1ptになっていましたが,ここではゼロにしました。
+% 元は 0pt plus 1pt になっていましたが,ここではゼロにしました。
 % |\parindent| は段落の先頭の字下げ幅です。
 %
 %    \begin{macrocode}
-\setlength\parskip{0\p@}
+\setlength\parskip{\z@}
 \if@slide
   \setlength\parindent{0\zw}
 \else
 %
 % \begin{macro}{\interlinepenalty}
 %
-% 段落中の改ページのペナルティです。デフォルトは0です。
+% 段落中の改ページのペナルティです。デフォルトは 0 です。
 %
 %    \begin{macrocode}
 % \interlinepenalty 0
 % \begin{macro}{\topskip}
 %
 % |\topskip| は本文領域上端と本文1行目のベースラインとの距離です。
-% あまりぎりぎりの値にすると,本文中に$\int$のような高い文字が
+% あまりぎりぎりの値にすると,本文中に $\int$ のような高い文字が
 % 入ったときに1行目のベースラインが他のページより下がってしまいます。
 % ここでは本文の公称フォントサイズ(10pt)にします。
 %
 % ことにしました。
 %
 %    \begin{macrocode}
-\setlength\topskip{10\p@}
+\setlength\topskip{10\ltjs@mpt}
 \if@slide
-  \setlength\headheight{0\p@}
+  \setlength\headheight{0\ltjs@mpt}
 \else
   \setlength\headheight{2\topskip}
 \fi
 % \begin{macro}{\footskip}
 %
 % |\footskip| は本文領域下端とフッタ下端との距離です。
-% 標準クラスファイルでは,bookで0.35in(約8.89mm),
-% book以外で30pt(約10.54mm)となっていましたが,
+% 標準クラスファイルでは,book で0.35in(約8.89mm),
+% book 以外で30pt(約10.54mm)となっていましたが,
 % ここではA4判のときちょうど1cmとなるように,
 % |\paperheight| の0.03367倍(最小 |\baselineskip|)としました。
 % 書籍については,フッタは使わないことにして,ゼロにしました。
 %    \begin{macrocode}
 %<*article|kiyou>
 \if@slide
-  \setlength\footskip{0pt}
+  \setlength\footskip{\z@}
 \else
   \setlength\footskip{0.03367\paperheight}
   \ifdim\footskip<\baselineskip
     \setlength\footskip{\baselineskip}
   \fi
 \else
-  \setlength\footskip{0pt}
+  \setlength\footskip{\z@}
 \fi
 %</book>
 %    \end{macrocode}
 % \begin{macro}{\headsep}
 %
 % |\headsep| はヘッダ下端と本文領域上端との距離です。
-% 元はbookで18pt(約6.33mm),
+% 元は book で18pt(約6.33mm),
 % それ以外で25pt(約8.79mm)になっていました。
-% ここではarticleは |\footskip| $-$ |\topskip| としました。
+% ここでは article は |\footskip| $-$ |\topskip| としました。
 %
 %    \begin{macrocode}
 %<*article>
 \if@slide
-  \setlength\headsep{0\p@}
+  \setlength\headsep{0\ltjs@mpt}
 \else
   \setlength\headsep{\footskip}
   \addtolength\headsep{-\topskip}
 \addtolength\headsep{-\topskip}
 %</jspf>
 %<*kiyou>
-\setlength\headheight{0\p@}
-\setlength\headsep{0\p@}
+\setlength\headheight{0\ltjs@mpt}
+\setlength\headsep{0\ltjs@mpt}
 %</kiyou>
 %    \end{macrocode}
 % \end{macro}
 \newdimen\fullwidth
 %    \end{macrocode}
 %
-% この |\fullwidth| はarticleでは紙幅 |\paperwidth|の0.76倍を超えない
+% この |\fullwidth| は article では紙幅 |\paperwidth|の0.76倍を超えない
 % 全角幅の整数倍(二段組では全角幅の偶数倍)にします。0.76倍という数値は
 % A4縦置きの場合に紙幅から約2インチを引いた値になるように選びました。
-% bookでは紙幅から36ミリを引いた値にしました。
+% book では紙幅から36ミリを引いた値にしました。
 %
 % \begin{macro}{\textwidth}
 %
 %<jspf>\setlength{\textheight}{51\baselineskip}
 %<kiyou>\setlength{\textheight}{47\baselineskip}
 \addtolength{\textheight}{\topskip}
-\addtolength{\textheight}{0.1\p@}
+\addtolength{\textheight}{0.1\ltjs@mpt}
 %<jspf>\setlength{\mathindent}{10mm}
 %    \end{macrocode}
 % \end{macro}
 % はトンボの内側に |1in| のスペース(|1truein| ではなく)を挿入するので,
 % 場合分けしています。
 %
-% [2011-10-03] Lua\TeX{} (pdf\TeX?) では |1truein| ではなく
+% [2011-10-03 LTJ] Lua\TeX{} (pdf\TeX?) では |1truein| ではなく
 % |1in| になるようです。
 %
 %    \begin{macrocode}
 % [2003-06-26] |\headheight| を |\topskip| に直しました。
 % 以前はこの二つは値が同じであったので,変化はないはずです。
 %
-% [2011-10-03] ここも |\oddsidemargin| のときと同様に |-\inv@mag in| ではなく
+% [2011-10-03 LTJ] ここも |\oddsidemargin| のときと同様に |-\inv@mag in| ではなく
 % |-1in| にします。
 %
 %    \begin{macrocode}
 % \begin{macro}{\footins}
 %
 % |\skip\footins| は本文の最終行と最初の脚注との間の距離です。
-% 標準の10ポイントクラスでは9 plus 4 minus 2ポイントになっていますが,
+% 標準の10ポイントクラスでは 9 plus 4 minus 2 ポイントになっていますが,
 % 和文の行送りを考えてもうちょっと大きくします。
 %
 %    \begin{macrocode}
-\setlength{\skip\footins}{16\p@ \@plus 5\p@ \@minus 2\p@}
+\setlength{\skip\footins}{16\ltjs@mpt \@plus 5\ltjs@mpt \@minus 2\ltjs@mpt}
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\topfraction}
 %
 % 本文ページ上部のフロートが占有できる最大の割合です。
-% フロートが入りやすいように,元の値0.7を0.8 [2003-08-23: 0.85]に変えてあります。
+% フロートが入りやすいように,元の値 0.7 を 0.8 [2003-08-23: 0.85] に変えてあります。
 %
 %    \begin{macrocode}
 \renewcommand{\topfraction}{.85}
 %
 % \begin{macro}{\bottomfraction}
 %
-% 本文ページ下部のフロートが占有できる最大の割合です。元は0.3でした。
+% 本文ページ下部のフロートが占有できる最大の割合です。元は 0.3 でした。
 %
 %    \begin{macrocode}
 \renewcommand{\bottomfraction}{.8}
 % \begin{macro}{\textfraction}
 %
 % 本文ページに最低限入らなければならない本文の割合です。
-% フロートが入りやすいように元の0.2を0.1に変えました。
+% フロートが入りやすいように元の 0.2 を 0.1 に変えました。
 %
 %    \begin{macrocode}
 \renewcommand{\textfraction}{.1}
 % \begin{macro}{\floatpagefraction}
 %
 % フロートだけのページでのフロートの最小割合です。
-% これも0.5を0.8に変えてあります。
+% これも 0.5 を 0.8 に変えてあります。
 %
 %    \begin{macrocode}
 \renewcommand{\floatpagefraction}{.8}
 %
 % 二段組のとき本文ページ上部に出力できる
 % 段抜きフロートが占めうる最大の割合です。
-% 0.7を0.8に変えてあります。
+% 0.7 を 0.8 に変えてあります。
 %
 %    \begin{macrocode}
 \renewcommand{\dbltopfraction}{.8}
 %
 % 二段組のときフロートだけのページに入るべき
 % 段抜きフロートの最小割合です。
-% 0.5を0.8に変えてあります。
+% 0.5 を 0.8 に変えてあります。
 %
 %    \begin{macrocode}
 \renewcommand{\dblfloatpagefraction}{.8}
 % |\intextsep| は本文の途中に出力されるフロートと本文との距離です。
 %
 %    \begin{macrocode}
-\setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
-\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
-\setlength\intextsep   {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\floatsep    {12\ltjs@mpt \@plus 2\ltjs@mpt \@minus 2\ltjs@mpt}
+\setlength\textfloatsep{20\ltjs@mpt \@plus 2\ltjs@mpt \@minus 4\ltjs@mpt}
+\setlength\intextsep   {12\ltjs@mpt \@plus 2\ltjs@mpt \@minus 2\ltjs@mpt}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % 二段組のときの段抜きのフロートについての値です。
 %
 %    \begin{macrocode}
-\setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
-\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\dblfloatsep    {12\ltjs@mpt \@plus 2\ltjs@mpt \@minus 2\ltjs@mpt}
+\setlength\dbltextfloatsep{20\ltjs@mpt \@plus 2\ltjs@mpt \@minus 4\ltjs@mpt}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % |\@fpsep| はフロート間に入ります。
 %
 %    \begin{macrocode}
-\setlength\@fptop{0\p@ \@plus 1fil}
-\setlength\@fpsep{8\p@ \@plus 2fil}
-\setlength\@fpbot{0\p@ \@plus 1fil}
+\setlength\@fptop{0\ltjs@mpt \@plus 1fil}
+\setlength\@fpsep{8\ltjs@mpt \@plus 2fil}
+\setlength\@fpbot{0\ltjs@mpt \@plus 1fil}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % 段抜きフロートについての値です。
 %
 %    \begin{macrocode}
-\setlength\@dblfptop{0\p@ \@plus 1fil}
-\setlength\@dblfpsep{8\p@ \@plus 2fil}
-\setlength\@dblfpbot{0\p@ \@plus 1fil}
+\setlength\@dblfptop{0\ltjs@mpt \@plus 1fil}
+\setlength\@dblfpsep{8\ltjs@mpt \@plus 2fil}
+\setlength\@dblfpbot{0\ltjs@mpt \@plus 1fil}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % ページスタイルとして,\LaTeXe (欧文版)の標準クラス
 % では |empty|,|plain|,|headings|,|myheadings| があります。
 % このうち |empty|,|plain| スタイルは\LaTeXe 本体
-% で定義されています。
+% で定義されています。 
 %
 % アスキーのクラスファイルでは |headnombre|,|footnombre|,
 % |bothstyle|,|jpl@in| が追加されていますが,
 % |headings| スタイルはヘッダに見出しとページ番号を出力します。
 % ここではヘッダにアンダーラインを引くようにしてみました。
 %
-% まずarticleの場合です。
+% まず article の場合です。
 %
 %    \begin{macrocode}
 %<*article|kiyou>
 %</article|kiyou>
 %    \end{macrocode}
 %
-% 次はbookの場合です。
+% 次は book の場合です。
+% [2011-05-10] しっぽ愛好家さん [qa:6370] のパッチを取り込ませていただきました
+% (北見さん [qa:55896] のご指摘ありがとうございます)。
 %
 %    \begin{macrocode}
 %<*book>
+\newif\if@omit@number
 \def\ps@headings{%
   \let\@oddfoot\@empty
   \let\@evenfoot\@empty
   \def\chaptermark##1{\markboth{%
     \ifnum \c@secnumdepth >\m@ne
       \if@mainmatter
-        \@chapapp\thechapter\@chappos\hskip1\zw
+        \if@omit@number\else
+          \@chapapp\thechapter\@chappos\hskip1\zw
+        \fi
       \fi
     \fi
     ##1}{}}%
         \begin{center}
           \mbox{} \\[1\zw]
           \large
-          {\maybeblue\hrule height0pt depth2pt\relax}\par
+          {\maybeblue\hrule height0\ltjs@mpt depth2\ltjs@mpt\relax}\par
           \smallskip
           \@title
           \smallskip
-          {\maybeblue\hrule height0pt depth2pt\relax}\par
+          {\maybeblue\hrule height0\ltjs@mpt depth2\ltjs@mpt\relax}\par
           \vfill
           {\small \@author}%
         \end{center}
       \else
-      \vskip 60\p@
+      \vskip 60\ltjs@mpt
       \begin{center}%
         {\LARGE \@title \par}%
         \vskip 3em%
 % 二つ挿入した |\everyparhook| のうち後者が |\paragraph| 類の後で2回実行され,
 % それ以降は前者が実行されます。
 %
-% [2011-10-05] Lua\TeX-jaでは|\everyparhook|は不要なので削除。
+% [2011-10-05 LTJ] Lua\TeX-jaでは |\everyparhook| は不要なので削除。
 %
 %    \begin{macrocode}
 \def\@xsect#1{%
     \@afterheading
   \fi
   \if@slide
-    {\vskip-6pt\maybeblue\hrule height0pt depth1pt\vskip7pt\relax}%
+    {\vskip-6\ltjs@mpt\maybeblue\hrule height0\ltjs@mpt depth1\ltjs@mpt\vskip7\ltjs@mpt\relax}%
   \fi
   \par  % 2000-12-18
   \ignorespaces}
 %
 % 見出し番号のカウンタです。
 % |\newcounter| の第1引数が新たに作るカウンタです。
-% これは第2引数が増加するたびに0に戻されます。
+% これは第2引数が増加するたびに 0 に戻されます。
 % 第2引数は定義済みのカウンタです。
 %
 %    \begin{macrocode}
 % 部の見出しを出力します。
 % |\bfseries| を |\headfont| に変えました。
 %
-% |book| クラス以外では |secnumdepth| が$-1$より大きいとき
+% |book| クラス以外では |secnumdepth| が $-1$ より大きいとき
 % 部番号を付けます。
 %
 %    \begin{macrocode}
 %</!book>
 %    \end{macrocode}
 %
-% |book| クラスでは |secnumdepth| が$-2$より大きいとき部番号を付けます。
+% |book| クラスでは |secnumdepth| が $-2$ より大きいとき部番号を付けます。
 %
 %    \begin{macrocode}
 %<*book>
     \normalfont
     \ifnum \c@secnumdepth >-2\relax
       \huge\headfont \prepartname\thepart\postpartname
-      \par\vskip20\p@
+      \par\vskip20\ltjs@mpt
     \fi
     \Huge \headfont #2\par}%
   \@endpart}
 %
 %    章の最初のページスタイルは,全体が |empty| でなければ |plain| に
 %    します。
-%    また,|\@topnum| を0にして,
+%    また,|\@topnum| を 0 にして,
 %    章見出しの上に図や表が来ないようにします。
 %
 %    \begin{macrocode}
   \plainifnotempty % 元: \thispagestyle{plain}
   \global\@topnum\z@
   \if@english \@afterindentfalse \else \@afterindenttrue \fi
-  \secdef\@chapter\@schapter}
+  \secdef
+    {\@omit@numberfalse\@chapter}%
+    {\@omit@numbertrue\@schapter}}
 %    \end{macrocode}
 % \end{macro}
 %
       \typeout{\@chapapp\thechapter\@chappos}%
       \addcontentsline{toc}{chapter}%
         {\protect\numberline
-        {\if@english\thechapter\else\@chapapp\thechapter\@chappos\fi}%
+        % {\if@english\thechapter\else\@chapapp\thechapter\@chappos\fi}%
+        {\@chapapp\thechapter\@chappos}%
         #1}%
     \else\addcontentsline{toc}{chapter}{#1}\fi
   \else
     \addcontentsline{toc}{chapter}{#1}%
   \fi
   \chaptermark{#1}%
-  \addtocontents{lof}{\protect\addvspace{10\p@}}%
-  \addtocontents{lot}{\protect\addvspace{10\p@}}%
+  \addtocontents{lof}{\protect\addvspace{10\ltjs@mpt}}%
+  \addtocontents{lot}{\protect\addvspace{10\ltjs@mpt}}%
   \if@twocolumn
     \@topnewpage[\@makechapterhead{#2}]%
   \else
 %
 % \subsection{リスト環境}
 %
-% 第$k$レベルのリストの初期化をするのが |\@list|$k$です
+% 第 $k$ レベルのリストの初期化をするのが |\@list|$k$ です
 % ($k = \mathtt{i}, \mathtt{ii}, \mathtt{iii}, \mathtt{iv}$)。
-% |\@list|$k$は |\leftmargin| を |\leftmargin|$k$に設定します。
+% |\@list|$k$ は |\leftmargin| を |\leftmargin|$k$ に設定します。
 %
 % \begin{macro}{\leftmargini}
 %
-% 二段組であるかないかに応じてそれぞれ2em,2.5emでしたが,
+% 二段組であるかないかに応じてそれぞれ 2em,2.5em でしたが,
 % ここでは全角幅の2倍にしました。
 %
 % [2002-05-11] |3\zw| に変更しました。
 % \begin{macro}{\leftmarginvi}
 %
 %    |ii|,|iii|,|iv| は |\labelsep| と
-%    それぞれ`(m)',`vii.',`M.'の幅との和より大きくする
+%    それぞれ `(m)',`vii.',`M.' の幅との和より大きくする
 %    ことになっています。ここでは全角幅の整数倍に丸めました。
 %
 %    \begin{macrocode}
 %    リスト環境の前に空行がある場合,
 %    |\parskip| と |\topsep| に |\partopsep| を
 %    加えた値だけ縦方向の空白ができます。
-%    0に改変しました。
+%    0 に改変しました。
 %
 %    \begin{macrocode}
 \setlength\partopsep{\z@} % {2\p@ \@plus 1\p@ \@minus 1\p@}
 %    トップレベルの |itemize|,|enumerate| 環境でだけ
 %    最初と最後に行送りの半分の空きが入るようになっていました。
 %
-%    [2004-09-27] |\topsep| のグルー$_{-0.1}^{+0.2}$ |\baselineskip|
+%    [2004-09-27] |\topsep| のグルー $_{-0.1}^{+0.2}$ |\baselineskip|
 %    を思い切って外しました。
 %
 %    \begin{macrocode}
 % \paragraph{enumerate環境}
 %
 % |enumerate| 環境はカウンタ |enumi|,|enumii|,|enumiii|,
-% |enumiv| を使います。|enum|$n$は第$n$レベルの番号です。
+% |enumiv| を使います。|enum|$n$ は第 $n$ レベルの番号です。
 %
 % \begin{macro}{\theenumi}
 % \begin{macro}{\theenumii}
 % \begin{macro}{\theenumiv}
 %
 %    出力する番号の書式を設定します。
-%    これらは\LaTeX 本体(\texttt{ltlists.dtx}参照)で定義済みですが,
+%    これらは\LaTeX 本体(\texttt{ltlists.dtx} 参照)で定義済みですが,
 %    ここでは表し方を変えています。
 %    |\@arabic|,|\@alph|,|\@roman|,|\@Alph| はそれぞれ
 %    算用数字,小文字アルファベット,小文字ローマ数字,大文字アルファベット
 % \begin{macro}{\p@enumiii}
 % \begin{macro}{\p@enumiv}
 %
-%    |\p@enum|$n$は |\ref| コマンドで |enumerate| 環境の第$n$レベルの
+%    |\p@enum|$n$ は |\ref| コマンドで |enumerate| 環境の第 $n$ レベルの
 %    項目が参照されるときの書式です。
 %    これも第2レベルは和文用かっこにしました。
 %
 % \begin{macro}{\labelitemii}
 % \begin{macro}{\labelitemiii}
 % \begin{macro}{\labelitemiv}
-%    |itemize| 環境の第$n$レベルのラベルを作るコマンドです。
+%    |itemize| 環境の第 $n$ レベルのラベルを作るコマンドです。
 %    \begin{macrocode}
 \newcommand\labelitemi{\textbullet}
 \newcommand\labelitemii{\normalfont\bfseries \textendash}
 % \begin{environment}{quotation}
 %
 % 段落の頭の字下げ量を1.5emから |\parindent| に変えました。
-% また,右マージンを0にしました。
+% また,右マージンを 0 にしました。
 %
 %    \begin{macrocode}
 \newenvironment{quotation}{%
 % |array| 環境の列間には |\arraycolsep| の2倍の幅の空きが入ります。
 %
 %    \begin{macrocode}
-\setlength\arraycolsep{5\p@}
+\setlength\arraycolsep{5\ltjs@mpt}
 %    \end{macrocode}
 % \end{macro}
 %
 % |tabular| 環境の列間には |\tabcolsep| の2倍の幅の空きが入ります。
 %
 %    \begin{macrocode}
-\setlength\tabcolsep{6\p@}
+\setlength\tabcolsep{6\ltjs@mpt}
 %    \end{macrocode}
 % \end{macro}
 %
 % |array|,|tabular| 環境内の罫線の幅です。
 %
 %    \begin{macrocode}
-\setlength\arrayrulewidth{.4\p@}
+\setlength\arrayrulewidth{.4\ltjs@mpt}
 %    \end{macrocode}
 % \end{macro}
 %
 % |array|,|tabular| 環境での二重罫線間のアキです。
 %
 %    \begin{macrocode}
-\setlength\doublerulesep{2\p@}
+\setlength\doublerulesep{2\ltjs@mpt}
 %    \end{macrocode}
 % \end{macro}
 %
 % |\fbox|,|\framebox| の罫線の幅です。
 %
 %    \begin{macrocode}
-\setlength\fboxsep{3\p@}
-\setlength\fboxrule{.4\p@}
+\setlength\fboxsep{3\ltjs@mpt}
+\setlength\fboxrule{.4\ltjs@mpt}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %    \begin{macrocode}
 \newlength\abovecaptionskip
 \newlength\belowcaptionskip
-\setlength\abovecaptionskip{5\p@} % 元: 10\p@
-\setlength\belowcaptionskip{5\p@} % 元: 0\p@
+\setlength\abovecaptionskip{5\ltjs@mpt} % 元: 10\p@
+\setlength\belowcaptionskip{5\ltjs@mpt} % 元: 0\p@
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
 % [2003-11-05] ロジックを少し変えてみました。
 %
+% [2015-05-26] |listings| パッケージを使うときに|title| を指定すると次のエラーが出るのを修正。
+% \begin{verbatim}
+% ! Missing number, treated as zero.
+% \end{verbatim}
+% 
+%
 %    \begin{macrocode}
 %<*!jspf>
 % \long\def\@makecaption#1#2{{\small
 %   \advance\leftskip1cm
 %   \advance\rightskip1cm
 %   \vskip\abovecaptionskip
-%   \sbox\@tempboxa{#1\hskip1\zw\relax #2}%
+%   \sbox\@tempboxa{#1{\hskip1\zw}#2}%
 %   \ifdim \wd\@tempboxa >\hsize
-%     #1\hskip1\zw\relax #2\par
+%     #1{\hskip1\zw}#2\par
 %   \else
 %     \global \@minipagefalse
 %     \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
   \advance\leftskip .0628\linewidth
   \advance\rightskip .0628\linewidth
   \vskip\abovecaptionskip
-  \sbox\@tempboxa{#1\hskip1\zw\relax #2}%
+  \sbox\@tempboxa{#1{\hskip1\zw}#2}%
   \ifdim \wd\@tempboxa <\hsize \centering \fi
-  #1\hskip1\zw\relax #2\par
+  #1{\hskip1\zw}#2\par
   \vskip\belowcaptionskip}}
 %</!jspf>
 %<*jspf>
 %
 % \begin{macro}{\@dotsep}
 %
-% 点の間隔です(単位mu)。
+% 点の間隔です(単位 mu)。
 %
 % \begin{macro}{\c@tocdepth}
 %
 %
 % 目次を生成します。
 %
+% \begin{macro}{\js@tocl@width}
+%
+% [2013-12-30] |\prechaptername| などから見積もった目次のラベルの長さです。(by ts)
+%
 %    \begin{macrocode}
+\newdimen\js@tocl@width
 \newcommand{\tableofcontents}{%
 %<*book>
+  \settowidth\js@tocl@width{\headfont\prechaptername\postchaptername}%
+  \settowidth\@tempdima{\headfont\appendixname}%
+  \ifdim\js@tocl@width<\@tempdima \setlength\js@tocl@width{\@tempdima}\fi
+  \ifdim\js@tocl@width<2\zw \divide\js@tocl@width by 2 \advance\js@tocl@width 1\zw\fi
   \if@twocolumn
     \@restonecoltrue\onecolumn
   \else
   \@mkboth{\contentsname}{}%
 %</book>
 %<*!book>
+  \settowidth\js@tocl@width{\headfont\presectionname\postsectionname}%
+  \settowidth\@tempdima{\headfont\appendixname}%
+  \ifdim\js@tocl@width<\@tempdima\relax\setlength\js@tocl@width{\@tempdima}\fi
+  \ifdim\js@tocl@width<2\zw \divide\js@tocl@width by 2 \advance\js@tocl@width 1\zw\fi
   \section*{\contentsname}%
   \@mkboth{\contentsname}{\contentsname}%
 %</!book>
 %<book>  \if@restonecol\twocolumn\fi
 }
 %    \end{macrocode}
-% \end{macro}
+% \end{macro}\end{macro}
 %
 % \begin{macro}{\l@part}
 %
   \ifnum \c@tocdepth >-2\relax
 %<!book>    \addpenalty\@secpenalty
 %<book>    \addpenalty{-\@highpenalty}%
-    \addvspace{2.25em \@plus\p@}%
+    \addvspace{2.25em \@plus\ltjs@mpt}%
     \begingroup
       \parindent \z@
 %     \@pnumwidth should be \@tocrmarg
 %
 % \begin{macro}{\l@chapter}
 %
-% 章の目次です。|\@lnumwidth| を|4.683\zw|に増やしました。
+% 章の目次です。|\@lnumwidth| を |4.683\zw| に増やしました。
+%
+% [2013-12-30] |\@lnumwidth| を |\js@tocl@width| から
+% 決めるようにしてみました。(by ts)
 %
 %    \begin{macrocode}
 %<*book>
 \newcommand*{\l@chapter}[2]{%
   \ifnum \c@tocdepth >\m@ne
     \addpenalty{-\@highpenalty}%
-    \addvspace{1.0em \@plus\p@}
+    \addvspace{1.0em \@plus\ltjs@mpt}
 %   \vskip 1.0em \@plus\p@   % book.clsでは↑がこうなっている
     \begingroup
       \parindent\z@
       \rightskip\@tocrmarg
       \parfillskip-\rightskip
       \leavevmode\headfont
-      \if@english\setlength\@lnumwidth{5.5em}\else\setlength\@lnumwidth{4.683\zw}\fi
+      % \if@english\setlength\@lnumwidth{5.5em}\else\setlength\@lnumwidth{4.683\zw}\fi
+      \setlength\@lnumwidth{\js@tocl@width}\advance\@lnumwidth 2.683\zw
       \advance\leftskip\@lnumwidth \hskip-\leftskip
       #1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par
       \penalty\@highpenalty
 \newcommand*{\l@section}[2]{%
   \ifnum \c@tocdepth >\z@
     \addpenalty{\@secpenalty}%
-    \addvspace{1.0em \@plus\p@}%
+    \addvspace{1.0em \@plus\ltjs@mpt}%
     \begingroup
       \parindent\z@
 %     \rightskip\@pnumwidth
       \rightskip\@tocrmarg
       \parfillskip-\rightskip
       \leavevmode\headfont
-      \setlength\@lnumwidth{4\zw}% 元1.5em [2003-03-02]
+      %\setlength\@lnumwidth{4\zw}% 元1.5em [2003-03-02]
+      \setlength\@lnumwidth{\js@tocl@width}\advance\@lnumwidth 2\zw
       \advance\leftskip\@lnumwidth \hskip-\leftskip
       #1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par
     \endgroup
 % |1\zw|,|3.683\zw|に変えました。
 %
 %    \begin{macrocode}
-%<book>\newcommand*{\l@section}{\@dottedtocline{1}{1\zw}{3.683\zw}}
+%<book> % \newcommand*{\l@section}{\@dottedtocline{1}{1\zw}{3.683\zw}}
 %    \end{macrocode}
+%
+% [2013-12-30] 上のインデントは |\js@tocl@width| から決めるように
+% しました。(by ts)
+%
 % \end{macro}
 %
 % \begin{macro}{\l@subsection}
 % さらに下位レベルの目次項目の体裁です。
 % あまり使ったことがありませんので,要修正かもしれません。
 %
+% [2013-12-30] ここも  |\js@tocl@width| から決めるように
+% してみました。(by ts)
+%
 %    \begin{macrocode}
 %<*!book>
 % \newcommand*{\l@subsection}   {\@dottedtocline{2}{1.5em}{2.3em}}
-\newcommand*{\l@subsection}   {\@dottedtocline{2}{1\zw}{3\zw}}
 % \newcommand*{\l@subsubsection}{\@dottedtocline{3}{3.8em}{3.2em}}
-\newcommand*{\l@subsubsection}{\@dottedtocline{3}{2\zw}{3\zw}}
 % \newcommand*{\l@paragraph}    {\@dottedtocline{4}{7.0em}{4.1em}}
-\newcommand*{\l@paragraph}    {\@dottedtocline{4}{3\zw}{3\zw}}
 % \newcommand*{\l@subparagraph} {\@dottedtocline{5}{10em}{5em}}
-\newcommand*{\l@subparagraph} {\@dottedtocline{5}{4\zw}{3\zw}}
+%
+% \newcommand*{\l@subsection}   {\@dottedtocline{2}{1\zw}{3\zw}}
+% \newcommand*{\l@subsubsection}{\@dottedtocline{3}{2\zw}{3\zw}}
+% \newcommand*{\l@paragraph}    {\@dottedtocline{4}{3\zw}{3\zw}}
+% \newcommand*{\l@subparagraph} {\@dottedtocline{5}{4\zw}{3\zw}}
+%
+\newcommand*{\l@subsection}{%
+          \@tempdima\js@tocl@width \advance\@tempdima -1\zw
+          \@dottedtocline{2}{\@tempdima}{3\zw}}
+\newcommand*{\l@subsubsection}{%
+          \@tempdima\js@tocl@width \advance\@tempdima 0\zw
+          \@dottedtocline{3}{\@tempdima}{4\zw}}
+\newcommand*{\l@paragraph}{%
+          \@tempdima\js@tocl@width \advance\@tempdima 1\zw
+          \@dottedtocline{4}{\@tempdima}{5\zw}}
+\newcommand*{\l@subparagraph}{%
+          \@tempdima\js@tocl@width \advance\@tempdima 2\zw
+          \@dottedtocline{5}{\@tempdima}{6\zw}}
 %</!book>
 %<*book>
-\newcommand*{\l@subsection}   {\@dottedtocline{2}{3.8em}{3.2em}}
-\newcommand*{\l@subsubsection}{\@dottedtocline{3}{7.0em}{4.1em}}
-\newcommand*{\l@paragraph}    {\@dottedtocline{4}{10em}{5em}}
-\newcommand*{\l@subparagraph} {\@dottedtocline{5}{12em}{6em}}
+% \newcommand*{\l@subsection}   {\@dottedtocline{2}{3.8em}{3.2em}}
+% \newcommand*{\l@subsubsection}{\@dottedtocline{3}{7.0em}{4.1em}}
+% \newcommand*{\l@paragraph}    {\@dottedtocline{4}{10em}{5em}}
+% \newcommand*{\l@subparagraph} {\@dottedtocline{5}{12em}{6em}}
+\newcommand*{\l@section}{%
+          \@tempdima\js@tocl@width \advance\@tempdima -1\zw
+          \@dottedtocline{1}{\@tempdima}{3.683\zw}}
+\newcommand*{\l@subsection}{%
+          \@tempdima\js@tocl@width \advance\@tempdima 2.683\zw
+          \@dottedtocline{2}{\@tempdima}{3.5\zw}}
+\newcommand*{\l@subsubsection}{%
+          \@tempdima\js@tocl@width \advance\@tempdima 6.183\zw
+          \@dottedtocline{3}{\@tempdima}{4.5\zw}}
+\newcommand*{\l@paragraph}{%
+          \@tempdima\js@tocl@width \advance\@tempdima 10.683\zw
+          \@dottedtocline{4}{\@tempdima}{5.5\zw}}
+\newcommand*{\l@subparagraph}{%
+          \@tempdima\js@tocl@width \advance\@tempdima 16.183\zw
+          \@dottedtocline{5}{\@tempdima}{6.5\zw}}
 %</book>
 %    \end{macrocode}
 % \end{macro}
 %
 %    \begin{macrocode}
 \def\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
-  \vskip \z@ \@plus.2\p@
+  \vskip \z@ \@plus.2\ltjs@mpt
   {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
     \parindent #2\relax\@afterindenttrue
    \interlinepenalty\@M
    \@lnumwidth #3\relax
    \advance\leftskip \@lnumwidth \null\nobreak\hskip -\leftskip
     {#4}\nobreak
-    \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
+    \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep 
        mu$}\hfill \nobreak\hb@xt@\@pnumwidth{%
          \hfil\normalfont \normalcolor #5}\par}\fi}
 %    \end{macrocode}
 % \begin{macro}{\bibindent}
 %
 % オープンスタイルの参考文献で使うインデント幅です。
-% 元は1.5emでした。
+% 元は 1.5em でした。
 %
 %    \begin{macrocode}
 \newdimen\bibindent
 % \begin{macro}{\@cite}
 % \begin{macro}{\@citex}
 %
-% 文献の番号を出力する部分は\texttt{ltbibl.dtx}で定義されていますが,
+% 文献の番号を出力する部分は \texttt{ltbibl.dtx} で定義されていますが,
 % コンマとかっこを和文フォントにするには次のようにします。
 % とりあえずコメントアウトしておきましたので,必要に応じて生かしてください。
 % かっこの前後に入るグルーを |\inhibitglue| で取っていますので,
 %<!book>    \@mkboth{\indexname}{\indexname}%
     \plainifnotempty % \thispagestyle{plain}
     \parindent\z@
-    \parskip\z@ \@plus .3\p@\relax
+    \parskip\z@ \@plus .3\ltjs@mpt\relax
     \let\item\@idxitem
     \raggedright
     \footnotesize\narrowbaselines
 % 索引で先頭文字ごとのブロックの間に入るスペースです。
 %
 %    \begin{macrocode}
-\newcommand{\indexspace}{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+\newcommand{\indexspace}{\par \vskip 10\ltjs@mpt \@plus5\ltjs@mpt \@minus3\ltjs@mpt\relax}
 %    \end{macrocode}
 % \end{macro}
 %
 %
 % [2002-04-09] インプリメントの仕方を変えたため消しました。
 %
+% [2013-04-23] 新しい\pTeX では脚注番号のまわりにスペースが入りすぎることを防ぐため,
+% 北川さんのパッチ [qa:57090] を取り込みました。
+%
+% [2013-05-14] plcore.ltx に倣った形に書き直しました(Thanks: 北川さん)。
+%
+% [2014-07-02 LTJ] |\ifydir| を使わない形に書換えました。
+%
 %    \begin{macrocode}
-% \def\@makefnmark{\hbox{\@textsuperscript{\normalfont
-%       \ifx\@thefnmark\@empty\else
-%         \textasteriskcentered
-%       \fi
-%       \@thefnmark}}}
+\renewcommand\@makefnmark{\hbox{}\hbox{%
+  \unless\ifnum\ltjgetparameter{direction}=3 \@textsuperscript{\normalfont\@thefnmark}%
+  \else\hbox{\yoko\@textsuperscript{\normalfont\@thefnmark}}\fi}\hbox{}}
 %    \end{macrocode}
 % \end{macro}
 %
 %
 %    \begin{macrocode}
 \renewcommand{\footnoterule}{%
-  \kern-3\p@
-  \hrule width .4\columnwidth
-  \kern 2.6\p@}
+  \kern-3\ltjs@mpt
+  \hrule width .4\columnwidth height .4\ltjs@mpt
+  \kern 2.6\ltjs@mpt}
 %    \end{macrocode}
 % \end{macro}
 %
 %
 % 段落頭のかぎかっこなどを見かけ1字半下げから全角1字下げに直します。
 %
-% [2012-04-24] LuaTeX-jaではJFMに段落開始時の括弧類の字下げ幅をコントロール
+% [2012-04-24 LTJ] Lua\TeX-jaではJFMに段落開始時の括弧類の字下げ幅をコントロール
 % する機能がありますが,|\item| 直後ではラベル用のボックスが段落先頭になる
-% ため,うまく働きませんでした.形を変えて復活させます.
+% ため,うまく働きませんでした。形を変えて復活させます。
 %
 % |\item| 命令の直後です。
 %
 % \begin{macro}{\TeX}
 % \begin{macro}{\LaTeX}
 %
-% これらは\texttt{ltlogos.dtx}で定義されていますが,
+% これらは \texttt{ltlogos.dtx} で定義されていますが,
 % TimesやHelveticaでも見栄えがするように若干変更しました。
 %
 % [2003-06-12] Palatinoも加えました(要調整)。
 %
 % |\LaTeXe| コマンドの |\mbox{\m@th ...| で始まる新しい定義では
 % 直後の和文との間に |xkanjiskip| が入りません。また,
-% |mathptmx| パッケージなどと併用すると,最後の$\varepsilon$
+% |mathptmx| パッケージなどと併用すると,最後の $\varepsilon$ 
 % 下がりすぎてしまいます。そのため,ちょっと手を加えました。
 %
 %    \begin{macrocode}
 %
 % \begin{macro}{\AmSTeX}
 %
-% \texttt{amstex.sty}で定義されています。
+% \texttt{amstex.sty} で定義されています。
 %
 %    \begin{macrocode}
 \def\AmSTeX{\protect\AmS-\protect\TeX{}}
 % \begin{macro}{\BibTeX}
 % \begin{macro}{\SliTeX}
 %
-% これらは\texttt{doc.dtx}から取ったものです。
+% これらは \texttt{doc.dtx} から取ったものです。
 % ただし,|\BibTeX| だけはちょっと修正しました。
 %
 %    \begin{macrocode}
 %    \begin{macrocode}
 %<!jspf>\newcommand{\figurename}{\if@english Fig.~\else 図\fi}
 %<jspf>\newcommand{\figurename}{Fig.~}
-%<!jspf>\newcommand{\tablename}{\if@english Table.~\else 表\fi}
+%<!jspf>\newcommand{\tablename}{\if@english Table~\else 表\fi}
 %<jspf>\newcommand{\tablename}{Table~}
 %    \end{macrocode}
 % \end{macro}
 % \begin{macro}{\appendixname}
 % \begin{macro}{\abstractname}
 %    \begin{macrocode}
-\newcommand{\appendixname}{\if@english Appendix~\else 付録\fi}
+% \newcommand{\appendixname}{\if@english Appendix~\else 付録\fi}
+\newcommand{\appendixname}{\if@english \else 付録\fi}
 %<!book>\newcommand{\abstractname}{\if@english Abstract\else 概要\fi}
 %    \end{macrocode}
 % \end{macro}
   \renewcommand\kanjifamilydefault{\gtdefault}
   \renewcommand\familydefault{\sfdefault}
   \raggedright
-  \ltjsetparameter{xkanjiskip={0.1em}}\relax
+  \ltj@setpar@global
+  \ltjsetxkanjiskip{0.1em}\relax
 \fi
 %    \end{macrocode}
 %