LuaLATEX-ja 用 jsclasses 互換クラス
LuaTEX-ja プロジェクト
2023/07/26

目次
1

はじめに

2

jsclasses.dtx からの主な変更点 . . . . . . . . . . . . . . . . . . . . . .

2

2

LuaTEX-ja の読み込み

4

3

オプション

4

4

和文フォントの変更

155

フォントサイズ

18

6

レイアウト

23

ページレイアウト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

7

改ページ（日本語 TEX 開発コミュニティ版のみ）

31

8

ページスタイル

32

9

文書のマークアップ

35

1.1

6.1

9.1

表題

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

9.2

章・節 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

9.3

リスト環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

9.4

パラメータの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

9.5

フロート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

9.6

キャプション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

10

フォントコマンド

61

11

相互参照

63

11.1 目次の類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

11.2 参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

681

11.3 索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

11.4 脚注 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

71

12

段落の頭へのグルー挿入禁止73

13

いろいろなロゴ

75

14

初期設定

79

1

はじめに
これは，元々奥村晴彦先生により作成され，現在は日本語 TEX 開発コミュニティにより管理されている jsclasses.dtx を LuaLATEX-ja 用に改変したものです。次のドキュメント
クラス（スタイルファイル）を生成します。

[2017-02-13] forum:2121 の議論を機に，ltjsreport クラスを新設しました。従来の ltjsbookの report オプションと比べると，abstract 環境の使い方および挙動がアスキーの jreportに近づきました。

1.1⟨article⟩ltjsarticle.cls

論文・レポート用⟨book⟩

ltjsbook.cls

書籍用⟨report⟩ltjsreport.cls

レポート用⟨jspf⟩

ltjspf.cls

某学会誌用⟨kiyou⟩ltjskiyou.cls

某紀要用

jsclasses.dtx からの主な変更点

全ての変更点を知りたい場合は，jsclasses.dtx と ltjsclasses.dtx で diff をとって下さい。zw, zh は全て \zw, \zh に置き換えられています。

• フォントメトリック関係のオプション winjis は単に無視されます。
• 標準では jfm-ujis.lua（LuaTEX-ja 標準のメトリック，OTF パッケージのものがベース）を使用します。

• uplatex オプション，autodetect-engine オプションを削除してあります（前者ではエラーを出すようにしています）。

• disablejfam オプションはクラス側では何もしません（ただ LuaTEX-ja 本体に渡されるだけです）。もし! LaTeX Error: Too many math alphabets used in version ****.
のエラーが起こった場合は，lualatex-math パッケージを読み込んでみて下さい。

• papersize オプションの指定に関わらず PDF のページサイズは適切に設定されます。

• LuaTEX-ja 同梱のメトリックを用いる限りは，段落の頭にグルーは挿入されません。
そのため，オリジナルの jsclasses 内にあった hack (\everyparhook) は不要になったので，削除しました。

2•「amsmath との衝突の回避」のコードは，上流で既に対処されているうえ，これがあると grfext.sty を読み込んだ際にエラーを引き起こすので削除しました。

• 本家 jsclasses では \mag を用いて「10 pt 時の組版結果を本文フォントサイズに合
わせ拡大縮小」という方針でしたが，本 ltjsclasses ではそのような方法を取っていません。

– nomag オプション指定時には，単にレイアウトに用いる各種長さの値をスケールさせるだけです。そのため，例えば本文の文字サイズが 17 pt のときには cmr10
でなく cmr17 を用いることになり，組版結果の印象が異なる恐れがあります。

– nomag* オプション指定時には，上記に加えてオプティカルサイズを調整する（本文では cmr17 の代わりに cmr10 を拡大縮小する，など）ため，LATEX のフォン

ト選択システム NFSS へパッチを当てます。こうすることで前項に書いた不具合はなくなりますが，かえって別の不具合が起きる可能性はあります*1 。
標準では nomag* オプションが有効になっています。jsclasses で用意され，かつ既定になっている usemag オプションを指定すると警告を出します。

[2014-02-07 LTJ] jsclasses 2014-02-07 ベースにしました。
[2014-07-26 LTJ] 縦組用和文フォントの設定を加えました。
[2014-12-24 LTJ] \@setfontsize 中の和欧文間空白の設定で if 文が抜けていたのを直しました。

[2016-01-30 LTJ] \rmfamily 他で和文フォントファミリも変更するコードを LuaTEX-ja
カーネル内に移しました。

[2016-03-21 LTJ] LuaTEX beta-0.87.0 では PDF 出力時に \mag が使用できなくなった

ので，ZR さんの bxjscls を参考に使わないように書き換えました。

[2016-03-31 LTJ] xreal オプションを標準で有効にしました。
[2016-07-12 LTJ] jsclasses 開発版に合わせ，real, xreal オプションの名称を変更するなどの変更を行いました。

[2016-07-18 LTJ] usemag オプションが指定されると警告を出すようにしました。
[2016-07-21 LTJ] LATEX 等のロゴの再定義で，jslogo パッケージがあればそちらを読み込むことにしました。

[2016-10-13 LTJ] slide オプションの使用時にエラーが出るのを修正。
以下では実際のコードに即して説明します。
\jsc@clsname 文書クラスの名前です。エラーメッセージ表示などで使われます。
1 %<article>\def\jsc@clsname{ltjsarticle}
2 %<book>\def\jsc@clsname{ltjsbook}
3 %<report>\def\jsc@clsname{ltjsreport}
4 %<jspf>\def\jsc@clsname{ltjspf}
5 %<kiyou>\def\jsc@clsname{ltjskiyou}*1 nomag* は jsclasses でも利用可能ですが，ltjsclasses では jsclasses とは別の実装をしています。

3

2

LuaTEX-ja の読み込み
和文スケール値を設定した後に，LuaTEX-ja を読み込みます。
6 %<!jspf>\def\Cjascale{0.924715}
7 %<jspf>\def\Cjascale{0.903375}
8 \RequirePackage{luatexja}

3

オプション
これらのクラスは \documentclass{ltjsarticle} あるいは \documentclass[オプション]{ltjsarticle} のように呼び出します。
まず，オプションに関連するいくつかのコマンドやスイッチ（論理変数）を定義します。
\if@restonecol 段組のときに真になる論理変数です。
9 \newif\if@restonecol\if@titlepage これを真にすると表題，概要を独立したページに出力します。
10 \newif\if@titlepage\if@openright \chapter，\part を右ページ起こしにするかどうかです。横組の書籍では真が標準で，要するに片起こし，奇数ページ起こしになります。
11 %<book|report>\newif\if@openright\if@openleft [2017-02-24] \chapter，\part を左ページ起こしにするかどうかです。
12 %<book|report>\newif\if@openleft\if@mainmatter 真なら本文，偽なら前付け・後付けです。偽なら \chapter で章番号が出ません。
13 %<book>\newif\if@mainmatter \@mainmattertrue\if@enablejfam 和文フォントを数式フォントとして登録するかどうかを示すスイッチですが，実際には用いられません。
14 \newif\if@enablejfam \@enablejfamtrue

以下で各オプションを宣言します。
■用紙サイズ JIS や ISO の A0 判は面積 1 m2 ，縦横比 1 ∶√

2 の長方形の辺の長さを mm単位に切り捨てたものです。これを基準として順に半截しては mm 単位に切り捨てたもの
が A1，A2，…です。

B 判は JIS と ISO で定義が異なります。JIS では B0 判の面積が 1.5 m2 ですが，ISO で
は B1 判の辺の長さが A0 判と A1 判の辺の長さの幾何平均です。したがって ISO の B0 判
は 1000 mm × 1414 mm です。このため，LATEX 2𝜀 の b5paper は 250 mm × 176 mm ですが，pLATEX 2𝜀 の b5paper は 257 mm × 182 mm になっています。ここでは pLATEX 2𝜀 にならって JIS に従いました。

デフォルトは a4paper です。

4b5var（B5 変形，182mm×230mm），a4var（A4 変形，210mm×283mm）を追加しました。
15 \DeclareOption{a3paper}{%\setlength\paperheight {420mm}%\setlength\paperwidth {297mm}}
18 \DeclareOption{a4paper}{%
19\setlength\paperheight {297mm}%
20\setlength\paperwidth {210mm}}
21 \DeclareOption{a5paper}{%
22\setlength\paperheight {210mm}%
23\setlength\paperwidth {148mm}}
24 \DeclareOption{a6paper}{%
25\setlength\paperheight {148mm}%
26\setlength\paperwidth {105mm}}
27 \DeclareOption{b4paper}{%
28\setlength\paperheight {364mm}%
29\setlength\paperwidth {257mm}}
30 \DeclareOption{b5paper}{%
31\setlength\paperheight {257mm}%
32\setlength\paperwidth {182mm}}
33 \DeclareOption{b6paper}{%
34\setlength\paperheight {182mm}%
35\setlength\paperwidth {128mm}}
36 \DeclareOption{a4j}{%37\setlength\paperheight {297mm}%
38\setlength\paperwidth {210mm}}
39 \DeclareOption{a5j}{%40\setlength\paperheight {210mm}%
41\setlength\paperwidth {148mm}}
42 \DeclareOption{b4j}{%43\setlength\paperheight {364mm}%
44\setlength\paperwidth {257mm}}
45 \DeclareOption{b5j}{%46\setlength\paperheight {257mm}%
47\setlength\paperwidth {182mm}}
48 \DeclareOption{a4var}{%49\setlength\paperheight {283mm}%
50\setlength\paperwidth {210mm}}
51 \DeclareOption{b5var}{%52\setlength\paperheight {230mm}%
53\setlength\paperwidth {182mm}}
54 \DeclareOption{letterpaper}{%
55\setlength\paperheight {11in}%56\setlength\paperwidth {8.5in}}
57 \DeclareOption{legalpaper}{%
58\setlength\paperheight {14in}%59\setlength\paperwidth {8.5in}}
60 \DeclareOption{executivepaper}{%
16
17

5

61
62

\setlength\paperheight {10.5in}%\setlength\paperwidth {7.25in}}■横置き

用紙の縦と横の長さを入れ換えます。

63 \newif\if@landscape64 \@landscapefalse
65 \DeclareOption{landscape}{\@landscapetrue}■slideオプション slide を新設しました。

[2016-10-08] slide オプションは article 以外では使い物にならなかったので，簡単のため article のみで使えるオプションとしました。
66 \newif\if@slide
67 \@slidefalse■サイズオプション

10pt，11pt，12pt のほかに，8pt，9pt，14pt，17pt，21pt，25pt，30pt，36pt，43pt を追加しました。これは等比数列になるように選んだものです（従来の20pt も残しました）。\@ptsize の定義が変だったのでご迷惑をおかけしましたが，標準的なドキュメントクラスと同様にポイント数から 10 を引いたものに直しました。

[2003-03-22] 14Q オプションを追加しました。
[2003-04-18] 12Q オプションを追加しました。
[2016-07-08] \mag を使わずに各種寸法をスケールさせるためのオプション nomag を新設しました。usemag オプションの指定で従来通りの動作となります。デフォルトは usemagです。

[2016-07-24] オプティカルサイズを調整するために NFSS へパッチを当てるオプション
nomag* を新設しました。
68 \def\jsc@magscale{1}69 %<*article>
70 \DeclareOption{slide}{\@slidetrue\def\jsc@magscale{3.583}\@landscapetrue\@titlepagetrue}
71 %</article>
72 \DeclareOption{8pt} {\def\jsc@magscale{0.833}}% 1.2^(-1)
73 \DeclareOption{9pt} {\def\jsc@magscale{0.913}}% 1.2^(-0.5}
74 \DeclareOption{10pt}{\def\jsc@magscale{1}}75 \DeclareOption{11pt}{\def\jsc@magscale{1.095}}% 1.2^0.5
76 \DeclareOption{12pt}{\def\jsc@magscale{1.200}}
77 \DeclareOption{14pt}{\def\jsc@magscale{1.440}}
78 \DeclareOption{17pt}{\def\jsc@magscale{1.728}}
79 \DeclareOption{20pt}{\def\jsc@magscale{2}}80 \DeclareOption{21pt}{\def\jsc@magscale{2.074}}
81 \DeclareOption{25pt}{\def\jsc@magscale{2.488}}
82 \DeclareOption{30pt}{\def\jsc@magscale{2.986}}
83 \DeclareOption{36pt}{\def\jsc@magscale{3.583}}
84 \DeclareOption{43pt}{\def\jsc@magscale{4.300}}
85 \DeclareOption{12Q} {\def\jsc@magscale{0.923}}% 1pt*12Q/13Q
86 \DeclareOption{14Q} {\def\jsc@magscale{1.077}}% 1pt*14Q/13Q
87 \DeclareOption{10ptj}{\def\jsc@magscale{1.085}}% 1pt*10bp/13Q

6

88 \DeclareOption{10.5ptj}{\def\jsc@magscale{1.139}}
89 \DeclareOption{11ptj}{\def\jsc@magscale{1.194}}
90 \DeclareOption{12ptj}{\def\jsc@magscale{1.302}}■オプティカルサイズの補正

nomag* オプション指定時には，本文のフォントサイズが10pt 以外の場合にオプティカルサイズの補正を行うために NFSS にパッチを当てます。現在の ltjsclasses ではこのパッチ当ては標準では行いますが，将来どうなるかわからない
ので nomag で無効化することができるようにしました。

noxreal, real は旧来の互換性として今は残してありますが，2017 年 7 月に削除する予定です。

