X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fltjsclasses.dtx;h=f00552dfd81bdfd5c0c834149ba8c75898ed3cec;hb=16d08fad502d01b3f1c2bbef50071547c3b4c3d0;hp=bebadd3a821e1aedc1d281eaf74f6264e8174475;hpb=e4ee0e50d6c2ca7fb2b75208fb6cd08cf185c0dd;p=luatex-ja%2Fluatexja.git diff --git a/src/ltjsclasses.dtx b/src/ltjsclasses.dtx index bebadd3..f00552d 100644 --- a/src/ltjsclasses.dtx +++ b/src/ltjsclasses.dtx @@ -3,29 +3,16 @@ % ----------------------------------------- % Original: jsclasses.dtx % -% pLaTeX2ε新ドキュメントクラス +% pLaTeX2ε新ドキュメントクラス(日本語 TeX 開発コミュニティ版) +% 原作者:奥村晴彦 % -% これは LaTeX3 Project の classes.dtx と株式会社アスキーの jclasses.dtx -% に基づいて,もともと奥村晴彦 により -% 作成されたものです。 -% 現在は日本語\TeX 開発コミュニティにより管理されています。 -% -% [2002-12-19] いろいろなものに収録していただく際にライセンスを明確にする -% 必要が生じてきました。アスキーのものが最近はmodified BSDライセンスになっ -% ていますので,私のものもそれに準じてmodified BSDとすることにします。 -% -% [2016-07-11] abenoriさんによる\texttt{nomag}オプションをマージしました。 -% なお,ソースコードの管理はGitHubで行うことにしました。 -% -% [2016-07-13] 日本語\TeX 開発コミュニティによる管理に移行しました。 -% -% Copyright 1993 1994 1995 1996 1997 1998 1999 +% Copyright 1993-2016 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % % Copyright 1995-1999 ASCII Corporation. % Copyright 1999-2016 Haruhiko Okumura -% Copyright 2016-2017 Japanese TeX Development Community +% Copyright 2016-2018 Japanese TeX Development Community % ----------------------------------------- % % \fi @@ -57,13 +44,27 @@ %<*driver> \ProvidesFile{ltjsclasses.dtx} % - [2017/02/18 ltjsclasses ] + [2019/11/23 ltjsclasses ] %<*driver> \IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{} -\documentclass{ltjsarticle} +\documentclass[disablejfam]{ltjsarticle} \usepackage{hypdoc} \hypersetup{unicode=true} -\usepackage[ipaex,nfssonly]{luatexja-preset} +\begingroup + \suppressfontnotfounderror=1 + \global\font\testfont=file:KozMinPr6N-Regular.otf + \global\font\testfonta=file:HaranoAjiMincho-Regular.otf +\endgroup +\ifx\testfonta\nullfont\ifx\testfont\nullfont + \usepackage[ipaex,nfssonly]{luatexja-preset} +\else + \usepackage[kozuka-pr6n,nfssonly]{luatexja-preset} +\fi\else + \usepackage[haranoaji,nfssonly]{luatexja-preset} +\fi +\let\testfont\undefined\let\testfonta\undefined +\usepackage{unicode-math} +\setmathfont{Latin Modern Math} \ltjsetparameter{alxspmode={`\*,allow}} \ltjsetparameter{alxspmode={`\\,allow}} %%%%\usepackage{unicode-math} @@ -74,10 +75,10 @@ \addtolength{\marginparwidth}{1in} \setlength\marginparpush{0pt} % \OnlyDescription +\CodelineNumbered \EnableCrossrefs \setcounter{StandardModuleDepth}{1} \GetFileInfo{ltjsclasses.dtx} -\CodelineNumbered \begin{document} \DocInput{ltjsclasses.dtx} \end{document} @@ -122,7 +123,8 @@ % \item 標準では\texttt{jfm-ujis.lua}(Lua\TeX-ja標準のメトリック,OTFパッケージのものがベース)を使用します。 % \item \texttt{uplatex}オプション,\texttt{autodetect-engine}オプションを % 削除してあります(前者ではエラーを出すようにしています)。 -% \item \texttt{disablejfam}オプションが無効になっています。もし +% \item \texttt{disablejfam}オプションはクラス側では何もしません(ただLua\TeX-ja本体に +% 渡されるだけです).もし % \begin{quotation} % |! LaTeX Error: Too many math alphabets used in version ****.| % \end{quotation} @@ -193,8 +195,10 @@ % % \section{Lua\TeX-jaの読み込み} % -% まず,Lua\TeX-jaを読み込みます。 +% 和文スケール値を設定した後に,Lua\TeX-jaを読み込みます。 % \begin{macrocode} +%\def\Cjascale{0.924715} +%\def\Cjascale{0.903375} \RequirePackage{luatexja} % \end{macrocode} % @@ -227,14 +231,23 @@ % % \begin{macro}{\if@openright} % -% |\chapter|,|\part| を奇数ページ起こしにするかどうかです。 -% 書籍では真が標準です。 +% |\chapter|,|\part| を右ページ起こしにするかどうかです。 +% 横組の書籍では真が標準で,要するに片起こし,奇数ページ起こしになります。 % % \begin{macrocode} %\newif\if@openright % \end{macrocode} % \end{macro} % +% \begin{macro}{\if@openleft} +% +% [2017-02-24] |\chapter|,|\part| を左ページ起こしにするかどうかです。 +% +% \begin{macrocode} +%\newif\if@openleft +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\if@mainmatter} % % 真なら本文,偽なら前付け・後付けです。 @@ -400,28 +413,20 @@ % 将来どうなるかわからないので\texttt{nomag}で無効化することができるようにしました。 % % \texttt{noxreal},~\texttt{real}は旧来の互換性として今は残してありますが,2017年7月に削除する予定です。 +% +% [2018-01-14] \texttt{noxreal},~\texttt{real} を削除しました.また,内部命令の名称を +% \texttt{jsclasses}に合わせました. +% % \begin{macrocode} -\newif\if@ltjs@mag@xreal -\@ltjs@mag@xrealtrue -\DeclareOption{nomag*}{\@ltjs@mag@xrealtrue} -\DeclareOption{nomag}{\@ltjs@mag@xrealfalse} -\DeclareOption{noxreal}{% - \ClassWarningNoLine{\jsc@clsname}{% - The class option `noxreal' is obsolete. \MessageBreak - Please use the `nomag' option instead}% - \@ltjs@mag@xrealfalse} -\DeclareOption{real}{% - \ClassWarningNoLine{\jsc@clsname}{% - The class option `real' is obsolete. \MessageBreak - Please use the `nomag' option instead}% - \@ltjs@mag@xrealfalse} +\newif\ifjsc@mag@xreal +\jsc@mag@xrealtrue +\DeclareOption{nomag*}{\jsc@mag@xrealtrue} +\DeclareOption{nomag}{\jsc@mag@xrealfalse} \DeclareOption{usemag}{% \ClassWarningNoLine{\jsc@clsname}{% This \jsc@clsname\space cls does not support `usemag'\MessageBreak option, since LuaTeX does not support \string\mag\MessageBreak in pdf output}% - \@ltjs@mag@xrealtrue} - - + \jsc@mag@xrealtrue} % \end{macrocode} % % @@ -495,12 +500,20 @@ % % \paragraph{右左起こし} % -% 書籍では章は通常は奇数ページ起こしになりますが, +% 書籍では章は通常は奇数ページ起こしになりますが,横組ではこれを +% \texttt{openright} と表すことにしてあります。 % \texttt{openany} で偶数ページからでも始まるようになります。 % +% [2017-02-24] \texttt{openright} は横組では奇数ページ起こし,縦組では +% 偶数ページ起こしを表します。ややこしいですが,これは\LaTeX の標準クラスが +% 西欧の横組事情しか考慮せずに,奇数ページ起こしと右起こしを一緒にしてしまっ +% たせいです。縦組での奇数ページ起こしと横組での偶数ページ起こしも表現したい +% ので,ltjsclassesでは新たに \texttt{openleft} も追加しました。 +% % \begin{macrocode} -%\DeclareOption{openright}{\@openrighttrue} -%\DeclareOption{openany}{\@openrightfalse} +%\DeclareOption{openright}{\@openrighttrue\@openleftfalse} +%\DeclareOption{openleft}{\@openlefttrue\@openrightfalse} +%\DeclareOption{openany}{\@openrightfalse\@openleftfalse} % \end{macrocode} % % \paragraph{eqnarray環境と数式の位置} @@ -590,9 +603,15 @@ % 実際に使用可能な数式ファミリの数を増やすためには\texttt{lualatex-math}パッケージを % 読み込む必要があることに注意が必要です。 % +% [2018-10-08 LTJ] Lua\TeX-ja本体が\texttt{disablejfam}オプションをサポートしたので, +% クラスファイルからは削除します. +% +% [2019-08-12 LTJ] ……と思いましたが,``Unused global option(s): [disablejfam]''警告が +% 出てしまいますので,「何もしない」クラスオプションとして形だけ定義します. % \begin{macrocode} -\DeclareOption{disablejfam}{% - \ClassWarningNoLine{\jsc@clsname}{The class option 'disablejfam' is obsolete}} +%<*article|report|book> +\DeclareOption{disablejfam}{} +% % \end{macrocode} % % \paragraph{ドラフト} @@ -619,6 +638,8 @@ % % [2016-11-24 LTJ] \texttt{autodetect-engine} はLua\TeX-jaでは意味がないので警告を表示させます. % +% [2018-07-30 LTJ] \texttt{uplatex} 指定時のエラーが正しく表示されなかったので修正しました. +% % \begin{macrocode} \newif\ifmingoth \mingothfalse @@ -627,11 +648,11 @@ \newif\ifptexjis \ptexjisfalse \DeclareOption{winjis}{% - \ClassWarningNoLine{\jsc@clsname}{The \jsc@clsname\space class does not support `winjis' option}} + \ClassWarningNoLine{\jsc@clsname}{this class does not support `winjis' option}} \DeclareOption{uplatex}{% - \ClassErrorNoLine{\jsc@clsname}{The \jsc@clsname\space class does not support `uplatex' option}} + \ClassError{\jsc@clsname}{this class does not support `uplatex' option}} \DeclareOption{autodetect-engine}{% - \ClassWarningNoLine{\jsc@clsname}{The \jsc@clsname\space class does not support `autodetect-engine' option}} + \ClassWarningNoLine{\jsc@clsname}{this class does not support `autodetect-engine' option}} \DeclareOption{mingoth}{\mingothtrue} \DeclareOption{ptexjis}{\ptexjistrue} \DeclareOption{jis}{\jisfonttrue} @@ -781,14 +802,18 @@ % % [2016-04-04 LTJ] NFSSへのパッチを修正。 % -% [2017-01-23] \LaTeXe\ 2017-01-01以降ではTUエンコーディングが標準なので, +% [2017-01-23 LTJ] \LaTeXe\ 2017-01-01以降ではTUエンコーディングが標準なので, % \texttt{type1cm}パッケージは読み込まないようにしました. % % [2017-02-17 LTJ] |\directlua|中で出力される数字のカテゴリーコードが12になるようにしました. % この保証をしないと例えば\texttt{listings}パッケージで無限ループになります. +% +% [2018-07-02 LTJ] 10ptオプションが指定されており, +% 実際にはオプティカルサイズの補正が不要なときは「|xreal|オプションは指定されなかった」という +% 扱いにしておきます. % \begin{macrocode} -\if@ltjs@mag@xreal -\ifdim\jsc@mpt=\p@\else +\ifjsc@mag@xreal +\ifdim\jsc@mpt=\p@\jsc@mag@xrealfalse\else \expandafter\let\csname OT1/cmr/m/n/10\endcsname\relax \expandafter\let\csname TU/lmr/m/n/10\endcsname\relax \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax @@ -939,26 +964,11 @@ % % [2014-07-26 LTJ] なお,現状のところ,縦組用JFMは\texttt{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.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.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.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}{} -% -% \end{macrocode} +% [2016-03-21 LTJ] 拡大率の計算で1~ptを$1/72.27$インチでなく0.3514\,mmと間違えて扱っていたのを修正。 +% +% [2017-12-31] 和文スケール($1\,\mathrm{zw} \div \hbox{要求サイズ}$)を +% 表す実数値マクロ |\Cjascale| を定義しました。 +% % % これにより,公称10ポイントの和文フォントを0.924715倍したことにより, % 約9.25ポイント, @@ -969,24 +979,27 @@ % 和文フォントをPostScriptの9ポイントにするために, % $0.9*72.27/72 \simeq 0.903375$ 倍します。 % +% [2018-09-23 LTJ] 実際の|\Cjascale|の定義はLua\TeX-jaの読み込み前に移動しました. +% こうすることによって「0.962216倍された和文フォント」という実際には使われない和文フォントを +% 読み込む必要がなくなります. +% +% +% 実際にフォントの再定義を行う部分です. +% +% [2018-09-23 LTJ] |\Cjascale|の設定を前倒ししたことに伴い,実際の再定義は +% \texttt{mingoth}, \texttt{ptexjis}のときしか必要なくなりました. +% % \begin{macrocode} -%<*jspf> \expandafter\let\csname JY3/mc/m/n/10\endcsname\relax \ifmingoth - \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.903375] \ltj@stdmcfont:jfm=min}{} - \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.903375] \ltj@stdgtfont:jfm=min}{} + \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [\Cjascale] \ltj@stdmcfont:jfm=min}{} + \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [\Cjascale] \ltj@stdgtfont:jfm=min}{} \else \ifptexjis - \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.903375] \ltj@stdmcfont:jfm=jis}{} - \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.903375] \ltj@stdgtfont:jfm=jis}{} - \else - \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.903375] \ltj@stdmcfont:jfm=ujis}{} - \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.903375] \ltj@stdgtfont:jfm=ujis}{} + \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [\Cjascale] \ltj@stdmcfont:jfm=jis}{} + \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [\Cjascale] \ltj@stdgtfont:jfm=jis}{} \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}{} -% % \end{macrocode} % % 和文でイタリック体,斜体,サンセリフ体, @@ -1010,9 +1023,14 @@ % [2016-01-30 LTJ] |\rmfamily|, |\sffamily|, |\ttfamily| の再定義をLua\TeX-ja % カーネルに移動させたので,ここでは和文対応にするフラグ |\@ltj@match@family|\ % を有効にさせるだけでよいです。 +% +% [2018-06-09 LTJ] シリーズ|b|は同じ書体の|bx|と等価になるように宣言します。 +% % \begin{macrocode} \DeclareFontShape{JY3}{mc}{bx}{n}{<->ssub*gt/m/n}{} \DeclareFontShape{JY3}{gt}{bx}{n}{<->ssub*gt/m/n}{} +\DeclareFontShape{JY3}{mc}{b}{n}{<->ssub*gt/m/n}{} +\DeclareFontShape{JY3}{mc}{b}{n}{<->ssub*gt/m/n}{} \DeclareFontShape{JY3}{mc}{m}{it}{<->ssub*mc/m/n}{} \DeclareFontShape{JY3}{mc}{m}{sl}{<->ssub*mc/m/n}{} \DeclareFontShape{JY3}{mc}{m}{sc}{<->ssub*mc/m/n}{} @@ -1020,15 +1038,21 @@ \DeclareFontShape{JY3}{gt}{m}{sl}{<->ssub*gt/m/n}{} \DeclareFontShape{JY3}{mc}{bx}{it}{<->ssub*gt/m/n}{} \DeclareFontShape{JY3}{mc}{bx}{sl}{<->ssub*gt/m/n}{} -% \DeclareFontShape{JT3}{mc}{bx}{n}{<->ssub*gt/m/n}{} -% \DeclareFontShape{JT3}{gt}{bx}{n}{<->ssub*gt/m/n}{} -%% \DeclareFontShape{JT3}{mc}{m}{it}{<->ssub*mc/m/n}{} -%% \DeclareFontShape{JT3}{mc}{m}{sl}{<->ssub*mc/m/n}{} -%% \DeclareFontShape{JT3}{mc}{m}{sc}{<->ssub*mc/m/n}{} -%% \DeclareFontShape{JT3}{gt}{m}{it}{<->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}{} +\DeclareFontShape{JY3}{mc}{b}{it}{<->ssub*gt/m/n}{} +\DeclareFontShape{JY3}{mc}{b}{sl}{<->ssub*gt/m/n}{} +\DeclareFontShape{JT3}{mc}{bx}{n}{<->ssub*gt/m/n}{} +\DeclareFontShape{JT3}{gt}{bx}{n}{<->ssub*gt/m/n}{} +\DeclareFontShape{JT3}{mc}{b}{n}{<->ssub*gt/m/n}{} +\DeclareFontShape{JT3}{mc}{b}{n}{<->ssub*gt/m/n}{} +\DeclareFontShape{JT3}{mc}{m}{it}{<->ssub*mc/m/n}{} +\DeclareFontShape{JT3}{mc}{m}{sl}{<->ssub*mc/m/n}{} +\DeclareFontShape{JT3}{mc}{m}{sc}{<->ssub*mc/m/n}{} +\DeclareFontShape{JT3}{gt}{m}{it}{<->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}{} +\DeclareFontShape{JT3}{mc}{b}{it}{<->ssub*gt/m/n}{} +\DeclareFontShape{JT3}{mc}{b}{sl}{<->ssub*gt/m/n}{} \renewcommand\jttdefault{\gtdefault}\@ltj@match@familytrue % \end{macrocode} %% @@ -1038,11 +1062,15 @@ % \texttt{jsclasses}で行われていた |\textmc|, |\textgt| の再定義は不要のように思われます。 % % \texttt{jsclasses.dtx}中で行われていた |\reDeclareMathAlphabet| の再定義は削除。 +% また,Yue ZHANGさん作の\texttt{fixjfm}パッケージ対応のコードもLua\TeX-jaでは削除しています. % % \begin{macrocode} \AtBeginDocument{% - \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc} - \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}}% + \unless\ifltj@disablejfam + \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc} + \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt} + \fi +}% % \end{macrocode} % % \begin{macro}{\textsterling} @@ -1310,13 +1338,18 @@ % パラメータに実際の値を設定します。 % たとえば |\Cwd| は |\normalfont| の全角幅(|1\zw|)です。 % +% [2017-08-31] 基準とする文字を「全角空白」(EUCコード\texttt{0xA1A1})から +% 「漢」(JISコード\texttt{0x3441})へ変更しました。 +% +% [2017-09-19] 内部的に使った |\box0| を空にします。 % \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} @@ -1328,10 +1361,10 @@ % % |\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} @@ -1583,7 +1616,6 @@ % 計算では |\headheight| ではなく |\topskip| を使う % ことにしました。 % -% % [2016-08-17] 圏点やルビが一行目に来た場合に下がるのを防ぐた % め,|\topskip| を10ptから1.38zwに増やしました。 % |\headheight| は従来と同じ20ptのままとします。 @@ -1840,8 +1872,8 @@ % % \begin{macrocode} \def\flushbottom{% - \def\@textbottom{\vskip \z@ \@plus.1\jsc@mpt}% - \let\@texttop\relax} + \def\@textbottom{\vskip \z@ \@plus.1\jsc@mpt}% + \let\@texttop\relax} % \end{macrocode} % \end{macro} % @@ -1920,6 +1952,7 @@ % |\topmargin| は従来の値から変わらないように調節しました。 % …のつもりでしたが,|\textheight| を増やし忘れていたので % 変わってしまっていました(2016-08-26修正済み)。 +% % \begin{macrocode} \setlength\topmargin{\paperheight} \addtolength\topmargin{-\textheight} @@ -1965,8 +1998,8 @@ % % フロート(図,表)関連のパラメータは\LaTeXe 本体で定義されていますが, % ここで設定変更します。本文ページ(本文とフロートが共存するページ) -% ちなみに,カウンタは内部では |\c@| を名前に冠したマクロになっています。 % とフロートだけのページで設定が異なります。 +% ちなみに,カウンタは内部では |\c@| を名前に冠したマクロになっています。 % % \begin{macro}{\c@topnumber} % @@ -2136,6 +2169,65 @@ % \end{macro} % \end{macro} % +% \section{改ページ(日本語\TeX{}開発コミュニティ版のみ)}\label{sec:cleardoublepage} +% +% \begin{macro}{\pltx@cleartorightpage} +% \begin{macro}{\pltx@cleartoleftpage} +% \begin{macro}{\pltx@cleartooddpage} +% \begin{macro}{\pltx@cleartoevenpage} +% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて, +% 同じ命令を追加しました。 +% \begin{enumerate} +% \item|\pltx@cleartorightpage|:右ページになるまでページを繰る命令 +% \item|\pltx@cleartoleftpage|:左ページになるまでページを繰る命令 +% \item|\pltx@cleartooddpage|:奇数ページになるまでページを繰る命令 +% \item|\pltx@cleartoevenpage|:偶数ページになるまでページを繰る命令 +% \end{enumerate} +% となっています。 +% +% \begin{macrocode} +%<*article|book|report> +\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} +\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} +% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて, +% reportとbookクラスの場合に|\cleardoublepage|を再定義します。 +% \begin{macrocode} +%<*book|report> +\if@openleft + \let\cleardoublepage\pltx@cleartoleftpage +\else\if@openright + \let\cleardoublepage\pltx@cleartorightpage +\fi\fi +% +% \end{macrocode} +% \end{macro} +% % \section{ページスタイル}\label{sec:pagestyle} % % ページスタイルとして,\LaTeXe (欧文版)の標準クラス @@ -2420,6 +2512,10 @@ % 和文のものでは |\Large| になっていましたが,ここでは |\large| % にしました。 % +% [2016-11-16] スペーシングを元の |jsclasses| に合わせるため,|\smallskip| を +% |\jsc@smallskip| に置き換えました。|\smallskip| のままでは +% \texttt{nomag(*)} の場合にスケールしなくなり,レイアウトが変わってしまいます。 +% % \begin{macrocode} %<*article|book|report|kiyou> \if@titlepage @@ -2738,7 +2834,7 @@ \begingroup \@svsechd \endgroup \unskip \@tempskipa #1\relax - \hskip -\@tempskipa\@inhibitglue + \hskip -\@tempskipa\ltjfakeparbegin \else \clubpenalty \@clubpenalty \everypar{}% @@ -2751,7 +2847,7 @@ \if@slide {\vskip\if@twocolumn-5\jsc@mpt\else-6\jsc@mpt\fi \maybeblue\hrule height0\jsc@mpt depth1\jsc@mpt - \vskip\if@twocolumn 4\jsc@mpt\else 7\jsc@mpt\fi\relax} + \vskip\if@twocolumn 4\jsc@mpt\else 7\jsc@mpt\fi\relax}% \fi \par % 2000-12-18 \ignorespaces} @@ -2914,14 +3010,19 @@ % % ページ番号をローマ数字にし,章番号を付けないようにします。 % +% [2017-03-05] |\frontmatter| と |\mainmatter| の2つの命令は, +% 改丁または改ページした後で |\pagenumbering{...}| でノンブルを1に +% リセットします。長い間 |\frontmatter| は \texttt{openany} のときに +% 単なる改ページとしていましたが,これではノンブルをリセットする際に +% 偶奇逆転が起こる場合がありました。\texttt{openany} かどうかに依らず +% 奇数ページまで繰るように修正することで,問題を解消しました。 +% 実は,\LaTeX の標準クラスでは1998年に修正されていた問題です +% (コミュニティ版\pLaTeX の標準クラス2017/03/05も参照)。 +% % \begin{macrocode} %<*book> \newcommand\frontmatter{% - \if@openright - \cleardoublepage - \else - \clearpage - \fi + \pltx@cleartooddpage \@mainmatterfalse \pagenumbering{roman}} % \end{macrocode} @@ -2933,11 +3034,7 @@ % % \begin{macrocode} \newcommand\mainmatter{% -% \if@openright - \cleardoublepage -% \else -% \clearpage -% \fi + \pltx@cleartooddpage \@mainmattertrue \pagenumbering{arabic}} % \end{macrocode} @@ -2949,11 +3046,13 @@ % % \begin{macrocode} \newcommand\backmatter{% - \if@openright + \if@openleft + \cleardoublepage + \else\if@openright \cleardoublepage \else \clearpage - \fi + \fi\fi \@mainmatterfalse} % % \end{macrocode} @@ -3003,11 +3102,13 @@ % \begin{macrocode} %<*book|report> \newcommand\part{% - \if@openright + \if@openleft + \cleardoublepage + \else\if@openright \cleardoublepage \else \clearpage - \fi + \fi\fi \thispagestyle{empty}% 欧文用標準スタイルでは plain \if@twocolumn \onecolumn @@ -3123,11 +3224,11 @@ %<*book|report> \def\@endpart{\vfil\newpage \if@twoside - \if@openright %% added (2016/12/13) - \null - \thispagestyle{empty}% - \newpage - \fi %% added (2016/12/13) + \if@openleft %% added (2017/02/24) + \null\thispagestyle{empty}\newpage + \else\if@openright %% added (2016/12/13) + \null\thispagestyle{empty}\newpage + \fi\fi %% added (2016/12/13, 2017/02/24) \fi \if@restonecol \twocolumn @@ -3148,7 +3249,8 @@ % \begin{macrocode} %<*book|report> \newcommand{\chapter}{% - \if@openright\cleardoublepage\else\clearpage\fi + \if@openleft\cleardoublepage\else + \if@openright\cleardoublepage\else\clearpage\fi\fi \plainifnotempty % 元: \thispagestyle{plain} \global\@topnum\z@ \if@english \@afterindentfalse \else \@afterindenttrue \fi @@ -3315,6 +3417,7 @@ % \end{macro} % % \begin{macro}{\paragraph} +% \begin{macro}{\jsParagraphMark} % % 見出しの後ろで改行されません。 % @@ -3343,6 +3446,7 @@ \fi % \end{macrocode} % \end{macro} +% \end{macro} % % \begin{macro}{\subparagraph} % @@ -3826,16 +3930,24 @@ % % タイトルを独立のページに出力するのに使われます。 % +% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて, +% bookクラスでタイトルを必ず奇数ページに送るようにしました。といっても, +% 横組クラスしかありませんでしたので,従来の挙動は何も変わっていません。 +% また,book以外の場合のページ番号のリセットもコミュニティ版\pLaTeX の +% 標準クラス2017/02/15に合わせましたが,こちらも片面印刷あるいは +% 独立のタイトルページを作らないクラスばかりでしたので,従来の挙動は +% 何も変わらずに済みました。 +% % \begin{macrocode} \newenvironment{titlepage}{% -% \cleardoublepage +% \pltx@cleartooddpage %% 2017-02-24 \if@twocolumn \@restonecoltrue\onecolumn \else \@restonecolfalse\newpage \fi \thispagestyle{empty}% - \setcounter{page}\@ne + \ifodd\c@page\setcounter{page}\@ne\else\setcounter{page}\z@\fi }% {\if@restonecol\twocolumn \else \newpage \fi \if@twoside\else @@ -4620,11 +4732,24 @@ % \end{macro} % % \begin{macro}{\@dottedtocline} +% \begin{macro}{\jsTocLine} % % \LaTeX 本体(\texttt{ltsect.dtx} 参照)での定義と同じですが, % |\@tempdima| を |\@lnumwidth| に変えています。 % +% [2018-06-23] デフォルトでは\jsTocLine のようにベースラインになります。\par +% これを変更可能にするため,|\jsTocLine| というマクロに切り出しました。 +% 例えば,仮想ボディの中央 +% {\renewcommand{\jsTocLine}{\leaders \hbox {\hss ・\hss}\hfill}\jsTocLine} +% に変更したい場合は +%\begin{verbatim} +% \renewcommand{\jsTocLine}{\leaders \hbox {\hss ・\hss}\hfill} +%\end{verbatim} +% とします。 +% % \begin{macrocode} +\def\jsTocLine{\leaders\hbox{% + $\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill} \def\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else \vskip \z@ \@plus.2\jsc@mpt {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip @@ -4634,11 +4759,11 @@ \@lnumwidth #3\relax \advance\leftskip \@lnumwidth \null\nobreak\hskip -\leftskip {#4}\nobreak - \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep - mu$}\hfill \nobreak\hb@xt@\@pnumwidth{% + \jsTocLine \nobreak\hb@xt@\@pnumwidth{% \hfil\normalfont \normalcolor #5}\par}\fi} % \end{macrocode} % \end{macro} +% \end{macro} % % \paragraph{図目次と表目次} % @@ -4986,7 +5111,7 @@ % 「注1」の形式にするには次のようにしてください。 % % \begin{macrocode} -% \def\thefootnote{\ifnum\c@footnote>\z@注\kern0.1\zw\@arabic\c@footnote\fi} +% \def\thefootnote{\ifnum\c@footnote>\z@ 注\kern0.1\zw\@arabic\c@footnote\fi} % \end{macrocode} % % \end{macro} @@ -5007,6 +5132,8 @@ % % 脚注番号は章ごとにリセットされます。 % +% [2018-03-11] |\next|などいくつかの内部命令を |\jsc@...| 付きの +% ユニークな名前にしました。 % \begin{macrocode} %\@addtoreset{footnote}{chapter} % \end{macrocode} @@ -5018,6 +5145,8 @@ % Jeremy Gibbons, \textit{\TeX\ and TUG NEWS}, % Vol.~2, No.~4 (1993), p.~9) % +% [2018-03-11] |\next|などいくつかの内部命令を |\jsc@...| 付きの +% ユニークな名前にしました。 % \begin{macrocode} \long\def\@footnotetext{% \insert\footins\bgroup @@ -5032,12 +5161,12 @@ \color@begingroup \@makefntext{% \rule\z@\footnotesep\ignorespaces}% - \futurelet\next\fo@t} -\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t - \else \let\next\f@t\fi \next} -\def\f@@t{\bgroup\aftergroup\@foot\let\next} -\def\f@t#1{#1\@foot} -\def\@foot{\@finalstrut\strutbox\color@endgroup\egroup} + \futurelet\jsc@next\jsc@fo@t} +\def\jsc@fo@t{\ifcat\bgroup\noexpand\jsc@next \let\jsc@next\jsc@f@@t + \else \let\jsc@next\jsc@f@t\fi \jsc@next} +\def\jsc@f@@t{\bgroup\aftergroup\jsc@@foot\let\jsc@next} +\def\jsc@f@t#1{#1\jsc@@foot} +\def\jsc@@foot{\@finalstrut\strutbox\color@endgroup\egroup} % \end{macrocode} % \end{macro} % @@ -5090,10 +5219,13 @@ % する機能がありますが,|\item| 直後ではラベル用のボックスが段落先頭になる % ため,うまく働きませんでした。形を変えて復活させます。 % +% [2017-04-03 LTJ] 従来クラスファイルで定義していた |\@inhibitglue| は, +% Lua\TeX-jaのコアに |\ltjfakeparbegin| として正式に追加されたのでリネームします. +% % |\item| 命令の直後です。 % % \begin{macrocode} -\protected\def\@inhibitglue{\directlua{luatexja.jfmglue.create_beginpar_node()}} +\let\@inhibitglue=\ltjfakeparbegin \def\@item[#1]{% \if@noparitem \@donoparitem @@ -5136,7 +5268,7 @@ \else \clubpenalty \@clubpenalty \everypar{}% - \fi\@inhibitglue}% + \fi\ltjfakeparbegin}% \if@noitemarg \@noitemargfalse \if@nmbrlist @@ -5176,7 +5308,7 @@ \@nolnerr \else \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null - \inhibitglue\ignorespaces + \inhibitglue \ignorespaces \fi} % \end{macrocode} % @@ -5186,7 +5318,6 @@ % % [2016-07-14] ロゴの定義は\texttt{jslogo}パッケージに移転しました。 % 後方互換のため,\texttt{jsclasses}ではデフォルトでこれを読み込みます。 -% % \texttt{nojslogo}オプションが指定されている場合は読み込みません。 % % [2016-07-21 LTJ] \texttt{jsclasses} とLua\TeX-jaの更新タイミングが一致しない可能性を考慮し, @@ -5483,8 +5614,13 @@ % \paragraph{今日の日付} % % \LaTeX で処理した日付を出力します。 -% |ltjarticle| などと違って,標準を西暦にし,余分な空白が入らないように改良しました。 +% ^^A |jarticle| などと違って,標準を西暦にし, +% ^^A 余分な空白が入らないように改良しました。 +% ^^A -- 2018年7月以降は |jarticle| なども標準が西暦, +% ^^A -- 2019年4月以降は余分な空白が入らなくなっています。 % 和暦にするには |\和暦| と書いてください。 +% ちなみにこの文章の作成日は西暦では{\西暦\today}で, +% 和暦では{\和暦\today}です。 % % \begin{macro}{\today} % \begin{macrocode} @@ -5492,23 +5628,42 @@ \def\西暦{\西暦true} \def\和暦{\西暦false} \newcount\heisei \heisei\year \advance\heisei-1988\relax +\def\pltx@today@year@#1{% + \ifnum\numexpr\year-#1=1 元\else + \ifnum\ltjgetparameter{direction}=3 + \kansuji\numexpr\year-#1\relax + \else + \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@english \ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi \space\number\day, \number\year + \else\if西暦 + \ifnum\ltjgetparameter{direction}=3 \kansuji\year + \else\number\year\nobreak\fi 年 \else - \if西暦 - \number\year 年 - \number\month 月 - \number\day 日 - \else - 平成\number\heisei 年 - \number\month 月 - \number\day 日 - \fi - \fi} + \pltx@today@year + \fi + \ifnum\ltjgetparameter{direction}=3 + \kansuji\month 月 + \kansuji\day 日 + \else + \number\month\nobreak 月 + \number\day\nobreak 日 + \fi\fi} % \end{macrocode} % \end{macro} % @@ -5523,13 +5678,19 @@ % \paragraph{ページ設定} % % ページ設定の初期化です。 +% |stfloats|パッケージがシステムにインストールされている場合は、このパッケージを使って +% \pLaTeX の標準時と同じようにボトムフロートの下に脚注が組まれるようにします。 % +% [2017-02-19] \pLaTeX とLua\TeX-jaの|\@makecol|が違うことを +% 考慮していませんでした。 % \begin{macrocode} %
\if@slide \pagestyle{empty} \else \pagestyle{plain} \fi %\if@report \pagestyle{plain} \else \pagestyle{headings} \fi %\pagestyle{plain} %\pagestyle{headings} \pagenumbering{arabic} +\fnfixbottomtrue % 2017-02-19 +\IfFileExists{stfloats.sty}{\RequirePackage{stfloats}\fnbelowfloat}{} \if@twocolumn \twocolumn \sloppy