jlreqのbookオプションでのヘッダの編集について

jlreqのbookオプションでのヘッダの編集について

- m d の投稿
返信数: 6

初めて投稿いたします。

uplatex+jlreqで学位論文を執筆しています。

クラスオプションにbookを指定し、jsbookのようなスタイルを作ろうとしているのですが、ヘッダの設定に苦戦しています。

目的

添付のjsbookのように、奇数ページの左上に節タイトル「1.1 hoge」、右上にページ番号を、偶数ページの左上に節タイトルページ番号、右上に章タイトル「第1章 hoge」とし、適切にアンダーラインを引きたいです。

問題

jlreqではbookスタイルを指定しても、ヘッダは自動で生成されないので、NewPageStyleで作成しているが、アンダーラインを手動で表示すると、各章の1ページ目にも生成されてしまいます。

サンプルは以下

\NewPageStyle{mybook}{%
  nombre_position = top-right,%
  running_head_position = top-left,%
  odd_running_head = _section,%
  even_running_head = _chapter,%
  mark_format = {_chapter={第 \thechapter 章 \quad #1}},%
  odd_head_format={\underline{\makebox[\jlreqyokoheadlength]{#1}}},%
  even_head_format={\underline{\makebox[\jlreqyokoheadlength]{#1}}}%
}

これを回避するために、ifthenパッケージを使って1ページ目だけアンダーラインを引かないページスタイルを適用することを考えたのですが、うまくいきません。

また、この方法を使うと、なぜか「目次」がすべてのヘッダに表示されてしまいます。

さらに、\frontmatter\appendix\bibliography環境でchapter相当のものがないのか、奇数ページの左上に「参考文献」などが出てしまいます。(jsbookの方には\appendixはないですが、本文と同じようヘッダのスタイルにしたい)

以上の問題の解決方法や指摘内容などがあれば、ご教授いただきたいです。

Latexでの文書作成は、論文やレポート作成などで使用しておりますが、マクロなどは詳しく理解しておらず、奥村先生の美文書作成入門やchatgptやWebページを参考に見よう見まねで書いてる状況です。

よろしくお願いいたします。

m d への返信

Re: jlreqのbookオプションでのヘッダの編集について

- 和田 勇 の投稿

Table of Contents

  1. 分析・提案
  2. 添付ファイルの説明

分析・提案

  • 提供ソースを出来るだけ利用

    ヘッダーに影響しそうなキーワードを検索してみたところ、コメントアウト されている \pagestyle{mybook} を適宜活性化+アルファすると、ご希望 のように動くようです。

    添付の jlreq_QA_main-1.diff jlreq_QA_main-1.pdf jlreq_QA_main-1.tex 参照

  • 提供ソースを出来るだけ利用し見かけ上問題はないが …

    ただし、*shipout/before* の記述によるものだと思いますが、各章 (\chapter) の最初のページのヘッダーは、見かけ上、ご希望通りになって いますが、生成された箇所を追求すると first のものではなく mybook のものが動くようです。

  • 仕様を見直し \chapter{...} の直後に \thispagestyle{first} を発行するよう改良

    チューニングされたものの不具合をと考えましたが、ご希望の動作を検討す ると、*\chapter{...}* の直後に \thispagestyle{first} を発行すれば 良いのではないかと思います。

    各章の直後に \thispagestyle{first} を追加するのではなく、 この二つの命令を包括するようなマクロは以下を参考にしてください。

    \newcommand{\CHAPTER}[1]{%
      \chapter{#1}%%%%%%%%%%
      \thispagestyle{first}%
    }
    

    添付の jlreq_QA_main-2.diff jlreq_QA_main-2.pdf jlreq_QA_main-2.tex 参照

添付ファイルの説明

  • jlreq_QA_main-1 シリーズ
    • 元のファイルは提供された jlreq ベースの main.tex
    • 主に \pagestyle{mybook} の記述を活性化を念頭に、最初限の修正版
    • ページヘッダーが first 由来か mybook 由来か判断できるようにデバッグ文字列付与
      • 大文字 ODD EVEN が表示されれば first 由来
      • 小文字 odd even が表示されれば mybook 由来
    • 目次が複数ページになったときのヘッダーの確認デバッグコード付与
  • jlreq_QA_main-2 シリーズ
    • jlreq_QA_main-1.tex をベースに、 \chapter{...} の直後に \thispagestyle{first} を発行するよう改良
    • 上記を簡略表現できるようマクロ化、及びその具体的な使用例を追加
    • 不要コード削除
和田 勇 への返信

Re: jlreqのbookオプションでのヘッダの編集について

- m d の投稿

和田勇 様

迅速な回答をいただきありがとうございます。

jlreq_QA_main-2.texの \CHAPTER のマクロで、本文中(\mainmatter)では希望通りのヘッダが作成できました。

また、デバッグ用のコマンドも大変助かりました。

しかし、それ以外の目次(\tableofcontents)や付録(\appendix)ではいくつか問題が残っています。

目次

1ページ目のヘッダをページ番号のみ(つまりfirst)、2ページ目以降を「目次」「ページ番号」としたいが、\thispagestyle{first}\tableofcontents直後に入れると当然目次の2ページ目に適用されてしまいます。

これを解消するには\tableofcontentsをマクロで書き換える必要がありそうな気がしますが、私の知識では解決できませんでした。

付録

\mainmatterとそれ以外では動作が違うようなので、mybookからmarkformatのみを変えたAppbookを作成しましたが、1ページ目はfirst、2ページ目はApbookが適用されたようなのですが、付録の最終ページだけページ番号しか出力されません。

\NewPageStyle{Appbook}{%
  %odd_head_format={\makebox[\jlreqyokoheadlength]{#1}},
  nombre_position = top-right,%
  running_head_position = top-left,%
  odd_running_head = _section,%
  even_running_head = _chapter,%
  mark_format = {_chapter={付録 \thechapter \quad #1}},%
  odd_head_format={\underline{\makebox[\jlreqyokoheadlength]{#1 odd}}},%% ⇦【デバッグ用、どこからヘッダーが生成されているか確認用デバッグコード挿入】
  even_head_format={\underline{\makebox[\jlreqyokoheadlength]{#1 even}}}%% ⇦【デバッグ用、どこからヘッダーが生成されているか確認用デバッグコード挿入】
}

以上の2点について解決案があればご教授願います。

また、少し関係のない質問ですが、今回の質問のようにjlreq+bookでヘッダを編集する方法は、一般的なのでしょうか。今回ご提案いただいた方法が最善なのか、またほかの最適な方法があるのか、もしご存じでしたら教えていただけると幸いです。

いただいたコードを再編集した最新版のtexファイルを添付いたします。

以上よろしくお願いいたします。

m d への返信

Re: jlreqのbookオプションでのヘッダの編集について

- 和田 勇 の投稿

Table of Contents

  1. 問題点
  2. 改修内容
  3. その他
  4. 新規質問(jlreq 風?機能の編集方法)

問題点

  • 目次のページヘッダー

    1ページ目のヘッダをページ番号のみ(つまりfirst)、2ページ目以降を 「目次」「ページ番号」としたいが、\thispagestyle{first}を \tableofcontents直後に入れると当然目次の2ページ目に適用されてしまい ます。

    \tableofcontents マクロの中で「目次」のタイトルを組版したあたりで \thispagestyle{firsrt} を発行するようマクロを改修しなければならない のでちょっと大変です。

    この問題は、 目次 だけでなく 表目次 図目次 でも 同様な症状になると思います。

    とはいえ …

    これを解消するには\tableofcontentsをマクロで書き換える必要がありそう な気がしますが、私の知識では解決できませんでした。

    これに関しては、 現在苦戦中です。一案として、目次部分のカスタマイズ を目的として組み込まれた \def\l@section で調整できないか検討中です。

  • 付録

    \mainmatterとそれ以外では動作が違うようなので、mybookからmarkformat のみを変えたAppbookを作成しましたが、1ページ目はfirst、2ページ目は Apbookが適用されたようなのですが、付録の最終ページだけページ番号しか 出力されません。

    • 付録の最終ページだけページ番号しか出力されません

      • \backmatter を活性化することで対応可
        • ページ組み立て中に次の情報が入ってきたため、その影響かと思います
        • \clearpage あるいは \cleardoublepage を発行し、出力してしまえば良いと思います
        • \backmatter は上記の動きもふくまれているようなので、それを活性化で対応しました
    • mybook のデザインと類似した Apbook の登録について

      • 二つのページデザインは以下のように定義し直した headings を利用することで 統一可能

        \ModifyPageStyle{headings}{
          nombre_position       = top-right,%
          running_head_position = top-left,%
          odd_head_format       = {\hss\underline{\makebox[\jlreqyokoheadlength][s]{#1}}\hss},%
          even_head_format      = {\hss\underline{\makebox[\jlreqyokoheadlength][s]{#1}}\hss},%
        }
        

改修内容

上記のページスタイルの headings への移行の他、不足していた参考文献の 部分が複数ページになる場合の検証ができるよう、またこまかな改修をしました。

ただし、図目次や表目次に関しては、複数ページになるデータは用意してありません。

  • jlreq_QA_main-2_v2.tex ⇨ jlreq_QA_main-3.tex(添付ファイル参照)
    • mybook Apbook を統合した内容を headings をに組み込む(以下の記述が不要になる)
      • mark_format = {_chapter={第 \thechapter 章 \quad #1}},%
      • mark_format = {_chapter={付録 \thechapter \quad #1}},%
    • mybook Apbook の定義削除
    • \CHAPTER マクロ定義をプリアンブルに移動
    • refbook ページスタイル定義は残しておく
    • プリアンブルでの \pagestyle は行わず、frontmatter mainmatter でそれぞれで行う
    • \l@chapter の定義用を明確化するため \makeatter 記述行を調整
    • titlepage と cover.tex を見比べ、若干のページ長の変化にも対応できるよう \vspace から \vfill に変更しておいた
    • \frontmatter でのページスタイルを headings に変更
    • 参考文献が複数ページの場合のチェック用データ追記
    • 図目次および表目次の活性化
    • \mainmatter 部分
      • ページスタイルを headings に変更
      • \chapter{}\thispagestyle{first}\CHAPTER マクロ利用するよう変更
      • デバッグしやすいよう mainmatter の文字を適宜挿入
    • \appendix 部分
      • デバッグしやすいよう appendix の文字を適宜挿入
    • \backmatter 部分
      • \backmatter の活性化
      • ページスタイルは refbook のまま
  • myrefs.bib(添付ファイル参照)
    • 参考文献用テストデータ追加

その他

  • \CHAPTER マクロにするか \chapter のままにするか
    • 本番のソースがまだ小文字の \chaper のままだったら …
      • 目次部分の見栄えのための \l@chapter の再定義部分に \thispagestyle{first} を追加するだけで、本番のソースを変更する 必要がなくなります

新規質問(jlreq 風?機能の編集方法)

  • jlreq+bookでヘッダを編集は一般的?

    今回の質問のようにjlreq+bookでヘッダを編集する方法は、一般的なのでしょうか。

    標準なものでは飽き足らないという要望は少なからずあると思います。 これは jlreq 固有の問題ではなく、様々な documentclass でも同じです。

    • n / m のような総ページ数 m と現ページ番号 n を表示したい
    • – n -- とか Page n とかにしたいとか
    • ページ番号の表示位置を変えたい
    • ページ番号を丸や四角枠で囲いたい
    • カラーリングしたい
    • アンダーラインを引きたい
    • ヘッダーを四角枠で囲いたい、それを立体的に見えるよう影をつけたい…
    • ページ全体を、単純な枠線や額縁のようなデザインで囲いたい

    jlreq は、色々な機能が標準的に組み込まれています。また機能の一部を 変更して利用できる \ModifyXXX という仕組みも整備されています。

    ということでどちらかというと \ModifyPageStyle で対応できるものは \ModifyPageStyle での編集も検討してください。

    また、本スレッドの別スレッドで阿部さんが紹介している \jlreqsetup でも対応するばあいもあります。

  • 今回ご提案いただいた方法が最善なのか、またほかの最適な方法があるか?

    jlreq_QA_main-2.tex は、かなりバッサリと削除しましたが、できるだけ原 作者の意向を残す方向での回答でした。

    バッサリと削除した部分は、 \chapter の最初のページの時の判定方法に誤 りがありましたので、替わりに同等の機能を実装させるため \chapter の直 後に \thispagestyle{first} を組み込んだらどうでしょうかという提案で すので。

    jlreq_QA_main-2_v2.tex では、さらに類似のスタイルファイルを定義され ていたので、標準の headings を使われては如何でしょうかというのが添 付した jlreq_QA_main-3.tex でもあります。

    jlreq_QA_main-2_v2.tex のソースをできるだけ利用して mybook 一本で対 応する方法もありますが、jlreq 標準の headings\ModifyPageStyle で対応する方法をあえて紹介しました。

和田 勇 への返信

Re: jlreqのbookオプションでのヘッダの編集について

- m d の投稿

和田 様

返信が遅くなってしまい申し訳ありません。

詳細にご回答いただき大変ありがとうございます。

ヘッダの処理について、\modifypagestyle の使い方がわからなかったので助かりました。

目次のヘッダについては自分でももう少し勉強しながら解決策を探そうと思います。

その他細かな修正もしていただきありがとうございました。

m d への返信

Re: jlreqのbookオプションでのヘッダの編集について

- 阿部 紀行 の投稿
\chapterのあるページでヘッダを変更したいということでしたら,別行見出しの設定としてpagestyleを渡せばよいと思います.\ModifyHeadingを使うのが手軽かと思います.

> さらに、\frontmatter、\appendix、\bibliography環境でchapter相当のものがないのか、奇数ページの左上に「参考文献」などが出てしまいます。(jsbookの方には\appendixはないですが、本文と同じようヘッダのスタイルにしたい)

こちらは仰ることがわかっていませんが,bibliography環境については\jlreqsetup{thebibliography_heading=???}は使えないのでしょうか.

なお,やりたいことをきちんと書いた方が答えやすいかと思います.「適切にアンダーラインを引きたい」と書かれていますがこれでは(少なくとも自分には)何が適切なのかわかりません.
阿部 紀行 への返信

Re: jlreqのbookオプションでのヘッダの編集について

- m d の投稿
阿部 様

ご回答いただきありがとうございます。
返信が遅れてしまい申し訳ありません。
\Modifyheading や \jlreqsetup についても調べてみたいと思います。