% -----------------------------------------
% Original: jsclasses.dtx
%
-% pLaTeX2ε新ドキュメントクラス
+% pLaTeX2ε新ドキュメントクラス(日本語 TeX 開発コミュニティ版)
+% 原作者:奥村晴彦 <okumura@okumuralab.org>
%
-% これは LaTeX3 Project の classes.dtx と株式会社アスキーの jclasses.dtx
-% に基づいて,もともと奥村晴彦 <okumura@okumuralab.org> により
-% 作成されたものです。
-% 現在は日本語\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
%<*driver>
\ProvidesFile{ltjsclasses.dtx}
%</driver>
- [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}
\addtolength{\marginparwidth}{1in}
\setlength\marginparpush{0pt}
% \OnlyDescription
+\CodelineNumbered
\EnableCrossrefs
\setcounter{StandardModuleDepth}{1}
\GetFileInfo{ltjsclasses.dtx}
-\CodelineNumbered
\begin{document}
\DocInput{ltjsclasses.dtx}
\end{document}
% \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}
%
% \section{Lua\TeX-jaの読み込み}
%
-% まず,Lua\TeX-jaを読み込みます。
+% 和文スケール値を設定した後に,Lua\TeX-jaを読み込みます。
% \begin{macrocode}
+%<!jspf>\def\Cjascale{0.924715}
+%<jspf>\def\Cjascale{0.903375}
\RequirePackage{luatexja}
% \end{macrocode}
%
%
% \begin{macro}{\if@openright}
%
-% |\chapter|ï¼\8c|\part| ã\82\92å¥\87æ\95°ページ起こしにするかどうかです。
-% æ\9b¸ç±\8dã\81§ã\81¯ç\9c\9fã\81\8cæ¨\99æº\96ã\81§す。
+% |\chapter|ï¼\8c|\part| ã\82\92å\8f³ページ起こしにするかどうかです。
+% 横çµ\84ã\81®æ\9b¸ç±\8dã\81§ã\81¯ç\9c\9fã\81\8cæ¨\99æº\96ã\81§ï¼\8cè¦\81ã\81\99ã\82\8bã\81«ç\89\87èµ·ã\81\93ã\81\97ï¼\8cå¥\87æ\95°ã\83\9aã\83¼ã\82¸èµ·ã\81\93ã\81\97ã\81«ã\81ªã\82\8aã\81¾す。
%
% \begin{macrocode}
%<book|report>\newif\if@openright
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\if@openleft}
+%
+% [2017-02-24] |\chapter|,|\part| を左ページ起こしにするかどうかです。
+%
+% \begin{macrocode}
+%<book|report>\newif\if@openleft
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\if@mainmatter}
%
% 真なら本文,偽なら前付け・後付けです。
% 将来どうなるかわからないので\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}
%
%
%
% \paragraph{右左起こし}
%
-% 書籍では章は通常は奇数ページ起こしになりますが,
+% 書籍では章は通常は奇数ページ起こしになりますが,横組ではこれを
+% \texttt{openright} と表すことにしてあります。
% \texttt{openany} で偶数ページからでも始まるようになります。
%
+% [2017-02-24] \texttt{openright} は横組では奇数ページ起こし,縦組では
+% 偶数ページ起こしを表します。ややこしいですが,これは\LaTeX の標準クラスが
+% 西欧の横組事情しか考慮せずに,奇数ページ起こしと右起こしを一緒にしてしまっ
+% たせいです。縦組での奇数ページ起こしと横組での偶数ページ起こしも表現したい
+% ので,ltjsclassesでは新たに \texttt{openleft} も追加しました。
+%
% \begin{macrocode}
-%<book|report>\DeclareOption{openright}{\@openrighttrue}
-%<book|report>\DeclareOption{openany}{\@openrightfalse}
+%<book|report>\DeclareOption{openright}{\@openrighttrue\@openleftfalse}
+%<book|report>\DeclareOption{openleft}{\@openlefttrue\@openrightfalse}
+%<book|report>\DeclareOption{openany}{\@openrightfalse\@openleftfalse}
% \end{macrocode}
%
% \paragraph{eqnarray環境と数式の位置}
% 実際に使用可能な数式ファミリの数を増やすためには\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}{}
+%</article|report|book>
% \end{macrocode}
%
% \paragraph{ドラフト}
%
% [2016-11-24 LTJ] \texttt{autodetect-engine} はLua\TeX-jaでは意味がないので警告を表示させます.
%
+% [2018-07-30 LTJ] \texttt{uplatex} 指定時のエラーが正しく表示されなかったので修正しました.
+%
% \begin{macrocode}
\newif\ifmingoth
\mingothfalse
\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}
%
% [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
%
% [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}{}
-%</!jspf>
-% \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ポイント,
% 和文フォントを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}{}
-%</jspf>
% \end{macrocode}
%
% 和文でイタリック体,斜体,サンセリフ体,
% [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}{}
\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}
%%
% \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}
% パラメータに実際の値を設定します。
% たとえば |\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}
%
% |\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}
% 計算では |\headheight| ではなく |\topskip| を使う
% ことにしました。
%
-%
% [2016-08-17] 圏点やルビが一行目に来た場合に下がるのを防ぐた
% め,|\topskip| を10ptから1.38zwに増やしました。
% |\headheight| は従来と同じ20ptのままとします。
%
% \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}
%
% |\topmargin| は従来の値から変わらないように調節しました。
% …のつもりでしたが,|\textheight| を増やし忘れていたので
% 変わってしまっていました(2016-08-26修正済み)。
+%
% \begin{macrocode}
\setlength\topmargin{\paperheight}
\addtolength\topmargin{-\textheight}
%
% フロート(図,表)関連のパラメータは\LaTeXe 本体で定義されていますが,
% ここで設定変更します。本文ページ(本文とフロートが共存するページ)
-% ちなみに,カウンタは内部では |\c@| を名前に冠したマクロになっています。
% とフロートだけのページで設定が異なります。
+% ちなみに,カウンタは内部では |\c@| を名前に冠したマクロになっています。
%
% \begin{macro}{\c@topnumber}
%
% \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}
+%</article|book|report>
+% \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
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+%
% \section{ページスタイル}\label{sec:pagestyle}
%
% ページスタイルとして,\LaTeXe (欧文版)の標準クラス
% 和文のものでは |\Large| になっていましたが,ここでは |\large|
% にしました。
%
+% [2016-11-16] スペーシングを元の |jsclasses| に合わせるため,|\smallskip| を
+% |\jsc@smallskip| に置き換えました。|\smallskip| のままでは
+% \texttt{nomag(*)} の場合にスケールしなくなり,レイアウトが変わってしまいます。
+%
% \begin{macrocode}
%<*article|book|report|kiyou>
\if@titlepage
\begingroup \@svsechd \endgroup
\unskip
\@tempskipa #1\relax
- \hskip -\@tempskipa\@inhibitglue
+ \hskip -\@tempskipa\ltjfakeparbegin
\else
\clubpenalty \@clubpenalty
\everypar{}%
\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}
%
% ページ番号をローマ数字にし,章番号を付けないようにします。
%
+% [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}
%
% \begin{macrocode}
\newcommand\mainmatter{%
-% \if@openright
- \cleardoublepage
-% \else
-% \clearpage
-% \fi
+ \pltx@cleartooddpage
\@mainmattertrue
\pagenumbering{arabic}}
% \end{macrocode}
%
% \begin{macrocode}
\newcommand\backmatter{%
- \if@openright
+ \if@openleft
+ \cleardoublepage
+ \else\if@openright
\cleardoublepage
\else
\clearpage
- \fi
+ \fi\fi
\@mainmatterfalse}
%</book>
% \end{macrocode}
% \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
%<*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
% \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
% \end{macro}
%
% \begin{macro}{\paragraph}
+% \begin{macro}{\jsParagraphMark}
%
% 見出しの後ろで改行されません。
%
\fi
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\subparagraph}
%
%
% タイトルを独立のページに出力するのに使われます。
%
+% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて,
+% bookクラスでタイトルを必ず奇数ページに送るようにしました。といっても,
+% 横組クラスしかありませんでしたので,従来の挙動は何も変わっていません。
+% また,book以外の場合のページ番号のリセットもコミュニティ版\pLaTeX の
+% 標準クラス2017/02/15に合わせましたが,こちらも片面印刷あるいは
+% 独立のタイトルページを作らないクラスばかりでしたので,従来の挙動は
+% 何も変わらずに済みました。
+%
% \begin{macrocode}
\newenvironment{titlepage}{%
-%<book> \cleardoublepage
+%<book> \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
% \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
\@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{図目次と表目次}
%
% 「注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}
%
% 脚注番号は章ごとにリセットされます。
%
+% [2018-03-11] |\next|などいくつかの内部命令を |\jsc@...| 付きの
+% ユニークな名前にしました。
% \begin{macrocode}
%<book|report>\@addtoreset{footnote}{chapter}
% \end{macrocode}
% 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
\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}
%
% する機能がありますが,|\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
\else
\clubpenalty \@clubpenalty
\everypar{}%
- \fi\@inhibitglue}%
+ \fi\ltjfakeparbegin}%
\if@noitemarg
\@noitemargfalse
\if@nmbrlist
\@nolnerr
\else
\unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
- \inhibitglue\ignorespaces
+ \inhibitglue \ignorespaces
\fi}
% \end{macrocode}
%
%
% [2016-07-14] ロゴの定義は\texttt{jslogo}パッケージに移転しました。
% 後方互換のため,\texttt{jsclasses}ではデフォルトでこれを読み込みます。
-%
% \texttt{nojslogo}オプションが指定されている場合は読み込みません。
%
% [2016-07-21 LTJ] \texttt{jsclasses} とLua\TeX-jaの更新タイミングが一致しない可能性を考慮し,
% \paragraph{今日の日付}
%
% \LaTeX で処理した日付を出力します。
-% |ltjarticle| などと違って,標準を西暦にし,余分な空白が入らないように改良しました。
+% ^^A |jarticle| などと違って,標準を西暦にし,
+% ^^A 余分な空白が入らないように改良しました。
+% ^^A -- 2018年7月以降は |jarticle| なども標準が西暦,
+% ^^A -- 2019年4月以降は余分な空白が入らなくなっています。
% 和暦にするには |\和暦| と書いてください。
+% ちなみにこの文章の作成日は西暦では{\西暦\today}で,
+% 和暦では{\和暦\today}です。
%
% \begin{macro}{\today}
% \begin{macrocode}
\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}
%
% \paragraph{ページ設定}
%
% ページ設定の初期化です。
+% |stfloats|パッケージがシステムにインストールされている場合は、このパッケージを使って
+% \pLaTeX の標準時と同じようにボトムフロートの下に脚注が組まれるようにします。
%
+% [2017-02-19] \pLaTeX とLua\TeX-jaの|\@makecol|が違うことを
+% 考慮していませんでした。
% \begin{macrocode}
%<article>\if@slide \pagestyle{empty} \else \pagestyle{plain} \fi
%<book>\if@report \pagestyle{plain} \else \pagestyle{headings} \fi
%<report|kiyou>\pagestyle{plain}
%<jspf>\pagestyle{headings}
\pagenumbering{arabic}
+\fnfixbottomtrue % 2017-02-19
+\IfFileExists{stfloats.sty}{\RequirePackage{stfloats}\fnbelowfloat}{}
\if@twocolumn
\twocolumn
\sloppy