texlive[62916] Master/texmf-dist: jlreq (5apr22)

commits+karl at tug.org commits+karl at tug.org
Tue Apr 5 22:20:33 CEST 2022


Revision: 62916
          http://tug.org/svn/texlive?view=revision&revision=62916
Author:   karl
Date:     2022-04-05 22:20:33 +0200 (Tue, 05 Apr 2022)
Log Message:
-----------
jlreq (5apr22)

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.html
    trunk/Master/texmf-dist/doc/latex/jlreq/jlreq.pdf
    trunk/Master/texmf-dist/tex/latex/jlreq/jlreq.cls

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/README-ja.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jlreq/README-ja.md	2022-04-05 20:20:12 UTC (rev 62915)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/README-ja.md	2022-04-05 20:20:33 UTC (rev 62916)
@@ -528,8 +528,15 @@
     - LaTeXのフック関連コードの多くを削除.(まだ安定していなそうなので.)
     - `\RequirePackage{ifthen}`をやめた.
     - upLaTeXにおける`\kcatcode`の再設定をやめた.
+* 2022-04-05
+    - `\jlreqsetup`に`warichu_opening`と`warichu_closing`を追加.
+    - 別行見出し周りのペナルティを少し調整.
+    - `\DeclareFontShape`後の`\selectfont`でエラーが出るバグ修正.
+    - `use_reverse_pagination`がうまく動いていなかったのを修正.
+    - 二番目の柱を使うと不自然に消えることがあるバグの修正.ついでに`\DeclarePageStyle`を書き直した.
+    - `\@makefntext`を調整.
+    - その他バグ修正.
 
-
 --------------
 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	2022-04-05 20:20:12 UTC (rev 62915)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/README.md	2022-04-05 20:20:33 UTC (rev 62916)
@@ -162,8 +162,16 @@
     - Removed many codes relating with LaTeX hooks mechanism (because it seems not stable.)
     - Removed `\RequirePackage{ifthen}`.
     - Removed `\kcatcode`settings with upLaTeX.
+* 2022-04-05
+    - Added `warichu_opening` and `warichu_closing` to `\jlreqsetup`.
+    - Change a little bit penalties around block heading.
+    - Fixed a bug: `\selectfont` after `\DeclareFontShape` raised an error.
+    - Fixed a bug: `use_reverse_pagination` did not work.
+    - Fixed a bug: A second running head disappeared sometimes.
+    - Rewrote `\DeclarePageStyle`.
+    - Deleted `\@makefntext`, define `\@makefntext` directly.
+    - Fixed other bugs.
 
-
 --------------
 Noriyuki Abe
 https://github.com/abenori/jlreq

Modified: trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html	2022-04-05 20:20:12 UTC (rev 62915)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/jlreq-ja.html	2022-04-05 20:20:33 UTC (rev 62916)
@@ -640,6 +640,16 @@
 <li><code>\RequirePackage{ifthen}</code>をやめた.</li>
 <li>upLaTeXにおける<code>\kcatcode</code>の再設定をやめた.</li>
 </ul></li>
+<li>2022-04-05
+<ul>
+<li><code>\jlreqsetup</code>に<code>warichu_opening</code>と<code>warichu_closing</code>を追加.</li>
+<li>別行見出し周りのペナルティを少し調整.</li>
+<li><code>\DeclareFontShape</code>後の<code>\selectfont</code>でエラーが出るバグ修正.</li>
+<li><code>use_reverse_pagination</code>がうまく動いていなかったのを修正.</li>
+<li>二番目の柱を使うと不自然に消えることがあるバグの修正.ついでに<code>\DeclarePageStyle</code>を書き直した.</li>
+<li><code>\@makefntext</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.html
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jlreq/jlreq.html	2022-04-05 20:20:12 UTC (rev 62915)
+++ trunk/Master/texmf-dist/doc/latex/jlreq/jlreq.html	2022-04-05 20:20:33 UTC (rev 62916)
@@ -286,6 +286,17 @@
 <li>Removed <code>\RequirePackage{ifthen}</code>.</li>
 <li>Removed <code>\kcatcode</code>settings with upLaTeX.</li>
 </ul></li>
