jlreqの奇数ページの柱に表示される節について

jlreqの奇数ページの柱に表示される節について

- Yuki-AugMD の投稿
返信数: 9

luaLaTeX+jlreqで学位論文を執筆しています.
クラスオプションにはbookを指定し,ページスタイルをheadingsとしたところ,偶数ページの柱に章の情報が,奇数ページの柱には節の情報が出力されています.

この節の出力内容を少し変えたいと考えています.
コード例のように奇数ページの途中で新しい節を挿入すると,デフォルトでは当該ページの柱には新しい節の情報が表示されるのですが,これを古い節(当該ページの先頭にある節)の情報が出力されるように変更したいです.
つまり,現行では3ページ目の柱に1.2 いいい のように表示されるのを 1.1 あああ としたいです.
可能な方法がありましたら教えていただけますと幸いです.

LaTeXで日常的に文章を作成しておりますが,マクロやクラスファイルの内容については詳しくありませんので,独力で変更箇所と内容を考えることができず困っています.

ディストリビューションとしてはTeXLive 2025 の最新版を使っております.

\documentclass[book,titlepage,paper=a4paper,fontsize=11pt,jafontscale=0.9247]{jlreq}

\begin{document}

\pagestyle{headings}

% 1ページ目
\chapter{hogehoge}
\section{あああ}
私はたいへんいい実験をしたいとさっき考えていたのだ。
するとほんとうにそうなんだが。

% 2ページ目
\newpage
私は倫理的に潔癖だという自分のお母さんの事であった。

% 3ページ目
\newpage
私は倫理的に潔癖だという自分のお母さんの事であった。

\section{いいい}
私はたいへんいい実験をしたいとさっき考えていたのだ。

\end{document}
Yuki-AugMD への返信

Re: jlreqの奇数ページの柱に表示される節について

- Takashima Jun の投稿
LaTeXのmarkbothの中身を読んでいないので以下が適切かわかりませんが、

\documentclass[book,titlepage,paper=a4paper,fontsize=11pt,jafontscale=0.9247]{jlreq}
\renewcommand\chaptermark[1]{\markboth{第\thechapter 章\quad  #1}{}}
\renewcommand\sectionmark[1]{\markright{\thesection . #1}\mark{\thesection . #1}}
  \RenewPageStyle{myheadings}{nombre=\thepage,odd_running_head=\topmark,even_running_head=\leftmark,clear_markcommand=false}
\begin{document}
\pagestyle{myheadings}

で一応お望みのようになっています。



Takashima Jun への返信

Re: jlreqの奇数ページの柱に表示される節について

- Yuki-AugMD の投稿
Takashima Jun 様

ご提案をいただきありがとうございます.
私の方でも試しましたところ,無事に思った通りの出力となりました.
この手法では,ページの頭でセクションが始まると前ページのセクションが出力されるようですが,その点は問題のページのみ\thispagestyle{headings}とすることで対応したいと考えております.

どうもありがとうございました.
Yuki-AugMD への返信

Re: jlreqの奇数ページの柱に表示される節について

- Takashima Jun の投稿
\newpageの直後などには\thispagestyleでの対応が必要となりますが、自然に改ページされる場合については
\makeatletter
\let\@origsection\section
\renewcommand\section[1]{\mark{\thesection . #1}\@origsection{#1}}
\makeatother
の様な形で対応できます。
Yuki-AugMD への返信

Re: jlreqの奇数ページの柱に表示される節について

- Yuki-AugMD の投稿

Takashima Jun 様,しっぽ愛好家様

追加の情報をいただきましてありがとうございます.
作成中の文書で試しましたところ,どちらの方法もページの頭にセクションが来た場合で自然な表示となりました.
参考にさせていただきます.
組版結果によってはまれに前のページのセクションが表示されることもありますが,そのような特殊な場合は手動でpagestyleをheadingsに変更することにします.

Yuki-AugMD への返信

Re: jlreqの奇数ページの柱に表示される節について

- Takashima Jun の投稿
しっぽ愛好家さんの適切なコードに感謝ですが、
私の環境で動かなかったので調べてみると、6月のLaTeXコアからはレガシーコードが削除されていることがわかりました。
新しいマーク機構とjlreq対応で、多分以下のようでTeXLive2024以降のほとんどの環境で動くと思われます。

\makeatletter
\let\@Orig@Section\section
\def\section{%
\ifhmode \unskip \par \fi
\ifdim\pagetotal<\topskip\else \InsertMark{2e-right}{\TopMark{2e-right}}\fi
\@Orig@Section}
\def\rightmark{\FirstMark{2e-right}}
\makeatother
\begin{document}
\pagestyle{headings}

本来的には\rightmarkのようなレガシーを使わずに柱の設定をするべきようになりつつあると思います。
Takashima Jun への返信

Re: jlreqの奇数ページの柱に表示される節について

- 本田 知亮 の投稿
>6月のLaTeXコアからはレガシーコードが削除されていることがわかりました。

てっきりかなり奥地まで互換性保っていると思い込んでいましたが
\@themarkみたいな内側のものは変わってるのですね.
認識してませんでした,ありがとうございます.

>\def\rightmark{\FirstMark{2e-right}}

ltmarkをざっと読んだ程度ですが,
この部分はなくても期待の動作になるように思います.
\rightmarkのちょっと前の定義は
\def\rightmark{\expandafter\@secondoftwo\firstmark\@empty\@empty}
と等価で,これはしっぽ愛好家さんのものともほぼ等価(\fistmarkが空っぽとかのケースでちょっと違う),
\FirstMark{2e-right}とも等価といえるかと.


本田 知亮 への返信

Re: jlreqの奇数ページの柱に表示される節について

- Takashima Jun の投稿
> この部分はなくても期待の動作になるように思います.
ご指摘ありがとうございます。
確かに
\cs_new:Npn \leftmark {\mark_use_last:nn{page}{2e-left}}
\cs_new:Npn \rightmark {\mark_use_first:nn{page}{2e-right}}
と、
\leftmark=\LastMark[page]{2e-left}
\rightmark=\FirstMark[page]{2e-right}
という意味の設定がなされていますね。
Takashima Jun への返信

Re: jlreqの奇数ページの柱に表示される節について

- Yuki-AugMD の投稿
議論を進めていただきありがたいです.
最終的にはTakashima様が二日に投稿したものから`\rightmark`の定義を抜いて使わせていただくことにしました.
理想的な結果となり,手動での変更も不要になりました.
お3方ともありがとうございます