texlive[60015] Master/texmf-dist: jlreq (22jul21)

commits+karl at tug.org commits+karl at tug.org
Thu Jul 22 22:39:40 CEST 2021


Revision: 60015
          http://tug.org/svn/texlive?view=revision&revision=60015
Author:   karl
Date:     2021-07-22 22:39:40 +0200 (Thu, 22 Jul 2021)
Log Message:
-----------
jlreq (22jul21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/jlreq/README-ja.md
    trunk/Master/texmf-dist/doc/latex/jlreq/README.md
    trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html
    trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.pdf
    trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks-ja.html
    trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks-ja.md
    trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks.html
    trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks.md
    trunk/Master/texmf-dist/doc/latex/jlreq/jlreq.html
    trunk/Master/texmf-dist/doc/latex/jlreq/jlreq.pdf
    trunk/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty
    trunk/Master/texmf-dist/tex/latex/jlreq/jlreq-trimmarks.sty
    trunk/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
    trunk/Master/texmf-dist/tex/luatex/jlreq/jfm-jlreq.lua
    trunk/Master/texmf-dist/tex/luatex/jlreq/jfm-jlreqv.lua

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/README-ja.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jlreq/README-ja.md	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/README-ja.md	2021-07-22 20:39:40 UTC (rev 60015)
@@ -19,7 +19,8 @@
 ## 動作環境
 pLaTeX / upLaTeX / LuaLaTeX上で動きます.以下のパッケージを内部で読み込みます.
 
-* (常時):xkeyval,everyhook,etoolbox,ifthen,lmodern
+* (常時):l3keys2e,etoolbox,lmodern
+* (LuaLaTeX非利用時):everyhook
 * (LuaLaTeX利用時):luatexja,luatexja-adjust
 
 リリース時点での最新版での動作を確認しています.
@@ -36,7 +37,7 @@
 ```
 とします.
 
-その他,`oneside / twoside / onecolumn / twocolumn / titlepage / notitlepage / draft / final / openright / openany / leqno / fleqn`というよくあるオプションを受け付けます.
+その他,`oneside` / `twoside` / `onecolumn` / `twocolumn` / `titlepage` / `notitlepage` / `draft` / `final` / `landscape` / `openright` / `openany` / `leqno` / `fleqn`というよくあるオプションを受け付けます.また`disablejfam`オプションを渡すと,和文フォントを数式用に登録しません.
 
 標準的な文書クラスと同じように中身を書くことができますが,次のような命令が追加 / 拡張されています.なお,本ドキュメントでは[日本語組版処理の要件](https://www.w3.org/TR/jlreq/?lang=ja)における用語を断りなく使います.
 
@@ -75,6 +76,9 @@
 ### `\jidori`
 `\jidori{<寸法>}{<中身>}`により,中身を寸法の長さに字取りしたものを出力することができます.
 
+### `\akigumi`
+`\akigumi{<寸法>}{<中身>}`により,中身の文字間を寸法の長さとして空き組した結果を出力することができます.ただしLuaLaTeX利用時以外は正しい出力結果とはなりません.
+
 ### `\jafontsize`
 和文フォントサイズを指定する`\fontsize`です.クラスオプションで`jafontscale=0.9`とされている場合,`\fontsize{9pt}{15pt}`とすると和文フォントのサイズは`8.1pt`となりますが,`\jafontsize{9pt}{15pt}`とすると`9pt`となります.(欧文フォントサイズは`10pt`となる.)なお,第二引数は`\fontsize`の第二引数と全く同じです.
 
@@ -103,7 +107,9 @@
     ```
 
     のようにします.和文と欧文の間の空白((u)pTeXでは`\xkanjiskip`に,LuateX-jaでは`xkanjiskip`パラメータに格納されているもの)も同様に`\jlreqxkanjiskip`を再定義することで変更することができます.
+* `book`指定時に,クラスオプションとして`openany`を指定していても,`\mainmatter`の後に白ページが挿入されることがあります.これは標準のクラスファイルと挙動を合わせたものです.`\jlreqsetup{mainmatter_pagebreak=clearpage}`とすることで白ページが入らなくなりますが,デフォルトでは`\mainmatter`でページ数をリセットしますので,ページ数の偶奇の整合性がとれなくなる可能性があります.`\jlreqsetup{frontmatter_pagination={arabic,continuous}}`のようにして通しノンブルに変更することを検討してみてください.詳しくは下記の「前付きなど」を参照してください.
 
+
 ## 各種設計
 設計はクラスオプションまたは`\jlreqsetup`によりkeyval形式で行います.ただし,クラスオプションではLaTeXの実装により,本来可能な入力が受け付けられないケースがあります.多くの場合は空白を除くことにより解決します.
 
@@ -130,6 +136,7 @@
     - `tate`無指定時は奇数ページ左,偶数ページ右の余白
     - `tate`指定時は奇数ページ右,偶数ページ左の余白
     - `twoside`が指定されていない時は,常に奇数ページ扱いで余白が設定される
+* `fore-edge=<寸法;zw,zh>`:小口(のどでない方)の余白の大きさ.「日本語組版処理の要件」にある方法で余白を指定する限り使われることはありませんが,便利なこともあるので実装されています.
 * `head_space=<寸法;zw,zh>`:天の空き量.デフォルトは中央寄せになるような値.
 * `foot_space=<寸法;zw,zh>`:地の空き量.デフォルトは中央寄せになるような値.
 * `baselineskip=<寸法;Q,H,zw,zh>`:行送り.デフォルトは`jafontsize`の1.7倍.
@@ -251,6 +258,7 @@
 * `subtitle_break=[true/false]`:見出し文字列と副題の間を改行するか指定します.
 * `allowbreak_if_evenpage=[true/false]`:見出しが偶数ページにあった場合,その直後の改ページを許可します.
 * `pagebreak=[clearpage/cleardoublepage/clearcolumn/nariyuki/begin_with_odd_page/begin_with_even_page]`:見出し直前の改ページを指定します.それぞれ,改ページ,`\cleardoublepage`実行,改段,なりゆき,奇数ページ開始,偶数ページ開始,です.
+* `pagestyle=<ページスタイル名>`:見出し箇所のページスタイルを指定します.
 * `afterindent=[true/false]`:見出し直後の段落の字下げを行うかを指定します.
 * `column_spanning=[true/false]`: 段抜きの見出しにします.`pagebreak=nariyuki`または`pagebreak=clearcolumn`の時には無視されます.
 * `number=[true/false]`:採番を行うかを指定します.`\NewTobiraHeading`と同様の注意が必要です.
@@ -498,7 +506,15 @@
 * 2021-05-28
     - `\jlreqsetup`の`caption_align`を拡張.
     - `\ifthenelse`を少し削除.
+* 2021-07-22
+    - `\IfHookExistsTF`の利用を中止.
+    - `\akigumi`を追加.
+    - `xkeyval`パッケージと`ifthen`パッケージの利用をやめた.
+    - expl3コードとの親和性を高めた.
+    - `\DeclareBlockHeading`に`pagestyle`を追加.
+    - 
 
+
 --------------
 Noriyuki Abe
 https://github.com/abenori/jlreq

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jlreq/README.md	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/README.md	2021-07-22 20:39:40 UTC (rev 60015)
@@ -142,6 +142,13 @@
 * 2021-05-28
     - Extended `caption_align` in `\jlreqsetup`.
     - Removed some `\ifthenelse`.
+* 2021-07-22
+    - Stopped to use `\IfHookExistsTF`.
+    - Added `\akigumi`.
+    - Stopped to load packages `xkeyval` and `ifthen`.
+    - It has more compatibility with expl3.
+    - Added `pagestyle` to `\DeclareBlockHeading`.
+    - Fixed bugs.
 
 
 --------------

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html	2021-07-22 20:39:40 UTC (rev 60015)
@@ -103,7 +103,8 @@
 <h2 id="動作環境">動作環境</h2>
 <p>pLaTeX / upLaTeX / LuaLaTeX上で動きます.以下のパッケージを内部で読み込みます.</p>
 <ul>
-<li>(常時):xkeyval,everyhook,etoolbox,ifthen,lmodern</li>
+<li>(常時):l3keys2e,etoolbox,lmodern</li>
+<li>(LuaLaTeX非利用時):everyhook</li>
 <li>(LuaLaTeX利用時):luatexja,luatexja-adjust</li>
 </ul>
 <p>リリース時点での最新版での動作を確認しています.</p>
@@ -113,7 +114,7 @@
 <p>とします.これで横書きのarticle相当の文書クラスとなります.エンジンは自動判定されますが,指定する場合はクラスオプションに<code>platex/uplatex/lualatex</code>のいずれかを渡してください.縦書きにするには<code>tate</code>オプションを渡します.また,reportやbook相当の文書クラスとするには,それぞれ<code>report</code>や<code>book</code>オプションを渡します.たとえば,縦書きの本を作成するには</p>
 <div class="sourceCode" id="cb2"><pre class="sourceCode latex"><code class="sourceCode latex"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[tate,book]{<span class="ex">jlreq</span>}</span></code></pre></div>
 <p>とします.</p>
-<p>その他,<code>oneside / twoside / onecolumn / twocolumn / titlepage / notitlepage / draft / final / openright / openany / leqno / fleqn</code>というよくあるオプションを受け付けます.</p>
+<p>その他,<code>oneside</code> / <code>twoside</code> / <code>onecolumn</code> / <code>twocolumn</code> / <code>titlepage</code> / <code>notitlepage</code> / <code>draft</code> / <code>final</code> / <code>landscape</code> / <code>openright</code> / <code>openany</code> / <code>leqno</code> / <code>fleqn</code>というよくあるオプションを受け付けます.また<code>disablejfam</code>オプションを渡すと,和文フォントを数式用に登録しません.</p>
 <p>標準的な文書クラスと同じように中身を書くことができますが,次のような命令が追加 / 拡張されています.なお,本ドキュメントでは<a href="https://www.w3.org/TR/jlreq/?lang=ja">日本語組版処理の要件</a>における用語を断りなく使います.</p>
 <h3 id="jlreqsetup"><code>\jlreqsetup</code></h3>
 <p>設定用命令です.プリアンブルでしか使えません.文書に対する設定は,クラスオプションとして行うか<code>\jlreqsetup</code>を通じて行うかします.どちらで設定するかは設定項目によります.</p>
@@ -136,6 +137,8 @@
 <p>縦中横を出力します.<code>\tatechuyoko{<中身>}</code>とします.<code>\tatechuyoko</code>は縦書きでない場所で使うとエラーになりますが,<code>\tatechuyoko*</code>は縦書きでない場所ではそのまま出力されます.</p>
 <h3 id="jidori"><code>\jidori</code></h3>
 <p><code>\jidori{<寸法>}{<中身>}</code>により,中身を寸法の長さに字取りしたものを出力することができます.</p>
+<h3 id="akigumi"><code>\akigumi</code></h3>
+<p><code>\akigumi{<寸法>}{<中身>}</code>により,中身の文字間を寸法の長さとして空き組した結果を出力することができます.ただしLuaLaTeX利用時以外は正しい出力結果とはなりません.</p>
 <h3 id="jafontsize"><code>\jafontsize</code></h3>
 <p>和文フォントサイズを指定する<code>\fontsize</code>です.クラスオプションで<code>jafontscale=0.9</code>とされている場合,<code>\fontsize{9pt}{15pt}</code>とすると和文フォントのサイズは<code>8.1pt</code>となりますが,<code>\jafontsize{9pt}{15pt}</code>とすると<code>9pt</code>となります.(欧文フォントサイズは<code>10pt</code>となる.)なお,第二引数は<code>\fontsize</code>の第二引数と全く同じです.</p>
 <h3 id="-"><code>\ </code></h3>
@@ -155,6 +158,7 @@
 <span id="cb6-4"><a href="#cb6-4" aria-hidden="true" tabindex="-1"></a>(本文)</span>
 <span id="cb6-5"><a href="#cb6-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span></code></pre></div>
 <p>のようにします.和文と欧文の間の空白((u)pTeXでは<code>\xkanjiskip</code>に,LuateX-jaでは<code>xkanjiskip</code>パラメータに格納されているもの)も同様に<code>\jlreqxkanjiskip</code>を再定義することで変更することができます.</p></li>
+<li><p><code>book</code>指定時に,クラスオプションとして<code>openany</code>を指定していても,<code>\mainmatter</code>の後に白ページが挿入されることがあります.これは標準のクラスファイルと挙動を合わせたものです.<code>\jlreqsetup{mainmatter_pagebreak=clearpage}</code>とすることで白ページが入らなくなりますが,デフォルトでは<code>\mainmatter</code>でページ数をリセットしますので,ページ数の偶奇の整合性がとれなくなる可能性があります.<code>\jlreqsetup{frontmatter_pagination={arabic,continuous}}</code>のようにして通しノンブルに変更することを検討してみてください.詳しくは下記の「前付きなど」を参照してください.</p></li>
 </ul>
 <h2 id="各種設計">各種設計</h2>
 <p>設計はクラスオプションまたは<code>\jlreqsetup</code>によりkeyval形式で行います.ただし,クラスオプションではLaTeXの実装により,本来可能な入力が受け付けられないケースがあります.多くの場合は空白を除くことにより解決します.</p>
@@ -184,6 +188,7 @@
 <li><code>tate</code>指定時は奇数ページ右,偶数ページ左の余白</li>
 <li><code>twoside</code>が指定されていない時は,常に奇数ページ扱いで余白が設定される</li>
 </ul></li>
+<li><code>fore-edge=<寸法;zw,zh></code>:小口(のどでない方)の余白の大きさ.「日本語組版処理の要件」にある方法で余白を指定する限り使われることはありませんが,便利なこともあるので実装されています.</li>
 <li><code>head_space=<寸法;zw,zh></code>:天の空き量.デフォルトは中央寄せになるような値.</li>
 <li><code>foot_space=<寸法;zw,zh></code>:地の空き量.デフォルトは中央寄せになるような値.</li>
 <li><code>baselineskip=<寸法;Q,H,zw,zh></code>:行送り.デフォルトは<code>jafontsize</code>の1.7倍.</li>
@@ -310,6 +315,7 @@
 <li><code>subtitle_break=[true/false]</code>:見出し文字列と副題の間を改行するか指定します.</li>
 <li><code>allowbreak_if_evenpage=[true/false]</code>:見出しが偶数ページにあった場合,その直後の改ページを許可します.</li>
 <li><code>pagebreak=[clearpage/cleardoublepage/clearcolumn/nariyuki/begin_with_odd_page/begin_with_even_page]</code>:見出し直前の改ページを指定します.それぞれ,改ページ,<code>\cleardoublepage</code>実行,改段,なりゆき,奇数ページ開始,偶数ページ開始,です.</li>
+<li><code>pagestyle=<ページスタイル名></code>:見出し箇所のページスタイルを指定します.</li>
 <li><code>afterindent=[true/false]</code>:見出し直後の段落の字下げを行うかを指定します.</li>
 <li><code>column_spanning=[true/false]</code>: 段抜きの見出しにします.<code>pagebreak=nariyuki</code>または<code>pagebreak=clearcolumn</code>の時には無視されます.</li>
 <li><code>number=[true/false]</code>:採番を行うかを指定します.<code>\NewTobiraHeading</code>と同様の注意が必要です.</li>
@@ -418,11 +424,11 @@
 <p>このパッケージは二条項BSDライセンスの元で配布されています.詳しくは<a href="LICENSE">LICENSE</a>をご覧ください.</p>
 <h2 id="履歴">履歴</h2>
 <ul>
-<li>2017-02-08
+<li><p>2017-02-08</p>
 <ul>
 <li>最初のバージョン.</li>
 </ul></li>
-<li>2017-02-17
+<li><p>2017-02-17</p>
 <ul>
 <li>いくつかバグを修正.</li>
 <li>クラスオプション/<code>\jlreqsetup</code>にいくつかのキーを追加/変更.</li>
@@ -429,7 +435,7 @@
 <li><code>abstract</code>環境を実装.</li>
 <li>パッケージを読み込んでいるだけのはやめた.</li>
 </ul></li>
-<li>2017-03-14
+<li><p>2017-03-14</p>
 <ul>
 <li>いくつかバグを修正.</li>
 <li>和文ファミリを欧文ファミリに従属させるようにした.</li>
@@ -436,17 +442,17 @@
 <li><code>\DeclareBlockHeading</code>にオプションをたくさん追加.</li>
 <li>quote環境などを調整するオプションを追加.</li>
 </ul></li>
-<li>2017-03-20
+<li><p>2017-03-20</p>
 <ul>
 <li>バグ修正.</li>
 <li><code>\footnote / \sidenote / \endnote</code>の周りに必要ならば空白を挿入するようにした.</li>
 </ul></li>
-<li>2017-04-04
+<li><p>2017-04-04</p>
 <ul>
 <li>バグ修正.</li>
 <li><code>\DeclarePageStyle</code>に<code>tate</code>と<code>font</code>オプションを追加.</li>
 </ul></li>
-<li>2017-04-29
+<li><p>2017-04-29</p>
 <ul>
 <li>バグ修正</li>
 <li><code>jafontsize</code>と<code>jafontscale</code>をクラスオプションに,また<code>\jafontsize</code>を追加.</li>
@@ -456,13 +462,13 @@
 <li>いくつかのオプションを<code>\jlreqsetup</code>に追加.</li>
 <li>クラスオプションの<code>paper={<縦>,<横>}</code>を<code>paper={<横>,<縦>}</code>に変更.</li>
 </ul></li>
-<li>2017-06-11
+<li><p>2017-06-11</p>
 <ul>
 <li><code>plext</code> / <code>lltjext</code>の読み込みを中止.</li>
 <li><code>\DeclareBlockHeading</code>に<code>align</code>を追加.<code>indent=center</code>や<code>end_indent=center</code>を廃止.</li>
 <li>一部の<code>\kcatcode</code> (upLaTeX時) を変更.</li>
 </ul></li>
-<li>2017-08-13
+<li><p>2017-08-13</p>
 <ul>
 <li><code>column_spanning</code>を<code>\DeclareBlockHeading</code>に追加.</li>
 <li>ページレイアウトにおける「本文の長さ」に傍注の長さを入れるようにした.</li>
@@ -470,27 +476,27 @@
 <li>傍注の長さが0の時には<code>\sidenote</code>を定義しないようにした.</li>
 <li>和字間隔を挿入する命令を追加.</li>
 </ul></li>
-<li>2017-08-29
+<li><p>2017-08-29</p>
 <ul>
 <li>縦書きでも著者名が横書きで出てしまうバグを修正.</li>
 </ul></li>
-<li>2017-11-23
+<li><p>2017-11-23</p>
 <ul>
 <li>バグ修正</li>
 <li><code>\SetBlockHeadingSpaces</code>を追加.</li>
 <li><code>\contentsname</code> と <code>\indexname</code>に入っていたスペースを削除.</li>
 </ul></li>
-<li>2017-12-02
+<li><p>2017-12-02</p>
 <ul>
 <li>バグ修正</li>
 </ul></li>
-<li>2017-12-22
+<li><p>2017-12-22</p>
 <ul>
 <li>JFMを改善.</li>
 <li>別行見出しの間の<code>\label</code>の検出方法を変更.</li>
 <li><code>\theequation</code>,<code>\thefigure</code>,<code>\thetable</code>に章番号を追加.</li>
 </ul></li>
-<li>2018-02-01
+<li><p>2018-02-01</p>
 <ul>
 <li>縦書きの傍注は奇数ページにのみ出るようにした(改善の余地ありかも).</li>
 <li>LuaTeX時に<code>\fnfixbottomtrue</code>を追加.</li>
@@ -498,7 +504,7 @@
 <li><code>itemization_beforeafter_space</code>を拡張.</li>
 <li>バグ修正.</li>
 </ul></li>
-<li>2018-04-11
+<li><p>2018-04-11</p>
 <ul>
 <li>縦書き二段組みの傍注を下段に出すようにした.</li>
 <li><code>begin_width_(odd|even)_page</code>を<code>\DeclareBlockHeading</code>に追加.</li>
@@ -506,33 +512,33 @@
 <li><code>column_gap</code>クラスオプションを使うとコンパイルできなかったバグ修正.</li>
 <li><code>mark_format</code>を<code>\DeclarePageStyle</code>に追加.</li>
 </ul></li>
-<li>2018-05-19
+<li><p>2018-05-19</p>
 <ul>
 <li>目次内のラベルの長さを今までよりも長くした.</li>
 <li>一部のマクロをjlreq-helpers.styに分離した.</li>
 <li>バグ修正.</li>
 </ul></li>
-<li>2018-06-17
+<li><p>2018-06-17</p>
 <ul>
 <li>シリーズbもゴシックにするようにした.</li>
 <li>バグ修正.</li>
 </ul></li>
-<li>2018-08-08
+<li><p>2018-08-08</p>
 <ul>
 <li><code>\DeclarePageStyle</code>に<code>nombre_ii</code>等を追加.</li>
 <li>バグ修正.</li>
 <li><code>\jlreqsetup</code>に<code>footnote_second_indent</code>と<code>endnote_second_indent</code>を追加.</li>
 </ul></li>
-<li>2018-08-15
+<li><p>2018-08-15</p>
 <ul>
 <li>バグ修正.</li>
 </ul></li>
-<li>2018-09-01
+<li><p>2018-09-01</p>
 <ul>
 <li><code>\mag</code>が<code>1000</code>でない場合も動くようにした(つもり).</li>
 <li>バグ修正.</li>
 </ul></li>
-<li>2018-12-10
+<li><p>2018-12-10</p>
 <ul>
 <li>見出し命令を作る命令に<code>number=[true/false]</code>を追加.</li>
 <li><code>\frontmatter</code>等の挙動を設定できるようにした.</li>
@@ -539,7 +545,7 @@
 <li><code>\jlreqHeadingLabel</code>等を扉見出しと別行見出しの<code>format</code>内で使えるようにした.</li>
 <li>バグ修正</li>
 </ul></li>
-<li>2019-01-15
+<li><p>2019-01-15</p>
 <ul>
 <li><code>\NewPageStyle</code>に<code>nombre_font</code>などを追加.<code>font</code>もまだ有効だが以降非推奨とする.</li>
 <li><code>\NewBlockHeading</code>の<code>format</code>に<code>#1</code>が含まれてもエラーが起こらないようにした.</li>
@@ -546,7 +552,7 @@
 <li><code>\jlreqsetup</code>の<code>caption_label_format</code>などを拡張.</li>
 <li>バグ修正.</li>
 </ul></li>
-<li>2019-04-01
+<li><p>2019-04-01</p>
 <ul>
 <li>逆ノンブルを利用可能にするクラスオプション<code>use_reverse_pagination</code>を追加.</li>
 <li><code>zref</code>パッケージの利用をやめた.</li>
@@ -553,19 +559,19 @@
 <li>新元号を追加.</li>
 <li>バグ修正.</li>
 </ul></li>
-<li>2019-05-07
+<li><p>2019-05-07</p>
 <ul>
 <li>わずかな誤差で行数が減ってしまうのを防ぐために,<code>\textwidth</code>と<code>\textheight</code>を少しだけ増やした.</li>
 <li><code>\DeclarePageStyle</code>内の<code>running_head_ii</code>などの実装を変更.</li>
 <li>バグ修正</li>
 </ul></li>
-<li>2019-09-24
+<li><p>2019-09-24</p>
 <ul>
 <li><code>\@cite</code>と<code>\@biblabel</code>を再定義していたのをやめた.</li>
 <li>別行見出しの前に<code>\allowbreak</code>を追加.</li>
 <li>バグ修正.</li>
 </ul></li>
-<li>2020-02-07
+<li><p>2020-02-07</p>
 <ul>
 <li><code>itemization_label_length</code>のデフォルト値を<code>\leftmargini</code>などにした.</li>
 <li><code>\rmfamily</code>などの再定義をやめ,<code>\@rmfamilyhook</code>などにコードを挿入することにした.</li>
@@ -572,23 +578,23 @@
 <li><code>\parskip</code>を<code>0pt</code>に変更.</li>
 <li>バグ修正.</li>
 </ul></li>
-<li>2020-05-01
+<li><p>2020-05-01</p>
 <ul>
 <li><code>\jlreqsetup</code>に<code>theorem_label_font</code>と<code>theorem_font</code>を追加.</li>
 <li>バグ修正.</li>
 </ul></li>
-<li>2020-09-27
+<li><p>2020-09-27</p>
 <ul>
 <li><code>\tatechuyoko</code>の<code>*</code>版を追加.</li>
 <li>バグ修正</li>
 </ul></li>
-<li>2020-12-29
+<li><p>2020-12-29</p>
 <ul>
 <li>クラスオプションの<code>fontsize</code>などで,LuaLaTeXでも<code>H</code>を使えるようにした.</li>
 <li><code>\jidori</code>を追加.</li>
 <li>バグ修正.</li>
 </ul></li>
-<li>2021-03-17
+<li><p>2021-03-17</p>
 <ul>
 <li><code>\maketitle</code>でのページスタイルを<code>empty</code>でないときには<code>plain</code>にするようにした.</li>
 <li><code>\item</code>直後のJFMグルーをなくした.</li>
@@ -595,11 +601,20 @@
 <li>同行見出し直後のJFMグルーをなくした.</li>
 <li>バグ修正.</li>
 </ul></li>
-<li>2021-05-28
+<li><p>2021-05-28</p>
 <ul>
 <li><code>\jlreqsetup</code>の<code>caption_align</code>を拡張.</li>
 <li><code>\ifthenelse</code>を少し削除.</li>
 </ul></li>
+<li><p>2021-07-22</p>
+<ul>
+<li><code>\IfHookExistsTF</code>の利用を中止.</li>
+<li><code>\akigumi</code>を追加.</li>
+<li><code>xkeyval</code>パッケージと<code>ifthen</code>パッケージの利用をやめた.</li>
+<li>expl3コードとの親和性を高めた.</li>
+<li><code>\DeclareBlockHeading</code>に<code>pagestyle</code>を追加.</li>
+<li></li>
+</ul></li>
 </ul>
 <hr />
 <p>Noriyuki Abe <a href="https://github.com/abenori/jlreq">https://github.com/abenori/jlreq</a></p>

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks-ja.html
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks-ja.html	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks-ja.html	2021-07-22 20:39:40 UTC (rev 60015)
@@ -236,6 +236,10 @@
 <li><code>\jlreqtrimmarkssetup</code>の<code>banner</code>を使う場合,<code>\@bannertoken</code>の中身を無視するようにした.</li>
 <li><code>\jlreqtrimmarkssetup</code>の<code>banner_font</code>が指定された場合,<code>\@bannerfont</code>を無視するようにした.</li>
 </ul></li>
+<li>2021-07-22
+<ul>
+<li>expl3コードとの親和性を高めた.</li>
+</ul></li>
 </ul>
 <hr />
 <p>Noriyuki Abe <a href="https://github.com/abenori/jlreq">https://github.com/abenori/jlreq</a></p>

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks-ja.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks-ja.md	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks-ja.md	2021-07-22 20:39:40 UTC (rev 60015)
@@ -161,7 +161,10 @@
     - `\jlreqtrimmarkssetup`の`banner`を使わない場合,`\@bannertoken`の中身を偶奇ページ両方に出力するようにした.
     - `\jlreqtrimmarkssetup`の`banner`を使う場合,`\@bannertoken`の中身を無視するようにした.
     - `\jlreqtrimmarkssetup`の`banner_font`が指定された場合,`\@bannerfont`を無視するようにした.
+* 2021-07-22
+    - expl3コードとの親和性を高めた.
 
+
 --------------
 Noriyuki Abe
 https://github.com/abenori/jlreq

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks.html
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks.html	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks.html	2021-07-22 20:39:40 UTC (rev 60015)
@@ -232,6 +232,12 @@
 <li><code>\@bannerfont</code> is ignored when <code>banner_font</code> in <code>\jlreqtrimmarkssetup</code> is used.</li>
 </ul></li>
 </ul>
+<ul>
+<li>2021-07-22
+<ul>
+<li>It has more compatibility with expl3.</li>
+</ul></li>
+</ul>
 <hr />
 <p>Noriyuki Abe <a href="https://github.com/abenori/jlreq">https://github.com/abenori/jlreq</a></p>
 </article>

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks.md	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-trimmarks.md	2021-07-22 20:39:40 UTC (rev 60015)
@@ -155,7 +155,10 @@
     - `jlreq-trimmarks` outputs the contents in `\@bannertoken` when `banner` in `\jlreqtrimmarkssetup` is not used.
     - `\@bannertoken` is ignored when `banner` in `\jlreqtrimmarkssetup` is used.
     - `\@bannerfont` is ignored when `banner_font` in `\jlreqtrimmarkssetup` is used.
+* 2021-07-22
+    - It has more compatibility with expl3.
 
+
 --------------
 Noriyuki Abe
 https://github.com/abenori/jlreq

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/jlreq.html
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jlreq/jlreq.html	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/jlreq.html	2021-07-22 20:39:40 UTC (rev 60015)
@@ -256,6 +256,15 @@
 <li>Extended <code>caption_align</code> in <code>\jlreqsetup</code>.</li>
 <li>Removed some <code>\ifthenelse</code>.</li>
 </ul></li>
+<li>2021-07-22
+<ul>
+<li>Stopped to use <code>\IfHookExistsTF</code>.</li>
+<li>Added <code>\akigumi</code>.</li>
+<li>Stopped to load packages <code>xkeyval</code> and <code>ifthen</code>.</li>
+<li>It has more compatibility with expl3.</li>
+<li>Added <code>pagestyle</code> to <code>\DeclareBlockHeading</code>.</li>
+<li>Fixed bugs.</li>
+</ul></li>
 </ul>
 <hr />
 <p>Noriyuki Abe <a href="https://github.com/abenori/jlreq">https://github.com/abenori/jlreq</a></p>

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/jlreq.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty	2021-07-22 20:39:40 UTC (rev 60015)
@@ -1,8 +1,8 @@
 % エンジン非依存のマクロ集
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{jlreq-helpers}[2018/08/15 jlreq-helpers]
-\RequirePackage{xkeyval,etoolbox}
+\ProvidesPackage{jlreq-helpers}[2021/07/22 jlreq-helpers]
+\RequirePackage{etoolbox}
 
 %. helper1
 \newcount\jlreq at tempcnta
@@ -210,53 +210,53 @@
 %  *{key}{\def\val{#1}} % デフォルト値を空文字列にする
 %  {key}[choice1,choice2]{\def\valchoice{#1}}
 %}{parse対象}
-\newcommand*{\jlreq at parsekeyval}{%
-  \@ifstar{\jlreq at helper@parsekeyval@{*}}{\jlreq at helper@parsekeyval@{}}%
-}
-\def\jlreq at helper@parsekeyval@#1{%
-  \@ifnextchar[{\jlreq at helper@parsekeyval@@{#1}}{\jlreq at helper@parsekeyval@@{#1}[jlreq at key]}%
-}
-\long\def\jlreq at helper@parsekeyval@@#1[#2]#3#4{%
-  \begingroup
-    \def\jlreq at do{}% \setkeysの結果処理がここに入れられる(よってループ内で利用不可)
-    \jlreq at helper@parsekeyval@@@{#2}#3{\jlreq at endmark}%
-    \setkeys#1{#2}{#4}%
-  \expandafter\endgroup
-  \jlreq at do
-}
-\def\jlreq at helper@parsekeyval@@@#1#2#{%
-  \jlreq at iffirsttoken@ignorespaces{#2}{*}{%
-    \jlreq at helper@parsekeyval@@@definekeywithdefault{#1}%
-  }{%
-    \jlreq at helper@parsekeyval@@@@{#1}%
-  }%
-}
-\long\def\jlreq at helper@parsekeyval@@@@#1#2{%
-  \jlreq at ifendmark{#2}{}{%
-    \@ifnextchar[{\jlreq at helper@parsekeyval@@@choicekey{#1}{#2}}{\jlreq at helper@parsekeyval@@@definekey{#1}{#2}}%
-  }%
-}
-\long\def\jlreq at helper@parsekeyval@@@choicekey#1#2[#3]#4{%
-  \@for\@tempa:=#2\do{%
-    \edef\jlreq at next{\unexpanded{\define at choicekey{#1}}{\expandonce{\@tempa}}}%
-    \jlreq at next{#3}{\eappto\jlreq at do{\unexpanded{#4}}}%
-  }%
-  \jlreq at helper@parsekeyval@@@{#1}%
-}
-\long\def\jlreq at helper@parsekeyval@@@definekeywithdefault#1#2#3{%
-  \@for\@tempa:=#2\do{%
-    \edef\jlreq at next{\unexpanded{\define at key{#1}}{\expandonce{\@tempa}}}%
-    \jlreq at next[]{\eappto\jlreq at do{\unexpanded{#3}}}%
-  }%
-  \jlreq at helper@parsekeyval@@@{#1}%
-}
-\long\def\jlreq at helper@parsekeyval@@@definekey#1#2#3{%
-  \@for\@tempa:=#2\do{%
-    \edef\jlreq at next{\unexpanded{\define at key{#1}}{\expandonce{\@tempa}}}%
-    \jlreq at next{\eappto\jlreq at do{\unexpanded{#3}}}%
-  }%
-  \jlreq at helper@parsekeyval@@@{#1}%
-}
+%\newcommand*{\jlreq at parsekeyval}{%
+%  \@ifstar{\jlreq at helper@parsekeyval@{*}}{\jlreq at helper@parsekeyval@{}}%
+%}
+%\def\jlreq at helper@parsekeyval@#1{%
+%  \@ifnextchar[{\jlreq at helper@parsekeyval@@{#1}}{\jlreq at helper@parsekeyval@@{#1}[jlreq at key]}%
+%}
+%\long\def\jlreq at helper@parsekeyval@@#1[#2]#3#4{%
+%  \begingroup
+%    \def\jlreq at do{}% \setkeysの結果処理がここに入れられる(よってループ内で利用不可)
+%    \jlreq at helper@parsekeyval@@@{#2}#3{\jlreq at endmark}%
+%    \setkeys#1{#2}{#4}%
+%  \expandafter\endgroup
+%  \jlreq at do
+%}
+%\def\jlreq at helper@parsekeyval@@@#1#2#{%
+%  \jlreq at iffirsttoken@ignorespaces{#2}{*}{%
+%    \jlreq at helper@parsekeyval@@@definekeywithdefault{#1}%
+%  }{%
+%    \jlreq at helper@parsekeyval@@@@{#1}%
+%  }%
+%}
+%\long\def\jlreq at helper@parsekeyval@@@@#1#2{%
+%  \jlreq at ifendmark{#2}{}{%
+%    \@ifnextchar[{\jlreq at helper@parsekeyval@@@choicekey{#1}{#2}}{\jlreq at helper@parsekeyval@@@definekey{#1}{#2}}%
+%  }%
+%}
+%\long\def\jlreq at helper@parsekeyval@@@choicekey#1#2[#3]#4{%
+%  \@for\@tempa:=#2\do{%
+%    \edef\jlreq at next{\unexpanded{\define at choicekey{#1}}{\expandonce{\@tempa}}}%
+%    \jlreq at next{#3}{\eappto\jlreq at do{\unexpanded{#4}}}%
+%  }%
+%  \jlreq at helper@parsekeyval@@@{#1}%
+%}
+%\long\def\jlreq at helper@parsekeyval@@@definekeywithdefault#1#2#3{%
+%  \@for\@tempa:=#2\do{%
+%    \edef\jlreq at next{\unexpanded{\define at key{#1}}{\expandonce{\@tempa}}}%
+%    \jlreq at next[]{\eappto\jlreq at do{\unexpanded{#3}}}%
+%  }%
+%  \jlreq at helper@parsekeyval@@@{#1}%
+%}
+%\long\def\jlreq at helper@parsekeyval@@@definekey#1#2#3{%
+%  \@for\@tempa:=#2\do{%
+%    \edef\jlreq at next{\unexpanded{\define at key{#1}}{\expandonce{\@tempa}}}%
+%    \jlreq at next{\eappto\jlreq at do{\unexpanded{#3}}}%
+%  }%
+%  \jlreq at helper@parsekeyval@@@{#1}%
+%}
 
 % キー指定しないkeyval(独自実装)
 % \jlreq at parsekeyval@nokey{<action>}{<parse対象>}
@@ -449,17 +449,20 @@
   \ifx\@tempa\@tempb\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
 }
 
+\ExplSyntaxOn
 \newcommand*{\jlreq at helper@guessengine}{%
-  \jlreq at ifprimitive\directlua{%
-    \let\jlreq at result=l%
-  }{%
-    \jlreq at ifprimitive\ucs{%
-      \let\jlreq at result=u%
-    }{%
-      \let\jlreq at result=p%
-    }%
-  }%
+  \token_if_primitive:NTF \directlua {
+    \let\jlreq at result=l
+  }{
+    \let\jlreq at result=p
+    \token_if_primitive:NT \ucs {
+      \int_compare:nT { \ucs"FA4A = "FA4A } {
+        \let\jlreq at result=u
+      }
+    }
+  }
 }
+\ExplSyntaxOff
 
 % #1を\@undefinedに,既に\@undefinedならば#2{#1}を呼ぶ
 \newcommand*{\jlreq at helper@undefcs}[2]{%

Modified: trunk/Master/texmf-dist/tex/latex/jlreq/jlreq-trimmarks.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/jlreq/jlreq-trimmarks.sty	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/tex/latex/jlreq/jlreq-trimmarks.sty	2021-07-22 20:39:40 UTC (rev 60015)
@@ -1,14 +1,16 @@
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{jlreq-trimmarks}[2020/05/01 jlreq-trimmarks]
-\RequirePackage{xkeyval,etoolbox}
+\ProvidesPackage{jlreq-trimmarks}[2021/07/22 jlreq-trimmarks]
+\RequirePackage{l3keys2e,etoolbox}
 \RequirePackage{jlreq-helpers}
 
+\ExplSyntaxOn
+
 % check \tombowdatetrue
 \ifx\tombowdatetrue\@undefined
-  \PackageError{jlreq-trimmarks}{This package only works with pLaTeX, upLaTeX or LuaTeX-ja}{\@ehc}
+  \PackageError{jlreq-trimmarks}{This~package~only~works~with~pLaTeX,~upLaTeX~or~LuaTeX-ja}{\@ehc}
 \fi
 
-\newcommand*{\jlreq at trimmarks@undeferr}[1]{\PackageError{jlreq-trimmarks}{Trying to delete \string#1 even though it is not defined, may be a bug}{\@ehc}}
+\newcommand*{\jlreq at trimmarks@undeferr}[1]{\PackageError{jlreq-trimmarks}{Trying~to~delete~\string#1~even~though~it~is~not~defined,~may~be~a~bug}{\@ehc}}
 \newcommand*{\jlreq at trimmarks@afterpkg at addtodeletecs}[1]{%
   \appto\jlreq at trimmarks@afterpkg at deletecslist{\jlreq at helper@undefcs{#1}{\jlreq at trimmarks@undeferr}}%
 }
@@ -23,31 +25,22 @@
   \undef{\jlreq at trimmarks@undeferr}%
 }
 
-\newcommand*{\jlreq at trimmarks@DeclareOption}[2]{%
-  \DeclareOptionX{#1}{%
-    \jlreq at ifempty{##1}{}{\PackageError{jlreq-trimmarks}{The option #1 should have no value}{\@ehc}}%
-    #2%
-  }%
-}
-\jlreq at trimmarks@afterpkg at addtodeletecs{\jlreq at trimmarks@DeclareOption}
-
 \@ifclassloaded{jlreq}{\let\ifjlreq at trimmarks@jlreqloaded=\@firstoftwo}{\let\ifjlreq at trimmarks@jlreqloaded=\@secondoftwo}
 
 \def\ifjlreq at trimmarks@tate@{\jlreq at if{\if at tate\fi}}%
 % \@firstoftwo when \if at tate is defined and \if at tate=\iftrue
 \def\ifjlreq at trimmarks@tate{%
-  \jlreq at if{\ifnum0\ifx\if at tate\@undefined 1\fi\ifx\if at tate\relax 1\fi>0 \fi}{\@secondoftwo}{\ifjlreq at trimmarks@tate@}%
+  \jlreq at if{\ifnum0\ifx\if at tate\@undefined 1\fi\ifx\if at tate\relax 1\fi>0~\fi}{\@secondoftwo}{\ifjlreq at trimmarks@tate@}%
 }
 
-
 % dvipdfmx=f,dvips=s,dviout = o, lualatex = l
-\jlreq at trimmarks@DeclareOption{dvipdfmx}{\let\jlreq at trimmarks@driver=f}
-\jlreq at trimmarks@DeclareOption{dvips}{\let\jlreq at trimmarks@driver=s}
-\jlreq at trimmarks@DeclareOption{dviout}{\let\jlreq at trimmarks@driver=o}
+\keys_define:nn { jlreq-trimmarks } { dvipdfmx .code:n = {\let\jlreq at trimmarks@driver=f}, .value_forbidden:n = true }
+\keys_define:nn { jlreq-trimmarks } { dvips .code:n = {\let\jlreq at trimmarks@driver=s}, .value_forbidden:n = true }
+\keys_define:nn { jlreq-trimmarks } { dviout .code:n = {\let\jlreq at trimmarks@driver=o}, .value_forbidden:n = true }
 \let\jlreq at trimmarks@engine=\jlreq at engine
-\jlreq at trimmarks@DeclareOption{lualatex}{\let\jlreq at trimmarks@engine=l}
-\jlreq at trimmarks@DeclareOption{uplatex}{\let\jlreq at trimmarks@engine=u}
-\jlreq at trimmarks@DeclareOption{platex}{\let\jlreq at trimmarks@engine=p}
+\keys_define:nn { jlreq-trimmarks } { lualatex .code:n = {\let\jlreq at trimmarks@engine=l}, .value_forbidden:n = true }
+\keys_define:nn { jlreq-trimmarks } { uplatex .code:n = {\let\jlreq at trimmarks@engine=u}, .value_forbidden:n = true }
+\keys_define:nn { jlreq-trimmarks } { platex .code:n = {\let\jlreq at trimmarks@engine=p}, .value_forbidden:n = true }
 
 \def\jlreq at trimmarks@switchpapersize{}
 \def\jlreq at trimmarks@addpapersize#1{%
@@ -58,7 +51,7 @@
   \@tempa
 }
 \newcommand*{\jlreq at trimmarks@addpapersize@@}[3]{%
-  \@for\@tempa:=#1\do{%
+  \clist_map_variable:nNn {#1} \@tempa {
     \eappto\jlreq at trimmarks@switchpapersize{{\expandonce{\@tempa}}{\unexpanded{\def\jlreq at resulta{#2}\def\jlreq at resultb{#3}}}}%
   }%
 }
@@ -122,8 +115,7 @@
 }
 \jlreq at trimmarks@afterpkg at addtodeletecs{\jlreq at trimmarks@analyzepapersize}
 
-\def\jlreq at trimmarks@option at papersize{+2in}
-\DeclareOptionX{trimmarks_paper}{\def\jlreq at trimmarks@option at papersize{#1}}
+\keys_define:nn { jlreq-trimmarks } { trimmarks_paper .tl_set:N = \jlreq at trimmarks@option at papersize }
 \jlreq at trimmarks@afterpkg at addtodeletecs{\jlreq at trimmarks@option at papersize}
 
 \newif\ifjlreq at trimmarks@digital \jlreq at trimmarks@digitaltrue
@@ -133,60 +125,64 @@
 % flag: `show` is specified or not
 \newif\ifjlreq at trimmarks@option at show \jlreq at trimmarks@option at showfalse
 
-\DeclareOptionX{show}{%
-  \jlreq at trimmarks@option at showtrue
-  \jlreq at ifempty{#1}{
-    \jlreq at trimmarks@showtrue\tombowdatetrue\jlreq at trimmarks@digitaltrue
-  }{
-    \jlreq at trimmarks@showfalse\tombowdatefalse\jlreq at trimmarks@digitalfalse
-    \@for\jlreq at trimmarks@tempa:=#1\do{%
-      \expandafter\jlreq at helper@trim\expandafter{\jlreq at trimmarks@tempa}{\jlreq at trimmarks@tempa}
-      \jlreq at switch{\jlreq at trimmarks@tempa}{
-        {trimmarks}{\jlreq at trimmarks@showtrue}
-        {banner}{\tombowdatetrue}
-        {digital}{\jlreq at trimmarks@digitaltrue}
-        {digital*}{\jlreq at trimmarks@digitaltrue\jlreq at trimmarks@show at artboxtrue}
-        {no}{\tombowdatefalse\jlreq at trimmarks@showfalse\jlreq at trimmarks@digitalfalse}
-      }[\PackageError{jlreq-trimmarks}{Unknown value `##1' in the option `show'}{\@ehc}]
+\keys_define:nn { jlreq-trimmarks } {
+  show .code:n = {
+    \jlreq at trimmarks@option at showtrue
+    \jlreq at ifempty{#1}{
+      \jlreq at trimmarks@showtrue\tombowdatetrue\jlreq at trimmarks@digitaltrue
+    }{
+      \jlreq at trimmarks@showfalse\tombowdatefalse\jlreq at trimmarks@digitalfalse
+      \clist_map_variable:nNn {#1} \jlreq at trimmarks@tempa {
+        \expandafter\jlreq at helper@trim\expandafter{\jlreq at trimmarks@tempa}{\jlreq at trimmarks@tempa}
+        \jlreq at switch{\jlreq at trimmarks@tempa}{
+          {trimmarks}{\jlreq at trimmarks@showtrue}
+          {banner}{\tombowdatetrue}
+          {digital}{\jlreq at trimmarks@digitaltrue}
+          {digital*}{\jlreq at trimmarks@digitaltrue\jlreq at trimmarks@show at artboxtrue}
+          {no}{\tombowdatefalse\jlreq at trimmarks@showfalse\jlreq at trimmarks@digitalfalse}
+        }[\PackageError{jlreq-trimmarks}{Unknown~value~`##1'~in~the~option~`show'}{\@ehc}]
+      }
     }
   }
 }
-\@for\jlreq at tempa:=top,bottom,gutter,fore-edge\do{%
-  \expandafter\def\csname jlreq at trimmarks@bleed@\jlreq at tempa\endcsname{3mm}
-}
-\DeclareOptionX{bleed_margin}{%
-  \begingroup
-    \def\jlreq at do{}%
-    \jlreq at parsekeyval@nokey{
-      \ifjlreq at parsekeyval@nokey at novalue{%
-        \@for\jlreq at tempa:=top,bottom,gutter,fore-edge\do{%
-        \epreto\jlreq at do{%
-            \noexpand\def\expandonce{\csname jlreq at trimmarks@bleed@\jlreq at tempa\endcsname}{##1}%
+\keys_define:nn { jlreq-trimmarks } {
+  bleed_margin .code:n = {
+    \begingroup
+      \def\jlreq at do{}%
+      \jlreq at parsekeyval@nokey{
+        \ifjlreq at parsekeyval@nokey at novalue{%
+          \clist_map_variable:nNn { top,bottom,gutter,fore-edge } \jlreq at tempa {
+          \epreto\jlreq at do{%
+              \noexpand\def\expandonce{\csname jlreq at trimmarks@bleed@\jlreq at tempa\endcsname}{##1}%
+            }%
           }%
-        }%
-      }{%
-        \ifthenelse{\equal{##1}{top} \OR \equal{##1}{bottom} \OR \equal{##1}{gutter} \OR \equal{##1}{fore-edge}}{%
-          \eappto\jlreq at do{%
-            \noexpand\def\expandonce{\csname jlreq at trimmarks@bleed@##1\endcsname}{##2}%
+        }{%
+          \bool_if:nTF {
+            \str_if_eq_p:nn {##1} {top} || \str_if_eq_p:nn {##1} {bottom} ||
+            \str_if_eq_p:nn {##1} {gutter} || \str_if_eq_p:nn {##1} {fore-edge}
+          }{
+            \eappto\jlreq at do{%
+              \noexpand\def\expandonce{\csname jlreq at trimmarks@bleed@##1\endcsname}{##2}%
+            }%
+          }{%
+            \PackageError{jlreq-trimmarks}{Unknown~position~`##1'~in~bleed_margin}{\@ehc}
           }%
-        }{%
-          \PackageError{jlreq-trimmarks}{Unknown position `##1' in bleed_margin}{\@ehc}
         }%
-      }%
-    }{#1}%
-  \expandafter\endgroup
-  \jlreq at do
+      }{#1}%
+    \expandafter\endgroup
+    \jlreq at do
+  }
 }
 
 \newif\ifjlreq at trimmarks@landscape \jlreq at trimmarks@landscapefalse
-\jlreq at trimmarks@DeclareOption{landscape}{\jlreq at trimmarks@landscapetrue}
+\keys_define:nn { jlreq-trimmarks } { landscape .code:n = {\jlreq at trimmarks@landscapetrue}, .value_forbidden:n = true }
 \jlreq at trimmarks@afterpkg at addtodeleteif{\ifjlreq at trimmarks@landscape}
 
-\let\jlreq at temporary@original@@removeelement=\@removeelement
-\let\@removeelement=\jlreq at helper@removeelement
-\ProcessOptionsX*\relax
-\let\@removeelement=\jlreq at temporary@original@@removeelement
-\let\jlreq at temporary@original@@removeelement=\@undefined
+\keys_set:nn { jlreq-trimmarks } {
+  trimmarks_paper = {+2in},
+  bleed_margin = { top = 3mm, bottom = 3mm, gutter = 3mm, fore-edge = 3mm },
+}
+\ProcessKeysOptions { jlreq-trimmarks }
 
 \ifjlreq at trimmarks@option at show\else
   \ifx o\jlreq at trimmarks@driver
@@ -228,7 +224,7 @@
 
 \ifx o\jlreq at trimmarks@driver
   \ifjlreq at trimmarks@digital
-    \PackageError{jlreq-trimmarks}{`show=digital' can't be used with the driver `dviout'}{\@ehc}
+    \PackageError{jlreq-trimmarks}{`show=digital'~can't~be~used~with~the~driver~`dviout'}{\@ehc}
   \fi
 \fi
 
@@ -300,114 +296,115 @@
   \jlreq at do
 }
 
-\newcommand{\jlreqtrimmarkssetup}[1]{%
-  \jlreq at parsekeyval[jlreqtrimmarkssetup]{
-    {banner}{%
-      \@for\@tempa:=odd,even\do{%
-        \@for\jlreq at tempa:=tate,yoko,corner,inyoko,intate\do{%
-          \@for\jlreq at tempb:=top,bottom\do{%
-            \@for\jlreq at tempc:=left,right\do{%
-              \@namedef{jlreq at trimmarks@banner@\@tempa @\jlreq at tempa @\jlreq at tempb @\jlreq at tempc}{}%
-            }%
+\keys_define:nn { jlreqtrimmarkssetup } {
+  banner .code:n = {
+    \clist_map_variable:nNn { odd,even } \@tempa {
+      \clist_map_variable:nNn { tate,yoko,corner,inyoko,intate } \jlreq at tempa {
+        \clist_map_variable:nNn {top,bottom} \jlreq at tempb {
+          \clist_map_variable:nNn {left,right} \jlreq at tempc {
+            \@namedef{jlreq at trimmarks@banner@\@tempa @\jlreq at tempa @\jlreq at tempb @\jlreq at tempc}{}%
           }%
         }%
-        \@for\jlreq at tempa:=before,after\do{%
-          \@for\jlreq at tempb:=top,bottom,in\do{%
-            \@namedef{jlreq at trimmarks@banner@\@tempa @\jlreq at tempa @\jlreq at tempb @center}{}%
-          }%
-          \@for\jlreq at tempb:=left,right,in\do{%
-            \@namedef{jlreq at trimmarks@banner@\@tempa @\jlreq at tempa @center@\jlreq at tempb}{}%
-          }%
+      }%
+      \clist_map_variable:nNn {before,after} \jlreq at tempa {
+        \clist_map_variable:nNn {top,bottom,in} \jlreq at tempb {
+          \@namedef{jlreq at trimmarks@banner@\@tempa @\jlreq at tempa @\jlreq at tempb @center}{}%
         }%
+        \clist_map_variable:nNn {left,right,in} \jlreq at tempb {
+          \@namedef{jlreq at trimmarks@banner@\@tempa @\jlreq at tempa @center@\jlreq at tempb}{}%
+        }%
       }%
-      \def\jlreq at do{}%
-      \jlreq at parsekeyval@nokey{%
-        \ifjlreq at parsekeyval@nokey at novalue{}{%
-          \edef\jlreq at gutterodd{\ifjlreq at trimmarks@tate{right}{left}}%
-          \if at twoside
-            \edef\jlreq at guttereven{\ifjlreq at trimmarks@tate{left}{right}}%
-          \else
-            \let\jlreq at guttereven\jlreq at gutterodd
-          \fi
-          \jlreq at switch*{####1}{
-            {top-left}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top at left}{top at left}{####2}}}
-            {left-top}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top at left}{top at left}{####2}}}
-            {top-right}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top at right}{top at right}{####2}}}
-            {right-top}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top at right}{top at right}{####2}}}
-            {top-gutter}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top@\jlreq at gutterodd}{top@\jlreq at guttereven}{####2}}}
-            {gutter-top}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top@\jlreq at gutterodd}{top@\jlreq at guttereven}{####2}}}
-            {top-fore-edge}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top@\jlreq at guttereven}{top@\jlreq at gutterodd}{####2}}}
-            {fore-edge-top}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top@\jlreq at guttereven}{top@\jlreq at gutterodd}{####2}}}
-            {bottom-left}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom at left}{bottom at left}{####2}}}
-            {left-bottom}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom at left}{bottom at left}{####2}}}
-            {bottom-right}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom at right}{bottom at right}{####2}}}
-            {right-bottom}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom at right}{bottom at right}{####2}}}
-            {bottom-gutter}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom@\jlreq at gutterodd}{bottom@\jlreq at guttereven}{####2}}}
-            {gutter-bottom}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom@\jlreq at gutterodd}{bottom@\jlreq at guttereven}{####2}}}
-            {bottom-fore-edge}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom@\jlreq at guttereven}{bottom@\jlreq at gutterodd}{####2}}}
-            {fore-edge-bottom}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom@\jlreq at guttereven}{bottom@\jlreq at gutterodd}{####2}}}
-            {top-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{top at center}{top at center}{####2}}}
-            {center-top}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{top at center}{top at center}{####2}}}
-            {bottom-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{bottom at center}{bottom at center}{####2}}}
-            {center-bottom}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{bottom at center}{bottom at center}{####2}}}
-            {center-right}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center at right}{center at right}{####2}}}
-            {right-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center at right}{center at right}{####2}}}
-            {center-left}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center at left}{center at left}{####2}}}
-            {left-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center at left}{center at left}{####2}}}
-            {center-gutter}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center@\jlreq at gutterodd}{center@\jlreq at guttereven}{####2}}}
-            {gutter-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center@\jlreq at gutterodd}{center@\jlreq at guttereven}{####2}}}
-            {center-fore-edge}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center@\jlreq at guttereven}{center@\jlreq at gutterodd}{####2}}}
-            {fore-edge-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center@\jlreq at guttereven}{center@\jlreq at gutterodd}{####2}}}
-          }%
+    }%
+    \def\jlreq at do{}%
+    \jlreq at parsekeyval@nokey{%
+      \ifjlreq at parsekeyval@nokey at novalue{}{%
+        \edef\jlreq at gutterodd{\ifjlreq at trimmarks@tate{right}{left}}%
+        \if at twoside
+          \edef\jlreq at guttereven{\ifjlreq at trimmarks@tate{left}{right}}%
+        \else
+          \let\jlreq at guttereven\jlreq at gutterodd
+        \fi
+        \jlreq at switch*{##1}{
+          {top-left}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top at left}{top at left}{##2}}}
+          {left-top}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top at left}{top at left}{##2}}}
+          {top-right}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top at right}{top at right}{##2}}}
+          {right-top}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top at right}{top at right}{##2}}}
+          {top-gutter}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top@\jlreq at gutterodd}{top@\jlreq at guttereven}{##2}}}
+          {gutter-top}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top@\jlreq at gutterodd}{top@\jlreq at guttereven}{##2}}}
+          {top-fore-edge}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top@\jlreq at guttereven}{top@\jlreq at gutterodd}{##2}}}
+          {fore-edge-top}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{top@\jlreq at guttereven}{top@\jlreq at gutterodd}{##2}}}
+          {bottom-left}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom at left}{bottom at left}{##2}}}
+          {left-bottom}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom at left}{bottom at left}{##2}}}
+          {bottom-right}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom at right}{bottom at right}{##2}}}
+          {right-bottom}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom at right}{bottom at right}{##2}}}
+          {bottom-gutter}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom@\jlreq at gutterodd}{bottom@\jlreq at guttereven}{##2}}}
+          {gutter-bottom}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom@\jlreq at gutterodd}{bottom@\jlreq at guttereven}{##2}}}
+          {bottom-fore-edge}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom@\jlreq at guttereven}{bottom@\jlreq at gutterodd}{##2}}}
+          {fore-edge-bottom}{\appto\jlreq at do{\jlreq at trimmarks@setbanner{bottom@\jlreq at guttereven}{bottom@\jlreq at gutterodd}{##2}}}
+          {top-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{top at center}{top at center}{##2}}}
+          {center-top}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{top at center}{top at center}{##2}}}
+          {bottom-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{bottom at center}{bottom at center}{##2}}}
+          {center-bottom}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{bottom at center}{bottom at center}{##2}}}
+          {center-right}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center at right}{center at right}{##2}}}
+          {right-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center at right}{center at right}{##2}}}
+          {center-left}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center at left}{center at left}{##2}}}
+          {left-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center at left}{center at left}{##2}}}
+          {center-gutter}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center@\jlreq at gutterodd}{center@\jlreq at guttereven}{##2}}}
+          {gutter-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center@\jlreq at gutterodd}{center@\jlreq at guttereven}{##2}}}
+          {center-fore-edge}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center@\jlreq at guttereven}{center@\jlreq at gutterodd}{##2}}}
+          {fore-edge-center}{\appto\jlreq at do{\jlreq at trimmarks@setbanner@{center@\jlreq at guttereven}{center@\jlreq at gutterodd}{##2}}}
         }%
-      }{##1}%
-      \jlreq at if{\ifx\jlreq at do\@empty\fi}{
-        \appto\jlreq at do{\jlreq at trimmarks@setbanner{top at left}{top at left}{##1}}%
-      }{}%
-      \jlreq at do
-    }
-    {banner_font}{\def\jlreq at trimmarks@bannerfont{##1}}
-    {trimmarks_width}{\setlength{\@tombowwidth}{##1}}
-    {color}{%
-      \jlreq at ifempty{##1}{%
-        \def\jlreq at trimmarks@color{\normalcolor}%
-      }{%
-        \@ifundefined{color}{%
-          \PackageError{jlreq-trimmarks}{`\string\color' is not defined, please load the package `color' or its variant before this package}{\@ehc}%
-        }%
-        \jlreq at switch{##1}{
-          {c}{\def\jlreq at trimmarks@color{\color[cmyk]{1,0,0,0}}}
-          {m}{\def\jlreq at trimmarks@color{\color[cmyk]{0,1,0,0}}}
-          {y}{\def\jlreq at trimmarks@color{\color[cmyk]{0,0,1,0}}}
-          {k}{\def\jlreq at trimmarks@color{\color[cmyk]{0,0,0,1}}}
-          {cm}{\def\jlreq at trimmarks@color{\color[cmyk]{1,1,0,0}}}
-          {cy}{\def\jlreq at trimmarks@color{\color[cmyk]{1,0,1,0}}}
-          {ck}{\def\jlreq at trimmarks@color{\color[cmyk]{1,0,0,1}}}
-          {my}{\def\jlreq at trimmarks@color{\color[cmyk]{0,1,1,0}}}
-          {mk}{\def\jlreq at trimmarks@color{\color[cmyk]{0,1,0,1}}}
-          {yk}{\def\jlreq at trimmarks@color{\color[cmyk]{0,0,1,1}}}
-          {cmy}{\def\jlreq at trimmarks@color{\color[cmyk]{1,1,1,0}}}
-          {cmk}{\def\jlreq at trimmarks@color{\color[cmyk]{1,1,0,1}}}
-          {cyk}{\def\jlreq at trimmarks@color{\color[cmyk]{1,0,1,1}}}
-          {myk}{\def\jlreq at trimmarks@color{\color[cmyk]{0,1,1,1}}}
-          {cmyk}{\def\jlreq at trimmarks@color{\color[cmyk]{1,1,1,1}}}
-          {%
-            \jlreq at iffirsttoken{##1}{[}{%
-              \def\@tempa[####1]####2\jlreq at endmark{\def\jlreq at trimmarks@color{\color[####1]{####2}}}%
-            }{%
-              \def\@tempa####1\jlreq at endmark{\def\jlreq at trimmarks@color{\color{####1}}}%
-            }%
-            \@tempa##1\jlreq at endmark
+      }%
+    }{#1}%
+    \jlreq at if{\ifx\jlreq at do\@empty\fi}{
+      \appto\jlreq at do{\jlreq at trimmarks@setbanner{top at left}{top at left}{#1}}%
+    }{}%
+    \jlreq at do
+  },
+  banner_font .tl_set:N = \jlreq at trimmarks@bannerfont,
+  trimmarks_width .code:n = {\setlength{\@tombowwidth}{#1}},
+  color .code:n = {
+    \jlreq at ifempty{#1}{%
+      \def\jlreq at trimmarks@color{\normalcolor}%
+    }{%
+      \@ifundefined{color}{%
+        \PackageError{jlreq-trimmarks}{`\string\color'~is~not~defined,~please~load~the~package~`color'~or~its~variant~before~this~package}{\@ehc}%
+      }%
+      \jlreq at switch{#1}{
+        {c}{\def\jlreq at trimmarks@color{\color[cmyk]{1,0,0,0}}}
+        {m}{\def\jlreq at trimmarks@color{\color[cmyk]{0,1,0,0}}}
+        {y}{\def\jlreq at trimmarks@color{\color[cmyk]{0,0,1,0}}}
+        {k}{\def\jlreq at trimmarks@color{\color[cmyk]{0,0,0,1}}}
+        {cm}{\def\jlreq at trimmarks@color{\color[cmyk]{1,1,0,0}}}
+        {cy}{\def\jlreq at trimmarks@color{\color[cmyk]{1,0,1,0}}}
+        {ck}{\def\jlreq at trimmarks@color{\color[cmyk]{1,0,0,1}}}
+        {my}{\def\jlreq at trimmarks@color{\color[cmyk]{0,1,1,0}}}
+        {mk}{\def\jlreq at trimmarks@color{\color[cmyk]{0,1,0,1}}}
+        {yk}{\def\jlreq at trimmarks@color{\color[cmyk]{0,0,1,1}}}
+        {cmy}{\def\jlreq at trimmarks@color{\color[cmyk]{1,1,1,0}}}
+        {cmk}{\def\jlreq at trimmarks@color{\color[cmyk]{1,1,0,1}}}
+        {cyk}{\def\jlreq at trimmarks@color{\color[cmyk]{1,0,1,1}}}
+        {myk}{\def\jlreq at trimmarks@color{\color[cmyk]{0,1,1,1}}}
+        {cmyk}{\def\jlreq at trimmarks@color{\color[cmyk]{1,1,1,1}}}
+        {%
+          \jlreq at iffirsttoken{##1}{[}{%
+            \def\@tempa[####1]####2\jlreq at endmark{\def\jlreq at trimmarks@color{\color[####1]{####2}}}%
+          }{%
+            \def\@tempa####1\jlreq at endmark{\def\jlreq at trimmarks@color{\color{####1}}}%
           }%
+          \@tempa##1\jlreq at endmark
         }%
       }%
     }%
-  }{#1}%
+  }%
 }
+\newcommand{\jlreqtrimmarkssetup}[1]{%
+  \keys_set:nn { jlreqtrimmarkssetup } {#1}
+}
 \@onlypreamble\jlreqtrimmarkssetup
 \@bannertoken{%
   \jobname\space(\number\year-\two at digits\month-\two at digits\day
-  \space\two at digits\hour:\two at digits\minute)%
+  \space\two at digits\hour :\two at digits\minute)%
 }
 \jlreqtrimmarkssetup{
   banner={\the\@bannertoken},
@@ -483,11 +480,10 @@
 \def\jlreq at trimmarks@bleed{3mm}
 % left=gutter?
 \def\ifjlreq at trimmarks@leftisgutter{%
-  \ifjlreq at trimmarks@tate{%
-    \jlreq at if{\ifnum 0\ifodd\c at page 1\fi\if at twoside\else 1\fi>0 \fi}{\@secondoftwo}{\@firstoftwo}%
-  }{%
-    \jlreq at if{\ifnum 0\ifodd\c at page 1\fi\if at twoside\else 1\fi>0 \fi}{\@firstoftwo}{\@secondoftwo}%
-  }%
+  \bool_if:nTF {
+    ( \legacy_if_p:n { jlreq at trimmarks@tate } && ( ! ( \int_if_odd_p:n { \c at page } || ! \legacy_if_p:n { @twoside } ) ) ) ||
+    ( ! \legacy_if_p:n { jlreq at trimmarks@tate } && ( \int_if_odd_p:n { \c at page } || ! \legacy_if_p:n { @twoside } ) )
+  }
 }
 \def\jlreq at trimmarks@bleed at left{\ifjlreq at trimmarks@leftisgutter{\jlreq at trimmarks@bleed at gutter}{\expandafter\csname jlreq at trimmarks@bleed at fore-edge\endcsname}}
 \def\jlreq at trimmarks@bleed at right{\ifjlreq at trimmarks@leftisgutter{\expandafter\csname jlreq at trimmarks@bleed at fore-edge\endcsname}{\jlreq at trimmarks@bleed at gutter}}
@@ -842,9 +838,9 @@
   \edef\jlreq at trimmarks@pttobp#1{\noexpand\strip at pt\noexpand\dimexpr\strip at pt\jlreq at resultdimen\noexpand\dimexpr0.9963\noexpand\dimexpr#1\unexpanded{\relax\relax\relax}}
   \edef\jlreq at trimmarks@trimboxsize{%
     [%
-      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperwidth - \paperwidth)/2}
-      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperheight - \paperheight)/2}
-      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperwidth + \paperwidth)/2}
+      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperwidth - \paperwidth)/2}~
+      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperheight - \paperheight)/2}~
+      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperwidth + \paperwidth)/2}~
       \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperheight + \paperheight)/2}%
     ]
   }
@@ -851,9 +847,9 @@
   \jlreq at tempcnta=\c at page
   \def\@tempa{%
     [%
-      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperwidth - \paperwidth)/2 - \jlreq at trimmarks@bleed at left}
-      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperheight - \paperheight)/2 - \jlreq at trimmarks@bleed at bottom}
-      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperwidth + \paperwidth)/2 + \jlreq at trimmarks@bleed at right}
+      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperwidth - \paperwidth)/2 - \jlreq at trimmarks@bleed at left}~
+      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperheight - \paperheight)/2 - \jlreq at trimmarks@bleed at bottom}~
+      \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperwidth + \paperwidth)/2 + \jlreq at trimmarks@bleed at right}~
       \jlreq at trimmarks@pttobp{(\jlreq at trimmarks@paperheight + \paperheight)/2 + \jlreq at trimmarks@bleed at top}%
     ]
   }
@@ -863,14 +859,14 @@
   \edef\jlreq at trimmarks@bleedboxsize at even{\@tempa}%
   \c at page=\jlreq at tempcnta
   \edef\jlreq at trimmarks@pdfattribute at odd{%
-    /TrimBox \jlreq at trimmarks@trimboxsize
-    \ifjlreq at trimmarks@show at artbox /ArtBox \jlreq at trimmarks@trimboxsize\fi
-    /BleedBox \jlreq at trimmarks@bleedboxsize at odd
+    /TrimBox~\jlreq at trimmarks@trimboxsize
+    \ifjlreq at trimmarks@show at artbox /ArtBox~\jlreq at trimmarks@trimboxsize\fi
+    /BleedBox~\jlreq at trimmarks@bleedboxsize at odd
   }
   \edef\jlreq at trimmarks@pdfattribute at even{%
-    /TrimBox \jlreq at trimmarks@trimboxsize
-    \ifjlreq at trimmarks@show at artbox /ArtBox \jlreq at trimmarks@trimboxsize\fi
-    /BleedBox \jlreq at trimmarks@bleedboxsize at even
+    /TrimBox~\jlreq at trimmarks@trimboxsize
+    \ifjlreq at trimmarks@show at artbox /ArtBox~\jlreq at trimmarks@trimboxsize\fi
+    /BleedBox~\jlreq at trimmarks@bleedboxsize at even
   }
   \jlreq at trimmarks@afterpkg at addtodeletecs{\jlreq at trimmarks@pttobp}
   \jlreq at trimmarks@afterpkg at addtodeletecs{\jlreq at trimmarks@trimboxsize}
@@ -880,9 +876,9 @@
   \jlreq at trimmarks@afterpkg at addtodeletecs{\jlreq at trimmarks@pdfattribute at even}
 
   \begingroup
-    \c at page=1
+    \c at page=1\relax
     \jlreq at tempdima=\jlreq at trimmarks@bleed at left
-    \c at page=2
+    \c at page=2\relax
     \ifdim\jlreq at trimmarks@bleed at left=\jlreq at tempdima
       \global\let\jlreq at tempa\@firstoftwo
     \else
@@ -896,13 +892,13 @@
       \@tempa
     \fi
     \ifx f\jlreq at trimmarks@driver
-      \epreto\@outputtombow{\noexpand\special{pdf: put @thispage <<\jlreq at trimmarks@pdfattribute at odd>>}}
+      \epreto\@outputtombow{\noexpand\special{pdf:~put~@thispage~<<\jlreq at trimmarks@pdfattribute at odd>>}}
     \fi
     \ifx s\jlreq at trimmarks@driver
-      \edef\@tempa{\noexpand\special{ps:SDict begin
-        [ /TrimBox \jlreq at trimmarks@trimboxsize /PAGE pdfmark
-        \ifjlreq at trimmarks@show at artbox [ /ArtBox   \jlreq at trimmarks@trimboxsize /PAGE pdfmark \fi
-        [ /BleedBox \jlreq at trimmarks@bleedboxsize at odd /PAGE pdfmark
+      \edef\@tempa{\noexpand\special{ps:SDict~begin~
+        [~/TrimBox~\jlreq at trimmarks@trimboxsize /PAGE~pdfmark~
+        \ifjlreq at trimmarks@show at artbox [~/ArtBox~\jlreq at trimmarks@trimboxsize /PAGE~pdfmark~\fi
+        [~/BleedBox~\jlreq at trimmarks@bleedboxsize at odd /PAGE~pdfmark~
       end}}%
       \@tempa
     \fi
@@ -916,20 +912,20 @@
     \fi
     \ifx f\jlreq at trimmarks@driver
       \epreto\@outputtombow{%
-        \unexpanded{\ifodd\c at page\special}{pdf: put @thispage <<\jlreq at trimmarks@pdfattribute at odd>>}%
-        \unexpanded{\else\special}{pdf: put @thispage <<\jlreq at trimmarks@pdfattribute at even>>}\noexpand\fi
+        \unexpanded{\ifodd\c at page\special}{pdf:~put~@thispage~<<\jlreq at trimmarks@pdfattribute at odd>>}%
+        \unexpanded{\else\special}{pdf:~put~@thispage~<<\jlreq at trimmarks@pdfattribute at even>>}\noexpand\fi
       }
     \fi
     \ifx s\jlreq at trimmarks@driver
       \epreto\@outputtombow{%
-        \unexpanded{\ifodd\c at page\special}{ps:SDict begin
-          [ /TrimBox \jlreq at trimmarks@trimboxsize /PAGE pdfmark
-          \ifjlreq at trimmarks@show at artbox [ /ArtBox   \jlreq at trimmarks@trimboxsize /PAGE pdfmark \fi
-          [ /BleedBox \jlreq at trimmarks@bleedboxsize at odd /PAGE pdfmark
-        end}\unexpanded{\else\special}{ps:SDict begin
-          [ /TrimBox \jlreq at trimmarks@trimboxsize /PAGE pdfmark
-          \ifjlreq at trimmarks@show at artbox [ /ArtBox   \jlreq at trimmarks@trimboxsize /PAGE pdfmark \fi
-          [ /BleedBox \jlreq at trimmarks@bleedboxsize at even /PAGE pdfmark
+        \unexpanded{\ifodd\c at page\special}{ps:SDict~begin~
+          [~/TrimBox~\jlreq at trimmarks@trimboxsize /PAGE~pdfmark~
+          \ifjlreq at trimmarks@show at artbox [~/ArtBox~\jlreq at trimmarks@trimboxsize /PAGE~pdfmark~\fi
+          [~/BleedBox~\jlreq at trimmarks@bleedboxsize at odd /PAGE~pdfmark~
+        end}\unexpanded{\else\special}{ps:SDict~begin~
+          [~/TrimBox~\jlreq at trimmarks@trimboxsize /PAGE~pdfmark~
+          \ifjlreq at trimmarks@show at artbox [~/ArtBox~\jlreq at trimmarks@trimboxsize /PAGE~pdfmark~\fi
+          [~/BleedBox~\jlreq at trimmarks@bleedboxsize at even /PAGE~pdfmark~
         end}\noexpand\fi
       }
     \fi
@@ -939,5 +935,5 @@
 % always true
 \tombowtrue
 
-
+\ExplSyntaxOff
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/jlreq/jlreq.cls	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/tex/latex/jlreq/jlreq.cls	2021-07-22 20:39:40 UTC (rev 60015)
@@ -5,11 +5,10 @@
 %%
 % (based on JLReq 20200811 https://www.w3.org/TR/2020/NOTE-jlreq-20200811/)
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{jlreq}[2021/05/28 jlreq]
-\RequirePackage{xkeyval,everyhook,etoolbox,ifthen}
+\ProvidesClass{jlreq}[2021/07/22 jlreq]
+\RequirePackage{l3keys2e,etoolbox}
 \RequirePackage{jlreq-helpers}
 
-
 \ExplSyntaxOn
 \tl_new:N \l_jlreq_tmpa_tl
 \cs_new:Nn \l_jlreq_do: {}
@@ -18,14 +17,18 @@
 \str_new:N \l_jlreq_tmpc_str
 \bool_new:N \l_jlreq_tmpa_bool
 \clist_new:N \l_jlreq_tmpa_clist
-\ExplSyntaxOff
+\dim_new:N \l_jlreq_tmpa_dim
+\skip_new:N \l_jlreq_tmpa_skip
+\box_new:N \l_jlreq_tmpa_box
+\box_new:N \l_jlreq_tmpb_box
+\box_new:N \l_jlreq_tmpc_box
 
-\newcommand*{\jlreq at undeferr}[1]{\ClassError{jlreq}{Trying to delete \string#1 even though it is not defined, may be a bug}{\@ehc}}
+\def\jlreq at undeferr#1{\ClassError{jlreq}{Trying~to~delete~\string#1~even~though~it~is~not~defined,~may~be~a~bug}{\@ehc}}
 % クラスファイル内でしか使わないマクロをクラスファイル終了時に未定義にする
-\newcommand*{\jlreq at aftercls@addtodeletecs}[1]{%
+\def\jlreq at aftercls@addtodeletecs#1{%
   \appto\jlreq at aftercls@deletecslist{\jlreq at helper@undefcs{#1}{\jlreq at undeferr}}%
 }
-\newcommand*{\jlreq at aftercls@addtodeleteif}[1]{%
+\def\jlreq at aftercls@addtodeleteif#1{%
   \appto\jlreq at aftercls@deletecslist{\jlreq at helper@undefif{#1}{\jlreq at undeferr}}%
 }
 \jlreq at aftercls@addtodeletecs{\jlreq at aftercls@addtodeletecs}
@@ -43,10 +46,10 @@
 
 \def\jlreq at saveoriginalcs#1{%
   \@ifundefined{#1}{
-    \ClassError{jlreq}{Trying to save #1 but it's not defined, may be a bug}{\@ehc}%
+    \ClassError{jlreq}{Trying~to~save~#1~but~it's~not~defined,~may~be~a~bug}{\@ehc}%
   }{}
   \@ifundefined{jlreq at original@#1}{}{
-    \ClassError{jlreq}{Trying to save #1 twice, may be a bug}{\@ehc}%
+    \ClassError{jlreq}{Trying~to~save~#1~twice,~may~be~a~bug}{\@ehc}%
   }
   \begingroup
     \edef\jlreq at do{\noexpand\let\expandonce{\csname jlreq at original@#1\endcsname}=\expandonce{\csname #1\endcsname}}
@@ -67,25 +70,16 @@
 % オプション処理の際にしか使わない変数(後でそれを元に別の変数を調整する)
 % ものは\jlreq at option@<key>に格納する.
 % _とかは@に変換する.
-% 引数無しの\DeclareOptionX
-\newcommand*{\jlreq at DeclareOption}[2]{%
-  \DeclareOptionX{#1}{%
-    \jlreq at ifempty{##1}{}{\ClassError{jlreq}{The option #1 should have no value}{\@ehc}}%
-    #2%
-  }
-}
-\jlreq at aftercls@addtodeletecs{\jlreq at DeclareOption}
 % エンジン類
-\jlreq at DeclareOption{uplatex}{\let\jlreq at engine=u}
-\jlreq at DeclareOption{platex}{\let\jlreq at engine=p}
-\jlreq at DeclareOption{lualatex}{\let\jlreq at engine=l}
+\keys_define:nn { jlreq } { uplatex .code:n = { \let\jlreq at engine=u }, uplatex .value_forbidden:n = true }
+\keys_define:nn { jlreq } { platex .code:n = { \let\jlreq at engine=p }, platex .value_forbidden:n = true }
+\keys_define:nn { jlreq } { lualatex .code:n = { \let\jlreq at engine=l }, lualatex .value_forbidden:n = true }
 
 % 文書のタイプ
-\newcommand*{\jlreq at article@type}{article}
-\define at choicekey{jlreq.cls}{article_type}{article,report,book}{\renewcommand*{\jlreq at article@type}{#1}}
-\jlreq at DeclareOption{article}{\renewcommand*{\jlreq at article@type}{article}}
-\jlreq at DeclareOption{report}{\renewcommand*{\jlreq at article@type}{report}}
-\jlreq at DeclareOption{book}{\renewcommand*{\jlreq at article@type}{book}}
+\keys_define:nn { jlreq } { article_type .choices:nn = {article,report,book}{\def\jlreq at article@type{#1}} }
+\keys_define:nn { jlreq } { article .code:n = { \def\jlreq at article@type{article} }, article .value_forbidden:n = true }
+\keys_define:nn { jlreq } { report .code:n = { \def\jlreq at article@type{report} }, report .value_forbidden:n = true }
+\keys_define:nn { jlreq } { book .code:n = { \def\jlreq at article@type{book} }, book .value_forbidden:n = true }
 
 %.. 基本版面.まずは紙サイズ.
 \def\jlreq at switchpapersize{}
@@ -99,31 +93,36 @@
   \edef\@tempa{\unexpanded{\jlreq at addpapersize@@{#1}{#2}}\csexpandonce{jlreq at helper@papersizelist@#3}}%
   \@tempa
 }
-\newcommand*{\jlreq at addpapersize@@}[4]{%
-  \@for\@tempa:=#1\do{%
+\def\jlreq at addpapersize@@#1#2#3#4{%
+  \clist_map_variable:nNn {#1} \@tempa {
     \eappto\jlreq at switchpapersize{{\expandonce{\@tempa}}{\unexpanded{\setlength{\paperwidth}{#3}\setlength{\paperheight}{#4}}}}%
   }%
-  \@for\@tempa:=#2\do{%
-    \expandafter\jlreq at DeclareOption\expandafter{\@tempa}{\setlength{\paperwidth}{#3}\setlength{\paperheight}{#4}}%
-  }%
+  \clist_map_inline:nn {#2}  {
+    \keys_define:nn { jlreq } {
+      ##1 .code:n = { \setlength{\paperwidth}{#3}\setlength{\paperheight}{#4} },
+      ##1 .value_forbidden:n = true
+    }
+  }
 }
 \jlreq at aftercls@addtodeletecs{\jlreq at addpapersize}
 \jlreq at aftercls@addtodeletecs{\jlreq at addpapersize@}
 \jlreq at aftercls@addtodeletecs{\jlreq at addpapersize@@}
-\DeclareOptionX{paper}{
-  \edef\jlreq at do{%
-    \unexpanded{\jlreq at switch{#1}}{\expandonce{\jlreq at switchpapersize}}%
-    [\unexpanded{%
-      \jlreq at helper@dividebycomma{#1}%
-      \ifjlreq at result
-        \setlength{\paperwidth}{\dimexpr\jlreq at resulta\relax}%
-        \setlength{\paperheight}{\dimexpr\jlreq at resultb\relax}%
-      \else
-        \ClassError{jlreq}{The paper #1 is unknown}{\@ehc}%
-      \fi
-    }]%
-  }%
-  \jlreq at do
+\keys_define:nn { jlreq } {
+  paper .code:n = {
+    \edef\jlreq at do{%
+      \unexpanded{\jlreq at switch{#1}}{\expandonce{\jlreq at switchpapersize}}%
+      [\unexpanded{%
+        \jlreq at helper@dividebycomma{#1}%
+        \ifjlreq at result
+          \setlength{\paperwidth}{\dimexpr\jlreq at resulta\relax}%
+          \setlength{\paperheight}{\dimexpr\jlreq at resultb\relax}%
+        \else
+          \ClassError{jlreq}{The~paper~#1~is~unknown}{\@ehc}%
+        \fi
+      }]%
+    }%
+    \jlreq at do
+  }
 }
 % 紙サイズ一覧.b*はJIS B.
 \jlreq at addpapersize{a0,A0}{}[a0]
@@ -168,91 +167,81 @@
 
 
 %.. フォントサイズ,行長,1ページあたりの行数で基本版面のサイズを決める(2.4.1.a)
-\newcommand*{\jlreq at option@fontsize}{}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@fontsize}
-\DeclareOptionX{fontsize}{\renewcommand*{\jlreq at option@fontsize}{#1}}
-\jlreq at DeclareOption{10pt}{\renewcommand*{\jlreq at option@fontsize}{10pt}}
-\jlreq at DeclareOption{11pt}{\renewcommand*{\jlreq at option@fontsize}{11pt}}
-\jlreq at DeclareOption{12pt}{\renewcommand*{\jlreq at option@fontsize}{12pt}}
-\newcommand*{\jlreq at option@jafontsize}{}
+\keys_define:nn { jlreq } { fontsize .tl_set:N = \jlreq at option@fontsize }
+\keys_define:nn { jlreq } {
+  10pt .code:n = {\def\jlreq at option@fontsize{10pt}}, 10pt .value_forbidden:n = true,
+  11pt .code:n = {\def\jlreq at option@fontsize{11pt}}, 11pt .value_forbidden:n = true,
+  12pt .code:n = {\def\jlreq at option@fontsize{12pt}}, 12pt .value_forbidden:n = true,
+}
+\keys_define:nn { jlreq } { jafontsize .tl_set:N = \jlreq at option@jafontsize}
+\keys_define:nn { jlreq } { jafontscale .tl_set:N = \jlreq at option@jafontscale}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@jafontsize}
-\DeclareOptionX{jafontsize}{\renewcommand*{\jlreq at option@jafontsize}{#1}}
-\newcommand*{\jlreq at option@jafontscale}{1}
-\DeclareOptionX{jafontscale}{\renewcommand*{\jlreq at option@jafontscale}{#1}}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@jafontscale}
 %.. 行の長さ
-\newcommand*{\jlreq at option@line at length}{}
+\keys_define:nn { jlreq } { line_length .tl_set:N = \jlreq at option@line at length}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@line at length}
-\DeclareOptionX{line_length}{\renewcommand*{\jlreq at option@line at length}{#1}}
 %.. 1ページあたりの行数
-\newcommand*{\jlreq at option@number at of@lines}{}
+\keys_define:nn { jlreq } { number_of_lines .tl_set:N = \jlreq at option@number at of@lines}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@number at of@lines}
-\DeclareOptionX{number_of_lines}{\renewcommand*{\jlreq at option@number at of@lines}{#1}}
 
 % 地の空き量,のどの空き量で配置位置を決める(2.4.1.b)省略されたら中央配置.
 %.. 天
-\newcommand*{\jlreq at option@head at space}{}
+\keys_define:nn { jlreq } { head_space .tl_set:N = \jlreq at option@head at space}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@head at space}
-\DeclareOptionX{head_space}{\renewcommand*{\jlreq at option@head at space}{#1}}
-
 %.. 地
-\newcommand*{\jlreq at option@foot at space}{}
+\keys_define:nn { jlreq } { foot_space .tl_set:N = \jlreq at option@foot at space}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@foot at space}
-\DeclareOptionX{foot_space}{\renewcommand*{\jlreq at option@foot at space}{#1}}
 %.. のど
-\newcommand*{\jlreq at option@gutter}{}
+\keys_define:nn { jlreq } { gutter .tl_set:N = \jlreq at option@gutter}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@gutter}
-\DeclareOptionX{gutter}{\renewcommand*{\jlreq at option@gutter}{#1}}
 %.. 小口
-\newcommand*{\jlreq at option@fore at edge}{}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@fore at edge}
-\DeclareOptionX{fore_edge}{\renewcommand*{\jlreq at option@fore at edge}{#1}}% 昔にこっちにしていたので残している
-\DeclareOptionX{fore-edge}{\renewcommand*{\jlreq at option@fore at edge}{#1}}
+\keys_define:nn { jlreq } {
+  fore_edge .tl_set:N = \jlreq at option@fore at edge,
+  fore-edge .tl_set:N = \jlreq at option@fore at edge
+}
 
 %.. 柱とノンブル
-\newcommand*{\jlreq at option@headfoot at verticalpos}{}
+% 本文とヘッダ/フッタの間の空き
+\keys_define:nn { jlreq } { headfoot_verticalposition .tl_set:N = \jlreq at option@headfoot at verticalpos}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@headfoot at verticalpos}
-% 本文とヘッダ/フッタの間の空き
-\DeclareOptionX{headfoot_verticalposition}{\renewcommand*{\jlreq at option@headfoot at verticalpos}{#1}}
 % 柱やノンブルの左右の空き
-\newcommand*{\jlreq at headfoot@sidemargin}{0pt}
-\DeclareOptionX{headfoot_sidemargin}{\renewcommand*{\jlreq at headfoot@sidemargin}{#1}}
+\keys_define:nn { jlreq } { headfoot_sidemargin .tl_set:N = \jlreq at headfoot@sidemargin}
 
 %.. 段間
-\newcommand*{\jlreq at option@column at gap}{2zw}
+\keys_define:nn { jlreq } { column_gap .tl_set:N = \jlreq at option@column at gap}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@column at gap}
-\DeclareOptionX{column_gap}{\renewcommand*{\jlreq at option@column at gap}{#1}}
 
 %.. 行送り,指定無しの場合は文字サイズの1.7倍とする.(1.5から2倍が好ましい:2.4.2.d 注3)
-\newcommand*{\jlreq at option@baselineskip}{17zw/10}
+\keys_define:nn { jlreq } {
+  baselineskip .tl_set:N = \jlreq at option@baselineskip,
+  linegap .code:n = { \def\jlreq at option@baselineskip{1zw + #1} }
+}
 \jlreq at aftercls@addtodeletecs{\jlreq at option@baselineskip}
-\DeclareOptionX{baselineskip}{\def\jlreq at option@baselineskip{#1}}
-\DeclareOptionX{linegap}{\def\jlreq at option@baselineskip{1zw + #1}}
 
 %.. 組み方系
 % 行頭に括弧が来たときの配置:3.1.5
 % 段落頭指定_折り返し行頭指定 で与える.
-\newcommand*{\jlreq at open@bracket at pos}{zenkaku_tentsuki}
-\define at choicekey{jlreq.cls}{open_bracket_pos}{zenkaku_tentsuki,zenkakunibu_nibu,nibu_tentsuki}{\renewcommand*{\jlreq at open@bracket at pos}{#1}}
+\keys_define:nn { jlreq } { open_bracket_pos .choices:nn = {zenkaku_tentsuki,zenkakunibu_nibu,nibu_tentsuki}{\def\jlreq at open@bracket at pos{#1}} }
 % ぶら下げ組みをするか:3.8.2 注1
 \newif\ifjlreq at burasage\jlreq at burasagefalse
-\jlreq at DeclareOption{hanging_punctuation}{\jlreq at burasagetrue}
+\keys_define:nn { jlreq } { hanging_punctuation .code:n = {\jlreq at burasagetrue}, hanging_punctuation .value_forbidden:n = true}
 % jsarticleと同じkanjiskipを使う
 \newif\ifjlreq at narrow@kanjiskip\jlreq at narrow@kanjiskipfalse
-\jlreq at DeclareOption{narrow_kanjiskip}{\jlreq at narrow@kanjiskiptrue}
+\keys_define:nn { jlreq } { narrow_kanjiskip .code:n = {\jlreq at narrow@kanjiskiptrue}, narrow_kanjiskip .value_forbidden:n = true}
 \jlreq at aftercls@addtodeleteif{\ifjlreq at narrow@kanjiskip}
 
 %.. 注
 % 傍注のタイプ
-\newcommand*{\jlreq at option@sidenote at length}{0pt}
+\keys_define:nn { jlreq } { sidenote_length .tl_set:N = \jlreq at option@sidenote at length }
 \jlreq at aftercls@addtodeletecs{\jlreq at option@sidenote at length}
-\DeclareOptionX{sidenote_length}{\renewcommand*{\jlreq at option@sidenote at length}{#1}}
 
 %.. 逆ノンブル
 \newif\ifjlreq at option@use at reverse@pagination
 \jlreq at aftercls@addtodeleteif{\ifjlreq at option@use at reverse@pagination}
 \jlreq at option@use at reverse@paginationfalse
-\jlreq at DeclareOption{use_reverse_pagination}{\jlreq at option@use at reverse@paginationtrue}
+\keys_define:nn { jlreq } { use_reverse_pagination .code:n = {\jlreq at option@use at reverse@paginationtrue}, use_reverse_pagination .value_forbidden:n = true }
 
 %.. もろもろ
 \newif\if at restonecol\@restonecolfalse
@@ -261,45 +250,48 @@
 \newif\if at tate \@tatefalse
 \newif\ifjlreq at option@titlepage \jlreq at option@titlepagefalse % titlepageかnotitlepageかが指定された
 \jlreq at aftercls@addtodeleteif{\ifjlreq at option@titlepage}
-\jlreq at DeclareOption{landscape}{\@landscapetrue}
-\jlreq at DeclareOption{tombo}{\ClassWarningNoLine{jlreq}{The option `tombo' is not supported by jlreq class. Please use the jlreq-trimmarks package}}
-\jlreq at DeclareOption{tombow}{\ClassWarningNoLine{jlreq}{The option `tombow' is not supported by jlreq class. Please use the jlreq-trimmarks package}}
-\jlreq at DeclareOption{mentuke}{\ClassWarningNoLine{jlreq}{The option `mentuke' is not supported by jlreq class. Please use the jlreq-trimmarks package}}
-\jlreq at DeclareOption{tate}{\@tatetrue}
+\keys_define:nn { jlreq } { landscape .code:n = {\@landscapetrue}, landscape .value_forbidden:n = true }
+\keys_define:nn { jlreq } { tombo .code:n = {\ClassWarningNoLine{jlreq}{The~option~`tombo'~is~not~supported~by~jlreq~class.~Please~use~the~jlreq-trimmarks~package}} }
+\keys_define:nn { jlreq } { tombow .code:n = {\ClassWarningNoLine{jlreq}{The~option~`tombow'~is~not~supported~by~jlreq~class.~Please~use~the~jlreq-trimmarks~package}} }
+\keys_define:nn { jlreq } { mentuke .code:n = {\ClassWarningNoLine{jlreq}{The~option~`mentuke'~is~not~supported~by~jlreq~class.~Please~use~the~jlreq-trimmarks~package}} }
+\keys_define:nn { jlreq } { tate .code:n = { \@tatetrue }, tate .value_forbidden:n = true}
 
 \newif\ifjlreq at option@twoside\jlreq at option@twosidefalse % onesideかtwosideが指定された
 \jlreq at aftercls@addtodeleteif{\ifjlreq at option@twoside}
-\jlreq at DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse\jlreq at option@twosidetrue}
-\jlreq at DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue\jlreq at option@twosidetrue}
-\jlreq at DeclareOption{onecolumn}{\@twocolumnfalse}
-\jlreq at DeclareOption{twocolumn}{\@twocolumntrue}
-\jlreq at DeclareOption{titlepage}{\jlreq at option@titlepagetrue\@titlepagetrue}
-\jlreq at DeclareOption{notitlepage}{\jlreq at option@titlepagetrue\@titlepagefalse}
-\jlreq at DeclareOption{draft}{\setlength\overfullrule{5pt}}
-\jlreq at DeclareOption{final}{\setlength\overfullrule{0pt}}
+\keys_define:nn { jlreq } { oneside .code:n = { \@twosidefalse\@mparswitchfalse\jlreq at option@twosidetrue }, oneside .value_forbidden:n = true }
+\keys_define:nn { jlreq } { twoside .code:n = { \@twosidetrue\@mparswitchtrue\jlreq at option@twosidetrue }, twoside .value_forbidden:n = true }
+\keys_define:nn { jlreq } { onecolumn .code:n = { \@twocolumnfalse }, onecolumn .value_forbidden:n = true }
+\keys_define:nn { jlreq } { twocolumn .code:n = { \@twocolumntrue }, twocolumn .value_forbidden:n = true }
+\keys_define:nn { jlreq } { titlepage .code:n = { \jlreq at option@titlepagetrue\@titlepagetrue }, titlepage .value_forbidden:n = true }
+\keys_define:nn { jlreq } { notitlepage .code:n = { \jlreq at option@titlepagetrue\@titlepagefalse }, notitlepage .value_forbidden:n = true }
+\keys_define:nn { jlreq } { draft .code:n = { \setlength\overfullrule{5pt} }, draft .value_forbidden:n = true }
+\keys_define:nn { jlreq } { final .code:n = { \setlength\overfullrule{0pt} }, final .value_forbidden:n = true }
 \newif\if at openright
 \newif\ifjlreq at option@open \jlreq at option@openfalse % openrightかopenanyが指定された
 \jlreq at aftercls@addtodeleteif{\ifjlreq at option@open}
-\jlreq at DeclareOption{openright}{\@openrighttrue\jlreq at option@opentrue}
-\jlreq at DeclareOption{openany}{\@openrightfalse\jlreq at option@opentrue}
-\jlreq at DeclareOption{leqno}{\input{leqno.clo}}
-\jlreq at DeclareOption{fleqn}{\input{fleqn.clo}}
+\keys_define:nn { jlreq } { openright .code:n = { \@openrighttrue\jlreq at option@opentrue }, openright .value_forbidden:n = true}
+\keys_define:nn { jlreq } { openany .code:n = { \@openrightfalse\jlreq at option@opentrue }, openany .value_forbidden:n = true}
+\keys_define:nn { jlreq } { leqno .code:n = { \input{leqno.clo } }, leqno .value_forbidden:n = true}
+\keys_define:nn { jlreq } { fleqn .code:n = { \input{fleqn.clo } }, fleqn .value_forbidden:n = true}
 \newif\ifjlreq at option@enablejfam \jlreq at option@enablejfamtrue
 \jlreq at aftercls@addtodeleteif{\ifjlreq at option@enablejfam}
-\jlreq at DeclareOption{disablejfam}{\jlreq at option@enablejfamfalse}
+\keys_define:nn { jlreq } { disablejfam .code:n = { \jlreq at option@enablejfamfalse }, disablejfam .value_forbidden:n = true}
 
-\newcommand*{\jlreq at note}[1]{}
-\jlreq at DeclareOption{jlreq_notes}{\renewcommand*{\jlreq at note}[1]{\message{^^JJLReq note: ##1^^J}}}
+\def\jlreq at note#1{}
+\keys_define:nn { jlreq } { jlreq_notes .code:n = { \def\jlreq at note##1{\message{^^JJLReq note: ##1^^J}}}, jlreq_notes .value_forbidden:n = true}
 
-\ExecuteOptionsX{article_type=article,paper=a4,open_bracket_pos=zenkaku_tentsuki,onecolumn,final}
-% \@removeelementを一旦置き換えてから\ProcessOptionsXを実行する
-\let\jlreq at temporary@original@@removeelement=\@removeelement
-\let\@removeelement=\jlreq at helper@removeelement
-\ProcessOptionsX\relax
-\let\@removeelement=\jlreq at temporary@original@@removeelement
-\let\jlreq at temporary@original@@removeelement=\@undefined
+%\ExecuteOptionsX{article_type=article,paper=a4,open_bracket_pos=zenkaku_tentsuki,onecolumn,final}
+\keys_set:nn { jlreq } {
+  article_type=article,paper=a4,
+  number_of_lines={},line_length = {},
+  head_space={},foot_space={},gutter={},fore_edge={},
+  jafontsize={},jafontscale={1},baselineskip={17zw/10},
+  sidenote_length=0pt,column_gap={2zw},
+  headfoot_verticalposition = {},headfoot_sidemargin={0pt},
+  open_bracket_pos=zenkaku_tentsuki,
+  onecolumn,final}
+\ProcessKeysOptions { jlreq }
 
-\ExplSyntaxOn
 \legacy_if:nF { jlreq at option@titlepage } {
   \str_if_eq:VnTF \jlreq at article@type { article } { \@titlepagefalse } { \@titlepagetrue }
 }
@@ -316,34 +308,15 @@
 \legacy_if:nF { jlreq at option@twoside } {
   \str_if_eq:VnTF \jlreq at article@type { book } { \@twosidetrue } { \@twosidefalse }
 }
-\ExplSyntaxOff
 
-\def\jlreq at jlreqsetup@keyvallist{}
-\def\jlreq at jlreqsetup@finally{}
-\newcommand{\jlreqsetup}[1]{%
-  \begingroup
-    \edef\jlreq at do{\unexpanded{\jlreq at parsekeyval[jlreqsetup]}{\expandonce{\jlreq at jlreqsetup@keyvallist}}}%
-  \expandafter\endgroup
-  \jlreq at do{#1}%
-  \jlreq at jlreqsetup@finally
+\tl_new:N \g__jlreq_jlreqsetup_finally_tl
+\NewDocumentCommand{\jlreqsetup} { +m } {
+  \keys_set:nn { jlreqsetup } {#1}
+  \tl_use:N \g__jlreq_jlreqsetup_finally_tl
 }
-% \jlreqsetupの項目に加えるマクロ.\jlreq at jlreqsetup@add{key}{action}とするとkeyに対して定義できる.
-% action内ではvalが#1として取得できる.(従ってaction内でマクロを定義する際には##1を使う必要がある.)
-\newcommand{\jlreq at jlreqsetup@add}[1]{%
-  \@ifnextchar[{\jlreq at jlreqsetup@add@{#1}}{\jlreq at jlreqsetup@add@@{#1}}%
-}
-\long\def\jlreq at jlreqsetup@add@#1[#2]#3{%
-  \eappto\jlreq at jlreqsetup@keyvallist{\unexpanded{{#1}[#2]{#3}}}%
-}
-\long\def\jlreq at jlreqsetup@add@@#1#2{%
-  \eappto\jlreq at jlreqsetup@keyvallist{\unexpanded{{#1}{#2}}}%
-}
 % \jlreqsetupの最後に必ず実行される処理を入れる.
-\newcommand\jlreq at jlreqsetup@addtofinally[1]{\eappto\jlreq at jlreqsetup@finally{\unexpanded{#1}}}
-\jlreq at aftercls@addtodeletecs{\jlreq at jlreqsetup@add}
-\jlreq at aftercls@addtodeletecs{\jlreq at jlreqsetup@add@}
-\jlreq at aftercls@addtodeletecs{\jlreq at jlreqsetup@add@@}
-\jlreq at aftercls@addtodeletecs{\jlreq at jlreqsetup@addtofinally}
+\cs_set:Nn \__jlreq_jlreqsetup_addtofinally:n { \tl_gput_right:Nx \g__jlreq_jlreqsetup_finally_tl { \exp_not:n {#1} } }
+\jlreq at aftercls@addtodeletecs{\__jlreq_jlreqsetup_addtofinally:n}
 \@onlypreamble\jlreqsetup
 
 % エンジンの設定
@@ -350,7 +323,7 @@
 \ifx\jlreq at engine\@undefined
   \jlreq at helper@guessengine
   \let\jlreq at engine=\jlreq at result
-  \message{jlreq guessed engine: 
+  \message{jlreq~guessed~engine:~
     \ifx l\jlreq at engine lualatex\fi
     \ifx p\jlreq at engine platex\fi
     \ifx u\jlreq at engine uplatex\fi
@@ -358,7 +331,6 @@
 \fi
 
 %.. JFMとluatexjaのロード
-\ExplSyntaxOn
 \ifx l\jlreq at engine
   \def\ltj at stdyokojfm{jlreq}
   \def\ltj at stdtatejfm{jlreqv}
@@ -377,6 +349,7 @@
   \ltjsetparameter{stretch_priority={kanjiskip=0,xkanjiskip=10}}
   \ltjsetparameter{shrink_priority={kanjiskip=0,xkanjiskip=-30}}
 \else
+  \RequirePackage{everyhook}
   \def\jlreq at jfmname@prefix{}
   \jlreq at aftercls@addtodeletecs{\jlreq at jfmname@prefix}
   \ifjlreq at burasage\edef\jlreq at jfmname@prefix{b\jlreq at jfmname@prefix}\fi
@@ -389,7 +362,6 @@
   \jlreq at aftercls@addtodeletecs{\jlreq at jfmname}
   \jlreq at aftercls@addtodeletecs{\jlreq at jfmnameg}
 \fi
-\ExplSyntaxOff
 
 % (u)pLaTeXの場合ここで初めて\epTeXinputencodingが発行されるので,
 % これ以前には和文は使えない.
@@ -438,7 +410,7 @@
       \ifcat (\noexpand #11\fi
       \ifcat A\noexpand #11\fi
       \ifcat 1\noexpand #11\fi
-    >0
+    >0~
   \fi}%
 }
 
@@ -446,10 +418,10 @@
 % 組方向を判定
 % \jlreq at if(y|t)(dir|box)を定義する.
 \jlreq at if{\ifx l\jlreq at engine\fi}{
-  \def\jlreq at ifydir{\jlreq at if{\ifnum\ltjgetparameter{direction}=4 \fi}}
-  \def\jlreq at iftdir{\jlreq at if{\ifnum\numexpr\ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8\relax=3 \fi}}
-  \def\jlreq at ifybox#1{\jlreq at if{\ifnum\ltjgetparameter{boxdir}{#1}=4 \fi}}
-  \def\jlreq at iftbox#1{\jlreq at if{\ifnum\numexpr\ltjgetparameter{boxdir}{#1}-(\ltjgetparameter{boxdir}{#1}/8)*8\relax=3 \fi}}
+  \def\jlreq at ifydir { \int_compare:nTF { \ltjgetparameter{direction} == 4 } }
+  \def\jlreq at iftdir { \int_compare:nTF { (\ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8) == 3 } }
+  \def\jlreq at ifybox#1{ \int_compare:nTF { \ltjgetparameter{boxdir}{#1} == 4 } }
+  \def\jlreq at iftbox#1{ \int_compare:nTF { (\ltjgetparameter{boxdir}{#1}-(\ltjgetparameter{boxdir}{#1}/8)*8) == 3 } }
 }{
   \def\jlreq at ifydir{\jlreq at if{\ifydir\fi}}
   \def\jlreq at iftdir{\jlreq at if{\iftdir\fi}}
@@ -459,7 +431,6 @@
 
 % 左ページであるか
 % #1 : odd or even or ページ数
-\ExplSyntaxOn
 \def\jlreq at ifleftpage#1{%
   \bool_if:nTF { ( \legacy_if_p:n { @tate }  &&
     \bool_lazy_or_p:nn { \str_if_eq_p:ee {#1} { odd  } }
@@ -469,12 +440,11 @@
       { \bool_lazy_and_p:nn { ! \str_if_eq_p:ee {#1} { odd  } } { ! \int_if_odd_p:n {#1} } }
   ) }
 }
-\ExplSyntaxOff
 
 \ifx l\jlreq at engine
-  \newcommand*{\jlreq at getpostbreakpenalty}[1]{\ltjgetparameter{postbreakpenalty}{#1}}
+  \def\jlreq at getpostbreakpenalty#1{\ltjgetparameter{postbreakpenalty}{#1}}
 \else
-  \newcommand*{\jlreq at getpostbreakpenalty}[1]{\postbreakpenalty#1}
+  \def\jlreq at getpostbreakpenalty#1{\postbreakpenalty#1}
 \fi
 
 % 現在行の残りを得る.
@@ -481,7 +451,7 @@
 \ifx l\jlreq at engine
   % 以下のコードはLuaTeX-jaのバグ?に依存している
   % https://ja.osdn.net/projects/luatex-ja/ticket/36489
-  \newcommand*{\jlreq at calc@current at linewidth@onecolumn}{%
+  \def\jlreq at calc@current at linewidth@onecolumn{%
     \dimexpr
        \jlreq at reference@ref{jlreq at rest@width.pos.X.\the\jlreq at reference@count}{0} sp - \@totalleftmargin -
       \ifodd\jlreq at currentpage
@@ -501,7 +471,7 @@
   }{
     \def\jlreq at tombow@adjust{\iftombow -1truein \fi}
   }
-  \newcommand*{\jlreq at calc@current at linewidth@onecolumn}{%
+  \def\jlreq at calc@current at linewidth@onecolumn{%
     \dimexpr
       \jlreq at ifydir{%
         \jlreq at reference@ref{jlreq at rest@width.pos.X.\the\jlreq at reference@count}{0} sp - \hoffset
@@ -524,7 +494,7 @@
     \relax
   }
 \fi
-\newcommand*{\jlreq at calc@current at linewidth}{%
+\def\jlreq at calc@current at linewidth{%
   \dimexpr\jlreq at calc@current at linewidth@onecolumn
     \if at twocolumn
       \ifdim\jlreq at calc@current at linewidth@onecolumn<\dimexpr\linewidth+\columnsep\relax\else
@@ -569,7 +539,7 @@
 
 % #1と#2の間に入るjmglue((x)kanjiskipも)を\jlreq at resultskipに入れる
 \ifx l\jlreq at engine
-  \newcommand*{\jlreq at calc@jfmglue}[2]{%
+  \def\jlreq at calc@jfmglue#1#2{%
     \begingroup
       \setbox\jlreq at tempboxa=\hbox{\inhibitglue #1\inhibitglue\hbox{}\inhibitglue#2\inhibitglue}%
       \setbox\jlreq at tempboxb=\hbox{\inhibitglue #1#2\inhibitglue}%
@@ -576,19 +546,19 @@
       \edef\jlreq at do{\noexpand\jlreq at resultskip=\the\dimexpr\wd\jlreq at tempboxb - \wd\jlreq at tempboxa\relax\noexpand\relax}%
       \jlreq at do
       \directlua{
-        local width = 0
-        local stretch = 0
-        local shrink = 0
-        local n = tex.box["jlreq at tempboxb"].head
-        while n do
+        local~width = 0~
+        local~stretch = 0~
+        local~shrink = 0~
+        local~n = tex.box["jlreq at tempboxb"].head~
+        while~n~do~
           % すべてのglueの和を計算する.
-          if n.id == node.id("glue") then
-            width = width + n.width
-            stretch = stretch + n.stretch
-            shrink = shrink + n.shrink
-          end
-          n = n.next
-        end
+          if~n.id == node.id("glue")~then~
+            width = width + n.width~
+            stretch = stretch + n.stretch~
+            shrink = shrink + n.shrink~
+          end~
+          n = n.next~
+        end~
         tex.setglue("jlreq at tempskipa",width,stretch,shrink)
       }%
       % TeXで計測した物と一致していなければTeXでの方を信じる
@@ -599,7 +569,7 @@
     \jlreq at do
   }
 \else
-  \newcommand*{\jlreq at calc@jfmglue}[2]{%
+  \def\jlreq at calc@jfmglue#1#2{%
     \begingroup
       \setbox\jlreq at tempboxa=\hbox{\inhibitglue #1\inhibitglue\hbox{}\inhibitglue#2\inhibitglue}%
       \setbox\jlreq at tempboxb=\hbox{\inhibitglue #1#2\inhibitglue}%
@@ -612,7 +582,7 @@
 \newcount\jlreq at lastnodechar
 % \jlreq at fixjfm<次の文字>の形で使う.
 % jlreq at lastnodecharに入っている値と次のトークン(\futureletで得る)の間に入るJFMグルー等を挿入する
-\newcommand*{\jlreq at fixjfm}{%
+\def\jlreq at fixjfm{%
   \begingroup
     \ifnum\jlreq at lastnodechar>-1
       \def\jlreq at do{\futurelet\jlreq at nextchar\jlreq at insertjfm}%
@@ -639,8 +609,8 @@
 }
 
 \ifx l\jlreq at engine
-  \newcommand*{\jlreq at divide}[2]{%
-    \jlreq at resultdimen=\directlua{tex.print(tostring(\strip at pt\dimexpr #1\relax/\strip at pt\dimexpr #2\relax) .. "pt ")}%
+  \def\jlreq at divide#1#2{%
+    \jlreq at resultdimen=\directlua{tex.print(tostring(\strip at pt\dimexpr #1\relax/\strip at pt\dimexpr #2\relax) .. "pt~")}%
   }
 \else
   \let\jlreq at divide=\jlreq at helper@divide
@@ -651,11 +621,11 @@
 \def\@ptsize{0}
 %.. (x)kanjiskip
 \ifjlreq at narrow@kanjiskip
-  \providecommand*{\jlreqkanjiskip}{0pt plus .1\jlreq at zw minus .01\jlreq at zw}
+  \providecommand*{\jlreqkanjiskip}{0pt~plus~.1\jlreq at zw ~minus~.01\jlreq at zw}
 \else
-  \providecommand*{\jlreqkanjiskip}{0pt plus 0.25\jlreq at zw minus 0pt}
+  \providecommand*{\jlreqkanjiskip}{0pt~plus~0.25\jlreq at zw ~minus~0pt}
 \fi
-\providecommand*{\jlreqxkanjiskip}{0.25\jlreq at zw plus 0.25\jlreq at zw minus 0.125\jlreq at zw}
+\providecommand*{\jlreqxkanjiskip}{0.25\jlreq at zw ~plus~0.25\jlreq at zw ~minus~0.125\jlreq at zw}
 \jlreq at if{\ifx l\jlreq at engine\fi}{
   \AtBeginDocument{%
     \ltjsetparameter{kanjiskip=\jlreqkanjiskip}%
@@ -675,10 +645,10 @@
   % Q,zw,zhが正しく扱われるようになる.\dimexprつきに展開される.
   \def\jlreq at expand@optionfontsize#1{%
     \dimexpr\directlua{
-      local act = string.char(92)
-      local s = [[#1]]
-      s = s:gsub("[QH]",act .. "dimexpr 0.25mm" .. act .. "relax")
-      tex.print(s)
+      local~act = string.char(92)~
+      local~s = [[#1]]~
+      s = s:gsub("[QH]",act .. "dimexpr 0.25mm" .. act .. "relax")~
+      tex.print(s)~
     }\relax
   }%
 \else
@@ -705,13 +675,11 @@
 
 
 % 行頭の括弧は \jlreq at open@bracket at before@space \inhibitglue 「みたいにする.
-\ExplSyntaxOn
 \str_if_eq:VnTF \jlreq at open@bracket at pos { zenkakunibu_nibu } {
   \def\jlreq at open@bracket at before@space{\hskip\glueexpr-.5\jlreq at zw\relax}
 }{
   \def\jlreq at open@bracket at before@space{}
 }
-\ExplSyntaxOff
 
 \ifx p\jlreq at engine
   \def\jlreq at yokokanjiencoding{JY1}
@@ -730,8 +698,7 @@
 \jlreq at aftercls@addtodeletecs{\jlreq at jafontscale}
 \ifx l\jlreq at engine
   \jlreq at saveoriginalcs{DeclareFontShape}
-  \ExplSyntaxOn
-  \def\DeclareFontShape#1#2#3#4#5#6{
+    \def\DeclareFontShape#1#2#3#4#5#6{
     \group_begin:
       \bool_if:nT { \str_if_eq_p:nn {#1} {JY3} || \str_if_eq_p:nn {#1} {JT3} } {
         \tl_set:Nx \l_jlreq_tmpa_tl {#5}
@@ -754,11 +721,10 @@
     \exp_after:wN \group_end: \l_jlreq_do:
     \jlreq at useoriginalcs{DeclareFontShape} {#1} {#2} {#3} {#4} {#5} {#6}
   }
-  \ExplSyntaxOff
-  \DeclareFontShape{JY3}{mc}{m}{n}{<->s*[\jlreq at jafontscale]\ltj at stdmcfont:jfm=jlreq;script=latn;-kern}{}
-  \DeclareFontShape{JY3}{gt}{m}{n}{<->s*[\jlreq at jafontscale]\ltj at stdgtfont:jfm=jlreq;script=latn;-kern}{}
-  \DeclareFontShape{JT3}{mc}{m}{n}{<->s*[\jlreq at jafontscale]\ltj at stdmcfont:jfm=jlreqv;script=latn;-kern}{}
-  \DeclareFontShape{JT3}{gt}{m}{n}{<->s*[\jlreq at jafontscale]\ltj at stdgtfont:jfm=jlreqv;script=latn;-kern}{}
+  \DeclareFontShape{JY3}{mc}{m}{n}{<->s*[\jlreq at jafontscale]\ltj at stdmcfont :jfm=jlreq;script=latn;-kern}{}
+  \DeclareFontShape{JY3}{gt}{m}{n}{<->s*[\jlreq at jafontscale]\ltj at stdgtfont :jfm=jlreq;script=latn;-kern}{}
+  \DeclareFontShape{JT3}{mc}{m}{n}{<->s*[\jlreq at jafontscale]\ltj at stdmcfont :jfm=jlreqv;script=latn;-kern}{}
+  \DeclareFontShape{JT3}{gt}{m}{n}{<->s*[\jlreq at jafontscale]\ltj at stdgtfont :jfm=jlreqv;script=latn;-kern}{}
 \else
   \DeclareFontShape{\jlreq at yokokanjiencoding}{mc}{m}{n}{<->s*[\jlreq at jafontscale]\jlreq at jfmname}{}
   \DeclareFontShape{\jlreq at yokokanjiencoding}{gt}{m}{n}{<->s*[\jlreq at jafontscale]\jlreq at jfmnameg}{}
@@ -770,7 +736,6 @@
   \DeclareFontShape{\jlreq at tatekanjiencoding}{mc}{m}{n-jidori}{<->s*[\jlreq at jafontscale]\jlreq at tempa jlreq-v-jidori}{}
   \DeclareFontShape{\jlreq at tatekanjiencoding}{gt}{m}{n-jidori}{<->s*[\jlreq at jafontscale]\jlreq at tempa jlreqg-v-jidori}{}
 \fi
-\ExplSyntaxOn
 \clist_set:NV  \l_jlreq_tmpa_clist \jlreq at yokokanjiencoding
 \clist_push:NV \l_jlreq_tmpa_clist \jlreq at tatekanjiencoding
 \clist_map_inline:Nn \l_jlreq_tmpa_clist {% #1 = encoding
@@ -790,7 +755,6 @@
     }
   }
 }
-\ExplSyntaxOff
 
 %.. 文字クラスのリスト
 % 開き括弧(文字クラス1)
@@ -823,20 +787,18 @@
 \edef\jlreq at charlist@katakana{アイウエオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモヤユヨラリルレロワヰヱヲンヴ\ifx p\jlreq at engine\else ヷヸヹヺ\fi}% カ゚キ゚ク゚ケ゚コ゚セ゚ツ゚ト゚
 
 %.. 行頭括弧調整
-\AtBeginDocument{\PushPostHook{par}{\jlreq at hook@everypar}}
-\def\jlreq at hook@everypar{}
 \jlreq at saveoriginalcs{item}
-\ExplSyntaxOn
 \ifx l\jlreq at engine
   % \itemの直後は折り返し行頭と同じにする.
+  \cs_set:Nn \__jlreq_hook_everypar: {}
   \def\item{%
-    \def\jlreq at hook@everypar{%
-      \def\jlreq at hook@everypar{}%
-      \inhibitglue
-    }%
     \jlreq at useoriginalcs{item}%
+    \cs_set:Nn \__jlreq_hook_everypar: { \cs_set:Nn \__jlreq_hook_everypar: {} \inhibitglue }
+    \expandafter\everypar\expandafter{\the\everypar\__jlreq_hook_everypar:}
   }
 \else
+  \AtBeginDocument{\PushPostHook{par}{\jlreq at hook@everypar}}
+  \def\jlreq at hook@everypar{}
   % 非LuaTeXの場合はJFMの入れ替えと\everyparでの処理で対処.
   % 行頭括弧に対して\inhibitglueを入れたりする命令を作る
   % \jlreq at charlist@openingbracketsの各括弧に対して,\ifx\jlreq at nextchar 「1\fiみたいなのが並んだのを作る
@@ -845,9 +807,9 @@
   \expandafter\jlreq at do\jlreq at charlist@openingbrackets\jlreq at endmark
   % JFM glueの伸び縮みで行頭括弧が揃わないのを防ぐために常に\inhibitglueを入れる.
   \str_if_eq:VnTF \jlreq at open@bracket at pos { nibu_tentsuki } {
-    \edef\jlreq at openbracket@hook at ii{\noexpand\ifnum0\expandonce{\jlreq at tempa}>0 \unexpanded{\hskip -.5\jlreq at zw\inhibitglue}\noexpand\fi}
+    \edef\jlreq at openbracket@hook at ii{\noexpand\ifnum0\expandonce{\jlreq at tempa}>0~\unexpanded{\hskip -.5\jlreq at zw\inhibitglue}\noexpand\fi}
   }{% zenkakunibu_nibu,zenkaku_tentsuki
-    \edef\jlreq at openbracket@hook at ii{\noexpand\ifnum0\expandonce{\jlreq at tempa}>0 \unexpanded{\inhibitglue}\noexpand\fi}
+    \edef\jlreq at openbracket@hook at ii{\noexpand\ifnum0\expandonce{\jlreq at tempa}>0~\unexpanded{\inhibitglue}\noexpand\fi}
   }
   % source special対策
   \def\jlreq at openbracket@hook at i{\ifx\jlreq at nextchar\special\expandafter\jlreq at openbracket@hook at iii\else\expandafter\jlreq at openbracket@hook at ii\fi}
@@ -862,13 +824,12 @@
     \jlreq at useoriginalcs{item}%
   }
 \fi
-\ExplSyntaxOff
 
 %.. 禁則処理
 \ifx l\jlreq at engine
-  \newcommand*{\jlreq at setpostbreakpenalty@}[2]{\ltjsetparameter{postbreakpenalty={`#1,#2}}}
-  \newcommand*{\jlreq at setprebreakpenalty@}[2]{\ltjsetparameter{prebreakpenalty={`#1,#2}}}
-  \newcommand*{\jlreq at addjaxspmode@}[2]{%
+  \def\jlreq at setpostbreakpenalty@#1#2{\ltjsetparameter{postbreakpenalty={`#1,#2}}}
+  \def\jlreq at setprebreakpenalty@#1#2{\ltjsetparameter{prebreakpenalty={`#1,#2}}}
+  \def\jlreq at addjaxspmode@#1#2{%
     \jlreq at tempcnta=\ltjgetparameter{jaxspmode}{`#1}%
     \jlreq at switch{#2}{
       {pre}{%
@@ -887,7 +848,7 @@
       }
     }%
   }
-  \newcommand*{\jlreq at deljaxspmode@}[2]{%
+  \def\jlreq at deljaxspmode@#1#2{%
     \jlreq at tempcnta=\ltjgetparameter{jaxspmode}{`#1}%
     \jlreq at switch{#2}{
       {pre}{%
@@ -907,9 +868,9 @@
     }%
   }
 \else
-  \newcommand*{\jlreq at setpostbreakpenalty@}[2]{\postbreakpenalty`#1=#2}
-  \newcommand*{\jlreq at setprebreakpenalty@}[2]{\prebreakpenalty`#1=#2}
-  \newcommand*{\jlreq at addjaxspmode@}[2]{%
+  \def\jlreq at setpostbreakpenalty@#1#2{\postbreakpenalty`#1=#2}
+  \def\jlreq at setprebreakpenalty@#1#2{\prebreakpenalty`#1=#2}
+  \def\jlreq at addjaxspmode@#1#2{%
     \jlreq at tempcnta=\inhibitxspcode`#1
     \jlreq at switch{#2}{
       {pre}{%
@@ -928,7 +889,7 @@
       }
     }%
   }
-  \newcommand*{\jlreq at deljaxspmode@}[2]{%
+  \def\jlreq at deljaxspmode@#1#2{%
     \jlreq at tempcnta=\inhibitxspcode`#1
     \jlreq at switch{#2}{
       {pre}{%
@@ -949,84 +910,93 @@
   }
 \fi
 % #1{...}{#3}を...が#2のリストに対して適用.
-\newcommand*\jlreq at iterateapply[3]{%
-  \edef\jlreq at tempa{#2}%
-  \expandafter\@tfor\expandafter\@tempa\expandafter:\expandafter=\jlreq at tempa\do{%
-    \expandafter#1\expandafter{\@tempa}{#3}%
-  }%
+\cs_set:Nn \__jlreq_iterateapply:nnn {
+  \tl_map_inline:nn {#2} {
+    #1{##1}{#3}
+  }
 }
-\def\jlreq at setpostbreakpenalty{\jlreq at iterateapply{\jlreq at setpostbreakpenalty@}}
-\def\jlreq at setprebreakpenalty{\jlreq at iterateapply{\jlreq at setprebreakpenalty@}}
-\def\jlreq at addjaxspmode{\jlreq at iterateapply{\jlreq at addjaxspmode@}}
-\def\jlreq at deljaxspmode{\jlreq at iterateapply{\jlreq at deljaxspmode@}}
+\cs_set:Nn \__jlreq_setpostbreakpenalty:nn { \__jlreq_iterateapply:nnn {\jlreq at setpostbreakpenalty@} {#1} {#2}}
+\cs_generate_variant:Nn \__jlreq_setpostbreakpenalty:nn { Vn }
+\cs_set:Nn \__jlreq_setprebreakpenalty:nn { \__jlreq_iterateapply:nnn {\jlreq at setprebreakpenalty@} {#1} {#2} }
+\cs_generate_variant:Nn \__jlreq_setprebreakpenalty:nn { Vn }
+\cs_set:Nn \__jlreq_addjaxspmode:nn {\__jlreq_iterateapply:nnn {\jlreq at addjaxspmode@} {#1} {#2} }
+\cs_generate_variant:Nn \__jlreq_addjaxspmode:nn { Vn }
+\cs_set:Nn \__jlreq_deljaxspmode:nn { \__jlreq_iterateapply:nnn{\jlreq at deljaxspmode@} {#1} {#2} }
+\cs_generate_variant:Nn \__jlreq_deljaxspmode:nn { Vn }
 
-\jlreq at aftercls@addtodeletecs{\jlreq at iterateapply}
-\jlreq at aftercls@addtodeletecs{\jlreq at setpostbreakpenalty}
+\jlreq at aftercls@addtodeletecs{\__jlreq_iterateapply:nnn}
+\jlreq at aftercls@addtodeletecs{\__jlreq_setpostbreakpenalty:nn}
+\jlreq at aftercls@addtodeletecs{\__jlreq_setpostbreakpenalty:Vn}
 \jlreq at aftercls@addtodeletecs{\jlreq at setpostbreakpenalty@}
-\jlreq at aftercls@addtodeletecs{\jlreq at setprebreakpenalty}
+\jlreq at aftercls@addtodeletecs{\__jlreq_setprebreakpenalty:nn}
+\jlreq at aftercls@addtodeletecs{\__jlreq_setprebreakpenalty:Vn}
 \jlreq at aftercls@addtodeletecs{\jlreq at setprebreakpenalty@}
-\jlreq at aftercls@addtodeletecs{\jlreq at addjaxspmode}
+\jlreq at aftercls@addtodeletecs{\__jlreq_addjaxspmode:nn}
+\jlreq at aftercls@addtodeletecs{\__jlreq_addjaxspmode:Vn}
 \jlreq at aftercls@addtodeletecs{\jlreq at addjaxspmode@}
-\jlreq at aftercls@addtodeletecs{\jlreq at deljaxspmode}
+\jlreq at aftercls@addtodeletecs{\__jlreq_deljaxspmode:nn}
+\jlreq at aftercls@addtodeletecs{\__jlreq_deljaxspmode:Vn}
 \jlreq at aftercls@addtodeletecs{\jlreq at deljaxspmode@}
 
 % 行末禁則
-\jlreq at setpostbreakpenalty{\jlreq at charlist@openingbrackets}{10000}
-\jlreq at setpostbreakpenalty{\jlreq at charlist@prefixedabbreviations}{10000}
+\__jlreq_setpostbreakpenalty:Vn \jlreq at charlist@openingbrackets {10000}
+\__jlreq_setpostbreakpenalty:Vn \jlreq at charlist@prefixedabbreviations {10000}
 
 % 行頭禁則
-\jlreq at setprebreakpenalty{\jlreq at charlist@closingbrackets}{10000}
-\jlreq at setprebreakpenalty{\jlreq at charlist@hyphens}{10000}
-\jlreq at setprebreakpenalty{\jlreq at charlist@dividingpunctuationmarks}{10000}
-\jlreq at setprebreakpenalty{\jlreq at charlist@middlenodes}{10000}
-\jlreq at setprebreakpenalty{\jlreq at charlist@fullstops}{10000}
-\jlreq at setprebreakpenalty{\jlreq at charlist@commas}{10000}
-\jlreq at setprebreakpenalty{\jlreq at charlist@iterationmarks}{10000}
-\jlreq at setprebreakpenalty{\jlreq at charlist@prolongedsoundmark}{10000}
-\jlreq at setprebreakpenalty{\jlreq at charlist@smallkana}{10000}
+\__jlreq_setprebreakpenalty:Vn \jlreq at charlist@closingbrackets {10000}
+\__jlreq_setprebreakpenalty:Vn \jlreq at charlist@hyphens {10000}
+\__jlreq_setprebreakpenalty:Vn \jlreq at charlist@dividingpunctuationmarks {10000}
+\__jlreq_setprebreakpenalty:Vn \jlreq at charlist@middlenodes {10000}
+\__jlreq_setprebreakpenalty:Vn \jlreq at charlist@fullstops {10000}
+\__jlreq_setprebreakpenalty:Vn \jlreq at charlist@commas {10000}
+\__jlreq_setprebreakpenalty:Vn \jlreq at charlist@iterationmarks {10000}
+\__jlreq_setprebreakpenalty:Vn \jlreq at charlist@prolongedsoundmark {10000}
+\__jlreq_setprebreakpenalty:Vn \jlreq at charlist@smallkana {10000}
 
 % xkanjiskip
-\jlreq at addjaxspmode{\jlreq at charlist@iterationmarks}{pre}
-\jlreq at addjaxspmode{\jlreq at charlist@iterationmarks}{post}
-\jlreq at addjaxspmode{\jlreq at charlist@prolongedsoundmark}{pre}
-\jlreq at addjaxspmode{\jlreq at charlist@prolongedsoundmark}{post}
-\jlreq at addjaxspmode{\jlreq at charlist@smallkana}{pre}
-\jlreq at addjaxspmode{\jlreq at charlist@smallkana}{post}
-\jlreq at addjaxspmode{\jlreq at charlist@hiragana}{pre}
-\jlreq at addjaxspmode{\jlreq at charlist@hiragana}{post}
-\jlreq at addjaxspmode{\jlreq at charlist@katakana}{pre}
-\jlreq at addjaxspmode{\jlreq at charlist@katakana}{post}
-\jlreq at addjaxspmode{\jlreq at charlist@dividingpunctuationmarks}{post}
+\__jlreq_addjaxspmode:Vn \jlreq at charlist@iterationmarks {pre}
+\__jlreq_addjaxspmode:Vn \jlreq at charlist@iterationmarks {post}
+\__jlreq_addjaxspmode:Vn \jlreq at charlist@prolongedsoundmark {pre}
+\__jlreq_addjaxspmode:Vn \jlreq at charlist@prolongedsoundmark {post}
+\__jlreq_addjaxspmode:Vn \jlreq at charlist@smallkana {pre}
+\__jlreq_addjaxspmode:Vn \jlreq at charlist@smallkana {post}
+\__jlreq_addjaxspmode:Vn \jlreq at charlist@hiragana {pre}
+\__jlreq_addjaxspmode:Vn \jlreq at charlist@hiragana {post}
+\__jlreq_addjaxspmode:Vn \jlreq at charlist@katakana {pre}
+\__jlreq_addjaxspmode:Vn \jlreq at charlist@katakana {post}
+\__jlreq_addjaxspmode:Vn \jlreq at charlist@dividingpunctuationmarks {post}
 
 % 分割禁止(分離禁止文字は特定の並びで分割禁止だが,とりあえず一括で禁止しておく.)
-\jlreq at setprebreakpenalty{\jlreq at charlist@inseparablecharacters}{10000}
+\__jlreq_setprebreakpenalty:Vn \jlreq at charlist@inseparablecharacters {10000}
 % ¥100とか70%とか……
 
 %.. 文字範囲
 \ifx u\jlreq at engine
   % \kcatcodeの設定
-  \def\jlreq at setkcatcode#1#2{\@for\@tempa:=#1\do{\kcatcode"\@tempa=#2\relax}}
-  \jlreq at aftercls@addtodeletecs{\jlreq at setkcatcode}
+  \cs_set:Nn \__jlreq_setkcatcode:nn {
+    \clist_map_inline:nn {#1} { \kcatcode"##1=#2\relax }
+  }
+  \jlreq at aftercls@addtodeletecs{\__jlreq_setkcatcode:nn}
   % LuaTeX-jaのデフォルトのままに近い設定をする
   % 範囲1&8
-  \jlreq at setkcatcode{80}{15} % Latin-1 Supplement,どうしよう……
-  \jlreq at setkcatcode{100,180,250,2B0,300,1E00}{15}
+  \__jlreq_setkcatcode:nn {80} {15} % Latin-1 Supplement,どうしよう……
+  \__jlreq_setkcatcode:nn {100,180,250,2B0,300,1E00} {15}
   % 範囲2
-  \jlreq at setkcatcode{370,400,1F00}{18}
+  \__jlreq_setkcatcode:nn {370,400,1F00} {18}
   % 範囲3
-  \jlreq at setkcatcode{2000,2070,20A0,20D0,2100,2150,2190,2200,2300,2400,2500,2580,25A0,2600,2700,2900,2980,2B00}{18}
+  \__jlreq_setkcatcode:nn {2000,2070,20A0,20D0,2100,2150,2190,2200,2300,2400,2500,2580,25A0,2600,2700,2900,2980,2B00} {18}
   % 範囲4
-  \jlreq at setkcatcode{500,530,590,600,700,750,780,7C0,800,840,8A0,900,980,A00,A80,B00,B80,C00,C80,D00,D80,E00,E80,F00,1000,10A0,1200,1380,13A0,1400,1680,16A0,1700,1720,1740,1760,1780,1800,18B0,1900,1950,1980,19E0,1A00,1A20,1AB0,1B00,1B80,1BC0,1C00,1C50,1C80,1CC0,1CD0,1D00,1D80,1DC0,2400,2440,27C0,27F0,2800,2A00,2C00,4DC0,A4D0,A500,A640,A6A0,A700,A720,A800,A840,A880,A8E0,A900,A930,A960,A980,A9E0,AA00,AA60,AA80,AAE0,AB00,AB30,AB70,ABC0,FB00,FB50,FE00,FE20,FE70,10000,10080,10100,10140,10190,101D0,10280,102A0,102E0,10300,10330,10350,10380,103A0,10400,10450,10480,104B0,10500,10530,10600,10800,10840,10860,10880,108E0,10900,10920,10980,109A0,10A00,10A60,10A80,10AC0,10B00,10B40,10B60,10B80,10C00,10C80,10E60,11000,11080,110D0,11100,11150,11180,111E0,11200,11280,112B0,11300,11400,11480,11580,11600,11660,11680,11700,118A0,11AC0,11C00,11C70,12000,12400,12480,13000,14400,16800,16A40,16AD0,16B00,16F00,16FE0,17000,18800,1B000,1BC00,1BCA0,1D000,1D100,1D200,1D300,1D360,1D400,1D800,1E000,1E800,1E900,1EE00,1F000,1F030,1F0A0,1F100,1F200,1F300,1F600,1F650,1F680,1F700,1F780,1F800,1F900,E000}{15}
+  \__jlreq_setkcatcode:nn {500,530,590,600,700,750,780,7C0,800,840,8A0,900,980,A00,A80,B00,B80,C00,C80,D00,D80,E00,E80,F00,1000,10A0,1200,1380,13A0,1400,1680,16A0,1700,1720,1740,1760,1780,1800,18B0,1900,1950,1980,19E0,1A00,1A20,1AB0,1B00,1B80,1BC0,1C00,1C50,1C80,1CC0,1CD0,1D00,1D80,1DC0,2400,2440,27C0,27F0,2800,2A00,2C00,4DC0,A4D0,A500,A640,A6A0,A700,A720,A800,A840,A880,A8E0,A900,A930,A960,A980,A9E0,AA00,AA60,AA80,AAE0,AB00,AB30,AB70,ABC0,FB00,FB50,FE00,FE20,FE70,10000,10080,10100,10140,10190,101D0,10280,102A0,102E0,10300,10330,10350,10380,103A0,10400,10450,10480,104B0,10500,10530,10600,10800,10840,10860,10880,108E0,10900,10920,10980,109A0,10A00,10A60,10A80,10AC0,10B00,10B40,10B60,10B80,10C00,10C80,10E60,11000,11080,110D0,11100,11150,11180,111E0,11200,11280,112B0,11300,11400,11480,11580,11600,11660,11680,11700,118A0,11AC0,11C00,11C70,12000,12400,12480,13000,14400,16800,16A40,16AD0,16B00,16F00,16FE0,17000,18800,1B000,1BC00,1BCA0,1D000,1D100,1D200,1D300,1D360,1D400,1D800,1E000,1E800,1E900,1EE00,1F000,1F030,1F0A0,1F100,1F200,1F300,1F600,1F650,1F680,1F700,1F780,1F800,1F900,E000} {15}
   % 範囲5(Variation Selectors SupplementはLuaTeX-jaではE01F0--E01EFまで範囲5,他は範囲6)
-  \jlreq at setkcatcode{D800,DB80,DC00,E0000,F0000,100000}{15}
+  \__jlreq_setkcatcode:nn {D800,DB80,DC00,E0000,F0000,100000} {15}
   % 範囲6
-  \jlreq at setkcatcode{3040,30A0,31F0}{17} % Hiragana,Katakana,Katakana Phonetic Extensions
-  \jlreq at setkcatcode{2460,3000,3200,3300,FE10,FE30,FE50,E0100}{18} % Enclosed Alphanumerics,CJK Symbols and Punctuation,Enclosed CJK Letters and Months,CJK Compatibility,Vertical Forms,CJK Compatibility Forms,Small Form Variants,Variation Selectors Supplement
-  \jlreq at setkcatcode{2E80,3190,3400,4E00,F900,20000}{16}
+  \__jlreq_setkcatcode:nn {3040,30A0,31F0} {17} % Hiragana,Katakana,Katakana Phonetic Extensions
+  \__jlreq_setkcatcode:nn {2460,3000,3200,3300,FE10,FE30,FE50,E0100} {18} % Enclosed Alphanumerics,CJK Symbols and Punctuation,Enclosed CJK Letters and Months,CJK Compatibility,Vertical Forms,CJK Compatibility Forms,Small Form Variants,Variation Selectors Supplement
+  \__jlreq_setkcatcode:nn {2E80,3190,3400,4E00,F900,20000} {16}
   % 範囲7
-  \jlreq at setkcatcode{A000,A490}{18} % Yi Syllables,Yi Radicals
-  \jlreq at setkcatcode{1100,3130,AC00,D7B0}{19} % Hangul Jamo,Hangul Compatibility Jamo,Hangul Syllables,Hangul Jamo Extended-B
-  \jlreq at setkcatcode{2F00,2FF0,3100,31A0,31C0,A830}{16}
+  \__jlreq_setkcatcode:nn {A000,A490} {18} % Yi Syllables,Yi Radicals
+  \__jlreq_setkcatcode:nn {1100,3130,AC00,D7B0} {19} % Hangul Jamo,Hangul Compatibility Jamo,Hangul Syllables,Hangul Jamo Extended-B
+  \__jlreq_setkcatcode:nn {2F00,2FF0,3100,31A0,31C0,A830} {16}
 \fi
 
 %.. フォント
@@ -1042,7 +1012,7 @@
 \DeclareOldFontCommand{\jlreq at oldfontcommand@it}{\normalfont\itshape}{\mathit}
 \DeclareOldFontCommand{\jlreq at oldfontcommand@sl}{\normalfont\slshape}{\@nomath\sl}
 \DeclareOldFontCommand{\jlreq at oldfontcommand@sc}{\normalfont\scshape}{\@nomath\sc}
-\newcommand*{\jlreq at oldfontcommand@enable}{%
+\def\jlreq at oldfontcommand@enable{%
   \let\mc=\jlreq at oldfontcommand@mc
   \let\gt=\jlreq at oldfontcommand@gt
   \let\rm=\jlreq at oldfontcommand@rm
@@ -1053,7 +1023,7 @@
   \let\sl=\jlreq at oldfontcommand@sl
   \let\sc=\jlreq at oldfontcommand@sc
 }
-\newcommand*{\jlreq at oldfontcommand@disable}{%
+\def\jlreq at oldfontcommand@disable{%
   \let\mc=\@undefined
   \let\gt=\@undefined
   \let\rm=\@undefined
@@ -1096,9 +1066,9 @@
 }
 \expandafter\def\expandafter\jlreq at zenkakuspace@ignorespaces@\space{\ }
 \def\jlreq at tempa{}
-\def\jlreq at do#1{\jlreq at ifendmark{#1}{}{\appto\jlreq at tempa{\ifnum\lastnodechar=`#1 1\fi}\jlreq at do}}
+\def\jlreq at do#1{\jlreq at ifendmark{#1}{}{\appto\jlreq at tempa{\ifnum\lastnodechar=`#1~1\fi}\jlreq at do}}
 \expandafter\jlreq at do\jlreq at charlist@dividingpunctuationmarks\jlreq at endmark
-\edef\@tempa{\noexpand\ifnum0\expandonce{\jlreq at tempa}>0 }
+\edef\@tempa{\noexpand\ifnum0\expandonce{\jlreq at tempa}>0~}
 \expandafter\DeclareRobustCommand\expandafter*\expandafter\jlreq at zenkakuspace@main\expandafter{\@tempa
     \hskip 1\jlreq at zw\hbox{}%
     \jlreq at lastnodechar=` 
@@ -1114,9 +1084,9 @@
 \fi
 
 % \jaspace
-\DeclareRobustCommand*{\jaspace}[1]{%
+\NewDocumentCommand{\jaspace}{ m } {
   \ifcsname jlreq at jaspace@#1\endcsname\csname jlreq at jaspace@#1\endcsname
-  \else\ClassError{jlreq}{unknown jaspace: #1}{\@ehc}\fi
+  \else\ClassError{jlreq}{unknown~jaspace:~#1}{\@ehc}\fi
 }
 \def\jlreq at jaspace@zenkaku{\hskip\glueexpr 1\jlreq at zw\relax}
 \def\jlreq at jaspace@nibu{\hskip\glueexpr .5\jlreq at zw\relax}
@@ -1128,7 +1098,7 @@
 \def\jlreq at do#1{\jlreq at ifendmark{#1}{}{\appto\jlreq at tempa{\ifx\jlreq at nextchar #11\fi}\jlreq at do}}
 \expandafter\jlreq at do\jlreq at charlist@closingbrackets\jlreq at endmark
 \edef\jlreq at dividingpunctuationmarkscommand{%
-  \noexpand\ifnum 0\expandonce{\jlreq at tempa}>0 \unexpanded{\expandafter\ignorespaces\else\expandafter\ \fi}%
+  \noexpand\ifnum 0\expandonce{\jlreq at tempa}>0~\unexpanded{\expandafter\ignorespaces\else\expandafter\ \fi}%
 }
 \def\jlreq at do#1{%
   \jlreq at ifendmark{#1}{}{
@@ -1151,10 +1121,10 @@
 \ifx l\jlreq at engine
   \setlength{\jlreq at baselineskip}{%
     \dimexpr\directlua{
-      local act = string.char(92)
-      local s = [[\jlreq at option@baselineskip]]
-      s = s:gsub("[QH]",act .. "dimexpr 0.25mm" .. act .. "relax"):gsub("zh",act .. "zh"):gsub("zw",act .. "zw")
-      tex.print(s)
+      local~act = string.char(92)~
+      local~s = [[\jlreq at option@baselineskip]]~
+      s = s:gsub("[QH]",act .. "dimexpr 0.25mm" .. act .. "relax"):gsub("zh",act .. "zh"):gsub("zw",act .. "zw")~
+      tex.print(s)~
     }\relax
   }%
 \else
@@ -1161,13 +1131,11 @@
   \setlength{\jlreq at baselineskip}{\dimexpr\jlreq at option@baselineskip\relax}
 \fi
 \ifdim\jlreq at fontsize>\jlreq at baselineskip
-  \ClassError{jlreq}{The baselineskip is less than fontsize}{\@ehc}%
+  \ClassError{jlreq}{The~baselineskip~is~less~than~fontsize}{\@ehc}%
 \fi
-\ExplSyntaxOn
 \bool_if:nT { \dim_compare_p:n { \jlreq at baselineskip < 1.5\zw } || \dim_compare_p:n { \jlreq at baselineskip > 2\zw } } {
   \jlreq at note { 行間は二分以上全角以下が望ましい (2.4.2.d~注3).}
 }
-\ExplSyntaxOff
 
 \emergencystretch 3\jlreq at gol
 \setlength{\parindent}{1\zw}
@@ -1174,7 +1142,7 @@
 \def\jlreq at setfontsizehook{}
 \jlreq at saveoriginalcs{set at fontsize}
 \apptocmd{\set at fontsize}{\expandafter\def\expandafter\size at update\expandafter{\size at update\jlreq at setfontsizehook}}{}{}
-\appto\jlreq at setfontsizehook{\ifdim\parindent>0pt \setlength{\parindent}{1\jlreq at zw}\fi}
+\appto\jlreq at setfontsizehook{ \dim_compare:nT { \parindent>0pt } { \setlength{\parindent}{1\jlreq at zw} } }
 \ifx l\jlreq at engine
   \@tempskipa=\ltjgetparameter{kanjiskip}
   \ifdim\@tempskipa=\maxdimen\else
@@ -1201,7 +1169,7 @@
   \let\jafontsize=\fontsize
 \else
   \def\@tempa#1{
-    \DeclareRobustCommand*{\jafontsize}[2]{%
+    \NewDocumentCommand{\jafontsize}{ m m }{%
       \begingroup
         \jlreq at iffloat{##1}{%
           \edef\jlreq at do{\noexpand\fontsize{\strip at pt\dimexpr#1\dimexpr##1pt\relax\relax}}%
@@ -1270,7 +1238,7 @@
 \setlength{\parskip}{0pt}
 % https://github.com/texjporg/jsclasses/issues/14
 \renewcommand*{\flushbottom}{%
-  \def\@textbottom{\vskip 0pt plus 0.1pt}%
+  \def\@textbottom{\vskip 0pt~plus~0.1pt}%
   \let\@texttop\relax
 }
 \@lowpenalty   51
@@ -1309,10 +1277,10 @@
   \def\jlreq at expand@speciallength#1{%
     % zhやzwを\zhや\zwにする.
     \directlua{
-      local act = string.char(92)
-      local s = [[#1]]
-      s = s:gsub("zw",act .. "zw"):gsub("zh",act .. "zh")
-      tex.print(s)
+      local~act = string.char(92)~
+      local~s = [[#1]]~
+      s = s:gsub("zw",act .. "zw"):gsub("zh",act .. "zh")~
+      tex.print(s)~
     }%
   }
 \else
@@ -1516,7 +1484,7 @@
   \jlreq at setsidemargin@by at gutter{\jlreq at speciallength{\jlreq at option@gutter}}
   \ifx\jlreq at option@fore at edge\@empty\else
     \ifjlreq at determine@kihonhanmen at warning@first
-      \ClassWarningNoLine{jlreq}{fore-edge is ignored}
+      \ClassWarningNoLine{jlreq}{fore-edge~is~ignored}
     \fi
   \fi
 \fi
@@ -1575,12 +1543,12 @@
     \if at tate
       \jlreq at settopmarginbyfoot{\jlreq at speciallength{\jlreq at option@foot at space}}
       \ifx\jlreq at option@line at length\@empty\else
-        \ClassWarningNoLine{jlreq}{head_space is ignored}
+        \ClassWarningNoLine{jlreq}{head_space~is~ignored}
       \fi
     \else
       \jlreq at settopmarginbyhead{\jlreq at speciallength{\jlreq at option@head at space}}
       \ifx\jlreq at option@number at of@lines\@empty\else
-        \ClassWarningNoLine{jlreq}{foot_space is ignored}
+        \ClassWarningNoLine{jlreq}{foot_space~is~ignored}
       \fi
     \fi
   \fi
@@ -1605,7 +1573,7 @@
 
 %. 見出し関係 (4.1)
 % \clear***page
-\newcommand*{\cleartooddpage}[1][]{%
+\NewDocumentCommand{\cleartooddpage}{ O{} }{
   \clearpage
   \ifodd\c at page\else
     \jlreq at ifempty{#1}{}{\thispagestyle{#1}}%
@@ -1614,7 +1582,7 @@
     \if at twocolumn\hbox{}\newpage\fi
   \fi
 }
-\newcommand*{\cleartoevenpage}[1][]{%
+\NewDocumentCommand{\cleartoevenpage}{ O{} }{
   \clearpage
   \ifodd\c at page
     \jlreq at ifempty{#1}{}{\thispagestyle{#1}}%
@@ -1635,7 +1603,7 @@
 % 見出しの直前に実行される
 \NewHook{./heading/before}
 % 見出し名一覧を格納する
-\def\jlreq at heading@allheadings{}
+\seq_new:N \l__jlreq_heading_allheadings_seq
 % 目次を出力する命令\l@<命令名>を作る命令を作る.{1 = 命令名}{2 = レベル}{3 = ラベルのフォーマット}
 % 結果は\jlreq at resultに入る.
 \def\jlreq at heading@make at l@#1#2#3{%
@@ -1687,11 +1655,10 @@
 
 %.. 中/半扉見出し
 % addcontentslineに渡すやつ:番号出すのと出さないの
-\newcommand{\DeclareTobiraHeading}[3]{%
-  \IfHookExistsTF{jlreq/heading/before/#1}{}{\NewHook{./heading/before/#1}}%
-  \def\jlreq at do{\@removeelement{#1}}%
-  \expandafter\jlreq at do\expandafter{\jlreq at heading@allheadings}{\jlreq at heading@allheadings}%
-  \appto{\jlreq at heading@allheadings}{,#1}%
+\NewDocumentCommand{\DeclareTobiraHeading}{ m m +m } {
+  \ProvideHook{jlreq/heading/before/#1}
+  \seq_put_right:Nn \l__jlreq_heading_allheadings_seq {#1}
+  \seq_remove_duplicates:N \l__jlreq_heading_allheadings_seq
   \expandafter\def\csname jlreq at heading@level@#1\endcsname{#2}%
   \expandafter\edef\csname jlreq at heading@setting@#1\endcsname{\unexpanded{#3}}%
   \expandafter\def\csname jlreq at heading@type@#1\endcsname{\RenewTobiraHeading}%
@@ -1702,21 +1669,18 @@
     \let\jlreq at contents@label at format=\@undefined
     \let\jlreq at format=\@undefined
     \edef\jlreq at label@format{\expandonce{\csname the#1\endcsname}}%
-    \def\jlreq at heading@clearpage{\clearpage\hbox{}\clearpage}%
-    \def\jlreq at pagestyle{empty}%
-    \newif\ifjlreq at number \jlreq at numbertrue
-    \jlreq at parsekeyval[DeclareTobiraHeading:#1]{
-      {label_format}{\def\jlreq at label@format{##1}}
-      {format}{\def\jlreq at format####1####2{##1}}
-      {pagestyle}{\def\jlreq at pagestyle{##1}}
-      {type}[han,naka]{%
-        \jlreq at switch{##1}{
-          {han}{\def\jlreq at heading@clearpage{\clearpage}}
-          {naka}{\def\jlreq at heading@clearpage{\clearpage\hbox{}\clearpage}}
-        }%
-      }
-      {number}[true,false]{\csname jlreq at number##1\endcsname}
-    }{#3}%
+    \newif\ifjlreq at number
+    \keys_define:nn { DeclareTobiraHeading:#1 } {
+      label_format .tl_set:N = \jlreq at label@format,
+      format .code:n = {\def\jlreq at format####1####2{##1}},
+      pagestyle .tl_set:N = \jlreq at pagestyle,
+      type .choice:,
+      type / han .code:n = { \def\jlreq at heading@clearpage{\clearpage} },
+      type / naka .code:n = { \def\jlreq at heading@clearpage{\clearpage\hbox{}\thispagestyle{empty}\clearpage} },
+      number .choices:nn = {true,false} { \csname jlreq at number ##1 \endcsname }
+    }
+    \keys_set:nn { DeclareTobiraHeading:#1 } { type = naka, pagestyle = empty, number = true}
+    \keys_set:nn { DeclareTobiraHeading:#1 } {#3}
     \def\jlreq at do{}%
     \ifx\jlreq at format\@undefined
       \def\jlreq at format##1##2{##1##2}%
@@ -1780,13 +1744,13 @@
   \jlreq at do
 }
 
-\newcommand{\NewTobiraHeading}[3]{%
+\NewDocumentCommand{\NewTobiraHeading}{ m m +m }{%
   \expandafter\@ifdefinable\csname #1\endcsname{\DeclareTobiraHeading{#1}{#2}{#3}}%
 }
-\newcommand{\RenewTobiraHeading}[3]{%
+\NewDocumentCommand{\RenewTobiraHeading}{ m m +m }{%
   \@ifundefined{#1}{\@latex at error{\expandafter\string\csname#1\endcsname\space undefined}\@ehc}{\DeclareTobiraHeading{#1}{#2}{#3}}%
 }
-\newcommand{\ProvideTobiraHeading}[3]{%
+\NewDocumentCommand{\ProvideTobiraHeading}{ m m +m }{%
   \@ifundefined{#1}{\DeclareTobiraHeading{#1}{#2}{#3}}{}%
 }
 
@@ -1803,7 +1767,7 @@
 % 見出し全体のフォーマット内では#1=ラベル,#2=見出し文字列,#3=副題,それぞれ各々のフォーマットに基づき整形される.
 % ラベルフォーマットでは#1=カウンタ名,見出し文字列フォーマットでは#1=見出し文字列,副題フォーマットでは#1=副題
 % ラベルのみのフォーマットは目次に使われる.
-\newcommand{\jlreq at BlockHeading@start}[6]{%
+\long\def\jlreq at BlockHeading@start#1#2#3#4#5#6{%
   \if at noskipsec\leavevmode\fi
   % #5と#6は\parを含むかもしれないので引数渡しはしない(後の\@ifstarで詰まる)
   \edef\jlreq at BlockHeading@start at eachformat{\expandonce{\@firstoftwo#5}}%
@@ -1812,7 +1776,7 @@
   \jlreq at BlockHeading@start@{#1}{#2}{#3}{#4}%
 }
 % {1 = 命令}{2 = レベル}{3 = スペース関連}
-\newcommand{\jlreq at BlockHeading@start@}[4]{%
+\long\def\jlreq at BlockHeading@start@#1#2#3#4{%
   \@ifstar{\@dblarg{\jlreq at BlockHeading@start@@{#1}{#2}{#3}{*}}}{\@dblarg{\jlreq at BlockHeading@start@@{#1}{#2}{#3}{#4}}}%
 }
 % {1 = 命令}{2 = レベル}{3 = スペース関連}{4 = *}[5 = running head]{6 = 見出し}
@@ -1889,17 +1853,17 @@
 \expandafter\def\expandafter\jlreq at BlockHeading@start at afterheading@skipspaces\space{\jlreq at BlockHeading@start at afterheading}
 \def\jlreq at BlockHeading@start at afterheading@ii{%
   \def\jlreq at do{\jlreq at BlockHeading@spaces at output}%
-  \@for\@tempa:=\jlreq at BlockHeading@allheadings\do{%
-    \expandafter\ifx\csname\@tempa\endcsname\jlreq at nextchar\def\jlreq at do{}\fi
+  \seq_map_inline:Nn \l__jlreq_BlockHeading_allheadings_seq {
+    \expandafter\ifx\csname##1\endcsname\jlreq at nextchar\def\jlreq at do{}\fi
   }%
   % \jlreq at BlockHeading@HeadingSpaces at ignoretokens(@noargument)内のものは特別扱いする
-  \expandafter\@tfor\expandafter\@tempa\expandafter:\expandafter=\jlreq at BlockHeading@HeadingSpaces at ignoretokens@noargument\do{%
-    \expandafter\ifx\@tempa\jlreq at nextchar
+  \tl_map_inline:Nn \jlreq at BlockHeading@HeadingSpaces at ignoretokens@noargument {
+    \ifx##1\jlreq at nextchar
       \def\jlreq at do{\jlreq at BlockHeading@start at afterheading@saveafter at cs@noargument}%
     \fi
   }%
-  \expandafter\@tfor\expandafter\@tempa\expandafter:\expandafter=\jlreq at BlockHeading@HeadingSpaces at ignoretokens\do{%
-    \expandafter\ifx\@tempa\jlreq at nextchar
+  \tl_map_inline:Nn \jlreq at BlockHeading@HeadingSpaces at ignoretokens {
+    \ifx##1\jlreq at nextchar
       \def\jlreq at do{\jlreq at BlockHeading@start at afterheading@saveafter at cs}%
     \fi
   }%
@@ -2044,12 +2008,16 @@
 \def\jlreq at BlockHeading@start at removecolumn#1:{#1}
 
 % 空き指定を解釈する.a:10pt -> \jlreq at resulta=a,\jlreq at resultb=10pt
-\def\jlreq at BlockHeading@start at analyzespace#1:#2\jlreq at endmark{%
+\cs_set:Nn \__jlreq_BlockHeading_start_analyzespace:n{%
+  \__jlreq_BlockHeading_start_analyzespace_aux#1:\jlreq at endmark
+}
+\cs_generate_variant:Nn \__jlreq_BlockHeading_start_analyzespace:n {V}
+\def\__jlreq_BlockHeading_start_analyzespace_aux#1:#2\jlreq at endmark{
   \jlreq at ifempty{#1}{%
     \def\jlreq at resulta{}%
     \def\jlreq at resultb{}%
   }{%
-    \let\jlreq at resulta=#1%
+    \let\jlreq at resulta=#1
     \edef\jlreq at resultb{\expandonce{\jlreq at BlockHeading@start at removecolumn#2}}%
   }%
 }
@@ -2064,10 +2032,13 @@
   \jlreq at tempskipa=0pt
   \jlreq at tempskipb=0pt
   \jlreq at tempskipc=0pt
-  \jlreq at BlockHeading@start at analyzespace#1:\jlreq at endmark
+  \tl_set_rescan:Nnn \l_jlreq_tmpa_tl {\ExplSyntaxOn}{#1}
+%  \message{[[[\expandafter\getcatcode\l_jlreq_tmpa_tl]]]}
+  \__jlreq_BlockHeading_start_analyzespace:V \l_jlreq_tmpa_tl
   \let\jlreq at maeakitype=\jlreq at resulta
   \let\jlreq at maeaki=\jlreq at resultb
-  \jlreq at BlockHeading@start at analyzespace#2:\jlreq at endmark
+  \tl_set_rescan:Nnn \l_jlreq_tmpa_tl {\ExplSyntaxOn}{#2}
+  \__jlreq_BlockHeading_start_analyzespace:V \l_jlreq_tmpa_tl
   \let\jlreq at ushiroakitype=\jlreq at resulta
   \let\jlreq at ushiroaki=\jlreq at resultb
   \def\jlreq at lines{#3}%
@@ -2130,29 +2101,24 @@
     \dp\jlreq at tempboxa=\dimexpr\dp\jlreq at tempboxa + \ht\jlreq at tempboxa - \jlreq at tempdimb\relax
     \ht\jlreq at tempboxa=\jlreq at tempdimb
     \box\jlreq at tempboxa
-    \ifx r\jlreq at ushiroakitype\prevdepth=-1000pt \else\prevdepth=\jlreq at tempdimc\fi
+    \ifx r\jlreq at ushiroakitype\prevdepth=-1000pt\relax\else\prevdepth=\jlreq at tempdimc\fi
     % \jlreq at tempdimb, \jlreq at tempdimcの利用ここまで
   \else
     \dp\jlreq at tempboxa=\dimexpr\dp\jlreq at tempboxa + \ht\jlreq at tempboxa\relax
     \ht\jlreq at tempboxa=0pt
     \box\jlreq at tempboxa
-    \ifx r\jlreq at ushiroakitype\prevdepth=-1000pt \else\prevdepth=0pt \fi
+    \ifx r\jlreq at ushiroakitype\prevdepth=-1000pt\relax\else\prevdepth=0pt\relax\fi
   \fi
   \nobreak
   \jlreq at ifgluezero\jlreq at tempskipb{}{\vskip\jlreq at tempskipb}%
   \edef\jlreq at do{%
-    \ifdim\parskip=0pt \else
-      \unexpanded{\def\jlreq at parhook@gyodori}{%
-        \noexpand\parskip=\the\parskip
-        \unexpanded{\def\jlreq at parhook@gyodori{}}%
-      }%
-      \unexpanded{\parskip=0pt}%
-    \fi
+    \dim_compare:nF { \parskip=0pt } {
+      \noexpand\AddToHookNext{para/before}{\noexpand\parskip=\the\parskip\noexpand\relax}%
+      \noexpand\parskip=0pt
+    }
   }%
   \expandafter}\jlreq at do
 }
-\PushPostHook{par}{\jlreq at parhook@gyodori}
-\def\jlreq at parhook@gyodori{}
 
 % 行取り情報をゲットだぜ
 % \jlreq at resultに{1 = 前空き}{2 = 後ろ空き}{3 = トータル行数}を入れる
@@ -2165,49 +2131,53 @@
   \@ifnextchar[{\jlreq at BlockHeading@gyodori at parsekeyval@@{#1}}{\jlreq at BlockHeading@gyodori at parsekeyval@@{#1}[jlreq at key]}%
 }
 \long\def\jlreq at BlockHeading@gyodori at parsekeyval@@#1[#2]#3#4#5#6{%
-  \begingroup
-    \def\jlreq at lines{#6}%
-    \def\jlreq at before@space{}%
-    \def\jlreq at before@lines{}%
-    \def\jlreq at after@space{}%
-    \def\jlreq at after@lines{}%
-    \jlreq at parsekeyval#1[#2]{
-      {lines}{\def\jlreq at lines{##1}}
-      {before_space}{\def\jlreq at before@space{##1}}
-      {after_space}{\def\jlreq at after@space{##1}}
-      {before_lines}{%
-        \jlreq at ifempty{##1}{\def\jlreq at before@lines{}}{%
-          \jlreq at iffirsttoken@ignorespaces{##1}{*}%
-            {\edef\jlreq at before@lines{s:\expandonce{\@gobble ##1}}}%
-            {\def\jlreq at before@lines{a:##1}}%
-        }%
+  \group_begin:
+    \keys_define:nn {#2} {
+      lines .tl_set:N = \l__jlreq_lines_tl,
+      before_space .tl_set:N = \l__jlreq_before_space_tl,
+      after_space .tl_set:N = \l__jlreq_after_space_tl,
+      before_lines .code:n = {
+        \tl_if_empty:nTF {##1}{
+          \tl_set:Nn \l__jlreq_before_lines_tl {}
+        }{
+          \str_if_eq:eeTF { \str_head:n {##1} } {*}
+            {\tl_set:Nx \l__jlreq_before_lines_tl {s:\exp_not:o {\use_none:n ##1}}}
+            {\tl_set:Nx \l__jlreq_before_lines_tl {a:##1}}
+        }
+      },
+      after_lines .tl_set:N = \l__jlreq_after_lines_tl
+    }
+    \tl_if_empty:nF {#1} { \keys_define:nn {#2} { unknown .code:n = {} } }
+    \keys_set:nn {#2} {lines = {#6}, before_space = {}, before_lines = {}, after_space = {}, after_lines = {} }
+    \keys_set:nn {#2} {#3} 
+    % before/after_lines優先
+    \tl_if_empty:NF \l__jlreq_before_space_tl { \tl_put_left:Nn \l__jlreq_before_space_tl {r:} }
+    \tl_if_empty:NF \l__jlreq_before_lines_tl { \tl_set:Nx \l__jlreq_before_space_tl {\exp_not:o {\l__jlreq_before_lines_tl} \baselineskip } }
+    \tl_if_empty:NT \l__jlreq_before_space_tl { \tl_set:Nn \l__jlreq_before_space_tl {#4} }
+    \tl_if_empty:NF \l__jlreq_after_space_tl { \tl_put_left:Nn \l__jlreq_after_space_tl {r:} }
+    \tl_if_empty:NF \l__jlreq_after_lines_tl { \tl_set:Nx \l__jlreq_after_space_tl { a:\exp_not:o {\l__jlreq_after_lines_tl} \baselineskip } }
+    \tl_if_empty:NT \l__jlreq_after_space_tl { \tl_set:Nn \l__jlreq_after_space_tl {#5} }
+    \cs_set:Nx \l__jlreq_do: {
+      \exp_not:n {\def\jlreq at result}{
+        {\exp_not:o {\l__jlreq_before_space_tl } }
+        {\exp_not:o {\l__jlreq_after_space_tl } }
+        {\exp_not:o {\l__jlreq_lines_tl } }
       }
-      {after_lines}{\def\jlreq at after@lines{##1}}
-    }{#3}%
-    % before/after_lines優先
-    \ifx\jlreq at before@space\@empty\else\edef\jlreq at before@space{r:\expandonce{\jlreq at before@space}}\fi
-    \ifx\jlreq at before@lines\@empty\else\edef\jlreq at before@space{\expandonce{\jlreq at before@lines}\baselineskip}\fi
-    \ifx\jlreq at before@space\@empty\def\jlreq at before@space{#4}\fi
-    \ifx\jlreq at after@space\@empty\else\edef\jlreq at after@space{r:\expandonce{\jlreq at after@space}}\fi
-    \ifx\jlreq at after@lines\@empty\else\edef\jlreq at after@space{a:\expandonce{\jlreq at after@lines}\baselineskip}\fi
-    \ifx\jlreq at after@space\@empty\def\jlreq at after@space{#5}\fi
-    \edef\jlreq at do{%
-      \unexpanded{\def\jlreq at result}{{\expandonce{\jlreq at before@space}}{\expandonce{\jlreq at after@space}}{\expandonce{\jlreq at lines}}}%
     }%
-  \expandafter\endgroup
-  \jlreq at do
+  \exp_after:wN \group_end:
+  \l__jlreq_do:
 }
 
 \newbox\jlreq at BlockHeading@start at label@box
 % \DeclareBlockHeading{命令名}{レベル}{設定}
-\def\jlreq at BlockHeading@allheadings{}% 別行見出し一覧
-\newcommand{\DeclareBlockHeading}[3]{%
-  \IfHookExistsTF{jlreq/heading/before/#1}{}{\NewHook{jlreq/heading/before/#1}}%
+\seq_new:N \l__jlreq_BlockHeading_allheadings_seq
+\NewDocumentCommand {\DeclareBlockHeading} { m m +m } {
+  \ProvideHook{jlreq/heading/before/#1}
   \def\jlreq at do{\@removeelement{#1}}%
-  \expandafter\jlreq at do\expandafter{\jlreq at heading@allheadings}{\jlreq at heading@allheadings}%
-  \appto\jlreq at heading@allheadings{,#1}%
-  \expandafter\jlreq at do\expandafter{\jlreq at BlockHeading@allheadings}{\jlreq at BlockHeading@allheadings}%
-  \appto\jlreq at BlockHeading@allheadings{,#1}%
+  \seq_put_right:Nn \l__jlreq_heading_allheadings_seq {#1}
+  \seq_remove_duplicates:N \l__jlreq_heading_allheadings_seq
+  \seq_put_right:Nn \l__jlreq_BlockHeading_allheadings_seq {#1}
+  \seq_remove_duplicates:N \l__jlreq_BlockHeading_allheadings_seq
   \expandafter\def\csname jlreq at heading@level@#1\endcsname{#2}%
   \expandafter\edef\csname jlreq at heading@setting@#1\endcsname{\unexpanded{#3}}%
   \expandafter\def\csname jlreq at heading@type@#1\endcsname{\RenewBlockHeading}%
@@ -2215,29 +2185,12 @@
   \@ifundefined{#1mark}{\expandafter\let\csname #1mark\endcsname\@gobble}{}%
   \jlreq at heading@make at maketoc{#1}{#2}%
   \begingroup
-    \def\jlreq at font{}%
-    \def\jlreq at subtitle@font{}%
-    \def\jlreq at indent{0\jlreq at zw}%
-    \def\jlreq at end@indent{0\jlreq at zw}%
-    \def\jlreq at align{l}%
-    \edef\jlreq at format{\unexpanded{##1##2##3}}%
     \edef\jlreq at heading@text at format{\unexpanded{##1}}%
-    \def\jlreq at pagebreak{}%
-    \def\jlreq at label@format{\@seccntformat{#1}}%
-    \newif\ifjlreq at second@text at indent@withlabel\jlreq at second@text at indent@withlabeltrue
-    \def\jlreq at after@label at space{1\jlreq at zw}%
-    \def\jlreq at second@heading at text@indent at wlabel{0pt}%
-    \def\jlreq at second@heading at text@indent at wolabel{0pt}%
-    \edef\jlreq at subtitle@format{\unexpanded{---##1---}}%
-    \newif\ifjlreq at subtitleindent@withlabel\jlreq at subtitleindent@withlabeltrue
-    \def\jlreq at subtitle@indent{1\jlreq at zw}%
-    \def\jlreq at afterindent{\@afterindenttrue}%
-    \def\jlreq at allowbreak@evenpage{*}% 偶数ページでも改ページを許可するならば空,そうでないなら*
-    \newif\ifjlreq at subtitle@break\jlreq at subtitle@breaktrue
-    \def\jlreq at subtitle@indent{1\jlreq at zw}%
-    \def\jlreq at column@spanning{false}%
-    \newif\ifjlreq at column@spanning at possible\jlreq at column@spanning at possiblefalse
-    \newif\ifjlreq at number \jlreq at numbertrue
+    \newif\ifjlreq at second@text at indent@withlabel
+    \newif\ifjlreq at subtitleindent@withlabel
+    \newif\ifjlreq at subtitle@break
+    \newif\ifjlreq at column@spanning at possible
+    \newif\ifjlreq at number
     % a,bみたいなのをaとbにわける.カンマがなければbは空.引数を{a}{b}として##2を呼び出す.
     \def\jlreq at parsecomma##1##2{%
       \jlreq at helper@dividebycomma{##1}%
@@ -2249,26 +2202,27 @@
       \def\jlreq at tempa####1####2{##2}%
       \jlreq at do
     }%
-    \jlreq at parsekeyval[BlockHeading:#1]{
-      {lines}{}
-      {before_space}{}
-      {after_space}{}
-      {before_lines}{}
-      {after_lines}{}
-      {font}{\def\jlreq at font{##1}}
-      {subtitle_font}{\def\jlreq at subtitle@font{##1}}
-      {indent}{\def\jlreq at indent{##1}}
-      {end_indent}{\def\jlreq at end@indent{##1}}
-      {align}[left,center,right]{%
-        \jlreq at switch{##1}{
-          {left}{\def\jlreq at align{l}}
-          {center}{\def\jlreq at align{c}}
-          {right}{\def\jlreq at align{r}}
-        }%
-      }
-      {format}{\edef\jlreq at format{\unexpanded{##1}}}
-      {after_label_space}{\def\jlreq at after@label at space{##1}}
-      {second_heading_text_indent,heading_text_second_indent}{%
+    \keys_define:nn { BlockHeading:#1 } {
+      lines .code:n = {},
+      before_space .code:n = {},
+      after_space .code:n = {},
+      before_lines .code:n = {},
+      after_lines .code:n = {},
+      font .tl_set:N = \jlreq at font,
+      subtitle_font .tl_set:N = \jlreq at subtitle@font,
+      indent .tl_set:N = \jlreq at indent,
+      end_indent .tl_set:N = \jlreq at end@indent,
+      align .choice:,
+      align / left .code:n = { \def\jlreq at align{l} },
+      align / center .code:n = { \def\jlreq at align{c} },
+      align / right .code:n = { \def\jlreq at align{r} },
+      format .code:n = {\edef\jlreq at format{\unexpanded{##1}}},
+      after_label_space .tl_set:N = \jlreq at after@label at space,
+      heading_text_second_indent .code:n = {
+        \ClassError { jlreq } { `heading_text_second_indent`~was~removed,~use~`second_heading_text_indent`~instead~(in~BlockHeading:~#1) }{\@ehc}
+      },
+%      {second_heading_text_indent,heading_text_second_indent}{%
+      second_heading_text_indent .code:n = {
         \jlreq at parsecomma{##1}{%
           \jlreq at iffirsttoken{####1}{*}{%
             \jlreq at second@text at indent@withlabelfalse
@@ -2283,10 +2237,10 @@
             \def\jlreq at second@heading at text@indent at wolabel{####2}%
           }%
         }%
-      }
-      {label_format}{\edef\jlreq at label@format{\unexpanded{##1}}}
-      {subtitle_format}{\edef\jlreq at subtitle@format{\unexpanded{##1}}}
-      {subtitle_indent}{%
+      },
+      label_format .code:n = {\edef\jlreq at label@format{\unexpanded{##1}}},
+      subtitle_format .code:n = {\edef\jlreq at subtitle@format{\unexpanded{##1}}},
+      subtitle_indent .code:n = {%
         \jlreq at iffirsttoken{##1}{*}{%
           \jlreq at subtitleindent@withlabelfalse
           \edef\jlreq at subtitle@indent{\expandonce{\@gobble ##1}}%
@@ -2294,27 +2248,24 @@
           \jlreq at subtitleindent@withlabeltrue
           \def\jlreq at subtitle@indent{##1}%
         }%
-      }
-      {subtitle_break}[true,false]{\csname jlreq at subtitle@break##1\endcsname}
-      {afterindent}[true,false]{\edef\jlreq at afterindent{\expandonce{\csname @afterindent##1\endcsname}}}
-      {allowbreak_if_evenpage}[true,false]{%
-        \jlreq at switch{##1}{
-          {true}{\def\jlreq at allowbreak@evenpage{}}
-          {false}{\def\jlreq at allowbreak@evenpage{*}}
-        }%
-      }
-      {pagebreak}[clearpage,cleardoublepage,clearcolumn,nariyuki,begin_with_odd_page,begin_with_even_page]{%
-        \jlreq at switch{##1}{
-          {clearpage}{\def\jlreq at pagebreak{\clearpage}\jlreq at column@spanning at possibletrue}
-          {cleardoublepage}{\def\jlreq at pagebreak{\cleardoublepage}\jlreq at column@spanning at possibletrue}
-          {clearcolumn}{\if at twocolumn\def\jlreq at pagebreak{\newpage}\else\def\jlreq at pagebreak{}\fi\jlreq at column@spanning at possiblefalse}
-          {begin_with_even_page}{\def\jlreq at pagebreak{\cleartoevenpage[empty]}\jlreq at column@spanning at possibletrue}
-          {begin_with_odd_page}{\def\jlreq at pagebreak{\cleartooddpage[empty]}\jlreq at column@spanning at possibletrue}
-          {nariyuki}{\def\jlreq at pagebreak{}\jlreq at column@spanning at possiblefalse}
-        }%
-      }
+      },
+      subtitle_break .choices:nn = {true,false}{\csname jlreq at subtitle@break##1\endcsname},
+      afterindent .choices:nn = {true,false}{\edef\jlreq at afterindent{\expandonce{\csname @afterindent##1\endcsname}}},
+      allowbreak_if_evenpage .choices:nn = {true,false}{%
+        \str_if_eq:nnTF {##1} {true}
+          {\def\jlreq at allowbreak@evenpage{}}
+          {\def\jlreq at allowbreak@evenpage{*}}
+      },
+      pagebreak .choice:,
+      pagebreak / clearpage            .code:n = {\def\jlreq at pagebreak{\clearpage}\jlreq at column@spanning at possibletrue},
+      pagebreak / cleardoublepage      .code:n = {\def\jlreq at pagebreak{\cleardoublepage}\jlreq at column@spanning at possibletrue},
+      pagebreak / clearcolumn          .code:n = {\if at twocolumn\def\jlreq at pagebreak{\newpage}\else\def\jlreq at pagebreak{}\fi\jlreq at column@spanning at possiblefalse},
+      pagebreak / begin_with_even_page .code:n = {\def\jlreq at pagebreak{\cleartoevenpage[empty]}\jlreq at column@spanning at possibletrue},
+      pagebreak / begin_with_odd_page  .code:n = {\def\jlreq at pagebreak{\cleartooddpage[empty]}\jlreq at column@spanning at possibletrue},
+      pagebreak / nariyuki             .code:n = {\def\jlreq at pagebreak{}\jlreq at column@spanning at possiblefalse},
+      pagestyle .tl_set:N = \l__jlreq_pagestyle_tl,
       % 後々数字を受け付けるようになったりするかもしれないので……
-      {column_spanning}{%
+      column_spanning .code:n = {%
         \jlreq at tempatrue % validな入力に対してfalse
         \jlreq at ifempty{##1}{}{%
           \jlreq at ifnumber{##1}{% 数字の時はtrueに回す
@@ -2327,18 +2278,27 @@
             }%
           }%
         }%
-        \ifjlreq at tempa\ClassWarningNoLine{jlreq}{Invalid input `##1' for column_spanning in BlockHeading #1}\fi
-      }
-      {number}[true,false]{\csname jlreq at number##1\endcsname}
-    }{#3}%
+        \ifjlreq at tempa\ClassWarningNoLine{jlreq}{Invalid~input~`##1'~for~column_spanning~in~BlockHeading~#1}\fi
+      },
+      number .choices:nn = {true,false}{\csname jlreq at number\l_keys_choice_tl\endcsname},
+    }%
+    \keys_set:nn { BlockHeading:#1 } {
+      font = {}, subtitle_font = {},
+      indent = {0pt}, end_indent = {0pt}, align = {left}, subtitle_indent = {1\jlreq at zw}, afterindent = {true},
+      second_heading_text_indent = {0pt}, after_label_space = {1\jlreq at zw}, 
+      pagebreak = {nariyuki}, allowbreak_if_evenpage = {false}, subtitle_break = {true}, column_spanning = {false}, 
+      format = {##1##2##3}, label_format = {\@seccntformat{#1}}, subtitle_format = {---##1---}, number = {true},
+      pagestyle = {}
+    }
+    \keys_set:nn { BlockHeading:#1 } {#3}
     \def\jlreq at do{}% 初期化.これに最終処理を入れていく.
     % 入力チェック
-    \ifthenelse{\equal{\jlreq at column@spanning}{true}}{%
+    \str_if_eq:VnT \jlreq at column@spanning { true } {
       \jlreq at if{\unless\ifjlreq at column@spanning at possible\fi}{
-        \ClassWarningNoLine{jlreq}{column_spanning can be used only with `pagebreak=nariyuki' or `pagebreak=clearcolumn' (in BlockHeading #1)}%
+        \ClassWarningNoLine{jlreq}{column_spanning~can~be~used~only~with~`pagebreak=nariyuki'~or~`pagebreak=clearcolumn'~(in~BlockHeading~#1)}%
         \def\jlreq at column@spanning{false}%
       }{}%
-    }{}%
+    }%
     % ラベルありフォーマット:前
     \edef\jlreq at pre@format at wlabel{%
       \noexpand\noindent
@@ -2363,12 +2323,12 @@
     \edef\jlreq at label@format at modified{%
       \noexpand\jlreq at BlockHeading@start at outputlabel
       \unexpanded{\inhibitglue\hbox{}}%
-      \ifdim\dimexpr\jlreq at after@label at space\relax=0pt \else
+      \ifdim\dimexpr\jlreq at after@label at space\relax=\dimexpr 0pt\relax\else
         \noexpand\hspace*{\noexpand\dimexpr\expandonce{\jlreq at after@label at space}\noexpand\relax}%
       \fi
     }%
     \edef\jlreq at heading@text at format@wlabel{%
-      \ifnum 0\ifdim\jlreq at second@heading at text@indent at wlabel=0pt \else 1\fi\ifjlreq at second@text at indent@withlabel 1\fi>0
+      \ifnum 0\ifdim\jlreq at second@heading at text@indent at wlabel=\dimexpr 0pt\relax\else 1\fi\ifjlreq at second@text at indent@withlabel 1\fi>0
         \unexpanded{\hangindent=\glueexpr}(\expandonce{\jlreq at second@heading at text@indent at wlabel})%
           \ifjlreq at second@text at indent@withlabel + (\expandonce{\jlreq at after@label at space}) + \unexpanded{\jlreq at BlockHeading@start at labellength}\fi
           \noexpand\relax
@@ -2376,7 +2336,7 @@
       \expandonce{\jlreq at heading@text at format}%
     }%
     \edef\jlreq at heading@text at format@wolabel{%
-      \ifdim\dimexpr\jlreq at second@heading at text@indent at wolabel\relax=0pt \else
+      \ifdim\dimexpr\jlreq at second@heading at text@indent at wolabel\relax=\dimexpr 0pt\relax\else
         \unexpanded{\hangindent=\dimexpr}\expandonce{\jlreq at second@heading at text@indent at wolabel}\noexpand\relax
       \fi
       \expandonce{\jlreq at heading@text at format}%
@@ -2389,7 +2349,7 @@
           ##2%
           \unexpanded{\nobreak\noindent}%
         \else
-          \ifdim\jlreq at subtitle@indent=0pt \else
+          \ifdim\jlreq at subtitle@indent=\dimexpr 0pt\relax\else
             \noexpand\hspace*{\expandonce{\jlreq at subtitle@indent}}%
           \fi
         \fi
@@ -2401,7 +2361,7 @@
         \noexpand\hangafter=0
         \unexpanded{\hangindent=\dimexpr}\noexpand\jlreq at BlockHeading@start at labellength + (\expandonce{\jlreq at after@label at space}) + (\expandonce{\jlreq at subtitle@indent})\noexpand\relax
       \else
-        \ifdim\jlreq at subtitle@indent=0pt \else
+        \ifdim\jlreq at subtitle@indent=\dimexpr 0pt\relax\else
           \noexpand\hangafter=0
           \unexpanded{\hangindent=\dimexpr}\expandonce{\jlreq at subtitle@indent}\noexpand\relax
         \fi
@@ -2408,7 +2368,7 @@
       \fi
     }%
     \jlreq at make@subtitle at format\jlreq at subtitle@format at wolabel{%
-      \ifdim\jlreq at subtitle@indent=0pt \else
+      \ifdim\jlreq at subtitle@indent=\dimexpr 0pt\relax\else
         \noexpand\hangafter=0
         \unexpanded{\hangindent=\dimexpr}\expandonce{\jlreq at subtitle@indent}\noexpand\relax
       \fi
@@ -2420,7 +2380,7 @@
     \edef\jlreq at totalformat{\unexpanded{##1}}%
     \edef\jlreq at totalformat@after{\expandonce{\jlreq at afterindent}\noexpand\@afterheading}%
     \if at twocolumn
-      \ifthenelse{\equal{\jlreq at column@spanning}{true}}{%
+      \str_if_eq:VnT \jlreq at column@spanning { true }{%
         \def\@tempa##1##2##3{%
           % 前開きが常に入ってしまうので,a:の時は除去する
           \jlreq at iffirsttoken{##1}{a}{\def\jlreq at spaceset{{}{##2}{##3}}}{}%
@@ -2439,7 +2399,6 @@
         }%
         \expandafter\@tempa\jlreq at spaceset
         \def\jlreq at totalformat@after{}%
-      }{%
       }%
     \fi
     \edef\jlreq at do{%
@@ -2448,6 +2407,7 @@
         \noexpand\UseHook{jlreq/heading/before}%
         \noexpand\UseHook{jlreq/heading/before/#1}%
         \expandonce{\jlreq at pagebreak}%
+        \tl_if_empty:NF \l__jlreq_pagestyle_tl { \exp_not:N \thispagestyle {\exp_not:o { \l__jlreq_pagestyle_tl } } }
         \unexpanded{\jlreq at BlockHeading@start{#1}{#2}}%
         {{\expandonce{\jlreq at align}}{\expandonce{\jlreq at indent}}{\expandonce{\jlreq at end@indent}}\expandonce{\jlreq at spaceset}{\expandonce{\jlreq at allowbreak@evenpage}}}%
         {\ifjlreq at number\else -\fi}%
@@ -2471,13 +2431,13 @@
   \jlreq at do
 }
 
-\newcommand{\NewBlockHeading}[3]{%
+\NewDocumentCommand{\NewBlockHeading}{ m m +m }{%
   \expandafter\@ifdefinable\csname #1\endcsname{\DeclareBlockHeading{#1}{#2}{#3}}%
 }
-\newcommand{\RenewBlockHeading}[3]{%
+\NewDocumentCommand{\RenewBlockHeading}{ m m +m }{%
   \@ifundefined{#1}{\@latex at error{\expandafter\string\csname#1\endcsname\space undefined}\@ehc}{\DeclareBlockHeading{#1}{#2}{#3}}%
 }
-\newcommand{\ProvideBlockHeading}[3]{%
+\NewDocumentCommand{\ProvideBlockHeading}{ m m +m }{%
   \@ifundefined{#1}{\DeclareBlockHeading{#1}{#2}{#3}}{}%
 }
 
@@ -2513,7 +2473,7 @@
 \def\jlreq at BlockHeading@spaces at current@sequence{}
 \def\jlreq at BlockHeading@spaces at headingslist{}
 
-\newcommand{\SetBlockHeadingSpaces}[1]{%
+\NewDocumentCommand{\SetBlockHeadingSpaces} { m } {
   \begingroup
     % 現段階の情報をクリアする
     \def\jlreq at tempa{}% 見出しリスト
@@ -2521,8 +2481,8 @@
     \jlreq at SetBlockHeadingSpaces#1\jlreq at endmark
     \edef\jlreq at do{%
       \unexpanded{%
-        \@for\@tempa:=\jlreq at BlockHeading@spaces at headingslist\do{%
-          \expandafter\let\csname jlreq at BlockHeading@spaces at setlist@\@tempa\endcsname=\@undefined
+        \clist_map_inline:Nn \jlreq at BlockHeading@spaces at headingslist {
+          \expandafter\let\csname jlreq at BlockHeading@spaces at setlist@####1\endcsname=\@undefined
         }%
       }%
       \unexpanded{\def\jlreq at BlockHeading@spaces at headingslist}{\expandonce{\jlreq at tempa}}%
@@ -2563,7 +2523,7 @@
     \fi
     \eappto\jlreq at tempb{%
       \noexpand\@ifundefined{jlreq at BlockHeading@spaces at setlist@\jlreq at headings}{}{%
-        \noexpand\ClassError{jlreq}{The spaces for \jlreq at headings\space is defined more than once (in SetBlockHeadingSpaces)}{\noexpand\@ehc}%
+        \noexpand\ClassError{jlreq}{The~spaces~for~\jlreq at headings\space is~defined~more~than~once~(in~SetBlockHeadingSpaces)}{\noexpand\@ehc}%
       }%
       \noexpand\def\expandonce{\csname jlreq at BlockHeading@spaces at setlist@\jlreq at headings\endcsname}{{\expandonce{\jlreq at totalset}}\expandonce{\jlreq at set}}%
     }%
@@ -2582,7 +2542,7 @@
     \def\jlreq at tempb{\jlreq at uniqtoken}%
     \ifx\jlreq at tempa\jlreq at tempb\def\jlreq at do{}%
     \else\def\jlreq at do{%
-      \ClassError{jlreq}{Invalid setting ``\unexpanded{#1{#2}}'' is found, You forgot `_'? (in SetBlockHeadingSpaces)}{\@ehc}%
+      \ClassError{jlreq}{Invalid~setting~``\unexpanded{#1{#2}}''~is~found,~you~forgot~`_'?~(in~SetBlockHeadingSpaces)}{\@ehc}%
     }\fi
   \expandafter\endgroup
   \jlreq at do
@@ -2589,9 +2549,9 @@
 }
 
 \def\jlreq at SetBlockHeadingSpaces@iii#1{%
-  \@for\@tempa:=#1\do{%
+  \clist_map_variable:nNn {#1} \@tempa {
     \expandafter\jlreq at helper@trim\expandafter{\@tempa}{\@tempa}%
-    \expandafter\jlreq at iffirsttoken@ignorespaces\expandafter{\@tempa}{_}{%
+    \str_if_eq:eeTF {\str_head:N \@tempa} {_} {
       \ifx\jlreq at lastdimen\@empty\else\eappto\jlreq at set{{\expandonce{\jlreq at lastdimen}}}\fi%
       \def\jlreq at lastdimen{}%
       \expandafter\jlreq at SetBlockHeadingSpaces@iv\@tempa{\jlreq at endmark}\jlreq at endmark
@@ -2611,14 +2571,16 @@
     \jlreq at tempafalse
   }%
 }
+
 \def\jlreq at SetBlockHeadingSpaces@iv#1#{%
-  \expandafter\jlreq at ifcontains\expandafter{\@gobble #1}{_}{%
-    \ClassWarning{jlreq}{Unusual heading name `\@gobble #1' is found. You forgot a comma? (in SetBlockHeadingSpaces)}%
-  }{}%
+  \str_set:Nx \l__jlreq_tmpa_str {\@gobble #1}
+  \str_if_in:NnT \l__jlreq_tmpa_str {_} {
+    \ClassWarning{jlreq}{Unusual~heading~name~`\@gobble #1'~is~found.~You~forgot~a~comma?~(in~SetBlockHeadingSpaces)}%
+  }%
   \jlreq at ifendswith{#1}{*}{{%
     \def\@tempa_##1*{\def\@tempa{##1}}%
     \@tempa#1%
-    \ClassWarning{jlreq}{The heading name `\@gobble #1' ends with `*'. Do you mean `_\@tempa{*}'? (in SetBlockHeadingSpaces)}%
+    \ClassWarning{jlreq}{The~heading~name~`\@gobble #1'~ends~with~`*'.~Do~you^mean~`_\@tempa{*}'?~(in~SetBlockHeadingSpaces)}%
   }}{}%
   \appto\jlreq at headings{#1}%
   \jlreq at SetBlockHeadingSpaces@v
@@ -2646,7 +2608,7 @@
     \def\@tempb##1##{\@temptokena\expandafter{\the\@temptokena##1}\@tempc}%
     \def\@tempc##1{\jlreq at ifendmark{##1}{}{\@temptokena\expandafter{\the\@temptokena{##1}}\@tempb}}%
     \@tempb#1%
-    \ClassWarningNoLine{jlreq}{Extra setting `\the\@temptokena' is found in SetBlockHeadingSpaces, omitted}
+    \ClassWarningNoLine{jlreq}{Extra~setting~`\the\@temptokena'~is~found~in~SetBlockHeadingSpaces,~omitted}
   }}%
 }
 
@@ -2689,13 +2651,12 @@
   \fi
 }
 
-\ExplSyntaxOn
 \def\jlreq at BlockHeading@spaces at output@#1#2\jlreq at endmark{%
   \def\jlreq at result{}%
   \jlreq at tempcnta=0
   \jlreq at BlockHeading@spaces at output@@#2\jlreq at endmark
   \jlreq at tempatrue % 周りの行取り処理が必要か
-  \jlreq at ifempty{#1}{\jlreq at tempafalse}{}%
+  \tl_if_empty:nT {#1} {\jlreq at tempafalse}%
   \tl_if_eq:nnT {#1} {{}{}{}} { \jlreq at tempafalse }
   \edef\jlreq at do{%
     \ifjlreq at tempa
@@ -2709,11 +2670,10 @@
   \jlreq at BlockHeading@spaces at clear
   \jlreq at do
 }
-\ExplSyntaxOff
 % jlreq at resultに出力すべきものを入れていく
 \def\jlreq at BlockHeading@spaces at output@@#1{%
   \jlreq at ifendmark{#1}{}{%
-    \jlreq at iffirsttoken@ignorespaces{#1}{_}{%
+    \str_if_eq:eeTF {\str_head:n {#1}} {_} {
       \advance\jlreq at tempcnta by 1
       \expandafter\jlreq at BlockHeading@spaces at output@@@\expandafter{\@gobble #1}%
     }{%
@@ -2808,13 +2768,11 @@
               \expandonce{\jlreq at tempa{#5}}%
               \expandonce{\csname jlreq at heading@maketoc@#1\endcsname}\unexpanded{{#3}{#6}{#4}}%
             \noexpand\endgroup
-            \unexpanded{\def\jlreq at hook@everypar{\inhibitglue}}%
+            \noexpand\inhibitglue
           \noexpand\else
             \unexpanded{\everypar{}}%
           }%
-            \ifx l\jlreq at engine
-              \unexpanded{\unexpanded{\def\jlreq at hook@everypar{}}}%
-            \else
+            \ifx l\jlreq at engine\else
               \unexpanded{\unexpanded{\let\jlreq at hook@everypar\jlreq at openbracket@hook}}%
             \fi
          \unexpanded{\noexpand\fi}%
@@ -2828,11 +2786,14 @@
 \jlreq at tempa
 
 % \DeclareRuninHeading{命令名}{レベル}{設定}
-\newcommand*{\DeclareRuninHeading}[3]{%
-  \IfHookExistsTF{jlreq/heading/before/#1}{}{\NewHook{jlreq/heading/before/#1}}%
+\NewDocumentCommand { \DeclareRuninHeading } { m m +m } {
+  \__jlreq_declare_runin_heading:nnn {#1} {#2} {#3}
+}
+\cs_set:Nn \__jlreq_declare_runin_heading:nnn {
+  \hook_provide:n { jlreq/heading/before/#1 }
   \def\jlreq at do{\@removeelement{#1}}%
-  \expandafter\jlreq at do\expandafter{\jlreq at heading@allheadings}{\jlreq at heading@allheadings}%
-  \appto\jlreq at heading@allheadings{,#1}%
+  \seq_put_right:Nn \l__jlreq_heading_allheadings_seq {#1}
+  \seq_remove_duplicates:N \l__jlreq_heading_allheadings_seq
   \expandafter\def\csname jlreq at heading@level@#1\endcsname{#2}%
   \expandafter\edef\csname jlreq at heading@setting@#1\endcsname{\unexpanded{#3}}%
   \expandafter\def\csname jlreq at heading@type@#1\endcsname{\RenewRuninHeading}%
@@ -2840,124 +2801,133 @@
   \@ifundefined{#1mark}{\expandafter\let\csname #1mark\endcsname\@gobble}{}%
   \@ifundefined{l@#1}{\expandafter\def\csname l@#1\endcsname{\@dottedtocline{#2}{0\jlreq at zw}{2\jlreq at zw}}}{}%
   \jlreq at heading@make at maketoc{#1}{#2}%
-  \begingroup
-    \def\jlreq at font{\normalfont\normalsize}%
-    \def\jlreq at indent{0pt}%
-    \def\jlreq at after@label at space{1\jlreq at zw}%
+  \group_begin:
     \def\jlreq at label@font{}%
-    \def\jlreq at label@format{\@seccntformat{#1}}%
-    \def\jlreq at after@space{1\jlreq at zw}%
-    \newif\ifjlreq at number \jlreq at numbertrue
-    \jlreq at parsekeyval[RuninHeading:#1]{%
-      {font}{\def\jlreq at font{##1}}
-      {indent}{\def\jlreq at indent{##1}}
-      {label_format}{\def\jlreq at label@format{##1}}
-      {after_label_space}{%
-        \ifdim\dimexpr##1\relax<0pt \ClassWarning{jlreq}{after_label_space in Runin Heading #1 should be not negative}\fi
-        \def\jlreq at after@label at space{##1}%
-      }
-      {after_space}{%
-        \ifdim\dimexpr##1\relax<0pt \ClassWarning{jlreq}{after_space in Runin Heading #1 should be not negative}\fi
-        \def\jlreq at after@space{##1}%
-      }
-      {number}{\csname jlreq at number##1\endcsname}
-    }{#3}%
-    \newif\ifjlreq at indent@zero
-    \jlreq at ifgluezero{\glueexpr\jlreq at indent\relax}{\jlreq at indent@zerotrue}{\jlreq at indent@zerofalse}%
-    \newif\ifjlreq at after@space at zero
-    \jlreq at ifgluezero{\glueexpr\jlreq at after@space\relax}{\jlreq at after@space at zerotrue}{\jlreq at after@space at zerofalse}%
-    \newif\ifjlreq at after@label at space@zero
-    \jlreq at ifgluezero{\glueexpr\jlreq at after@label at space\relax}{\jlreq at after@label at spacefalse}%
-    \edef\jlreq at format@wlabel{{%
-      \ifjlreq at indent@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq at indent}\noexpand\relax\fi
-      \expandonce{\jlreq at font}%
-      \expandonce{\jlreq at label@format}%
-      \ifjlreq at after@label at space@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq at after@label at space}\noexpand\relax\fi
+    \keys_define:nn { RuninHeading:#1 } {
+      font .tl_set:N = \l__jlreq_font_tl,
+      indent .tl_set:N = \l__jlreq_indent_tl,
+      label_format .tl_set:N = \l__jlreq_label_format_tl,
+      after_label_space .tl_set:N = \l__jlreq_after_label_space_tl,
+      after_space .tl_set:N = \l__jlreq_after_space_tl,
+      number .bool_set:N = \l__jlreq_number_bool,
+    }
+    \keys_set:nn { RuninHeading:#1 } {
+      font = {\normalfont\normalsize},
+      indent = {0pt},
+      label_format = {\@seccntformat{#1}},
+      after_label_space = {1\jlreq at zw},
+      after_space = {1\jlreq at zw},
+      number = true
+    }
+    \keys_set:nn { RuninHeading:#1 } {#3}
+    \dim_compare:nT { \l__jlreq_after_space_tl < 0pt } {
+      \ClassWarning{jlreq}{after_space~in~Runin~Heading~#1~should~be~not~negative}
+    }
+    \dim_compare:nT { \l__jlreq_after_label_space_tl < 0pt } {
+      \ClassWarning{jlreq}{after_label_space~in~Runin~Heading~#1~should~be~not~negative}
+    }
+    \bool_set:Nn \l__jlreq_indent_zero_bool { \skip_if_eq_p:nn { \l__jlreq_indent_tl } { 0pt } }
+    \bool_set:Nn \l__jlreq_after_space_zero_bool { \skip_if_eq_p:nn { \l__jlreq_after_space_tl } { 0pt } }
+    \bool_set:Nn \l__jlreq_after_label_space_zero_bool { \skip_if_eq_p:nn { \l__jlreq_after_label_space_tl } { 0pt } }
+    \tl_set:Nx \l__jlreq_format_wlabel_tl {{
+      \bool_if:NF \l__jlreq_indent_zero_bool { \exp_not:N \skip_horizontal:n { \exp_not:o {\l__jlreq_indent_tl} } }
+      \exp_not:o { \l__jlreq_font_tl }
+      \exp_not:o { \l__jlreq_label_format_tl }
+      \bool_if:NF \l__jlreq_after_space_zero_bool { \exp_not:N \skip_horizontal:n { \exp_not:o {\l__jlreq_after_label_space_tl} } }
       ####1%
-      \ifjlreq at after@space at zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq at after@space}\noexpand\relax\fi
+      \bool_if:NF \l__jlreq_after_space_zero_bool { \exp_not:N \skip_horizontal:n { \exp_not:o {\l__jlreq_after_space_tl} } }
     }}%
-    \edef\jlreq at format@wolabel{{%
-      \ifjlreq at indent@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq at indent}\noexpand\relax\fi
-      \expandonce{\jlreq at font}%
+    \tl_set:Nx \l__jlreq_format_wolabel_tl {{
+      \bool_if:NF \l__jlreq_indent_zero_bool { \exp_not:N \skip_horizontal:n { \exp_not:o {\l__jlreq_indent_tl} } }
+      \exp_not:o { \l__jlreq_font_tl }
       ####1%
-      \ifjlreq at after@space at zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq at after@space}\noexpand\relax\fi
+      \bool_if:NF \l__jlreq_after_space_zero_bool { \exp_not:N \skip_horizontal:n {\exp_not:o {\l__jlreq_after_space_tl} } }
     }}%
-    \jlreq at heading@make at l@{#1}{#2}{\jlreq at label@format}%
-    \edef\jlreq at do{%
-      \expandonce{\jlreq at result}%
+    \jlreq at heading@make at l@{#1}{#2}{\l__jlreq_label_format_tl}%
+    \cs_set:Nx \l__jlreq_do: {
+      \exp_not:o { \jlreq at result }
       % パラメータトークンを含むので,\edefして\unexpandedで包む
       \noexpand\edef\expandonce{\csname #1\endcsname}{%
         \noexpand\unexpanded{%
-          \noexpand\UseHook{jlreq/heading/before}%
-          \noexpand\UseHook{jlreq/heading/before/#1}%
-          \unexpanded{\jlreq at RuninHeading@start{#1}{#2}}{\ifjlreq at number\else -\fi}{\expandonce{\jlreq at label@format}}{\expandonce{\jlreq at format@wlabel}}{\expandonce{\jlreq at format@wolabel}}%
+          \exp_not:N \UseHook{jlreq/heading/before}%
+          \exp_not:N \UseHook{jlreq/heading/before/#1}
+          \exp_not:n {\jlreq at RuninHeading@start{#1}{#2}}
+            {\bool_if:NF \l__jlreq_number_bool {-}}
+            {\exp_not:o {\l__jlreq_label_format_tl}}
+            {\exp_not:o {\l__jlreq_format_wlabel_tl}}
+            {\exp_not:o {\l__jlreq_format_wolabel_tl}}
         }%
       }%
     }%
-  \expandafter\endgroup
-  \jlreq at do
+  \exp_after:wN \group_end:
+  \l__jlreq_do:
 }
-\newcommand*{\NewRuninHeading}[3]{%
+
+\NewDocumentCommand{\NewRuninHeading}{ m m +m }{
   \expandafter\@ifdefinable\csname #1\endcsname{\DeclareRuninHeading{#1}{#2}{#3}}%
 }
-\newcommand*{\RenewRuninHeading}[3]{%
+\NewDocumentCommand{\RenewRuninHeading}{ m m +m }{%
   \@ifundefined{#1}{\@latex at error{\expandafter\string\csname#1\endcsname\space undefined}\@ehc}{\DeclareRuninHeading{#1}{#2}{#3}}%
 }
-\newcommand*{\ProvideRuninHeading}[3]{%
+\NewDocumentCommand{\ProvideRuninHeading}{ m m +m }{%
   \@ifundefined{#1}{\DeclareRuninHeading{#1}{#2}{#3}}{}%
 }
 
 %.. 窓見出し
-\def\jlreq at CutinHeading@start#1#2#3#4#5#6#7{%
+\cs_set:Nn \__jlreq_CutinHeading_start:nnnnnnn {
   \if at noskipsec\leavevmode\fi
   \par
-  \jlreq at if{\ifnum\hangafter=1 \fi}{%
-    \jlreq at CutinHeading@start@{#2}{#3}{#4}{#5}{#6}{#7}%
+  \int_compare:nTF { \hangafter=1 } {
+    \__jlreq_CutinHeading_start_aux:nnnnnn{#2}{#3}{#4}{#5}{#6}{#7}%
   }{%
-    \ClassError{jlreq}{Can not use \expandafter\string\csname#1\endcsname\space here}{\@ehc}%
+    \ClassError{jlreq}{Can~not~use~\expandafter\string\csname#1\endcsname\space here}{\@ehc}%
   }%
 }
 % 1 = 書式指定,2 = インデント, 3 = 見出しと本文の間, 4 = これを越えたら二行以上,5 = これを越えたら三行以上,6 = テキスト
-\def\jlreq at CutinHeading@start@#1#2#3#4#5#6{%
+\cs_set:Nn \__jlreq_CutinHeading_start_aux:nnnnnn{%
   % 一行で処理したときの見出し長さを計測
-  \begingroup
-    \setbox\@tempboxa=\hbox{#1#6}%
-    \@tempdima=\wd\@tempboxa
-    % 何行必要かを\jlreq at CutinHeading@linecountに入れる
-    \ifdim\@tempdima>#5\def\jlreq at CutinHeading@linecount{3}%
-    \else\ifdim\@tempdima>#4\def\jlreq at CutinHeading@linecount{2}%
-    \else\def\jlreq at CutinHeading@linecount{1}\fi\fi
-    % \@tempdimaが実際の一行の長さに近い
-    \divide\@tempdima by \jlreq at CutinHeading@linecount
-    % \jlreq at resultboxに見出し部分を,\jlreq at CutinHeading@linecountに見出し自身に何行使うかを入れる
-    \ifnum\jlreq at CutinHeading@linecount=1\relax
-      \setbox\jlreq at resultbox=\vbox{\parindent=0pt\rightskip=0pt\leftskip=0pt\hbox{#1#6}}%
-      \def\jlreq at CutinHeading@linecount{2}%
-    \else
-      \jlreq at inlinenote@determinelength{#6}{#1}{}{\jlreq at CutinHeading@linecount}{\jlreq at CutinHeading@linecount}{\@tempdima}{\linewidth}%
-      \def\jlreq at CutinHeading@linecount{3}%
-    \fi
+  \group_begin:
+    \hbox_set:Nn \l_jlreq_tmpa_box {#1#6}
+    \dim_set:Nn \l_jlreq_tmpa_dim { \box_wd:N \l_jlreq_tmpa_box}
+    % 何行必要かを\l__jlreq_cutinheading_linecount_tlに入れる
+    \dim_compare:nTF { \l_jlreq_tmpa_dim > #5} {
+      \tl_set:Nn \l__jlreq_cutinheading_linecount_tl {3}
+    }{
+      \dim_compare:nTF { \l_jlreq_tmpa_dim > #4 }{
+        \tl_set:Nn \l__jlreq_cutinheading_linecount_tl {2}
+      } { \tl_set:Nn \l__jlreq_cutinheading_linecount_tl {1} } }
+    % \l_jlreq_tmpa_dimが実際の一行の長さに近い
+    \dim_set:Nn \l_jlreq_tmpa_dim { \l_jlreq_tmpa_dim / \l__jlreq_cutinheading_linecount_tl }
+    % \l_jlreq_tmpb_boxに見出し部分を,\l__jlreq_cutinheading_linecount_tlに見出し自身に何行使うかを入れる
+    \int_compare:nTF { \l__jlreq_cutinheading_linecount_tl = 1 }{
+      \vbox_set:Nn \l_jlreq_tmpb_box {\parindent=0pt\rightskip=0pt\leftskip=0pt\hbox_unpack_drop:N \l_jlreq_tmpa_box}
+      \tl_set:Nn \l__jlreq_cutinheading_linecount_tl {2}
+    }{
+      \jlreq at inlinenote@determinelength{#6}{#1}{}{\l__jlreq_cutinheading_linecount_tl}{\l__jlreq_cutinheading_linecount_tl}{\l_jlreq_tmpa_dim}{\linewidth}%
+      \box_set_eq:NN \l_jlreq_tmpb_box \jlreq at resultbox
+      \tl_set:Nn \l__jlreq_cutinheading_linecount_tl {3}
+    }
     % 普通の一行の高さ/深さに合わせて見出しのボックスを作る
-    \setbox\@tempboxa=\vtop to \dimexpr\numexpr\jlreq at CutinHeading@linecount - 1\relax\baselineskip + 1\jlreq at zh\relax{\vskip 0pt plus 1fill minus 1fill \box\jlreq at resultbox\vskip 0pt plus 1fill minus 1fill}%
+    \setbox\l_jlreq_tmpa_box =\vtop to \dimexpr\numexpr\l__jlreq_cutinheading_linecount_tl - 1\relax\baselineskip + 1\jlreq at zh\relax{\skip_vertical:n {0pt~plus~1fill~minus~1fill} \box_use_drop:N \l_jlreq_tmpb_box \skip_vertical:n {0pt~plus~1fill~minus~1fill}}%
     % 高さを通常の一行のそれにする
-    \setbox\jlreq at tempboxa=\hbox{阿}%
-    \dp\@tempboxa=\dimexpr\ht\@tempboxa + \dp\@tempboxa - \ht\jlreq at tempboxa\relax
-    \ht\@tempboxa=\ht\jlreq at tempboxa
+    \hbox_set:Nn \l_jlreq_tmpc_box {阿}
+    \box_set_dp:Nn \l_jlreq_tmpa_box { \box_ht:N \l_jlreq_tmpa_box + \box_dp:N \l_jlreq_tmpa_box - \box_ht:N \l_jlreq_tmpc_box }
+    \box_set_ht:Nn \l_jlreq_tmpa_box { \box_ht:N \l_jlreq_tmpc_box }
     \noindent
     \hspace*{#2}%
-    \copy\@tempboxa
+    \box_use:N \l_jlreq_tmpa_box
     \hspace*{#3}%
     % でかい見出しボックスの分をキャンセルする空きを入れる
-    % \baselineskip - \ht\jlreq at tempboxaはTeXが挿入するスキップの分
-    \edef\jlreq at do{%
-      \noexpand\par
-      \noexpand\vskip -\the\dimexpr\ht\@tempboxa + \dp\@tempboxa + \baselineskip - \ht\jlreq at tempboxa\relax\relax
-      \noexpand\hangindent=\the\dimexpr#2 + \wd\@tempboxa + #3\relax\relax
-      \noexpand\hangafter=-\jlreq at CutinHeading@linecount\relax
+    % \baselineskip - box_ht:N \l_jlreq_tmpc_boxはTeXが挿入するスキップの分
+    \cs_set:Nx \l__jlreq_do:{
+      \exp_not:N \par
+      \exp_not:N \skip_vertical:n {\dim_eval:n {-\box_ht:N \l_jlreq_tmpa_box - \box_dp:N \l_jlreq_tmpa_box - \baselineskip + \box_ht:N \l_jlreq_tmpc_box}}
+      \exp_not:N\hangindent= \dim_eval:n {#2 + \box_wd:N \l_jlreq_tmpa_box + #3} \exp_not:N \relax
+      \exp_not:N\hangafter=-\l__jlreq_cutinheading_linecount_tl\relax
     }%
-  \expandafter\endgroup
-  \jlreq at do
-  \prevdepth=0pt
+  \exp_after:wN \group_end:
+  \l__jlreq_do:
+  \prevdepth=0pt\relax
   % 改段落が起こっても\hang****をキープするように\parを書き換えておく(終わったら元に戻す).
   \def\par{%
     \ifvmode\jlreq at tempatrue\else\jlreq at tempafalse\fi
@@ -2977,50 +2947,52 @@
   \ignorespaces
 }
 
-\newcommand*{\DeclareCutinHeading}[3]{%
-  \IfHookExistsTF{jlreq/heading/before/#1}{}{\NewHook{jlreq/heading/before/#1}}%
-  \expandafter\def\csname jlreq at heading@level@#1\endcsname{#2}%
-  \expandafter\def\csname jlreq at heading@setting@#1\endcsname{#3}%
-  \expandafter\def\csname jlreq at heading@type@#1\endcsname{\RenewCutinHeading}%
-  \begingroup
-    \def\jlreq at fontcommand{\sffamily\gtfamily\bfseries}%
-    \def\jlreq at onelinemax{6\jlreq at zw}%
-    \def\jlreq at twolinemax{20\jlreq at zw}%
-    \def\jlreq at indent{0pt}%
-    \def\jlreq at after@space{1\jlreq at zw}%
-    \jlreq at parsekeyval[CutinHeading:#1]{
-      {font}{\def\jlreq at fontcommand{##1}}
-      {onelinemax}{\def\jlreq at onelinemax{##1}}
-      {twolinemax}{\def\jlreq at twolinemax{##1}}
-      {indent}{\def\jlreq at indent{##1}}
-      {after_space}{\def\jlreq at after@space{##1}}
-    }{#3}%
-    \ifthenelse{\lengthtest{\jlreq at after@space < 0.99\jlreq at zw} \OR \lengthtest{\jlreq at after@space > 2.01\jlreq at zw}}{%
-      \jlreq at note{窓見出しと本文との空き量は,基本版面の文字サイズの全角以上,2倍未満とする (4.1.10.c).}%
+\NewDocumentCommand{\DeclareCutinHeading}{ m m +m }{
+  \hook_provide:n { jlreq/heading/before/#1 }
+  \expandafter\def\csname jlreq at heading@level@#1\endcsname{#2}
+  \expandafter\def\csname jlreq at heading@setting@#1\endcsname{#3}
+  \expandafter\def\csname jlreq at heading@type@#1\endcsname{\RenewCutinHeading}
+  \group_begin:
+    \keys_define:nn { CutinHeading:#1 } {
+      font .tl_set:N = \l__jlreq_fontcommand_tl,
+      onelinemax .tl_set:N = \l__jlreq_onelinemax_tl,
+      twolinemax .tl_set:N = \l__jlreq_twolinemax_tl,
+      indent .tl_set:N = \l__jlreq_indent_tl,% 0pt
+      after_space .tl_set:N = \l__jlreq_after_space_tl,
+    }
+    \keys_set:nn { CutinHeading:#1 } {
+      font = { \sffamily\gtfamily\bfseries },
+      onelinemax = { 6\jlreq at zw },
+      twolinemax = { 20\jlreq at zw } ,
+      indent = { 0pt },
+      after_space = { 1\jlreq at zw }
+    }
+    \keys_set:nn { CutinHeading:#1 } {#3}
+    \bool_if:nT { \dim_compare_p:n {\l__jlreq_after_space_tl < 0.99\jlreq at zw} || \dim_compare_p:n { \l__jlreq_after_space_tl > 2.01\jlreq at zw } }{
+      \jlreq at note{窓見出しと本文との空き量は,基本版面の文字サイズの全角以上,2倍未満とする~(4.1.10.c).}%
     }{}%
-    \edef\jlreq at do{%
-      \noexpand\def\expandonce{\csname #1\endcsname}{%
-        \noexpand\UseHook{jlreq/heading/before}%
-        \noexpand\UseHook{jlreq/heading/before/#1}%
-        \noexpand\jlreq at CutinHeading@start{#1}{\expandonce{\jlreq at fontcommand}}{\expandonce{\jlreq at indent}}{\expandonce{\jlreq at after@space}}{\expandonce{\jlreq at onelinemax}}{\expandonce{\jlreq at twolinemax}}%
-      }%
-    }%
-  \expandafter\endgroup
-  \jlreq at do
+    \cs_set:Nx \l__jlreq_do: {
+      \exp_not:N \DeclareDocumentCommand \exp_not:c {#1} {m} {
+        \exp_not:N \UseHook{jlreq/heading/before}%
+        \exp_not:N \UseHook{jlreq/heading/before/#1}%
+        \exp_not:N \__jlreq_CutinHeading_start:nnnnnnn{#1}{\exp_not:o \l__jlreq_fontcommand_tl}{\exp_not:o \l__jlreq_indent_tl}{\exp_not:o \l__jlreq_after_space_tl}{\exp_not:o \l__jlreq_onelinemax_tl}{\exp_not:o \l__jlreq_twolinemax_tl}{####1}
+      }
+    }
+  \exp_after:wN \group_end:
+  \l__jlreq_do:
 }
-\newcommand*{\NewCutinHeading}[3]{%
+\NewDocumentCommand{\NewCutinHeading} { m m +m } {%
   \expandafter\@ifdefinable\csname #1\endcsname{\DeclareCutinHeading{#1}{#2}{#3}}%
 }
-\newcommand*{\RenewCutinHeading}[3]{%
+\NewDocumentCommand{\RenewCutinHeading} { m m +m } {%
   \@ifundefined{#1}{\@latex at error{\expandafter\string\csname#1\endcsname\space undefined}\@ehc}{\DeclareCutinHeading{#1}{#2}{#3}}%
 }
-\newcommand*{\ProvideCutinHeading}[3]{%
+\NewDocumentCommand{\ProvideCutinHeading} { m m +m } {%
   \@ifundefined{#1}{\DeclareCutinHeading{#1}{#2}{#3}}{}%
 }
 
-\ExplSyntaxOn
-\NewDocumentCommand{\ModifyHeading}{m m}{
-  \@ifundefined { jlreq at heading@setting@#1 } { \ClassError{jlreq}{Unknown heading: #1}{\@ehc} } {}
+\NewDocumentCommand{\ModifyHeading}{m +m}{
+  \@ifundefined { jlreq at heading@setting@#1 } { \ClassError{jlreq}{Unknown~heading:~#1}{\@ehc} } {}
   \group_begin:
     \tl_set:Nn \l_jlreq_tmpa_tl {#2}
     \str_set:Nn \l_jlreq_tmpa_str {#2}
@@ -3045,16 +3017,15 @@
   \exp_after:wN \group_end:
   \l_jlreq_do:
 }
-\ExplSyntaxOff
 % 見出し#1をマクロ#2に保存する
-\newcommand{\SaveHeading}[2]{%
-  \@ifundefined{jlreq at heading@setting@#1}{\ClassError{jlreq}{Unknown heading: #1}{\@ehc}}{}%
+\NewDocumentCommand{\SaveHeading}{ m m }{%
+  \@ifundefined{jlreq at heading@setting@#1}{\ClassError{jlreq}{Unknown~heading:~#1}{\@ehc}}{}%
   \edef#2{%
     \csexpandonce{jlreq at heading@type@#1}{\unexpanded{#1}}{\csexpandonce{jlreq at heading@level@#1}}{\csexpandonce{jlreq at heading@setting@#1}}%
   }%
 }
 
-\newcommand*{\jlreq at keepbaselineskip}[1]{%
+\def\jlreq at keepbaselineskip#1{%
   \begingroup
     \edef\jlreq at do{\unexpanded{#1}\noexpand\baselineskip=\the\baselineskip}%
   \expandafter\endgroup
@@ -3061,7 +3032,7 @@
   \jlreq at do
 }
 
-\newcommand*{\jlreq at HeadingType}[1]{%
+\def\jlreq at HeadingType#1{%
   \ifcsname jlreq at heading@type@#1\endcsname
     \jlreq at HeadingType@{#1}{\RenewTobiraHeading}{TobiraHeading}{%
     \jlreq at HeadingType@{#1}{\RenewBlockHeading}{BlockHeading}{%
@@ -3072,31 +3043,15 @@
     UndefinedHeading%
   \fi
 }
-\newcommand*{\jlreq at HeadingType@}[2]{%
+\def\jlreq at HeadingType@#1#2{%
   \jlreq at if{\expandafter\expandafter\expandafter\ifx\csname jlreq at heading@type@#1\endcsname#2\fi}%
 }
 
 % 全ての見出しにマクロ#1を適用する.
 \def\jlreq at heading@execmacro at toallheadings#1{%
-  \begingroup
-    \def\jlreq at do{}%
-    \ifx\jlreq at heading@allheadings\@undefined
-      \jlreq at heading@execmacro at toallheadings@{#1}{chapter,part,section,subsection,subsubsection,paragraph,subparagraph}%
-    \else
-      \def\@tempa{\jlreq at heading@execmacro at toallheadings@{#1}}%
-      \expandafter\@tempa\expandafter{\jlreq at heading@allheadings}%
-    \fi
-  \expandafter\endgroup
-  \jlreq at do
+  \seq_map_inline:Nn \l__jlreq_heading_allheadings_seq { #1{##1} }
 }
 
-\def\jlreq at heading@execmacro at toallheadings@#1#2{
-  \@for\jlreq at tempa:=#2\do{%
-    \@ifundefined{\jlreq at tempa}{}{%
-      \eappto\jlreq at do{\noexpand#1{\expandonce{\jlreq at tempa}}}%
-    }%
-  }%
-}
 \def\jlreq at clearheadingmarks#1{%
   \@ifundefined{#1mark}{}{%
     \expandafter\let\csname#1mark\endcsname=\@gobble
@@ -3120,13 +3075,13 @@
 %. 注
 % 文字サイズは6ポイントくらい(4.2.3.a)とりあえす\scriptsize
 %.. 合印(4.2.3)
-\newcommand*\jlreq at referencemark@format[1]{#1}
+\newcommand*{\jlreq at referencemark@format}[1]{#1}
 \newif\ifjlreqadjustreferencemark
 \jlreqadjustreferencemarktrue
-\ExplSyntaxOn
-\jlreq at jlreqsetup@add{reference_mark}[inline,interlinear]{
-  \def\jlreq at referencemark{#1}
-  \str_if_eq:VnTF \jlreq at referencemark { inline } {
+\keys_define:nn { jlreqsetup } {
+  reference_mark .choice:,
+  reference_mark / inline .code:n = {
+    \def\jlreq at referencemark{#1}
     \def\jlreq at notemark##1{%
       \jlreq at ifydir{%
         \hbox{}\hbox{\@textsuperscript{\normalfont\jlreq at referencemark@format{##1}}}\hbox{}%
@@ -3148,7 +3103,9 @@
       }%
       \noexpand\jlreq at if{\noexpand\ifnum 0\expandonce{\@tempa}>0~\noexpand\fi}{}{\noexpand\inhibitglue}%
     }
-  }{% reference_mark=interlinear
+  },
+  reference_mark / interlinear .code:n = {
+    \def\jlreq at referencemark{#1}
     \def\jlreq at notemark##1{{%
       \setbox\@tempboxa=\hbox{\scriptsize\jlreq at referencemark@format{##1}}%
       \@tempdima=\wd\@tempboxa
@@ -3178,7 +3135,6 @@
     \def\jlreq at hook@postnote{\jlreq at fixjfm}
   }
 }
-\ExplSyntaxOff
 % \@footnotemarkをシンプルなものにする
 \def\jlreq at setdefaultnotemark#1#2{%
   \def#1{%
@@ -3211,51 +3167,51 @@
 \jlreq at do
 
 % インデントの計算:脚注の長さが文字の整数倍になるように字下げする(4.2.5.b)
-\jlreq at jlreqsetup@add{footnote_indent}{%
-  \if at tate\else
-    \ifdim\dimexpr#1\relax=0pt \else\jlreq at note{脚注は,一般にその前に区切りのための罫線を挿入するので,字下げは行わなくてよい(4.2.5.b).}\fi
-  \fi
-  \begingroup
-    \footnotesize
-    \jlreq at footnoteindent=\dimexpr#1\relax
-    \@tempdima=\dimexpr\textwidth - \jlreq at footnoteindent\relax
-    \@tempdimb=1\jlreq at zw
-    \divide\@tempdima\@tempdimb \multiply\@tempdima\@tempdimb
-    \edef\jlreq at do{\noexpand\jlreq at footnoteindent=\the\dimexpr\textwidth - \@tempdima\relax}%
-  \expandafter\endgroup
-  \jlreq at do
+\keys_define:nn { jlreqsetup } {
+  footnote_indent .code:n = {
+    \bool_if:nT { \legacy_if_p:n { @tate } && \dim_compare_p:n { #1 = 0pt } } {
+      \jlreq at note{脚注は,一般にその前に区切りのための罫線を挿入するので,字下げは行わなくてよい(4.2.5.b).}
+    }
+    \begingroup
+      \footnotesize
+      \jlreq at footnoteindent=\dimexpr#1\relax
+      \@tempdima=\dimexpr\textwidth - \jlreq at footnoteindent\relax
+      \@tempdimb=1\jlreq at zw
+      \divide\@tempdima\@tempdimb \multiply\@tempdima\@tempdimb
+      \edef\jlreq at do{\noexpand\jlreq at footnoteindent=\the\dimexpr\textwidth - \@tempdima\relax}%
+    \expandafter\endgroup
+    \jlreq at do
+  }
 }
 
 \newcommand{\@makefntext}[1]{\jlreq at makefntext{#1}}
-\ExplSyntaxOn
-\jlreq at jlreqsetup@add{footnote_second_indent}{%
-  \legacy_if:nF { @tate }{
-    \bool_if:nF {
-      ( \dim_compare_p:n {  0.99\jlreq at zw < \dimexpr #1\relax } && \dim_compare_p:n { \dimexpr #1\relax < 1.01\jlreq at zw  } ) ||
-      ( \dim_compare_p:n { -1.01\jlreq at zw < \dimexpr #1\relax } && \dim_compare_p:n { \dimexpr #1\relax < -0.99\jlreq at zw } )
-    }{\jlreq at note{脚注が2行以上となった場合,脚注の2行目以下の字下げを1行目より,脚注の文字サイズの全角アキとするか,逆に,1行目の字下げを2行目より,脚注の文字サイズの全角アキとする (4.2.5.d).}}
+\keys_define:nn { jlreqsetup } {
+  footnote_second_indent .code:n = {
+    \legacy_if:nF { @tate }{
+      \bool_if:nF {
+        ( \dim_compare_p:n {  0.99\jlreq at zw < #1 } && \dim_compare_p:n { #1 < 1.01\jlreq at zw  } ) ||
+        ( \dim_compare_p:n { -1.01\jlreq at zw < #1 } && \dim_compare_p:n { #1 < -0.99\jlreq at zw } )
+      }{\jlreq at note{脚注が2行以上となった場合,脚注の2行目以下の字下げを1行目より,脚注の文字サイズの全角アキとするか,逆に,1行目の字下げを2行目より,脚注の文字サイズの全角アキとする~(4.2.5.d).}}
+    }
+    \dim_compare:nTF { #1 < 0pt } {
+      \def\jlreq at makefntext{}
+    }{
+      \def\jlreq at makefntext{\addtolength{\leftskip}{\glueexpr #1\relax}}
+    }
+    \long\edef\jlreq at makefntext##1{\expandonce{\jlreq at makefntext}%
+      \unexpanded{%
+        \addtolength{\leftskip}{\jlreq at footnoteindent}%
+        \parindent=1\jlreq at zw
+        \noindent
+        \hskip-\glueexpr #1\relax
+        \jlreq at referencemark@format{\@thefnmark}%
+        \hskip\glueexpr 1\jlreq at zw\relax
+      }##1%
+    }
   }
-  \ifdim\dimexpr #1\relax<0pt
-    \def\jlreq at makefntext{}
-  \else
-    \def\jlreq at makefntext{\addtolength{\leftskip}{\glueexpr #1\relax}}
-  \fi
-  \long\edef\jlreq at makefntext##1{\expandonce{\jlreq at makefntext}%
-    \unexpanded{%
-      \addtolength{\leftskip}{\jlreq at footnoteindent}%
-      \parindent=1\jlreq at zw
-      \noindent
-      \hskip-\glueexpr #1\relax
-      \jlreq at referencemark@format{\@thefnmark}%
-      \hskip\glueexpr 1\jlreq at zw\relax
-    }##1%
-  }
 }
-\ExplSyntaxOff
 
-\jlreq at jlreqsetup@add{footnotetext_indent}{
-  \ClassWarningNoLine{jlreq}{footnotetext_indent was removed}
-}
+\keys_define:nn { jlreqsetup } { footnotetext_indent .code:n = {\ClassWarningNoLine{jlreq}{footnotetext_indent~was~removed} } }
 
 \ifx l\jlreq at engine
   \fnfixbottomtrue
@@ -3300,7 +3256,6 @@
   \let\footnotetext=\jlreq at temporary@saved at footnotetext
 }
 
-\ExplSyntaxOn
 \bool_if:nTF { \legacy_if_p:n { @tate } && (\legacy_if_p:n { @twoside } || \legacy_if_p:n { @twocolumn }) }{
   % 縦組の傍注は,その見開き内に付いている合印に対応する注を,奇数ページの左端にそろえて配置する.多段組では最下段の左端にそろえて配置する.(4.2.6.a)
   % 必要ならば\footnoteを\footnotemarkと\footnotetextにわけ,\footnotetextをアウトプット時まで遅延することで実現する.
@@ -3324,7 +3279,7 @@
       \def\jlreq at footnote@delayfootnote at page{%
         \jlreq at setcurrentpage
         \jlreq at resultcnt=\numexpr\jlreq at currentpage\relax
-        \ifnum\jlreq at resultcnt=\value{page}\if at firstcolumn\else\jlreq at resultcnt=-1 \fi\fi
+        \ifnum\jlreq at resultcnt=\value{page}\if at firstcolumn\else\jlreq at resultcnt=-1~\fi\fi
       }
     \fi
     \long\def\jlreq at footnote@delayfootnote at delay#1#2{%
@@ -3374,7 +3329,7 @@
         \def\jlreq at result{}#2[#4]\jlreq at result
         \def\jlreq at result{}#3[#4]{#5}%
         \jlreq at restore@jlreq at footnotes}%
-        \jlreq at if{\ifnum\jlreq at resultcnt=-1 \fi}{\noexpand\jlreq at result}{\unexpanded{%
+        \int_compare:nTF { \jlreq at resultcnt=-1 }{\noexpand\jlreq at result}{\unexpanded{%
           \xappto\jlreq at footnote@delayfootnoteslist{%
             \noexpand\jlreq at footnote@delayfootnote{\the\jlreq at resultcnt}{%
               \noexpand\jlreq at restore@original at footnotes
@@ -3421,7 +3376,6 @@
     \jlreq at hook@postnote
   }
 }
-\ExplSyntaxOff
 
 % 合印
 \renewcommand*{\@makefnmark}{%
@@ -3428,12 +3382,12 @@
   \jlreq at ifydir{\jlreq at notemark{\@thefnmark}}{\hbox{\jlreq at notemark{\@thefnmark}}}%
 }
 % 4.2.2注3
-\if at tate
+\legacy_if:nTF { @tate } {
   \renewcommand*{\thefootnote}{\jlreq at open@bracket at before@space\inhibitglue(\tatechuyoko*{\@arabic\c at footnote})\inhibitglue}
-\else
+}{
   \renewcommand*{\thefootnote}{\arabic{footnote}\hbox{})\inhibitglue}
-\fi
-\ifthenelse{\equal{\jlreq at article@type}{article}}{}{\@addtoreset{footnote}{chapter}}
+}
+\str_if_eq:VnF \jlreq at article@type { article } { \@addtoreset{footnote}{chapter} }
 
 
 %.. 後注(4.2.4)
@@ -3522,12 +3476,16 @@
 }
 % 4.2.4.b
 \jlreq at endnote@indent=2\jlreq at mol
-\jlreq at jlreqsetup@add{endnote_second_indent}{
-  \def\jlreq at endnote@second at indent{#1}
-  \ifthenelse{
-    \( \lengthtest{0.99\jlreq at zw < #1} \AND \lengthtest{#1 < 1.01\jlreq at zw} \) \OR 
-    \( \lengthtest{1.99\jlreq at zw < #1} \AND \lengthtest{#1 < 2.01\jlreq at zw} \)
-  }{}{\jlreq at note{後注が2行以上となった場合,後注の2行目以下の字下げは,1行目より,後注の文字サイズの2倍又は全角とする (4.2.4.d).}}
+\keys_define:nn { jlreqsetup } { 
+  endnote_second_indent .code:n = {
+    \def\jlreq at endnote@second at indent{#1}
+    \bool_if:nTF {
+      ( \dim_compare_p:n { 0.99\jlreq at zw < #1 } && \dim_compare_p:n { #1 < 1.01\jlreq at zw } ) ||
+      ( \dim_compare_p:n { 1.99\jlreq at zw < #1 } && \dim_compare_p:n { #1 < 2.01\jlreq at zw } )
+    } {} {
+      \jlreq at note{後注が2行以上となった場合,後注の2行目以下の字下げは,1行目より,後注の文字サイズの2倍又は全角とする (4.2.4.d).}
+    }
+  }
 }
 \newcommand{\@makeendtext}[1]{%
   \csname\jlreq at endnotemarkname\endcsname
@@ -3537,48 +3495,49 @@
 \let\@makeendmark=\@makefnmark
 
 % \theendnoteの出力を仕込む
-\jlreq at jlreqsetup@add{endnote_position}{
-  \AddToHook{jlreq/heading/before}[jlreq/endnote]{}
-  \RemoveFromHook{jlreq/heading/before}[jlreq/endnote]
-  \jlreq at tempafalse % headingsが指定された
-  \jlreq at tempbfalse % paragraphが指定された
-  % \jlreq at tempcにセクション名たちを入れていく
-  \def\jlreq at tempc{}
-  \@for\jlreq at tempa:=#1\do{
-    \expandafter\jlreq at helper@trim\expandafter{\jlreq at tempa}{\jlreq at tempa}%
-    \jlreq at switch{\jlreq at tempa}{
-      {headings}{\jlreq at tempatrue}
-      {paragraph}{
-        \jlreq at tempatrue% _paragraphの時は_headingsも有効にする
-        \jlreq at tempbtrue
+\keys_define:nn { jlreqsetup } {endnote_position .code:n = {
+    \AddToHook{jlreq/heading/before}[jlreq/endnote]{}
+    \RemoveFromHook{jlreq/heading/before}[jlreq/endnote]
+    \jlreq at tempafalse % headingsが指定された
+    \jlreq at tempbfalse % paragraphが指定された
+    % \jlreq at tempcにセクション名たちを入れていく
+    \def\jlreq at tempc{}
+    \clist_map_variable:nNn {#1} \jlreq at tempa {
+      \expandafter\jlreq at helper@trim\expandafter{\jlreq at tempa}{\jlreq at tempa}%
+      \jlreq at switch{\jlreq at tempa}{
+        {headings}{\jlreq at tempatrue}
+        {paragraph}{
+          \jlreq at tempatrue% _paragraphの時は_headingsも有効にする
+          \jlreq at tempbtrue
+        }
+        {
+          \str_if_eq:eeTF { \str_head:N \jlreq at tempa } {_} {
+            \edef\jlreq at tempc{\jlreq at tempc,\expandafter\@gobble\jlreq at tempa}
+          }{
+            \ClassError{jlreq}{Invalid~value~\jlreq at tempa\space in~endnote_position}{\@ehc}
+          }
+        }
       }
-      {
-        \expandafter\jlreq at iffirsttoken@ignorespaces\expandafter{\jlreq at tempa}{_}{
-          \edef\jlreq at tempc{\jlreq at tempc,\expandafter\@gobble\jlreq at tempa}
-        }{
-          \ClassError{jlreq}{Invalid value \jlreq at tempa\space in endnote_position}{\@ehc}
+    }
+    
+    \ifjlreq at tempb
+      \edef\endnote{\unexpanded{\def\par{\@restorepar\theendnotes\par}}\expandonce{\jlreq at endnote@impl}}
+    \else
+      \let\endnote=\jlreq at endnote@impl
+    \fi
+
+    \ifjlreq at tempa
+      \AddToHook{jlreq/heading/before}[jlreq/endnote]{\theendnotes}
+    \else
+      \clist_map_variable:NNn \jlreq at tempc \@tempa {
+        \tl_if_empty:VF \@tempa {
+          \AddToHook{jlreq/heading/before/\@tempa}[jlreq/endnote]{}
+          \RemoveFromHook{jlreq/heading/before/\@tempa}[jlreq/endnote]
+          \AddToHook{jlreq/heading/before/\@tempa}[jlreq/endnote]{\theendnotes}
         }
       }
-    }
+    \fi
   }
-  
-  \ifjlreq at tempb
-    \edef\endnote{\unexpanded{\def\par{\@restorepar\theendnotes\par}}\expandonce{\jlreq at endnote@impl}}
-  \else
-    \let\endnote=\jlreq at endnote@impl
-  \fi
-
-  \ifjlreq at tempa
-    \AddToHook{jlreq/heading/before}[jlreq/endnote]{\theendnotes}
-  \else
-    \@for\@tempa:=\jlreq at tempc\do{
-      \ifx\@tempa\@empty\else
-        \AddToHook{jlreq/heading/before/\@tempa}[jlreq/endnote]{}
-        \RemoveFromHook{jlreq/heading/before/\@tempa}[jlreq/endnote]
-        \AddToHook{jlreq/heading/before/\@tempa}[jlreq/endnote]{\theendnotes}
-      \fi
-    }
-  \fi
 }
 \AtEndDocument{\theendnotes}
 
@@ -3591,7 +3550,7 @@
 % (1) では\sidenote[]{}を定義
 % (2) では\sidenote{見出し}{注中身}を定義
 % sidenote_length>0ptの時のみ定義する
-\jlreq at if{\ifdim\jlreq at sidenote@length>0pt \fi}
+\jlreq at if{\ifdim\jlreq at sidenote@length>0pt\relax\fi}
 {
   \def\jlreq at sidenotemarkname{@thefnmark}% 合印用番号を一時的に入れるマクロ名
   \long\def\@sidenotetext#1{%
@@ -3603,10 +3562,12 @@
   }
   \jlreq at setdefaultnotemark\@sidenotemark\@makesidemark
   \def\jlreq at sidenotecounter{footnote}% 傍注用のカウンタ名
-  \jlreq at jlreqsetup@add{sidenote_type}[number,symbol]{\def\jlreq at sidenote@type{#1}}
+  \keys_define:nn { jlreqsetup } {
+    sidenote_type .choices:nn = { number, symbol } { \def\jlreq at sidenote@type{#1} }
+  }
   \def\jlreq at sidenote@type{number}
-  \jlreq at jlreqsetup@addtofinally{
-    \ifthenelse{\equal{\jlreq at sidenote@type}{number}}{
+  \__jlreq_jlreqsetup_addtofinally:n {
+    \str_if_eq:VnT \jlreq at sidenote@type { number } {
       \def\sidenote{\jlreq at hook@prenote\@ifnextchar[{\jlreq at sidenote}{\jlreq at sidenote[]}}
       \def\sidenotemark{\jlreq at hook@prenote\@ifnextchar[{\jlreq at sidenotemark}{\jlreq at sidenotemark[]}}
       \def\sidenotetext{\@ifnextchar[{\jlreq at sidenotetext}{\jlreq at sidenotetext[]}}
@@ -3643,7 +3604,8 @@
         \long\def\@makesidetext#1{ \kern-1\jlreq at zw\csname\jlreq at sidenotemarkname\endcsname\hspace{0.5\jlreq at mol}#1}
       \fi
       \let\@makesidemark=\@makefnmark
-    }{% sidenote_type = symbol
+    }
+    \str_if_eq:VnT \jlreq at sidenote@type { symbol } {% sidenote_type = symbol
       \long\def\sidenote#1#2{\jlreq at sidenote{#1}{#2}}
       \def\sidenotemark#1{\jlreq at sidenotemark{#1}}
       \long\def\sidenotetext#1#2{\jlreq at sidenotetext{#1}{#2}}
@@ -3668,8 +3630,8 @@
       \apptocmd{\sidenotemark}{\jlreq at hook@postnote}{}{}
     }
   }
-  \jlreq at jlreqsetup@add{sidenote_symbol}{\def\jlreq at sidenote@defaultmark{#1}}
-  \jlreq at jlreqsetup@add{sidenote_keyword_font}{\def\jlreq at sidenote@keywordfont{#1}}
+  \keys_define:nn { jlreqsetup } { sidenote_symbol .tl_set:N = \jlreq at sidenote@defaultmark }
+  \keys_define:nn { jlreqsetup } { sidenote_keyword_font .tl_set:N = \jlreq at sidenote@keywordfont }
 }{}
 
 %.. 割注(3.4)
@@ -3676,12 +3638,12 @@
 \def\inlinenotesize{.6\jlreq at jafontsize} % 割注の文字サイズ
 \let\jlreq at inlinenote@autolinebreak=\\% 計測時は\linebreakより\\の方が安定する.悩ましい…….
 
-\newcommand{\jlreq at inlinenote@kakkofontsize}{%
+\def\jlreq at inlinenote@kakkofontsize{%
   \fontsize{\dimexpr\inlinenotesize * 2\relax}{\dimexpr \inlinenotesize * 2\relax}%
   \selectfont
 }
 
-\newcommand{\jlreq at inlinenote@fontsize}{%
+\def\jlreq at inlinenote@fontsize{%
   \fontsize{\inlinenotesize}{\inlinenotesize}%
   \selectfont
 }
@@ -3691,16 +3653,20 @@
 % \inlinenote*は自動で改行されない.\\で改行位置を指定する.
 \newif\ifjlreq at in@inlinenote
 \jlreq at in@inlinenotefalse
-\newcommand*{\jlreq at inlinenote@}[1]{%
-  \ifjlreq at in@inlinenote\ClassError{jlreq}{\string#1\space can't be nested}{\@ehc}\fi
+\NewDocumentCommand{\inlinenote}{ s m } {
+  \ifjlreq at in@inlinenote\ClassError{jlreq}{\string\inlinenote\space can't~be~nested}{\@ehc}\fi
   \jlreq at in@inlinenotetrue
   \ifvmode\leavevmode\fi
-  \@ifstar\jlreq at inlinenote@noauto\jlreq at inlinenote@auto
+  \IfBooleanTF {#1} { \jlreq at inlinenote@noauto {#2} } { \jlreq at inlinenote@auto {#2} }
 }
-\DeclareRobustCommand*{\inlinenote}{\jlreq at inlinenote@{\inlinenote}}
-\DeclareRobustCommand*{\warichu}{\jlreq at inlinenote@{\warichu}}
+\NewDocumentCommand{\warichu}{ s m } {
+  \ifjlreq at in@inlinenote\ClassError{jlreq}{\string\warichu\space can't~be~nested}{\@ehc}\fi
+  \jlreq at in@inlinenotetrue
+  \ifvmode\leavevmode\fi
+  \IfBooleanTF {#1} { \jlreq at inlinenote@noauto {#2} } { \jlreq at inlinenote@auto {#2} }
+}
 
-\newcommand*{\jlreq at inlinenote@auto}[1]{%
+\def\jlreq at inlinenote@auto#1{%
   % 割注初め括弧の前の場所を保存
   \jlreq at savepos@for at rest@linewidth
   % \jlreq at tempdimbに,現在行の残り長さを入れる
@@ -3730,10 +3696,10 @@
   \fi
   % \jlreq at parshapeargに\parshapeに指定する書式の最後以外を入れる.
   \ifnum\@tempcntb>2\relax
-    \edef\jlreq at parshapearg{0pt \the\jlreq at tempdimb\space 0pt \the\jlreq at tempdimb}%
+    \edef\jlreq at parshapearg{0pt~\the\jlreq at tempdimb\space 0pt~\the\jlreq at tempdimb}%
     \@tempcnta=4\relax
     \@whilenum\@tempcnta<\@tempcntb\do{%
-      \edef\jlreq at parshapearg{\jlreq at parshapearg\space 0pt \the\linewidth\space 0pt \the\linewidth}%
+      \edef\jlreq at parshapearg{\jlreq at parshapearg\space 0pt~\the\linewidth\space 0pt~\the\linewidth}%
       \advance\@tempcnta by 2\relax
     }%
     \setlength{\jlreq at tempdimc}{\dimexpr\jlreq at tempdimc - \jlreq at tempdimb - \linewidth * \numexpr(\@tempcntb - 4)/2\relax\relax}%
@@ -3755,10 +3721,10 @@
       \@tempcntb=1001\relax
     \fi
     \advance\@tempcntb by 2\relax
-    \edef\jlreq at parshapearg{\jlreq at parshapearg 0pt \the\jlreq at tempdimb 0pt \the\jlreq at tempdimb}%
+    \edef\jlreq at parshapearg{\jlreq at parshapearg~0pt~\the\jlreq at tempdimb~0pt~\the\jlreq at tempdimb}%
   }%
   \ifvoid\jlreq at resultbox
-    \ClassWarning{jlreq}{\string\warichu\space failed, may be a bug}%
+    \ClassWarning{jlreq}{\string\warichu\space failed,~may~be~a~bug}%
   \else
     \@tempcnta=0
     \splittopskip=0pt\relax
@@ -3769,7 +3735,7 @@
     \addtolength{\jlreq at tempdimb}{-\wd\@tempboxa}%
     \setbox\@tempboxa=\box\jlreq at resultbox
     \@whilenum\@tempcnta<\jlreq at inlinenote@lines\do{%
-      \ifnum\@tempcnta>0 \jlreq at inlinenote@autolinebreak\fi
+      \int_compare:nT { \@tempcnta > 0 } { \jlreq at inlinenote@autolinebreak }
       % \jlreq at tempdimaに今の行の長さを入れる
       \ifnum\@tempcnta<\numexpr\jlreq at inlinenote@lines - 2\relax
         \ifnum\@tempcnta=0\jlreq at tempdima=\jlreq at tempdimb
@@ -3804,7 +3770,7 @@
   \jlreq at inlinenote@endnote
 }
 
-\newcommand*{\jlreq at inlinenote@noauto}[1]{%
+\def\jlreq at inlinenote@noauto#1{%
   \setbox\jlreq at tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize\inhibitglue\jlreq at open@bracket at before@space(}%
   \inhibitglue\jlreq at box@putcenter\jlreq at tempboxa
   \jlreq at inlinenote@noauto@#1\\\jlreq at endmark\jlreq at endmark
@@ -3840,7 +3806,7 @@
   \jlreq at box@putcenter\@tempboxa
 }
 
-\newcommand{\jlreq at inlinenote@endnote}{%
+\def\jlreq at inlinenote@endnote{%
   \jlreq at in@inlinenotefalse
   {%
     \setbox\jlreq at tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize)}%
@@ -3856,7 +3822,7 @@
 % * それ以降はX
 % として整形した際に,#5行以内に収まる.
 % \jlreq at resultboxに整形結果を返す(垂直ボックス).見つからなかったらvoid.\globalに設定する.
-\newcommand{\jlreq at inlinenote@determinelength}[7]{%
+\def\jlreq at inlinenote@determinelength#1#2#3#4#5#6#7{%
   \begingroup
   %  \message{#1 の試行開始,行数 = #5, \the\dimexpr#6\relax から \the\dimexpr#7\relaxまで}%
     \@tempcnta=1\relax
@@ -3863,7 +3829,7 @@
     \def\@tempa{}%
     % 調整に使う行の\parshape指定を\@tempaに入れる.長さは\jlreq at tempdima.
     \@whilenum\@tempcnta<#4\do{%
-      \expandafter\def\expandafter\@tempa\expandafter{\@tempa 0pt \the\jlreq at tempdima}%
+      \expandafter\def\expandafter\@tempa\expandafter{\@tempa 0pt~\the\jlreq at tempdima}%
       \advance\@tempcnta by 1\relax
     }%
     \@tempcnta=0
@@ -3877,7 +3843,7 @@
         \setbox\@tempboxa=\vbox{#2%
           \vbadness=10000\hbadness=10000\vfuzz=\maxdimen\hfuzz=\maxdimen
           \parindent=0pt\leftskip=0pt\rightskip=0pt
-          \parshape #5 #3 \@tempa 0pt \the\maxdimen
+          \parshape #5~#3~\@tempa 0pt~\the\maxdimen
           #1\par\global\@tempcntb=\prevgraf}%
   %      \message{\string\jlreq at tempdima = \the\jlreq at tempdima で試行,行数は\the\@tempcntb , 書式 #5 #3 \@tempa 0pt \the\maxdimen}%
       \fi
@@ -3918,7 +3884,10 @@
 % 2.6.1.cの後半が前半と整合的でないように見える……
 % 柱:両柱と片柱(2.6.3)
 \@tempdima=\jlreq at speciallength{\jlreq at headfoot@sidemargin}
-\ifthenelse{\lengthtest{\@tempdima=0pt} \OR \(\lengthtest{0.99\zw < \@tempdima} \AND \lengthtest{\@tempdima < 1.01\zw}\)}{}{
+\bool_if:nTF {
+  \dim_compare_p:n { \@tempdima = 0pt } ||
+  ( \dim_compare_p:n { 0.99\jlreq at zw < \@tempdima } && \dim_compare_p:n { \@tempdima < 1.01\jlreq at zw} )
+} {} {
   \jlreq at note{ノンブルまたは柱は,基本版面の左右にそろえるか,全角アキだけ寄せた位置に配置する (2.6.1.b).}
 }
 
@@ -3925,17 +3894,17 @@
 %.. 場所指定解析
 % bottom-leftみたいなのを解釈する.入力の順番はどっちでも良いが,出力は<top/bottom><left/right>の順番
 % #1 = bottom-leftみたいなのを{bottom}{left}に変換し,#2に代入,#3はデフォルト値,出力形式で入れる
-\newcommand*{\jlreq at pagestyle@parse at position}[3]{%
+\def\jlreq at pagestyle@parse at position#1#2#3{%
   \jlreq at ifempty{#1}{\def#2{#3}}%
   {%
     \begingroup
       \jlreq at pagestyle@parse at position@#1-\jlreq at endmark
-      \ifthenelse{\equal{\jlreq at tempa}{fore}}{%
+      \str_if_eq:VnTF \jlreq at tempa { fore } {
         \expandafter\jlreq at pagestyle@parse at position@\jlreq at tempb-\jlreq at endmark
-        \ifthenelse{\equal{\jlreq at tempa}{edge}}{%
+        \str_if_eq:VnTF \jlreq at tempa { edge } {
           \def\jlreq at tempa{fore-edge}%
         }{%
-          \ClassError{jlreq}{Invalid position: fore-\jlreq at tempa}{\@ehc}%
+          \ClassError{jlreq}{Invalid~position:~fore-\jlreq at tempa}{\@ehc}%
         }%
       }{}%
       % \jlreq at tempcに縦方向を,\jlreq at tempdに横方向を入れる
@@ -3953,7 +3922,7 @@
 \def\jlreq at pagestyle@parse at position@#1-#2\jlreq at endmark{%
   \def\jlreq at tempa{#1}\def\jlreq at tempb{#2}%
   \jlreq at ifempty{#2}{%
-    \ifx\jlreq at tempb\@empty\ClassError{jlreq}{Invalid position: #1}{\@ehc}\fi
+    \ifx\jlreq at tempb\@empty\ClassError{jlreq}{Invalid~position:~#1}{\@ehc}\fi
   }{%
     \def\@tempa##1-\jlreq at endmark{\def\jlreq at tempb{##1}}%
     \@tempa#2\jlreq at endmark\relax
@@ -3960,7 +3929,7 @@
   }%
 }
 
-\newcommand*\jlreq at pagestyle@parse at position@@[1]{%
+\def\jlreq at pagestyle@parse at position@@#1{%
   \jlreq at switch{#1}{
     {top}{\def\jlreq at tempc{#1}}
     {bottom}{\def\jlreq at tempc{#1}}
@@ -3970,16 +3939,16 @@
     {gutter}{\if at tate\def\jlreq at tempd{right}\else\def\jlreq at tempd{left}\fi}
     {fore_edge}{\if at tate\def\jlreq at tempd{left}\else\def\jlreq at tempd{right}\fi}
     {fore-edge}{\if at tate\def\jlreq at tempd{left}\else\def\jlreq at tempd{right}\fi}
-    {\ClassError{jlreq}{Invalid position: #1}{\@ehc}}
+    {\ClassError{jlreq}{Invalid~position:~#1}{\@ehc}}
   }%
 }
 
 % レベル#1より低いレベルの見出しの**markを\markboth{}{}にする
 \def\jlreq at pagestyle@setclearmark#1{%
-  \@for\@tempa:=\jlreq at heading@allheadings\do{%
-    \@ifundefined{\@tempa}{}{%
-      \@ifundefined{jlreq at heading@level@\@tempa}{}{%
-        \ifnum\csname jlreq at heading@level@\@tempa\endcsname<#1\relax\expandafter\def\csname\@tempa mark\endcsname##1{\markboth{}{}}\fi
+  \seq_map_inline:Nn \l__jlreq_heading_allheadings_seq {
+    \@ifundefined{##1}{}{%
+      \@ifundefined{jlreq at heading@level@##1}{}{%
+        \ifnum\csname jlreq at heading@level@##1\endcsname<#1\relax\expandafter\def\csname##1 mark\endcsname####1{\markboth{}{}}\fi
       }%
     }%
   }%
@@ -4034,14 +4003,14 @@
 % #1 at heading@levelにレベルを入れる
 \def\jlreq at pagestyle@setmark#1#2#3#4#5{%
   \begingroup
-    \expandafter\jlreq at iffirsttoken\expandafter{#1}{_}{%
-      \ifthenelse{\equal{#3}{odd}}{\let\jlreq at leftright=r}{\let\jlreq at leftright=l}%
+    \str_if_eq:eeTF {\str_head:N #1} {_} {
+      \str_if_eq:nnTF {#3} { odd } { \let\jlreq at leftright=r } { \let\jlreq at leftright=l }
       \edef\jlreq at do{%
         \unexpanded{\def#1}{%
           \ifx l\jlreq at leftright
-            \ifnum#2=0 \noexpand\leftmark\else\unexpanded{\jlreq at extraleftmark{#2}}\fi
+            \int_compare:nTF { #2 = 0 } { \exp_not:N \leftmark } { \exp_not:n {\jlreq at extraleftmark{#2}} }
           \else
-            \ifnum#2=0 \noexpand\rightmark\else\unexpanded{\jlreq at extrarightmark{#2}}\fi
+            \int_compare:nTF { #2 = 0 } { \exp_not:N \rightmark } { \exp_not:n {\jlreq at extrarightmark{#2}} }
           \fi
         }%
       }%
@@ -4052,7 +4021,7 @@
       \eappto\jlreq at do{%
         \noexpand\let\expandonce{\csname\expandafter\@gobble\string #1 at heading@level\endcsname}=\expandonce{\csname jlreq at heading@level@\jlreq at headingname\endcsname}%
         \unexpanded{\def#5}{\expandonce{#5},\expandonce{\jlreq at headingname}}%
-        \noexpand\appto\expandonce{\csname #4@\jlreq at headingname\endcsname}{{{\ifnum#2=0 #3\fi}{#2}{\ifx r\jlreq at leftright r\else l\fi}}}%
+        \noexpand\appto\expandonce{\csname #4@\jlreq at headingname\endcsname}{{{\int_compare:nT {#2=0} {#3}}{#2}{\ifx r\jlreq at leftright r\else l\fi}}}%
       }%
     }{\def\jlreq at do{}}%
   \expandafter\endgroup
@@ -4065,7 +4034,7 @@
 % #4: {{mark_formatからさらに調べるやつ (odd|even)}{マークの何番目か.extraでない場合は0}{l or r(leftかrightか)}}の並び
 \def\jlreq at pagestyle@make at headingmark#1#2#3#4{%
   \begingroup
-    \@for\jlreq at i:=0,1,2\do{%
+    \clist_map_variable:nNn {0,1,2} \jlreq at i {
       \expandafter\def\csname jlreq at leftmark@\jlreq at i\endcsname{}%
       \expandafter\def\csname jlreq at rightmark@\jlreq at i\endcsname{}%
     }%
@@ -4079,7 +4048,7 @@
     \else
       \eappto\jlreq at do{\jlreq at ifempty{#1}{\noexpand\markboth}{\noexpand\jlreq at markboth}{\csexpandonce{jlreq at leftmark@0}}{\csexpandonce{jlreq at rightmark@0}}}%
     \fi
-    \@for\jlreq at i:=1,2\do{%
+    \clist_map_variable:nNn {1,2} \jlreq at i {
       \expandafter\ifx\csname jlreq at leftmark@\jlreq at i\endcsname\@empty
         \expandafter\ifx\csname jlreq at rightmark@\jlreq at i\endcsname\@empty\else
           \eappto\jlreq at do{\noexpand\jlreq at setextrarightmark{\jlreq at i}{\csexpandonce{jlreq at rightmark@\jlreq at i}}}%
@@ -4115,8 +4084,8 @@
     \unexpanded{##1}%
   }%
   \jlreq at parsekeyval@nokey{%
-    \jlreq at ifempty{##1}{}{\ifthenelse{\equal{##1}{#3}}{\edef\jlreq at tempb{\unexpanded{##2}}}{}}%
-    \ifthenelse{\equal{##1}{_#1}}{\edef\jlreq at tempb{\unexpanded{##2}}}{}%
+    \tl_if_empty:nF {##1} {\str_if_eq:nnT {##1} {#3} {\edef\jlreq at tempb{\unexpanded{##2}}}}
+    \str_if_eq:nnT {##1} {_#1} {\edef\jlreq at tempb{\unexpanded{##2}}}%
   }{#2}%
   \ifx l#5%
     \expandafter\edef\csname jlreq at leftmark@#4\endcsname{\expandonce{\jlreq at tempb}}%
@@ -4136,8 +4105,7 @@
 
 % \edef内だと,#1 != 0ptならば\hskip \dimexpr#1\relaxになる
 \def\jlreq at pagestyle@hskip#1{%
-  \ifdim\dimexpr#1\relax=0pt \expandafter\@gobble\else\expandafter\@firstofone\fi
-    {\noexpand\hskip\noexpand\dimexpr#1\noexpand\relax}%
+  \dim_compare:nF { #1 = 0pt }{\noexpand\hskip\noexpand\dimexpr#1\noexpand\relax}%
 }
 \def\jlreq at pagestyle@setheadfoot@#1#2#3#4{%
   \begingroup
@@ -4202,7 +4170,7 @@
   }%
 }
 \def\jlreq at pagestyle@make at runninghead@#1#2#3#4#5{%
-  \jlreq at if{\ifnum\numexpr\jlreq at ifendmark{#5}{1}{0}*\ifjlreq at tempa 1\else 0\fi\relax=1 \fi}{%
+  \jlreq at if{\ifnum\numexpr\jlreq at ifendmark{#5}{1}{0}*\ifjlreq at tempa 1\else 0\fi\relax=1~\fi}{%
     % 項目が一つしか無い
     \jlreq at ifempty{#2}{\csappto}{\cspreto}{#1}{#4}%
   }{%
@@ -4259,19 +4227,9 @@
 
 %.. \DeclarePageStyle
 \newbox\jlreq at PageStyle@box
-\newcommand{\DeclarePageStyle}[2]{%
+\NewDocumentCommand{\DeclarePageStyle} { m +m } {%
   \expandafter\edef\csname jlreq at pagestyle@setting@#1\endcsname{\unexpanded{#2}}%
   \begingroup
-    \def\jlreq at nombre@i at position{}%
-    \def\jlreq at nombre@i{\thepage}%
-    \def\jlreq at running@head at i@position{}%
-    \def\jlreq at odd@running at head@i{}%
-    \def\jlreq at even@running at head@i{}%
-    \def\jlreq at command{}%
-    \def\jlreq at mark@format{}%
-    \def\jlreq at font{}%
-    \def\jlreq at nombre@font{}%
-    \def\jlreq at running@head at font{}%
     % フォーマットを空という可能性もあるかもしれないので,デフォルト値は\relaxで表す.
     \let\jlreq at oddheadformat\relax
     \let\jlreq at evenheadformat\relax
@@ -4278,62 +4236,62 @@
     \let\jlreq at oddfootformat\relax
     \let\jlreq at evenfootformat\relax
     % 柱とノンブルの間
-    \def\jlreq at gap{1.5\jlreq at zw}%
-    \def\jlreq at nombre@gap{}%
-    \def\jlreq at running@head at gap{}%
-    \newif\ifjlreq at clearmarkcommand\jlreq at clearmarkcommandtrue
-    \newif\ifjlreq at pstate\jlreq at pstatefalse % PageStyleTATE
-    \@for\jlreq at i:=ii,iii\do{%
-      \expandafter\def\csname jlreq at nombre@\jlreq at i @position\endcsname{}%
-      \expandafter\def\csname jlreq at running@head@\jlreq at i @position\endcsname{}%
-      \expandafter\def\csname jlreq at nombre@\jlreq at i\endcsname{}%
-      \expandafter\def\csname jlreq at odd@running at head@\jlreq at i\endcsname{}%
-      \expandafter\def\csname jlreq at even@running at head@\jlreq at i\endcsname{}%
-      \expandafter\def\csname jlreq at nombre@\jlreq at i @font\endcsname{}%
-      \expandafter\def\csname jlreq at running@head@\jlreq at i @font\endcsname{}%
-    }%
-    \jlreq at parsekeyval[PageStyle:#1]{
-      *{tate}{\jlreq at pstatetrue}
-      *{yoko}{\jlreq at pstatefalse}
-      {nombre}{\def\jlreq at nombre@i{##1}}
-      {nombre_position}{\def\jlreq at nombre@i at position{##1}}
-      {running_head_position}{\def\jlreq at running@head at i@position{##1}}
-      {odd_running_head}{\def\jlreq at odd@running at head@i{##1}}
-      {even_running_head}{\def\jlreq at even@running at head@i{##1}}
-      {font}{%
+    \newif\ifjlreq at clearmarkcommand
+    \newif\ifjlreq at pstate % PageStyleTATE
+    \keys_define:nn { PageStyle:#1 } {
+      tate .code:n = {\jlreq at pstatetrue},
+      yoko .code:n = {\jlreq at pstatefalse},
+      nombre .tl_set:N = \jlreq at nombre@i,
+      nombre_position .tl_set:N = \jlreq at nombre@i at position,
+      running_head_position .tl_set:N = \jlreq at running@head at i@position,
+      odd_running_head .tl_set:N = \jlreq at odd@running at head@i,
+      even_running_head .tl_set:N = \jlreq at even@running at head@i,
+      font .code:n = {
         \def\jlreq at nombre@font{##1}%
         \def\jlreq at running@head at font{##1}%
-      }
-      {nombre_font}{\def\jlreq at nombre@font{##1}}
-      {running_head_font}{\def\jlreq at running@head at font{##1}}
-      {mark_format}{\edef\jlreq at mark@format{\unexpanded{##1}}}
-      {command}{\edef\jlreq at command{\unexpanded{##1}}}
-      {gap}{\def\jlreq at gap{##1}}
-      {nombre_gap}{\def\jlreq at nombre@gap{##1}}
-      {running_head_gap}{\def\jlreq at running@head at gap{##1}}
+      },
+      nombre_font .tl_set:N = \jlreq at nombre@font,
+      running_head_font .tl_set:N = \jlreq at running@head at font,
+      mark_format .code:n = {\edef\jlreq at mark@format{\unexpanded{##1}}},
+      command .code:n = {\edef\jlreq at command{\unexpanded{##1}}},
+      gap .tl_set:N = \jlreq at gap,
+      nombre_gap .tl_set:N = \jlreq at nombre@gap,
+      running_head_gap .tl_set:N = \jlreq at running@head at gap,
       % trueにすると,\ps@***実行時にまず\***markを全て\@gobbleにする.
-      {clear_markcommand}[true,false]{\csname jlreq at clearmarkcommand##1\endcsname}
-      {odd_head_format}{\edef\jlreq at oddheadformat{\unexpanded{##1}}}
-      {even_head_format}{\edef\jlreq at evenheadformat{\unexpanded{##1}}}
-      {odd_foot_format}{\edef\jlreq at oddfootformat{\unexpanded{##1}}}
-      {even_foot_format}{\edef\jlreq at evenfootformat{\unexpanded{##1}}}
+      clear_markcommand .choices:nn = {true,false}{\csname jlreq at clearmarkcommand##1\endcsname},
+      odd_head_format .code:n = {\edef\jlreq at oddheadformat{\unexpanded{##1}}},
+      even_head_format .code:n = {\edef\jlreq at evenheadformat{\unexpanded{##1}}},
+      odd_foot_format .code:n = {\edef\jlreq at oddfootformat{\unexpanded{##1}}},
+      even_foot_format .code:n = {\edef\jlreq at evenfootformat{\unexpanded{##1}}},
       % 二つ目
-      {nombre_ii}{\def\jlreq at nombre@ii{##1}}
-      {nombre_ii_position}{\def\jlreq at nombre@ii at position{##1}}
-      {running_head_ii_position}{\def\jlreq at running@head at ii@position{##1}}
-      {odd_running_head_ii}{\def\jlreq at odd@running at head@ii{##1}}
-      {even_running_head_ii}{\def\jlreq at even@running at head@ii{##1}}
-      {nombre_ii_font}{\def\jlreq at nombre@ii at font{##1}}
-      {running_head_ii_font}{\def\jlreq at running@head at ii@font{##1}}
+      nombre_ii .tl_set:N = \jlreq at nombre@ii,
+      nombre_ii_position .tl_set:N = \jlreq at nombre@ii at position,
+      running_head_ii_position .tl_set:N = \jlreq at running@head at ii@position,
+      odd_running_head_ii .tl_set:N = \jlreq at odd@running at head@ii,
+      even_running_head_ii .tl_set:N = \jlreq at even@running at head@ii,
+      nombre_ii_font .tl_set:N = \jlreq at nombre@ii at font,
+      running_head_ii_font .tl_set:N = \jlreq at running@head at ii@font,
       % 三つ目
-      {nombre_iii}{\def\jlreq at nombre@iii{##1}}
-      {nombre_iii_position}{\def\jlreq at nombre@iii at position{##1}}
-      {running_head_iii_position}{\def\jlreq at running@head at iii@position{##1}}
-      {odd_running_head_iii}{\def\jlreq at odd@running at head@iii{##1}}
-      {even_running_head_iii}{\def\jlreq at even@running at head@iii{##1}}
-      {nombre_iii_font}{\def\jlreq at nombre@iii at font{##1}}
-      {running_head_iii_font}{\def\jlreq at running@head at iii@font{##1}}
-    }{#2}%
+      nombre_iii .tl_set:N = \jlreq at nombre@iii,
+      nombre_iii_position .tl_set:N = \jlreq at nombre@iii at position,
+      running_head_iii_position .tl_set:N = \jlreq at running@head at iii@position,
+      odd_running_head_iii .tl_set:N = \jlreq at odd@running at head@iii,
+      even_running_head_iii .tl_set:N = \jlreq at even@running at head@iii,
+      nombre_iii_font .tl_set:N = \jlreq at nombre@iii at font,
+      running_head_iii_font .tl_set:N = \jlreq at running@head at iii@font
+    }
+    \keys_set:nn { PageStyle:#1 } {
+      yoko,
+      nombre_font = {}, nombre_position = {}, nombre = {\thepage},
+      nombre_ii_font = {}, nombre_ii_position = {}, nombre_ii = {},
+      nombre_iii_font = {}, nombre_iii_position = {}, nombre_iii = {},
+      running_head_font = {}, running_head_position = {}, odd_running_head = {}, even_running_head = {}, 
+      running_head_ii_font = {}, running_head_ii_position = {}, odd_running_head_ii = {}, even_running_head_ii = {}, 
+      running_head_iii_font = {}, running_head_iii_position = {}, odd_running_head_iii = {}, even_running_head_iii = {}, 
+      command = {}, mark_format = {}, gap = {1.5\jlreq at zw}, nombre_gap = {}, running_head_gap = {},
+      clear_markcommand = {true}, 
+    }
+    \keys_set:nn { PageStyle:#1 } {#2}
     % ノンブル同士の間や柱同士の間のデフォルトはノンブルと柱の間の空き量
     \ifx\jlreq at nombre@gap\@empty\let\jlreq at nombre@gap=\jlreq at gap\fi
     \ifx\jlreq at running@head at gap\@empty\let\jlreq at running@head at gap=\jlreq at gap\fi
@@ -4340,8 +4298,8 @@
     % _iiが存在するか調べて\ifjlreq at headii@existに入れる
     \newif\ifjlreq at headii@exist
     \jlreq at headii@existfalse
-    \jlreq at for@noexpand\jlreq at tempa:=\jlreq at odd@running at head@ii,\jlreq at odd@running at head@ii\do{%
-      \expandafter\ifx\jlreq at tempa\@empty\else\jlreq at headii@existtrue\fi
+    \clist_map_inline:nn { \jlreq at odd@running at head@ii, \jlreq at odd@running at head@ii } {
+      \tl_if_empty:VF ##1 { \jlreq at headii@existtrue }
     }%
     % markの処理
     % (odd|even)_running_head(_ii)が_<見出し命令>で与えられている場合,次のようにする.
@@ -4356,8 +4314,8 @@
     % * \jlreq@(odd|even)@running at head(@ii)@heading at levelに<見出し命令>のレベルを入れる.レベルが不明な時は\relaxになる.
     % また,\jlreq at headingmarklistに<見出し命令>の一覧を入れる.
     \def\jlreq at headingmarklist{}%
-    \@for\jlreq at parity:=odd,even\do{%
-      \@for\jlreq at i:=0,1,2\do{%
+    \clist_map_variable:nNn { odd, even } \jlreq at parity {
+      \clist_map_variable:nNn { 0, 1, 2 } \jlreq at i {
         % \jlreq at pagestyle@setmarkが上の処理を行う.
         \edef\jlreq at next{\noexpand\jlreq at pagestyle@setmark{\expandonce{\csname jlreq@\jlreq at parity @running at head@\@roman\numexpr\jlreq at i + 1\relax\endcsname}}{\expandonce{\jlreq at i}}{\expandonce{\jlreq at parity}}{jlreq at markdata}{\noexpand\jlreq at headingmarklist}}%
         \jlreq at next
@@ -4366,7 +4324,7 @@
     % \jlreq at minimumlevelに見出しの最低(数値が小さいという意味)レベルを入れる.
     \let\jlreq at minimumlevel=\@undefined
     \def\jlreq at markdefinecommand{}%
-    \@for\jlreq at heading:=\jlreq at headingmarklist\do{%
+    \exp_args:No \clist_map_variable:nNn \jlreq at headingmarklist \jlreq at heading {
       \ifx\jlreq at heading\@empty\else
         \expandafter\let\expandafter\jlreq at level\csname jlreq at heading@level@\jlreq at heading\endcsname
         \ifx\jlreq at level\relax\else
@@ -4389,8 +4347,8 @@
       \fi
     }}%
     % 二番目以降にフォント設定を追加
-    \@for\jlreq at i:=ii,iii\do{%
-      \@for\jlreq at parity:=odd,even\do{%
+    \clist_map_variable:nNn { ii, iii } \jlreq at i {
+      \clist_map_variable:nNn { odd, even } \jlreq at parity {
         \jlreq at pagestyle@addfont at tocs{jlreq@\jlreq at parity @running at head@\jlreq at i}{jlreq at running@head@\jlreq at i @font}%
       }%
       \jlreq at pagestyle@addfont at tocs{jlreq at nombre@\jlreq at i}{jlreq at nombre@\jlreq at i @font}%
@@ -4410,7 +4368,7 @@
       \jlreq at pagestyle@addifempty{\jlreq at running@head at iii@position}{\jlreq at even@running at head@ii}{\jlreq at gapcs}{\jlreq at even@running at head@iii}%
       \jlreq at pagestyle@addifempty{\jlreq at running@head at ii@position}{\jlreq at even@running at head@i}{\jlreq at gapcs}{\jlreq at even@running at head@ii}%
       \def\jlreq at nombre@contents{}% ノンブルを入れる(下の方に出力)
-      \@for\jlreq at i:=i,ii,iii\do{%
+      \clist_map_variable:nNn { i, ii, iii } \jlreq at i {
         \expandafter\let\expandafter\jlreq at position\csname jlreq at nombre@\jlreq at i @position\endcsname
         \expandafter\ifx\csname jlreq at nombre@\jlreq at i\endcsname\@empty\else
           \jlreq at ifgluezero{\glueexpr\jlreq at position\relax}{\def\jlreq at position{}}{}%
@@ -4425,9 +4383,9 @@
         \fi
       }%
       % \jlreq@(odd|even)@contentsに柱を入れる(上の方に出力)
-      \@for\jlreq at parity:=odd,even\do{%
+      \clist_map_variable:nNn { odd, even } \jlreq at parity {
         \expandafter\def\csname jlreq@\jlreq at parity @contents\endcsname{}%
-        \@for\jlreq at i:=i,ii,iii\do{%
+        \clist_map_variable:nNn { i, ii, iii } \jlreq at i {
           \expandafter\let\expandafter\jlreq at position\csname jlreq at running@head@\jlreq at i @position\endcsname
           \expandafter\ifx\csname jlreq@\jlreq at parity @running at head@\jlreq at i\endcsname\@empty\else
             \jlreq at ifgluezero{\glueexpr\jlreq at position\relax}{\def\jlreq at position{}}{}%
@@ -4489,8 +4447,8 @@
       \def\jlreq at nombre@i at position@default{{bottom}{center}}%
       \def\jlreq at running@head at i@position at default{{top}{center}}%
       % ii以降の位置は指定されていない場合はiのそれに合わせる
-      \@for\jlreq at tempa:=jlreq at nombre,jlreq at running@head\do{%
-        \@for\jlreq at i:=ii,iii\do{%
+      \clist_map_variable:nNn { jlreq at nombre, jlreq at running@head } \jlreq at tempa {
+        \clist_map_variable:nNn { ii, iii } \jlreq at i {
           \expandafter\ifx\csname\jlreq at tempa @\jlreq at i @position\endcsname\@empty
             \expandafter\let\csname\jlreq at tempa @\jlreq at i @position\expandafter\endcsname\csname\jlreq at tempa @i at position\endcsname
           \fi
@@ -4497,33 +4455,42 @@
           \expandafter\edef\csname\jlreq at tempa @\jlreq at i @position at default\endcsname{\csname\jlreq at tempa @i at position@default\endcsname}%
         }%
       }%
-      \@for\jlreq at tempa:=jlreq at nombre@i at position,jlreq at nombre@ii at position,jlreq at nombre@iii at position,jlreq at running@head at i@position,jlreq at running@head at ii@position,jlreq at running@head at iii@position\do{%
+      \clist_map_variable:nNn {
+        jlreq at nombre@i at position, jlreq at nombre@ii at position, jlreq at nombre@iii at position, jlreq at running@head at i@position, jlreq at running@head at ii@position, jlreq at running@head at iii@position
+      } \jlreq at tempa {
         \edef\jlreq at next{\noexpand\jlreq at pagestyle@parse at position{\csexpandonce{\jlreq at tempa}}{\expandonce{\csname\jlreq at tempa\endcsname}}{\csexpandonce{\jlreq at tempa @default}}}%
         \jlreq at next
       }%
-      \ifthenelse{\(
-        \boolean{@tate} \AND \(
-          \equal{\expandafter\@secondoftwo\jlreq at nombre@i at position}{right} \OR
-          \equal{\expandafter\@secondoftwo\jlreq at running@head at i@position}{right}
-      \)\) \OR \(
-        \(\NOT \boolean{@tate}\) \AND \(
-          \equal{\expandafter\@secondoftwo\jlreq at nombre@i at position}{left} \OR
-          \equal{\expandafter\@secondoftwo\jlreq at running@head at i@position}{left}
-        \)
-      \)}{%
+      \bool_if:nT { (
+        \legacy_if_p:n { @tate } && (
+          \str_if_eq_p:ee { \expandafter\@secondoftwo\jlreq at nombre@i at position } { right } ||
+          \str_if_eq_p:ee { \expandafter\@secondoftwo\jlreq at running@head at i@position }{ right }
+          ))}{
+      )) || (
+        (! \legacy_if_p:n { @tate } ) && (
+          \str_if_eq_p:ee { \expandafter\@secondoftwo\jlreq at nombre@i at position }{ left } ||
+          \str_if_eq_p:ee { \expandafter\@secondoftwo\jlreq at running@head at i@position }{ left }
+        )
+      )}{
         \if at twoside
           \jlreq at note{柱やノンブルは,左ページでは,基本版面の左端の延長線にノンブル又は柱の先頭をそろえて配置するか,基本版面の左端の延長線から基本版面の文字サイズの全角アキだけ右に寄せた位置に配置する (ページスタイル #1 内,2.6.1.b).}%
         \fi
-      }{}%
+      }%
       % フォント変更命令に文字出力命令が入っているとエラーになるのを回避するために\setboxでごまかす.
       \setbox\jlreq at tempboxa=\hbox{\jlreq at running@head at font
-        \ifthenelse{\lengthtest{\jlreq at gap < 1.49\jlreq at zw} \OR \( \lengthtest{\jlreq at gap > 1.51\jlreq at zw} \AND \lengthtest{\jlreq at gap < 1.99\jlreq at zw} \) \OR \lengthtest{\jlreq at gap > 2.01\jlreq at zw}}{\jlreq at note{ノンブルと柱との空き量は柱に使用する文字サイズの2倍又は1.5倍とする (ページスタイル #1 内,2.6.1.c).}}{}%
+        \bool_if:nT {
+          \dim_compare_p:n { \jlreq at gap < 1.49\jlreq at zw } ||
+          ( \dim_compare_p:n { \jlreq at gap > 1.51\jlreq at zw } && \dim_compare_p:n { \jlreq at gap < 1.99\jlreq at zw } ) ||
+          \dim_compare_p:n { \jlreq at gap > 2.01\jlreq at zw }
+        }{
+          \jlreq at note{ノンブルと柱との空き量は柱に使用する文字サイズの2倍又は1.5倍とする (ページスタイル #1 内,2.6.1.c).}
+        }
       }%
       % 初期化
-      \@for\jlreq at parity:=odd,even\do{%
-        \@for\jlreq at vert:=top,bottom\do{%
-          \@for\jlreq at hor:=left,center,right\do{%
-            \@for\jlreq at type:=nombre,running at head\do{%
+      \clist_map_variable:nNn { odd, even } \jlreq at parity {
+        \clist_map_variable:nNn { top, bottom } \jlreq at vert {
+          \clist_map_variable:nNn { left, center, right } \jlreq at hor {
+            \clist_map_variable:nNn { nombre, running at head } \jlreq at type {
               \expandafter\def\csname jlreq@\jlreq at type @\jlreq at parity @\jlreq at vert @\jlreq at hor\endcsname{}%
             }%
           }%
@@ -4532,13 +4499,13 @@
         \jlreq at ifleftpage{\jlreq at parity}{\def\jlreq at pagehor{left}}{\def\jlreq at pagehor{right}}%
         % \jlreq@(running at head|nombre)@(odd|even)@(top|bottom)@(left|center|right)に入れていく
         % 左ページではノンブルが左(2.6.1.c),i,ii,...はiが左になるようにする.
-        \@for\jlreq at i:=i,ii,iii\do{%
+        \clist_map_variable:nNn { i, ii, iii } \jlreq at i {
           % nombre
           \expandafter\ifx\csname jlreq at nombre@\jlreq at i\endcsname\@empty\else
             \edef\jlreq at position{\csname jlreq at nombre@\jlreq at i @position\endcsname}%
             \edef\jlreq at vert{\expandafter\@firstoftwo\jlreq at position}%
             \edef\jlreq at hor{\expandafter\@secondoftwo\jlreq at position}%
-            \ifthenelse{\equal{\jlreq at parity}{even}}{\jlreq at reverse@leftright{\jlreq at hor}}{}%
+            \str_if_eq:VnT \jlreq at parity { even } {\jlreq at reverse@leftright{\jlreq at hor}}
             \jlreq at ifleftpage{\jlreq at parity}{\let\jlreq at addtocs=\cseappto}{\let\jlreq at addtocs\csepreto}%
             \edef\jlreq at csname{jlreq at nombre@\jlreq at parity @\jlreq at vert @\jlreq at hor}%
             \expandafter\ifx\csname\jlreq at csname\endcsname\@empty\else\jlreq at addtocs{\jlreq at csname}{\unexpanded{\hskip\glueexpr}\expandonce{\jlreq at nombre@gap}\noexpand\relax}\fi
@@ -4550,23 +4517,23 @@
             \edef\jlreq at position{\csname jlreq at running@head@\jlreq at i @position\endcsname}%
             \edef\jlreq at vert{\expandafter\@firstoftwo\jlreq at position}%
             \edef\jlreq at hor{\expandafter\@secondoftwo\jlreq at position}%
-            \ifthenelse{\equal{\jlreq at parity}{even}}{\jlreq at reverse@leftright{\jlreq at hor}}{}%
-            \ifthenelse{\equal{\jlreq at hor}{\jlreq at pagehor}}{\let\jlreq at addtocs=\cseappto}{\let\jlreq at addtocs=\csepreto}%
+            \str_if_eq:VnT \jlreq at parity { even } {\jlreq at reverse@leftright{\jlreq at hor}}
+            \str_if_eq:VVTF \jlreq at hor \jlreq at pagehor {\let\jlreq at addtocs=\cseappto}{\let\jlreq at addtocs=\csepreto}%
             \edef\jlreq at csname{jlreq at running@head@\jlreq at parity @\jlreq at vert @\jlreq at hor}%
             \jlreq at addtocs{\jlreq at csname}{{\csexpandonce{jlreq@\jlreq at parity @running at head@\jlreq at i}}}%
           \fi
         }%
         % {A}{B}{C}の順だった柱を結合する.本体は\jlreq at pagestyle@make at runninghead.
-        \@for\jlreq at vert:=top,bottom\do{%
-          \@for\jlreq at hor:=left,center,right\do{%
-            \ifthenelse{\equal{\jlreq at hor}{right}}{\def\jlreq at tempa{*}}{\def\jlreq at tempa{}}%
+        \clist_map_variable:nNn { top, bottom } \jlreq at vert {
+          \clist_map_variable:nNn { left, center, right } \jlreq at hor {
+            \str_if_eq:VnTF \jlreq at hor { right } { \def\jlreq at tempa{*} } { \def\jlreq at tempa{} }
             \edef\jlreq at do{\noexpand\jlreq at pagestyle@make at runninghead{jlreq at running@head@\jlreq at parity @\jlreq at vert @\jlreq at hor}{\expandonce{\jlreq at tempa}}{\expandonce{\jlreq at running@head at gap}}}%
             \jlreq at do
           }%
         }%
         % ノンブルと柱を結合し,必要ならばフォント設定をする.
-        \@for\jlreq at vert:=top,bottom\do{%
-          \@for\jlreq at hor:=left,center,right\do{%
+        \clist_map_variable:nNn { top, bottom } \jlreq at vert {%
+          \clist_map_variable:nNn { left, center, right } \jlreq at hor {%
             \edef\jlreq at csname{jlreq@\jlreq at parity @\jlreq at vert @\jlreq at hor}%
             \edef\jlreq at runheadcsname{jlreq at running@head@\jlreq at parity @\jlreq at vert @\jlreq at hor}%
             \edef\jlreq at nombrecsname{jlreq at nombre@\jlreq at parity @\jlreq at vert @\jlreq at hor}%
@@ -4587,10 +4554,10 @@
               }{%
 %                % 両方ある場合:左ページではノンブルが左,右ページではノンブルが右.
                 \jlreq at ifleftpage{\jlreq at parity}{%
-                  \ifthenelse{\equal{\jlreq at hor}{right}}{%
+                  \str_if_eq:VnTF \jlreq at hor { right } {
                     % <ノンブル><空き><柱>,右寄せ
                     % 柱が空出ないときに限り<空き>を入れる.
-                    \jlreq at pagestyle@addfont at totokens{\unexpanded{\ifdim\wd\jlreq at PageStyle@box=0pt \else\hskip}\expandonce{\jlreq at gap}\unexpanded{\relax\fi}}{jlreq at running@head at font}{jlreq at tempa}%
+                    \jlreq at pagestyle@addfont at totokens{\exp_not:N \dim_compare:nF { \exp_not:n { \wd\jlreq at PageStyle@box=0pt } } { \exp_not:N \hskip\expandonce{\jlreq at gap}\exp_no:N \relax } }{jlreq at running@head at font}{jlreq at tempa}%
                     \expandafter\edef\csname\jlreq at csname\endcsname{%
                       \unexpanded{\setbox\jlreq at PageStyle@box=\hbox}{\expandonce{\jlreq at running@head at font}\csexpandonce{\jlreq at runheadcsname}}%
                       \csexpandonce{\jlreq at nombrecsname}\expandonce{\jlreq at tempa}\unexpanded{\box\jlreq at PageStyle@box}%
@@ -4602,11 +4569,14 @@
                     \expandafter\edef\csname\jlreq at csname\endcsname{\csexpandonce{\jlreq at nombrecsname}\expandonce{\jlreq at tempa}}%
                   }%
                 }{%
-                  \ifthenelse{\equal{\jlreq at hor}{left}}{%
+                  \str_if_eq:VnTF \jlreq at hor { left } {
                     % <柱><空き><ノンブル>,左寄せ
                     \jlreq at pagestyle@addfont at totokens{%
                       \unexpanded{\setbox\jlreq at PageStyle@box=\hbox}{\csexpandonce{\jlreq at runheadcsname}}%
-                      \unexpanded{\copy\jlreq at PageStyle@box\ifdim\wd\jlreq at PageStyle@box=0pt \else\hskip\glueexpr}\expandonce{\jlreq at gap}\unexpanded{\relax\fi}%
+                      \unexpanded{\copy\jlreq at PageStyle@box}
+                      \exp_not:N \dim_compare:nF { \exp_not:n { \wd\jlreq at PageStyle@box=0pt } } {
+                        \exp_not:n { \hskip\glueexpr } \exp_not:o {\jlreq at gap} \exp_not:N \relax
+                      }
                     }{jlreq at running@head at font}{jlreq at tempa}%
                     \expandafter\edef\csname\jlreq at csname\endcsname{\expandonce{\jlreq at tempa}\csexpandonce{\jlreq at nombrecsname}}%
                   }{%
@@ -4625,7 +4595,7 @@
       \jlreq at pagestyle@setheadfoot{\jlreq at oddfoot}{jlreq at odd@bottom at left}{jlreq at odd@bottom at center}{jlreq at odd@bottom at right}%
       \jlreq at pagestyle@setheadfoot{\jlreq at evenhead}{jlreq at even@top at left}{jlreq at even@top at center}{jlreq at even@top at right}%
       \jlreq at pagestyle@setheadfoot{\jlreq at evenfoot}{jlreq at even@bottom at left}{jlreq at even@bottom at center}{jlreq at even@bottom at right}%
-      \ifthenelse{\lengthtest{\jlreq at sidenote@length >0pt} \AND \(\NOT\boolean{@tate}\)}{%
+      \bool_if:nTF { \dim_compare_p:n { \jlreq at sidenote@length > 0pt } && (! \legacy_if_p:n { @tate } ) }{
         \def\jlreq at defaultformat{\hss\hbox to \jlreqyokoheadlength{####1}\hss}%
       }{%
         \def\jlreq at defaultformat{####1}%
@@ -4689,18 +4659,18 @@
 \fi
 \edef\jlreqtateheadlength{\unexpanded{\dimexpr\headsep + \headheight + \textheight}\if at tate\else\unexpanded{- \topskip + 1\jlreq at zh}\fi\noexpand\relax}
 
-\newcommand*{\NewPageStyle}[2]{%
+\NewDocumentCommand{\NewPageStyle} { m +m } {%
   \expandafter\@ifdefinable\csname ps@#1\endcsname{\DeclarePageStyle{#1}{#2}}%
 }
-\newcommand*{\RenewPageStyle}[2]{%
+\NewDocumentCommand{\RenewPageStyle} { m +m } {%
   \@ifundefined{ps@#1}{\@latex at error{\expandafter\string\csname#1\endcsname\space undefined}\@ehc}{\DeclarePageStyle{#1}{#2}}%
 }
-\newcommand*{\ProvidePageStyle}[2]{%
+\NewDocumentCommand{\ProvidePageStyle} { m +m } {%
   \@ifundefined{ps@#1}{\DeclarePageStyle{#1}{#2}}{}%
 }
-\newcommand*{\ModifyPageStyle}[2]{%
+\NewDocumentCommand{\ModifyPageStyle} { m +m } {%
   \begingroup
-    \@ifundefined{jlreq at pagestyle@setting@#1}{\ClassError{jlreq}{Unknown pagestyle: #1}{\@ehc}}{}%
+    \@ifundefined{jlreq at pagestyle@setting@#1}{\ClassError{jlreq}{Unknown~pagestyle:~#1}{\@ehc}}{}%
     \expandafter\let\expandafter\setting\expandafter=\csname jlreq at pagestyle@setting@#1\endcsname
     \edef\jlreq at do{\noexpand\RenewPageStyle{#1}{\expandonce{\setting},\unexpanded{#2}}}%
   \expandafter\endgroup
@@ -4731,7 +4701,7 @@
           \noexpand\edef\expandonce{\csname #2\endcsname}{\unexpanded{\unexpanded{##1}}}
           \noexpand\def\expandonce{\csname #1\endcsname}{}%
         }%
-        \expandafter\@for\expandafter\jlreq at tempa\expandafter:\expandafter=\csname #1\endcsname\do{%
+        \clist_map_variable:cNn {#1} \jlreq at tempa {
           \epreto\jlreq at do{\noexpand\let\expandonce{\csname #2@\jlreq at tempa\endcsname}\noexpand\@undefined}%
         }%
       }{%
@@ -4793,12 +4763,11 @@
   \vskip\belowcaptionskip
 }}
 
-\jlreq at jlreqsetup@add{caption_font}{\jlreq at jlreqsetup@withenv{jlreq@@makecaption at font@envlist}{jlreq@@makecaption at font@setting}{#1}}
-\jlreq at jlreqsetup@add{caption_label_font}{\jlreq at jlreqsetup@withenv{jlreq@@makecaption at label@font at envlist}{jlreq@@makecaption at label@font at setting}{#1}}
-\jlreq at jlreqsetup@add{caption_label_format}{\jlreq at jlreqsetup@withenv{jlreq@@makecaption at label@format at envlist}{jlreq@@makecaption at label@format at setting}{#1}}
-\jlreq at jlreqsetup@add{caption_after_label_space}{\jlreq at jlreqsetup@withenv{jlreq@@makecaption at after@label at space@envlist}{jlreq@@makecaption at after@label at space@setting}{#1}}
+\keys_define:nn { jlreqsetup } {caption_font .code:n = {\jlreq at jlreqsetup@withenv{jlreq@@makecaption at font@envlist}{jlreq@@makecaption at font@setting}{#1}}}
+\keys_define:nn { jlreqsetup } {caption_label_font .code:n = {\jlreq at jlreqsetup@withenv{jlreq@@makecaption at label@font at envlist}{jlreq@@makecaption at label@font at setting}{#1}}}
+\keys_define:nn { jlreqsetup } {caption_label_format .code:n = {\jlreq at jlreqsetup@withenv{jlreq@@makecaption at label@format at envlist}{jlreq@@makecaption at label@format at setting}{#1}}}
+\keys_define:nn { jlreqsetup } {caption_after_label_space .code:n = {\jlreq at jlreqsetup@withenv{jlreq@@makecaption at after@label at space@envlist}{jlreq@@makecaption at after@label at space@setting}{#1}}}
 
-\ExplSyntaxOn
 %% 
 %% \jlreq@@makecaption at align@setting at small(@env)に小さい時のalign,jlreq@@makecaption at align@setting at large(@env)に大きいときのalignを入れる.
 %% \l_jlreq_tmpb_tlに各環境の設定クリア
@@ -4879,21 +4848,22 @@
   }
 }
 
-\jlreq at jlreqsetup@add{caption_align}{%
-  \group_begin:
-    \tl_clear:N \l_jlreq_tmpb_tl
-    \tl_clear:N \l_jlreq_tmpc_tl
-    \tl_clear:N \l_jlreq_tmpd_tl
-    \keys_set:nn { __jlreqsetup_caption_align } {#1}
-    \cs_set:Nx \l_jlreq_do:{
-      \exp_not:o \l_jlreq_tmpb_tl
-      \exp_not:o \l_jlreq_tmpc_tl
-      \exp_not:o \l_jlreq_tmpd_tl
-    }
-  \exp_after:wN \group_end:
-  \l_jlreq_do:
+\keys_define:nn { jlreqsetup } {
+  caption_align .code:n = {
+    \group_begin:
+      \tl_clear:N \l_jlreq_tmpb_tl
+      \tl_clear:N \l_jlreq_tmpc_tl
+      \tl_clear:N \l_jlreq_tmpd_tl
+      \keys_set:nn { __jlreqsetup_caption_align } {#1}
+      \cs_set:Nx \l_jlreq_do:{
+        \exp_not:o \l_jlreq_tmpb_tl
+        \exp_not:o \l_jlreq_tmpc_tl
+        \exp_not:o \l_jlreq_tmpd_tl
+      }
+    \exp_after:wN \group_end:
+    \l_jlreq_do:
+  }
 }
-\ExplSyntaxOff
 
 % 特に根拠のない値
 \setlength\abovecaptionskip{.5\jlreq at gol}
@@ -4901,7 +4871,6 @@
 
 %.. figure環境
 \newcounter{figure}
-\ExplSyntaxOn
 \str_if_eq:VnTF \jlreq at article@type { article } {
   \renewcommand{\thefigure}{\@arabic\c at figure}
 }{%
@@ -4929,7 +4898,6 @@
 \newcommand*{\fnum at table}{\tablename\thetable}
 \newenvironment{table}{\@float{table}}{\end at float}
 \newenvironment{table*}{\@dblfloat{table}}{\end at dblfloat}
-\ExplSyntaxOff
 
 %. タイトル周り
 \newenvironment{titlepage}{%
@@ -4947,7 +4915,6 @@
   \fi
 }
 
-\ExplSyntaxOn
 \if at titlepage
   \newcommand{\maketitle}{%
     % jarticleとかからあまり変更していない
@@ -5011,7 +4978,6 @@
     \jlreq at endofmaketitle
   }
 \fi
-\ExplSyntaxOff
 % いろいろクリアする.
 \def\jlreq at endofmaketitle{%
   \setcounter{footnote}{0}%
@@ -5058,7 +5024,6 @@
 
 %.. abstract
 \def\jlreq at parhook@abstract{}
-\ExplSyntaxOn
 \str_if_eq:VnF \jlreq at article@type { book } {
   \newbox\jlreq at abstractbox
   \newcommand*{\abstractname}{概要}
@@ -5145,7 +5110,6 @@
     }
   \fi
 }
-\ExplSyntaxOff
 %. 箇条書き. cf. JISX4051 8.4
 % 用語定義型
 \newenvironment{description}{\list{}{%
@@ -5173,8 +5137,8 @@
       \ifjlreq at parsekeyval@nokey at novalue{%
         % 生の値.環境に対するものをクリアし,全ての<i-iv>に同じ値を設定
         % 環境一覧リストもクリア.
-        \@for\jlreq at tempa:=i,ii,iii,iv,v,vi\do{%
-          \expandafter\@for\expandafter\jlreq at tempb\expandafter:\expandafter=\csname #1\endcsname\do{%
+        \clist_map_variable:nNn {i,ii,iii,iv,v,vi} \jlreq at tempa{
+          \clist_map_variable:cNn {#1} \jlreq at tempb {
             \ifx\jlreq at tempb\@empty\else
               \eappto\jlreq at generalset{\noexpand\let\expandonce{\csname #2@\jlreq at tempa @\jlreq at tempb\endcsname}\noexpand\@undefined}%
             \fi
@@ -5185,10 +5149,9 @@
         }%
         \appto\jlreq at generalset{\expandafter\def\csname #1\endcsname{}}%
       }{%
-%        \bool_if:nTF{ \str_if_eq_p:nn {##1} {i} || \str_if_eq_p:nn {##1} {ii} || \str_if_eq_p:nn {##1} {iii} || \str_if_eq_p:nn {##1} {iv} || \str_if_eq_p:nn {##1} {v} || \str_if_eq_p:nn {##1} {vi} }{
-        \ifthenelse{\equal{##1}{i} \OR \equal{##1}{ii} \OR \equal{##1}{iii} \OR \equal{##1}{iv} \OR \equal{##1}{v} \OR \equal{##1}{vi}}{%
+        \bool_if:nTF{ \str_if_eq_p:nn {##1} {i} || \str_if_eq_p:nn {##1} {ii} || \str_if_eq_p:nn {##1} {iii} || \str_if_eq_p:nn {##1} {iv} || \str_if_eq_p:nn {##1} {v} || \str_if_eq_p:nn {##1} {vi} }{
           % i=とかの時,環境に対応するものをクリアし,\#2@##1に値を入れる
-          \expandafter\@for\expandafter\jlreq at tempa\expandafter:\expandafter=\csname #1\endcsname\do{
+          \clist_map_variable:cNn {#1} \jlreq at tempa {
             \ifx\jlreq at tempa\@empty\else
               \epreto\jlreq at envset{\noexpand\let\expandonce{\csname #2@##1@\jlreq at tempa\endcsname}\noexpand\@undefined}%
             \fi
@@ -5199,7 +5162,7 @@
           \jlreq at parsekeyval@nokey{%
             \ifjlreq at parsekeyval@nokey at novalue{%
               % i - viまでに全てセットする.
-              \@for\jlreq at tempa:=i,ii,iii,iv,v,vi\do{%
+              \clist_map_variable:nNn {i,ii,iii,iv,v,vi} \jlreq at tempa{
                 \epreto\jlreq at envset{\noexpand\edef\expandonce{\csname #2@\jlreq at tempa @##1\endcsname}{\unexpanded{\unexpanded{####1}}}}%
               }%
             }{%
@@ -5222,10 +5185,10 @@
 
 
 \def\jlreq at itemization@beforeafter at space@envlist{}
-\jlreq at jlreqsetup@add{itemization_beforeafter_space}{\jlreq at jlreqsetup@itemization{jlreq at itemization@beforeafter at space@envlist}{jlreq at itemization@beforeafter at space@setting}{#1}}
-\jlreq at jlreqsetup@add{itemization_itemsep}{\jlreq at jlreqsetup@withenv{jlreq at itemization@itemsep at envlist}{jlreq at itemization@itemsep at setting}{#1}}
-\jlreq at jlreqsetup@add{itemization_labelsep}{\jlreq at jlreqsetup@withenv{jlreq at itemization@labelsep at envlist}{jlreq at itemization@labelsep at setting}{#1}}
-\jlreq at jlreqsetup@add{itemization_label_length}{\jlreq at jlreqsetup@itemization{jlreq at itemization@label at length@envlist}{jlreq at itemization@label at length@setting}{#1}}
+\keys_define:nn { jlreqsetup } {itemization_beforeafter_space .code:n = {\jlreq at jlreqsetup@itemization{jlreq at itemization@beforeafter at space@envlist}{jlreq at itemization@beforeafter at space@setting}{#1}}}
+\keys_define:nn { jlreqsetup } {itemization_itemsep .code:n = {\jlreq at jlreqsetup@withenv{jlreq at itemization@itemsep at envlist}{jlreq at itemization@itemsep at setting}{#1}}}
+\keys_define:nn { jlreqsetup } {itemization_labelsep .code:n = {\jlreq at jlreqsetup@withenv{jlreq at itemization@labelsep at envlist}{jlreq at itemization@labelsep at setting}{#1}}}
+\keys_define:nn { jlreqsetup } {itemization_label_length .code:n = {\jlreq at jlreqsetup@itemization{jlreq at itemization@label at length@envlist}{jlreq at itemization@label at length@setting}{#1}}}
 % enumerate, itemize用初期化,#1 = i,ii,...
 \def\jlreq at init@list#1{%
   \setlength{\partopsep}{0pt}%
@@ -5248,10 +5211,14 @@
 \def\@listvi{\jlreq at init@list{vi}}
 
 % 引用系.3.5.2の例.
-\jlreq at jlreqsetup@add{quote_indent}{\def\jlreq at quote@indent{#1}}
-\jlreq at jlreqsetup@add{quote_end_indent}{\def\jlreq at quote@end at indent{#1}}
-\jlreq at jlreqsetup@add{quote_fontsize}[normalsize,small,footnotesize,scriptsize,tiny,]{\jlreq at ifempty{#1}{\def\jlreq at quote@fontsize{}}{\edef\jlreq at quote@fontsize{\expandonce{\csname #1\endcsname}}}}
-\jlreq at jlreqsetup@add{quote_beforeafter_space}{\def\jlreq at quote@beforeafter at space{#1}}
+\keys_define:nn { jlreqsetup } { quote_indent .tl_set:N = \jlreq at quote@indent }
+\keys_define:nn { jlreqsetup } { quote_end_indent .tl_set:N = \jlreq at quote@end at indent }
+\keys_define:nn { jlreqsetup }{
+  quote_fontsize .choices:nn = {normalsize,small,footnotesize,scriptsize,tiny,{}}{
+    \jlreq at ifempty{#1}{\def\jlreq at quote@fontsize{}}{\edef\jlreq at quote@fontsize{\expandonce{\csname #1\endcsname}}}
+  }
+}
+\keys_define:nn { jlreqsetup } { quote_beforeafter_space .tl_set:N = \jlreq at quote@beforeafter at space }
 
 \newenvironment{verse}
   {\let\\\@centercr
@@ -5329,7 +5296,6 @@
 \setlength\fboxsep{.3\zw}
 \setlength\fboxrule{\jlreq at omotekeiwidth} % 根拠はない
 % 後で
-\ExplSyntaxOn
 \str_if_eq:VnTF \jlreq at article@type { article } {
   \renewcommand{\theequation}{\@arabic\c at equation}
 }{%
@@ -5336,7 +5302,6 @@
   \@addtoreset{equation}{chapter}
   \renewcommand{\theequation}{\ifnum\c at chapter>\z@\thechapter.\fi \@arabic\c at equation}
 }
-\ExplSyntaxOff
 
 %. 目次
 \setcounter{tocdepth}{3}
@@ -5361,12 +5326,11 @@
 
 \newcount\jlreq at top@contents % トップ見出しを入れる.レベルと同じ値.
 \jlreq at top@contents=-100
-\newcommand*{\jlreq at set@top at contents}[1]{%
+\def\jlreq at set@top at contents#1{%
   \ifnum\jlreq at top@contents=-100
     \jlreq at top@contents=#1\relax
   \fi
 }
-\ExplSyntaxOn
 \str_if_eq:VnTF \jlreq at article@type { article } {
   \newcommand{\tableofcontents}{%
     \jlreq at top@contents=-100\relax
@@ -5394,7 +5358,6 @@
     \if at restonecol\twocolumn\fi
   }
 }
-\ExplSyntaxOff
 
 % JIS X 4051自身の目次に近づけようかと……なりきれてないけど.
 % 文字の大きさは全て同じ(\normalsize)にする.
@@ -5496,21 +5459,22 @@
 \newcommand{\subsubitem}{\@idxitem \hspace*{3\jlreq at mol}}
 \newcommand{\indexspace}{\par \vskip 1\jlreq at gol \@plus .5\jlreq at gol \@minus .3\jlreq at gol\relax}
 \def\jlreq at theindex@pagestyle{}
-\jlreq at jlreqsetup@add{theindex_pagestyle}{
-  \def\jlreq at tempa{}% ページスタイル名
-  \def\jlreq at theindex@pagestyle{}%
-  \jlreq at tempafalse % restore
-  \jlreq at parsekeyval@nokey{%
-    \ifjlreq at parsekeyval@nokey at novalue{\def\jlreq at tempa{##1}}{%
-      \jlreq at switch{##1}{%
-        {restore}{\csname jlreq at tempa##2\endcsname}%
+\keys_define:nn { jlreqsetup } {theindex_pagestyle .code:n = {
+    \def\jlreq at tempa{}% ページスタイル名
+    \def\jlreq at theindex@pagestyle{}%
+    \jlreq at tempafalse % restore
+    \jlreq at parsekeyval@nokey{%
+      \ifjlreq at parsekeyval@nokey at novalue{\def\jlreq at tempa{##1}}{%
+        \jlreq at switch{##1}{%
+          {restore}{\csname jlreq at tempa##2\endcsname}%
+        }%
       }%
-    }%
-  }{#1}%
-  \eappto\jlreq at theindex@pagestyle{\unexpanded{\let\jlreq at theindex@savedpagestyle}\ifjlreq at tempa\noexpand\jlreq at current@pagestyle\else\noexpand\@undefined\fi}%
-  \ifx\jlreq at tempa\@empty\else
-    \eappto\jlreq at theindex@pagestyle{\noexpand\pagestyle{\expandonce{\jlreq at tempa}}}%
-  \fi
+    }{#1}%
+    \eappto\jlreq at theindex@pagestyle{\unexpanded{\let\jlreq at theindex@savedpagestyle}\ifjlreq at tempa\noexpand\jlreq at current@pagestyle\else\noexpand\@undefined\fi}%
+    \ifx\jlreq at tempa\@empty\else
+      \eappto\jlreq at theindex@pagestyle{\noexpand\pagestyle{\expandonce{\jlreq at tempa}}}%
+    \fi
+  }
 }
 
 %. 前付,後付,付録
@@ -5540,13 +5504,13 @@
                 {runin}{\def\jlreq at declaretype{RenewRunin}}
                 {cutin}{\def\jlreq at declaretype{RenewCutin}}
                 {modify}{\def\jlreq at declaretype{Modify}}
-                {\ClassError{jlreq}{Unknown heading type `####2'}{\@ehc}}
+                {\ClassError{jlreq}{Unknown~heading~type~`####2'}{\@ehc}}
               }%
             }
             {heading_level}{\def\jlreq at level{####2}}
             {%
-              \jlreq at ifempty{#1}{\@firstofone}{%
-                \ifthenelse{\equal{####1}{restore}}{%
+              \tl_if_empty:nTF {#1} { \@firstofone }{%
+                \str_if_eq:nnTF {####1} { restore } {
                   \csname jlreq at tempa####2\endcsname\@gobble
                 }{\@firstofone}%
               }%
@@ -5563,7 +5527,7 @@
       }%
       % \jlreq at declareに\ModifyHeadingか\Renew***Headingを入れる
       \edef\jlreq at declare{\expandonce{\csname\jlreq at declaretype Heading\endcsname}{##1}}%
-      \ifthenelse{\NOT \equal{\jlreq at declaretype}{Modify}}{%
+      \str_if_eq:VnF \jlreq at declaretype { Modify } {
         \ifx\jlreq at level\@empty
           % \frontmatter時でのレベルを引用する.
           \edef\jlreq at declare{%
@@ -5589,77 +5553,82 @@
 \def\jlreq at matter@counter at norestore#1#2{%
   \def#1{}%
   \jlreq at parsekeyval@nokey{%
-    \jlreq at parsekeyval*{
-      {value}{\appto#1{\setcounter{##1}{####1}}}
-      {the}{\eappto#1{\noexpand\def\expandonce{\csname the##1\endcsname}{\unexpanded{####1}}}}
-    }{##2}%
+    \keys_define:nn { __jlreq_keyval } {
+      value .code:n = \appto#1{\setcounter{##1}{####1}},
+      the .code:n = {\eappto#1{\noexpand\def\expandonce{\csname the##1\endcsname}{\unexpanded{####1}}}}
+    }
+    \keys_set:nn { __jlreq_keyval } {##2}
   }{#2}%
 }
 
-\ifthenelse{\equal{\jlreq at article@type}{book}}{
+\str_if_eq:VnT \jlreq at article@type { book } {
   \newif\if at mainmatter
   \@mainmattertrue
-  \jlreq at jlreqsetup@add{frontmatter_pagebreak}{%
+  \keys_define:nn { jlreqsetup } {frontmatter_pagebreak .code:n = {%
     \edef\jlreq at frontmatter@pagebreak{\jlreq at ifempty{#1}{}{\expandonce{\csname #1\endcsname}}}%
+  }}
+  \keys_define:nn { jlreqsetup } {frontmatter_counter .code:n = {%
+      \def\jlreq at frontmatter@counter{}%
+      \def\jlreq at tempa{}% 復帰させるカウンタ名リスト
+      \jlreq at parsekeyval@nokey{%
+        \def\jlreq at tempb{}% 中身
+        \jlreq at tempatrue % restore
+        \keys_define:nn { frontmatter_counter } {
+          value .code:n = {\appto\jlreq at tempb{\setcounter{##1}{####1}}},
+          restore .code:n = {\csname jlreq at tempa####1\endcsname},
+          the .code:n = {\eappto\jlreq at tempb{\noexpand\def\expandonce{\csname the##1\endcsname}{\unexpanded{####1}}}}
+        }
+        \keys_set:nn { frontmatter_counter } {##2}
+        \ifjlreq at tempa
+          \epreto\jlreq at tempb{%
+            \noexpand\let\expandonce{\csname jlreq at frontmatter@savedcounter at the@##1\endcsname}\expandonce{\csname the##1\endcsname}%
+            \noexpand\edef\expandonce{\csname jlreq at frontmatter@savedcounter at value@##1\endcsname}{\unexpanded{\the\value{##1}}}%
+          }%
+          \eappto\jlreq at tempa{\ifx\jlreq at tempa\@empty\else ,\fi\unexpanded{##1}}%
+        \fi
+        \eappto\jlreq at frontmatter@counter{\expandonce{\jlreq at tempb}}%
+      }{#1}%
+      \eappto\jlreq at frontmatter@counter{\unexpanded{\def\jlreq at frontmatter@restorecounters}{\expandonce{\jlreq at tempa}}}%
+    }
   }
-  \jlreq at jlreqsetup@add{frontmatter_counter}{%
-    \def\jlreq at frontmatter@counter{}%
-    \def\jlreq at tempa{}% 復帰させるカウンタ名リスト
-    \jlreq at parsekeyval@nokey{%
-      \def\jlreq at tempb{}% 中身
+  \keys_define:nn { jlreqsetup } {frontmatter_heading .code:n = {\jlreq at matter@heading[\jlreq at frontmatter@restoreheadings]{jlreq at frontmatter@savedheading}{\jlreq at frontmatter@heading}{#1}}}
+  \keys_define:nn { jlreqsetup } {frontmatter_pagestyle .code:n = {%
+      \def\jlreq at tempa{}% ページスタイル名
+      \def\jlreq at frontmatter@pagestyle{}%
       \jlreq at tempatrue % restore
-      \jlreq at parsekeyval{
-        {value}{\appto\jlreq at tempb{\setcounter{##1}{####1}}}
-        {restore}{\csname jlreq at tempa####1\endcsname}
-        {the}{\eappto\jlreq at tempb{\noexpand\def\expandonce{\csname the##1\endcsname}{\unexpanded{####1}}}}
-      }{##2}%
+      \jlreq at parsekeyval@nokey{%
+        \ifjlreq at parsekeyval@nokey at novalue{\def\jlreq at tempa{##1}}{%
+          \jlreq at switch{##1}{%
+            {restore}{\csname jlreq at tempa##2\endcsname}%
+          }%
+        }%
+      }{#1}%
       \ifjlreq at tempa
-        \epreto\jlreq at tempb{%
-          \noexpand\let\expandonce{\csname jlreq at frontmatter@savedcounter at the@##1\endcsname}\expandonce{\csname the##1\endcsname}%
-          \noexpand\edef\expandonce{\csname jlreq at frontmatter@savedcounter at value@##1\endcsname}{\unexpanded{\the\value{##1}}}%
-        }%
-        \eappto\jlreq at tempa{\ifx\jlreq at tempa\@empty\else ,\fi\unexpanded{##1}}%
+        \appto\jlreq at frontmatter@pagestyle{\let\jlreq at frontmatter@savedpagestyle\jlreq at current@pagestyle}%
       \fi
-      \eappto\jlreq at frontmatter@counter{\expandonce{\jlreq at tempb}}%
-    }{#1}%
-    \eappto\jlreq at frontmatter@counter{\unexpanded{\def\jlreq at frontmatter@restorecounters}{\expandonce{\jlreq at tempa}}}%
+      \ifx\jlreq at tempa\@empty\else
+        \eappto\jlreq at frontmatter@pagestyle{\noexpand\pagestyle{\expandonce{\jlreq at tempa}}}%
+      \fi
+    }
   }
-  \jlreq at jlreqsetup@add{frontmatter_heading}{\jlreq at matter@heading[\jlreq at frontmatter@restoreheadings]{jlreq at frontmatter@savedheading}{\jlreq at frontmatter@heading}{#1}}
-  \jlreq at jlreqsetup@add{frontmatter_pagestyle}{%
-    \def\jlreq at tempa{}% ページスタイル名
-    \def\jlreq at frontmatter@pagestyle{}%
-    \jlreq at tempatrue % restore
-    \jlreq at parsekeyval@nokey{%
-      \ifjlreq at parsekeyval@nokey at novalue{\def\jlreq at tempa{##1}}{%
-        \jlreq at switch{##1}{%
-          {restore}{\csname jlreq at tempa##2\endcsname}%
+  \keys_define:nn { jlreqsetup } {frontmatter_precode .code:n = {\edef\jlreq at frontmatter@precode{\unexpanded{#1}}}}
+  \keys_define:nn { jlreqsetup } {frontmatter_postcode .code:n = {\edef\jlreq at frontmatter@postcode{\unexpanded{#1}}}}
+  \keys_define:nn { jlreqsetup } {frontmatter_pagination .code:n = {%
+      \def\jlreq at pagination@frontmatterstyle{arabic}%
+      \let\jlreq at pagination@mainmatterpagecommand=\pagenumbering
+      \clist_map_variable:nNn {#1} \jlreq at tempa {
+        \expandafter\jlreq at helper@trim\expandafter{\jlreq at tempa}{\jlreq at tempa}%
+        \jlreq at switch{\jlreq at tempa}{
+          {continuous}{%
+            \def\jlreq at pagination@mainmatterpagecommand##1{\gdef\thepage{\csname @##1\endcsname\c at page}}%
+          }
+          {independent}{\let\jlreq at pagination@mainmatterpagecommand=\pagenumbering}
+          {\edef\jlreq at pagination@frontmatterstyle{\jlreq at tempa}}
         }%
       }%
-    }{#1}%
-    \ifjlreq at tempa
-      \appto\jlreq at frontmatter@pagestyle{\let\jlreq at frontmatter@savedpagestyle\jlreq at current@pagestyle}%
-    \fi
-    \ifx\jlreq at tempa\@empty\else
-      \eappto\jlreq at frontmatter@pagestyle{\noexpand\pagestyle{\expandonce{\jlreq at tempa}}}%
-    \fi
+    }
   }
-  \jlreq at jlreqsetup@add{frontmatter_precode}{\edef\jlreq at frontmatter@precode{\unexpanded{#1}}}
-  \jlreq at jlreqsetup@add{frontmatter_postcode}{\edef\jlreq at frontmatter@postcode{\unexpanded{#1}}}
-  \jlreq at jlreqsetup@add{frontmatter_pagination}{%
-    \def\jlreq at pagination@frontmatterstyle{arabic}%
-    \let\jlreq at pagination@mainmatterpagecommand=\pagenumbering
-    \@for\jlreq at tempa:=#1\do{%
-      \expandafter\jlreq at helper@trim\expandafter{\jlreq at tempa}{\jlreq at tempa}%
-      \jlreq at switch{\jlreq at tempa}{
-        {continuous}{%
-          \def\jlreq at pagination@mainmatterpagecommand##1{\gdef\thepage{\csname @##1\endcsname\c at page}}%
-        }
-        {independent}{\let\jlreq at pagination@mainmatterpagecommand=\pagenumbering}
-        {\edef\jlreq at pagination@frontmatterstyle{\jlreq at tempa}}
-      }%
-    }%
-  }
-  \newcommand*{\frontmatter}{%
+  \NewDocumentCommand{\frontmatter}{}{%
     \jlreq at frontmatter@precode
     \jlreq at frontmatter@pagebreak
     \@mainmatterfalse
@@ -5673,20 +5642,18 @@
   \def\jlreq at frontmatter@restorecounters{}
   \def\jlreq at frontmatter@restoreheadings{}
   \def\jlreq at frontmatter@restorecommands{}
-  \jlreq at jlreqsetup@add{mainmatter_pagebreak}{%
+  \keys_define:nn { jlreqsetup } {mainmatter_pagebreak .code:n = {%
     \edef\jlreq at mainmatter@pagebreak{\jlreq at ifempty{#1}{}{\expandonce{\csname #1\endcsname}}}%
-  }
-  \jlreq at jlreqsetup@add{mainmatter_pagestyle}{%
+  }}
+  \keys_define:nn { jlreqsetup } {mainmatter_pagestyle .code:n = {%
     \edef\jlreq at mainmatter@pagestyle{\jlreq at ifempty{#1}{}{\unexpanded{\pagestyle{#1}}}}%
-  }
-  \jlreq at jlreqsetup@add{mainmatter_counter}{\jlreq at matter@counter at norestore{\jlreq at mainmatter@counter}{#1}}%
-  \jlreq at jlreqsetup@add{mainmatter_heading}{\jlreq at matter@heading{\jlreq at mainmatter@heading}{#1}}%
-  \jlreq at jlreqsetup@add{mainmatter_precode}{\edef\jlreq at mainmatter@precode{\unexpanded{#1}}}%
-  \jlreq at jlreqsetup@add{mainmatter_postcode}{\edef\jlreq at mainmatter@postcode{\unexpanded{#1}}}%
-  \jlreq at jlreqsetup@add{mainmatter_pagination}{%
-    \def\jlreq at pagination@mainmatterstyle{#1}%
-  }
-  \newcommand*{\mainmatter}{%
+  }}
+  \keys_define:nn { jlreqsetup } {mainmatter_counter .code:n = {\jlreq at matter@counter at norestore{\jlreq at mainmatter@counter}{#1}}}
+  \keys_define:nn { jlreqsetup } {mainmatter_heading .code:n = {\jlreq at matter@heading{\jlreq at mainmatter@heading}{#1}}}
+  \keys_define:nn { jlreqsetup } {mainmatter_precode .code:n = {\edef\jlreq at mainmatter@precode{\unexpanded{#1}}}}
+  \keys_define:nn { jlreqsetup } {mainmatter_postcode .code:n = {\edef\jlreq at mainmatter@postcode{\unexpanded{#1}}}}
+  \keys_define:nn { jlreqsetup } {mainmatter_pagination .tl_set:N = \jlreq at pagination@mainmatterstyle}
+  \NewDocumentCommand{\mainmatter}{}{%
     \jlreq at mainmatter@precode
     \jlreq at mainmatter@pagebreak
     \@mainmattertrue
@@ -5695,44 +5662,45 @@
     }{%
       \expandafter\pagestyle\expandafter{\jlreq at frontmatter@savedpagestyle}%
     }%
-    \@for\jlreq at tempa:=\jlreq at frontmatter@restorecounters\do{%
+    \clist_map_variable:NNn \jlreq at frontmatter@restorecounters \jlreq at tempa {
       \setcounter{\jlreq at tempa}{\csname jlreq at frontmatter@savedcounter at value@\jlreq at tempa\endcsname}%
       \expandafter\let\csname the\jlreq at tempa\expandafter\endcsname\csname jlreq at frontmatter@savedcounter at the@\jlreq at tempa\endcsname
     }%
     \jlreq at mainmatter@counter
-    \@for\jlreq at tempa:=\jlreq at frontmatter@restoreheadings\do{\csname jlreq at frontmatter@savedheading@\jlreq at tempa\endcsname}
+    \clist_map_variable:NNn \jlreq at frontmatter@restoreheadings \jlreq at tempa { \csname jlreq at frontmatter@savedheading@\jlreq at tempa\endcsname }
     \jlreq at mainmatter@heading
-    \@for\jlreq at tempa:=\jlreq at frontmatter@restorecommands\do{%
+    \clist_map_variable:NNn \jlreq at frontmatter@restorecommands \jlreq at tempa {
       \expandafter\let\csname \jlreq at tempa\expandafter\endcsname\csname jlreq at frontmatter@savedcommand@\jlreq at tempa\endcsname
     }%
     \expandafter\jlreq at pagination@mainmatterpagecommand\expandafter{\jlreq at pagination@mainmatterstyle}%
     \jlreq at mainmatter@postcode
   }
-  \jlreq at jlreqsetup@add{backmatter_pagebreak}{%
+  \keys_define:nn { jlreqsetup } {backmatter_pagebreak .code:n = {%
     \edef\jlreq at backmatter@pagebreak{\jlreq at ifempty{#1}{}{\expandonce{\csname #1\endcsname}}}%
-  }
-  \jlreq at jlreqsetup@add{backmatter_pagestyle}{%
+  }}
+  \keys_define:nn { jlreqsetup } {backmatter_pagestyle .code:n = {%
     \edef\jlreq at backmatter@pagestyle{\jlreq at ifempty{#1}{}{\unexpanded{\pagestyle{#1}}}}%
-  }
-  \jlreq at jlreqsetup@add{backmatter_counter}{\jlreq at matter@counter at norestore{\jlreq at backmatter@counter}{#1}}%
-  \jlreq at jlreqsetup@add{backmatter_heading}{\jlreq at matter@heading{\jlreq at backmatter@heading}{#1}}
-  \jlreq at jlreqsetup@add{backmatter_precode}{\edef\jlreq at backmatter@precode{\unexpanded{#1}}}
-  \jlreq at jlreqsetup@add{backmatter_postcode}{\edef\jlreq at backmatter@postcode{\unexpanded{#1}}}
-  \jlreq at jlreqsetup@add{backmatter_pagination}{
-    \let\jlreq at pagination@backmatterpagecommand=\pagenumbering
-    \def\jlreq at pagination@backmatterstyle{arabic}%
-    \@for\jlreq at tempa:=#1\do{%
-      \expandafter\jlreq at helper@trim\expandafter{\jlreq at tempa}{\jlreq at tempa}%
-      \jlreq at switch{\jlreq at tempa}{
-        {continuous}{%
-          \def\jlreq at pagination@backmatterpagecommand##1{\gdef\thepage{\csname @##1\endcsname\c at page}}%
-        }
-        {independent}{\let\jlreq at pagination@backmatterpagecommand=\pagenumbering}
-        {\edef\jlreq at pagination@backmatterstyle{\jlreq at tempa}}
+  }}
+  \keys_define:nn { jlreqsetup } {backmatter_counter .code:n = {\jlreq at matter@counter at norestore{\jlreq at backmatter@counter}{#1}}}
+  \keys_define:nn { jlreqsetup } {backmatter_heading .code:n = {\jlreq at matter@heading{\jlreq at backmatter@heading}{#1}}}
+  \keys_define:nn { jlreqsetup } {backmatter_precode .code:n = {\edef\jlreq at backmatter@precode{\unexpanded{#1}}}}
+  \keys_define:nn { jlreqsetup } {backmatter_postcode .code:n = {\edef\jlreq at backmatter@postcode{\unexpanded{#1}}}}
+  \keys_define:nn { jlreqsetup } {backmatter_pagination .code:n = {
+      \let\jlreq at pagination@backmatterpagecommand=\pagenumbering
+      \def\jlreq at pagination@backmatterstyle{arabic}%
+      \clist_map_variable:nNn {#1} \jlreq at tempa {
+        \expandafter\jlreq at helper@trim\expandafter{\jlreq at tempa}{\jlreq at tempa}%
+        \jlreq at switch{\jlreq at tempa}{
+          {continuous}{%
+            \def\jlreq at pagination@backmatterpagecommand##1{\gdef\thepage{\csname @##1\endcsname\c at page}}%
+          }
+          {independent}{\let\jlreq at pagination@backmatterpagecommand=\pagenumbering}
+          {\edef\jlreq at pagination@backmatterstyle{\jlreq at tempa}}
+        }%
       }%
-    }%
+    }
   }
-  \newcommand*{\backmatter}{%
+  \NewDocumentCommand{\backmatter}{}{%
     \jlreq at backmatter@precode
     \jlreq at backmatter@pagebreak
     \jlreq at backmatter@pagestyle
@@ -5742,13 +5710,13 @@
     \expandafter\jlreq at pagination@backmatterpagecommand\expandafter{\jlreq at pagination@backmatterstyle}%
     \jlreq at backmatter@postcode
   }
-}{}
+}
 
-\jlreq at jlreqsetup@add{appendix_counter}{\jlreq at matter@counter at norestore{\jlreq at appendix@counter}{#1}}
-\jlreq at jlreqsetup@add{appendix_heading}{\jlreq at matter@heading{\jlreq at appendix@heading}{#1}}
-\jlreq at jlreqsetup@add{appendix_precode}{\edef\jlreq at appendix@precode{\unexpanded{#1}}}
-\jlreq at jlreqsetup@add{appendix_postcode}{\edef\jlreq at appendix@postcode{\unexpanded{#1}}}
-\newcommand*{\appendix}{%
+\keys_define:nn { jlreqsetup } {appendix_counter .code:n = {\jlreq at matter@counter at norestore{\jlreq at appendix@counter}{#1}}}
+\keys_define:nn { jlreqsetup } {appendix_heading .code:n = {\jlreq at matter@heading{\jlreq at appendix@heading}{#1}}}
+\keys_define:nn { jlreqsetup } {appendix_precode .code:n = {\edef\jlreq at appendix@precode{\unexpanded{#1}}}}
+\keys_define:nn { jlreqsetup } {appendix_postcode .code:n = {\edef\jlreq at appendix@postcode{\unexpanded{#1}}}}
+\NewDocumentCommand{\appendix}{}{%
   \par
   \jlreq at appendix@precode
   \jlreq at appendix@counter
@@ -5761,7 +5729,7 @@
 \protected\def\tatechuyoko{\@ifstar
   {\jlreq at tatechuyoko@i}%
   {%
-    \jlreq at iftdir{}{\ClassError{jlreq}{\string\tatechuyoko\space is not allowed in yoko mode}{\@ehc}}%
+    \jlreq at iftdir{}{\ClassError{jlreq}{\string\tatechuyoko\space is~not~allowed~in~yoko~mode}{\@ehc}}%
     \jlreq at tatechuyoko@ii
   }%
 }
@@ -5771,9 +5739,9 @@
   \unexpanded{\ifvmode\leavevmode\fi}%
   \ifx l\jlreq at engine\unexpanded{%
     \jlreq at lastnodechar=\lastnodechar\relax
-    \ifnum\jlreq at lastnodechar>-1 \inhibitglue\fi
+    \int_compare:nT { \jlreq at lastnodechar>-1 } { \inhibitglue }
   }\else\unexpanded{%
-    \ifnum\lastnodechar>-1 \inhibitglue\fi
+    \int_compare:nT { \jlreq at lastnodechar>-1 } { \inhibitglue }
     \jlreq at lastnodechar=\lastnodechar\relax
   }\fi
 }
@@ -5788,7 +5756,7 @@
   \hbox{\yoko
     \begingroup
       \setbox\jlreq at tempboxa=\hbox{阿}%
-      \vrule width 0pt height \ht\jlreq at tempboxa depth \dp\jlreq at tempboxa
+      \vrule width~0pt~height~\ht\jlreq at tempboxa depth~\dp\jlreq at tempboxa
     \endgroup
     #1}%
   \futurelet\jlreq at nextchar\jlreq at tatechuyoko@iii
@@ -5808,18 +5776,57 @@
   \jlreq at do
 }
 
-\ExplSyntaxOn
 \jlreq at saveoriginalcs{kanjishape}
 \ifx l\jlreq at engine
+  \cs_new:Nn \__jlreq_setkanjiskip:nn {
+    \group_begin:
+      \ltj at setpar@global
+      \cs_set:Nn \l_jlreq_do: {}
+      \tl_if_empty:nF {#1} {
+        \skip_set:Nn \l_jlreq_tmpa_skip { #1 }
+        \cs_set:Nx \l_jlreq_do: { \exp_not:o \l_jlreq_do:
+          \exp_not:N \cs_set:Npn \exp_not:N \jlreqkanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
+          \exp_not:N \ltjsetkanjiskip \skip_use:N \l_jlreq_tmpa_skip
+        }
+      }
+      \tl_if_empty:nF {#2} {
+        \skip_set:Nn \l_jlreq_tmpa_skip { #2 }
+        \cs_set:Nx \l_jlreq_do: { \exp_not:o \l_jlreq_do:
+          \exp_not:N \cs_set:Npn \exp_not:N \jlreqxkanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
+          \exp_not:N \ltjsetxkanjiskip \skip_use:N \l_jlreq_tmpa_skip
+        }
+      }
+    \exp_after:wN \group_end:
+    \l_jlreq_do:
+  }
+\else
+  \cs_new:Nn \__jlreq_setkanjiskip:nn {
+    \group_begin:
+      \cs_set:Nn \l_jlreq_do: {}
+      \tl_if_empty:nF {#1} {
+        \skip_set:Nn \l_jlreq_tmpa_skip { #1 }
+        \cs_set:Nx \l_jlreq_do: { \exp_not:o \l_jlreq_do:
+          \exp_not:N \cs_set:Npx \exp_not:N \jlreqkanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
+          \exp_not:N \skip_set:Nn \exp_not:N \kanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
+        }
+      }
+      \tl_if_empty:nF {#2} {
+        \skip_set:Nn \l_jlreq_tmpa_skip { #2 }
+        \cs_set:Nx \l_jlreq_do: { \exp_not:o \l_jlreq_do:
+          \exp_not:N \cs_set:Npx \exp_not:N \jlreqxkanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
+          \exp_not:N \skip_set:Nn \exp_not:N \xkanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
+        }
+      }
+    \exp_after:wN \group_end:
+    \l_jlreq_do:
+  }
+\fi
+\ifx l\jlreq at engine
   \cs_set:Nn \l_jlreq_tmpa:n {
     \NewDocumentCommand { \jidori } { m m } {
       \mode_if_vertical:TF { \leavevmode } {}
       \group_begin:
-        \ltj at setpar@global
-        \ltjsetkanjiskip 0pt~plus~1fil~minus~0pt
-        \ltjsetxkanjiskip 0pt~plus~1fil~minus~0pt
-        \renewcommand*{ \jlreqkanjiskip  }  { 0pt~plus~1fil~minus~0pt }
-        \renewcommand*{ \jlreqxkanjiskip } { 0pt~plus~1fil~minus~0pt }
+        \__jlreq_setkanjiskip:nn { 0pt~plus~1fil~minus~0pt } { 0pt~plus~1fil~minus~0pt }
         \hbox_to_wd:nn {##1} {
           \def#1 { }
           \kanjishape{n-jidori}\selectfont
@@ -5837,10 +5844,7 @@
   \NewDocumentCommand { \jidori } { m m } {
     \mode_if_vertical:TF { \leavevmode } {}
     \group_begin:
-      \setlength { \kanjiskip  } { 0pt~plus~15zw~minus~0pt }
-      \setlength { \xkanjiskip } { 0pt~plus~15zw~minus~0pt }
-      \renewcommand* { \jlreqkanjiskip  } { 0pt~plus~15zw~minus~0pt }
-      \renewcommand* { \jlreqxkanjiskip } { 0pt~plus~15zw~minus~0pt }
+      \__jlreq_setkanjiskip:nn { 0pt~plus~15zw~minus~0pt } { 0pt~plus~15zw~minus~0pt }
       \hbox_to_wd:nn {#1} {
         \kanjishape{n-jidori}\selectfont
         \inhibitglue #2
@@ -5849,7 +5853,13 @@
     \group_end:
   }
 \fi
-\ExplSyntaxOff
+\NewDocumentCommand { \akigumi } { m m } {
+  \mode_if_vertical:TF { \leavevmode } {}
+  \group_begin:
+    \__jlreq_setkanjiskip:nn { \jlreqkanjiskip + #1 } { }
+    \hbox:n {#2}
+  \group_end:
+}
 
 % 日にち
 \newif\if西暦
@@ -5857,21 +5867,26 @@
 \def\和暦{\西暦false}
 % #1年#2月#3日 #4は\numberとか\kansujiとか
 \def\jlreq at wareki#1#2#3#4{%
-  \jlreq at warekiyear{#1}{#2}{#3}{#4}%
+  \__jlreq_warekiyear:nnnn{#1}{#2}{#3}{#4}%
   #4#2月#4#3日%
 }
-\def\jlreq at warekiyear#1#2#3#4{%
+\cs_set:Nn \__jlreq_warekiyear:nnnn {
   % 昭和:1989年1月7日まで
-  \ifnum0\ifnum#1<1989 1\fi\ifnum#1=1989 \ifnum#2=1 \ifnum#3<8 1\fi\fi\fi>0
-    昭和\jlreq at warekiyear@{#1}{1926}{#4}%
-  % 平成:2019年4月末日まで
-  \else\ifnum0\ifnum#1<2019 1\fi\ifnum#1=2019 \ifnum#2<5 1\fi\fi>0
-    平成\jlreq at warekiyear@{#1}{1989}{#4}%
-  \else
-    令和\jlreq at warekiyear@{#1}{2019}{#4}%
-  \fi\fi
+  \bool_if:nTF { \int_compare_p:n { #1 < 1989 } || 
+    ( \int_compare_p:n { #1 == 1989 } && \int_compare_p:n { #2 == 1 } && \int_compare_p:n { #3 < 8 } ) }{
+    昭和\__jlreq_warekiyear_aux:nnn{#1}{1926}{#4}%
+  }{
+    % 平成:2019年4月末日まで
+    \bool_if:nTF { \int_compare_p:n { #1 < 2019 } || ( \int_compare_p:n { #1 == 2019 } && \int_compare_p:n { #2 < 5 } ) } {
+      平成\__jlreq_warekiyear_aux:nnn{#1}{1989}{#4}%
+    }{
+      令和\__jlreq_warekiyear_aux:nnn{#1}{2019}{#4}%
+    }
+  }
 }
-\def\jlreq at warekiyear@#1#2#3{\ifnum#1=#2 元年\else #3\numexpr#1-#2+1\relax 年\fi}
+\cs_set:Nn \__jlreq_warekiyear_aux:nnn {
+  \int_compare:nTF { #1 = #2 } {元年} { \int_eval:n { #1 - #2 + 1 } 年 }
+}
 \def\today{%
   \if西暦
     \jlreq at iftdir{%
@@ -5891,11 +5906,11 @@
     }%
   \fi
 }
-\jlreq at jlreqsetup@add{year_style}[seireki,wareki]{%
-  \jlreq at switch{#1}{%
-    {seireki}{\西暦true}
-    {wareki}{\西暦false}
-  }
+
+\keys_define:nn { jlreqsetup } {
+  year_style .choice:,
+  year_style / seireki .code:n = {\西暦true},
+  year_style / wareki .code:n = {\西暦false}
 }
 
 % 時刻
@@ -5933,33 +5948,35 @@
 \def\jlreq at setupamsthm{
   \newtheoremstyle{jlreq}{\dimexpr\jlreq at theorem@beforeafter at space\relax}{\dimexpr\jlreq at theorem@beforeafter at space\relax}{\jlreq at theorem@font}{\dimexpr\jlreq at theorem@indent\relax}{\jlreq at theorem@label at font}{}{1\jlreq at zw}{\thmname{##1}\thmnumber{\ ##2}\thmnote{(##3)}}
 }
-\jlreq at jlreqsetup@add{theorem_beforeafter_space}{
-  \def\jlreq at theorem@beforeafter at space{#1}
-  \begingroup\jlreq at tempdima=\dimexpr\jlreq at theorem@beforeafter at space\relax\endgroup
-  \@ifpackageloaded{amsthm}{\jlreq at setupamsthm}{}
+\keys_define:nn { jlreqsetup } {theorem_beforeafter_space .code:n = {
+    \def\jlreq at theorem@beforeafter at space{#1}
+    \begingroup\jlreq at tempdima=\dimexpr\jlreq at theorem@beforeafter at space\relax\endgroup
+    \@ifpackageloaded{amsthm}{\jlreq at setupamsthm}{}
+  }
 }
-\jlreq at jlreqsetup@add{theorem_indent}{
-  \def\jlreq at theorem@indent{#1}
-  \begingroup\jlreq at tempdima=\dimexpr\jlreq at theorem@indent\relax\endgroup
-  \@ifpackageloaded{amsthm}{\jlreq at setupamsthm}{}
+\keys_define:nn { jlreqsetup } {theorem_indent .code:n = {
+    \def\jlreq at theorem@indent{#1}
+    \begingroup\jlreq at tempdima=\dimexpr\jlreq at theorem@indent\relax\endgroup
+    \@ifpackageloaded{amsthm}{\jlreq at setupamsthm}{}
+  }
 }
-\jlreq at jlreqsetup@add{theorem_font}{
-  \def\jlreq at theorem@font{#1}
-  \@ifpackageloaded{amsthm}{\jlreq at setupamsthm}{}
+\keys_define:nn { jlreqsetup } {theorem_font .code:n = {
+    \def\jlreq at theorem@font{#1}
+    \@ifpackageloaded{amsthm}{\jlreq at setupamsthm}{}
+  }
 }
-\jlreq at jlreqsetup@add{theorem_label_font}{
-  \def\jlreq at theorem@label at font{#1}
-  \@ifpackageloaded{amsthm}{\jlreq at setupamsthm}{}
+\keys_define:nn { jlreqsetup } {theorem_label_font .code:n = {
+    \def\jlreq at theorem@label at font{#1}
+    \@ifpackageloaded{amsthm}{\jlreq at setupamsthm}{}
+  }
 }
-\jlreq at jlreqsetup@add{proof_label_font}{
-  \def\jlreq at proof@label at font{#1}
-}
+\keys_define:nn { jlreqsetup } {proof_label_font .tl_set:N = \jlreq at proof@label at font}
 
 %. デフォルト設定
 %.. 見出し
 \if at tate
   \renewcommand{\thepart}{\jlreq at Kanji{part}}
-  \ifthenelse{\equal{\jlreq at article@type}{article}}{}{\renewcommand{\thechapter}{\jlreq at Kanji{chapter}}}
+  \str_if_eq:VnF \jlreq at article@type { article }{\renewcommand{\thechapter}{\jlreq at Kanji{chapter}}}
   \renewcommand{\thesection}{\tatechuyoko*{\@arabic\c at section}}
   \renewcommand{\thesubsection}{\tatechuyoko*{\@alph\c at subsection}}
   \renewcommand{\thesubsubsection}{\tatechuyoko*{\@arabic\c at subsubsection}}
@@ -5966,7 +5983,7 @@
   \renewcommand{\theparagraph}{(\tatechuyoko*{\@arabic\c at paragraph})}
   \renewcommand{\thesubparagraph}{(\tatechuyoko*{\@arabic\c at subparagraph})}
 
-  \ifthenelse{\equal{\jlreq at article@type}{article}}{
+  \str_if_eq:VnTF \jlreq at article@type { article } {
     \NewBlockHeading{part}{0}{font={\jlreq at keepbaselineskip{\LARGE}},indent=4\jlreq at zw,lines=4,after_label_space=1\jlreq at zw,second_heading_text_indent={-1\jlreq at zw,1\jlreq at zw},subtitle_font={\jlreq at keepbaselineskip{\large}}}
     \if at twoside\ModifyHeading{part}{allowbreak_if_evenpage=true}\fi
   }
@@ -5990,11 +6007,10 @@
   \renewcommand{\thesubsubsection}{\thesubsection .\arabic{subsubsection}}
   \renewcommand{\theparagraph}{\thesubsubsection .\arabic{paragraph}}
   \renewcommand{\thesubparagraph}{\theparagraph .\arabic{subparagraph}}
-  \ifthenelse{\equal{\jlreq at article@type}{article}}{
+  \str_if_eq:VnTF \jlreq at article@type { article } {
     \NewBlockHeading{part}{0}{font={\jlreq at keepbaselineskip{\LARGE\sffamily\gtfamily\bfseries}},label_format={第\thepart 部},lines=4,after_label_space=1\jlreq at zw,second_heading_text_indent={-1\jlreq at zw,1\jlreq at zw},subtitle_font={\jlreq at keepbaselineskip{\large}}}
     \renewcommand{\thesection}{\arabic{section}}
-  }
-  {% book, report
+  }{% book, report
     \NewTobiraHeading{part}{-1}{label_format={第\thepart 部\hspace*{1\jlreq at gol}},format={\null\vfil {\Huge\sffamily\gtfamily\bfseries #1#2}\vfil}}
     \NewBlockHeading{chapter}{0}{%
       font={\jlreq at keepbaselineskip{\huge\sffamily\gtfamily\bfseries}},
@@ -6011,53 +6027,53 @@
   \NewRuninHeading{subparagraph}{5}{font={\jlreq at keepbaselineskip{\normalsize\sffamily\gtfamily\bfseries}},indent=2\jlreq at zw}
 \fi
 
-\ifthenelse{\equal{\jlreq at article@type}{article}}{}{% book, report
-  \if at openright
+\str_if_eq:VnF \jlreq at article@type { article } {
+  \legacy_if:nTF { @openright } {
     \ModifyHeading{part}{type=naka}
-    \if at tate
+    \legacy_if:nTF { @tate } {
       \ModifyHeading{chapter}{pagebreak=begin_with_even_page}
-    \else
+    }{
       \ModifyHeading{chapter}{pagebreak=begin_with_odd_page}
-    \fi
-  \else
+    }
+  }{
     \ModifyHeading{part}{type=han}
     \ModifyHeading{chapter}{pagebreak=clearpage}
-  \fi
+  }
 }
 
 %.. ページスタイル
 \RenewPageStyle{empty}{nombre={},odd_running_head={},even_running_head={}}
-\ifthenelse{\equal{\jlreq at article@type}{article}}{
-  \if at twoside
+\str_if_eq:VnTF \jlreq at article@type { article } {
+  \legacy_if:nTF { @twoside } {
     \NewPageStyle{headings}{odd_running_head={_subsection},even_running_head={_section}}
-  \else
+  }{
     \NewPageStyle{headings}{odd_running_head={_section},even_running_head={}}
-  \fi
+  }
 }{% book, article
-  \if at twoside
+  \legacy_if:nTF { @twoside } {
     \NewPageStyle{headings}{odd_running_head={_section},even_running_head={_chapter}}
-  \else
+  }{
     \NewPageStyle{headings}{odd_running_head={_chapter},even_running_head={}}
-  \fi
+  }
   \ModifyPageStyle{headings}{mark_format={_chapter={第\thechapter 章\quad #1}}}
 }
-\if at tate
+\legacy_if:nTF { @tate } {
   \RenewPageStyle{plain}{nombre=\thepage,odd_running_head={},even_running_head={},clear_markcommand=false}
   \NewPageStyle{myheadings}{nombre=\thepage,odd_running_head=\rightmark,even_running_head=\leftmark,clear_markcommand=false}
-  \if at twoside
+  \legacy_if:nTF { @twoside } {
     \ModifyPageStyle{plain}{nombre_position={top-left}}
     \ModifyPageStyle{headings}{nombre=\thepage,nombre_position=bottom-left,running_head_position=top-left}
     \ModifyPageStyle{myheadings}{nombre_position=bottom-left,running_head_position=top-left}
-  \else
+  }{
     \ModifyPageStyle{plain}{nombre_position={top-center}}
     \ModifyPageStyle{headings}{nombre=\thepage,nombre_position=bottom-center,running_head_position=top-center}
     \ModifyPageStyle{myheadings}{nombre_position=bottom-center,running_head_position=top-center}
-  \fi
-\else% yoko
+  }
+}{% yoko
   \RenewPageStyle{plain}{nombre=\thepage,odd_running_head={},even_running_head={},nombre_position={bottom-center},clear_markcommand=false}
   \ModifyPageStyle{headings}{nombre=\thepage,nombre_position=bottom-center,running_head_position=top-center}
   \NewPageStyle{myheadings}{nombre=\thepage,nombre_position=bottom-center,running_head_position=top-center,odd_running_head=\rightmark,even_running_head=\leftmark,clear_markcommand=false}
-\fi
+}
 \ModifyPageStyle{plain}{font=\small}
 \ModifyPageStyle{headings}{font=\small}
 \ModifyPageStyle{myheadings}{font=\small}
@@ -6064,18 +6080,18 @@
 
 %.. 注
 \jlreqsetup{reference_mark=inline}
-\if at tate
+\legacy_if:nTF { @tate } {
   \jlreqsetup{footnote_indent=1\jlreq at zw}% 根拠なし
-\else
+}{
   \jlreqsetup{footnote_indent=0pt}% (4.2.5.b)
-\fi
+}
 \jlreqsetup{footnote_second_indent=1\jlreq at zw}
 \jlreqsetup{endnote_second_indent=2\jlreq at zw}
 \jlreqsetup{endnote_position=headings}
-\ifdim\jlreq at sidenote@length>0pt
+\dim_compare:nT { \jlreq at sidenote@length>0pt } {
   \jlreqsetup{sidenote_type=number}
   \jlreqsetup{sidenote_symbol=*,sidenote_keyword_font={}}
-\fi
+}
 
 %.. キャプション
 \jlreqsetup{
@@ -6087,7 +6103,7 @@
 }
 
 %.. 箇条書き
-\if at tate
+\legacy_if:nTF { @tate } {
   \renewcommand{\theenumi}{\jlreq at Kanji{enumi}}
   \renewcommand{\theenumii}{\tatechuyoko*{\@arabic\c at enumii}}
   \renewcommand{\theenumiii}{\tatechuyoko*{\@arabic\c at enumiii}}
@@ -6096,7 +6112,7 @@
   \newcommand{\labelenumii}{\theenumii}
   \newcommand{\labelenumiii}{\theenumiii}
   \newcommand{\labelenumiv}{\theenumiv}
-\else
+}{
   \renewcommand{\theenumi}{\@arabic\c at enumi}
   \renewcommand{\theenumii}{\@alph\c at enumii}
   \renewcommand{\theenumiii}{\@roman\c at enumiii}
@@ -6105,7 +6121,7 @@
   \newcommand{\labelenumii}{(\theenumii)\hspace{.5\jlreq at zw}}
   \newcommand{\labelenumiii}{\theenumiii.\hspace{.5\jlreq at zw}}
   \newcommand{\labelenumiv}{\theenumiv.\hspace{.5\jlreq at zw}}
-\fi
+}
 \renewcommand{\p at enumii}{\theenumi}
 \renewcommand{\p at enumiii}{\theenumi(\theenumii)}
 \renewcommand{\p at enumiv}{\p at enumiii\theenumiii}
@@ -6112,13 +6128,13 @@
 
 \newcommand{\labelitemi}{\hbox to 1\jlreq at zw{\hss\textbullet\hss}}
 %\newcommand{\labelitemi}{•}
-\if at tate
+\legacy_if:nTF { @tate } {
   \newcommand{\labelitemii}{○}
   \newcommand{\labelitemiii}{*}
-\else
+}{
   \newcommand{\labelitemii}{\hbox to 1\jlreq at zw{\hss\textendash\hss}}
   \newcommand{\labelitemiii}{\hbox to 1\jlreq at zw{\hss\textasteriskcentered\hss}}
-\fi
+}
 \newcommand{\labelitemiv}{\hbox to 1\jlreq at zw{\hss ・\hss}}
 
 % 見出しが一つ上のレベルからどのくらいずれているかを入れる.
@@ -6139,7 +6155,6 @@
 }
 
 %.. 引用
-\ExplSyntaxOn
 \jlreqsetup{
   quote_indent=2\jlreq at zw,
   quote_end_indent=0pt,
@@ -6170,11 +6185,11 @@
     mainmatter_precode = {},
     mainmatter_postcode = {},
   }
-  \if at openright
+  \legacy_if:nTF { @openright } {
     \jlreqsetup{backmatter_pagebreak=cleardoublepage}
-  \else
+  }{
     \jlreqsetup{backmatter_pagebreak=clearpage}
-  \fi
+  }
   \jlreqsetup{
     backmatter_pagestyle = plain,
     backmatter_counter = {
@@ -6193,7 +6208,7 @@
   }
 }
 \str_if_eq:VnTF \jlreq at article@type { article } {
-  \if at tate
+  \legacy_if:nTF { @tate } {
     \jlreqsetup{
       appendix_counter = {
         section = {value = 0, the = {\tatechuyoko*{\Alph{section}}}},
@@ -6200,7 +6215,7 @@
         subsection = {value = 0},
       }
     }
-  \else
+  }{
     \jlreqsetup{
       appendix_counter = {
         section = {value = 0, the = {\Alph{section}}},
@@ -6207,36 +6222,35 @@
         subsection = {value = 0},
       }
     }
-  \fi
+  }
  \jlreqsetup{appendix_heading = {},appendix_precode = {},appendix_postcode = {}}
 }{%book, report
-  \if at tate
+  \legacy_if:nTF { @tate } {
     \jlreqsetup{
       appendix_counter = {
         chapter = {value = 0, the = {\tatechuyoko*{\Alph{chapter}}}},
       }
     }
- \else
+  }{
     \jlreqsetup{
       appendix_counter = {
         chapter = {value = 0, the = {\Alph{chapter}}},
       }
     }
- \fi
- \jlreqsetup{
-   appendix_heading = {
-     chapter = {label_format = {付録\thechapter}}
-   },
-   appendix_postcode = {%
-     \str_if_eq:VnT \jlreq at current@pagestyle { headings } {
-       \def\chaptermark#1{\markboth{付録\thechapter\quad #1}{}}%
-       \ModifyPageStyle{headings}{mark_format={_chapter={付録\thechapter\quad #1}}}%
-     }{}%
-   },
-   appendix_precode = {}
- }
+  }
+  \jlreqsetup{
+    appendix_heading = {
+      chapter = {label_format = {付録\thechapter}}
+    },
+    appendix_postcode = {%
+      \str_if_eq:VnT \jlreq at current@pagestyle { headings } {
+        \def\chaptermark#1{\markboth{付録\thechapter\quad #1}{}}%
+        \ModifyPageStyle{headings}{mark_format={_chapter={付録\thechapter\quad #1}}}%
+      }{}%
+    },
+    appendix_precode = {}
+  }
 }
-\ExplSyntaxOff
 \jlreqsetup{theindex_pagestyle=plain}
 \jlreqsetup{year_style=seireki}
 \jlreqsetup{
@@ -6267,6 +6281,8 @@
   \onecolumn
   \raggedbottom
 \fi
+
+\ExplSyntaxOff
 \endinput
 
 

Modified: trunk/Master/texmf-dist/tex/luatex/jlreq/jfm-jlreq.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/jlreq/jfm-jlreq.lua	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/tex/luatex/jlreq/jfm-jlreq.lua	2021-07-22 20:39:40 UTC (rev 60015)
@@ -15,26 +15,26 @@
 local stretch_width = 0.25 -- 空き第四段階の空き量
 
 local hyphen_glue = {
-	[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
-	[2] = {0, 0, 0},
-	[300] = {0, 0, 0},
-	[301] = {0, 0, 0},
-	[302] = {0, 0, 0},
-	[4] = {0, 0, 0},
-	[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-	[6] = {0, 0, 0},
-	[7] = {0, 0, 0},
-	[8] = {0, stretch_width, 0, priority = {-1,0}},
-	[9] = {0, 0, 0},
-	[10] = {0, 0, 0},
-	[11] = {0, 0, 0},
-	[12] = {0, stretch_width, 0, priority = {-1,0}},
-	[13] = {0, stretch_width, 0, priority = {-1,0}},
-	[14] = {0, stretch_width, 0, priority = {-1,0}},
-	[15] = {0, stretch_width, 0, priority = {-1,0}},
-	[16] = {0, stretch_width, 0, priority = {-1,0}},
-	[0] = {0, stretch_width, 0, priority = {-1,0}},
-	[27] = {0, stretch_width, 0, priority = {-1,0}},
+	[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}, kanjiskip_natural = 1},
+	[2] = {0, 0, 0, kanjiskip_natural = 1},
+	[300] = {0, 0, 0, kanjiskip_natural = 1},
+	[301] = {0, 0, 0, kanjiskip_natural = 1},
+	[302] = {0, 0, 0, kanjiskip_natural = 1},
+	[4] = {0, 0, 0, kanjiskip_natural = 1},
+	[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+	[6] = {0, 0, 0, kanjiskip_natural = 1},
+	[7] = {0, 0, 0, kanjiskip_natural = 1},
+	[8] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+	[9] = {0, 0, 0, kanjiskip_natural = 1},
+	[10] = {0, 0, 0, kanjiskip_natural = 1},
+	[11] = {0, 0, 0, kanjiskip_natural = 1},
+	[12] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+	[13] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+	[14] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+	[15] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+	[16] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+	[0] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+	[27] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
 --[[
 	[20] = {0, 0, 0},
 	[21] = {0, 0, 0},
@@ -65,26 +65,26 @@
 		width = 0.5,height = 0.88,depth = 0.12,
 		align = 'right',
 		glue = {
-			[1] = {0, 0, 0},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
-			[8] = {0, 0, 0},
-			[9] = {0, 0, 0},
-			[10] = {0, 0, 0},
-			[11] = {0, 0, 0},
-			[12] = {0, 0, 0},
-			[13] = {0, 0, 0},
-			[14] = {0, 0, 0},
-			[15] = {0, 0, 0},
-			[16] = {0, 0, 0},
-			[0] = {0, 0, 0},
-			[27] = {0, 0, 0},
+			[1] = {0, 0, 0, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+			[8] = {0, 0, 0, kanjiskip_natural = 1},
+			[9] = {0, 0, 0, kanjiskip_natural = 1},
+			[10] = {0, 0, 0, kanjiskip_natural = 1},
+			[11] = {0, 0, 0, kanjiskip_natural = 1},
+			[12] = {0, 0, 0, kanjiskip_natural = 1},
+			[13] = {0, 0, 0, kanjiskip_natural = 1},
+			[14] = {0, 0, 0, kanjiskip_natural = 1},
+			[15] = {0, 0, 0, kanjiskip_natural = 1},
+			[16] = {0, 0, 0, kanjiskip_natural = 1},
+			[0] = {0, 0, 0, kanjiskip_natural = 1},
+			[27] = {0, 0, 0, kanjiskip_natural = 1},
 --[[
 			[20] = {0, 0, 0},
 			[21] = {0, 0, 0},
@@ -107,26 +107,26 @@
 		width = 0.5,height = 0.88,depth = 0.12,
 		align = 'left',
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[301] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[302] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[4] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
-			[8] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[9] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[10] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[11] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[12] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[13] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[14] = {0, stretch_width, 0, priority = {-1,0}},
-			[15] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[16] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[0] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[27] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+			[1] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[301] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[302] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[4] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+			[8] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[9] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[10] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[11] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[12] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[13] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[14] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[15] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[16] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[0] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[27] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
@@ -170,26 +170,26 @@
 		width = 1,height = 0.88,depth = 0.12,
 		align = 'middle',
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, stretch_width, 0.25, ratio = 1, priority = {-1,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
-			[8] = {0, stretch_width, 0, priority = {-1,0}},
-			[9] = {0, 0, 0},
-			[10] = {0, 0, 0},
-			[11] = {0, 0, 0},
-			[12] = {0, stretch_width, 0, priority = {-1,0}},
-			[13] = {0, stretch_width, 0, priority = {-1,0}},
-			[14] = {0, stretch_width, 0, priority = {-1,0}},
-			[15] = {0, stretch_width, 0, priority = {-1,0}},
-			[16] = {0, stretch_width, 0, priority = {-1,0}},
-			[0] = {0, stretch_width, 0, priority = {-1,0}},
---			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, stretch_width, 0.25, ratio = 1, priority = {-1,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+			[8] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[9] = {0, 0, 0, kanjiskip_natural = 1},
+			[10] = {0, 0, 0, kanjiskip_natural = 1},
+			[11] = {0, 0, 0, kanjiskip_natural = 1},
+			[12] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[13] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[14] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[15] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[16] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[0] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+--			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
@@ -212,26 +212,26 @@
 		width = 0.5,height = 0.88,depth = 0.12,
 		align = 'middle',
 		glue = {
-			[1] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
-			[2] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
-			[300] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
-			[301] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
-			[302] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
-			[4] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
-			[5] = {0.5, 0, 0.5, ratio = 0.5, priority = {0,-1}},
-			[6] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
-			[7] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
-			[8] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
-			[9] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
-			[10] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
-			[11] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
-			[12] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
-			[13] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
-			[14] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
-			[15] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
-			[16] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
-			[0] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
-			[27] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
+			[1] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}, kanjiskip_natural = 1},
+			[2] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}, kanjiskip_natural = 1},
+			[300] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}, kanjiskip_natural = 1},
+			[301] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}, kanjiskip_natural = 1},
+			[302] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}, kanjiskip_natural = 1},
+			[4] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}, kanjiskip_natural = 1},
+			[5] = {0.5, 0, 0.5, ratio = 0.5, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}, kanjiskip_natural = 1},
+			[7] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}, kanjiskip_natural = 1},
+			[8] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}, kanjiskip_natural = 1},
+			[9] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}, kanjiskip_natural = 1},
+			[10] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}, kanjiskip_natural = 1},
+			[11] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}, kanjiskip_natural = 1},
+			[12] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}, kanjiskip_natural = 1},
+			[13] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}, kanjiskip_natural = 1},
+			[14] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}, kanjiskip_natural = 1},
+			[15] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}, kanjiskip_natural = 1},
+			[16] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}, kanjiskip_natural = 1},
+			[0] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}, kanjiskip_natural = 1},
+			[27] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
 			[21] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
@@ -254,26 +254,26 @@
 		width = 0.5,height = 0.88,depth = 0.12,
 		align = 'left',
 		glue = {
-			[1] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
-			[2] = {0, 0, 0},
-			[300] = {0.5, 0, 0, ratio = 0},
-			[301] = {0.5, 0, 0, ratio = 0},
-			[302] = {0.5, 0, 0, ratio = 0},
-			[4] = {0.5, 0, 0, ratio = 0},
-			[5] = {0.75, 0, 0.25, ratio = 0.33333333, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
-			[8] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
-			[9] = {0.5, 0, 0, ratio = 0},
-			[10] = {0.5, 0, 0, ratio = 0},
-			[11] = {0.5, 0, 0, ratio = 0},
-			[12] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
-			[13] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
-			[14] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
-			[15] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
-			[16] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
-			[0] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
-			[27] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
+			[1] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0.5, 0, 0, ratio = 0, kanjiskip_natural = 1},
+			[301] = {0.5, 0, 0, ratio = 0, kanjiskip_natural = 1},
+			[302] = {0.5, 0, 0, ratio = 0, kanjiskip_natural = 1},
+			[4] = {0.5, 0, 0, ratio = 0, kanjiskip_natural = 1},
+			[5] = {0.75, 0, 0.25, ratio = 0.33333333, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+			[8] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[9] = {0.5, 0, 0, ratio = 0, kanjiskip_natural = 1},
+			[10] = {0.5, 0, 0, ratio = 0, kanjiskip_natural = 1},
+			[11] = {0.5, 0, 0, ratio = 0, kanjiskip_natural = 1},
+			[12] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[13] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[14] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[15] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[16] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[0] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[27] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0.5, 0, 0, ratio = 0},
@@ -296,26 +296,26 @@
 		width = 0.5,height = 0.88,depth = 0.12,
 		align = 'left',
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[301] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[302] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[4] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[5] = {0.75, 0, 0.75, ratio = 0.33333333, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
-			[8] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[9] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[10] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[11] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
-			[12] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[13] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[14] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[15] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[16] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[0] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
-			[27] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+			[1] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[301] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[302] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[4] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[5] = {0.75, 0, 0.75, ratio = 0.33333333, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+			[8] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[9] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[10] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[11] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}, kanjiskip_natural = 1},
+			[12] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[13] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[14] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[15] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[16] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[0] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
+			[27] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
@@ -337,26 +337,26 @@
 		width = 1,height = 0.88,depth = 0.12,
 		align = 'middle',
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
+			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
 			[8] = {0, 0, 0}, -- 空き注4
---			[9] = {0, 0.25, 0, priority = {0,0}},
---			[10] = {0, 0.25, 0, priority = {0,0}},
---			[11] = {0, 0.25, 0, priority = {0,0}},
---			[12] = {0, 0.25, 0, priority = {0,0}},
---			[13] = {0, 0.25, 0, priority = {0,0}},
-			[14] = {0, 0, 0},
---			[15] = {0, 0.25, 0, priority = {0,0}},
---			[16] = {0, 0.25, 0, priority = {0,0}},
-			[0] = {0, 0.25, 0, priority = {0,0}},
-			[27] = {0, 0.25, 0, priority = {0,0}},
+--			[9] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[10] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[11] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[12] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[13] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[14] = {0, 0, 0, kanjiskip_natural = 1},
+--			[15] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[16] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[0] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[27] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0, 0.25, 0, priority = {0,0}},
@@ -377,26 +377,26 @@
 		height = 0.88,depth = 0.12,
 		align = 'middle',
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
-			[8] = {0, stretch_width, 0, priority = {-1,0}},
---			[9] = {0, 0.25, 0, priority = {0,0}},
---			[10] = {0, 0.25, 0, priority = {0,0}},
---			[11] = {0, 0.25, 0, priority = {0,0}},
---			[12] = {0, 0.25, 0, priority = {0,0}},
---			[13] = {0, 0.25, 0, priority = {0,0}},
-			[14] = {0, stretch_width, 0, priority = {-1,0}},
---			[15] = {0, 0.25, 0, priority = {0,0}},
---			[16] = {0, 0.25, 0, priority = {0,0}},
---			[0] = {0, 0.25, 0, priority = {0,0}},
---			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+			[8] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+--			[9] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[10] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[11] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[12] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[13] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[14] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+--			[15] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[16] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[0] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
@@ -417,26 +417,26 @@
 		height = 0.88,depth = 0.12,
 		align = 'middle',
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
-			[8] = {0, stretch_width, 0, priority = {-1,0}},
---			[9] = {0, 0.25, 0, priority = {0,0}},
---			[10] = {0, 0.25, 0, priority = {0,0}},
---			[11] = {0, 0.25, 0, priority = {0,0}},
---			[12] = {0, 0.25, 0, priority = {0,0}},
---			[13] = {0, 0.25, 0, priority = {0,0}},
-			[14] = {0, stretch_width, 0, priority = {-1,0}},
---			[15] = {0, 0.25, 0, priority = {0,0}},
---			[16] = {0, 0.25, 0, priority = {0,0}},
---			[0] = {0, 0.25, 0, priority = {0,0}},
---			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+			[8] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+--			[9] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[10] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[11] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[12] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[13] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[14] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+--			[15] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[16] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[0] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
@@ -457,26 +457,26 @@
 		height = 0.88,depth = 0.12,
 		align = 'middle',
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
-			[8] = {0, stretch_width, 0, priority = {-1,0}},
---			[9] = {0, 0.25, 0, priority = {0,0}},
---			[10] = {0, 0.25, 0, priority = {0,0}},
---			[11] = {0, 0.25, 0, priority = {0,0}},
---			[12] = {0, 0.25, 0, priority = {0,0}},
---			[13] = {0, 0.25, 0, priority = {0,0}},
-			[14] = {0, stretch_width, 0, priority = {-1,0}},
---			[15] = {0, 0.25, 0, priority = {0,0}},
---			[16] = {0, 0.25, 0, priority = {0,0}},
---			[0] = {0, 0.25, 0, priority = {0,0}},
---			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+			[8] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+--			[9] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[10] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[11] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[12] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[13] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[14] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+--			[15] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[16] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[0] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0.25, 0, 0.125, ratio = 0, priority = {1,-3}},
@@ -497,26 +497,26 @@
 		height = 0.88,depth = 0.12,
 		align = 'middle',
 		glue = {
-			[1] = {0.5, 0, 0.5, ratio = 1, priority = {0,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
---			[8] = {0, 0.25, 0, priority = {0,0}},
---			[9] = {0, 0.25, 0, priority = {0,0}},
---			[10] = {0, 0.25, 0, priority = {0,0}},
---			[11] = {0, 0.25, 0, priority = {0,0}},
---			[12] = {0, 0.25, 0, priority = {0,0}},
---			[13] = {0, 0.25, 0, priority = {0,0}},
-			[14] = {0, 0, 0},
---			[15] = {0, 0.25, 0, priority = {0,0}},
---			[16] = {0, 0.25, 0, priority = {0,0}},
-			[0] = {0, 0.25, 0, priority = {0,0}},
-			[27] = {0, 0.25, 0, priority = {0,0}},
+			[1] = {0.5, 0, 0.5, ratio = 1, priority = {0,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+--			[8] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[9] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[10] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[11] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[12] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[13] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[14] = {0, 0, 0, kanjiskip_natural = 1},
+--			[15] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[16] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[0] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[27] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0, 0.25, 0, priority = {0,0}},
@@ -537,26 +537,26 @@
 		height = 0.88,depth = 0.12,
 		align = 'middle',
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
---			[8] = {0, 0.25, 0, priority = {0,0}},
---			[9] = {0, 0.25, 0, priority = {0,0}},
---			[10] = {0, 0.25, 0, priority = {0,0}},
---			[11] = {0, 0.25, 0, priority = {0,0}},
---			[12] = {0, 0.25, 0, priority = {0,0}},
---			[13] = {0, 0.25, 0, priority = {0,0}},
-			[14] = {0, stretch_width, 0, priority = {-1,0}},
---			[15] = {0, 0.25, 0, priority = {0,0}},
---			[16] = {0, 0.25, 0, priority = {0,0}},
-			[0] = {0, 0.25, 0, priority = {0,0}},
-			[27] = {0, 0.25, 0, priority = {0,0}},
+			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+--			[8] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[9] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[10] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[11] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[12] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[13] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[14] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+--			[15] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[16] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[0] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[27] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0, 0.25, 0, priority = {0,0}},
@@ -577,26 +577,26 @@
 		align = 'middle',
 		width= 1,height = 0.88,depth = 0.12,
 		glue = {
-			[1] = {0, stretch_width, 0, priority = {-1,0}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
-			[8] = {0, stretch_width, 0, priority = {-1,0}},
-			[9] = {0, 0, 0},
-			[10] = {0, 0, 0},
-			[11] = {0, 0, 0},
-			[12] = {0, stretch_width, 0, priority = {-1,0}},
-			[13] = {0, stretch_width, 0, priority = {-1,0}},
-			[14] = {0, stretch_width, 0, priority = {-1,0}},
-			[15] = {0, stretch_width, 0, priority = {-1,0}},
-			[16] = {0, stretch_width, 0, priority = {-1,0}},
-			[0] = {0, stretch_width, 0, priority = {-1,0}},
-			[27] = {0, stretch_width, 0, priority = {-1,0}},
+			[1] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+			[8] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[9] = {0, 0, 0, kanjiskip_natural = 1},
+			[10] = {0, 0, 0, kanjiskip_natural = 1},
+			[11] = {0, 0, 0, kanjiskip_natural = 1},
+			[12] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[13] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[14] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[15] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[16] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[0] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
+			[27] = {0, stretch_width, 0, priority = {-1,0}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0, 0, 0},
@@ -617,26 +617,26 @@
 		height = 0.88,depth = 0.12,
 		align = 'middle',
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
---			[8] = {0, 0.25, 0, priority = {0,0}},
---			[9] = {0, 0.25, 0, priority = {0,0}},
---			[10] = {0, 0.25, 0, priority = {0,0}},
---			[11] = {0, 0.25, 0, priority = {0,0}},
---			[12] = {0, 0.25, 0, priority = {0,0}},
---			[13] = {0, 0.25, 0, priority = {0,0}},
-			[14] = {0, 0, 0},
---			[15] = {0, 0.25, 0, priority = {0,0}},
---			[16] = {0, 0.25, 0, priority = {0,0}},
---			[0] = {0, 0.25, 0, priority = {0,0}},
---			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+--			[8] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[9] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[10] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[11] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[12] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[13] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[14] = {0, 0, 0, kanjiskip_natural = 1},
+--			[15] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[16] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[0] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
@@ -659,26 +659,26 @@
 		height = 0.88,depth = 0.12,
 		align = 'middle',
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
---			[8] = {0, 0.25, 0, priority = {0,0}},
---			[9] = {0, 0.25, 0, priority = {0,0}},
---			[10] = {0, 0.25, 0, priority = {0,0}},
---			[11] = {0, 0.25, 0, priority = {0,0}},
---			[12] = {0, 0.25, 0, priority = {0,0}},
---			[13] = {0, 0.25, 0, priority = {0,0}},
-			[14] = {0, 0, 0},
---			[15] = {0, 0.25, 0, priority = {0,0}},
---			[16] = {0, 0.25, 0, priority = {0,0}},
---			[0] = {0, 0.25, 0, priority = {0,0}},
---			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+--			[8] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[9] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[10] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[11] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[12] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[13] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[14] = {0, 0, 0, kanjiskip_natural = 1},
+--			[15] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[16] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[0] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
@@ -716,26 +716,26 @@
 		align = 'middle',
 		width = 1,height = 0.88,depth = 0.12,
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
---			[8] = {0, 0.25, 0, priority = {0,0}},
---			[9] = {0, 0.25, 0, priority = {0,0}},
---			[10] = {0, 0.25, 0, priority = {0,0}},
---			[11] = {0, 0.25, 0, priority = {0,0}},
---			[12] = {0, 0.25, 0, priority = {0,0}},
---			[13] = {0, 0.25, 0, priority = {0,0}},
-			[14] = {0, 0, 0},
---			[15] = {0, 0.25, 0, priority = {0,0}},
---			[16] = {0, 0.25, 0, priority = {0,0}},
---			[0] = {0, 0.25, 0, priority = {0,0}},
---			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+--			[8] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[9] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[10] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[11] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[12] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[13] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+			[14] = {0, 0, 0, kanjiskip_natural = 1},
+--			[15] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[16] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[0] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}, kanjiskip_natural = 1},
 		--[[
 			[20] = {0, 0, 0},
 			[21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
@@ -1003,26 +1003,26 @@
 	[27] = {-- 欧文
 		chars = {'alchar'},
 		glue = {
-			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
-			[2] = {0, 0, 0},
-			[300] = {0, 0, 0},
-			[301] = {0, 0, 0},
-			[302] = {0, 0, 0},
-			[4] = {0, 0, 0},
-			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
-			[6] = {0, 0, 0},
-			[7] = {0, 0, 0},
-			[8] = {0, 0.25, 0, priority = {0,0}},
---			[9] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
---			[10] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
---			[11] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
-			[12] = {0, 0.25, 0, priority = {0,0}},
+			[1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}, kanjiskip_natural = 1},
+			[2] = {0, 0, 0, kanjiskip_natural = 1},
+			[300] = {0, 0, 0, kanjiskip_natural = 1},
+			[301] = {0, 0, 0, kanjiskip_natural = 1},
+			[302] = {0, 0, 0, kanjiskip_natural = 1},
+			[4] = {0, 0, 0, kanjiskip_natural = 1},
+			[5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}, kanjiskip_natural = 1},
+			[6] = {0, 0, 0, kanjiskip_natural = 1},
+			[7] = {0, 0, 0, kanjiskip_natural = 1},
+			[8] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
+--			[9] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}, kanjiskip_natural = 1},
+--			[10] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}, kanjiskip_natural = 1},
+--			[11] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}, kanjiskip_natural = 1},
+			[12] = {0, 0.25, 0, priority = {0,0}, kanjiskip_natural = 1},
 			[13] = {0, 0.25, 0, priority = {0,0}},-- 空け注10
-			[14] = {0, 0, 0},
---			[15] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
---			[16] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
---			[0] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
---			[27] = {0, 0, 0, ratio = 0, priority = {1,0}},
+			[14] = {0, 0, 0, kanjiskip_natural = 1},
+--			[15] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}, kanjiskip_natural = 1},
+--			[16] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}, kanjiskip_natural = 1},
+--			[0] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}, kanjiskip_natural = 1},
+--			[27] = {0, 0, 0, ratio = 0, priority = {1,0}, kanjiskip_natural = 1},
 --[[
 			[20] = {0, 0, 0},
 			[21] = {0, 0.25, 0, priority = {0,0}},

Modified: trunk/Master/texmf-dist/tex/luatex/jlreq/jfm-jlreqv.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/jlreq/jfm-jlreqv.lua	2021-07-22 20:39:10 UTC (rev 60014)
+++ trunk/Master/texmf-dist/tex/luatex/jlreq/jfm-jlreqv.lua	2021-07-22 20:39:40 UTC (rev 60015)
@@ -7,24 +7,66 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
-   [14]={ 0, 0, 0 },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [14]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
   ["left"]=0,
@@ -35,32 +77,128 @@
   ["chars"]={ "(", "〔", "[", "{", "〈", "《", "「", "『", "【", "⦅", "〘", "〖", "«", "〝", "‘", "“" },
   ["depth"]=0.5,
   ["glue"]={
-   [0]={ 0, 0, 0 },
-   { 0, 0, 0 },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   [0]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
-   [8]={ 0, 0, 0 },
-   [9]={ 0, 0, 0 },
-   [10]={ 0, 0, 0 },
-   [11]={ 0, 0, 0 },
-   [12]={ 0, 0, 0 },
-   [13]={ 0, 0, 0 },
-   [14]={ 0, 0, 0 },
-   [15]={ 0, 0, 0 },
-   [16]={ 0, 0, 0 },
-   [27]={ 0, 0, 0 },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [8]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [9]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [10]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [11]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [12]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [13]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [14]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [15]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [16]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [27]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
   ["width"]=0.5,
@@ -75,6 +213,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -82,14 +221,21 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
-   { 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [4]={
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -97,15 +243,27 @@
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -113,6 +271,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -120,6 +279,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -127,6 +287,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -134,6 +295,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -141,6 +303,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -148,6 +311,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [15]={
@@ -154,6 +318,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -161,6 +326,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -168,6 +334,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -175,6 +342,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -182,6 +350,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -189,6 +358,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -205,6 +375,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    {
@@ -211,33 +382,72 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0.25,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [9]={ 0, 0, 0 },
-   [10]={ 0, 0, 0 },
-   [11]={ 0, 0, 0 },
+   [9]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [10]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [11]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [12]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [13]={
@@ -244,6 +454,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [14]={
@@ -250,6 +461,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [15]={
@@ -256,6 +468,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [16]={
@@ -262,11 +475,27 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
   ["width"]=1,
@@ -281,6 +510,7 @@
     0.25,
     0.25,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -1 },
     ["ratio"]=0,
    },
@@ -288,6 +518,7 @@
     0.25,
     0.25,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -1 },
     ["ratio"]=0,
    },
@@ -295,6 +526,7 @@
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0,
    },
@@ -302,6 +534,7 @@
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0,
    },
@@ -309,6 +542,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0.5,
    },
@@ -316,6 +550,7 @@
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0,
    },
@@ -323,6 +558,7 @@
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0,
    },
@@ -330,6 +566,7 @@
     0.25,
     0.25,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -1 },
     ["ratio"]=0,
    },
@@ -337,6 +574,7 @@
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0,
    },
@@ -344,6 +582,7 @@
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0,
    },
@@ -351,6 +590,7 @@
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0,
    },
@@ -358,6 +598,7 @@
     0.25,
     0.25,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -1 },
     ["ratio"]=0,
    },
@@ -365,6 +606,7 @@
     0.25,
     0.25,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -1 },
     ["ratio"]=0,
    },
@@ -372,6 +614,7 @@
     0.25,
     0.25,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -1 },
     ["ratio"]=0,
    },
@@ -379,6 +622,7 @@
     0.25,
     0.25,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -1 },
     ["ratio"]=0,
    },
@@ -386,6 +630,7 @@
     0.25,
     0.25,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -1 },
     ["ratio"]=0,
    },
@@ -393,6 +638,7 @@
     0.25,
     0.25,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -1 },
     ["ratio"]=0,
    },
@@ -400,6 +646,7 @@
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0,
    },
@@ -407,6 +654,7 @@
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0,
    },
@@ -414,6 +662,7 @@
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0,
    },
@@ -431,6 +680,7 @@
     0.5,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
     ["ratio"]=0,
    },
@@ -438,14 +688,21 @@
     0.5,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
     ["ratio"]=0,
    },
-   { 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [4]={
     0.5,
     0,
     0,
+    ["kanjiskip_natural"]=1,
     ["ratio"]=0,
    },
    [5]={
@@ -452,15 +709,27 @@
     0.75,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0.33333333,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0.5,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
     ["ratio"]=0,
    },
@@ -468,6 +737,7 @@
     0.5,
     0,
     0,
+    ["kanjiskip_natural"]=1,
     ["ratio"]=0,
    },
    [10]={
@@ -474,6 +744,7 @@
     0.5,
     0,
     0,
+    ["kanjiskip_natural"]=1,
     ["ratio"]=0,
    },
    [11]={
@@ -480,6 +751,7 @@
     0.5,
     0,
     0,
+    ["kanjiskip_natural"]=1,
     ["ratio"]=0,
    },
    [12]={
@@ -486,6 +758,7 @@
     0.5,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
     ["ratio"]=0,
    },
@@ -493,6 +766,7 @@
     0.5,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
     ["ratio"]=0,
    },
@@ -500,6 +774,7 @@
     0.5,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
     ["ratio"]=0,
    },
@@ -507,6 +782,7 @@
     0.5,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
     ["ratio"]=0,
    },
@@ -514,6 +790,7 @@
     0.5,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
     ["ratio"]=0,
    },
@@ -521,6 +798,7 @@
     0.5,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
     ["ratio"]=0,
    },
@@ -528,6 +806,7 @@
     0.5,
     0,
     0,
+    ["kanjiskip_natural"]=1,
     ["ratio"]=0,
    },
    [301]={
@@ -534,6 +813,7 @@
     0.5,
     0,
     0,
+    ["kanjiskip_natural"]=1,
     ["ratio"]=0,
    },
    [302]={
@@ -540,6 +820,7 @@
     0.5,
     0,
     0,
+    ["kanjiskip_natural"]=1,
     ["ratio"]=0,
    },
   },
@@ -556,6 +837,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -563,14 +845,21 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
-   { 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [4]={
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -578,15 +867,27 @@
     0.75,
     0,
     0.75,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=0.33333333,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -594,6 +895,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -601,6 +903,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -608,6 +911,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -615,6 +919,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -622,6 +927,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -629,6 +935,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -636,6 +943,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -643,6 +951,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -650,6 +959,7 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=0,
    },
@@ -657,6 +967,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -664,6 +975,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -671,6 +983,7 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=0,
    },
@@ -687,6 +1000,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, 0 },
    },
    {
@@ -693,31 +1007,74 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={ 0, 0, 0 },
-   [14]={ 0, 0, 0 },
+   [14]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [27]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, 0 },
    },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
   ["width"]=1,
@@ -731,24 +1088,47 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [14]={
@@ -755,11 +1135,27 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
  },
@@ -772,24 +1168,47 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [14]={
@@ -796,11 +1215,27 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
  },
@@ -813,24 +1248,47 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [14]={
@@ -837,11 +1295,27 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
  },
@@ -854,6 +1328,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, 0 },
    },
    {
@@ -860,30 +1335,73 @@
     0.5,
     0,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
-   [14]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [14]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [27]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, 0 },
    },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
  },
@@ -896,6 +1414,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, 0 },
    },
    {
@@ -902,24 +1421,47 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [14]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [27]={
@@ -926,11 +1468,27 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, 0 },
    },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
  },
@@ -943,6 +1501,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    {
@@ -949,32 +1508,71 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [9]={ 0, 0, 0 },
-   [10]={ 0, 0, 0 },
-   [11]={ 0, 0, 0 },
+   [9]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [10]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [11]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [12]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [13]={
@@ -981,6 +1579,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [14]={
@@ -987,6 +1586,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [15]={
@@ -993,6 +1593,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [16]={
@@ -999,6 +1600,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [27]={
@@ -1005,11 +1607,27 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
   ["width"]=1,
@@ -1023,24 +1641,66 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
-   [14]={ 0, 0, 0 },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [14]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
  },
@@ -1053,24 +1713,66 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
-   [14]={ 0, 0, 0 },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [14]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
  },
@@ -1082,24 +1784,47 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, 0 },
    },
    [12]={
@@ -1106,6 +1831,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, 0 },
    },
    [13]={
@@ -1114,10 +1840,30 @@
     0,
     ["priority"]={ 0, 0 },
    },
-   [14]={ 0, 0, 0 },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [14]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
  },
@@ -1138,6 +1884,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    {
@@ -1144,33 +1891,72 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [9]={ 0, 0, 0 },
-   [10]={ 0, 0, 0 },
-   [11]={ 0, 0, 0 },
+   [9]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [10]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [11]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [12]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [13]={
@@ -1177,6 +1963,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [14]={
@@ -1183,6 +1970,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [15]={
@@ -1189,6 +1977,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [16]={
@@ -1195,6 +1984,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [27]={
@@ -1201,11 +1991,27 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
   ["width"]=0.25,
@@ -1219,6 +2025,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    {
@@ -1225,33 +2032,72 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [9]={ 0, 0, 0 },
-   [10]={ 0, 0, 0 },
-   [11]={ 0, 0, 0 },
+   [9]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [10]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [11]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [12]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [13]={
@@ -1258,6 +2104,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [14]={
@@ -1264,6 +2111,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [15]={
@@ -1270,6 +2118,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [16]={
@@ -1276,6 +2125,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [27]={
@@ -1282,11 +2132,27 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
   ["width"]=0.5,
@@ -1300,6 +2166,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    {
@@ -1306,33 +2173,72 @@
     0.5,
     0.25,
     0.5,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, -2 },
     ["ratio"]=1,
    },
-   { 0, 0, 0 },
-   [4]={ 0, 0, 0 },
+   {
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [4]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [5]={
     0.25,
     0,
     0.25,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ 0, -1 },
     ["ratio"]=1,
    },
-   [6]={ 0, 0, 0 },
-   [7]={ 0, 0, 0 },
+   [6]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [7]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [8]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [9]={ 0, 0, 0 },
-   [10]={ 0, 0, 0 },
-   [11]={ 0, 0, 0 },
+   [9]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [10]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [11]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
    [12]={
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [13]={
@@ -1339,6 +2245,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [14]={
@@ -1345,6 +2252,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [15]={
@@ -1351,6 +2259,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [16]={
@@ -1357,6 +2266,7 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
    [27]={
@@ -1363,11 +2273,27 @@
     0,
     0.25,
     0,
+    ["kanjiskip_natural"]=1,
     ["priority"]={ -1, 0 },
    },
-   [300]={ 0, 0, 0 },
-   [301]={ 0, 0, 0 },
-   [302]={ 0, 0, 0 },
+   [300]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [301]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
+   [302]={
+    0,
+    0,
+    0,
+    ["kanjiskip_natural"]=1,
+   },
   },
   ["height"]=0.5,
   ["width"]=1,



More information about the tex-live-commits mailing list.