+<li>2022-04-05
+<ul>
+<li>Added <code>warichu_opening</code> and <code>warichu_closing</code> to <code>\jlreqsetup</code>.</li>
+<li>Change a little bit penalties around block heading.</li>
+<li>Fixed a bug: <code>\selectfont</code> after <code>\DeclareFontShape</code> raised an error.</li>
+<li>Fixed a bug: <code>use_reverse_pagination</code> did not work.</li>
+<li>Fixed a bug: A second running head disappeared sometimes.</li>
+<li>Rewrote <code>\DeclarePageStyle</code>.</li>
+<li>Deleted <code>\@makefntext</code>, define <code>\@makefntext</code> directly.</li>
+<li>Fixed other 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.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/jlreq/jlreq.cls	2022-04-05 20:20:12 UTC (rev 62915)
+++ trunk/Master/texmf-dist/tex/latex/jlreq/jlreq.cls	2022-04-05 20:20:33 UTC (rev 62916)
@@ -5,26 +5,33 @@
 %%
 % (based on JLReq 20200811 https://www.w3.org/TR/2020/NOTE-jlreq-20200811/)
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{jlreq}[2021/11/05 jlreq]
+\ProvidesClass{jlreq}[2022/04/05 jlreq]
 \RequirePackage{l3keys2e}
 \RequirePackage{etoolbox}
-\RequirePackage{jlreq-helpers}
+\RequirePackage{jlreq-helpers}[2021/08/12]
 
 \ExplSyntaxOn
-\tl_new:N \l_jlreq_tmpa_tl
+\int_new:N \l__jlreq_tmpa_int
+\tl_new:N \l__jlreq_tmpa_tl
+\tl_new:N \l__jlreq_tmpb_tl
+\tl_new:N \l__jlreq_tmpc_tl
 \cs_new:Nn \l_jlreq_do: {}
-\str_new:N \l_jlreq_tmpa_str
-\str_new:N \l_jlreq_tmpb_str
-\str_new:N \l_jlreq_tmpc_str
+\str_new:N \l__jlreq_tmpa_str
+\str_new:N \l__jlreq_tmpb_str
+\str_new:N \l__jlreq_tmpc_str
 \bool_new:N \l_jlreq_tmpa_bool
 \clist_new:N \l_jlreq_tmpa_clist
-\seq_new:N \l_jlreq_tmpa_seq
-\dim_new:N \l_jlreq_tmpa_dim
+\seq_new:N \l__jlreq_tmpa_seq
+\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
+\prop_new:N \l__jlreq_tmpa_prop
 
+\tl_new:N \l__jlreq_result_tl
+\prop_new:N \l__jlreq_result_prop
+
 \cs_set:Nn \__jlreq_undeferr:n {\ClassError{jlreq}{Trying~to~delete~\string#1~even~though~it~is~not~defined,~may~be~a~bug}{\@ehc}}
 % クラスファイル内でしか使わないマクロをクラスファイル終了時に未定義にする
 \seq_new:N \g__jlreq_aftercls_deletecs_seq
@@ -66,11 +73,29 @@
   \expandafter\endgroup
   \jlreq at do
 }
+
 \def\jlreq at useoriginalcs#1{%
   \jlreq at if{\ifcsname jlreq at original@#1\endcsname\fi}%
     {\csname jlreq at original@#1\endcsname}%
     {#1}%
 }
+\def\jlreq at useoriginalcs@witharguments#1#2{%
+  \group_begin:
+    \tl_set:Nx \l__jlreq_do_tl {
+      \exp_not:n{\escapechar=`\\\relax}%
+      \exp_not:n{\catcode`@=11\relax}%
+      \exp_not:N \scantokens{%
+        \jlreq at if{\ifcsname jlreq at original@#1\endcsname\fi}%
+          {\exp_not:o {\csname jlreq at original@#1\endcsname}}%
+          {\exp_not:o {\csname #1\endcsname}}%
+          \exp_not:n {#2}%
+      }
+      \exp_not:N \catcode`@=\the\catcode`@\exp_not:N \relax
+      \exp_not:N \escapechar=\the\escapechar\exp_not:N \relax
+    }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
+}
 \def\jlreq at restoreoriginalcs#1{%
   \jlreq at if{\ifcsname jlreq at original@\expandafter\@gobble\string#1\endcsname\fi}%
     {\expandafter\let\expandafter#1\csname jlreq at original@\expandafter\@gobble\string#1\endcsname}{}%
@@ -113,8 +138,7 @@
 }
 \keys_define:nn { jlreq } {
   paper .code:n = {
-    \str_case:nVF {#1} \g__jlreq_papersizelist_tl
-    {
+    \str_case:nVF {#1} \g__jlreq_papersizelist_tl {
       \jlreq at helper@dividebycomma{#1}%
       \legacy_if:nTF { jlreq at result } {
         \setlength{\paperwidth}{\dimexpr\jlreq at resulta\relax}
@@ -303,13 +327,13 @@
 
 %.. 柱とノンブル
 % 本文とヘッダ/フッタの間の空き
-\keys_define:nn { jlreq } { headfoot_verticalposition .tl_set:N = \jlreq at option@headfoot at verticalpos}
+\keys_define:nn { jlreq } { headfoot_verticalposition .tl_set:N = \jlreq at option@headfoot at verticalpos }
 \__jlreq_aftercls_addtodeletecs:N \jlreq at option@headfoot at verticalpos
 % 柱やノンブルの左右の空き
-\keys_define:nn { jlreq } { headfoot_sidemargin .tl_set:N = \jlreq at headfoot@sidemargin}
+\keys_define:nn { jlreq } { headfoot_sidemargin .tl_set:N = \jlreq at headfoot@sidemargin }
 
 %.. 段間
-\keys_define:nn { jlreq } { column_gap .tl_set:N = \jlreq at option@column at gap}
+\keys_define:nn { jlreq } { column_gap .tl_set:N = \jlreq at option@column at gap }
 \__jlreq_aftercls_addtodeletecs:N \jlreq at option@column at gap
 
 %.. 行送り,指定無しの場合は文字サイズの1.7倍とする.(1.5から2倍が好ましい:2.4.2.d 注3)
@@ -500,7 +524,7 @@
 
 % #1の先頭が文字か
 \long\def\jlreq at ifletter#1{%
-  \jlreq at iffirsttoken{#1}{ }{\@secondoftwo}{%
+  \jlreq at iffirsttoken{#1}{~}{\@secondoftwo}{%
     \expandafter\expandafter\expandafter\jlreq at helper@ifletter\jlreq at getfirsttoken#1\jlreq at uniqtoken{}\jlreq at endmark@
   }%
 }
@@ -805,25 +829,29 @@
     \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}
-        \tl_if_in:NnTF \l_jlreq_tmpa_tl { jfm=jlreq} {
-          \tl_if_in:NnTF \l_jlreq_tmpa_tl { jfm=jlreqv }{
-            \tl_replace_all:Nnn \l_jlreq_tmpa_tl { jfm=jlreqv } { jfm=jlreqv-jidori }
+        \tl_set:Nx \l__jlreq_tmpa_tl {#5}
+        \tl_if_in:NnTF \l__jlreq_tmpa_tl { jfm=jlreq} {
+          \tl_if_in:NnTF \l__jlreq_tmpa_tl { jfm=jlreqv }{
+            \tl_replace_all:Nnn \l__jlreq_tmpa_tl { jfm=jlreqv } { jfm=jlreqv-jidori }
           }{
-            \tl_replace_all:Nnn \l_jlreq_tmpa_tl { jfm=jlreq  } { jfm=jlreq-jidori  }
+            \tl_replace_all:Nnn \l__jlreq_tmpa_tl { jfm=jlreq  } { jfm=jlreq-jidori  }
           }
           \cs_set:Nx \l_jlreq_do: {
-            \exp_not:n{ \jlreq at useoriginalcs{DeclareFontShape} {#1} {#2} {#3} { #4-jidori } }
-            { \tl_use:N \l_jlreq_tmpa_tl } {#6}
+            \exp_not:N \jlreq at useoriginalcs@witharguments{DeclareFontShape} {
+              \exp_not:n { {#1} {#2} {#3} { #4-jidori } }
+              { \tl_use:N \l__jlreq_tmpa_tl } { \exp_not:n {#6} }
+            }
           }
         }{
-          \tl_if_in:NnT \l_jlreq_tmpa_tl {<->ssub} {
-            \cs_set:Nn \l_jlreq_do: {\jlreq at useoriginalcs{DeclareFontShape} {#1} {#2} {#3} { #4-jidori } {#5} {#6} }
+          \tl_if_in:NnT \l__jlreq_tmpa_tl {<->ssub} {
+            \cs_set:Nn \l_jlreq_do: {
+              \jlreq at useoriginalcs@witharguments{DeclareFontShape} { {#1} {#2} {#3} { #4-jidori } {#5} {#6} }
+            }
           }
         }
       }
     \exp_after:wN \group_end: \l_jlreq_do:
-    \jlreq at useoriginalcs{DeclareFontShape} {#1} {#2} {#3} {#4} {#5} {#6}
+    \jlreq at useoriginalcs@witharguments{DeclareFontShape} { {#1} {#2} {#3} {#4} {#5} {#6} }
   }
   \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}{}
@@ -890,16 +918,17 @@
 \edef\jlreq at charlist@katakana{アイウエオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモヤユヨラリルレロワヰヱヲンヴ\ifx p\jlreq at engine\else ヷヸヹヺ\fi}% カ゚キ゚ク゚ケ゚コ゚セ゚ツ゚ト゚
 
 %.. 行頭括弧調整
-\jlreq at saveoriginalcs{item}
 \ifx l\jlreq at engine
   % \itemの直後は折り返し行頭と同じにする.
+  \jlreq at saveoriginalcs{@item}
   \cs_set:Nn \__jlreq_hook_everypar: {}
-  \renewcommand*{\item}{%
+  \def\@item[#1]{%
     \cs_set:Nn \__jlreq_hook_everypar: { \cs_set:Nn \__jlreq_hook_everypar: {} \inhibitglue }
+    \jlreq at useoriginalcs{@item}[#1]%
     \expandafter\everypar\expandafter{\the\everypar\__jlreq_hook_everypar:}
-    \jlreq at useoriginalcs{item}%
   }
 \else
+  \jlreq at saveoriginalcs{item}
   \AtBeginDocument{\PushPostHook{par}{\jlreq at hook@everypar}}
   \def\jlreq at hook@everypar{}
   % 非LuaTeXの場合はJFMの入れ替えと\everyparでの処理で対処.
@@ -1156,7 +1185,7 @@
 \ifx l\jlreq at engine
   {
     \catcode` =\active
-    \global\let =\jlreq at zenkakuspace@main
+    \protected\gdef {\futurelet\jlreq at nextchar\jlreq at zenkakuspace@ignorespaces}
   }
   \AtBeginDocument{\catcode` =\active}
 \fi
@@ -1651,7 +1680,7 @@
 %. システム設定
 %.. 逆ノンブル
 \ifjlreq at option@use at reverse@pagination
-  \AtEndDocument{\clearpage\jlreq at reference@immediate at write{lastpage}{\noexpand\arabic{page}}}%
+  \AtEndDocument{\clearpage\jlreq at reference@immediate at write{lastpage}{\arabic{page}}}%
   \def\c at jlreqreversepage{\numexpr\jlreq at reference@ref{lastpage}{0} - \c at page + 1\relax}
   \def\thejlreqreversepage{\arabic{jlreqreversepage}}
 \fi
@@ -1895,9 +1924,8 @@
   \expandafter\xdef\csname jlreq at BlockHeading@spaces at current@space@\the\jlreq at BlockHeading@spaces at current@count\endcsname{%
     \exp_not:o {\jlreq at tempb}%
   }%
-  \def\@tempa##1##2##3{##1}%
+  \long\def\@tempa##1##2##3{##1}%
   \expandafter\xdef\csname jlreq at BlockHeading@spaces at current@before@\the\jlreq at BlockHeading@spaces at current@count\endcsname{%
-    \noexpand\allowbreak
     \exp_not:o {\@tempa#4}%
     \exp_not:o {\jlreq at resulta}%
     \ifjlreq at tempa\unexpanded{%
@@ -1905,11 +1933,11 @@
       \edef\jlreq at BlockHeading@currentpage{\the\jlreq at currentpage}%
     }\fi
   }%
-  \def\@tempa##1##2##3{##2}%
+  \long\def\@tempa##1##2##3{##2}%
   \expandafter\xdef\csname jlreq at BlockHeading@spaces at current@format@\the\jlreq at BlockHeading@spaces at current@count\endcsname{%
     \exp_not:o {\@tempa#4}%
   }%
-  \def\@tempa##1##2##3{##3}%
+  \long\def\@tempa##1##2##3{##3}%
   \expandafter\xdef\csname jlreq at BlockHeading@spaces at current@after@\the\jlreq at BlockHeading@spaces at current@count\endcsname{%
     \exp_not:o {\jlreq at resultc}%
     \ifjlreq at tempa\unexpanded{%
@@ -2115,13 +2143,13 @@
   \jlreq at tempskipa=0pt
   \jlreq at tempskipb=0pt
   \jlreq at tempskipc=0pt
-  \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
+  \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
-  \tl_set_rescan:Nnn \l_jlreq_tmpa_tl {\ExplSyntaxOn}{#2}
-  \__jlreq_BlockHeading_start_analyzespace:V \l_jlreq_tmpa_tl
+  \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}%
@@ -2212,7 +2240,6 @@
 % 行取り情報をゲットだぜ
 % \jlreq at resultに{1 = 前空き}{2 = 後ろ空き}{3 = トータル行数}を入れる
 % #2#3#4はそれぞれ前空き,後ろ開き,トータル行数のデフォルト値
-% *つきは\setkeys*を使う.[]はkeyvalのファミリー.
 \def\jlreq at BlockHeading@gyodori at parsekeyval{%
   \@ifstar{\jlreq at BlockHeading@gyodori at parsekeyval@{*}}{\jlreq at BlockHeading@gyodori at parsekeyval@{}}%
 }
@@ -2241,11 +2268,16 @@
     \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:NF \l__jlreq_before_lines_tl { \tl_set:Nx \l__jlreq_before_space_tl {\exp_not:o {\l__jlreq_before_lines_tl} \exp_not:N \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:NF \l__jlreq_after_lines_tl { \tl_set:Nx \l__jlreq_after_space_tl { a:\exp_not:o {\l__jlreq_after_lines_tl} \exp_not:N \baselineskip } }
     \tl_if_empty:NT \l__jlreq_after_space_tl { \tl_set:Nn \l__jlreq_after_space_tl {#5} }
+    % 内部での空き指定は[asr]:(寸法)の形
+    % prefixのasrは次の意味:
+    % r -> before/after_spaceの指定
+    % a -> before/after_linesの指定
+    % s -> beforelinesの指定だが*つき.
     \cs_set:Nx \l__jlreq_do: {
       \exp_not:n {\def\jlreq at result}{
         {\exp_not:o {\l__jlreq_before_space_tl } }
@@ -2510,7 +2542,11 @@
             {}{}%
           }%
         }%
-        {{}{\exp_not:o {\jlreq at totalformat}}{\exp_not:o {\jlreq at totalformat@after}}}%
+        {{\exp_not:n {
+          \par
+          \addpenalty\@secpenalty
+          \addvspace{0pt}\relax % 改ページ関係(#54,#100),よくわかっていない
+        }}{\exp_not:o {\jlreq at totalformat}}{\exp_not:o {\jlreq at totalformat@after}}}%
       }}%
       \noexpand\def\exp_not:c {#1}{\exp_not:c {jlreq at headingcs@#1}}%
     }%
@@ -2554,7 +2590,7 @@
 % \jlreq at BlockHeading@spaces at current@after@<n>
 %   : n番目の見出しの後ろに出すもの
 % \jlreq at BlockHeading@spaces at current@count
-%   : 現在いくつ目の連続する見出しを処理しているかのカウンター
+%   : 現在いくつの連続する見出しを処理しているかのカウンター
 \newcount\jlreq at BlockHeading@spaces at current@count
 \jlreq at BlockHeading@spaces at current@count=0
 \def\jlreq at BlockHeading@spaces at current@sequence{}
@@ -2973,22 +3009,22 @@
   % 一行で処理したときの見出し長さを計測
   \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}
+    \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} {
+    \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 }{
+      \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_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}%
+      \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}
     }
@@ -3077,18 +3113,18 @@
 \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}
+    \tl_set:Nn \l__jlreq_tmpa_tl {#2}
+    \str_set:Nn \l__jlreq_tmpa_str {#2}
     \str_case_e:nn { \jlreq at HeadingType {#1} } {
       { BlockHeading } {
         \bool_set_false:N \l_jlreq_tmpa_bool
-        \str_if_in:NnT \l_jlreq_tmpa_str { before_space=  } { \bool_set_true:N \l_jlreq_tmpa_bool }
-        \str_if_in:NnT \l_jlreq_tmpa_str { before_space~= } { \bool_set_true:N \l_jlreq_tmpa_bool }
-        \bool_if:NT \l_jlreq_tmpa_bool {\tl_put_left:Nn \l_jlreq_tmpa_tl {before_lines={},} }
+        \str_if_in:NnT \l__jlreq_tmpa_str { before_space=  } { \bool_set_true:N \l_jlreq_tmpa_bool }
+        \str_if_in:NnT \l__jlreq_tmpa_str { before_space~= } { \bool_set_true:N \l_jlreq_tmpa_bool }
+        \bool_if:NT \l_jlreq_tmpa_bool {\tl_put_left:Nn \l__jlreq_tmpa_tl {before_lines={},} }
         \bool_set_false:N \l_jlreq_tmpa_bool
-        \str_if_in:NnT \l_jlreq_tmpa_str { after_space=  } { \bool_set_true:N \l_jlreq_tmpa_bool }
-        \str_if_in:NnT \l_jlreq_tmpa_str { after_space~= } { \bool_set_true:N \l_jlreq_tmpa_bool }
-        \bool_if:NT \l_jlreq_tmpa_bool {\tl_put_left:Nn \l_jlreq_tmpa_tl {after_lines={},}}
+        \str_if_in:NnT \l__jlreq_tmpa_str { after_space=  } { \bool_set_true:N \l_jlreq_tmpa_bool }
+        \str_if_in:NnT \l__jlreq_tmpa_str { after_space~= } { \bool_set_true:N \l_jlreq_tmpa_bool }
+        \bool_if:NT \l_jlreq_tmpa_bool {\tl_put_left:Nn \l__jlreq_tmpa_tl {after_lines={},}}
       }
     }
     \cs_set:Nx \l_jlreq_do: {
@@ -3095,7 +3131,7 @@
       \exp_args:Nc \exp_not:o { jlreq at heading@type@#1 }
       { \exp_not:n { #1 } }
       { \exp_args:Nc \exp_not:o { jlreq at heading@level@#1 } }
-      { \exp_args:Nc \exp_not:o { jlreq at heading@setting@#1 },\exp_not:V \l_jlreq_tmpa_tl }
+      { \exp_args:Nc \exp_not:o { jlreq at heading@setting@#1 },\exp_not:V \l__jlreq_tmpa_tl }
     }
   \exp_after:wN \group_end:
   \l_jlreq_do:
@@ -3257,7 +3293,6 @@
   }
 }
 
-\newcommand{\@makefntext}[1]{\jlreq at makefntext{#1}}
 \keys_define:nn { jlreqsetup } {
   footnote_second_indent .code:n = {
     \legacy_if:nF { @tate }{
@@ -3266,27 +3301,29 @@
         ( \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).}}
     }
-    \cs_set:Npn \jlreq at makefntext ##1 {
-      \skip_if_eq:nnF { #1 } { 0pt } { \addtolength{\leftskip}{\glueexpr #1\relax} }
-      % インデントの計算:脚注の長さが文字の整数倍になるように字下げする(4.2.5.b)
-      \group_begin:
-        \@tempdima=\dimexpr\columnwidth - \jlreq at footnoteindent\relax
-        \@tempdimb=1\jlreq at zw
-        \divide\@tempdima\@tempdimb \multiply\@tempdima\@tempdimb
-        \cs_set:Nx \l__jlreq_do: {
-          \exp_not:N \addtolength { \exp_not:N \leftskip } {\dim_eval:n { \columnwidth - \@tempdima - 0.0001pt } }
-          \exp_not:n {
-            \parindent=1\jlreq at zw
-            \noindent
-            \hskip-\glueexpr #1\relax
-            \jlreq at referencemark@format{\@thefnmark}%
-            \hskip\glueexpr 1\jlreq at zw\relax
+    % ほかからの更新があったならばこれ以上触らない.
+    \jlreq at if{\ifx\jlreq at saved@@makefntext\@makefntext\fi}{
+      \cs_set:Npn \@makefntext ##1 {
+        \skip_if_eq:nnF { #1 } { 0pt } { \addtolength{\leftskip}{\glueexpr #1\relax} }
+        % インデントの計算:脚注の長さが文字の整数倍になるように字下げする(4.2.5.b)
+        \group_begin:
+          \@tempdima=\dimexpr\columnwidth - \jlreq at footnoteindent\relax
+          \@tempdimb=1\jlreq at zw
+          \divide\@tempdima\@tempdimb \multiply\@tempdima\@tempdimb
+          \cs_set:Nx \l__jlreq_do: {
+            \exp_not:N \addtolength { \exp_not:N \leftskip } {\dim_eval:n { \columnwidth - \@tempdima - 0.0001pt } }
           }
-        }
-      \exp_after:wN \group_end:
-      \l__jlreq_do:
-      ##1
-    }
+        \exp_after:wN \group_end:
+        \l__jlreq_do:
+        \parindent=1\jlreq at zw
+        \noindent
+        \hskip-\glueexpr #1\relax
+        \hbox{\jlreq at referencemark@format{\@thefnmark}}%
+        \hskip\glueexpr 1\jlreq at zw\relax
+        ##1%
+      }
+      \let\jlreq at saved@@makefntext=\@makefntext
+    }{}
   }
 }
 
@@ -3590,7 +3627,7 @@
     \jlreq at tempafalse % headingsが指定された
     \jlreq at tempbfalse % paragraphが指定された
     % \jlreq at tempcにセクション名たちを入れていく
-    \seq_clear:N \l_jlreq_tmpa_seq
+    \seq_clear:N \l__jlreq_tmpa_seq
     \clist_map_variable:nNn {#1} \jlreq at tempa {
       \tl_set:Nx \@tempa { \tl_trim_spaces:o \@tempa }
       \str_case_e:nnF {\jlreq at tempa} {
@@ -3601,7 +3638,7 @@
         }
       }{
         \str_if_eq:eeTF { \str_head:N \jlreq at tempa } {_} {
-          \seq_put_left:Nx \l_jlreq_tmpa_seq { \tl_tail:N \jlreq at tempa }
+          \seq_put_left:Nx \l__jlreq_tmpa_seq { \tl_tail:N \jlreq at tempa }
         }{
          \ClassError{jlreq}{Invalid~value~\jlreq at tempa\space in~endnote_position}{\@ehc}
         }
@@ -3623,7 +3660,7 @@
       \cs_set:Nn \g__jlreq_endnote_hook_beforeheading:n {\theendnotes}
     \else
       \tl_set:Nn \l__jlreq_tmpa_tl {}
-      \seq_map_inline:Nn \l_jlreq_tmpa_seq {
+      \seq_map_inline:Nn \l__jlreq_tmpa_seq {
         \tl_if_empty:nF {##1} {
           \tl_put_right:Nn \l__jlreq_tmpa_tl { {##1} {\theendnotes} }
         }
@@ -3765,6 +3802,21 @@
   \ifvmode\leavevmode\fi
   \IfBooleanTF {#1} { \jlreq at inlinenote@noauto {#2} } { \jlreq at inlinenote@auto {#2} }
 }
+\keys_define:nn { jlreqsetup } {
+  warichu_opening .code:n = {
+    \tl_set:Nn \l__jlreq_tmpa_tl {}
+    \str_set:Nx \l__jlreq_tmpa_str { \tl_to_str:n {#1} }
+    \str_set:Nx \l__jlreq_tmpa_str { \str_head:N \l__jlreq_tmpa_str }
+    \tl_map_inline:Nn \jlreq at charlist@openingbrackets {
+      \str_if_eq:eeT { \l__jlreq_tmpa_str } { \tl_to_str:n {##1} } {
+        \tl_set:Nn \l__jlreq_tmpa_tl { \jlreq at open@bracket at before@space }
+      }
+    }
+    \edef\jlreq at warichu@opening{\expandonce{\l__jlreq_tmpa_tl}\unexpanded{#1}}
+  },
+  warichu_closing .tl_set:N = \jlreq at warichu@closing
+}
+\keys_set:nn { jlreqsetup } { warichu_opening = {(}, warichu_closing = {)} }
 
 \def\jlreq at inlinenote@auto#1{%
   % 割注初め括弧の前の場所を保存
@@ -3772,11 +3824,11 @@
   % \jlreq at tempdimbに,現在行の残り長さを入れる
   \jlreq at tempdimb=\jlreq at rest@linewidth
   % 括弧の分を引いたものが,割注の使える長さ
-  \setbox\@tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize\inhibitglue\jlreq at open@bracket at before@space(\inhibitglue}%
+  \setbox\@tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize\inhibitglue\jlreq at warichu@opening\inhibitglue}%
   \addtolength{\jlreq at tempdimb}{-\wd\@tempboxa}%
   \ifdim\jlreq at tempdimb<0pt\jlreq at tempdimb=\linewidth\fi
   {%
-    \setbox\jlreq at tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize\inhibitglue \jlreq at open@bracket at before@space(}%
+    \setbox\jlreq at tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize\inhibitglue\jlreq at warichu@opening}%
     \jlreq at box@putcenter\jlreq at tempboxa
   }%
   % 「初回」時はここに強制改行を入れる.これにより現在位置の取得がより正しくなる……といいなぁ
@@ -3831,7 +3883,7 @@
     \splitmaxdepth=\maxdimen
     % 現在行の残り長さを思い出す
     \jlreq at tempdimb=\jlreq at rest@linewidth
-    \setbox\@tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize\inhibitglue\jlreq at open@bracket at before@space(\inhibitglue}%
+    \setbox\@tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize\inhibitglue\jlreq at warichu@opening\inhibitglue}%
     \addtolength{\jlreq at tempdimb}{-\wd\@tempboxa}%
     \setbox\@tempboxa=\box\jlreq at resultbox
     \@whilenum\@tempcnta<\jlreq at inlinenote@lines\do{%
@@ -3871,7 +3923,7 @@
 }
 
 \def\jlreq at inlinenote@noauto#1{%
-  \setbox\jlreq at tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize\inhibitglue\jlreq at open@bracket at before@space(}%
+  \setbox\jlreq at tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize\inhibitglue\jlreq at warichu@opening}%
   \inhibitglue\jlreq at box@putcenter\jlreq at tempboxa
   \jlreq at inlinenote@noauto@#1\\\jlreq at endmark\jlreq at endmark
   \jlreq at inlinenote@endnote
@@ -3909,7 +3961,7 @@
 \def\jlreq at inlinenote@endnote{%
   \jlreq at in@inlinenotefalse
   {%
-    \setbox\jlreq at tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize)}%
+    \setbox\jlreq at tempboxa=\hbox{\jlreq at inlinenote@kakkofontsize\inhibitglue\jlreq at warichu@closing}%
     \jlreq at box@putcenter\jlreq at tempboxa
     \inhibitglue
   }%
@@ -4053,14 +4105,6 @@
   }%
 }
 
-% #1のleftとrightを入れ替えて#1に代入
-\def\jlreq at reverse@leftright#1{%
-  \str_case_e:nn {#1} {
-    { left  }{ \def#1{right} }
-    { right }{ \def#1{left}  }
-  }%
-}
-
 %.. マークの拡張
 \def\jlreq at markregistername#1{jlreq at extramark@register@#1}
 \def\jlreq at extraleftmark#1{\jlreq at extramark@{#1}{\expandafter\@firstoftwo\botmarks}}
@@ -4071,11 +4115,18 @@
 }
 \def\jlreq at extramark@@#1#2{#2#1\@empty\@empty}
 
-\def\jlreq at setextraleftmark@#1#2{{#2}{\expandafter\@secondoftwo#1}}
-\def\jlreq at setextrarightmark@#1#2{{\expandafter\@firstoftwo#1}{#2}}
-\def\jlreq at setextraleftmark#1#2{\jlreq at setextramark{#1}{#2}{\jlreq at setextraleftmark@}}
-\def\jlreq at setextrarightmark#1#2{\jlreq at setextramark{#1}{#2}{\jlreq at setextrarightmark@}}
-\def\jlreq at setextramark#1#2#3{%
+
+\def\jlreq at extramarkright#1#2{%
+  \jlreq at if{\ifcsname\jlreq at markregistername{#1}\endcsname\fi}{%
+    \expandafter\expandafter\expandafter\jlreq at extramarkright@\csname\jlreq at markregistername{#1}@themark\endcsname{#2}{#1}%
+  }{%
+    \jlreq at extramarkboth{#1}{}{#2}%
+  }%
+}
+\def\jlreq at extramarkright@#1#2#3#4{%
+  \jlreq at extramarkboth{#4}{#1}{#3}%
+}
+\def\jlreq at extramarkboth#1#2#3{
   \jlreq at if{\ifcsname\jlreq at markregistername{#1}\endcsname\fi}{}{%
     \expandafter\newmarks\csname\jlreq at markregistername{#1}\endcsname
     \expandafter\def\csname\jlreq at markregistername{#1}@themark\endcsname{{}{}}%
@@ -4084,306 +4135,668 @@
     \let\label\relax
     \let\index\relax
     \let\glossary\relax
-    \def\jlreq@@themark at csname{\jlreq at markregistername{#1}@themark}%
-    \expandafter\unrestored at protected@xdef\csname\jlreq@@themark at csname\endcsname{%
-      \expandafter#3\expandafter{\csname\jlreq@@themark at csname\endcsname}{#2}%
-    }%
-    \expandafter\expandafter\expandafter\@temptokena\expandafter\expandafter\expandafter{\csname\jlreq@@themark at csname\endcsname}%
+    \expandafter\unrestored at protected@xdef\csname\jlreq at markregistername{#1}@themark\endcsname{ {#2}{#3} }
+    \expandafter\expandafter\expandafter\@temptokena\expandafter\expandafter\expandafter{\csname\jlreq at markregistername{#1}@themark\endcsname}%
     \expandafter\marks\csname\jlreq at markregistername{#1}\endcsname{\the\@temptokena}%
   \endgroup
-  \if at nobreak\ifvmode\nobreak\fi\fi
+  \if at nobreak\ifvmode\nobreak\fi\fi  
 }
+
 \let\jlreq at markboth=\markboth
 \let\jlreq at markright=\markright
 
 %.. \DeclarePageStyle内で使うもの
-% mark情報の取得を行う.
-% #1の中身をみて,#2 = 何段目見出しか,#3 = odd/even,\csname #4@<見出し命令名>\endcsnameに必要情報を追加し,#5の見出し命令名リストに追加
-% #1 at heading@levelにレベルを入れる
-\def\jlreq at pagestyle@setmark#1#2#3#4#5{%
-  \begingroup
-    \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
-            \int_compare:nTF { #2 = 0 } { \exp_not:N \leftmark } { \exp_not:n {\jlreq at extraleftmark{#2}} }
-          \else
-            \int_compare:nTF { #2 = 0 } { \exp_not:N \rightmark } { \exp_not:n {\jlreq at extrarightmark{#2}} }
-          \fi
-        }%
-      }%
-      \edef\jlreq at headingname{\expandafter\@gobble#1}% 見出し命令名
-      \edef\jlreq at tempa{\noexpand\@removeelement{\exp_not:o {\jlreq at headingname}}}%
-      \expandafter\jlreq at tempa\expandafter{#5}{#5}%
-      \@ifundefined{#4@\jlreq at headingname}{\expandafter\def\csname #4@\jlreq at headingname\endcsname{}}{}%
-      \tl_put_right:Nx \jlreq at do {%
-        \exp_not:N \@ifundefined {#4@\jlreq at headingname} { \exp_not:N \@namedef {#4@\jlreq at headingname} {} } {}
-        \noexpand\let\exp_not:c {\expandafter\@gobble\string #1 at heading@level}=\exp_not:c {jlreq at heading@level@\jlreq at headingname}%
-        \exp_not:n {\def#5}{\exp_not:o {#5},\exp_not:o {\jlreq at headingname}}%
-        \exp_not:N \tl_put_right:Nn \exp_not:c {#4@\jlreq at headingname} {{{\int_compare:nT {#2=0} {#3}}{#2}{\ifx r\jlreq at leftright r\else l\fi}}}%
-      }%
-    }{\def\jlreq at do{}}%
-  \expandafter\endgroup
-  \jlreq at do
+%フォーマットを適用する.\def\@tempa##1{#3}して,\@tempa{#2}の結果を#1に返す.
+%#3が値なしだったら#4を使う.
+%#2: もと
+%#3: フォーマット
+%#4: デフォルトフォーマット
+\cs_set:Nn \__jlreq_pagestyle_applyformat:NnNN {
+  % #3が無効の時は,#2が空なら空にする.
+  \bool_if:nTF { \tl_if_empty_p:n {#2} && \tl_if_eq_p:NN #3 \c_novalue_tl } {
+    \tl_set:Nn #1 {#2}
+  }{
+    \group_begin:
+      \tl_set:Nx \l__jlreq_do_tl { \exp_not:n {\def\jlreq at tempa##1}{\tl_if_eq:NNTF #3 \c_novalue_tl {\exp_not:o #4}{\exp_not:o #3}} }
+      \l__jlreq_do_tl
+      \tl_set:Nx \l__jlreq_do_tl { \exp_not:n {\def#1} {\exp_not:o {\jlreq at tempa{#2}} } }
+    \exp_after:wN \group_end:
+    \l__jlreq_do_tl
+  }
 }
 
-% \def\<見出し>mark#1{...}というのを\jlreq at resultに入れる,
-% #1:*ならばextramarkを使う
-% #2: 見出し命令名,#3: mark_format
-% #4: {{mark_formatからさらに調べるやつ (odd|even)}{マークの何番目か.extraでない場合は0}{l or r(leftかrightか)}}の並び
-\def\jlreq at pagestyle@make at headingmark#1#2#3#4{%
-  \begingroup
-    \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{}%
-    }%
-    \jlreq at pagestyle@make at headingmark@{#2}{#3}#4\jlreq at endmark
-    \def\jlreq at do{}% とりあえず#1markの中身を入れていく
-    % leftを設定する時は対応するrightを空にする.
-    \expandafter\ifx\csname jlreq at leftmark@0\endcsname\@empty
-      \expandafter\ifx\csname jlreq at rightmark@0\endcsname\@empty\else
-        \tl_put_right:Nx \jlreq at do {
-          \jlreq at ifempty{#1}{\noexpand\markright}{\noexpand\jlreq at markright}{\exp_args:Nc \exp_not:o {jlreq at rightmark@0}}
-        }%
-      \fi
-    \else
-      \tl_put_right:Nx \jlreq at do {
-        \jlreq at ifempty{#1}{\noexpand\markboth}{\noexpand\jlreq at markboth}{\exp_args:Nc \exp_not:o {jlreq at leftmark@0}}{\exp_args:Nc \exp_not:o {jlreq at rightmark@0}}
-      }%
-    \fi
-    \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
-          \tl_put_right:Nx \jlreq at do {\noexpand\jlreq at setextrarightmark{\jlreq at i}{\exp_args:Nc \exp_not:o {jlreq at rightmark@\jlreq at i}}}%
-        \fi
-      \else
-        \tl_put_right:Nx \jlreq at do{%
-          \noexpand\jlreq at setextraleftmark{\jlreq at i}{\exp_args:Nc \exp_not:o {jlreq at leftmark@\jlreq at i}}%
-          \noexpand\jlreq at setextrarightmark{\jlreq at i}{\exp_args:Nc \exp_not:o {jlreq at rightmark@\jlreq at i}}%
-        }%
-      \fi
-    }%
-    \ifx\jlreq at do\@empty\else
-      \edef\jlreq at do{%
-        \unexpanded{\edef\jlreq at result}{\noexpand\unexpanded{%
-          \noexpand\def\exp_not:c {#2mark}\unexpanded{##1}{%
-            \exp_not:o {\jlreq at do}%
-          }}%
-        }%
-      }%
-    \fi
-  \expandafter\endgroup
-  \jlreq at do
-}%
-\def\jlreq at pagestyle@make at headingmark@#1#2#3{%
-  \jlreq at ifendmark{#3}{}{\jlreq at pagestyle@make at headingmark@@{#1}{#2}#3}%
+\cs_generate_variant:Nn \__jlreq_pagestyle_applyformat:NnNN { NocN }
+
+% mark系の処理をする.
+% #2: 奇数ページ柱(prop,{0,1,2}->柱の中身)
+% #3: 偶数ページ柱(prop,{0,1,2}->柱の中身)
+% #4: mark format(prop,{(見出し名)}->フォーマット)
+% #2,#3の中身が見出し名ならば\leftmark/\rightmarkなどに書き換えられる.
+% #1(prop)に{<見出し名>}{\<見出し名>markの定義}を入れる
+\cs_set:Nn \__jlreq_pagestyle_makemarkcommand:NNNN {
+  \group_begin:
+    \tl_set:Nn \l__jlreq_do_tl { \prop_clear:N #1 }
+    \prop_clear:N \l__jlreq_tmpa_prop % markの定義を入れる.
+    \clist_map_inline:nn { 0,1,2 } {
+      \prop_clear:N \l__jlreq_tmpb_prop % \rightmarkになる\<見出し>markの定義を入れる
+      \prop_clear:N \l__jlreq_tmpc_prop % \leftmarkになる\<見出し>markの定義を入れる
+      \__jlreq_pagestyle_makemarkcommand_aux:NNNnnN \l__jlreq_tmpb_prop \l__jlreq_tmpa_tl #2 { odd  } { ##1 } #4
+      \tl_put_right:No \l__jlreq_do_tl \l__jlreq_tmpa_tl
+      \__jlreq_pagestyle_makemarkcommand_aux:NNNnnN \l__jlreq_tmpc_prop \l__jlreq_tmpa_tl #3 { even } { ##1 } #4
+      \tl_put_right:No \l__jlreq_do_tl \l__jlreq_tmpa_tl
+      \prop_map_inline:Nn \l__jlreq_tmpc_prop {
+        \prop_put:Nnx \l__jlreq_tmpa_prop {####1} {
+          \prop_item:Nn \l__jlreq_tmpa_prop {####1}
+          \int_compare:nNnTF { ##1 } = { 0 } { \exp_not:N \markboth } { \exp_not:N \jlreq at extramarkboth {##1} }
+            { \exp_not:n {####2} }
+            { \prop_item:Nn \l__jlreq_tmpb_prop {####1} }
+        }
+      }
+      \prop_map_inline:Nn \l__jlreq_tmpb_prop {
+        \prop_if_in:NnF \l__jlreq_tmpc_prop {####1} {
+          \prop_put:Nnx \l__jlreq_tmpa_prop {####1} {
+            \prop_item:Nn \l__jlreq_tmpa_prop {####1}
+            \int_compare:nNnTF { ##1 } = { 0 } { \exp_not:N \markright } { \exp_not:N \jlreq at extramarkright {##1} }
+              { \exp_not:n {####2} }
+          }
+        }
+      }
+    }
+    \prop_map_inline:Nn \l__jlreq_tmpa_prop {
+      \tl_put_right:Nx \l__jlreq_do_tl {
+        \exp_not:n { \prop_put:Nnn #1 {##1} } {
+          \exp_not:N \def \exp_not:o { \csname ##1mark\endcsname ####1 } { \exp_not:n {##2} }
+        }
+      }
+    }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
 }
 
-\def\jlreq at pagestyle@make at headingmark@@#1#2#3#4#5{%
-  % \jlreq at tempbに\***markの定義を入れる
-  \edef\jlreq at tempb{%
-    \exp_not:c {the#1}%
-    \noexpand\ifx\exp_not:c {the#1}\unexpanded{\@empty\else\protect\quad\fi}%
-    \unexpanded{##1}%
-  }%
-  \jlreq at parsekeyval@nokey{%
-    \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{\exp_not:o {\jlreq at tempb}}%
-  \else
-    \expandafter\edef\csname jlreq at rightmark@#4\endcsname{\exp_not:o {\jlreq at tempb}}%
-  \fi
-  \jlreq at pagestyle@make at headingmark@{#1}{#2}%
+% mark処理サブ
+% #3: 柱(prop)
+% #4: odd or even
+% #5: 何番目か=0,1,2
+% #6: mark_format(prop)
+% #1(prop)にmark用のフォーマットを入れる.
+% キーは<見出し名>
+% #2に#3の中身を書き換えるコード(\prop_put:Nnn #3 {section}{\rightmark}のような)を入れる
+\cs_set:Nn \__jlreq_pagestyle_makemarkcommand_aux:NNNnnN {
+  \group_begin:
+    \tl_set:Nn \l__jlreq_do_tl { \tl_set:Nn #2 {} }
+    \prop_get:NnN #3 {#5} \l__jlreq_tmpa_tl
+%    \message{TL=\exp_not:o \l__jlreq_tmpa_tl}
+%    \str_set:NV \l__jlreq_tmpa_str \l__jlreq_tmpa_tl
+    \str_if_eq:eeT { \str_head:N \l__jlreq_tmpa_tl } {_} {
+      % 柱の書き換え
+      \str_if_eq:nnTF { #4 } { odd } {
+        \int_compare:nNnTF {#5}={0} {
+          \tl_put_right:Nx \l__jlreq_do_tl {
+            \exp_not:n { \tl_put_right:Nn #2 } { \exp_not:n { \prop_put:Nnn #3 } {#5} { \exp_not:N \rightmark } }
+          }
+        }{
+          \tl_put_right:Nx \l__jlreq_do_tl {
+            \exp_not:n { \tl_put_right:Nn #2 } { \exp_not:n { \prop_put:Nnn #3 } {#5} { \exp_not:n { \jlreq at extrarightmark{#5} } } }
+          }
+        }
+      }{
+        \int_compare:nNnTF {#5}={0} {
+          \tl_put_right:Nx \l__jlreq_do_tl {
+            \exp_not:n { \tl_put_right:Nn #2 } { \exp_not:n { \prop_put:Nnn #3 } {#5} { \exp_not:N \leftmark } }
+          }
+        }{
+          \tl_put_right:Nx \l__jlreq_do_tl {
+            \exp_not:n { \tl_put_right:Nn #2 } { \exp_not:n { \prop_put:Nnn #3 } {#5} { \exp_not:n { \jlreq at extraleftmark{#5} } } }
+          }
+        }
+      }
+      % 見出し名
+      \str_set:Nx \l__jlreq_tmpa_str {\exp_after:wN \use_none:n \l__jlreq_tmpa_tl }
+      % _<見出し名>優先でmark formatを取得して\l__jlreq_tmpb_tlに入れる.
+      \prop_get:NoNF #6 \l__jlreq_tmpa_tl \l__jlreq_tmpb_tl {
+        \prop_get:NnNF #6 {#4} \l__jlreq_tmpb_tl {
+          \tl_set:Nx \l__jlreq_tmpb_tl {
+            \exp_not:c {the\l__jlreq_tmpa_str}
+            \exp_not:N \ifx \exp_not:c {the\l__jlreq_tmpa_str} \exp_not:n {\@empty\else\protect\quad\fi}
+            \exp_not:n {##1}
+          }
+        }
+      }
+      \tl_put_right:Nx \l__jlreq_do_tl {
+        \exp_not:n { \prop_put:Nnn #1 } { \l__jlreq_tmpa_str } { \exp_not:o { \l__jlreq_tmpb_tl } }
+      }
+    }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
 }
 
-% #2 #3 #4と並んだヘッダを作り#1に入れる.#1,#2,#3はコンロトールシークエンスの名前とする.
-\def\jlreq at pagestyle@setheadfoot#1#2#3#4{%
-  \begingroup
-    \edef\jlreq at do{\noexpand\jlreq at pagestyle@setheadfoot@{\unexpanded{#1}}{\exp_args:Nc \exp_not:o {#2}}{\exp_args:Nc \exp_not:o {#3}}{\exp_args:Nc \exp_not:o {#4}}}%
-  \expandafter\endgroup
-  \jlreq at do
+% \prop_item:Nn #1 {#2}が_***だったら***に,そうでなければ空に展開される.
+\cs_set:Nn \__jlreq_pagestyle_get_runninghead_section:Nn {
+  \exp_args:Ne \__jlreq_pagestyle_get_runninghead_section_aux:n { \prop_item:Nn #1 {#2} }
 }
 
-% \edef内だと,#1 != 0ptならば\hskip \dimexpr#1\relaxになる
-\def\jlreq at pagestyle@hskip#1{%
-  \dim_compare:nF { #1 = 0pt }{\noexpand\hskip\noexpand\dimexpr#1\noexpand\relax}%
+\cs_set:Nn \__jlreq_pagestyle_get_runninghead_section_aux:n {
+  \str_if_eq:eeTF { \str_head:n {#1} } {_} { \exp_not:o {\use_none:n #1} } {}
 }
-\def\jlreq at pagestyle@setheadfoot@#1#2#3#4{%
-  \begingroup
-    % - \Cdpは端にそろえるための補正
-    \jlreq at ifempty{#2}{\def\jlreq at left{}}{\edef\jlreq at left{\jlreq at pagestyle@hskip{\jlreq at expand@speciallength{\jlreq at headfoot@sidemargin}\if at tate - \Cdp\fi}\unexpanded{#2}}}%
-    % +\topskip - \Chtは\jlreq at headfoot@sidemargin = 0ptの時に本文の右に一致させるための補正.
-    \jlreq at ifempty{#4}{\def\jlreq at right{}}{\edef\jlreq at right{\unexpanded{#4}\jlreq at pagestyle@hskip{\jlreq at expand@speciallength{\jlreq at headfoot@sidemargin}\if at tate + \topskip - \Cht\fi}}}%
-    \jlreq at ifempty{#3}{%
-      \edef\jlreq at do{\unexpanded{\def#1}{\exp_not:o {\jlreq at left}\hfil\exp_not:o {\jlreq at right}}}%
-      \jlreq at ifempty{#2}{\jlreq at ifempty{#4}{\def\jlreq at do{\def#1{}}}{}}{}%
-    }{% #3を完全に真ん中に配置するために左右の幅を0にしておく
-      \ifx\jlreq at left\@empty\else\edef\jlreq at left{\noexpand\hbox to 0pt{\exp_not:o {\jlreq at left}\noexpand\hss}}\fi
-      \ifx\jlreq at right\@empty\else\edef\jlreq at right{\noexpand\hbox to 0pt{\noexpand\hss\exp_not:o {\jlreq at right}}}\fi
-      \edef\jlreq at do{%
-        \unexpanded{\def#1}{\exp_not:o {\jlreq at left}\hfil\unexpanded{#3}\hfil\exp_not:o {\jlreq at right}}%
-      }%
-    }%
-  \expandafter\endgroup
-  \jlreq at do
-}%
 
-% #1の左右に傍注調整用の空白を入れて#1に代入する
-\def\jlreq at pagestyle@addsidenotemargin at left#1{%
-  \jlreq at pagestyle@addsidenotemargin@{#1}{\jlreq at sidenote@length + \jlreq at sidenote@sep}{}%
+%#1: 位置情報がleft-topのように入っているもの,prop
+%#2: デフォルト
+%#1の中身を書き換えて返す.
+\cs_set:Nn \__jlreq_pagestyle_normalizeposition:Nn {
+  \group_begin:
+    \tl_set:Nn \l__jlreq_do_tl {}
+    \tl_clear:N \l__jlreq_tmpa_tl % デフォルト位置
+    \tl_set:Nx \l__jlreq_tmpa_tl { \prop_item:Nn #1 {0} }
+    \exp_args:No \jlreq at pagestyle@parse at position \l__jlreq_tmpa_tl \l__jlreq_tmpa_tl {#2}
+    \prop_map_inline:Nn #1 {
+      \exp_args:Nnno \jlreq at pagestyle@parse at position {##2} \l__jlreq_tmpb_tl \l__jlreq_tmpa_tl
+      \tl_put_right:Nx \l__jlreq_do_tl {
+        \exp_not:n { \prop_put:Nnn #1 {##1} } {\exp_not:o {\l__jlreq_tmpb_tl} }
+      }
+    }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
 }
-\def\jlreq at pagestyle@addsidenotemargin at right#1{%
-  \jlreq at pagestyle@addsidenotemargin@{#1}{}{\jlreq at sidenote@length + \jlreq at sidenote@sep}%
+
+%#2: 柱
+%#3: フォント
+%#4: 位置
+%#5: 空き
+%#1に返す
+\cs_set:Nn \__jlreq_pagestyle_maketate_runhead:NNNNn {
+  \group_begin:
+    \tl_set:Nn \l__jlreq_result_tl {}
+    \__jlreq_pagestyle_maketate_rearrange:NNNNn \l__jlreq_tmpa_seq #2 #3 #4 {#5}
+    \seq_map_inline:Nn \l__jlreq_tmpa_seq {
+      \tl_set:Nx \l__jlreq_tmpa_tl { \exp_args:No \exp_not:n {\use_i:nn ##1} } % 場所
+      \tl_set:Nx \l__jlreq_tmpb_tl { \exp_args:No \exp_not:n {\use_ii:nn ##1} } % 中身
+      \tl_put_right:Nx \l__jlreq_result_tl {
+        \exp_not:N \hbox to~0pt {
+          \exp_not:n {\hskip\glueexpr\headsep + \headheight}
+          \legacy_if:nF { @tate } { \exp_not:n {+ \topskip - \Cht} }
+          \tl_if_empty:oF \l__jlreq_tmpa_tl { + \exp_not:o \l__jlreq_tmpa_tl } \exp_not:N \relax
+          \exp_not:o \l__jlreq_tmpb_tl
+          \exp_not:N \hss
+        }
+      }
+    }
+    \tl_set:Nx \l__jlreq_do_tl { \exp_not:n { \tl_set:Nn #1 } { \exp_not:o \l__jlreq_result_tl } }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
 }
-\def\jlreq at pagestyle@addsidenotemargin at bothside#1{%
-  \jlreq at pagestyle@addsidenotemargin@{#1}{\jlreq at sidenote@length + \jlreq at sidenote@sep}{\jlreq at sidenote@length + \jlreq at sidenote@sep}%
+\cs_generate_variant:Nn \__jlreq_pagestyle_maketate_runhead:NNNNn { NcNNo }
+
+%#2: ノンブル
+%#3: フォント
+%#4: 位置
+%#5: 空き
+%#1に返す
+\cs_set:Nn \__jlreq_pagestyle_maketate_nombre:NNNNn {
+  \group_begin:
+    \tl_set:Nn \l__jlreq_result_tl {}
+    \__jlreq_pagestyle_maketate_rearrange:NNNNn \l__jlreq_tmpa_seq #2 #3 #4 {#5}
+    \seq_map_inline:Nn \l__jlreq_tmpa_seq {
+      \tl_set:Nx \l__jlreq_tmpa_tl { \exp_args:No \exp_not:n {\use_i:nn ##1} } % 場所
+      \tl_set:Nx \l__jlreq_tmpb_tl { \exp_args:No \exp_not:n {\use_ii:nn ##1} } % 中身
+      \tl_put_right:Nx \l__jlreq_result_tl {
+        \exp_not:N \hbox to~0pt {
+          \exp_not:N \hss
+          \exp_not:o \l__jlreq_tmpb_tl
+          \tl_if_empty:oF \l__jlreq_tmpa_tl {
+            \exp_not:n { \hskip\glueexpr } \exp_not:o \l__jlreq_tmpa_tl \exp_not:N \relax
+          }
+        }
+      }
+    }
+    \tl_set:Nx \l__jlreq_do_tl { \exp_not:n { \tl_set:Nn #1 } { \exp_not:o \l__jlreq_result_tl } }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
 }
-% #2: 左,#3:右,#4:#2 + #3
-\def\jlreq at pagestyle@addsidenotemargin@#1#2#3{%
-  \ifx#1\@empty\else
-    \edef#1{%
-      \jlreq at ifempty{#2}{}{\unexpanded{\hskip-\dimexpr #2\relax}}%
-      \exp_not:o {#1}%
-      \jlreq at ifempty{#3}{}{\unexpanded{\hskip-\dimexpr #3\relax}}%
-    }%
-  \fi
+\cs_generate_variant:Nn \__jlreq_pagestyle_maketate_nombre:NNNNn { NNNNo }
+
+%#2: 中身
+%#3: フォント
+%#4: 位置
+%#5: 空き
+% tate指定のページスタイルの時は,空き指定は
+% (1)なければ前のやつに続いて
+% (2)あれば絶対的な位置指定
+% となる.この関数で,(1)によってまとまるものを一つにまとめて,seqにして返す.
+% #1に{空き}{トークン列}のseqを返す.
+\cs_set:Nn \__jlreq_pagestyle_maketate_rearrange:NNNNn {
+  \group_begin:
+    \tl_set:Nn \l__jlreq_do_tl { \seq_clear:N #1 }
+    \tl_set:Nn \l__jlreq_tmpa_tl {} % 現在処理中
+    \tl_set:Nn \l__jlreq_tmpc_tl {} % 現在の位置
+    \clist_map_inline:nn {0,1,2} {
+      \tl_set:Nx \l__jlreq_tmpb_tl { \prop_item:Nn #2 {##1} }
+      \tl_if_empty:oF \l__jlreq_tmpb_tl {
+        \tl_set:Nx \l__jlreq_tmpb_tl { \prop_item:Nn #4 {##1} } % pos
+        \tl_if_empty:NTF \l__jlreq_tmpb_tl { % pos = empty
+          \tl_put_right:Nx \l__jlreq_tmpa_tl {
+            \tl_if_empty:NF \l__jlreq_tmpa_tl { \exp_not:n { \hskip\glueexpr #5\relax } }
+          }
+        }{
+          \tl_if_empty:oF \l__jlreq_tmpa_tl {
+            \tl_put_right:Nx \l__jlreq_do_tl {
+              \exp_not:n { \seq_put_right:Nn #1 } {
+                { \exp_not:o \l__jlreq_tmpc_tl } { \exp_not:o \l__jlreq_tmpa_tl }
+              }
+            }
+            \tl_set:Nn \l__jlreq_tmpa_tl {}
+          }
+        }
+        \tl_if_empty:oT \l__jlreq_tmpa_tl { \tl_set:Nx \l__jlreq_tmpc_tl { \prop_item:Nn #4 { ##1 } } }
+        \tl_set:Nx \l__jlreq_tmpb_tl { \prop_item:Nn #3 {##1} }
+        \tl_put_right:Nx \l__jlreq_tmpa_tl {
+          \tl_if_empty:NTF \l__jlreq_tmpb_tl 
+            { \prop_item:Nn #2 {##1} }
+            { { \exp_not:o \l__jlreq_tmpb_tl \prop_item:Nn #2 {##1} } }
+        }
+      }
+    }
+    \tl_if_empty:oF \l__jlreq_tmpa_tl {
+      \tl_put_right:Nx \l__jlreq_do_tl {
+        \exp_not:n { \seq_put_right:Nn #1 } { { \exp_not:o \l__jlreq_tmpc_tl } { \exp_not:o \l__jlreq_tmpa_tl } }
+      }
+    }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
 }
 
-% #1が空かつ#4が空でないならば#2に#3と#4の中身を追加し,#4を空にする.引数は全てコントロールシークエンス
-\def\jlreq at pagestyle@addifempty#1#2#3#4{%
-  \ifx#1\@empty\ifx#4\@empty\else\tl_put_right:Nx #2{ \exp_not:o {#3}\exp_not:o {#4} }\def#4{}\fi\fi
+
+%#2: odd/even
+%#3: 位置
+%#2 = evenならば位置を反転させて#1 = strに返す.
+\cs_set:Nn \__jlreq_pagestyle_reversepos_ifeven:Nnn {
+  \str_set:Nn #1 {#3}
+  \str_if_eq:nnT {#2} {even} {
+    \str_if_eq:nnT {#3} {right} { \str_set:Nn #1 {left}  }
+    \str_if_eq:nnT {#3} {left}  { \str_set:Nn #1 {right} }
+  }
 }
 
-\newif\ifjlreq at PageStyle@first
-% #1に入っている{柱1}{柱2}...{柱n}という並びから,実際に出力する柱を構築する.n>=1を仮定する.
-% 間に空白を入れる.
-% #1: ターゲットなコントロールシークエンスの名前,#2:*ならばreverseする,#3:空き
-\def\jlreq at pagestyle@make at runninghead#1#2#3{%
-  \jlreq at if{\expandafter\ifx\csname #1\endcsname\@empty\fi}{}{%
-    \edef\jlreq at do{%
-      \noexpand\jlreq at tempatrue % 最初の処理かフラグ
-      \unexpanded{\jlreq at pagestyle@make at runninghead@{#1}{#2}{#3}}\exp_args:Nc \exp_not:o {#1}\noexpand\jlreq at endmark
-    }%
-    \expandafter\def\csname #1\endcsname{}%
-    \jlreq at do
-    % 項目が二つ以上あった.
-    \ifjlreq at tempa\else\tl_put_left:cn {#1} {\jlreq at PageStyle@firsttrue} \fi
-  }%
+% 各場所(六カ所),柱 or ノンブルのトークン列を作る.#1に返す
+%#2: odd/even
+%#3: 縦方向場所(top/bottom)
+%#4: 横方向場所(left/right/center)
+%#5: 中身(柱 or ノンブル,prop)
+%#6: フォント(prop)
+%#7: 場所(prop)
+%#8: 空き
+\cs_set:Nn \__jlreq_pagestyle_makeyoko_each:NnnnNNNn {
+  \group_begin:
+    \__jlreq_pagestyle_makeyoko_sequence:NnnNNN \l__jlreq_tmpa_seq {#3} {#4} #5 #6 #7
+    \__jlreq_pagestyle_reversepos_ifeven:Nnn \l__jlreq_tmpa_str {#2} {#4}
+    \__jlreq_pagestyle_makeyoko_concat_withspaces:NVNn \l__jlreq_tmpa_tl \l__jlreq_tmpa_str \l__jlreq_tmpa_seq {#8}
+    \tl_set:Nx \l__jlreq_do_tl { \exp_not:n { \tl_set:Nn #1 } { \exp_not:o \l__jlreq_tmpa_tl } }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
 }
-\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 ifempty{#2}{\tl_put_right:cn}{\tl_put_left:cn}{#1}{#4}%
-  }{%
-    % 最初の空でない柱に出会うまでは柱の間の空白を入れない.
-    % 空でない柱に出会ってないならば\ifjlreq at PageStyle@firstはtrue.
-    % 一番最初の\jlreq at PageStyle@firsttrueは後で入れる.
-    \jlreq at ifempty{#2}{\tl_put_right:cn}{\tl_put_left:cn}{#1}{%
-      \protected at edef\jlreq at tempa{#4}%
-      \ifx\jlreq at tempa\@empty\else
-        \ifjlreq at PageStyle@first\else\hskip\glueexpr#3\relax\fi
-        \jlreq at tempa
-        \jlreq at PageStyle@firstfalse
-      \fi
-    }%
-    \jlreq at tempafalse
-    \jlreq at ifendmark{#5}{}{\jlreq at pagestyle@make at runninghead@{#1}{#2}{#3}{#5}}%
-  }%
+\cs_generate_variant:Nn \__jlreq_pagestyle_makeyoko_each:NnnnNNNn { NnnncNNo }
+
+%#2: 縦方向場所(top/bottom)
+%#3: 横方向場所(left/right/center)
+%#4: 中身(柱 or ノンブル,prop)
+%#5: フォント(prop)
+%#6: 場所(prop)
+%#1に左から{フォント}{中身}を並べた配列を返す.
+\cs_set:Nn \__jlreq_pagestyle_makeyoko_sequence:NnnNNN {
+  \group_begin:
+    \tl_set:Nn \l__jlreq_do_tl { \seq_clear:N #1 }
+    \clist_map_inline:nn {0,1,2} {
+      \tl_set:Nx \l__jlreq_tmpa_tl { \prop_item:Nn #4 {##1} }
+      \tl_if_empty:NF \l__jlreq_tmpa_tl {
+        \exp_args:Nxx \tl_if_eq:nnT {{#2}{#3}} { \prop_item:Nn #6 {##1} } {
+          \tl_put_right:Nx \l__jlreq_do_tl {
+            \exp_not:n { \seq_put_right:Nn #1 } { {\prop_item:Nn #5 {##1}}{\exp_not:o \l__jlreq_tmpa_tl} }
+          }
+        }
+      }
+    }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
 }
 
-% #1= cs,#2 = フォーマットの入ったcs,#3 = デフォルトフォーマットの入ったcs
-\def\jlreq at pagestyle@applyformat#1#2#3{%
-  % デフォルト時に限り,\hbox to ***{空トークン}を避ける
-  \ifnum 0\ifx#1\@empty\else 1\fi\ifx#2\relax\else 1\fi>0
-    \edef\jlreq at do{\unexpanded{\def\jlreq at tempa##1}{\ifx#2\relax\exp_not:o {#3}\else\exp_not:o {#2}\fi}}\jlreq at do
-    \edef#1{\expandafter\exp_not:o \expandafter{\expandafter\jlreq at tempa\expandafter{#1}}}%
-  \fi
+% 各場所(左,真ん中,右)のヘッダのトークン列を作る
+%#2: 横方向場所
+%#3: {フォント}{中身}の配列
+%#4: スペース
+%#1に結果のトークン列を入れる
+\cs_set:Nn \__jlreq_pagestyle_makeyoko_concat_withspaces:NnNn {
+  \seq_if_empty:NTF #3 {
+    \tl_set:Nn #1 {}
+  }{
+    \str_if_eq:nnTF {#2}{right}{
+      \__jlreq_pagestyle_concat_withspaces_right:NNn #1 #3 {#4}
+    }{
+      \__jlreq_pagestyle_concat_withspaces_left:NNn #1 #3 {#4}
+    }
+  }
 }
+\cs_generate_variant:Nn \__jlreq_pagestyle_makeyoko_concat_withspaces:NnNn { NVNn }
 
-% フォント情報を追加する.#1:制御綴り名,#2:フォント命令の入っている制御綴名,#1に返す
-\def\jlreq at pagestyle@addfont at tocs#1#2{%
-  \expandafter\ifx\csname #1\endcsname\@empty\else
-    \expandafter\ifx\csname #2\endcsname\@empty\else
-      \expandafter\edef\csname #1\endcsname{{\exp_args:Nc \exp_not:o {#2}\exp_args:Nc \exp_not:o {#1}}}%
-    \fi
-  \fi
+%#2: {フォント}{中身}の配列
+%#3: スペース
+%#1に結果のトークン列を入れる
+\cs_set:Nn \__jlreq_pagestyle_concat_withspaces_left:NNn {
+  \group_begin:
+    \tl_set:Nn \l__jlreq_reuslt_tl {}
+    \seq_pop_right:NN #2 \l__jlreq_tmpc_tl % 最後の項目
+    \seq_map_inline:Nn #2 {
+      \tl_set:Nx \l__jlreq_tmpa_tl { \exp_args:No \exp_not:n {\use_i:nn ##1} }
+      \tl_set:Nx \l__jlreq_tmpb_tl { \exp_args:No \exp_not:n {\use_ii:nn ##1} }
+      \tl_put_right:Nx \l__jlreq_result_tl {
+        \exp_not:n {\setbox\@tempboxa=\hbox}
+          { \tl_if_empty:NTF \l__jlreq_tmpa_tl {\exp_not:o \l__jlreq_tmpb_tl}{\exp_not:o \l__jlreq_tmpa_tl \exp_not:N \l__jlreq_tmpb_tl} }
+        \exp_not:n { \copy\@tempboxa }
+        \exp_not:n { 
+          \ifnum0
+            \ifdim\wd\@tempboxa=0pt~\else 1\fi
+            \ifdim\ht\@tempboxa=0pt~\else 1\fi
+            \ifdim\dp\@tempboxa=0pt~\else 1\fi
+          >0~\hskip\glueexpr #3\relax\fi
+        }
+      }
+    }
+    \cs_set:Nn \l__jlreq_tmpa:nn {
+      \tl_if_empty:nTF{##1} { \exp_not:n {##2} }{ \exp_not:n {{##1##2}} }
+    }
+    \tl_put_right:Nx \l__jlreq_result_tl {\exp_after:wN \l__jlreq_tmpa:nn \l__jlreq_tmpc_tl}
+    \tl_set:Nx \l__jlreq_do_tl {
+      \exp_not:n { \tl_set:Nn #1} {\exp_not:o \l__jlreq_result_tl}
+    }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
 }
-% こちらは#1にトークン列を与える.\edefで展開される.制御綴名#3に代入.
-\def\jlreq at pagestyle@addfont at totokens#1#2#3{%
-  \begingroup
-    \edef\jlreq at do{\noexpand\edef\exp_not:c {#3}{\unexpanded{#1}}}%
-    \expandafter\ifx\csname #2\endcsname\@empty\else
-      \edef\jlreq at tempa{#1}%
-      \ifx\jlreq at tempa\@empty\else
-        \edef\jlreq at do{%
-          \noexpand\edef\exp_not:c {#3}{\noexpand\unexpanded{%
-            {\exp_args:Nc \exp_not:o {#2}\exp_not:o {\jlreq at tempa}}%
-          }}%
-        }%
-      \fi
-    \fi
-  \expandafter\endgroup
-  \jlreq at do
+
+%#2: {フォント}{中身}の配列
+%#3: スペース
+%#1に結果のトークン列を入れる
+\cs_set:Nn \__jlreq_pagestyle_concat_withspaces_right:NNn {
+  \group_begin:
+    \tl_set:Nn \l__jlreq_result_tl {}
+    \bool_set_true:N \l__jlreq_tmpa_bool % 最初か
+    \seq_map_inline:Nn #2 {
+      \tl_set:Nx \l__jlreq_tmpa_tl { \exp_args:No \exp_not:n {\use_i:nn ##1} }
+      \tl_set:Nx \l__jlreq_tmpb_tl { \exp_args:No \exp_not:n {\use_ii:nn ##1} }
+      \bool_if:NTF \l__jlreq_tmpa_bool {
+        \tl_put_right:Nx \l__jlreq_result_tl {
+          \tl_if_empty:NTF \l__jlreq_tmpa_tl {\exp_not:o \l__jlreq_tmpb_tl}{{\exp_not:o \l__jlreq_tmpa_tl \exp_not:o \l__jlreq_tmpb_tl}}
+        }
+      }{
+        \tl_put_right:Nx \l__jlreq_result_tl {
+          \exp_not:n { \setbox\@tempboxa=\hbox}
+            { \tl_if_empty:NTF \l__jlreq_tmpa_tl {\exp_not:o \l__jlreq_tmpb_tl }{\exp_not:o \l__jlreq_tmpa_tl \exp_not:o \l__jlreq_tmpb_tl} }
+          \exp_not:n { 
+            \ifnum0
+              \ifdim\wd\@tempboxa=0pt~\else 1\fi
+              \ifdim\ht\@tempboxa=0pt~\else 1\fi
+              \ifdim\dp\@tempboxa=0pt~\else 1\fi
+            >0~\hskip\glueexpr #3\relax\fi
+          }
+          \exp_not:n { \box\@tempboxa }
+        }
+      }
+      \bool_set_false:N \l__jlreq_tmpa_bool
+    }
+    \tl_set:Nx \l__jlreq_do_tl { \exp_not:n { \tl_set:Nn #1} {\exp_not:o \l__jlreq_result_tl} }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
 }
+\cs_generate_variant:Nn \__jlreq_pagestyle_concat_withspaces_right:NnN {NoN}
 
+
+%#2: odd or even(even時は左右をひっくり返して処理される)
+%#3: 左
+%#4: 真ん中
+%#5: 右
+% #1に返す.
+\cs_set:Nn \__jlreq_pagestyle_concat_left_center_right:Nnnnn {
+  \str_if_eq:nnTF {#2} {odd} {
+    \__jlreq_pagestyle_concat_left_center_right_aux:Nnnn #1 {#3} {#4} {#5}
+  }{
+    % evenでは左右入れ替え
+    \__jlreq_pagestyle_concat_left_center_right_aux:Nnnn #1 {#5} {#4} {#3}
+  }
+}
+
+\cs_generate_variant:Nn \__jlreq_pagestyle_concat_left_center_right:Nnnnn { Nneee }
+
+% #2: 左,#3: 真ん中,#4: 右をくっつける
+% #1に返す
+\cs_set:Nn \__jlreq_pagestyle_concat_left_center_right_aux:Nnnn {
+  \group_begin:
+    \tl_set:Nn \l__jlreq_tmpa_tl {} % 左
+    \tl_set:Nn \l__jlreq_tmpb_tl {} % 右
+    \tl_set:Nn \l__jlreq_tmpc_tl {} % 戻り値
+    \tl_if_empty:nF {#2} {
+      \bool_if:nT { ( !\dim_compare_p:nNn {\jlreq at headfoot@sidemargin}={0pt} ) || \legacy_if_p:n {@tate} }{
+        \tl_set:Nx \l__jlreq_tmpa_tl { \exp_not:n {\hskip\dimexpr} \jlreq at expand@speciallength{\jlreq at headfoot@sidemargin} \legacy_if:nT { @tate } { \exp_not:n { -\Cdp } } \exp_not:N \relax }
+      }
+      \tl_put_right:Nn \l__jlreq_tmpa_tl {#2}
+    }
+    \tl_if_empty:nF {#4} {
+      \tl_set:Nn \l__jlreq_tmpb_tl {#4}
+      % \jlreq at headfoot@sidemargin = 0ptの時に本文の右に一致させるための補正.
+      \bool_if:nT { ( !\dim_compare_p:nNn {\jlreq at headfoot@sidemargin}={0pt} ) || \legacy_if_p:n {@tate} }{
+        \tl_put_right:Nx \l__jlreq_tmpb_tl { \exp_not:n {\hskip\dimexpr} \jlreq at expand@speciallength{\jlreq at headfoot@sidemargin} \legacy_if:nT { @tate } { \exp_not:n { + \topskip - \Cht } } \exp_not:N \relax }
+      }
+    }
+    \tl_if_empty:nTF {#3} {
+      \bool_if:nF { \tl_if_empty_p:n {#2} && \tl_if_empty_p:n {#4} } {
+        \tl_set:Nx \l__jlreq_tmpc_tl { \exp_not:o \l__jlreq_tmpa_tl \exp_not:N \hfil \exp_not:o \l__jlreq_tmpb_tl }
+      }
+    }{
+      % 真ん中のを完全に真ん中に配置するために左右の幅を0にしておく
+      \tl_if_empty:nF { #2 } { \tl_set:Nx \l__jlreq_tmpa_tl { \exp_not:N \hbox to~0pt { \exp_not:o { \l__jlreq_tmpa_tl } \exp_not:N \hss } } }
+      \tl_if_empty:nF { #4 } { \tl_set:Nx \l__jlreq_tmpb_tl { \exp_not:N \hbox to~0pt { \exp_not:o { \l__jlreq_tmpb_tl } \exp_not:N \hss } } }
+      \tl_set:Nx \l__jlreq_tmpc_tl {
+        \exp_not:o \l__jlreq_tmpa_tl\exp_not:N \hfil \exp_not:n {#3} \exp_not:N \hfil \exp_not:o \l__jlreq_tmpb_tl
+      }
+    }
+    \tl_set:Nx \l__jlreq_do_tl { \exp_not:n {\tl_set:Nn #1 } { \exp_not:o \l__jlreq_tmpc_tl } }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
+}
+
+%#2: 横方向位置
+%#3: odd/even
+%#4: 柱
+%#5: ヘッダ
+%#6: 空き
+%#1 に戻す
+\cs_set:Nn \__jlreq_pagestyle_concat_runhead_nombre:Nnnnnn {
+  \tl_if_empty:nTF {#4} {
+    \tl_set:Nn #1 {#5}
+  }{
+    \tl_if_empty:nTF {#5} {
+      \tl_set:Nn #1 {#4}
+    }{
+      \group_begin:
+        \__jlreq_pagestyle_reversepos_ifeven:Nnn \l__jlreq_tmpa_str {#3} {#2}
+        \jlreq at ifleftpage{#3}{
+          \str_if_eq:VnTF \l__jlreq_tmpa_str {right} {
+            \tl_set:Nn \l__jlreq_do_tl {
+              \__jlreq_pagestyle_concat_runhead_nombre_aux_leftpage_right:Nnnn #1 {#4} {#5} {#6}
+            }
+          }{
+            \tl_set:Nn \l__jlreq_do_tl {
+              \__jlreq_pagestyle_concat_runhead_nombre_aux_leftpage_left:Nnnn #1 {#4} {#5} {#6}
+            }
+          }
+        }{
+          \str_if_eq:VnTF \l__jlreq_tmpa_str {left} {
+            \tl_set:Nn \l__jlreq_do_tl {
+              \__jlreq_pagestyle_concat_runhead_nombre_aux_rightpage_left:Nnnn #1 {#4} {#5} {#6}
+            }
+          }{
+            \tl_set:Nn \l__jlreq_do_tl {
+              \__jlreq_pagestyle_concat_runhead_nombre_aux_rightpage_right:Nnnn #1 {#4} {#5} {#6}
+            }
+          }
+        }
+      \exp_after:wN \group_end:
+      \l__jlreq_do_tl
+    }
+  }
+}
+\cs_generate_variant:Nn \__jlreq_pagestyle_concat_runhead_nombre:Nnnnnn { Nnnooo }
+
+% <ノンブル><空き><柱>,左寄せ,ノンブルは常に空でないと仮定する.
+\cs_set:Nn \__jlreq_pagestyle_concat_runhead_nombre_aux_leftpage_left:Nnnn {
+  \tl_set:Nn #1 {
+    #3\hskip\glueexpr #4\relax#2
+  }
+}
+% <ノンブル><空き><柱>,右寄せ
+\cs_set:Nn \__jlreq_pagestyle_concat_runhead_nombre_aux_leftpage_right:Nnnn {
+  \tl_set:Nn #1 {
+    \setbox\jlreq at PageStyle@box=\hbox{#2}
+    #3
+    \ifnum 0
+      \ifdim\wd\jlreq at PageStyle@box=0pt~\else 1\fi
+      \ifdim\ht\jlreq at PageStyle@box=0pt~\else 1\fi
+      \ifdim\dp\jlreq at PageStyle@box=0pt~\else 1\fi
+    >0~\hskip\glueexpr #4\relax\fi
+    \box\jlreq at PageStyle@box
+  }
+}
+% <柱><空き><ノンブル>,左寄せ
+\cs_set:Nn \__jlreq_pagestyle_concat_runhead_nombre_aux_rightpage_left:Nnnn {
+  \tl_set:Nn #1 {
+    \setbox\jlreq at PageStyle@box=\hbox{#2}
+    \copy\jlreq at PageStyle@box
+    \ifnum 0
+      \ifdim\wd\jlreq at PageStyle@box=0pt~\else 1\fi
+      \ifdim\ht\jlreq at PageStyle@box=0pt~\else 1\fi
+      \ifdim\dp\jlreq at PageStyle@box=0pt~\else 1\fi
+    >0~\hskip\glueexpr #4\relax\fi
+    #3
+  }
+}
+% <柱><空き><ノンブル>,右寄せ
+\cs_set:Nn \__jlreq_pagestyle_concat_runhead_nombre_aux_rightpage_right:Nnnn {
+  \tl_set:Nn #1 {
+    #2\hskip\glueexpr #4\relax#3
+  }
+}
+
+% #1の左右に傍注調整用の空白を入れて#1に代入する
+\cs_set:Nn \__jlreq_pagestyle_addsidenotemargin_left:N {
+  \__jlreq_pagestyle_addsidenotemargin_aux:Nnn #1 {\jlreq at sidenote@length + \jlreq at sidenote@sep} {}
+}
+\cs_set:Nn \__jlreq_pagestyle_addsidenotemargin_right:N {
+  \__jlreq_pagestyle_addsidenotemargin_aux:Nnn #1 {} {\jlreq at sidenote@length + \jlreq at sidenote@sep}
+}
+\cs_set:Nn \__jlreq_pagestyle_addsidenotemargin_bothside:N {
+  \__jlreq_pagestyle_addsidenotemargin_aux:Nnn #1 {\jlreq at sidenote@length + \jlreq at sidenote@sep} {\jlreq at sidenote@length + \jlreq at sidenote@sep}
+}
+% #2: 左,#3:右,#4:#2 + #3
+\cs_set:Nn \__jlreq_pagestyle_addsidenotemargin_aux:Nnn {
+  \tl_if_empty:NF #1 {
+    \tl_set:Nx #1 {
+      \tl_if_empty:nF {#2} { \exp_not:n { \hskip-\dimexpr #2\relax } }
+      \exp_not:o #1
+      \tl_if_empty:nF {#3} { \exp_not:n { \hskip-\dimexpr #3\relax } }
+    }
+  }
+}
+
+
 %.. \DeclarePageStyle
-\newbox\jlreq at PageStyle@box
+% markの処理
+% 出力する柱は偶数ページでは\leftmark,奇数ページでは\rightmark.
+% 見出し<HEAD>に\rightmarkがついていれば,\<HAED>markを\markrightに書き換える.
+% \leftmarkならば\markbothを使う.
+% \leftmark\rightmark両方の時は\markboth?
+% 現れる全ての見出しのレベルよりも小さいレベルの見出しについては\<HEAD>markを空にする処理を入れる.
+% 実際の出力:
+%  yoko: 
+%    左ページ(縦奇数ページ横偶数ページ)ではノンブルが左(2.6.1.c),なので<ノンブル><空き><柱>
+%    空きが無駄に入らないように気をつける.(右寄せの場合は柱が空なら空きを入れない.)
+%    \setbox..=して,幅が0か否かで判定する.
+%    右ページでは逆になる.<柱><空き><ノンブル>
+%    空きは柱文字で文字サイズ基準で計算する.
+%    <ノンブル>も<柱>もi,ii,...はiが左になるようにする.
+%    <柱>も<ノンブル>も<i中身><空き><ii中身><空き><iii中身>となる
+%    ただし空きは無駄に入れない.左寄せの場合は<i中身>が空ならばその右の<空き>は入れない.
+%    空かの判定は\protected at edefして\ifx\@emptyで判定する.
+
+\newbox \jlreq at PageStyle@box
+\tl_new:N \l__jlreq_pagestyle_odd_top_format_tl
+\tl_new:N \l__jlreq_pagestyle_even_top_format_tl
+\tl_new:N \l__jlreq_pagestyle_odd_bottom_format_tl
+\tl_new:N \l__jlreq_pagestyle_even_bottom_format_tl
+\prop_new:N \l__jlreq_pagestyle_nombre_prop
+\prop_new:N \l__jlreq_pagestyle_nombre_position_prop
+\prop_new:N \l__jlreq_pagestyle_odd_runninghead_prop
+\prop_new:N \l__jlreq_pagestyle_even_runninghead_prop
+\prop_new:N \l__jlreq_pagestyle_runninghead_position_prop
+\prop_new:N \l__jlreq_pagestyle_nombre_font_prop
+\prop_new:N \l__jlreq_pagestyle_runninghead_font_prop
+\prop_new:N \l__jlreq_pagestyle_mark_format_prop
+\tl_new:N \l__jlreq_pagestyle_command_tl
+\tl_new:N \l__jlreq_pagestyle_gap_tl
+\tl_new:N \l__jlreq_pagestyle_nombre_gap_tl
+\tl_new:N \l__jlreq_pagestyle_runninghead_gap_tl
+% 柱とノンブルの間
+\bool_new:N \l__jlreq_pagestyle_clearmarkcommand_bool
+\bool_new:N \l__jlreq_pagestate_tate_bool
+% 作業用
+\tl_new:N \l__jlreq_pagestyle_markcommands_tl
 \NewDocumentCommand{\DeclarePageStyle} { m +m } {%
   \expandafter\edef\csname jlreq at pagestyle@setting@#1\endcsname{\unexpanded{#2}}%
-  \begingroup
-    % フォーマットを空という可能性もあるかもしれないので,デフォルト値は\relaxで表す.
-    \let\jlreq at oddheadformat\relax
-    \let\jlreq at evenheadformat\relax
-    \let\jlreq at oddfootformat\relax
-    \let\jlreq at evenfootformat\relax
-    % 柱とノンブルの間
-    \newif\ifjlreq at clearmarkcommand
-    \newif\ifjlreq at pstate % PageStyleTATE
+  \group_begin:
+    % フォーマットを空という可能性もあるかもしれないので,デフォルト値は\c_novalue_tlで表す.
+    \tl_set_eq:NN \l__jlreq_pagestyle_odd_top_format_tl \c_novalue_tl
+    \tl_set_eq:NN \l__jlreq_pagestyle_even_top_format_tl \c_novalue_tl
+    \tl_set_eq:NN \l__jlreq_pagestyle_odd_bottom_format_tl \c_novalue_tl
+    \tl_set_eq:NN \l__jlreq_pagestyle_even_bottom_format_tl \c_novalue_tl
     \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,
+      tate .code:n = {\bool_set_true:N \l__jlreq_pagestate_tate_bool},
+      yoko .code:n = {\bool_set_false:N \l__jlreq_pagestate_tate_bool},
+      nombre .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_nombre_prop {0} {##1} },
+      nombre_position .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_nombre_position_prop {0} {##1} },
+      running_head_position .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_runninghead_position_prop {0} {##1} },
+      odd_running_head .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_odd_runninghead_prop {0} {##1} },
+      even_running_head .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_even_runninghead_prop {0} {##1} },
       font .code:n = {
-        \def\jlreq at nombre@font{##1}%
-        \def\jlreq at running@head at font{##1}%
+        \prop_put:Nnn \l__jlreq_pagestyle_nombre_font_prop {0} {##1}
+        \prop_put:Nnn \l__jlreq_pagestyle_runninghead_font_prop {0} {##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,
+      nombre_font .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_nombre_font_prop {0} {##1} },
+      running_head_font .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_runninghead_font_prop {0} {##1} },
+      mark_format .code:n = {
+        \prop_clear:N \l__jlreq_pagestyle_mark_format_prop
+        \prop_put_from_keyval:Nn \l__jlreq_pagestyle_mark_format_prop {##1}
+      },
+      command .tl_set:N = \l__jlreq_pagestyle_command_tl,
+      gap .tl_set:N = \l__jlreq_pagestyle_gap_tl,
+      nombre_gap .tl_set:N = \l__jlreq_pagestyle_nombre_gap_tl,
+      running_head_gap .tl_set:N = \l__jlreq_pagestyle_runninghead_gap_tl,
       % trueにすると,\ps@***実行時にまず\***markを全て\@gobbleにする.
-      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 .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 .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
+      clear_markcommand .bool_set:N = \l__jlreq_pagestyle_clearmarkcommand_bool,
+      odd_head_format .code:n = { \tl_set:Nx \l__jlreq_pagestyle_odd_top_format_tl { \exp_not:n {##1} } },
+      even_head_format .code:n = { \tl_set:Nx \l__jlreq_pagestyle_even_top_format_tl { \exp_not:n {##1} } },
+      odd_foot_format .code:n = { \tl_set:Nx \l__jlreq_pagestyle_odd_bottom_format_tl { \exp_not:n {##1} } },
+      even_foot_format .code:n = { \tl_set:Nx \l__jlreq_pagestyle_even_bottom_format_tl { \exp_not:n {##1} } },
     }
+    \cs_set:Nn \l__jlreq_tmpa:nn {
+      \keys_define:nn { PageStyle:#1 } {
+        nombre_##1 .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_nombre_prop {##2} {####1} },
+        nombre_##1_position .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_nombre_position_prop {##2} {####1} },
+        running_head_##1_position .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_runninghead_position_prop {##2} {####1} },
+        odd_running_head_##1 .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_odd_runninghead_prop {##2} {####1} },
+        even_running_head_##1 .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_even_runninghead_prop {##2} {####1} },
+        nombre_##1_font .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_nombre_font_prop {##2} {####1} },
+        running_head_##1_font .code:n = { \prop_put:Nnn \l__jlreq_pagestyle_runninghead_font_prop {##2} {####1} }
+      }
+    }
+    \clist_map_inline:nn {1,2}{
+      \str_set:Nx \l__jlreq_tmpa_str { \int_to_roman:n { ##1 + 1 } }
+      \exp_args:Nx \l__jlreq_tmpa:nn { \l__jlreq_tmpa_str } { ##1 }
+    }
     \keys_set:nn { PageStyle:#1 } {
       yoko,
       nombre_font = {}, nombre_position = {}, nombre = {\thepage},
@@ -4393,359 +4806,191 @@
       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}, 
+      clear_markcommand = true, 
     }
     \keys_set:nn { PageStyle:#1 } {#2}
+    % 見出しを出す場合:evenに章などの高いレベルの見出しを出す(2.6.3.a)
+    \@ifundefined{jlreq at heading@level@\__jlreq_pagestyle_get_runninghead_section:Nn \l__jlreq_pagestyle_odd_runninghead_prop {0}}{}{
+      \@ifundefined{jlreq at heading@level@\__jlreq_pagestyle_get_runninghead_section:Nn \l__jlreq_pagestyle_even_runninghead_prop {0}}{}{
+        \int_compare:nNnT 
+          {\csname jlreq at heading@level@\__jlreq_pagestyle_get_runninghead_section:Nn \l__jlreq_pagestyle_odd_runninghead_prop {0}\endcsname}
+          <
+          {\csname jlreq at heading@level@\__jlreq_pagestyle_get_runninghead_section:Nn \l__jlreq_pagestyle_even_runninghead_prop {0}\endcsname}
+          {
+            \jlreq at note{偶数ページには奇数ページよりアウトラインレベルの高い見出しを入れる (ページスタイル #1 内,2.6.3.a).}%
+          }
+      }
+    }
     % ノンブル同士の間や柱同士の間のデフォルトはノンブルと柱の間の空き量
-    \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
-    % _iiが存在するか調べて\ifjlreq at headii@existに入れる
-    \newif\ifjlreq at headii@exist
-    \jlreq at headii@existfalse
-    \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)が_<見出し命令>で与えられている場合,次のようにする.
-    % * \jlreq@(odd|even)@running at head(@ii)をマーク出力命令(\(left|right)mark or \jlreq at extra(left|right)mark{<num>})に書き換える
-    %   - evenの場合はleft,oddの場合はright.
-    %   - @iiがなければ\(left|right)mark,@iiがあれば\jlreq at extra(left|right)mark{1}
-    % * 例えば_<見出し命令>が_sectionならば,\jlreq at markdata@sectionに{{<I1>}{<I2>}{<I3>}}を追加する.ここで<I1>,<I2>,<I3>は
-    %   - I1: @iiが無いときにodd or even
-    %   - I2: @iiが無ければ0,あれば1.
-    %   - I3: マーク出力命令がleftかrightに応じて l or r.(上述のようにoddかevenかで判定される.)
-    % * 他にも_sectionが指定されている柱があれば,\jlreq at markdata@sectionにさらに追加で加えていく.
-    % * \jlreq@(odd|even)@running at head(@ii)@heading at levelに<見出し命令>のレベルを入れる.レベルが不明な時は\relaxになる.
-    % また,\jlreq at headingmarklistに<見出し命令>の一覧を入れる.
-    \def\jlreq at headingmarklist{}%
-    \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{\exp_not:c {jlreq@\jlreq at parity @running at head@\@roman\numexpr\jlreq at i + 1\relax}}{\exp_not:o {\jlreq at i}}{\exp_not:o {\jlreq at parity}}{jlreq at markdata}{\noexpand\jlreq at headingmarklist}}%
-        \jlreq at next
-      }%
-    }%
-    % \jlreq at minimumlevelに見出しの最低(数値が小さいという意味)レベルを入れる.
-    \let\jlreq at minimumlevel=\@undefined
-    \def\jlreq at markdefinecommand{}%
-    \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
-          \ifx\jlreq at minimumlevel\@undefined\let\jlreq at minimumlevel=\jlreq at level
-          \else\ifnum\jlreq at minimumlevel>\jlreq at level\space\let\jlreq at minimumlevel=\jlreq at level\fi\fi
-        \fi
-        % \jlreq at markdata@<見出し命令>にある情報とmark_formatをもとに,\<見出し命令>markを定義するマクロを作成,\jlreq at markdefinecommandに入れる.
-        \edef\jlreq at do{\noexpand\jlreq at pagestyle@make at headingmark{\ifjlreq at headii@exist *\fi}{\exp_not:o {\jlreq at heading}}{\exp_not:o {\jlreq at mark@format}}{\exp_args:Nc \exp_not:o {jlreq at markdata@\jlreq at heading}}}%
-        \jlreq at do
-        \tl_put_right:Nx \jlreq at markdefinecommand { \exp_not:o {\jlreq at result} }%
-      \fi
-    }%
-    \ifx\jlreq at minimumlevel\@undefined\else
-      \tl_put_right:Nx \jlreq at markdefinecommand { \exp_not:N \jlreq at pagestyle@setclearmark { \exp_not:o {\jlreq at minimumlevel} } }
-    \fi
-    % 見出しを出す場合:evenに章などの高いレベルの見出しを出す(2.6.3.a)
-    \@ifundefined{jlreq at odd@running at head@i at heading@level}{}{\@ifundefined{jlreq at even@running at head@i at heading@level}{}{%
-      \ifnum\jlreq at odd@running at head@i at heading@level<\jlreq at even@running at head@i at heading@level
-        \jlreq at note{偶数ページには奇数ページよりアウトラインレベルの高い見出しを入れる (ページスタイル #1 内,2.6.3.a).}%
-      \fi
-    }}%
-    % 二番目以降にフォント設定を追加
-    \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}%
-    }%
-    % \jlreq at oddhead,\jlreq at oddfoot,\jlreq at evenhead,\jlreq at evenfootに必要なものを入れる.
-    \jlreq at if{\ifjlreq at pstate\fi}{% tate
-      % headの方に処理を入れる.footは空.
-      \def\jlreq at oddfoot{}\def\jlreq at evenfoot{}%
-      \ifx\jlreq at nombre@i at position\@empty\def\jlreq at nombre@i at position{5\jlreq at zw}\fi
-      \ifx\jlreq at running@head at i@position\@empty\def\jlreq at running@head at i@position{4\jlreq at zw}\fi
-      \edef\jlreq at gapcs{\noexpand\hskip\noexpand\glueexpr\exp_not:o {\jlreq at nombre@gap}\noexpand\relax}%
-      \jlreq at pagestyle@addifempty{\jlreq at nombre@iii at position}{\jlreq at nombre@ii}{\jlreq at gapcs}{\jlreq at nombre@iii}%
-      \jlreq at pagestyle@addifempty{\jlreq at nombre@ii at position}{\jlreq at nombre@i}{\jlreq at gapcs}{\jlreq at nombre@ii}%
-      \edef\jlreq at gapcs{\noexpand\hskip\noexpand\glueexpr\exp_not:o {\jlreq at running@head at gap}\noexpand\relax}%
-      \jlreq at pagestyle@addifempty{\jlreq at running@head at iii@position}{\jlreq at odd@running at head@ii}{\jlreq at gapcs}{\jlreq at odd@running at head@iii}%
-      \jlreq at pagestyle@addifempty{\jlreq at running@head at ii@position}{\jlreq at odd@running at head@i}{\jlreq at gapcs}{\jlreq at odd@running at head@ii}%
-      \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{}% ノンブルを入れる(下の方に出力)
-      \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{}}{}%
-          \expandafter\let\expandafter\jlreq at tempa\expandafter=\csname jlreq at nombre@\jlreq at i\endcsname
-          \jlreq at pagestyle@addfont at tocs{jlreq at tempa}{jlreq at nombre@font}%
-          \tl_put_right:Nx \jlreq at nombre@contents {%
-            \exp_not:N \hbox to 0pt{\exp_not:N \hss
-              \exp_not:o {\jlreq at tempa}%
-              \ifx\jlreq at position\@empty\else\exp_not:n {\hskip \glueexpr}\exp_not:o {\jlreq at position}\exp_not:N \relax\fi
-            }%
-          }%
-        \fi
-      }%
-      % \jlreq@(odd|even)@contentsに柱を入れる(上の方に出力)
-      \clist_map_variable:nNn { odd, even } \jlreq at parity {
-        \expandafter\def\csname jlreq@\jlreq at parity @contents\endcsname{}%
-        \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{}}{}%
-            \expandafter\let\expandafter\jlreq at tempa\expandafter=\csname jlreq@\jlreq at parity @running at head@\jlreq at i\endcsname
-            \jlreq at pagestyle@addfont at tocs{jlreq at tempa}{jlreq at running@head at font}%
-            \tl_put_right:cx {jlreq@\jlreq at parity @contents} {%
-              \exp_not:N \hbox to 0pt{\exp_not:n {\hskip\glueexpr\headsep + \headheight}%
-                \if at tate\else\exp_not:n {+ \topskip - \Cht}\fi
-                \ifx\jlreq at position\@empty\else + \exp_not:o {\jlreq at position}\fi\exp_not:N \relax
-                \exp_not:o {\jlreq at tempa}%
-                \exp_not:N \hss
-              }%
-            }%
-          \fi
-        }%
-        % \jlreq@(odd|even)headの構築
-        % 空き指定には基本版面の文字サイズを使う(2.6.1.c)
-        \@ifundefined{jlreq@\jlreq at parity headformat}
-          {\def\jlreq at format{####1}}%
-          {\expandafter\let\expandafter\jlreq at format\csname jlreq@\jlreq at parity headformat\endcsname}%
-        \edef\jlreq at do{\unexpanded{\def\jlreq at tempa##1}{\exp_not:o {\jlreq at format}}}\jlreq at do
-        \edef\jlreq at tempb{%
-          \exp_args:Nc \exp_not:o {jlreq@\jlreq at parity @contents}%
-          \noexpand\hfil
-          \exp_not:o {\jlreq at nombre@contents}%
-        }%
-        \expandafter\edef\csname jlreq@\jlreq at parity head\endcsname{%
-          \unexpanded{\setbox\jlreq at tempboxa=\hbox to \dimexpr\headsep + \headheight + \textheight}\if at tate\else\unexpanded{- \topskip + 1\jlreq at zh}\fi\noexpand\relax
-          {%
-            \unexpanded{\tate\adjustbaseline}%
-            \expandafter\exp_not:o \expandafter{\expandafter\jlreq at tempa\expandafter{\jlreq at tempb}}%
-          }%
+    \tl_if_empty:NT \l__jlreq_pagestyle_nombre_gap_tl { \tl_set_eq:NN \l__jlreq_pagestyle_nombre_gap_tl \l__jlreq_pagestyle_gap_tl }
+    \tl_if_empty:NT \l__jlreq_pagestyle_runninghead_gap_tl { \tl_set_eq:NN \l__jlreq_pagestyle_runninghead_gap_tl \l__jlreq_pagestyle_gap_tl }
+    % \<見出し>markを作り,\l__jlreq_tmpa_propに格納
+    \__jlreq_pagestyle_makemarkcommand:NNNN \l__jlreq_tmpa_prop \l__jlreq_pagestyle_odd_runninghead_prop \l__jlreq_pagestyle_even_runninghead_prop \l__jlreq_pagestyle_mark_format_prop
+    % \<見出し>markを定義するコマンドを入れる
+    \tl_set:Nn \l__jlreq_pagestyle_markcommands_tl {}
+    % 最小レベルの決定を行い,\<見出し命令>markの定義を入れていく.
+    \int_set:Nn \l__jlreq_tmpa_int {9999}
+    \prop_map_inline:Nn \l__jlreq_tmpa_prop {
+      \int_compare:nNnT { \l__jlreq_tmpa_int } > { \csname jlreq at heading@level@##1 \endcsname } {
+        \int_set:Nn \l__jlreq_tmpa_int { \csname jlreq at heading@level@##1 \endcsname }
+      }
+      \tl_put_right:Nx \l__jlreq_pagestyle_markcommands_tl { \exp_not:n {##2} }
+    }
+    \int_compare:nNnF {\l__jlreq_tmpa_int}={9999} {
+      \tl_put_right:Nx \l__jlreq_pagestyle_markcommands_tl {
+        \exp_not:N \jlreq at pagestyle@setclearmark {\int_use:N \l__jlreq_tmpa_int }
+      }
+    }
+    \bool_if:NTF \l__jlreq_pagestate_tate_bool {
+      \tl_set:Nx \l__jlreq_do_tl {}
+      \prop_clear:N \l__jlreq_tmpa_prop
+      \clist_map_inline:nn { odd,even } {
+        % .柱→\l__jlreq_tmpa_tl
+        \__jlreq_pagestyle_maketate_runhead:NcNNo \l__jlreq_tmpa_tl { l__jlreq_pagestyle_##1_runninghead_prop } \l__jlreq_pagestyle_runninghead_font_prop \l__jlreq_pagestyle_runninghead_position_prop \l__jlreq_pagestyle_runninghead_gap_tl
+        % ノンブル→\l__jlreq_tmpb_tl
+        \__jlreq_pagestyle_maketate_nombre:NNNNo \l__jlreq_tmpb_tl \l__jlreq_pagestyle_nombre_prop \l__jlreq_pagestyle_nombre_font_prop \l__jlreq_pagestyle_nombre_position_prop \l__jlreq_pagestyle_nombre_gap_tl
+        % 柱とノンブルを結合→\l__jlreq_tmpa_tl
+        \tl_set:Nx \l__jlreq_tmpa_tl { \exp_not:o \l__jlreq_tmpa_tl \exp_not:N \hfil \exp_not:o \l__jlreq_tmpb_tl }
+        % formatを適用.
+        \tl_set:Nn \l__jlreq_tmpb_tl {####1} % デフォルトフォーマット
+        \__jlreq_pagestyle_applyformat:NocN \l__jlreq_tmpa_tl \l__jlreq_tmpa_tl { l__jlreq_pagestyle_##1_top_format_tl } \l__jlreq_tmpb_tl
+        % 周りのボックスをつける.結果は\l__jlreq_tmpa_propにいれる.
+        \prop_put:Nnx \l__jlreq_tmpa_prop { ##1-top } {
+          \exp_not:n {\setbox\@tempboxa=\hbox to \dimexpr\headsep + \headheight + \textheight}
+            \legacy_if:nF { @tate } { \exp_not:n { - \topskip + 1\jlreq at zh } }
+            \exp_not:N \relax
+            { \exp_not:n { \tate\adjustbaseline } \exp_not:o \l__jlreq_tmpa_tl }
           % Underful対策
           \ifx l\jlreq at engine
-            \unexpanded{\wd\jlreq at tempboxa=\headheight}%
+            \unexpanded{\wd\@tempboxa=\headheight}%
           \else
-            \unexpanded{\ht\jlreq at tempboxa=\headheight\dp\jlreq at tempboxa=0pt}%
+            \unexpanded{\ht\@tempboxa=\headheight\dp\@tempboxa=0pt}%
           \fi
-        }%
-      }%
-      % \jlreq at tempboxaを正しく配置する
-      \edef\jlreq at lefthead@adjustbox{%
-        \noexpand\hskip\noexpand\dimexpr\if at tate\unexpanded{- \Cdp}\fi \unexpanded{- \headsep - 1\jlreq at zw\relax}%
-        \unexpanded{\box\jlreq at tempboxa\hfil}%
-      }%
-      \edef\jlreq at righthead@adjustbox{%
-        \noexpand\hskip\unexpanded{\dimexpr\textwidth}\if at tate\unexpanded{- \topskip + \Cht}\fi\unexpanded{ + \headsep\relax}%
-        \unexpanded{\box\jlreq at tempboxa\hss}%
-      }%
-      \if at tate
-        \tl_put_right:Nx \jlreq at oddhead{\exp_not:o {\jlreq at lefthead@adjustbox}}%
-        \tl_put_right:Nx \jlreq at evenhead{\exp_not:o {\jlreq at righthead@adjustbox}}%
-      \else
-        \tl_put_right:Nx \jlreq at oddhead{\exp_not:o {\jlreq at righthead@adjustbox}}%
-        \tl_put_right:Nx \jlreq at evenhead{\exp_not:o {\jlreq at lefthead@adjustbox}}%
-      \fi
+        }
+      }
+      % 位置調整,左側に柱+ノンブルがある場合
+      \tl_set:Nx \l__jlreq_tmpa_tl {
+         \exp_not:n { \hskip\dimexpr } \legacy_if:nT { @tate } { \exp_not:n { - \Cdp } } \exp_not:n { - \headsep - 1\jlreq at zw\relax }
+         \exp_not:n { \box\@tempboxa\hfil }
+      }
+      % 位置調整,右側に柱+ノンブルがある場合
+      \tl_set:Nx \l__jlreq_tmpb_tl {
+         \exp_not:n { \hskip\dimexpr\textwidth } \legacy_if:nT { @tate } { \exp_not:n { - \topskip + \Cht } } \exp_not:n { + \headsep\relax }
+         \exp_not:n { \box\@tempboxa\hss }
+      }
+      % 位置調整とすでに構築したブロックをくっつける.
+      \legacy_if:nTF { @tate } {
+        \prop_put:Nnx \l__jlreq_tmpa_prop { odd-top  } { \prop_item:Nn \l__jlreq_tmpa_prop { odd-top  } \exp_not:o \l__jlreq_tmpa_tl }
+        \prop_put:Nnx \l__jlreq_tmpa_prop { even-top } { \prop_item:Nn \l__jlreq_tmpa_prop { even-top } \exp_not:o \l__jlreq_tmpb_tl }
+      }{
+        \prop_put:Nnx \l__jlreq_tmpa_prop { odd-top  } { \prop_item:Nn \l__jlreq_tmpa_prop { odd-top  } \exp_not:o \l__jlreq_tmpb_tl }
+        \prop_put:Nnx \l__jlreq_tmpa_prop { even-top } { \prop_item:Nn \l__jlreq_tmpa_prop { even-top } \exp_not:o \l__jlreq_tmpa_tl }
+      }
+      % \l__jlreq_tmpa_tlに定義を入れる
+      \tl_set:Nx \l__jlreq_tmpa_tl {
+        \exp_not:n { \def\@oddhead  } { \prop_item:Nn \l__jlreq_tmpa_prop { odd-top  } }
+        \exp_not:n { \def\@oddfoot  } { }
+        \exp_not:n { \def\@evenhead } { \prop_item:Nn \l__jlreq_tmpa_prop { even-top } }
+        \exp_not:n { \def\@evenfoot } { }
+      }
     }{% yoko
-      % 場所を正規化する.
-      \def\jlreq at nombre@i at position@default{{bottom}{center}}%
-      \def\jlreq at running@head at i@position at default{{top}{center}}%
-      % ii以降の位置は指定されていない場合はiのそれに合わせる
-      \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
-          \expandafter\edef\csname\jlreq at tempa @\jlreq at i @position at default\endcsname{\csname\jlreq at tempa @i at position@default\endcsname}%
-        }%
-      }%
-      \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{\exp_args:Nc \exp_not:o {\jlreq at tempa}}{\exp_not:c {\jlreq at tempa}}{\exp_args:Nc \exp_not:o {\jlreq at tempa @default}}}%
-        \jlreq at next
-      }%
+      \__jlreq_pagestyle_normalizeposition:Nn \l__jlreq_pagestyle_runninghead_position_prop {{top}{center}}
+      \__jlreq_pagestyle_normalizeposition:Nn \l__jlreq_pagestyle_nombre_position_prop {{bottom}{center}}
+      % 警告
+      \cs_set:Nn \__jlreq_tmpa:Nn { \str_set:Nx ##1 { \use_ii:nn ##2 } }
+      \cs_generate_variant:Nn \__jlreq_tmpa:Nn { No }
+      \tl_set:Nx \l__jlreq_tmpa_tl { \prop_item:Nn \l__jlreq_pagestyle_nombre_position_prop {0} }
+      \__jlreq_tmpa:No \l__jlreq_tmpa_str \l__jlreq_tmpa_tl
+      \tl_set:Nx \l__jlreq_tmpb_tl { \prop_item:Nn \l__jlreq_pagestyle_runninghead_position_prop {0} }
+      \__jlreq_tmpa:No \l__jlreq_tmpb_str \l__jlreq_tmpb_tl
       \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 }
+          \str_if_eq_p:Vn \l__jlreq_tmpa_str { right } ||
+          \str_if_eq_p:Vn \l__jlreq_tmpb_str { 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 }
+          \str_if_eq_p:Vn \l__jlreq_tmpa_str { left } ||
+          \str_if_eq_p:Vn \l__jlreq_tmpb_str { left } 
         )
       ) } {
-        \if at twoside
+        \legacy_if:nT { @twoside } {
           \jlreq at note{柱やノンブルは,左ページでは,基本版面の左端の延長線にノンブル又は柱の先頭をそろえて配置するか,基本版面の左端の延長線から基本版面の文字サイズの全角アキだけ右に寄せた位置に配置する (ページスタイル #1 内,2.6.1.b).}%
-        \fi
+        }
       }%
       % フォント変更命令に文字出力命令が入っているとエラーになるのを回避するために\setboxでごまかす.
-      \setbox\jlreq at tempboxa=\hbox{\jlreq at running@head at font
+      \setbox\jlreq at tempboxa=\hbox{\prop_item:Nn \l__jlreq_pagestyle_runninghead_font_prop {0}
         \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 }
+          \dim_compare_p:n { \l__jlreq_pagestyle_gap_tl < 1.49\jlreq at zw } ||
+          ( \dim_compare_p:n { \l__jlreq_pagestyle_gap_tl > 1.51\jlreq at zw } && \dim_compare_p:n { \l__jlreq_pagestyle_gap_tl < 1.99\jlreq at zw } ) ||
+          \dim_compare_p:n { \l__jlreq_pagestyle_gap_tl > 2.01\jlreq at zw }
         }{
           \jlreq at note{ノンブルと柱との空き量は柱に使用する文字サイズの2倍又は1.5倍とする (ページスタイル #1 内,2.6.1.c).}
         }
       }%
-      % 初期化
-      \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{}%
-            }%
-          }%
-        }%
-        % ページが左か右か
-        \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が左になるようにする.
-        \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}%
-            \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=\tl_put_right:cx}{\let\jlreq at addtocs\tl_put_left:cx}%
-            \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}\exp_not:o {\jlreq at nombre@gap}\noexpand\relax}\fi
-            \jlreq at addtocs{\jlreq at csname}{\exp_args:Nc \exp_not:o {jlreq at nombre@\jlreq at i}}%
-          \fi
-          % running at head
-          % 一度「紙面の外から」の順番で{A}{B}{C}と入れる
-          \expandafter\ifx\csname jlreq@\jlreq at parity @running at head@\jlreq at i \endcsname\@empty\else
-            \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}%
-            \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=\tl_put_right:cx}{\let\jlreq at addtocs=\tl_put_left:cx}%
-            \edef\jlreq at csname{jlreq at running@head@\jlreq at parity @\jlreq at vert @\jlreq at hor}%
-            \jlreq at addtocs{\jlreq at csname}{{\exp_args:Nc \exp_not:o {jlreq@\jlreq at parity @running at head@\jlreq at i}}}%
-          \fi
-        }%
-        % {A}{B}{C}の順だった柱を結合する.本体は\jlreq at pagestyle@make at runninghead.
-        \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}{\exp_not:o {\jlreq at tempa}}{\exp_not:o {\jlreq at running@head at gap}}}%
-            \jlreq at 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}%
-            % nombreにフォント設定を追加.
-            \expandafter\ifx\csname\jlreq at nombrecsname\endcsname\@empty\else
-              \ifx\jlreq at nombre@font\@empty\else
-                \expandafter\edef\csname\jlreq at nombrecsname\endcsname{{\exp_not:o {\jlreq at nombre@font}\exp_args:Nc \exp_not:o {\jlreq at nombrecsname}}}%
-              \fi
-            \fi
-            \jlreq at if{\expandafter\ifx\csname\jlreq at runheadcsname\endcsname\@empty\fi}{%
-              % 柱が空:ノンブルのみでよい
-              \expandafter\let\csname\jlreq at csname\expandafter\endcsname\csname\jlreq at nombrecsname\endcsname
-            }{%
-              \jlreq at if{\expandafter\ifx\csname\jlreq at nombrecsname\endcsname\@empty\fi}{%
-%                % ノンブルが空.柱のみでよい.
-                \jlreq at pagestyle@addfont at tocs{\jlreq at runheadcsname}{jlreq at running@head at font}%
-                \expandafter\let\csname\jlreq at csname\expandafter\endcsname\csname\jlreq at runheadcsname\endcsname
-              }{%
-%                % 両方ある場合:左ページではノンブルが左,右ページではノンブルが右.
-                \jlreq at ifleftpage{\jlreq at parity}{%
-                  \str_if_eq:VnTF \jlreq at hor { right } {
-                    % <ノンブル><空き><柱>,右寄せ
-                    % 柱が空出ないときに限り<空き>を入れる.
-                    \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\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{%
-                      \unexpanded{\setbox\jlreq at PageStyle@box=\hbox}{\exp_not:o {\jlreq at running@head at font}\exp_args:Nc \exp_not:o {\jlreq at runheadcsname}}%
-                      \exp_args:Nc \exp_not:o {\jlreq at nombrecsname}\exp_not:o {\jlreq at tempa}\unexpanded{\box\jlreq at PageStyle@box}%
-                    }%
-                  }{%
-                    % <ノンブル><空き><柱>,左寄せ
-                    % ノンブルは常に空ではないと仮定する.
-                    \jlreq at pagestyle@addfont at totokens{\unexpanded{\hskip\glueexpr}\exp_not:o {\jlreq at gap}\noexpand\relax\exp_args:Nc \exp_not:o {\jlreq at runheadcsname}}{jlreq at running@head at font}{jlreq at tempa}%
-                    \expandafter\edef\csname\jlreq at csname\endcsname{\exp_args:Nc \exp_not:o {\jlreq at nombrecsname}\exp_not:o {\jlreq at tempa}}%
-                  }%
-                }{%
-                  \str_if_eq:VnTF \jlreq at hor { left } {
-                    % <柱><空き><ノンブル>,左寄せ
-                    \jlreq at pagestyle@addfont at totokens{%
-                      \unexpanded{\setbox\jlreq at PageStyle@box=\hbox}{\exp_args:Nc \exp_not:o {\jlreq at runheadcsname}}%
-                      \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{\exp_not:o {\jlreq at tempa}\exp_args:Nc \exp_not:o {\jlreq at nombrecsname}}%
-                  }{%
-                    % <柱><空き><ノンブル>,右寄せ
-                    \jlreq at pagestyle@addfont at totokens{\exp_args:Nc \exp_not:o {\jlreq at runheadcsname}\unexpanded{\hskip\glueexpr}\exp_not:o {\jlreq at gap}\noexpand\relax}{jlreq at running@head at font}{jlreq at tempa}%
-                    \expandafter\edef\csname\jlreq at csname\endcsname{\exp_not:o {\jlreq at tempa}\exp_args:Nc \exp_not:o {\jlreq at nombrecsname}}%
-                  }%
-                }%
-              }%
-            }%
-          }%
-        }%
-      }%
-      % 四カ所構築
-      \jlreq at pagestyle@setheadfoot{\jlreq at oddhead}{jlreq at odd@top at left}{jlreq at odd@top at center}{jlreq at odd@top at right}%
-      \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}%
-      \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}%
-      }%
-      \jlreq at pagestyle@applyformat{\jlreq at oddhead}{\jlreq at oddheadformat}{\jlreq at defaultformat}%
-      \jlreq at pagestyle@applyformat{\jlreq at evenhead}{\jlreq at evenheadformat}{\jlreq at defaultformat}%
-      \jlreq at pagestyle@applyformat{\jlreq at oddfoot}{\jlreq at oddfootformat}{\jlreq at defaultformat}%
-      \jlreq at pagestyle@applyformat{\jlreq at evenfoot}{\jlreq at evenfootformat}{\jlreq at defaultformat}%
-      % 傍注用調整
-      \ifdim\jlreq at sidenote@length>0pt
-        \if at tate\else
-          \if at twocolumn
-            \jlreq at pagestyle@addsidenotemargin at bothside{\jlreq at oddhead}%
-            \jlreq at pagestyle@addsidenotemargin at bothside{\jlreq at oddfoot}%
-            \jlreq at pagestyle@addsidenotemargin at bothside{\jlreq at evenhead}%
-            \jlreq at pagestyle@addsidenotemargin at bothside{\jlreq at evenfoot}%
-          \else
-            \jlreq at pagestyle@addsidenotemargin at right{\jlreq at oddhead}%
-            \jlreq at pagestyle@addsidenotemargin at right{\jlreq at oddfoot}%
-            \jlreq at pagestyle@addsidenotemargin at left{\jlreq at evenhead}%
-            \jlreq at pagestyle@addsidenotemargin at left{\jlreq at evenfoot}%
-          \fi
-        \fi
-      \fi
-    }%
-    \edef\jlreq at do{%
-      \noexpand\edef\exp_not:c {ps@#1}{%
-        \noexpand\unexpanded{%
-          \unexpanded{\def\jlreq at current@pagestyle{#1}}%
-          \ifjlreq at clearmarkcommand\unexpanded{\jlreq at heading@execmacro at toallheadings\jlreq at clearheadingmarks}\fi
-          \ifjlreq at headii@exist
-            \unexpanded{\let\@mkboth=\jlreq at markboth}%
-          \else
-            \unexpanded{\let\@mkboth=\markboth}%
-          \fi
-          \unexpanded{\def\@oddhead}{\exp_not:o {\jlreq at oddhead}}%
-          \unexpanded{\def\@oddfoot}{\exp_not:o {\jlreq at oddfoot}}%
-          \unexpanded{\def\@evenhead}{\exp_not:o {\jlreq at evenhead}}%
-          \unexpanded{\def\@evenfoot}{\exp_not:o {\jlreq at evenfoot}}%
-          \exp_not:o {\jlreq at markdefinecommand}%
-          \exp_not:o {\jlreq at command}%
-        }%
-      }%
-    }%
-  \expandafter\endgroup
-  \jlreq at do
+      \prop_clear:N \l__jlreq_tmpa_prop % \l__jlreq_tmpa_prop{odd-top}に中身トークン列
+      \clist_map_inline:nn { odd,even } { % ##1
+        \clist_map_inline:nn { top,bottom } { % ####1
+          \prop_clear:N \l__jlreq_tmpb_prop % 左,真ん中,右のトークン列をいったん入れる
+          \clist_map_inline:nn {left,center,right} { % ########1
+            % even時は左右がひっくり返るが,それは下位マクロに任せる
+            % 柱→\l__jlreq_tmpa_tl
+            \__jlreq_pagestyle_makeyoko_each:NnnncNNo \l__jlreq_tmpa_tl {##1} {####1} {########1} { l__jlreq_pagestyle_##1_runninghead_prop } \l__jlreq_pagestyle_runninghead_font_prop \l__jlreq_pagestyle_runninghead_position_prop \l__jlreq_pagestyle_runninghead_gap_tl
+            % ノンブル→\l__jlreq_tmpa_tl
+            \__jlreq_pagestyle_makeyoko_each:NnnncNNo \l__jlreq_tmpb_tl {##1} {####1} {########1} { l__jlreq_pagestyle_nombre_prop } \l__jlreq_pagestyle_nombre_font_prop \l__jlreq_pagestyle_nombre_position_prop \l__jlreq_pagestyle_nombre_gap_tl
+            % 柱とノンブルを結合し\l__jlreq_tmpb_propへ代入
+            \__jlreq_pagestyle_concat_runhead_nombre:Nnnooo \l__jlreq_tmpa_tl {########1} {##1} \l__jlreq_tmpa_tl \l__jlreq_tmpb_tl \l__jlreq_pagestyle_gap_tl
+            \prop_put:Nno \l__jlreq_tmpb_prop {########1} \l__jlreq_tmpa_tl
+          }
+          % 左,中央,右を結合し\l__jlreq_tmpa_tlへ
+          \__jlreq_pagestyle_concat_left_center_right:Nneee \l__jlreq_tmpa_tl {##1} {\prop_item:Nn \l__jlreq_tmpb_prop {left} } {\prop_item:Nn \l__jlreq_tmpb_prop {center} } {\prop_item:Nn \l__jlreq_tmpb_prop {right} }
+          % デフォルトのフォーマットの設定
+          \bool_if:nTF { \dim_compare_p:n { \jlreq at sidenote@length > 0pt } && (! \legacy_if_p:n { @tate } ) }{
+            \tl_set:Nn \l__jlreq_tmpb_tl {\hss\hbox to \jlreqyokoheadlength{########1}\hss}
+          }{
+            \tl_set:Nn \l__jlreq_tmpb_tl {########1}
+          }
+          \__jlreq_pagestyle_applyformat:NocN \l__jlreq_tmpa_tl \l__jlreq_tmpa_tl { l__jlreq_pagestyle_##1_####1_format_tl } \l__jlreq_tmpb_tl
+          % 傍注用調整
+          \dim_compare:nNnT {\jlreq at sidenote@length}>{0pt} {
+            \legacy_if:nF { @tate } {
+              \legacy_if:nTF { @twocolumn } {
+                \__jlreq_pagestyle_addsidenotemargin_bothside:N \l__jlreq_tmpa_tl
+              }{
+                \str_if_eq:nnTF { ##1} { odd } {
+                  \__jlreq_pagestyle_addsidenotemargin_right:N \l__jlreq_tmpa_tl
+                }{
+                  \__jlreq_pagestyle_addsidenotemargin_left:N \l__jlreq_tmpa_tl
+                }
+              }
+            }
+          }
+          \prop_put:Nno \l__jlreq_tmpa_prop {##1-####1} \l__jlreq_tmpa_tl
+        }
+      }
+      % \l__jlreq_tmpa_tlに定義を入れる
+      \tl_set:Nx \l__jlreq_tmpa_tl {
+        \exp_not:n { \def\@oddhead  } { \prop_item:Nn \l__jlreq_tmpa_prop { odd-top     } }
+        \exp_not:n { \def\@oddfoot  } { \prop_item:Nn \l__jlreq_tmpa_prop { odd-bottom  } }
+        \exp_not:n { \def\@evenhead } { \prop_item:Nn \l__jlreq_tmpa_prop { even-top    } }
+        \exp_not:n { \def\@evenfoot } { \prop_item:Nn \l__jlreq_tmpa_prop { even-bottom } }
+      }
+    }
+    % _iiが存在するか調べて\l__jlreq_tmpa_boolに入れる
+    \bool_set:Nn \l__jlreq_tmpa_bool {
+      \prop_if_in_p:Nn \l__jlreq_pagestyle_odd_runninghead_prop {1} || \prop_if_in_p:Nn \l__jlreq_pagestyle_odd_runninghead_prop {2}
+    }
+    \tl_set:Nx \l__jlreq_do_tl {
+      \exp_not:n {\edef} \exp_not:c {ps@#1} { \exp_not:N \exp_not:n {
+        \exp_not:n { \def\jlreq at current@pagestyle{#1} }
+        \bool_if:nT { \l__jlreq_pagestyle_clearmarkcommand_bool } { \exp_not:n { \jlreq at heading@execmacro at toallheadings\jlreq at clearheadingmarks } }
+        \exp_not:n {\let\@mkboth=}\bool_if:NTF \l__jlreq_tmpa_bool { \exp_not:N \markboth } { \exp_not:N \jlreq at markboth }
+        \exp_not:o \l__jlreq_tmpa_tl
+        \exp_not:o \l__jlreq_pagestyle_markcommands_tl
+      }}
+    }
+  \exp_after:wN \group_end:
+  \l__jlreq_do_tl
 }
 
 \if at tate
@@ -4945,11 +5190,11 @@
   *top .code:n =    { \__jlreq_ at makecaption_align_set_with_check_value:Vn \l_keys_key_str {#1} },
   *bottom .code:n = { \__jlreq_ at makecaption_align_set_with_check_value:Vn \l_keys_key_str {#1} },
   unknown .code:n = {
-    \clist_map_variable:nNn {#1} \l_jlreq_tmpa_tl {
-      \tl_trim_spaces:N \l_jlreq_tmpa_tl
-      \str_set_eq:NN \l_jlreq_tmpa_str \l_keys_key_str
-      \str_put_left:Nn \l_jlreq_tmpa_str {@}
-      \__jlreq_ at makecaption_align_set:VV \l_jlreq_tmpa_str \l_jlreq_tmpa_tl
+    \clist_map_variable:nNn {#1} \l__jlreq_tmpa_tl {
+      \tl_trim_spaces:N \l__jlreq_tmpa_tl
+      \str_set_eq:NN \l__jlreq_tmpa_str \l_keys_key_str
+      \str_put_left:Nn \l__jlreq_tmpa_str {@}
+      \__jlreq_ at makecaption_align_set:VV \l__jlreq_tmpa_str \l__jlreq_tmpa_tl
     }
   }
 }
@@ -5939,7 +6184,7 @@
         \hbox_to_wd:nn {##1} {
           \def#1 { }
           \kanjishape{n-jidori}\selectfont
-          \def\kanjishape####1{\jlreq at useoriginalcs{kanjishape}{####1-jidori}}
+          \def\kanjishape####1{\jlreq at useoriginalcs@witharguments{kanjishape}{{####1-jidori}}}
           ##2
           \hskip\glueexpr 0pt~minus~1fil\relax
         }
@@ -5965,7 +6210,7 @@
 \NewDocumentCommand { \akigumi } { m m } {
   \mode_if_vertical:TF { \leavevmode } {}
   \group_begin:
-    \__jlreq_setkanjiskip:nn { \jlreqkanjiskip + #1 } { }
+    \__jlreq_setkanjiskip:nn { \jlreqkanjiskip + #1 } { \jlreqxkanjiskip + #1 }
     \hbox:n {#2}
   \group_end:
 }



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