[2018-01-14] noxreal, real を削除しました。また，内部命令の名称を jsclasses に合わせました。
91 \newif\ifjsc@mag@xreal
92 \jsc@mag@xrealtrue
93 \DeclareOption{nomag*}{\jsc@mag@xrealtrue}
94 \DeclareOption{nomag}{\jsc@mag@xrealfalse}
95 \DeclareOption{usemag}{%
96
97
98
99

\ClassWarningNoLine{\jsc@clsname}{%This \jsc@clsname\space cls does not support `usemag'\MessageBreakoption, since LuaTeX does not support \string\mag\MessageBreak in pdf output}%\jsc@mag@xrealtrue}■トンボオプション

トンボ（crop marks）を出力します。実際の処理は lltjcore.sty

で行います。オプション tombow で日付付きのトンボ，オプション tombo で日付なしのトンボを出力します。これらはアスキー版のままです。カウンタ \hour， \minute はluatexja-compat.sty で宣言されています。
100 \hour\time \divide\hour by 60\relax
101 \@tempcnta\hour \multiply\@tempcnta 60\relax
102 \minute\time \advance\minute-\@tempcnta
103 \DeclareOption{tombow}{%\tombowtrue \tombowdatetrue
105\setlength{\@tombowwidth}{.1\p@}%106\@bannertoken{%107\jobname\space(\number\year-\two@digits\month-\two@digits\day108\space\two@digits\hour:\two@digits\minute)}%109\maketombowbox}
110 \DeclareOption{tombo}{%111\tombowtrue \tombowdatefalse
112\setlength{\@tombowwidth}{.1\p@}%113\maketombowbox}
104

■面付け

オプション mentuke で幅ゼロのトンボを出力します。面付けに便利です。これもアスキー版のままです。
114 \DeclareOption{mentuke}{%115\tombowtrue \tombowdatefalse

7

116
117

\setlength{\@tombowwidth}{\z@}%\maketombowbox}■両面，片面オプション

twoside で奇数ページ・偶数ページのレイアウトが変わります。

[2003-04-29] vartwoside でどちらのページも傍注が右側になります。
118 \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
119 \DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
120 \DeclareOption{vartwoside}{\@twosidetrue \@mparswitchfalse}■二段組

twocolumn で二段組になります。

121 \DeclareOption{onecolumn}{\@twocolumnfalse}
122 \DeclareOption{twocolumn}{\@twocolumntrue}■表題ページ

titlepage で表題・概要を独立したページに出力します。

123 \DeclareOption{titlepage}{\@titlepagetrue}
124 \DeclareOption{notitlepage}{\@titlepagefalse}■右左起こし書籍では章は通常は奇数ページ起こしになりますが，横組ではこれをopenright と表すことにしてあります。openany で偶数ページからでも始まるようになります。

[2017-02-24] openright は横組では奇数ページ起こし，縦組では偶数ページ起こしを表します。ややこしいですが，これは LATEX の標準クラスが西欧の横組事情しか考慮せずに，
奇数ページ起こしと右起こしを一緒にしてしまったせいです。縦組での奇数ページ起こしと横組での偶数ページ起こしも表現したいので，ltjsclasses では新たに openleft も追加しました。
125 %<book|report>\DeclareOption{openright}{\@openrighttrue\@openleftfalse}
126 %<book|report>\DeclareOption{openleft}{\@openlefttrue\@openrightfalse}
127 %<book|report>\DeclareOption{openany}{\@openrightfalse\@openleftfalse}■eqnarray 環境と数式の位置 森本さんのご教示にしたがって前に移動しました。
eqnarray (env.) LATEX の eqnarray 環境では & でできるアキが大きすぎるようですので，少し小さくしま

す。また，中央の要素も \displaystyle にします。
128 \def\eqnarray{%
129
130
131
132
133
134
135
136
137
138
139
140

\stepcounter{equation}%\def\@currentlabel{\p@equation\theequation}%\global\@eqnswtrue\m@th\global\@eqcnt\z@\tabskip\@centering\let\\\@eqncr$$\everycr{}\halign to\displaywidth\bgroup\hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel&\global\@eqcnt\@ne \hfil$\displaystyle{{}##{}}$\hfil&\global\@eqcnt\tw@ $\displaystyle{##}$\hfil\tabskip\@centering&\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup

8

141
142

\tabskip\z@skip\cr}

leqno で数式番号が左側になります。fleqn で数式が本文左端から一定距離のところに出力されます。森本さんにしたがって訂正しました。
143 \DeclareOption{leqno}{\input{leqno.clo}}
144 \DeclareOption{fleqn}{\input{fleqn.clo}%
145 % fleqn 用の eqnarray 環境の再定義
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

\def\eqnarray{%\stepcounter{equation}%\def\@currentlabel{\p@equation\theequation}%\global\@eqnswtrue\m@th\global\@eqcnt\z@\tabskip\mathindent\let\\=\@eqncr\setlength\abovedisplayskip{\topsep}%\ifvmode\addtolength\abovedisplayskip{\partopsep}%\fi\addtolength\abovedisplayskip{\parskip}%\setlength\belowdisplayskip{\abovedisplayskip}%\setlength\belowdisplayshortskip{\abovedisplayskip}%\setlength\abovedisplayshortskip{\abovedisplayskip}%$$\everycr{}\halign to\linewidth% $$\bgroup\hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel&\global\@eqcnt\@ne \hfil$\displaystyle{{}##{}}$\hfil&\global\@eqcnt\tw@$\displaystyle{##}$\hfil \tabskip\@centering&\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup\tabskip\z@skip\cr}}■文献リスト

文献リストを open 形式（著者名や書名の後に改行が入る）で出力します。

これは使われることはないのでコメントアウトしてあります。
170 % \DeclareOption{openbib}{%
171 %
172 %
173 %
174 %
175 %
176 %
177 %

\AtEndOfPackage{%\renewcommand\@openbib@code{%\advance\leftmargin\bibindent\itemindent -\bibindent\listparindent \itemindent\parsep \z@}%\renewcommand\newblock{\par}}}■数式フォントとして和文フォントを登録しないオプション pTEX では数式中では 16 通りのフォントしか使えませんでしたが，LuaTEX では Omega 拡張が取り込まれていて 256 通りのフォントが使えます。ただし，LATEX 2𝜀 カーネルでは未だに数式ファミリの数は 16 個に9制限されているので，実際に使用可能な数式ファミリの数を増やすためには lualatex-math
パッケージを読み込む必要があることに注意が必要です。

[2018-10-08 LTJ] LuaTEX-ja 本体が disablejfam オプションをサポートしたので，クラスファイルからは削除します。

[2019-08-12 LTJ] ……と思いましたが，“Unused global option(s): [disablejfam]” 警告が出てしまいますので，「何もしない」クラスオプションとして形だけ定義します。
178 %<*article|report|book>179 \DeclareOption{disablejfam}{}
180 %</article|report|book>■ドラフト

draft で overfull box の起きた行末に 5pt の罫線を引きます。

[2016-07-13] \ifdraft を定義するのをやめました。
181 \DeclareOption{draft}{\setlength\overfullrule{5pt}}
182 \DeclareOption{final}{\setlength\overfullrule{0pt}}■和文フォントメトリックの選択

ここでは OTF パッケージのメトリックを元とした，

jfm-ujis.lua メトリックを標準で使います。古い min10，goth10 互換のメトリックを使いたいときは mingoth というオプションを指定します。pTEX でよく利用される jis フォ
ントメトリックと互換のメトリックを使いたい場合は，ptexjis というオプションを指定します。winjis メトリックは用済みのため，winjis オプションは無視されます。

[2016-11-09] pLaTeX / upLaTeX を自動判別するオプション autodetect-engine を新設しました。

[2016-11-24 LTJ] autodetect-engine は LuaTEX-ja では意味がないので警告を表示させます。

[2018-07-30 LTJ] uplatex 指定時のエラーが正しく表示されなかったので修正しました。
183 \newif\ifmingoth
184 \mingothfalse
185 \newif\ifjisfont
186 \jisfontfalse
187 \newif\ifptexjis
188 \ptexjisfalse
189 \DeclareOption{winjis}{%\ClassWarningNoLine{\jsc@clsname}{this class does not support `winjis' option}}
191 \DeclareOption{uplatex}{%
192\ClassError{\jsc@clsname}{this class does not support `uplatex' option}}
193 \DeclareOption{autodetect-engine}{%194\ClassWarningNoLine{\jsc@clsname}{this class does not support `autodetectengine' option}}
195 \DeclareOption{mingoth}{\mingothtrue}
196 \DeclareOption{ptexjis}{\ptexjistrue}
197 \DeclareOption{jis}{\jisfonttrue}
190■papersize スペシャルの利用

ltjsclasses では papersize オプションの有無に関わらず，PDF のページサイズは適切に設定されるので，削除しました。

10

■英語化

オプション english を新設しました。

198 \newif\if@english
199 \@englishfalse
200 \DeclareOption{english}{\@englishtrue}■ltjsbook を ltjsreport もどきに オプション report を新設しました。

[2017-02-13] 従来は「ltjsreport 相当」を ltjsbook の report オプションで提供していましたが，新しく ltjsreport クラスも作りました。どちらでもお好きな方を使ってください。
201 %<*book>202 \newif\if@report203 \@reportfalse
204 \DeclareOption{report}{\@reporttrue\@openrightfalse\@twosidefalse\@mparswitchfalse}
205 %</book>■jslogo パッケージの読み込み

LATEX 関連のロゴを再定義する jslogo パッケージを読み込まないオプション nojslogo を新設しました。jslogo オプションの指定で従来どおりの動作となります。デフォルトは jslogo で，すなわちパッケージを読み込みます。
206 \newif\if@jslogo \@jslogotrue
207 \DeclareOption{jslogo}{\@jslogotrue}
208 \DeclareOption{nojslogo}{\@jslogofalse}■オ プ シ ョ ン の 実 行

デ フ ォ ル ト の オ プ シ ョ ン を 実 行 し ま す。 multicols や url を\RequirePackage するのはやめました。
209 %<article>\ExecuteOptions{a4paper,oneside,onecolumn,notitlepage,final}
210 %<book>\ExecuteOptions{a4paper,twoside,onecolumn,titlepage,openright,final}
211 %<report>\ExecuteOptions{a4paper,oneside,onecolumn,titlepage,openany,final}
212 %<jspf>\ExecuteOptions{a4paper,twoside,twocolumn,notitlepage,fleqn,final}
213 %<kiyou>\ExecuteOptions{a4paper,twoside,twocolumn,notitlepage,final}
214 \ProcessOptions

後処理
215 \if@slide
216\def\maybeblue{\@ifundefined{ver@color.sty}{}{\color{blue}}}

217 \fi
218 \if@landscape\setlength\@tempdima {\paperheight}\setlength\paperheight{\paperwidth}
221\setlength\paperwidth {\@tempdima}222 \fi219
220■基準となる行送り\n@baseline 基準となる行送りをポイント単位で表したものです。
223 %<article|book|report>\if@slide\def\n@baseline{13}\else\def\n@baseline{16}\fi
224 %<jspf>\def\n@baseline{14.554375}
225 %<kiyou>\def\n@baseline{14.897}

11■拡大率の設定 サイズの変更は TEX のプリミティブ \mag を使って行います。9 ポイントについては行送りも若干縮めました。サイズについては全面的に見直しました。

[2008-12-26] 1000 / \mag に相当する \inv@mag を定義しました。truein を使っていたところを \inv@mag in に直しましたので，geometry パッケージと共存できると思います。
なお，新ドキュメントクラス側で 10pt 以外にする場合の注意：• geometry 側でオプション truedimen を指定してください。
• geometry 側でオプション mag は使えません。
[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 を設定するようにしました。

[2016-07-08] \jsc@mpt および \jsc@mmm に，それぞれ 1pt および 1mm を拡大させた値を格納します。以降のレイアウト指定ではこちらを使います。

[2016-07-12 LTJ] \ltjs@... を本家に合わせて \jsc@... に名称変更しました。
226 %<*kiyou>
227 \def\jsc@magscale{0.9769230}
228 %</kiyou>
229 \newdimen\jsc@mpt
230 \newdimen\jsc@mmm
231 \jsc@mpt=\jsc@magscale\p@232 \jsc@mmm=\jsc@magscale mm
233 \ifdim\jsc@mpt<.92\p@ % 8pt, 9pt 指定時\def\n@baseline{15}%235 \fi
236 \newcommand{\@ptsize}{0}237 \ifdim\jsc@mpt=1.0954\p@ \renewcommand{\@ptsize}{1}\else
238 \ifdim\jsc@mpt=1.2\p@\renewcommand{\@ptsize}{2}\else
239 \renewcommand{\@ptsize}{-20}\fi\fi234■オプティカルサイズの補正[2016-03-26 LTJ] xreal オプションの指定時には， bxjscls の magstyle=xreal オプ
ションのように，オプティカルの補正を行うために NFSS にパッチを当てます。パッチは，
概ね misc さんによる「js*.cls 同様の文字サイズ設定を \mag によらずに行う方法：試案」(http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/28416.html) の方法に沿っていますが，拡大/縮小するところの計算には Lua を用いています。
なお，TEX 内部で長さは sp 単位の整数倍で表現されているので，数 sp の誤差は仕方がないです。そのため，事前に type1cm パッケージを読みこんでおきます。

[2016-03-28 LTJ] \luafunction を使うようにし，また本文のフォントサイズが 10 pt のときには（不要なので）パッチを当てないことにしました。

12[2016-04-04 LTJ] NFSS へのパッチを修正。
[2017-01-23 LTJ] LATEX 2𝜀 2017-01-01 以降では TU エンコーディングが標準なので，
type1cm パッケージは読み込まないようにしました。
[2017-02-17 LTJ] \directlua 中で出力される数字のカテゴリーコードが 12 になるようにしました。この保証をしないと例えば listings パッケージで無限ループになります。

[2018-07-02 LTJ] 10pt オプションが指定されており，実際にはオプティカルサイズの補正が不要なときは「xreal オプションは指定されなかった」という扱いにしておきます。
240 \ifjsc@mag@xreal
241 \ifdim\jsc@mpt=\p@\jsc@mag@xrealfalse\else
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279

\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\newluafunction\ltjs@@magnify@font@calc\begingroup\catcode`\%=12\relax\directlua{
local getdimen, mpt=tex.getdimen, tex.getdimen('jsc@mpt')/65536
local floor, cnt_dimen_at = math.floor, luatexbase.registernumber 'dimen@'
local print_scaled, sprint = luatexja.print_scaled, tex.sprint
local t = lua.get_functions_table()t[\the\ltjs@@magnify@font@calc] = function()sprint(-2,floor(0.5+mpt*getdimen(cnt_dimen_at)))end
function luatexja.ltjs_unmagnify_fsize(a)local s = print_scaled(floor(0.5+a/mpt*65536))
sprint(-2, (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(-2,math.floor(0.5+\jsc@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

13

\expandafter\endgroup\@tempa}
282 \fi\fi
280
281[2016-11-16] latex.ltx (ltspace.dtx) で 定 義 さ れ て い る \smallskip の， 単 位 pt を\jsc@mpt に置き換えた \jsc@smallskip を定義します。これは \maketitle で用いられます。\jsc@medskip と \jsc@bigskip は必要ないのでコメントアウトしています。
\jsc@smallskip\jsc@medskip\jsc@bigskip

283 \def\jsc@smallskip{\vspace\jsc@smallskipamount}
284 %\def\jsc@medskip{\vspace\jsc@medskipamount}
285 %\def\jsc@bigskip{\vspace\jsc@bigskipamount}\jsc@smallskipamount\jsc@medskipamount\jsc@bigskipamount286 \newskip\jsc@smallskipamount287 \jsc@smallskipamount=3\jsc@mpt plus 1\jsc@mpt minus 1\jsc@mpt
288 %\newskip\jsc@medskipamount
289 %\jsc@medskipamount =6\jsc@mpt plus 2\jsc@mpt minus 2\jsc@mpt
290 %\newskip\jsc@bigskipamount
291 %\jsc@bigskipamoun =12\jsc@mpt plus 4\jsc@mpt minus 4\jsc@mpt■PDF の用紙サイズの設定\pagewidth 出力の PDF の用紙サイズをここで設定しておきます。tombow が真のときは 2 インチ足し\pageheight ておきます。
\stockwidth[2015-10-18 LTJ] LuaTEX 0.81.0 ではプリミティブの名称変更がされたので，それに合\stockheight わせておきます。

[2016-07-12 LTJ] luatex.def が新しくなったことに対応する aminophen さんのパッチを取り込みました。

[2017-01-11] ト ン ボ オ プ シ ョ ン が 指 定 さ れ て い る と き 「だ け」 \stockwidth，\stockheight を定義するようにしました。
[2022-09-12 LTJ] LATEX 2𝜀 カーネルに \stockwidth、\stockheight が追加されるようですので、クラスファイル側では未定義のときのみこれらの長さ変数を定義します。h20y6m
さん、ありがとうございます。
292 \iftombow
293
294
295
296
297
298
299
300
301
302
303

\ifdefined\stockwidth\else\newlength{\stockwidth}\fi\ifdefined\stockheight\else\newlength{\stockheight}\fi\setlength{\stockwidth}{\paperwidth}\setlength{\stockheight}{\paperheight}\advance \stockwidth 2in\advance \stockheight 2in\ifdefined\pdfpagewidth\setlength{\pdfpagewidth}{\stockwidth}\setlength{\pdfpageheight}{\stockheight}\else\setlength{\pagewidth}{\stockwidth}14\setlength{\pageheight}{\stockheight}\fi
306 \else
307\ifdefined\pdfpagewidth308\setlength{\pdfpagewidth}{\paperwidth}309\setlength{\pdfpageheight}{\paperheight}
310
\else
311
\setlength{\pagewidth}{\paperwidth}
312\setlength{\pageheight}{\paperheight}
313\fi
314 \fi
304
305

4

和文フォントの変更
JIS の 1 ポイントは 0.3514mm （約 1/72.28 インチ），PostScript の 1 ポイントは 1/72

インチですが，TEX では 1/72.27 インチを 1pt（ポイント），1/72 インチを 1bp（ビッグポ

イント）と表します。QuarkXPress などの DTP ソフトは標準で 1/72 インチを 1 ポイントとしますが，以下ではすべて 1/72.27 インチを 1pt としています。 1 インチは定義により25.4mm です。
pTEX （アスキーが日本語化した TEX）では，例えば従来のフォントメトリック min10
や JIS フォントメトリックでは「公称 10 ポイントの和文フォントは，実際には 9.62216pt
で出力される（メトリック側で 0.962216 倍される）」という仕様になっています。一方，

LuaTEX-ja の提供するメトリックでは，そのようなことはありません。公称 10 ポイントの和文フォントは，10 ポイントで出力されます。
この ltjsclasses でも，派生元の jsclasses と同じように，この公称 10 ポイントのフォントをここでは 13 級に縮小して使うことにします。そのためには，13 Q/10 pt ≃ 0.924715
倍すればいいことになります。

\ltj@stdmcfont, \ltj@stdgtfont による，デフォルトで使われる明朝・ゴシックのフォントの設定に対応しました。この 2 つの命令の値はユーザが日々の利用でその都度指定する
ものではありません。

[2014-07-26 LTJ] なお，現状のところ，縦組用 JFM は jfm-ujisv.lua しか準備していません。

[2016-03-21 LTJ] 拡大率の計算で 1 pt を 1/72.27 インチでなく 0.3514 mm と間違えて扱っていたのを修正。

[2017-12-31] 和文スケール（1 zw ÷ 要求サイズ）を表す実数値マクロ \Cjascale を定義しました。

[2020-05-30] \ltj@stdmcfont の説明に古い記述があったので修正。
これにより，公称 10 ポイントの和文フォントを 0.924715 倍したことにより，約 9.25 ポ
イント，DTP で使う単位（1/72 インチ）では 9.21 ポイントということになり，公称 10 ポ
イントといっても実は 9 ポイント強になります。
某学会誌では，和文フォントを PostScript の 9 ポイントにするために，0.9 ∗ 72.27/72 ≃15

0.903375 倍します。
[2018-09-23 LTJ] 実際の \Cjascale の定義は LuaTEX-ja の読み込み前に移動しました。

こうすることによって「0.962216 倍された和文フォント」という実際には使われない和文
フォントを読み込む必要がなくなります。
実際にフォントの再定義を行う部分です。

[2018-09-23 LTJ] \Cjascale の設定を前倒ししたことに伴い，実際の再定義は mingoth,ptexjis のときしか必要なくなりました。
[2022-04-11 LTJ] kern feature を無効にするのを忘れていました．
315 \expandafter\let\csname JY3/mc/m/n/10\endcsname\relax
316 \ifmingoth\DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [\Cjascale] \ltj@stdmcfont:kern;jfm=min}{}318\DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [\Cjascale] \ltj@stdgtfont:kern;jfm=min}{}319 \else
320\ifptexjis
321\DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [\Cjascale] \ltj@stdmcfont:kern;jfm=jis}{}322\DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [\Cjascale] \ltj@stdgtfont:kern;jfm=jis}{}323\fi
324 \fi317

和文でイタリック体，斜体，サンセリフ体，タイプライタ体の代わりにゴシック体を使うことにします。

[2014-03-25 LTJ] タイプライタ体に合わせるファミリを \jttdefault とし，通常のゴシック体と別にできるようにしました。\jttdefault は，標準で \gtdefault と定義しています。

[2003-03-16] イタリック体，斜体について，和文でゴシックを当てていましたが，数学の定理環境などで多量のイタリック体を使うことがあり，ゴシックにすると黒々となってしまうという弊害がありました。 amsthm を使わない場合は定理の本文が明朝になるように\newtheorem 環境を手直ししてしのいでいましたが，TEX が数学で多用されることを考えると，イタリック体に明朝体を当てたほうがいいように思えてきましたので，イタリック体・斜体に対応する和文を明朝体に変えることにしました。

[2004-11-03] \rmfamily も和文対応にしました。
[2016-01-30 LTJ] \rmfamily, \sffamily, \ttfamily の再定義を LuaTEX-ja カーネルに移動させたので，ここでは和文対応にするフラグ \@ltj@match@family を有効にさせるだけでよいです。

[2018-06-09 LTJ] シリーズ b は同じ書体の bx と等価になるように宣言します。
325 \DeclareFontShape{JY3}{mc}{bx}{n}{<->ssub*gt/m/n}{}326 \DeclareFontShape{JY3}{gt}{bx}{n}{<->ssub*gt/m/n}{}327 \DeclareFontShape{JY3}{mc}{b}{n}{<->ssub*gt/m/n}{}328 \DeclareFontShape{JY3}{mc}{b}{n}{<->ssub*gt/m/n}{}329 \DeclareFontShape{JY3}{mc}{m}{it}{<->ssub*mc/m/n}{}16

330 \DeclareFontShape{JY3}{mc}{m}{sl}{<->ssub*mc/m/n}{}331 \DeclareFontShape{JY3}{mc}{m}{sc}{<->ssub*mc/m/n}{}332 \DeclareFontShape{JY3}{gt}{m}{it}{<->ssub*gt/m/n}{}333 \DeclareFontShape{JY3}{gt}{m}{sl}{<->ssub*gt/m/n}{}334 \DeclareFontShape{JY3}{mc}{bx}{it}{<->ssub*gt/m/n}{}335 \DeclareFontShape{JY3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}336 \DeclareFontShape{JY3}{mc}{b}{it}{<->ssub*gt/m/n}{}337 \DeclareFontShape{JY3}{mc}{b}{sl}{<->ssub*gt/m/n}{}338 \DeclareFontShape{JT3}{mc}{bx}{n}{<->ssub*gt/m/n}{}339 \DeclareFontShape{JT3}{gt}{bx}{n}{<->ssub*gt/m/n}{}340 \DeclareFontShape{JT3}{mc}{b}{n}{<->ssub*gt/m/n}{}341 \DeclareFontShape{JT3}{mc}{b}{n}{<->ssub*gt/m/n}{}342 \DeclareFontShape{JT3}{mc}{m}{it}{<->ssub*mc/m/n}{}343 \DeclareFontShape{JT3}{mc}{m}{sl}{<->ssub*mc/m/n}{}344 \DeclareFontShape{JT3}{mc}{m}{sc}{<->ssub*mc/m/n}{}345 \DeclareFontShape{JT3}{gt}{m}{it}{<->ssub*gt/m/n}{}346 \DeclareFontShape{JT3}{gt}{m}{sl}{<->ssub*gt/m/n}{}347 \DeclareFontShape{JT3}{mc}{bx}{it}{<->ssub*gt/m/n}{}348 \DeclareFontShape{JT3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}349 \DeclareFontShape{JT3}{mc}{b}{it}{<->ssub*gt/m/n}{}350 \DeclareFontShape{JT3}{mc}{b}{sl}{<->ssub*gt/m/n}{}351 \renewcommand\jttdefault{\gtdefault}\@ltj@match@familytrue

LuaTEX-ja では和文組版に伴うグルーはノードベースで挿入するようになり，また欧文・和文間のグルーとイタリック補正は干渉しないようになりました。まだ「和文の斜体」については LuaLATEX カーネル側でまともな対応がされていませんが，jsclasses で行われていた \textmc, \textgt の再定義は不要のように思われます。

jsclasses.dtx 中で行われていた \reDeclareMathAlphabet の再定義は削除。また，
Yue ZHANG さん作の fixjfm パッケージ対応のコードも LuaTEX-ja では削除しています。
352 \AtBeginDocument{%
353
354
355
356

\unless\ifltj@disablejfam\reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}\reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}\fi357 }%\textsterling これは \pounds 命令で実際に呼び出される文字です。従来からの OT1 エンコーディング

では \$ のイタリック体が \pounds なので cmti が使われていましたが，1994 年春からは

cmu（upright italic，直立イタリック体）に変わりました。しかし cmu はその性格からして実験的なものであり，\pounds 以外で使われるとは思えないので，ここでは cmti に戻してしまいます。

[2003-08-20] Computer Modern フォントを使う機会も減り，T1 エンコーディングが一般的になってきました。この定義はもうあまり意味がないので消します。
358 % \DeclareTextCommand{\textsterling}{OT1}{{\itshape\char`\$}}

アスキーの kinsoku.dtx では「’ 」「“」「”」前後のペナルティが 5000 になっていたので，

jsclasses.dtx ではそれを 10000 に補正していました。しかし，LuaTEX-ja では最初から
17

これらのパラメータは 10000 なので，もはや補正する必要はありません。
「TEX！」「〒515」の記号と数字の間に四分アキが入らないようにします。
359 \ltjsetparameter{jaxspmode={`！,2}}360 \ltjsetparameter{jaxspmode={`〒,1}}「C や C++ では……」と書くと，C++ の直後に四分アキが入らないのでバランスが悪くなります。四分アキが入るようにしました。% の両側も同じです。
361 \ltjsetparameter{alxspmode={`+,3}}362 \ltjsetparameter{alxspmode={`\%,3}}

jsclasses.dtx では 80〜ff の文字の \xspcode を全て 3 にしていましたが，LuaTEX-ja
では同様の内容が最初から設定されていますので，対応する部分は削除。
\@ 欧文といえば， LATEX の \def\@{\spacefactor\@m} という定義（\@m は 1000）では

I watch TV\@. と書くと V とピリオドのペアカーニングが効かなくなります。そこで，次のような定義に直し，I watch TV.\@ と書くことにします。

[2016-07-14] 2015-01-01 の LATEX で，auxiliary files に書き出されたときにスペースが食われないようにする修正が入りました。これに合わせて {} を補いました。
363 \def\@{\spacefactor3000{}}

5

フォントサイズ
フォントサイズを変える命令（\normalsize，\small など）の実際の挙動の設定は，三つの引数をとる命令 \@setfontsize を使って，たとえば\@setfontsize{\normalsize}{10}{16}のようにして行います。これは\normalsize は 10 ポイントのフォントを使い，行送りは 16 ポイントであるという意味です。ただし，処理を速くするため，以下では 10 と同義の LATEX の内部命令\@xpt を使っています。この \@xpt の類は次のものがあり， LATEX 本体で定義されてい
ます。
\@vpt
\@viiipt\@xipt5
8
10.95\@vipt\@ixpt\@xiipt

6912\@viipt\@xpt\@xivpt

710
14.4\@setfontsize ここでは \@setfontsize の定義を少々変更して，段落の字下げ \parindent，和文文字間のスペース kanjiskip，和文・欧文間のスペース xkanjiskip を変更しています。

kanjiskip は ltj-latex.sty で 0pt plus 0.4pt minus 0.5pt に設定していますが，これはそもそも文字サイズの変更に応じて変わるべきものです。それに，プラスになったり
マイナスになったりするのは，追い出しと追い込みの混在が生じ，統一性を欠きます。なるべく追い出しになるようにプラスの値だけにしたいところですが，ごくわずかなマイナスは許すことにしました。

18

xkanjiskip については，四分つまり全角の 1/4 を標準として，追い出すために三分ある
いは二分まで延ばすのが一般的ですが，ここでは Times や Palatino のスペースがほぼ四分であることに着目して，これに一致させています。これなら書くときにスペースを空けても空けなくても同じ出力になります。

\parindent については，0（以下）でなければ全角幅（1\zw）に直します。
[2008-02-18] english オプションで \parindent を 1em にしました。
[2014-05-14 LTJ] \ltjsetparameter の実行は時間がかかるので，\ltjsetkanjiskipと \ltjsetxkanjiskip（両者とも，実行前には \ltj@setpar@global の実行が必要）にしました。

[2014-12-24 LTJ] jsclasses では，\@setfontsize 中で xkanjiskip を設定するのは現在の和欧文間空白の自然長が正の場合だけでした。ltjsclasses では最初からこの判定が抜けてしまっていたので，復活させます。
364 \def\@setfontsize#1#2#3{%
365 % \@nomath#1%
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386

\ifx\protect\@typeset@protect\let\@currsize#1%\fi\fontsize{#2}{#3}\selectfont\ifdim\parindent>\z@\if@english\parindent=1em\else\parindent=1\zw\fi\fi\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}

\jsc@setfontsize クラスファイルの内部では，拡大率も考慮した \jsc@setfontsize を \@setfontsize の変わりに用いることにします。
387 \def\jsc@setfontsize#1#2#3{%
388\@setfontsize#1{#2\jsc@mpt}{#3\jsc@mpt}}

これらのグルーをもってしても行分割ができない場合は， \emergencystretch に訴えます。
389 \emergencystretch 3\zw

\ifnarrowbaselines 欧文用に行間を狭くする論理変数と，それを真・偽にするためのコマンドです。
\narrowbaselines\widebaselines19[2003-06-30] 数 式 に 入 る と こ ろ で \narrowbaselines を 実 行 し て い る の で\abovedisplayskip 等 が 初 期 化 さ れ て し ま う と い う shintok さ ん の ご 指 摘 に 対 して，しっぽ愛好家さんが次の修正を教えてくださいました。

[2008-02-18] english オプションで最初の段落のインデントをしないようにしました。
TODO: Hasumi さん [qa:54539] のご指摘は考慮中です。
[2015-01-07 LTJ] 遅くなりましたが，http://oku.edu.mie-u.ac.jp/tex/mod/forum/
discuss.php?d=1005 にあった ZR さんのパッチを取り込みました。
390 \newif\ifnarrowbaselines
391 \if@english
392\narrowbaselinestrue

393 \fi
394 \def\narrowbaselines{%\narrowbaselinestrue\skip0=\abovedisplayskip
397\skip2=\abovedisplayshortskip
398\skip4=\belowdisplayskip
399\skip6=\belowdisplayshortskip
400\@currsize\selectfont
401\abovedisplayskip=\skip0402\abovedisplayshortskip=\skip2
403\belowdisplayskip=\skip4404\belowdisplayshortskip=\skip6\relax}405 \def\widebaselines{\narrowbaselinesfalse\@currsize\selectfont}
406 \def\ltj@@ifnarrowbaselines{%407\ifnarrowbaselines\expandafter\@firstoftwo
408\else \expandafter\@secondoftwo
409
\fi
410 }
395
396

\normalsize 標準のフォントサイズと行送りを選ぶコマンドです。

本文 10 ポイントのときの行送りは，欧文の標準クラスファイルでは 12 ポイント，アス
キーの和文クラスファイルでは 15 ポイントになっていますが，ここでは 16 ポイントにしました。ただし \narrowbaselines で欧文用の 12 ポイントになります。
公称 10 ポイントの和文フォントが約 9.25 ポイント（アスキーのものの 0.961 倍）である
こともあり，行送りがかなりゆったりとしたと思います。実際，16/9.25 ≈ 1.73 であり，和文の推奨値の一つ「二分四分」（1.75）に近づきました。
411 \renewcommand{\normalsize}{%
412
413
414

\ltj@@ifnarrowbaselines{\jsc@setfontsize\normalsize\@xpt\@xiipt}%{\jsc@setfontsize\normalsize\@xpt{\n@baseline}}%

数式の上のアキ（\abovedisplayskip），
短い数式の上のアキ（\abovedisplayshortskip），
数式の下のアキ（\belowdisplayshortskip）の設定です。

[2003-02-16] ちょっと変えました。
[2009-08-26] TEX Q & A 52569 から始まる議論について逡巡していましたが，結局，微調20

節してみることにしました。
415
416
417
418

\abovedisplayskip 11\jsc@mpt \@plus3\jsc@mpt \@minus4\jsc@mpt\abovedisplayshortskip \z@ \@plus3\jsc@mpt\belowdisplayskip 9\jsc@mpt \@plus3\jsc@mpt \@minus4\jsc@mpt\belowdisplayshortskip \belowdisplayskip

最後に，リスト環境のトップレベルのパラメータ \@listI を，\@listi にコピーしておきます。\@listI の設定は後で出てきます。
419\let\@listi\@listI}

ここで実際に標準フォントサイズで初期化します。
420 \mcfamily\selectfont\normalsize\Cht 基準となる長さの設定をします。lltjfont.sty で宣言されているパラメータに実際の値を\Cdp 設定します。たとえば \Cwd は \normalfont の全角幅（1\zw）です。
\Cwd[2017-08-31] 基準とする文字を「全角空白」（EUC コード 0xA1A1）から「漢」（JIS コー\Cvs ド 0x3441）へ変更しました。
[2017-09-19] 内部的に使った \box0 を空にします。
\Chs421 \setbox0\hbox{漢}422 \setlength\Cht{\ht0}423 \setlength\Cdp{\dp0}424 \setlength\Cwd{\wd0}425 \setlength\Cvs{\baselineskip}
426 \setlength\Chs{\wd0}427 \setbox0=\box\voidb@x\small \small も \normalsize と同様に設定します。行送りは，\normalsize が 16 ポイントな

ら，割合からすれば 16 × 0.9 = 14.4 ポイントになりますが，\small の使われ方を考えて，ここでは和文 13 ポイント，欧文 11 ポイントとします。また，\topsep と \parsep は，元はそれぞれ 4 ± 2，2 ± 1 ポイントでしたが，ここではゼロ（\z@）にしました。
428 \newcommand{\small}{%\ltj@@ifnarrowbaselines{\jsc@setfontsize\small\@ixpt{11}}%431 %<kiyou>{\jsc@setfontsize\small{8.8888}{11}}%432 %<!kiyou>{\jsc@setfontsize\small\@ixpt{13}}%433 %<kiyou>{\jsc@setfontsize\small{8.8888}{13.2418}}%434\abovedisplayskip 9\jsc@mpt \@plus3\jsc@mpt \@minus4\jsc@mpt435\abovedisplayshortskip \z@ \@plus3\jsc@mpt436\belowdisplayskip \abovedisplayskip
437\belowdisplayshortskip \belowdisplayskip
438\def\@listi{\leftmargin\leftmargini
439\topsep \z@
440\parsep \z@441\itemsep \parsep}}429

430 %<!kiyou>\footnotesize \footnotesize も同様です。\topsep と \parsep は，元はそれぞれ 3 ± 1，2 ± 1 ポイン

トでしたが，ここではゼロ（\z@）にしました。

21

442 \newcommand{\footnotesize}{%\ltj@@ifnarrowbaselines{\jsc@setfontsize\footnotesize\@viiipt{9.5}}%
445 %<kiyou>{\jsc@setfontsize\footnotesize{8.8888}{11}}%446 %<!kiyou>{\jsc@setfontsize\footnotesize\@viiipt{11}}%447 %<kiyou>{\jsc@setfontsize\footnotesize{8.8888}{13.2418}}%
448\abovedisplayskip 6\jsc@mpt \@plus2\jsc@mpt \@minus3\jsc@mpt449\abovedisplayshortskip \z@ \@plus2\jsc@mpt
450\belowdisplayskip \abovedisplayskip
451\belowdisplayshortskip \belowdisplayskip452\def\@listi{\leftmargin\leftmargini
453\topsep \z@454\parsep \z@455\itemsep \parsep}}443

444 %<!kiyou>\scriptsize それ以外のサイズは，本文に使うことがないので，単にフォントサイズと行送りだけ変更し\tiny ます。特に注意すべきは \large で，これは二段組のときに節見出しのフォントとして使い，\large 行送りを \normalsize と同じにすることによって，節見出しが複数行にわたっても段間で\Large 行が揃うようにします。
[2004-11-03] \HUGE を追加。
\LARGE
\huge
\Huge
\HUGE

456 \newcommand{\scriptsize}{\jsc@setfontsize\scriptsize\@viipt\@viiipt}
457 \newcommand{\tiny}{\jsc@setfontsize\tiny\@vpt\@vipt}
458 \if@twocolumn
459 %<!kiyou>
460 %<kiyou>\newcommand{\large}{\jsc@setfontsize\large\@xiipt{\n@baseline}}\newcommand{\large}{\jsc@setfontsize\large{11.111}{\n@baseline}}461 \else
462 %<!kiyou>
463 %<kiyou>\newcommand{\large}{\jsc@setfontsize\large\@xiipt{17}}\newcommand{\large}{\jsc@setfontsize\large{11.111}{17}}464 \fi
465 %<!kiyou>\newcommand{\Large}{\jsc@setfontsize\Large\@xivpt{21}}466 %<kiyou>\newcommand{\Large}{\jsc@setfontsize\Large{12.222}{21}}467 \newcommand{\LARGE}{\jsc@setfontsize\LARGE\@xviipt{25}}468 \newcommand{\huge}{\jsc@setfontsize\huge\@xxpt{28}}469 \newcommand{\Huge}{\jsc@setfontsize\Huge\@xxvpt{33}}470 \newcommand{\HUGE}{\jsc@setfontsize\HUGE{30}{40}}

別行立て数式の中では \narrowbaselines にします。和文の行送りのままでは，行列や場合分けの行送り，連分数の高さなどが不釣合いに大きくなるためです。
本文中の数式の中では \narrowbaselines にしていません。本文中ではなるべく行送りが変わるような大きいものを使わず，行列は amsmath の smallmatrix 環境を使うのがいいでしょう。
471 \everydisplay=\expandafter{\the\everydisplay \narrowbaselines}

しかし，このおかげで別行数式の上下のスペースが少し違ってしまいました。とりあえず

amsmath の equation 関係は okumacro のほうで逃げていますが，もっとうまい逃げ道があればお教えください。
見出し用のフォントは \bfseries 固定ではなく，\headfont という命令で定めること

22

にします。これは太ゴシックが使えるときは \sffamily \bfseries でいいと思いますが，通常の中ゴシックでは単に \sffamily だけのほうがよさそうです。『pLATEX 2𝜀 美文書作

成入門』
（1997 年）では \sffamily \fontseries{sbc} として新ゴ M と合わせましたが，\fontseries{sbc} はちょっと幅が狭いように感じました。
472 % \newcommand{\headfont}{\bfseries}
473 \newcommand{\headfont}{\gtfamily\sffamily}
474 % \newcommand{\headfont}{\sffamily\fontseries{sbc}\selectfont}

6

レイアウト

■二段組
\columnsep \columnsep は二段組のときの左右の段間の幅です。元は 10pt でしたが， 2\zw にしまし\columnseprule た。このスペースの中央に \columnseprule の幅の罫線が引かれます。
475 %<!kiyou>\setlength\columnsep{2\zw}
476 %<kiyou>\setlength\columnsep{28truebp}
477 \setlength\columnseprule{\z@}■段落\lineskip 上下の行の文字が \lineskiplimit より接近したら，\lineskip より近づかないようにし\normallineskip ます。元は 0pt でしたが 1pt に変更しました。normal... の付いた方は保存用です。
\lineskiplimit\normallineskiplimit

478 \setlength\lineskip{1\jsc@mpt}479 \setlength\normallineskip{1\jsc@mpt}480 \setlength\lineskiplimit{1\jsc@mpt}481 \setlength\normallineskiplimit{1\jsc@mpt}\baselinestretch 実際の行送りが \baselineskip の何倍かを表すマクロです。たとえば\renewcommand{\baselinestretch}{2}と す る と， 行 送 り が 通 常 の 2 倍 に な り ま す。 た だ し， こ れ を 設 定 す る と， た と え\baselineskip が伸縮するように設定しても，行送りの伸縮ができなくなります。行
送りの伸縮はしないのが一般的です。
482 \renewcommand{\baselinestretch}{}\parskip \parskip は段落間の追加スペースです。元は 0pt plus 1pt になっていましたが，ここでは\parindent ゼロにしました。\parindent は段落の先頭の字下げ幅です。
483 \setlength\parskip{\z@}484 \if@slide\setlength\parindent{0\zw}
486 \else
487\setlength\parindent{1\zw}
488 \fi485\@lowpenalty \nopagebreak，\nolinebreak は引数に応じて次のペナルティ値のうちどれかを選ぶよう\@medpenalty になっています。ここはオリジナル通りです。
\@highpenalty

23489 \@lowpenalty

51
151
491 \@highpenalty 301
490 \@medpenalty\interlinepenalty 段落中の改ページのペナルティです。デフォルトは 0 です。
492 % \interlinepenalty 0\brokenpenalty ページの最後の行がハイフンで終わる際のペナルティです。デフォルトは 100 です。
493 % \brokenpenalty 100

6.1

ページレイアウト■縦方向のスペース\headheight \topskip は本文領域上端と本文 1 行目のベースラインとの距離です。あまりぎりぎりの値\topskip にすると，本文中に ∫ のような高い文字が入ったときに 1 行目のベースラインが他のページより下がってしまいます。ここでは本文の公称フォントサイズ（10pt）にします。

[2003-06-26] \headheight はヘッダの高さで，元は 12pt でしたが，新ドキュメントクラ
スでは \topskip と等しくしていました。ところが，fancyhdr パッケージで \headheightが小さいとおかしいことになるようですので，2 倍に増やしました。代わりに，版面の上下揃えの計算では \headheight ではなく \topskip を使うことにしました。

[2016-08-17] 圏点やルビが一行目に来た場合に下がるのを防ぐため，\topskip を 10pt
から 1.38zw に増やしました。\headheight は従来と同じ 20pt のままとします。

[2016-08-17 LTJ] 1.38zw の代わりに 1.38\zh にしています。
494 \setlength\topskip{1.38\zh}%% from 10\jsc@mpt (2016-08-17)
495 \if@slide496\setlength\headheight{0\jsc@mpt}497 \else\setlength\headheight{20\jsc@mpt}%% from 2\topskip (2016-08-17); from \topskip (200306-26)
499 \fi498\footskip \footskip は本文領域下端とフッタ下端との距離です。標準クラスファイルでは，book で

0.35in（約 8.89mm），book 以外で 30pt（約 10.54mm）となっていましたが，ここでは A4判のときちょうど 1cm となるように，\paperheight の 0.03367 倍（最小 \baselineskip）としました。書籍については，フッタは使わないことにして，ゼロにしました。
500 %<*article|kiyou>
501 \if@slide502\setlength\footskip{\z@}503 \else\setlength\footskip{0.03367\paperheight}\ifdim\footskip<\baselineskip
506\setlength\footskip{\baselineskip}
507\fi
508 \fi
504
505

24

509 %</article|kiyou>
510 %<jspf>\setlength\footskip{9\jsc@mmm}
511 %<*book>512 \if@report\setlength\footskip{0.03367\paperheight}\ifdim\footskip<\baselineskip
515\setlength\footskip{\baselineskip}
516\fi
517 \else
518\setlength\footskip{\z@}519 \fi
520 %</book>521 %<*report>
522 \setlength\footskip{0.03367\paperheight}
523 \ifdim\footskip<\baselineskip
524\setlength\footskip{\baselineskip}525 \fi
526 %</report>
513
514\headsep \headsep はヘッダ下端と本文領域上端との距離です。元は book で 18pt（約 6.33mm），それ以外で 25pt（約 8.79mm）になっていました。ここでは article は \footskip − \topskipとしました。

[2016-10-08] article の slide のとき，および book の非 report と kiyou のときに
\headsep を減らしそこねていたのを修正しました（2016-08-17 での修正漏れ）。
527 %<*article>
528 \if@slide\setlength\headsep{0\jsc@mpt}\addtolength\headsep{-\topskip}%% added (2016-10-08)531\addtolength\headsep{10\jsc@mpt}%% added (2016-10-08)
532 \else533\setlength\headsep{\footskip}
534\addtolength\headsep{-\topskip}535 \fi
536 %</article>
537 %<*book>538 \if@report539\setlength\headsep{\footskip}
540\addtolength\headsep{-\topskip}
541 \else542\setlength\headsep{6\jsc@mmm}
543\addtolength\headsep{-\topskip}%% added (2016-10-08)544\addtolength\headsep{10\jsc@mpt}%% added (2016-10-08)
545 \fi
546 %</book>547 %<*report>
548 \setlength\headsep{\footskip}549 \addtolength\headsep{-\topskip}
550 %</report>
529
530

25

551 %<*jspf>
552 \setlength\headsep{9\jsc@mmm}
553 \addtolength\headsep{-\topskip}
554 %</jspf>
555 %<*kiyou>
556 \setlength\headheight{0\jsc@mpt}557 \setlength\headsep{0\jsc@mpt}558 \addtolength\headsep{-\topskip}%% added (2016-10-08)
559 \addtolength\headsep{10\jsc@mpt}%% added (2016-10-08)
560 %</kiyou>\maxdepth \maxdepth は本文最下行の最大の深さで， plain TEX や LATEX 2.09 では 4pt に固定でした。LATEX2e では \maxdepth + \topskip を本文フォントサイズの 1.5 倍にしたいのですが，\topskip は本文フォントサイズ（ここでは 10pt）に等しいので，結局 \maxdepth は\topskip の半分の値（具体的には 5pt）にします。
561 \setlength\maxdepth{.5\topskip}■本文の幅と高さ\fullwidth 本文の幅が全角 40 文字を超えると読みにくくなります。そこで，書籍の場合に限って，紙の幅が広いときは外側のマージンを余分にとって全角 40 文字に押え，ヘッダやフッタは本
文領域より広く取ることにします。このときヘッダやフッタの幅を表す \fullwidth という長さを定義します。
562 \newdimen\fullwidth

この \fullwidth は article では紙幅 \paperwidth の 0.76 倍を超えない全角幅の整数倍（二段組では全角幅の偶数倍）にします。0.76 倍という数値は A4 縦置きの場合に紙幅から
約 2 インチを引いた値になるように選びました。book では紙幅から 36 ミリを引いた値にしました。
\textwidth 書籍以外では本文領域の幅 \textwidth は \fullwidth と等しくします。article では A4

縦置きで 49 文字となります。某学会誌スタイルでは 50\zw（25 文字 ×2 段）＋段間 8 mmとします。
563 %<*article>
564 \if@slide
565\setlength\fullwidth{0.9\paperwidth}

566 \else
567\setlength\fullwidth{0.76\paperwidth}

568 \fi
569 \if@twocolumn \@tempdima=2\zw \else \@tempdima=1\zw \fi
570 \divide\fullwidth\@tempdima \multiply\fullwidth\@tempdima
571 \setlength\textwidth{\fullwidth}
572 %</article>
573 %<*book>574 \if@report575\setlength\fullwidth{0.76\paperwidth}

576 \else26\setlength\fullwidth{\paperwidth}\addtolength\fullwidth{-36\jsc@mmm}
579 \fi
580 \if@twocolumn \@tempdima=2\zw \else \@tempdima=1\zw \fi
581 \divide\fullwidth\@tempdima \multiply\fullwidth\@tempdima
582 \setlength\textwidth{\fullwidth}
583 \if@report \else584\if@twocolumn \else585\ifdim \fullwidth>40\zw
586\setlength\textwidth{40\zw}
587
\fi
588
\fi
589 \fi
590 %</book>591 %<*report>
592 \setlength\fullwidth{0.76\paperwidth}
593 \if@twocolumn \@tempdima=2\zw \else \@tempdima=1\zw \fi
594 \divide\fullwidth\@tempdima \multiply\fullwidth\@tempdima
595 \setlength\textwidth{\fullwidth}
596 %</report>
597 %<*jspf>
598 \setlength\fullwidth{50\zw}
599 \addtolength\fullwidth{8\jsc@mmm}
600 \setlength\textwidth{\fullwidth}
601 %</jspf>
602 %<*kiyou>
603 \setlength\fullwidth{48\zw}
604 \addtolength\fullwidth{\columnsep}
605 \setlength\textwidth{\fullwidth}
606 %</kiyou>
577
578\textheight 紙の高さ \paperheight は， 1 インチと \topmargin と \headheight と \headsep と\textheight と \footskip とページ下部の余白を加えたものです。
本文部分の高さ \textheight は，紙の高さ \paperheight の 0.83 倍から，ヘッダの高さ，
ヘッダと本文の距離，本文とフッタ下端の距離，\topskip を引き，それを \baselineskipの倍数に切り捨て，最後に \topskip を加えます。念のため 0.1 ポイント余分に加えておきます。0.83 倍という数値は，A4 縦置きの場合に紙の高さから上下マージン各約 1 インチを引いた値になるように選びました。
某学会誌スタイルでは 44 行にします。

[2003-06-26] \headheight を \topskip に直しました。以前はこの二つは値が同じであったので，変化はないはずです。

[2016-08-26] \topskip を 10pt から 1.38zw に増やしましたので，その分 \textheightを増やします（2016-08-17 での修正漏れ）。

[2016-10-08] article の slide のときに \headheight はゼロなので，さらに修正しました（2016-08-17 での修正漏れ）。
607 %<*article|book|report>

27

608 \if@slide609\setlength{\textheight}{0.95\paperheight}

610 \else\setlength{\textheight}{0.83\paperheight}
612 \fi
613 \addtolength{\textheight}{-10\jsc@mpt}%% from -\topskip (2016-10-08); from \headheight (2003-06-26)
614 \addtolength{\textheight}{-\headsep}
615 \addtolength{\textheight}{-\footskip}
616 \addtolength{\textheight}{-\topskip}617 \divide\textheight\baselineskip
618 \multiply\textheight\baselineskip
619 %</article|book|report>
620 %<jspf>\setlength{\textheight}{51\baselineskip}
621 %<kiyou>\setlength{\textheight}{47\baselineskip}
622 \addtolength{\textheight}{\topskip}623 \addtolength{\textheight}{0.1\jsc@mpt}
624 %<jspf>\setlength{\mathindent}{10\jsc@mmm}
611\flushbottom [2016-07-18] \textheight に 念 の た め 0.1 ポ イ ン ト 余 裕 を 持 た せ て い る の と 同 様 に，\flushbottom にも余裕を持たせます。元の LATEX 2𝜀 での完全な \flushbottom の定義は\def\flushbottom{%\let\@textbottom\relax \let\@texttop\relax}

ですが，次のようにします。
625 \def\flushbottom{%626
627\def\@textbottom{\vskip \z@ \@plus.1\jsc@mpt}%\let\@texttop\relax}\marginparsep \marginparsep は欄外の書き込みと本文との間隔です。\marginparpush は欄外の書き込\marginparpush みどうしの最小の間隔です。
628 \setlength\marginparsep{\columnsep}
629 \setlength\marginparpush{\baselineskip}\oddsidemargin それぞれ奇数ページ，偶数ページの左マージンから 1 インチ引いた値です。片面印刷では\evensidemargin \oddsidemargin が使われます。 TEX は上・左マージンに 1truein を挿入しますが，トンボ関係のオプションが指定されると lltjcore.sty はトンボの内側に 1in のスペース（1truein ではなく）を挿入するので，場合分けしています。

[2011-10-03 LTJ] LuaTEX (pdfTEX？) では 1truein ではなく 1in になるようです。
630 \setlength{\oddsidemargin}{\paperwidth}
631 \addtolength{\oddsidemargin}{-\fullwidth}
632 \setlength{\oddsidemargin}{.5\oddsidemargin}
633 \addtolength{\oddsidemargin}{-1in}
634 \setlength{\evensidemargin}{\oddsidemargin}
635 \if@mparswitch
636\addtolength{\evensidemargin}{\fullwidth}

28

637

\addtolength{\evensidemargin}{-\textwidth}

638 \fi\marginparwidth \marginparwidth は欄外の書き込みの横幅です。外側マージンの幅（\evensidemargin +1 インチ）から 1 センチを引き，さらに \marginparsep（欄外の書き込みと本文のアキ）を引いた値にしました。最後に 1\zw の整数倍に切り捨てます。
639 \setlength\marginparwidth{\paperwidth}
640 \addtolength\marginparwidth{-\oddsidemargin}641 \addtolength\marginparwidth{-1in}
642 \addtolength\marginparwidth{-\textwidth}
643 \addtolength\marginparwidth{-10\jsc@mmm}
644 \addtolength\marginparwidth{-\marginparsep}
645 \@tempdima=1\zw
646 \divide\marginparwidth\@tempdima
647 \multiply\marginparwidth\@tempdima\topmargin 上マージン（紙の上端とヘッダ上端の距離）から 1 インチ引いた値です。

[2003-06-26] \headheight を \topskip に直しました。以前はこの二つは値が同じであったので，変化はないはずです。

[2011-10-03 LTJ] ここも \oddsidemargin のときと同様に -\inv@mag in ではなく-1inにします。

[2016-08-17] \topskip を 10pt から 1.38zw に直しましたが，\topmargin は従来の値から変わらないように調節しました。…のつもりでしたが，\textheight を増やし忘れていたので変わってしまっていました（2016-08-26 修正済み）。
648 \setlength\topmargin{\paperheight}
649 \addtolength\topmargin{-\textheight}
650 \if@slide
651\addtolength\topmargin{-\headheight}

652 \else\addtolength\topmargin{-10\jsc@mpt}%% from -\topskip (2016-10-08); from \headheight (2003-06-26)
654 \fi
655 \addtolength\topmargin{-\headsep}
656 \addtolength\topmargin{-\footskip}657 \setlength\topmargin{0.5\topmargin}
658 %<kiyou>\setlength\topmargin{81truebp}
659 \addtolength\topmargin{-1in}653■脚注\footnotesep 各 脚 注 の 頭 に 入 る 支 柱 （strut） の 高 さ で す。 脚 注 間 に 余 分 の ア キ が 入 ら な い よ う に，\footnotesize の支柱の高さ（行送りの 0.7 倍）に等しくします。
660 {\footnotesize\global\setlength\footnotesep{\baselineskip}}
661 \setlength\footnotesep{0.7\footnotesep}\footins \skip\footins は本文の最終行と最初の脚注との間の距離です。標準の 10 ポイントクラス

29

では 9 plus 4 minus 2 ポイントになっていますが，和文の行送りを考えてもうちょっと大きくします。
662 \setlength{\skip\footins}{16\jsc@mpt \@plus 5\jsc@mpt \@minus 2\jsc@mpt}■フロート関連 フロート（図，表）関連のパラメータは LATEX 2𝜀 本体で定義されていますが，ここで設定変更します。本文ページ（本文とフロートが共存するページ）とフロートだけのページで設定が異なります。ちなみに，カウンタは内部では \c@ を名前に冠したマクロになっています。
\c@topnumber topnumber カウンタは本文ページ上部のフロートの最大数です。

[2003-08-23] ちょっと増やしました。
663 \setcounter{topnumber}{9}\topfraction 本文ページ上部のフロートが占有できる最大の割合です。フロートが入りやすいように，元の値 0.7 を 0.8 [2003-08-23: 0.85] に変えてあります。
664 \renewcommand{\topfraction}{.85}\c@bottomnumber bottomnumber カウンタは本文ページ下部のフロートの最大数です。

[2003-08-23] ちょっと増やしました。
665 \setcounter{bottomnumber}{9}\bottomfraction 本文ページ下部のフロートが占有できる最大の割合です。元は 0.3 でした。
666 \renewcommand{\bottomfraction}{.8}\c@totalnumber totalnumber カウンタは本文ページに入りうるフロートの最大数です。

[2003-08-23] ちょっと増やしました。
667 \setcounter{totalnumber}{20}\textfraction 本文ページに最低限入らなければならない本文の割合です。フロートが入りやすいように元の 0.2 を 0.1 に変えました。
668 \renewcommand{\textfraction}{.1}\floatpagefraction フロートだけのページでのフロートの最小割合です。これも 0.5 を 0.8 に変えてあります。
669 \renewcommand{\floatpagefraction}{.8}\c@dbltopnumber 二段組のとき本文ページ上部に出力できる段抜きフロートの最大数です。

[2003-08-23] ちょっと増やしました。
670 \setcounter{dbltopnumber}{9}\dbltopfraction 二段組のとき本文ページ上部に出力できる段抜きフロートが占めうる最大の割合です。0.7

を 0.8 に変えてあります。
671 \renewcommand{\dbltopfraction}{.8}\dblfloatpagefraction 二段組のときフロートだけのページに入るべき段抜きフロートの最小割合です。0.5 を 0.8に変えてあります。
672 \renewcommand{\dblfloatpagefraction}{.8}30

\floatsep \floatsep はページ上部・下部のフロート間の距離です。\textfloatsep はページ上部・\textfloatsep 下部のフロートと本文との距離です。\intextsep は本文の途中に出力されるフロートと本\intextsep 文との距離です。
673 \setlength\floatsep{12\jsc@mpt \@plus 2\jsc@mpt \@minus 2\jsc@mpt}674 \setlength\textfloatsep{20\jsc@mpt \@plus 2\jsc@mpt \@minus 4\jsc@mpt}675 \setlength\intextsep{12\jsc@mpt \@plus 2\jsc@mpt \@minus 2\jsc@mpt}\dblfloatsep 二段組のときの段抜きのフロートについての値です。
\dbltextfloatsep

676 \setlength\dblfloatsep{12\jsc@mpt \@plus 2\jsc@mpt \@minus 2\jsc@mpt}677 \setlength\dbltextfloatsep{20\jsc@mpt \@plus 2\jsc@mpt \@minus 4\jsc@mpt}\@fptop フロートだけのページに入るグルーです。\@fptop はページ上部，\@fpbot はページ下部，\@fpsep \@fpsep はフロート間に入ります。
\@fpbot

678 \setlength\@fptop{0\jsc@mpt \@plus 1fil}
679 \setlength\@fpsep{8\jsc@mpt \@plus 2fil}
680 \setlength\@fpbot{0\jsc@mpt \@plus 1fil}\@dblfptop 段抜きフロートについての値です。
\@dblfpsep\@dblfpbot

681 \setlength\@dblfptop{0\jsc@mpt \@plus 1fil}
682 \setlength\@dblfpsep{8\jsc@mpt \@plus 2fil}
683 \setlength\@dblfpbot{0\jsc@mpt \@plus 1fil}

7

改ページ（日本語 TEX 開発コミュニティ版のみ）\pltx@cleartorightpage [2017-02-24] コミュニティ版 pLATEX の標準クラス 2017/02/15 に合わせて，同じ命令を追\pltx@cleartoleftpage 加しました。
\pltx@cleartooddpage\pltx@cleartoevenpage

1. \pltx@cleartorightpage：右ページになるまでページを繰る命令
2. \pltx@cleartoleftpage：左ページになるまでページを繰る命令
3. \pltx@cleartooddpage：奇数ページになるまでページを繰る命令
4. \pltx@cleartoevenpage：偶数ページになるまでページを繰る命令となっています。
684 %<*article|book|report>
685 \def\pltx@cleartorightpage{\clearpage\if@twoside\unless\ifodd\numexpr\c@page+\ltjgetparameter{direction}\relax\hbox{}\thispagestyle{empty}\newpage
688\if@twocolumn\hbox{}\newpage\fi689\fi\fi}690 \def\pltx@cleartoleftpage{\clearpage\if@twoside691\ifodd\numexpr\c@page+\ltjgetparameter{direction}\relax
692\hbox{}\thispagestyle{empty}\newpage693\if@twocolumn\hbox{}\newpage\fi694\fi\fi}695 \def\pltx@cleartooddpage{\clearpage\if@twoside696\ifodd\c@page\else
686
687

31

\hbox{}\thispagestyle{empty}\newpage\if@twocolumn\hbox{}\newpage\fi699\fi\fi}700 \def\pltx@cleartoevenpage{\clearpage\if@twoside701\ifodd\c@page702\hbox{}\thispagestyle{empty}\newpage703\if@twocolumn\hbox{}\newpage\fi704\fi\fi}
705 %</article|book|report>
697
698\cleardoublepage [2017-02-24] コミュニティ版 pLATEX の標準クラス 2017/02/15 に合わせて，report と book

クラスの場合に \cleardoublepage を再定義します。
706 %<*book|report>
707 \if@openleft708\let\cleardoublepage\pltx@cleartoleftpage709 \else\if@openright\let\cleardoublepage\pltx@cleartorightpage
711 \fi\fi
712 %</book|report>710

8

ページスタイル
ページスタイルとして，LATEX 2𝜀（欧文版）の標準クラスでは empty，plain，headings，

myheadings があります。このうち empty，plain スタイルは LATEX 2𝜀 本体で定義されています。

アスキーのクラスファイルでは headnombre，footnombre，bothstyle，jpl@in が追加されていますが，ここでは欧文標準のものだけにしました。
ページスタイルは \ps@... の形のマクロで定義されています。
\@evenhead \@oddhead， \@oddfoot， \@evenhead， \@evenfoot は偶数・奇数ページの柱（ヘッダ，\@oddhead フッタ）を出力する命令です。これらは \fullwidth 幅の \hbox の中で呼び出されます。
\@evenfoot \ps@... の中で定義しておきます。
\@oddfoot

柱 の 内 容 は， \chapter が 呼 び 出 す \chaptermark{何 々}， \section が 呼 び 出 す\sectionmark{何々} で設定します。柱を扱う命令には次のものがあります。
\markboth{左}{右} 両方の柱を設定します。
\markright{右}右の柱を設定します。

\leftmark

左の柱を出力します。

\rightmark

右の柱を出力します。

柱を設定する命令は，右の柱が左の柱の下位にある場合は十分まともに動作します。たとえば左マークを \chapter，右マークを \section で変更する場合がこれにあたります。しかし，同一ページに複数の \markboth があると，おかしな結果になることがあります。

\tableofcontents のような命令で使われる \@mkboth は， \ps@... コマンド中で32

\markboth か \@gobbletwo（何もしない）に \let されます。
\ps@empty empty ページスタイルの定義です。LATEX 本体で定義されているものをコメントアウトした形で載せておきます。
713 % \def\ps@empty{%
714 %
715 %
716 %
717 %
718 %

\let\@mkboth\@gobbletwo\let\@oddhead\@empty\let\@oddfoot\@empty\let\@evenhead\@empty\let\@evenfoot\@empty}\ps@plainhead plainhead はシンプルなヘッダだけのページスタイルです。
\ps@plainfoot\ps@plainplainfoot はシンプルなフッタだけのページスタイルです。
plain は book では plainhead，それ以外では plainfoot になります。
719 \def\ps@plainfoot{%\let\@mkboth\@gobbletwo\let\@oddhead\@empty
722\def\@oddfoot{\normalfont\hfil\thepage\hfil}%723\let\@evenhead\@empty
724\let\@evenfoot\@oddfoot}725 \def\ps@plainhead{%726\let\@mkboth\@gobbletwo
727\let\@oddfoot\@empty
728\let\@evenfoot\@empty729\def\@evenhead{%730\if@mparswitch \hss \fi731\hbox to \fullwidth{\textbf{\thepage}\hfil}%732\if@mparswitch\else \hss \fi}%733\def\@oddhead{%734\hbox to \fullwidth{\hfil\textbf{\thepage}}\hss}}
735 %<book>\if@report \let\ps@plain\ps@plainfoot \else \let\ps@plain\ps@plainhead \fi
736 %<!book>\let\ps@plain\ps@plainfoot
720
721\ps@headings headings スタイルはヘッダに見出しとページ番号を出力します。ここではヘッダにアン

ダーラインを引くようにしてみました。
まず article の場合です。
737 %<*article|kiyou>
738 \if@twoside
739
740
741
742
743
744
745
746
747
748

\def\ps@headings{%\let\@oddfoot\@empty\let\@evenfoot\@empty\def\@evenhead{\if@mparswitch \hss \fi\underline{\hbox to \fullwidth{\textbf{\thepage}\hfil\leftmark}}%\if@mparswitch\else \hss \fi}%\def\@oddhead{%\underline{%\hbox to \fullwidth{{\rightmark}\hfil\textbf{\thepage}}}\hss}%\let\@mkboth\markboth33\def\sectionmark##1{\markboth{%\ifnum \c@secnumdepth >\z@ \thesection \hskip1\zw\fi##1}{}}%\def\subsectionmark##1{\markright{%\ifnum \c@secnumdepth >\@ne \thesubsection \hskip1\zw\fi##1}}%

749
750
751
752
753
754
755

}

756 \else % if not twoside\def\ps@headings{%\let\@oddfoot\@empty759\def\@oddhead{%760\underline{%761\hbox to \fullwidth{{\rightmark}\hfil\textbf{\thepage}}}\hss}%
762\let\@mkboth\markboth763\def\sectionmark##1{\markright{%
764\ifnum \c@secnumdepth >\z@ \thesection \hskip1\zw\fi765##1}}}
766 \fi
767 %</article|kiyou>
757
758

次は book および report の場合です。[2011-05-10] しっぽ愛好家さん [qa:6370] のパッ
チを取り込ませていただきました（北見さん [qa:55896] のご指摘ありがとうございます）。
768 %<*book|report>
769 \newif\if@omit@number
770 \def\ps@headings{%\let\@oddfoot\@empty
772\let\@evenfoot\@empty
773\def\@evenhead{%774\if@mparswitch \hss \fi775\underline{\hbox to \fullwidth{\ltjsetparameter{autoxspacing={true}}
776\textbf{\thepage}\hfil\leftmark}}%
777\if@mparswitch\else \hss \fi}%778\def\@oddhead{\underline{\hbox to \fullwidth{\ltjsetparameter{autoxspacing={true}}779{\if@twoside\rightmark\else\leftmark\fi}\hfil\textbf{\thepage}}}\hss}%
780\let\@mkboth\markboth781\def\chaptermark##1{\markboth{%782\ifnum \c@secnumdepth >\m@ne783 %<book>\if@mainmatter784\if@omit@number\else785\@chapapp\thechapter\@chappos\hskip1\zw
786\fi
787 %<book>
\fi
788
\fi
789
##1}{}}%
790\def\sectionmark##1{\markright{%
791\ifnum \c@secnumdepth >\z@ \thesection \hskip1\zw\fi792##1}}}%
793 %</book|report>
771

34

最後は学会誌の場合です。
794 %<*jspf>
795 \def\ps@headings{%\def\@oddfoot{\normalfont\hfil\thepage\hfil}\def\@evenfoot{\normalfont\hfil\thepage\hfil}
798\def\@oddhead{\normalfont\hfil \@title \hfil}
799\def\@evenhead{\normalfont\hfil プラズマ・核融合学会誌 \hfil}}
800 %</jspf>
796
797\ps@myheadings myheadings ページスタイルではユーザが \markboth や \markright で柱を設定するため，ここでの定義は非常に簡単です。

[2004-01-17] 渡辺徹さんのパッチを適用しました。
801 \def\ps@myheadings{%\let\@oddfoot\@empty\let\@evenfoot\@empty\def\@evenhead{%804\if@mparswitch \hss \fi%805
\hbox to \fullwidth{\thepage\hfil\leftmark}%
806\if@mparswitch\else \hss \fi}%807\def\@oddhead{%808\hbox to \fullwidth{\rightmark\hfil\thepage}\hss}%
809\let\@mkboth\@gobbletwo
810 %<book|report> \let\chaptermark\@gobble
811\let\sectionmark\@gobble
812 %<!book&!report> \let\subsectionmark\@gobble
813 }
802
803

9

文書のマークアップ

9.1

表題\title これらは LATEX 本体で次のように定義されています。ここではコメントアウトした形で示し\author ます。
\date

814 % \newcommand*{\title}[1]{\gdef\@title{#1}}815 % \newcommand*{\author}[1]{\gdef\@author{#1}}816 % \newcommand*{\date}[1]{\gdef\@date{#1}}817 % \date{\today}\etitle 某学会誌スタイルで使う英語のタイトル，英語の著者名，キーワード，メールアドレスです。
\eauthor\keywords

818 %<*jspf>
819 \newcommand*{\etitle}[1]{\gdef\@etitle{#1}}820 \newcommand*{\eauthor}[1]{\gdef\@eauthor{#1}}821 \newcommand*{\keywords}[1]{\gdef\@keywords{#1}}822 \newcommand*{\email}[1]{\gdef\authors@mail{#1}}823 \newcommand*{\AuthorsEmail}[1]{\gdef\authors@mail{author's e-mail:\ #1}}
824 %</jspf>\plainifnotempty 従来の標準クラスでは，文書全体のページスタイルを empty にしても表題のあるページだけ35

plain になってしまうことがありました。これは \maketitle の定義中に \thispagestyle{plain} が入っているためです。この問題を解決するために，「全体のページスタイルがempty でないならこのページのスタイルを plain にする」という次の命令を作ることにします。
825 \def\plainifnotempty{%
826
827
828
829
830
831
832
833

\ifx \@oddhead \@empty\ifx \@oddfoot \@empty\else\thispagestyle{plainfoot}%
\fi
\else
\thispagestyle{plainhead}%\fi}\maketitle 表題を出力します。著者名を出力する部分は，欧文の標準クラスファイルでは \large，和文のものでは \Large になっていましたが，ここでは \large にしました。

[2016-11-16] ス ペ ー シ ン グ を 元 の jsclasses に 合 わ せ る た め， \smallskip を\jsc@smallskip に置き換えました。\smallskip のままでは nomag(*) の場合にスケー
ルしなくなり，レイアウトが変わってしまいます。
834 %<*article|book|report|kiyou>
835 \if@titlepage
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861

\newcommand{\maketitle}{%\begin{titlepage}%\let\footnotesize\small\let\footnoterule\relax\let\footnote\thanks\null\vfil\if@slide{\footnotesize \@date}%\begin{center}\mbox{} \\[1\zw]\large{\maybeblue\hrule height0\jsc@mpt depth2\jsc@mpt\relax}\par\jsc@smallskip\@title\jsc@smallskip{\maybeblue\hrule height0\jsc@mpt depth2\jsc@mpt\relax}\par\vfill{\small \@author}%\end{center}\else\vskip 60\jsc@mpt\begin{center}%{\LARGE \@title \par}%\vskip 3em%{\large\lineskip .75em

36\begin{tabular}[t]{c}%\@author864\end{tabular}\par}%865\vskip 1.5em
866{\large \@date \par}%867\end{center}%
868
\fi
869
\par
870
\@thanks\vfil\null871\end{titlepage}%872\setcounter{footnote}{0}%873\global\let\thanks\relax874\global\let\maketitle\relax
875\global\let\@thanks\@empty
876\global\let\@author\@empty
877\global\let\@date\@empty
878\global\let\@title\@empty879\global\let\title\relax
880\global\let\author\relax
881\global\let\date\relax
882\global\let\and\relax
883}%
884 \else885\newcommand{\maketitle}{\par886\begingroup887\renewcommand\thefootnote{\@fnsymbol\c@footnote}%888\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%889\long\def\@makefntext##1{\advance\leftskip 3\zw890
\parindent 1\zw\noindent891\llap{\@textsuperscript{\normalfont\@thefnmark}\hskip0.3\zw}##1}%
892\if@twocolumn
893\ifnum \col@number=\@ne894\@maketitle
895
\else
896
\twocolumn[\@maketitle]%
897
\fi
898
\else
899
\newpage
900\global\@topnum\z@ % Prevents figures from going at top of page.
901\@maketitle
902
\fi
903
\plainifnotempty
904\@thanks905\endgroup906\setcounter{footnote}{0}%907\global\let\thanks\relax
908\global\let\maketitle\relax909\global\let\@thanks\@empty
910\global\let\@author\@empty
862
863

37

\global\let\@date\@empty\global\let\@title\@empty\global\let\title\relax\global\let\author\relax\global\let\date\relax\global\let\and\relax

911
912
913
914
915
916
917

}

\@maketitle 独立した表題ページを作らない場合の表題の出力形式です。

\def\@maketitle{%\newpage\null920\vskip 2em
921\begin{center}%
922\let\footnote\thanks
923{\LARGE \@title \par}%924\vskip 1.5em
925{\large926\lineskip .5em
927
\begin{tabular}[t]{c}%928\@author929\end{tabular}\par}%930\vskip 1em
931{\large \@date}%932\end{center}%933\par\vskip 1.5em
934 %<article|report|kiyou>\ifvoid\@abstractbox\else\centerline{\box\@abstractbox}\vskip1.5e935}936 \fi
937 %</article|book|report|kiyou>
938 %<*jspf>
939 \newcommand{\maketitle}{\par940\begingroup941\renewcommand\thefootnote{\@fnsymbol\c@footnote}%942\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%943\long\def\@makefntext##1{\advance\leftskip 3\zw944
\parindent 1\zw\noindent945\llap{\@textsuperscript{\normalfont\@thefnmark}\hskip0.3\zw}##1}%
946\twocolumn[\@maketitle]%
947\plainifnotempty
948\@thanks949\endgroup950\setcounter{footnote}{0}%951\global\let\thanks\relax
952\global\let\maketitle\relax
953\global\let\@thanks\@empty
954\global\let\@author\@empty
955\global\let\@date\@empty
956 % \global\let\@title\@empty % \@title は柱に使う
957\global\let\title\relax
918
919

38

\global\let\author\relax\global\let\date\relax
960\global\let\and\relax
961\ifx\authors@mail\@undefined\else{%962\def\@makefntext{\advance\leftskip 3\zw \parindent -3\zw}%963\footnotetext[0]{\itshape\authors@mail}%
964
}\fi
965
\global\let\authors@mail\@undefined}
966 \def\@maketitle{%
967\newpage\null968\vskip 6em % used to be 2em
969\begin{center}970\let\footnote\thanks971\ifx\@title\@undefined\else{\LARGE\headfont\@title\par}\fi972\lineskip .5em
973
\ifx\@author\@undefined\else974\vskip 1em
975\begin{tabular}[t]{c}%976\@author977\end{tabular}\par
978
\fi
979
\ifx\@etitle\@undefined\else980\vskip 1em
981{\large \@etitle \par}%
982
\fi
983
\ifx\@eauthor\@undefined\else984\vskip 1em
985\begin{tabular}[t]{c}%986\@eauthor
987\end{tabular}\par
988
\fi
989
\vskip 1em
990\@date991\end{center}992\vskip 1.5em
993\centerline{\box\@abstractbox}994\ifx\@keywords\@undefined\else995\vskip 1.5em
996\centerline{\parbox{157\jsc@mmm}{\textsf{Keywords:}\\ \small\@keywords}}
997
\fi
998
\vskip 1.5em}
999 %</jspf>
958
959

9.2

章・節

■構成要素

\@startsection マクロは 6 個の必須引数と，オプションとして * と 1 個のオプション引数と 1 個の必須引数をとります。

39

\@startsection{名}{レベル}{字下げ}{前アキ}{後アキ}{スタイル}*[別見出し]{見出し}
それぞれの引数の意味は次の通りです。
ユーザレベルコマンドの名前です（例: section）。

名

見 出 し の 深 さ を 示 す 数 値 で す （chapter=1, section=2, …）。この数値がレベル

secnumdepth 以下のとき見出し番号を出力します。
字下げ

見出しの字下げ量です。

前アキ

この値の絶対値が見出し上側の空きです。負の場合は，見出し直後の段落をインデントしません。

後アキ

正の場合は，見出しの下の空きです。負の場合は，絶対値が見出しの右の空きです（見出しと同じ行から本文を始めます）。
スタイル

見出しの文字スタイルの設定です。

この * 印がないと，見出し番号を付け，見出し番号のカウンタに 1 を加算します。

*

別見出し
見出し

目次や柱に出力する見出しです。
見出しです。

見出しの命令は通常 \@startsection とその最初の 6 個の引数として定義されます。
次 は \@startsection の 定 義 で す。 情 報 処 理 学 会 論 文 誌 ス タ イ ル フ ァ イ ル（ipsjcommon.sty）を参考にさせていただきましたが，完全に行送りが \baselineskipの整数倍にならなくてもいいから前の行と重ならないようにしました。
1000 \def\@startsection#1#2#3#4#5#6{%\if@noskipsec \leavevmode \fi\par1003 % 見出し上の空きを \@tempskipa にセットする
1004\@tempskipa #4\relax
1005 % \@afterindent は見出し直後の段落を字下げするかどうかを表すスイッチ
1006\if@english \@afterindentfalse \else \@afterindenttrue \fi1007 % 見出し上の空きが負なら見出し直後の段落を字下げしない
1008\ifdim \@tempskipa <\z@1009\@tempskipa -\@tempskipa \@afterindentfalse
1010
\fi
1011
\if@nobreak1012\everypar{}%
1013
\else
1014
\addpenalty\@secpenalty
1015 % 次の行は削除
1016 %\addvspace\@tempskipa
1017 % 次の \noindent まで追加
1018
\ifdim \@tempskipa >\z@1019
\if@slide\else
1020
\null
1021
\vspace*{-\baselineskip}%
1022
\fi
1001
1002

40

1023
1024
1025
1026

\vskip\@tempskipa\fi\fi\noindent

1027 % 追加終わり
1028
1029
1030

\@ifstar{\@ssect{#3}{#4}{#5}{#6}}%{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}\@sect と \@xsect は，前のアキがちょうどゼロの場合にもうまくいくように，多少変えてあります。
1031 \def\@sect#1#2#3#4#5#6[#7]#8{%\ifnum #2>\c@secnumdepth
1033\let\@svsec\@empty
1034
\else
1035
\refstepcounter{#1}%1036\protected@edef\@svsec{\@seccntformat{#1}\relax}%1037\fi1038 % 見出し後の空きを \@tempskipa にセット
1039\@tempskipa #5\relax
1040 % 条件判断の順序を入れ換えました
1041\ifdim \@tempskipa<\z@1042\def\@svsechd{%1043#6{\hskip #3\relax
1044\@svsec #8}%1045
\csname #1mark\endcsname{#7}%1046\addcontentsline{toc}{#1}{%
1047\ifnum #2>\c@secnumdepth \else1048\protect\numberline{\csname the#1\endcsname}%
1049
\fi
1050
#7}}% 目次にフルネームを載せるなら #8
1051
\else
1052
\begingroup1053\interlinepenalty \@M % 下から移動
1054
#6{%
1055
\@hangfrom{\hskip #3\relax\@svsec}%
1056 %\interlinepenalty \@M % 上に移動
1057
#8\@@par}%1058\endgroup1059\csname #1mark\endcsname{#7}%1060\addcontentsline{toc}{#1}{%
1061\ifnum #2>\c@secnumdepth \else1062\protect\numberline{\csname the#1\endcsname}%
1063
\fi
1064
#7}% 目次にフルネームを載せるならここは #8
1065
\fi
1066
\@xsect{#5}}1032

二つ挿入した \everyparhook のうち後者が \paragraph 類の後で 2 回実行され，それ41

以降は前者が実行されます。

[2011-10-05 LTJ] LuaTEX-ja では \everyparhook は不要なので削除。

[2016-07-28] slide オプションと twocolumn オプションを同時に指定した場合の罫線の位置を微調整しました。
1067 \def\@xsect#1{%
1068 % 見出しの後ろの空きを \@tempskipa にセット
1069\@tempskipa #1\relax

1070 % 条件判断の順序を変えました\ifdim \@tempskipa<\z@\@nobreakfalse1073\global\@noskipsectrue
1074\everypar{%1075\if@noskipsec
1076\global\@noskipsecfalse
1077{\setbox\z@\lastbox}%
1078\clubpenalty\@M1079\begingroup \@svsechd \endgroup1080\unskip
1081\@tempskipa #1\relax
1082\hskip -\@tempskipa\ltjfakeparbegin
1083
\else
1084
\clubpenalty \@clubpenalty
1085\everypar{}%
1086
\fi}%
1087
\else
1088
\par \nobreak1089\vskip \@tempskipa
1090\@afterheading
1091
\fi
1092
\if@slide1093{\vskip\if@twocolumn-5\jsc@mpt\else-6\jsc@mpt\fi1094\maybeblue\hrule height0\jsc@mpt depth1\jsc@mpt1095\vskip\if@twocolumn 4\jsc@mpt\else 7\jsc@mpt\fi\relax}%
1096
\fi
1097
\par % 2000-12-18
1098\ignorespaces}
1099 \def\@ssect#1#2#3#4#5{%
1100\@tempskipa #3\relax
1101\ifdim \@tempskipa<\z@1102\def\@svsechd{#4{\hskip #1\relax #5}}%
1103
\else
1104
\begingroup
1105
#4{%
1106
\@hangfrom{\hskip #1}%
1107
\interlinepenalty \@M #5\@@par}%1108\endgroup
1109
\fi
1110
\@xsect{#3}}
1071
1072

42

■柱関係の命令\chaptermark \...mark の形の命令を初期化します（第 8 節参照）。\chaptermark 以外は LATEX 本体で\sectionmark 定義済みです。
\subsectionmark 1111 \newcommand*\chaptermark[1]{}1112 % \newcommand*{\sectionmark}[1]{}\subsubsectionmark
1113 % \newcommand*{\subsectionmark}[1]{}\paragraphmark 1114 % \newcommand*{\subsubsectionmark}[1]{}\subparagraphmark 1115 % \newcommand*{\paragraphmark}[1]{}1116 % \newcommand*{\subparagraphmark}[1]{}■カウンタの定義\c@secnumdepth secnumdepth は第何レベルの見出しまで番号を付けるかを決めるカウンタです。
1117 %<!book&!report>\setcounter{secnumdepth}{3}1118 %<book|report>\setcounter{secnumdepth}{2}\c@chapter 見出し番号のカウンタです。\newcounter の第 1 引数が新たに作るカウンタです。これは\c@section 第 2 引数が増加するたびに 0 に戻されます。第 2 引数は定義済みのカウンタです。
\c@subsection 1119 \newcounter{part}1120 %<book|report>\newcounter{chapter}\c@subsubsection
1121 %<book|report>\newcounter{section}[chapter]\c@paragraph 1122 %<!book&!report>\newcounter{section}\c@subparagraph 1123 \newcounter{subsection}[section]
1124 \newcounter{subsubsection}[subsection]
1125 \newcounter{paragraph}[subsubsection]
1126 \newcounter{subparagraph}[paragraph]\thepart カウンタの値を出力する命令 \the 何々 を定義します。
\thechapter\thesection

カウンタを出力するコマンドには次のものがあります。

\arabic{COUNTER}

1, 2, 3, …

\roman{COUNTER}

i, ii, iii, …

\Roman{COUNTER}

I, II, III, …

\theparagraph\alph{COUNTER}

a, b, c, …

\thesubparagraph\Alph{COUNTER}

A, B, C, …

\kansuji{COUNTER}

一, 二, 三, …

\thesubsection\thesubsubsection

以下ではスペース節約のため @ の付いた内部表現を多用しています。
1127 \renewcommand{\thepart}{\@Roman\c@part}1128 %<!book&!report>% \renewcommand{\thesection}{\@arabic\c@section}

1129 %<!book&!report>\renewcommand{\thesection}{\presectionname\@arabic\c@section\postsectionname
1130 %<!book&!report>\renewcommand{\thesubsection}{\@arabic\c@section.\@arabic\c@subsection}
1131 %<*book|report>
1132 \renewcommand{\thechapter}{\@arabic\c@chapter}
1133 \renewcommand{\thesection}{\thechapter.\@arabic\c@section}

43

1134 \renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection}
1135 %</book|report>
1136 \renewcommand{\thesubsubsection}{%\thesubsection.\@arabic\c@subsubsection}
1138 \renewcommand{\theparagraph}{%1139\thesubsubsection.\@arabic\c@paragraph}1140 \renewcommand{\thesubparagraph}{%1141\theparagraph.\@arabic\c@subparagraph}1137\@chapapp \@chapapp の初期値は \prechaptername（第）です。
\@chappos\@chappos の初期値は \postchaptername（章）です。
\appendix は \@chapapp を \appendixname に，\@chappos を空に再定義します。
[2003-03-02] \@secapp は外しました。
1142 %<book|report>\newcommand{\@chapapp}{\prechaptername}1143 %<book|report>\newcommand{\@chappos}{\postchaptername}■前付，本文，後付 本のうち章番号があるのが「本文」，それ以外が「前付」「後付」です。
\frontmatter ページ番号をローマ数字にし，章番号を付けないようにします。

[2017-03-05] \frontmatter と \mainmatter の 2 つの命令は，改丁または改ページした
後で \pagenumbering{...} でノンブルを 1 にリセットします。長い間 \frontmatter はopenany のときに単なる改ページとしていましたが，これではノンブルをリセットする際に偶奇逆転が起こる場合がありました。openany かどうかに依らず奇数ページまで繰るように修正することで，問題を解消しました。実は，LATEX の標準クラスでは 1998 年に修正されていた問題です（コミュニティ版 pLATEX の標準クラス 2017/03/05 も参照）。
1144 %<*book>1145 \newcommand\frontmatter{%
1146
1147
1148

\pltx@cleartooddpage\@mainmatterfalse\pagenumbering{roman}}\mainmatter ページ番号を算用数字にし，章番号を付けるようにします。
1149 \newcommand\mainmatter{%
1150
1151
1152

\pltx@cleartooddpage\@mainmattertrue\pagenumbering{arabic}}\backmatter 章番号を付けないようにします。ページ番号の付け方は変わりません。
1153 \newcommand\backmatter{%
1154
1155
1156
1157
1158
1159
1160
1161

\if@openleft\cleardoublepage\else\if@openright\cleardoublepage\else\clearpage\fi\fi\@mainmatterfalse}441162 %</book>■部\part 新しい部を始めます。

\secdef を使って見出しを定義しています。このマクロは二つの引数をとります。
\secdef{星なし}{星あり}
星なし* のない形の定義です。

星あり* のある形の定義です。

\secdef は次のようにして使います。
\def\chapter { ... \secdef \CMDA \CMDB }\def\CMDA[#1]#2{....} % \chapter[...]{...} の定義\def\CMDB#1{....}% \chapter*{...} の定義

まず book と report のクラス以外です。
1163 %<*!book&!report>
1164 \newcommand\part{%\if@noskipsec \leavevmode \fi
1166
\par
1167
\addvspace{4ex}%1168\if@english \@afterindentfalse \else \@afterindenttrue \fi1169\secdef\@part\@spart}
1170 %</!book&!report>
1165

book および report クラスの場合は，少し複雑です。
1171 %<*book|report>
1172 \newcommand\part{%\if@openleft\cleardoublepage
1175\else\if@openright1176\cleardoublepage
1177
\else
1178
\clearpage1179\fi\fi1180\thispagestyle{empty}% 欧文用標準スタイルでは plain1181\if@twocolumn
1182\onecolumn
1183\@restonecoltrue
1184
\else
1185
\@restonecolfalse
1186
\fi
1187
\null\vfil1188\secdef\@part\@spart}
1189 %</book|report>
1173
1174

\@part 部の見出しを出力します。\bfseries を \headfont に変えました。

45

book および report クラス以外では secnumdepth が −1 より大きいとき部番号を付けます。
1190 %<*!book&!report>
1191 \def\@part[#1]#2{%\ifnum \c@secnumdepth >\m@ne\refstepcounter{part}%
1194\addcontentsline{toc}{part}{%1195\prepartname\thepart\postpartname\hspace{1\zw}#1}%
1196
\else
1197
\addcontentsline{toc}{part}{#1}%
1198
\fi
1199
\markboth{}{}%
1200{\parindent\z@1201\raggedright1202\interlinepenalty \@M1203\normalfont
1204\ifnum \c@secnumdepth >\m@ne1205\Large\headfont\prepartname\thepart\postpartname
1206\par\nobreak
1207
\fi
1208
\huge \headfont #2%
1209\markboth{}{}\par}%1210\nobreak1211\vskip 3ex
1212\@afterheading}1213 %</!book&!report>
1192
1193

book および report クラスでは secnumdepth が −2 より大きいとき部番号を付けます。
1214 %<*book|report>
1215 \def\@part[#1]#2{%\ifnum \c@secnumdepth >-2\relax
1217\refstepcounter{part}%1218\addcontentsline{toc}{part}{%1219\prepartname\thepart\postpartname\hspace{1\zw}#1}%
1220
\else
1221
\addcontentsline{toc}{part}{#1}%
1222
\fi
1223
\markboth{}{}%
1224{\centering
1225\interlinepenalty \@M
1226\normalfont
1227\ifnum \c@secnumdepth >-2\relax
1228\huge\headfont \prepartname\thepart\postpartname
1229\par\vskip20\jsc@mpt
1230
\fi
1231
\Huge \headfont #2\par}%1232\@endpart}
1233 %</book|report>
1216

46

\@spart 番号を付けない部です。
1234 %<*!book&!report>
1235 \def\@spart#1{{%\parindent \z@ \raggedright\interlinepenalty \@M
1238\normalfont
1239\huge \headfont #1\par}%1240\nobreak1241\vskip 3ex
1242\@afterheading}1243 %</!book&!report>
1244 %<*book|report>
1245 \def\@spart#1{{%
1246\centering
1247\interlinepenalty \@M1248\normalfont
1249\Huge \headfont #1\par}%1250\@endpart}
1251 %</book|report>
1236
1237

\@endpart \@part と \@spart の最後で実行されるマクロです。両面印刷のときは白ページを追加します。二段組のときには，二段組に戻します。

[2016-12-13] openany のときには白ページが追加されるのは変なので，その場合は追加しないようにしました。このバグは LATEX では classes.dtx v1.4b (2000/05/19) で修正されています。
1252 %<*book|report>
1253 \def\@endpart{\vfil\newpage\if@twoside\if@openleft %% added (2017/02/24)
1256\null\thispagestyle{empty}\newpage
1257\else\if@openright %% added (2016/12/13)
1258\null\thispagestyle{empty}\newpage1259\fi\fi %% added (2016/12/13, 2017/02/24)
1260
\fi
1261
\if@restonecol
1262\twocolumn
1263
\fi}
1264 %</book|report>
1254
1255

■章
\chapter 章の最初のページスタイルは，全体が empty でなければ plain にします。また，\@topnum

を 0 にして，章見出しの上に図や表が来ないようにします。
1265 %<*book|report>
1266 \newcommand{\chapter}{%
1267
1268

\if@openleft\cleardoublepage\else\if@openright\cleardoublepage\else\clearpage\fi\fi

47

1269
1270
1271
1272
1273
1274

\plainifnotempty % 元: \thispagestyle{plain}\global\@topnum\z@\if@english \@afterindentfalse \else \@afterindenttrue \fi\secdef{\@omit@numberfalse\@chapter}%{\@omit@numbertrue\@schapter}}\@chapter 章見出しを出力します。secnumdepth が 0 以上かつ \@mainmatter が真のとき章番号を出力します。
1275 \def\@chapter[#1]#2{%\ifnum \c@secnumdepth >\m@ne\if@mainmatter
1278\refstepcounter{chapter}%
1279\typeout{\@chapapp\thechapter\@chappos}%1280\addcontentsline{toc}{chapter}%
1281{\protect\numberline1282% {\if@english\thechapter\else\@chapapp\thechapter\@chappos\fi}%1283{\@chapapp\thechapter\@chappos}%
1284
#1}%
1285 %<book>\else\addcontentsline{toc}{chapter}{#1}\fi
1286
\else
1287
\addcontentsline{toc}{chapter}{#1}%
1288
\fi
1289
\chaptermark{#1}%1290\addtocontents{lof}{\protect\addvspace{10\jsc@mpt}}%
1291\addtocontents{lot}{\protect\addvspace{10\jsc@mpt}}%
1292\if@twocolumn
1293\@topnewpage[\@makechapterhead{#2}]%
1294
\else
1295
\@makechapterhead{#2}%1296\@afterheading
1297
\fi}
1276

1277 %<book>\@makechapterhead 実際に章見出しを組み立てます。\bfseries を \headfont に変えました。
1298 \def\@makechapterhead#1{%\vspace*{2\Cvs}% 欧文は 50pt{\parindent \z@ \raggedright \normalfont
1301\ifnum \c@secnumdepth >\m@ne1302 %<book>\if@mainmatter
1303\huge\headfont \@chapapp\thechapter\@chappos
1304\par\nobreak1305\vskip \Cvs % 欧文は 20pt
1306 %<book>
\fi
1307
\fi
1308
\interlinepenalty\@M1309\Huge \headfont #1\par\nobreak
1310\vskip 3\Cvs}} % 欧文は 40pt
1299
1300

\@schapter \chapter*{...} コマンドの本体です。\chaptermark を補いました。

48

1311 \def\@schapter#1{%
1312
1313
1314
1315
1316
1317

\chaptermark{#1}%\if@twocolumn\@topnewpage[\@makeschapterhead{#1}]%\else\@makeschapterhead{#1}\@afterheading\fi}\@makeschapterhead 番号なしの章見出しです。
1318 \def\@makeschapterhead#1{%\vspace*{2\Cvs}% 欧文は 50pt{\parindent \z@ \raggedright1321\normalfont1322\interlinepenalty\@M1323\Huge \headfont #1\par\nobreak1324\vskip 3\Cvs}} % 欧文は 40pt
1325 %</book|report>
1319
1320

■下位レベルの見出し\section 欧文版では \@startsection の第 4 引数を負にして最初の段落の字下げを禁止しています

が，和文版では正にして字下げするようにしています。
段組のときはなるべく左右の段が狂わないように工夫しています。
1326 \if@twocolumn
1327\newcommand{\section}{%1328 %<jspf>\ifx\maketitle\relax\else\maketitle\fi\@startsection{section}{1}{\z@}%{0.6\Cvs}{0.4\Cvs}%
1331 %<kiyou>{\Cvs}{0.5\Cvs}%
1332 %{\normalfont\large\headfont\@secapp}}1333{\normalfont\large\headfont\raggedright}}
1334 \else1335\newcommand{\section}{%1336\if@slide\clearpage\fi1337\@startsection{section}{1}{\z@}%1338{\Cvs \@plus.5\Cdp \@minus.2\Cdp}% 前アキ
1339{.5\Cvs \@plus.3\Cdp}% 後アキ1340 %{\normalfont\Large\headfont\@secapp}}1341{\normalfont\Large\headfont\raggedright}}
1342 \fi1329

1330 %<!kiyou>\subsection 同上です。
1343 \if@twocolumn\newcommand{\subsection}{\@startsection{subsection}{2}{\z@}%{\z@}{\if@slide .4\Cvs \else \z@ \fi}%1346{\normalfont\normalsize\headfont}}
1347 \else1348\newcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
1344
1345

49

1349
1350
1351

{\Cvs \@plus.5\Cdp \@minus.2\Cdp}% 前アキ{.5\Cvs \@plus.3\Cdp}% 後アキ{\normalfont\large\headfont}}

1352 \fi\subsubsection [2016-07-22] slide オプション指定時に \subsubsection の文字列と罫線が重なる問題に対処しました (forum:1982)。
1353 \if@twocolumn\newcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%{\z@}{\if@slide .4\Cvs \else \z@ \fi}%1356{\normalfont\normalsize\headfont}}
1357 \else1358\newcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%1359{\Cvs \@plus.5\Cdp \@minus.2\Cdp}%
1360{\if@slide .5\Cvs \@plus.3\Cdp \else \z@ \fi}%1361{\normalfont\normalsize\headfont}}
1362 \fi1354
1355\paragraph 見出しの後ろで改行されません。
\jsParagraphMark[2016-11-16] 従来は \paragraph の最初に出るマークを「■」に固定していましたが，このマークを変更可能にするため \jsParagraphMark というマクロに切り出しました。これ
で，たとえば\renewcommand{\jsParagraphMark}{★}とすれば「★」に変更できますし，マークを空にすることも容易です。なお，某学会クラス
では従来どおりマークは付きません。
1363 %<!jspf>\newcommand{\jsParagraphMark}{■}1364 \if@twocolumn\newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%{\z@}{\if@slide .4\Cvs \else -1\zw\fi}% 改行せず 1\zw のアキ
1367 %<jspf>{\normalfont\normalsize\headfont}}
1368 %<!jspf>{\normalfont\normalsize\headfont\jsParagraphMark}}
1369 \else1370\newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%1371{0.5\Cvs \@plus.5\Cdp \@minus.2\Cdp}%
1372{\if@slide .5\Cvs \@plus.3\Cdp \else -1\zw\fi}% 改行せず 1\zw のアキ
1373 %<jspf>{\normalfont\normalsize\headfont}}
1374 %<!jspf>{\normalfont\normalsize\headfont\jsParagraphMark}}
1375 \fi1365
1366\subparagraph 見出しの後ろで改行されません。
1376 \if@twocolumn\newcommand{\subparagraph}{\@startsection{subparagraph}{5}{\z@}%{\z@}{\if@slide .4\Cvs \@plus.3\Cdp \else -1\zw\fi}%1379{\normalfont\normalsize\headfont}}
1380 \else1381\newcommand{\subparagraph}{\@startsection{subparagraph}{5}{\z@}%1382{\z@}{\if@slide .5\Cvs \@plus.3\Cdp \else -1\zw\fi}%
1377
1378

50

{\normalfont\normalsize\headfont}}

1383
1384 \fi

9.3

リスト環境

第 𝑘 レベルのリストの初期化をするのが \@list𝑘 です（𝑘 = i, ii, iii, iv）。\@list𝑘は \leftmargin を \leftmargin𝑘 に設定します。
\leftmargini 二段組であるかないかに応じてそれぞれ 2em，2.5em でしたが，ここでは全角幅の 2 倍にしました。

[2002-05-11] 3\zw に変更しました。
[2005-03-19] 二段組は 2\zw に戻しました。
1385 \if@slide
1386\setlength\leftmargini{1\zw}

1387 \else\if@twocolumn\setlength\leftmargini{2\zw}
1390
\else
1391
\setlength\leftmargini{3\zw}
1392\fi
1393 \fi1388
1389\leftmarginii ii，iii，iv は \labelsep とそれぞれ ‘(m)’，‘vii.’，‘M.’ の幅との和より大きくすること\leftmarginiii になっています。ここでは全角幅の整数倍に丸めました。
\leftmarginiv 1394 \if@slide1395\setlength\leftmarginii {1\zw}\leftmarginv
1396\setlength\leftmarginiii{1\zw}\leftmarginvi 1397 \setlength\leftmarginiv {1\zw}
1398\setlength\leftmarginv {1\zw}
1399\setlength\leftmarginvi {1\zw}
1400 \else1401\setlength\leftmarginii {2\zw}1402\setlength\leftmarginiii{2\zw}1403\setlength\leftmarginiv {2\zw}1404\setlength\leftmarginv {1\zw}
1405\setlength\leftmarginvi {1\zw}
1406 \fi\labelsep \labelsep はラベルと本文の間の距離です。\labelwidth はラベルの幅です。これは二分\labelwidth に変えました。
1407 \setlength\labelsep {0.5\zw} % .5em
1408 \setlength \labelwidth{\leftmargini}1409 \addtolength\labelwidth{-\labelsep}\partopsep リスト環境の前に空行がある場合，\parskip と \topsep に \partopsep を加えた値だけ

縦方向の空白ができます。0 に改変しました。
1410 \setlength\partopsep{\z@} % {2\p@ \@plus 1\p@ \@minus 1\p@}51

\@beginparpenalty リストや段落環境の前後，リスト項目間に挿入されるペナルティです。
\@endparpenalty 1411 \@beginparpenalty -\@lowpenalty
1412 \@endparpenalty-\@lowpenalty\@itempenalty
1413 \@itempenalty-\@lowpenalty\@listi \@listi は \leftmargin，\parsep，\topsep，\itemsep などのトップレベルの定義を\@listI します。この定義は，フォントサイズコマンドによって変更されます（たとえば \small の中では小さい値に設定されます）。このため，\normalsize がすべてのパラメータを戻せる
ように，\@listI で \@listi のコピーを保存します。元の値はかなり複雑ですが，ここでは簡素化してしまいました。特に最初と最後に行送りの半分の空きが入るようにしてあります。アスキーの標準スタイルではトップレベルの itemize，enumerate 環境でだけ最初と最後に行送りの半分の空きが入るようになっていました。

[2004-09-27] \topsep のグルー +0.2
−0.1 \baselineskip を思い切って外しました。
1414 \def\@listi{\leftmargin\leftmargini\parsep \z@\topsep 0.5\baselineskip
1417\itemsep \z@ \relax}1418 \let\@listI\@listi
1415
1416

念のためパラメータを初期化します（実際には不要のようです）。
1419 \@listi\@listii 第 2〜6 レベルのリスト環境のパラメータの設定です。
\@listiii 1420 \def\@listii{\leftmargin\leftmarginii
1421\labelwidth\leftmarginii \advance\labelwidth-\labelsep\@listiv1422\topsep \z@\@listv 1423 \parsep \z@\@listvi 1424 \itemsep\parsep}
1425 \def\@listiii{\leftmargin\leftmarginiii
1426\labelwidth\leftmarginiii \advance\labelwidth-\labelsep
1427\topsep \z@1428\parsep \z@1429\itemsep\parsep}
1430 \def\@listiv {\leftmargin\leftmarginiv
1431\labelwidth\leftmarginiv
1432\advance\labelwidth-\labelsep}
1433 \def\@listv {\leftmargin\leftmarginv
1434\labelwidth\leftmarginv
1435\advance\labelwidth-\labelsep}
1436 \def\@listvi {\leftmargin\leftmarginvi
1437\labelwidth\leftmarginvi
1438\advance\labelwidth-\labelsep}■enumerate 環境

enumerate 環境はカウンタ enumi，enumii，enumiii，enumiv を使います。enum𝑛 は第 𝑛 レベルの番号です。
\theenumi 出力する番号の書式を設定します。これらは LATEX 本体（ltlists.dtx 参照）で定義済み\theenumii\theenumiii\theenumiv

52

ですが，ここでは表し方を変えています。\@arabic，\@alph，\@roman，\@Alph はそれぞれ算用数字，小文字アルファベット，小文字ローマ数字，大文字アルファベットで番号を出力する命令です。
1439 \renewcommand{\theenumi}{\@arabic\c@enumi}
1440 \renewcommand{\theenumii}{\@alph\c@enumii}
1441 \renewcommand{\theenumiii}{\@roman\c@enumiii}
1442 \renewcommand{\theenumiv}{\@Alph\c@enumiv}\labelenumi enumerate 環境の番号を出力する命令です。第 2 レベル以外は最後に欧文のピリオドが付\labelenumii きますが，これは好みに応じて取り払ってください。第 2 レベルの番号のかっこは和文用に\labelenumiii 換え，その両側に入る余分なグルーを \inhibitglue で取り除いています。
\labelenumiv 1443 \newcommand{\labelenumi}{\theenumi.}
1444 \newcommand{\labelenumii}{\inhibitglue （\theenumii）\inhibitglue}
1445 \newcommand{\labelenumiii}{\theenumiii.}
1446 \newcommand{\labelenumiv}{\theenumiv.}\p@enumii \p@enum𝑛 は \ref コマンドで enumerate 環境の第 𝑛 レベルの項目が参照されるときの書\p@enumiii 式です。これも第 2 レベルは和文用かっこにしました。
\p@enumiv 1447 \renewcommand{\p@enumii}{\theenumi}
1448 \renewcommand{\p@enumiii}{\theenumi\inhibitglue （\theenumii）}
1449 \renewcommand{\p@enumiv}{\p@enumiii\theenumiii}■itemize 環境\labelitemi itemize 環境の第 𝑛 レベルのラベルを作るコマンドです。
\labelitemii 1450 \newcommand\labelitemi{\textbullet}
1451 \newcommand\labelitemii{\normalfont\bfseries \textendash}\labelitemiii
1452 \newcommand\labelitemiii{\textasteriskcentered}\labelitemiv 1453 \newcommand\labelitemiv{\textperiodcentered}■description 環境
description (env.) 本来の description 環境では，項目名が短いと，説明部分の頭がそれに引きずられて左に出てしまいます。これを解決した新しい description の実装です。
1454 \newenvironment{description}{%
1455
1456
1457
1458
1459

\list{}{%\labelwidth=\leftmargin\labelsep=1\zw\advance \labelwidth by -\labelsep\let \makelabel=\descriptionlabel}}{\endlist}\descriptionlabel description 環境のラベルを出力するコマンドです。好みに応じて #1 の前に適当な空き（たとえば \hspace{1\zw}）を入れるのもいいと思います。
1460 \newcommand*\descriptionlabel[1]{\normalfont\headfont #1\hfil}

■概要

53

abstract (env.) 概要（要旨，梗概）を出力する環境です。book クラスでは各章の初めにちょっとしたことを書くのに使います。titlepage オプション付きの article クラスでは，独立したページに出力されます。abstract 環境は元は quotation 環境で作られていましたが，quotation
環境の右マージンをゼロにしたので，list 環境で作り直しました。

JSPF スタイルでは実際の出力は \maketitle で行われます。
1461 %<*book>1462 \newenvironment{abstract}{%\begin{list}{}{%\listparindent=1\zw
1465\itemindent=\listparindent
1466\rightmargin=0pt
1467\leftmargin=5\zw}\item[]}{\end{list}\vspace{\baselineskip}}
1468 %</book>1469 %<*article|report|kiyou>
1470 \newbox\@abstractbox
1471 \if@titlepage1472\newenvironment{abstract}{%1473\titlepage1474\null\vfil1475\@beginparpenalty\@lowpenalty
1476\begin{center}%
1477\headfont \abstractname
1478\@endparpenalty\@M1479\end{center}}%
1480{\par\vfil\null\endtitlepage}
1481 \else1482\newenvironment{abstract}{%
1483\if@twocolumn
1484\ifx\maketitle\relax
1485\section*{\abstractname}%
1486
\else
1487
\global\setbox\@abstractbox\hbox\bgroup1488\begin{minipage}[b]{\textwidth}1489\small\parindent1\zw
1490\begin{center}%
1491{\headfont \abstractname\vspace{-.5em}\vspace{\z@}}%1492\end{center}%
1493\list{}{%
1494\listparindent\parindent
1495\itemindent \listparindent
1496\rightmargin \leftmargin}%1497\item\relax
1498
\fi
1499
\else
1500
\small1501\begin{center}%
1502{\headfont \abstractname\vspace{-.5em}\vspace{\z@}}%
1463
1464

54

\end{center}%\list{}{%\listparindent\parindent\itemindent \listparindent\rightmargin \leftmargin}%\item\relax\fi}{\if@twocolumn\ifx\maketitle\relax\else\endlist\end{minipage}\egroup
\fi
\else
\endlist
\fi}

1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517 \fi1518 %</article|report|kiyou>
1519 %<*jspf>
1520 \newbox\@abstractbox
1521 \newenvironment{abstract}{%\global\setbox\@abstractbox\hbox\bgroup1523\begin{minipage}[b]{157\jsc@mmm}{\sffamily Abstract}\par1524\small1525\if@english \parindent6\jsc@mmm \else \parindent1\zw \fi}%1526{\end{minipage}\egroup}
1527 %</jspf>
1522■キーワードkeywords (env.) キーワードを準備する環境です。実際の出力は \maketitle で行われます。
1528 %<*jspf>
1529 %\newbox\@keywordsbox
1530 %\newenvironment{keywords}{%
1531 %\global\setbox\@keywordsbox\hbox\bgroup\begin{minipage}[b]{157\jsc@mmm}{\sffamily Keywords:}\par1533 %\small\parindent0\zw}%1534 % {\end{minipage}\egroup}
1535 %</jspf>
1532 %■verse 環境
verse (env.) 詩のための verse 環境です。
1536 \newenvironment{verse}{%
1537
1538
1539
1540
1541
1542

\let \\=\@centercr\list{}{%\itemsep \z@\itemindent -2\zw % 元: -1.5em\listparindent\itemindent\rightmargin \z@

55

1543
1544

\advance\leftmargin 2\zw}% 元: 1.5em\item\relax}{\endlist}■quotation 環境
quotation (env.) 段落の頭の字下げ量を 1.5em から \parindent に変えました。また，右マージンを 0 にしました。
1545 \newenvironment{quotation}{%
1546
1547
1548
1549
1550

\list{}{%\listparindent\parindent\itemindent\listparindent\rightmargin \z@}%\item\relax}{\endlist}■quote 環境
quote (env.) quote 環境は，段落がインデントされないことを除き，quotation 環境と同じです。
1551 \newenvironment{quote}%
1552{\list{}{\rightmargin\z@}\item\relax}{\endlist}■定理など

ltthm.dtx 参照。たとえば次のように定義します。

\newtheorem{definition}{定義}\newtheorem{axiom}{公理}\newtheorem{theorem}{定理}[2001-04-26] 定理の中はイタリック体になりましたが，これでは和文がゴシック体になってしまうので，\itshape を削除しました。

[2009-08-23] \bfseries を \headfont に直し，\labelsep を 1\zw にし，括弧を全角にしました。
1553 \def\@begintheorem#1#2{\trivlist\labelsep=1\zw\item[\hskip \labelsep{\headfont #1\ #2}]}
1555 \def\@opargbegintheorem#1#2#3{\trivlist\labelsep=1\zw
1556\item[\hskip \labelsep{\headfont #1\ #2（#3）}]}1554

titlepage (env.) タイトルを独立のページに出力するのに使われます。

[2017-02-24] コミュニティ版 pLATEX の標準クラス 2017/02/15 に合わせて，book クラス
でタイトルを必ず奇数ページに送るようにしました。といっても，横組クラスしかありませんでしたので，従来の挙動は何も変わっていません。また，book 以外の場合のページ番号のリセットもコミュニティ版 pLATEX の標準クラス 2017/02/15 に合わせましたが，こちらも片面印刷あるいは独立のタイトルページを作らないクラスばかりでしたので，従来の挙動は何も変わらずに済みました。
1557 \newenvironment{titlepage}{%1558 %<book>
1559
1560

\pltx@cleartooddpage %% 2017-02-24\if@twocolumn\@restonecoltrue\onecolumn

56

\else\@restonecolfalse\newpage\fi\thispagestyle{empty}%\ifodd\c@page\setcounter{page}\@ne\else\setcounter{page}\z@\fi}%{\if@restonecol\twocolumn \else \newpage \fi\if@twoside\else\setcounter{page}\@ne
\fi}

1561
1562
1563
1564
1565
1566
1567
1568
1569
1570

■付録
\appendix 本文と付録を分離するコマンドです。
1571 %<*!book&!report>
1572 \newcommand{\appendix}{\par\setcounter{section}{0}%\setcounter{subsection}{0}%1575\gdef\presectionname{\appendixname}%
1576\gdef\postsectionname{}%1577 % \gdef\thesection{\@Alph\c@section}% [2003-03-02]
1578\gdef\thesection{\presectionname\@Alph\c@section\postsectionname}%
1579\gdef\thesubsection{\@Alph\c@section.\@arabic\c@subsection}}
1580 %</!book&!report>
1581 %<*book|report>
1582 \newcommand{\appendix}{\par1583\setcounter{chapter}{0}%1584\setcounter{section}{0}%1585\gdef\@chapapp{\appendixname}%
1586\gdef\@chappos{}%1587\gdef\thechapter{\@Alph\c@chapter}}
1588 %</book|report>
1573
1574

9.4

パラメータの設定■array と tabular 環境\arraycolsep array 環境の列間には \arraycolsep の 2 倍の幅の空きが入ります。
1589 \setlength\arraycolsep{5\jsc@mpt}\tabcolsep tabular 環境の列間には \tabcolsep の 2 倍の幅の空きが入ります。
1590 \setlength\tabcolsep{6\jsc@mpt}\arrayrulewidth array，tabular 環境内の罫線の幅です。
1591 \setlength\arrayrulewidth{.4\jsc@mpt}\doublerulesep array，tabular 環境での二重罫線間のアキです。
1592 \setlength\doublerulesep{2\jsc@mpt}57

■tabbing 環境\tabbingsep \' コマンドで入るアキです。
1593 \setlength\tabbingsep{\labelsep}■minipage 環境\@mpfootins minipage 環境の脚注の \skip\@mpfootins は通常のページの \skip\footins と同じ働きをします。
1594 \skip\@mpfootins = \skip\footins■framebox 環境\fboxsep \fbox，\framebox で内側のテキストと枠との間の空きです。
\fboxrule \fbox，\framebox の罫線の幅です。
1595 \setlength\fboxsep{3\jsc@mpt}1596 \setlength\fboxrule{.4\jsc@mpt}■equation と eqnarray 環境\theequation 数式番号を出力するコマンドです。
1597 %<!book&!report>\renewcommand \theequation {\@arabic\c@equation}
1598 %<*book|report>
1599 \@addtoreset{equation}{chapter}
1600 \renewcommand\theequation{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation}

1601

1602 %</book|report>\jot eqnarray の行間に余分に入るアキです。デフォルトの値をコメントアウトして示しておきます。
1603 % \setlength\jot{3pt}\@eqnnum 数式番号の形式です。デフォルトの値をコメントアウトして示しておきます。

\inhibitglue （\theequation）\inhibitglue のように和文かっこを使うことも可能です。
1604 % \def\@eqnnum{(\theequation)}amsmath パッケージを使う場合は \tagform@ を次のように修正します。
1605 % \def\tagform@#1{\maketag@@@{（\ignorespaces#1\unskip\@@italiccorr ）}}

9.5

フロート

タイプ TYPE のフロートオブジェクトを扱うには，次のマクロを定義します。

\fps@TYPE フロートを置く位置（float placement specifier）です。
58

\ftype@TYPE フロートの番号です。2 の累乗（1，2，4，…）でなければなりません。
\ext@TYPE フロートの目次を出力するファイルの拡張子です。
\fnum@TYPE キャプション用の番号を生成するマクロです。
\@makecaption⟨num⟩⟨text⟩ キャプションを出力するマクロです。⟨num⟩ は \fnum@...
の生成する番号， ⟨text⟩ はキャプションのテキストです。テキストは適当な幅の\parbox に入ります。
■figure 環境\c@figure 図番号のカウンタです。
\thefigure 図番号を出力するコマンドです。
1606 %<*!book&!report>
1607 \newcounter{figure}1608 \renewcommand \thefigure {\@arabic\c@figure}1609 %</!book&!report>
1610 %<*book|report>
1611 \newcounter{figure}[chapter]
1612 \renewcommand \thefigure1613{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}1614 %</book|report>\fps@figure figure のパラメータです。\figurename の直後に ~ が入っていましたが，ここでは外し\ftype@figure ました。
\ext@figure 1615 \def\fps@figure{tbp}1616 \def\ftype@figure{1}\fnum@figure1617 \def\ext@figure{lof}1618 \def\fnum@figure{\figurename\nobreak\thefigure}figure (env.) * 形式は段抜きのフロートです。
figure* (env.) 1619 \newenvironment{figure}%
1620{\@float{figure}}%1621{\end@float}
1622 \newenvironment{figure*}%1623{\@dblfloat{figure}}%1624{\end@dblfloat}■table 環境\c@table 表番号カウンタと表番号を出力するコマンドです。アスキー版では \thechapter. が\thetable \thechapter{}・ になっていますが，ここではオリジナルのままにしています。
1625 %<*!book&!report>
1626 \newcounter{table}
1627 \renewcommand\thetable{\@arabic\c@table}
1628 %</!book&!report>
1629 %<*book|report>
1630 \newcounter{table}[chapter]59

1631 \renewcommand \thetable{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table}

1632

1633 %</book|report>\fps@table table のパラメータです。\tablename の直後に ~ が入っていましたが，ここでは外しま\ftype@table した。
\ext@table 1634 \def\fps@table{tbp}1635 \def\ftype@table{2}\fnum@table
1636 \def\ext@table{lot}1637 \def\fnum@table{\tablename\nobreak\thetable}table (env.) * は段抜きのフロートです。
table* (env.) 1638 \newenvironment{table}%
1639{\@float{table}}%1640{\end@float}1641 \newenvironment{table*}%1642{\@dblfloat{table}}%1643{\end@dblfloat}

9.6

キャプション\@makecaption \caption コマンドにより呼び出され，実際にキャプションを出力するコマンドです。第 1

引数はフロートの番号，第 2 引数はテキストです。
\abovecaptionskip それぞれキャプションの前後に挿入されるスペースです。\belowcaptionskip が 0 になっ\belowcaptionskip ていましたので，キャプションを表の上につけた場合にキャプションと表がくっついてしまうのを直しました。
1644 \newlength\abovecaptionskip
1645 \newlength\belowcaptionskip
1646 \setlength\abovecaptionskip{5\jsc@mpt} % 元: 10\p@1647 \setlength\belowcaptionskip{5\jsc@mpt} % 元: 0\p@

実際のキャプションを出力します。オリジナルと異なり，文字サイズを \small にし，キャプションの幅を 2cm 狭くしました。

[2003-11-05] ロジックを少し変えてみました。
[2015-05-26] listings パッケージを使うときに title を指定すると次のエラーが出るのを修正。
! Missing number, treated as zero.
1648 %<*!jspf>
1649 % \long\def\@makecaption#1#2{{\small
1650 %
1651 %
1652 %
1653 %\advance\leftskip10\jsc@mmm\advance\rightskip10\jsc@mmm\vskip\abovecaptionskip\sbox\@tempboxa{#1{\hskip1\zw}#2}%60

1654 %

\ifdim \wd\@tempboxa >\hsize#1{\hskip1\zw}#2\par1656 %\else
1657 %\global \@minipagefalse
1658 %\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
1659 %\fi
1660 %\vskip\belowcaptionskip}}
1661 \long\def\@makecaption#1#2{{\small
1662\advance\leftskip .0628\linewidth
1663\advance\rightskip .0628\linewidth
1664\vskip\abovecaptionskip
1665\sbox\@tempboxa{#1{\hskip1\zw}#2}%
1666\ifdim \wd\@tempboxa <\hsize \centering \fi
1667#1{\hskip1\zw}#2\par1668\vskip\belowcaptionskip}}
1669 %</!jspf>
1670 %<*jspf>
1671 \long\def\@makecaption#1#2{%
1672\vskip\abovecaptionskip
1673\sbox\@tempboxa{\small\sffamily #1\quad #2}%
1674
\ifdim \wd\@tempboxa >\hsize
1675{\small\sffamily
1676\list{#1}{%
1677\renewcommand{\makelabel}[1]{##1\hfil}
1678\itemsep\z@1679\itemindent \z@1680\labelsep\z@1681\labelwidth 11\jsc@mmm
1682\listparindent\z@1683\leftmargin 11\jsc@mmm}\item\relax #2\endlist}
1684
\else
1685
\global \@minipagefalse
1686\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
1687
\fi
1688
\vskip\belowcaptionskip}
1689 %</jspf>
1655 %

10

フォントコマンドここでは LATEX 2.09 で使われていたコマンドを定義します。これらはテキストモードと数式モードのどちらでも動作します。これらは互換性のためのもので，できるだけ \text...
と \math... を使ってください。

[2016-07-15] KOMA-Script 中の \scr@DeclareOldFontCommand に倣い，これらの命令を使うときには警告を発することにしました。

[2016-07-16] 警告を最初の一回だけ発することにしました。また，例外的に警告を出さな
いようにするスイッチも付けます。

61

\if@jsc@warnoldfontcmd

if@jsc@warnoldfontcmdexception 1690 \newif\if@jsc@warnoldfontcmd
1691 \@jsc@warnoldfontcmdtrue
1692 \newif\if@jsc@warnoldfontcmdexception
1693 \@jsc@warnoldfontcmdexceptionfalse\jsc@DeclareOldFontCommand
1694 \newcommand*{\jsc@DeclareOldFontCommand}[3]{%
1695
1696
1697
1698
1699

\DeclareOldFontCommand{#1}{%\jsc@warnoldfontcmd{#1}#2%}{%\jsc@warnoldfontcmd{#1}#3%}%

1700 }
1701 \DeclareRobustCommand*{\jsc@warnoldfontcmd}[1]{%\if@jsc@warnoldfontcmdexception\else\if@jsc@warnoldfontcmd
1703\ClassWarning{\jsc@clsname}{%1704
deprecated old font command `\string#1' used.\MessageBreak1705
You should note, that since 1994 LaTeX2e provides a\MessageBreak1706
new font selection scheme called NFSS2 with several\MessageBreak
1707
new, combinable font commands. This \jsc@clsname\MessageBreak1708 class has defined the old font commands like\MessageBreak1709 `\string#1' only for compatibility%
1710
}%
1711
\global\@jsc@warnoldfontcmdfalse
1712\fi\fi
1713 }
1702\mc フォントファミリを変更します。
\gt 1714 \jsc@DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
1715 \jsc@DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}\rm
1716 \jsc@DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}\sf 1717 \jsc@DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}\tt 1718 \jsc@DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}\bf ボールドシリーズにします。通常のミーディアムシリーズに戻すコマンドは \mdseriesです。
1719 \jsc@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}\it フォントシェイプを変えるコマンドです。斜体とスモールキャップスは数式中では何もしま。通常のアップライト体に戻すコマンドは \upshape\sl せん（警告メッセージを出力します）\sc です。
1720 \jsc@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
1721 \jsc@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
1722 \jsc@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}\cal 数式モード以外では何もしません（警告を出します）。
\mit 1723 \DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
1724 \DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}

62

11

相互参照

11.1

目次の類

\section コマンドは .toc ファイルに次のような行を出力します。
\contentsline{section}{タイトル}{ページ}
たとえば \section に見出し番号が付く場合，上の「タイトル」は\numberline{番号}{見出し}となります。この「番号」は \thesection コマンドで生成された見出し番号です。

figure 環境の \caption コマンドは .lof ファイルに次のような行を出力します。
\contentsline{figure}{\numberline{番号}{キャプション}{ページ}
この「番号」は \thefigure コマンドで生成された図番号です。

table 環境も同様です。
\contentsline{...} は \l@... と い う コ マ ン ド を 実 行 す る の で， あ ら か じ め\l@chapter， \l@section， \l@figure などを定義しておかなければなりません。これらの多くは \@dottedtocline コマンドを使って定義します。これは\@dottedtocline{レベル}{インデント}{幅}{タイトル}{ページ}という書式です。
レベル

この値が tocdepth 以下のときだけ出力されます。\chapter はレベル 0，\section
はレベル 1，等々です。

インデント
幅

左側の字下げ量です。

「タイトル」に \numberline コマンドが含まれる場合，節番号が入る箱の幅です。

\@pnumwidth ページ番号の入る箱の幅です。
\@tocrmarg 右マージンです。\@tocrmarg ≥ \@pnumwidth とします。
\@dotsep 点の間隔です（単位 mu）。
\c@tocdepth 目次ページに出力する見出しレベルです。元は article で 3，その他で 2 でしたが，ここでは一つずつ減らしています。
1725 \newcommand\@pnumwidth{1.55em}
1726 \newcommand\@tocrmarg{2.55em}
1727 \newcommand\@dotsep{4.5}1728 %<!book&!report>\setcounter{tocdepth}{2}1729 %<book|report>\setcounter{tocdepth}{1}

■目次

63

\tableofcontents 目次を生成します。
\jsc@tocl@width [2013-12-30] \prechaptername などから見積もった目次のラベルの長さです。(by ts)
1730 \newdimen\jsc@tocl@width
1731 \newcommand{\tableofcontents}{%1732 %<*book|report>\settowidth\jsc@tocl@width{\headfont\prechaptername\postchaptername}%
1734\settowidth\@tempdima{\headfont\appendixname}%
1735\ifdim\jsc@tocl@width<\@tempdima \setlength\jsc@tocl@width{\@tempdima}\fi1736\ifdim\jsc@tocl@width<2\zw \divide\jsc@tocl@width by 2 \advance\jsc@tocl@width 1\zw\fi
1737\if@twocolumn
1738\@restonecoltrue\onecolumn
1739
\else
1740
\@restonecolfalse
1741
\fi
1742
\chapter*{\contentsname}%
1743\@mkboth{\contentsname}{}%1744 %</book|report>
1745 %<*!book&!report>
1746\settowidth\jsc@tocl@width{\headfont\presectionname\postsectionname}%
1747\settowidth\@tempdima{\headfont\appendixname}%
1748\ifdim\jsc@tocl@width<\@tempdima\relax\setlength\jsc@tocl@width{\@tempdima}\fi1749\ifdim\jsc@tocl@width<2\zw \divide\jsc@tocl@width by 2 \advance\jsc@tocl@width 1\zw\fi1750\section*{\contentsname}%
1751\@mkboth{\contentsname}{\contentsname}%
1752 %</!book&!report>
1753\@starttoc{toc}%
1754 %<book|report> \if@restonecol\twocolumn\fi1755 }
1733\l@part 部の目次です。
1756 \newcommand*{\l@part}[2]{%\ifnum \c@tocdepth >-2\relax
1758 %<!book&!report>\addpenalty\@secpenalty
1759 %<book|report>\addpenalty{-\@highpenalty}%
1760\addvspace{2.25em \@plus\jsc@mpt}%1761\begingroup
1762\parindent \z@1763 %\@pnumwidth should be \@tocrmarg
1764 %\rightskip \@pnumwidth
1765\rightskip \@tocrmarg
1766\parfillskip -\rightskip
1767{\leavevmode1768\large \headfont
1769\setlength\@lnumwidth{4\zw}%
1770#1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par1771\nobreak1772 %<book|report>\global\@nobreaktrue
1773 %<book|report>\everypar{\global\@nobreakfalse\everypar{}}%
1757

64

1774
1775

\endgroup\fi}\l@chapter 章の目次です。\@lnumwidth を 4.683\zw に増やしました。

[2013-12-30] \@lnumwidth を \jsc@tocl@width から決めるようにしてみました。 (byts)
1776 %<*book|report>
1777 \newcommand*{\l@chapter}[2]{%\ifnum \c@tocdepth >\m@ne\addpenalty{-\@highpenalty}%
1780\addvspace{1.0em \@plus\jsc@mpt}
1781 %\vskip 1.0em \@plus\p@% book.cls では↑がこうなっている
1782\begingroup
1783\parindent\z@1784 %\rightskip\@pnumwidth
1785\rightskip\@tocrmarg
1786\parfillskip-\rightskip
1787\leavevmode\headfont
1788% \if@english\setlength\@lnumwidth{5.5em}\else\setlength\@lnumwidth{4.683\zw}\fi1789\setlength\@lnumwidth{\jsc@tocl@width}\advance\@lnumwidth 2.683\zw
1790\advance\leftskip\@lnumwidth \hskip-\leftskip
1791#1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par1792\penalty\@highpenalty
1793\endgroup1794\fi}1795 %</book|report>
1778
1779

\l@section 節の目次です。
1796 %<*!book&!report>
1797 \newcommand*{\l@section}[2]{%\ifnum \c@tocdepth >\z@\addpenalty{\@secpenalty}%
1800\addvspace{1.0em \@plus\jsc@mpt}%
1801\begingroup
1802\parindent\z@1803 %\rightskip\@pnumwidth
1804\rightskip\@tocrmarg
1805\parfillskip-\rightskip
1806\leavevmode\headfont
1807%\setlength\@lnumwidth{4\zw}% 元 1.5em [2003-03-02]
1808\setlength\@lnumwidth{\jsc@tocl@width}\advance\@lnumwidth 2\zw
1809\advance\leftskip\@lnumwidth \hskip-\leftskip
1810#1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par1811\endgroup1812\fi}1813 %</!book&!report>
1798
1799

インデントと幅はそれぞれ 1.5em，2.3em でしたが，1\zw，3.683\zw に変えました。
1814 %<book|report> % \newcommand*{\l@section}{\@dottedtocline{1}{1\zw}{3.683\zw}}65[2013-12-30] 上のインデントは \jsc@tocl@width から決めるようにしました。(by ts)\l@subsection さらに下位レベルの目次項目の体裁です。あまり使ったことがありませんので，要修正かも\l@subsubsection しれません。
\l@paragraph[2013-12-30] ここも \jsc@tocl@width から決めるようにしてみました。(by ts)\l@subparagraph 1815 %<*!book&!report>
1816 % \newcommand*{\l@subsection}{\@dottedtocline{2}{1.5em}{2.3em}}
1817 % \newcommand*{\l@subsubsection}{\@dottedtocline{3}{3.8em}{3.2em}}
1818 % \newcommand*{\l@paragraph}{\@dottedtocline{4}{7.0em}{4.1em}}
1819 % \newcommand*{\l@subparagraph} {\@dottedtocline{5}{10em}{5em}}
1820 %
1821 % \newcommand*{\l@subsection}{\@dottedtocline{2}{1\zw}{3\zw}}1822 % \newcommand*{\l@subsubsection}{\@dottedtocline{3}{2\zw}{3\zw}}1823 % \newcommand*{\l@paragraph}{\@dottedtocline{4}{3\zw}{3\zw}}1824 % \newcommand*{\l@subparagraph} {\@dottedtocline{5}{4\zw}{3\zw}}1825 %
1826 \newcommand*{\l@subsection}{%1827\@tempdima\jsc@tocl@width \advance\@tempdima -1\zw
1828\@dottedtocline{2}{\@tempdima}{3\zw}}1829 \newcommand*{\l@subsubsection}{%1830\@tempdima\jsc@tocl@width \advance\@tempdima 0\zw1831\@dottedtocline{3}{\@tempdima}{4\zw}}1832 \newcommand*{\l@paragraph}{%1833\@tempdima\jsc@tocl@width \advance\@tempdima 1\zw
1834\@dottedtocline{4}{\@tempdima}{5\zw}}1835 \newcommand*{\l@subparagraph}{%1836\@tempdima\jsc@tocl@width \advance\@tempdima 2\zw1837\@dottedtocline{5}{\@tempdima}{6\zw}}1838 %</!book&!report>
1839 %<*book|report>
1840 % \newcommand*{\l@subsection}{\@dottedtocline{2}{3.8em}{3.2em}}
1841 % \newcommand*{\l@subsubsection}{\@dottedtocline{3}{7.0em}{4.1em}}
1842 % \newcommand*{\l@paragraph}{\@dottedtocline{4}{10em}{5em}}
1843 % \newcommand*{\l@subparagraph} {\@dottedtocline{5}{12em}{6em}}
1844 \newcommand*{\l@section}{%1845\@tempdima\jsc@tocl@width \advance\@tempdima -1\zw
1846\@dottedtocline{1}{\@tempdima}{3.683\zw}}
1847 \newcommand*{\l@subsection}{%1848\@tempdima\jsc@tocl@width \advance\@tempdima 2.683\zw
1849\@dottedtocline{2}{\@tempdima}{3.5\zw}}1850 \newcommand*{\l@subsubsection}{%1851\@tempdima\jsc@tocl@width \advance\@tempdima 6.183\zw
1852\@dottedtocline{3}{\@tempdima}{4.5\zw}}1853 \newcommand*{\l@paragraph}{%1854\@tempdima\jsc@tocl@width \advance\@tempdima 10.683\zw
1855\@dottedtocline{4}{\@tempdima}{5.5\zw}}1856 \newcommand*{\l@subparagraph}{%1857\@tempdima\jsc@tocl@width \advance\@tempdima 16.183\zw

66

\@dottedtocline{5}{\@tempdima}{6.5\zw}}1858

1859 %</book|report>\numberline 欧文版 LATEX では \numberline{...} は幅 \@tempdima の箱に左詰めで出力する命令で\@lnumwidth すが，アスキー版では \@tempdima の代わりに \@lnumwidth という変数で幅を決めるように再定義しています。後続文字が全角か半角かでスペースが変わらないように \hspace を入れておきました。
1860 \newdimen\@lnumwidth
1861 \def\numberline#1{\hb@xt@\@lnumwidth{#1\hfil}\hspace{0pt}}\@dottedtocline LATEX 本体（ltsect.dtx 参照）での定義と同じですが，\@tempdima を \@lnumwidth に\jsTocLine 変えています。

[2018-06-23] デフォルトでは . . . . . . . . . . . . . のようにベースラインになります。
これを変更可能にするため，\jsTocLine というマクロに切り出しました。例えば，仮想ボディの中央・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・ に変更したい場合は\renewcommand{\jsTocLine}{\leaders \hbox {\hss ・\hss}\hfill}とします。
1862 \def\jsTocLine{\leaders\hbox{%
1863$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill}

1864 \def\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874

\vskip \z@ \@plus.2\jsc@mpt{\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip\parindent #2\relax\@afterindenttrue\interlinepenalty\@M\leavevmode\@lnumwidth #3\relax\advance\leftskip \@lnumwidth \null\nobreak\hskip -\leftskip{#4}\nobreak\jsTocLine \nobreak\hb@xt@\@pnumwidth{%\hfil\normalfont \normalcolor #5}\par}\fi}■図目次と表目次\listoffigures 図目次を出力します。
1875 \newcommand{\listoffigures}{%
1876 %<*book|report>\if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi1879\chapter*{\listfigurename}%
1880\@mkboth{\listfigurename}{}%1881 %</book|report>
1882 %<*!book&!report>
1883\section*{\listfigurename}%1884\@mkboth{\listfigurename}{\listfigurename}%
1885 %</!book&!report>
1886\@starttoc{lof}%
1877
1878

67

1887 %<book|report>\if@restonecol\twocolumn\fi1888 }\l@figure 図目次の項目を出力します。
1889 \newcommand*{\l@figure}{\@dottedtocline{1}{1\zw}{3.683\zw}}\listoftables 表目次を出力します。
1890 \newcommand{\listoftables}{%
1891 %<*book|report>\if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi1894\chapter*{\listtablename}%
1895\@mkboth{\listtablename}{}%1896 %</book|report>
1897 %<*!book&!report>
1898\section*{\listtablename}%
1899\@mkboth{\listtablename}{\listtablename}%
1900 %</!book&!report>
1901\@starttoc{lot}%1902 %<book|report> \if@restonecol\twocolumn\fi1903 }
1892
1893\l@table 表目次は図目次と同じです。
1904 \let\l@table\l@figure

11.2

参考文献

\bibindent オープンスタイルの参考文献で使うインデント幅です。元は 1.5em でした。
1905 \newdimen\bibindent
1906 \setlength\bibindent{2\zw}

thebibliography (env.) 参考文献リストを出力します。

[2016-07-16] LATEX 2.09 で使われていたフォントコマンドの警告を，文献スタイル（.bst）
ではよく \bf がいまだに用いられることが多いため，thebibliography 環境内では例外的に出さないようにしました。
1907 \newenvironment{thebibliography}[1]{%\global\@jsc@warnoldfontcmdexceptiontrue
1909\global\let\presectionname\relax
1910\global\let\postsectionname\relax
1911 %<article|jspf> \section*{\refname}\@mkboth{\refname}{\refname}%
1912 %<*kiyou>
1913\vspace{1.5\baselineskip}
1914\subsubsection*{\refname}\@mkboth{\refname}{\refname}%
1915\vspace{0.5\baselineskip}
1916 %</kiyou>
1917 %<book|report> \chapter*{\bibname}\@mkboth{\bibname}{}%1918 %<book|report> \addcontentsline{toc}{chapter}{\bibname}%
1908

68

\list{\@biblabel{\@arabic\c@enumiv}}%{\settowidth\labelwidth{\@biblabel{#1}}%
1921\leftmargin\labelwidth1922\advance\leftmargin\labelsep
1923\@openbib@code
1924\usecounter{enumiv}%
1925\let\p@enumiv\@empty
1926\renewcommand\theenumiv{\@arabic\c@enumiv}}%
1927 %<kiyou>\small1928\sloppy1929\clubpenalty4000
1930\@clubpenalty\clubpenalty
1931\widowpenalty4000%
1932\sfcode`\.\@m}1933{\def\@noitemerr
1934{\@latex@warning{Empty `thebibliography' environment}}%
1935\endlist
1936\global\@jsc@warnoldfontcmdexceptionfalse}
1919
1920

\newblock \newblock はデフォルトでは小さなスペースを生成します。
1937 \newcommand{\newblock}{\hskip .11em\@plus.33em\@minus.07em}\@openbib@code \@openbib@code はデフォルトでは何もしません。この定義は openbib オプションによって変更されます。
1938 \let\@openbib@code\@empty\@biblabel \bibitem[...] のラベルを作ります。ltbibl.dtx の定義の半角 [] を全角［］に変え，余分なスペースが入らないように \inhibitglue ではさみました。とりあえずコメントアウ
トしておきますので，必要に応じて生かしてください。
1939 % \def\@biblabel#1{\inhibitglue ［#1］\inhibitglue}\cite 文献の番号を出力する部分は ltbibl.dtx で定義されていますが，コンマとかっこを和文\@cite フォントにするには次のようにします。とりあえずコメントアウトしておきましたので，必\@citex 要に応じて生かしてください。かっこの前後に入るグルーを \inhibitglue で取っていますので，オリジナル同様，Knuth~\cite{knu} のように半角空白で囲んでください。
1940 % \def\@citex[#1]#2{\leavevmode
1941 %\let\@citea\@empty\@cite{\@for\@citeb:=#2\do1943 %{\@citea\def\@citea{，\inhibitglue\penalty\@m\ }%1944 %\edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
1945 %\if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi1946 %\@ifundefined{b@\@citeb}{\mbox{\normalfont\bfseries ?}%1947 %\G@refundefinedtrue
1948 %\@latex@warning1949 %{Citation `\@citeb' on page \thepage \space undefined}}%1950 %{\@cite@ofmt{\csname b@\@citeb\endcsname}}}}{#1}}1951 % \def\@cite#1#2{\inhibitglue ［{#1\if@tempswa ，#2\fi}］\inhibitglue}1942 %

69

引用番号を上ツキの 1）のようなスタイルにするには次のようにします。\cite の先頭に

\unskip を付けて先行のスペース（~ も）を帳消しにしています。
1952 % \DeclareRobustCommand\cite{\unskip
1953 %\@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}1954 % \def\@cite#1#2{$^{\hbox{\scriptsize{#1\if@tempswa
1955 %，\inhibitglue\ #2\fi}）}}$}

11.3

索引

theindex (env.) 2〜3 段組の索引を作成します。最後が偶数ページのときにマージンがずれる現象を直しました（Thanks: 藤村さん）。
1956 \newenvironment{theindex}{% 索引を 3 段組で出力する環境\if@twocolumn\onecolumn\@restonecolfalse
1959
\else
1960
\clearpage\@restonecoltrue
1961
\fi
1962
\columnseprule.4pt \columnsep 2\zw
1963
\ifx\multicols\@undefined
1964 %<book|report>\twocolumn[\@makeschapterhead{\indexname}%
1965 %<book|report>\addcontentsline{toc}{chapter}{\indexname}]%1966 %<!book&!report>\def\presectionname{}\def\postsectionname{}%1967 %<!book&!report>\twocolumn[\section*{\indexname}]%
1968
\else
1969
\ifdim\textwidth<\fullwidth
1970\setlength{\evensidemargin}{\oddsidemargin}1971\setlength{\textwidth}{\fullwidth}
1972\setlength{\linewidth}{\fullwidth}
1973 %<book|report>\begin{multicols}{3}[\chapter*{\indexname}%
1974 %<book|report>\addcontentsline{toc}{chapter}{\indexname}]%1975 %<!book&!report>\def\presectionname{}\def\postsectionname{}%1976 %<!book&!report>\begin{multicols}{3}[\section*{\indexname}]%
1977
\else
1978 %<book|report>\begin{multicols}{2}[\chapter*{\indexname}%
1979 %<book|report>\addcontentsline{toc}{chapter}{\indexname}]%1980 %<!book&!report>\def\presectionname{}\def\postsectionname{}%1981 %<!book&!report>\begin{multicols}{2}[\section*{\indexname}]%
1982
\fi
1983
\fi
1984 %<book|report>\@mkboth{\indexname}{}%1985 %<!book&!report>\@mkboth{\indexname}{\indexname}%
1986\plainifnotempty % \thispagestyle{plain}
1987\parindent\z@1988\parskip\z@ \@plus .3\jsc@mpt\relax
1989\let\item\@idxitem
1990\raggedright1991\footnotesize\narrowbaselines
1957
1958

70

1992
1993
1994
1995
1996
1997
1998
1999

}{
\ifx\multicols\@undefined\if@restonecol\onecolumn\fi\else\end{multicols}\fi\clearpage}\@idxitem 索引項目の字下げ幅です。\@idxitem は \item の項目の字下げ幅です。
\subitem 2000 \newcommand{\@idxitem}{\par\hangindent 4\zw} % 元 40pt
2001 \newcommand{\subitem}{\@idxitem \hspace*{2\zw}} % 元 20pt
\subsubitem
2002 \newcommand{\subsubitem}{\@idxitem \hspace*{3\zw}} % 元 30pt
\indexspace 索引で先頭文字ごとのブロックの間に入るスペースです。
2003 \newcommand{\indexspace}{\par \vskip 10\jsc@mpt \@plus5\jsc@mpt \@minus3\jsc@mpt\relax}\seename 索引の \see，\seealso コマンドで出力されるものです。デフォルトはそれぞれ see ，see also
\alsoname という英語ですが，ここではとりあえず両方とも「→」に変えました。⇒（$\Rightarrow$）などでもいいでしょう。
2004 \newcommand\seename{\if@english see\else → \fi}2005 \newcommand\alsoname{\if@english see also\else → \fi}

11.4

脚注

\footnote 和 文 の 句 読 点・閉 じ か っ こ 類 の 直 後 で 用 い た 際 に 余 分 な ア キ が 入 る の を 防 ぐ た め，
\footnotemark \inhibitglue を入れることにします。
2006 \let\footnotes@ve=\footnote
2007 \def\footnote{\inhibitglue\footnotes@ve}
2008 \let\footnotemarks@ve=\footnotemark
2009 \def\footnotemark{\inhibitglue\footnotemarks@ve}\@makefnmark 脚注番号を付ける命令です。ここでは脚注番号の前に記号 ∗ を付けています。
「注 1」の形式にするには \textasteriskcentered を 注 \kern0.1em にしてください。\@xfootnotenextと合わせて，もし脚注番号が空なら記号も出力しないようにしてあります。

[2002-04-09] インプリメントの仕方を変えたため消しました。
[2013-04-23] 新しい pTEX では脚注番号のまわりにスペースが入りすぎることを防ぐた

め，北川さんのパッチ [qa:57090] を取り込みました。

[2013-05-14] plcore.ltx に倣った形に書き直しました（Thanks: 北川さん）。
[2014-07-02 LTJ] \ifydir を使わない形に書換えました。
[2016-07-11] コミュニティ版 pLATEX の変更に追随しました（Thanks: 角藤さん）。

[2016-08-27 LTJ] 結果的に \@makefnmark の定義が LuaTEX-ja 本体 (lltjcore.sty) 中のものと全く同じになっていたので，削除します，\thefootnote 脚注番号に * 印が付くようにしました。ただし，番号がゼロのときは * 印も脚注番号も付

きません。

71

[2003-08-15] \textasteriskcentered ではフォントによって下がりすぎるので変更しました。

[2016-10-08] TODO: 脚注番号が newtxtext や newpxtext の使用時におかしくなってしまいます。これらのパッケージは内部で \thefootnote を再定義していますので，気になる場合はパッケージを読み込むときに defaultsups オプションを付けてください (qa:57284,

qa:57287)。
2010 \def\thefootnote{\ifnum\c@footnote>\z@\leavevmode\lower.5ex\hbox{*}\@arabic\c@footnote\fi}「注 1」の形式にするには次のようにしてください。
2011 % \def\thefootnote{\ifnum\c@footnote>\z@ 注 \kern0.1\zw\@arabic\c@footnote\fi}\footnoterule 本文と脚注の間の罫線です。
2012 \renewcommand{\footnoterule}{%
2013
2014
2015

\kern-3\jsc@mpt\hrule width .4\columnwidth height 0.4\jsc@mpt\kern 2.6\jsc@mpt}\c@footnote 脚注番号は章ごとにリセットされます。

[2018-03-11] \next などいくつかの内部命令を \jsc@... 付きのユニークな名前にしました。
2016 %<book|report>\@addtoreset{footnote}{chapter}\@footnotetext 脚注で \verb が使えるように改変してあります。Jeremy Gibbons, TEX and TUG NEWS,

Vol. 2, No. 4 (1993), p. 9）[2018-03-11] \next などいくつかの内部命令を \jsc@... 付きのユニークな名前にしました。

[2022-09-13] LATEX 2𝜀 2021-11-15 (ltfloat.dtx 2021/10/14 v1.2g) で \@currentcounterが追加されましたので，追随します。なお，LATEX 2𝜀 2021-06-01 (ltfloat.dtx 2021/02/10

v1.2e) で parhook 対応として \par が追加されていますが，実は同時に \color@endgroup
も \endgraf するように変更されていますので，不要だと思います。というわけで追加しません。
2017 \long\def\@footnotetext{%
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031

\insert\footins\bgroup\normalfont\footnotesize\interlinepenalty\interfootnotelinepenalty\splittopskip\footnotesep\splitmaxdepth \dp\strutbox \floatingpenalty \@MM\hsize\columnwidth \@parboxrestore\def\@currentcounter{footnote}%\protected@edef\@currentlabel{%\csname p@footnote\endcsname\@thefnmark}%\color@begingroup\@makefntext{%\rule\z@\footnotesep\ignorespaces}%\futurelet\jsc@next\jsc@fo@t}

722032 \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}

2033

2034 \def\jsc@f@@t{\bgroup\aftergroup\jsc@@foot\let\jsc@next}
2035 \def\jsc@f@t#1{#1\jsc@@foot}2036 \def\jsc@@foot{\@finalstrut\strutbox\color@endgroup\egroup}\@makefntext 実際に脚注を出力する命令です。\@makefnmark は脚注の番号を出力する命令です。ここでは脚注が左端から一定距離に来るようにしてあります。
2037 \newcommand\@makefntext[1]{%
2038
2039
2040
2041

\advance\leftskip 3\zw
\parindent 1\zw
\noindent\hb@xt@\z@{\hss\@makefnmark\hskip0.3\zw}#1}\@xfootnotenext 最初の \footnotetext{...} は番号が付きません。著者の所属などを脚注の欄に書くときに便利です。
すでに \footnote を使った後なら \footnotetext[0]{...} とすれば番号を付けない
脚注になります。ただし，この場合は脚注番号がリセットされてしまうので，工夫が必要です。

[2002-04-09] インプリメントの仕方を変えたため消しました。
2042 % \def\@xfootnotenext[#1]{%
2043 %
2044 %
2045 %
2046 %
2047 %
2048 %
2049 %
2050 %
2051 %

12\begingroup\ifnum#1>\z@\csname c@\@mpfn\endcsname #1\relax\unrestored@protected@xdef\@thefnmark{\thempfn}%\else\unrestored@protected@xdef\@thefnmark{}%\fi\endgroup\@footnotetext}

段落の頭へのグルー挿入禁止

段落頭のかぎかっこなどを見かけ 1 字半下げから全角 1 字下げに直します。

[2012-04-24 LTJ] LuaTEX-ja では JFM に段落開始時の括弧類の字下げ幅をコントロー
ルする機能がありますが，\item 直後ではラベル用のボックスが段落先頭になるため，うまく働きませんでした。形を変えて復活させます。

[2017-04-03 LTJ] 従来クラスファイルで定義していた \@inhibitglue は，LuaTEX-jaのコアに \ltjfakeparbegin として正式に追加されたのでリネームします。

\item 命令の直後です。
2052 \let\@inhibitglue=\ltjfakeparbegin
2053 \def\@item[#1]{%
2054
2055
2056

\if@noparitem\@donoparitem
\else

73

2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105

\if@inlabel\indent \par\fi
\ifhmode\unskip\unskip \par\fi
\if@newlist\if@nobreak\@nbitem\else\addpenalty\@beginparpenalty\addvspace\@topsep\addvspace{-\parskip}%
\fi
\else
\addpenalty\@itempenalty\addvspace\itemsep\fi\global\@inlabeltrue\fi\everypar{%\@minipagefalse\global\@newlistfalse\if@inlabel\global\@inlabelfalse{\setbox\z@\lastbox\ifvoid\z@\kern-\itemindent\fi}%\box\@labels\penalty\z@\fi\if@nobreak\@nobreakfalse\clubpenalty \@M\else\clubpenalty \@clubpenalty\everypar{}%\fi\ltjfakeparbegin}%\if@noitemarg\@noitemargfalse\if@nmbrlist\refstepcounter\@listctr\fi\fi\sbox\@tempboxa{\makelabel{#1}}%\global\setbox\@labels\hbox{%\unhbox\@labels\hskip \itemindent

74

2106
2107
2108
2109
2110
2111
2112
2113
2114

\hskip -\labelwidth\hskip -\labelsep\ifdim \wd\@tempboxa >\labelwidth\box\@tempboxa\else\hbox to\labelwidth {\unhbox\@tempboxa}%\fi\hskip \labelsep}%\ignorespaces}\@gnewline についてはちょっと複雑な心境です。もともとの pLATEX 2𝜀 は段落の頭にグルーが入る方で統一されていました。しかし \\ の直後にはグルーが入らず，不統一でした。
そこで \\ の直後にもグルーを入れるように直していただいた経緯があります。しかし，ここでは逆にグルーを入れない方で統一したいので，また元に戻してしまいました。
しかし単に戻すだけでも駄目みたいなので，ここでも最後にグルーを消しておきます。

[2016-12-05 LTJ] 本家 [2016-11-29]，lltjcore.sty での変更に追従させます。
[2017-02-18 LTJ] lltjcore.sty 側で戻したのを忘れていました。
2115 \def\@gnewline #1{%

2121

\ifvmode\@nolnerr\else\unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null\inhibitglue \ignorespaces
\fi}

13

いろいろなロゴ

2116
2117
2118
2119
2120

LATEX 関連のロゴを作り直します。

[2016-07-14] ロ ゴ の 定 義 は jslogo パ ッ ケ ー ジ に 移 転 し ま し た。 後 方 互 換 の た め，
jsclasses ではデフォルトでこれを読み込みます。 nojslogo オプションが指定されている場合は読み込みません。

[2016-07-21 LTJ] jsclasses と LuaTEX-ja の更新タイミングが一致しない可能性を考慮し，jslogo パッケージが存在しない場合は旧来の定義をそのまま使うことにしました。
2122 \IfFileExists{jslogo.sty}{}{\@jslogofalse}%
2123 \if@jslogo\RequirePackage{jslogo}\def\ 小{\jslg@small}2126\def\ 上小{\jslg@uppersmall}
2127 \else
2124
2125

以下は jslogo パッケージがない場合の定義です。
\ 小 文字を小さめに出したり上寄りに小さめに出したりする命令です。
\ 上小 2128 \def\ 小#1{\hbox{$\m@th$%2129\csname S@\f@size\endcsname
2130\fontsize\sf@size\z@75

\math@fontsfalse\selectfont#1}}
2133 \def\ 上小#1{{\sbox\z@ T\vbox to\ht0{\ 小{#1}\vss}}}
2131
2132

\TeX これらは ltlogos.dtx で定義されていますが，Times や Helvetica でも見栄えがするよう\LaTeX に若干変更しました。

[2003-06-12] Palatino も加えました（要調整）。
2134 \def\cmrTeX{%\ifdim \fontdimen\@ne\font >\z@T\kern-.25em\lower.5ex\hbox{E}\kern-.125emX\@
2137
\else
2138
T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@
2139
\fi}
2140 \def\cmrLaTeX{%
2141\ifdim \fontdimen\@ne\font >\z@2142
L\kern-.32em\ 上小{A}\kern-.22em\cmrTeX
2143
\else
2144
L\kern-.36em\ 上小{A}\kern-.15em\cmrTeX
2145
\fi}
2146 \def\sfTeX{T\kern-.1em\lower.4ex\hbox{E}\kern-.07emX\@}
2147 \def\sfLaTeX{L\kern-.25em\ 上小{A}\kern-.08em\sfTeX}
2148 \def\ptmTeX{%
2149\ifdim \fontdimen\@ne\font >\z@2150
T\kern-.12em\lower.37ex\hbox{E}\kern-.02emX\@
2151
\else
2152
T\kern-.07em\lower.37ex\hbox{E}\kern-.05emX\@
2153
\fi}
2154 \def\ptmLaTeX{%
2155\ifdim \fontdimen\@ne\font >\z@2156
L\kern-.2em\ 上小{A}\kern-.1em\ptmTeX
2157
\else
2158
L\kern-.3em\ 上小{A}\kern-.1em\ptmTeX
2159
\fi}
2160 \def\pncTeX{%
2161\ifdim \fontdimen\@ne\font >\z@2162
T\kern-.2em\lower.5ex\hbox{E}\kern-.08emX\@
2163
\else
2164
T\kern-.13em\lower.5ex\hbox{E}\kern-.13emX\@
2165
\fi}
2166 \def\pncLaTeX{%
2167\ifdim \fontdimen\@ne\font >\z@2168
L\kern-.3em\ 上小{A}\kern-.1em\pncTeX
2169
\else
2170
L\kern-.3em\ 上小{A}\kern-.1em\pncTeX
2171
\fi}
2172 \def\pplTeX{%
2173\ifdim \fontdimen\@ne\font >\z@2174
T\kern-.17em\lower.32ex\hbox{E}\kern-.15emX\@
2135
2136

76

\elseT\kern-.12em\lower.34ex\hbox{E}\kern-.1emX\@
2177
\fi}
2178 \def\pplLaTeX{%
2179\ifdim \fontdimen\@ne\font >\z@2180
L\kern-.27em\ 上小{A}\kern-.12em\pplTeX
2181
\else
2182
L\kern-.3em\ 上小{A}\kern-.15em\pplTeX
2183
\fi}
2184 \def\ugmTeX{%
2185\ifdim \fontdimen\@ne\font >\z@2186
T\kern-.1em\lower.32ex\hbox{E}\kern-.06emX\@
2187
\else
2188
T\kern-.12em\lower.34ex\hbox{E}\kern-.1emX\@
2189
\fi}
2190 \def\ugmLaTeX{%
2191\ifdim \fontdimen\@ne\font >\z@2192
L\kern-.2em\ 上小{A}\kern-.13em\ugmTeX
2193
\else
2194
L\kern-.3em\ 上小{A}\kern-.13em\ugmTeX
2195
\fi}
2196 \DeclareRobustCommand{\TeX}{%
2197\def\@tempa{cmr}%2198\ifx\f@family\@tempa\cmrTeX
2199
\else
2200
\def\@tempa{ptm}%
2201\ifx\f@family\@tempa\ptmTeX
2202
\else
2203
\def\@tempa{txr}%
2204\ifx\f@family\@tempa\ptmTeX
2205
\else
2206
\def\@tempa{pnc}%
2207\ifx\f@family\@tempa\pncTeX
2208
\else
2209
\def\@tempa{ppl}%
2210\ifx\f@family\@tempa\pplTeX
2211
\else
2212
\def\@tempa{ugm}%2213\ifx\f@family\@tempa\ugmTeX
2214\else\sfTeX
2215
\fi
2216
\fi
2217
\fi
2218
\fi
2219
\fi
2220
\fi}
2175
2176

2221
2222 \DeclareRobustCommand{\LaTeX}{%2223\def\@tempa{cmr}%

77

2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246

\ifx\f@family\@tempa\cmrLaTeX\else\def\@tempa{ptm}%\ifx\f@family\@tempa\ptmLaTeX\else\def\@tempa{txr}%\ifx\f@family\@tempa\ptmLaTeX\else\def\@tempa{pnc}%\ifx\f@family\@tempa\pncLaTeX\else\def\@tempa{ppl}%\ifx\f@family\@tempa\pplLaTeX\else\def\@tempa{ugm}%\ifx\f@family\@tempa\ugmLaTeX\else\sfLaTeX
\fi
\fi
\fi
\fi
\fi
\fi}

\LaTeXe \LaTeXe コマンドの \mbox{\m@th ... で始まる新しい定義では直後の和文との間にxkanjiskip が入りません。また，mathptmx パッケージなどと併用すると，最後の 𝜀 が下がりすぎてしまいます。そのため，ちょっと手を加えました。
2247 \DeclareRobustCommand{\LaTeXe}{$\mbox{%
2248
2249

\if b\expandafter\@car\f@series\@nil\boldmath\fi\LaTeX\kern.15em2\raisebox{-.37ex}{$\textstyle\varepsilon$}}$}\pTeX pTEX，pLATEX 2𝜀 のロゴを出す命令です。
\pLaTeX 2250 \def\pTeX{p\kern-.05em\TeX}
2251 \def\pLaTeX{p\LaTeX}\pLaTeXe
2252 \def\pLaTeXe{p\LaTeXe}\AmSTeX amstex.sty で定義されています。
2253 \def\AmSTeX{\protect\AmS-\protect\TeX{}}\BibTeX これらは doc.dtx から取ったものです。ただし，\BibTeX だけはちょっと修正しました。
\SliTeX 2254 % \@ifundefined{BibTeX}
2255 %{\def\BibTeX{{\rmfamily B\kern-.05em%
2256 %\textsc{i\kern-.025em b}\kern-.08em%
2257 %
T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{}
2258 \DeclareRobustCommand{\BibTeX}{B\kern-.05em\ 小{I\kern-.025em B}%
2259\ifx\f@family\cmr\kern-.08em\else\kern-.15em\fi\TeX}
2260 \DeclareRobustCommand{\SliTeX}{%2261
S\kern-.06emL\kern-.18em\ 上小{I}\kern -.03em\TeX}78

jslogo パッケージがない場合の定義はここで終わりです。
2262 \fi14

初期設定■いろいろな語\prepartname\postpartname 2263 \newcommand{\prepartname}{\if@english Part~\else 第 \fi}2264 \newcommand{\postpartname}{\if@english\else 部 \fi}\prechaptername
2265 %<book|report>\newcommand{\prechaptername}{\if@english Chapter~\else 第 \fi}\postchaptername 2266 %<book|report>\newcommand{\postchaptername}{\if@english\else 章 \fi}\presectionname 2267 \newcommand{\presectionname}{}% 第\postsectionname 2268 \newcommand{\postsectionname}{}% 節\contentsname\listfigurename 2269 \newcommand{\contentsname}{\if@english Contents\else 目次 \fi}2270 \newcommand{\listfigurename}{\if@english List of Figures\else 図目次 \fi}\listtablename
2271 \newcommand{\listtablename}{\if@english List of Tables\else 表目次 \fi}\refname\bibname 2272 \newcommand{\refname}{\if@english References\else 参考文献 \fi}2273 \newcommand{\bibname}{\if@english Bibliography\else 参考文献 \fi}\indexname
2274 \newcommand{\indexname}{\if@english Index\else 索引 \fi}\figurename\tablename 2275 %<!jspf>\newcommand{\figurename}{\if@english Fig.~\else 図 \fi}2276 %<jspf>\newcommand{\figurename}{Fig.~}
2277 %<!jspf>\newcommand{\tablename}{\if@english Table~\else 表 \fi}2278 %<jspf>\newcommand{\tablename}{Table~}\appendixname\abstractname 2279 % \newcommand{\appendixname}{\if@english Appendix~\else 付録 \fi}2280 \newcommand{\appendixname}{\if@english \else 付録 \fi}2281 %<!book>\newcommand{\abstractname}{\if@english Abstract\else 概要 \fi}

■今日の日付LATEX で処理した日付を出力します。和暦にするには \ 和暦 と書いてください。ちなみにこの文章の作成日は西暦では 2024 年 7 月 26 日で，和暦では令和 6 年 7 月

26 日です。
\today2282 \newif\if 西暦 \ 西暦 true
2283 \def\ 西暦{\ 西暦 true}
2284 \def\ 和暦{\ 西暦 false}
2285 \newcount\heisei \heisei\year \advance\heisei-1988\relax
2286 \def\pltx@today@year@#1{%
2287\ifnum\numexpr\year-#1=1 元 \else

79

\ifnum\ltjgetparameter{direction}=3\kansuji\numexpr\year-#1\relax\else\number\numexpr\year-#1\relax\nobreak
\fi
\fi 年

2288
2289
2290
2291
2292
2293
2294 }

2295 \def\pltx@today@year{%\ifnum\numexpr\year*10000+\month*100+\day<19890108
昭和 \pltx@today@year@{1925}%
2298\else\ifnum\numexpr\year*10000+\month*100+\day<20190501
2299
平成 \pltx@today@year@{1988}%
2300
\else
2301
令和 \pltx@today@year@{2018}%
2302\fi\fi}
2303 \def\today{%2304\if@english
2305\ifcase\month\or2306
January\or February\or March\or April\or May\or June\or2307
July\or August\or September\or October\or November\or December\fi2308\space\number\day, \number\year2309\else\if 西暦
2310\ifnum\ltjgetparameter{direction}=3 \kansuji\year2311\else\number\year\nobreak\fi 年
2312
\else
2313
\pltx@today@year
2314
\fi
2315
\ifnum\ltjgetparameter{direction}=32316\kansuji\month 月
2317\kansuji\day 日
2318
\else
2319
\number\month\nobreak 月
2320\number\day\nobreak 日
2321\fi\fi}2296
2297■ハイフネーション例外

eng-lish）

TEX のハイフネーションルールの補足です（ペンディング：

2322 \hyphenation{ado-be post-script ghost-script phe-nom-e-no-log-i-cal man-u-

script}■ページ設定ページ設定の初期化です。stfloats パッケージがシステムにインストール

されている場合は，このパッケージを使って pLATEX の標準時と同じようにボトムフロートの下に脚注が組まれるようにします。

[2017-02-19] pLATEX と LuaTEX-ja の \@makecol が違うことを考慮していませんでした。
2323 %<article>\if@slide \pagestyle{empty} \else \pagestyle{plain} \fi2324 %<book>\if@report \pagestyle{plain} \else \pagestyle{headings} \fi2325 %<report|kiyou>\pagestyle{plain}802326 %<jspf>\pagestyle{headings}
2327 \pagenumbering{arabic}
2328 \fnfixbottomtrue % 2017-02-19
2329 \IfFileExists{stfloats.sty}{\RequirePackage{stfloats}\fnbelowfloat}{}
2330 \if@twocolumn\twocolumn\sloppy2333\flushbottom
2334 \else2335\onecolumn
2336\raggedbottom
2337 \fi2338 \if@slide2339\renewcommand\kanjifamilydefault{\gtdefault}
2340\renewcommand\familydefault{\sfdefault}
2341\raggedright2342\ltj@setpar@global
2343\ltjsetxkanjiskip0.1em\relax
2344 \fi
2331
2332

以上です。

81