etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

- Shiny Mt.Fuji の投稿
返信数: 10

分かりやすい記述を心がけますが,不明点・曖昧な点等ございましたら,ご指摘いただけると幸いです.

LuaLaTeXとjlreqで論文を執筆しております.大学指定のテンプレートに合わせるため,扉章見出し直下にその章の目次をつける必要があり,それをetocパッケージで実現しようとしています.

本文中に,

\etocsettocstyle{\hrule width 1.03\linewidth\vspace{\zh}}{\vspace{\zh}\hrule width 1.03\linewidth}

として小目次のスタイルを設定し(小目次を\hruleで挟むだけ), プリアンブルの最後に読み込むパッケージである自作スタイルファイル内で章見出しを

\RenewTobiraHeading{chapter}{-1}{label_format={第\thechapter 章\hspace*{1\jlreq@gol}},format={\null\vfil {\Huge\sffamily\gtfamily\bfseries #1#2}\vspace{3\zh}\localtableofcontents\vfil}}

としました.

しかし,出力されるPDFには,最初の章の扉見出し直下に論文全体の内容を含んだ小目次が\etocsettocstyleで設定した\hruleに挟まれた形で作成され,以降の扉章見出し直下には2本の\hruleが出力されるのみです.

latexの処理の順番等が関係あるのでしょうか? この事態を回避するための方策や,他のパッケージを用いた実現方法をご存知でしたら,教えていただきたいです.何卒よろしくお願いいたします.

Shiny Mt.Fuji への返信

Re: etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

- 和田 勇 の投稿

サンプルの一部の提示がありましたが、 groq に「 lualatex で jlreq をドキュメントクラスを book スタイルで利用し、各章毎に目次を表示するようなサンプルコーディングお願い」 としてみたものを、若干補正してみましたが、添付しましたので、これを土台にお望みのものを作り上げていければと考えています。

なお、当フォーラム内で etoc で検索すると titlesec や minitoc の記事が見つかります。minitoc でも類似のようなものを実現できますが、lualatex では動かないようなので groq にサポートしてもらいました。

和田 勇 への返信

Re: etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

- 和田 勇 の投稿

書き込まれていたカスタマイズ項目の意図を検討した結果を、 2025-09-09-3994-etoc.tex をベースにして改定した 2025-09-09-3994-etoc2.tex を添付します。

処理してエラーが発生するなら、生成される 2025-09-09-3994-etoc2.log を添付してください。

出力イメージで、ご希望通りでないところに、マーカーなどでメモしていただけると助かります。

和田 勇 への返信

Re: etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

- Shiny Mt.Fuji の投稿
ありがとうございます.
私の方からtexファイルを送付すべきでした.

和田様に送付いただいたPDFが私が求めていたデザインです.
しかし,私の方でコンパイルすると,エラーなく処理はされるのですが,やはり最初の章の目次に全内容の目次が生成されます.
私の方で取得したログファイルと,マーカーでメモしたPDFを送付しますので,参考にしていただければ幸いです.
Shiny Mt.Fuji への返信

Re: etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

- 和田 勇 の投稿

分析

TeXLive を homebrew で導入されているのですが、特定はできていませんが、 この homebrew で供給しているものは TeXLive 2025 リリース当初のもののようです。

    %  brew info texlive
    ==> texlive: stable 20250308 (bottled), HEAD    ←ここの日付注目
    Free software distribution for the TeX typesetting system
    https://www.tug.org/texlive/
    以下省略

どのように古いかは添付のファイル 2025-09-09-3994-etoc2.log.diff を

      usr/bin/grep -B2 -A1 なんか 2025-09-09-3994-etoc2.log.diff

のような感じで文字列「なんか」を検索してみてください。 - で始まっている行は当方のログで、 + で始まっているものがあなたのものです。

なお、当方のログと比較するため、当方でのファイルパスをあなたの環境に近づけているのですが、 どちらのものかわかるようにファイルパスの一部を大文字化しています。

現象から想像するに stfloats.sty がおかしいと思われるものの検索結果を以下に示します。

       (/OPT/HOMEBREW/CELLAR/TEXLIVE/20250308_1/SHARE/texmf-dist/tex/latex/sttools/stfloats.sty
       -Package: stfloats 2025/06/18 v3.4 Improve float mechanism and baselineskip settings
       +Package: stfloats 2017/03/27 v3.3 Improve float mechanism and baselineskip settings 【なんか古い】これかな?

この homebrew 版とほぼ同じ 2025版リリース直後の環境が残っていたので、 試すと、同様の現象が確認できたので、ほぼほぼ、TL2025 リリース直後版に 内在していた不具合だと現時点では判断しています。

対策

homebrew 版を利用していないので確証は持てないのですが

         tlmgr update --self --all

でアップデートできれば実施してみてください。

それがダメであれば、homebrew 版ではなく CTAN からの Installing TeX Live over the Internet から install-tl-unx.tar.gz をダウンロードして別途インストールしてください。

PATH の設定で homebrew のパスより先に参照する設定をお忘れなく。

四方山話

preview アプリで .pdf を開き、マークアップ をクリックすると、.pdf にあれこれメモなどを書き込めます。

和田 勇 への返信

Re: etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

- 和田 勇 の投稿

四方山話 の項、消し忘れていました、無視してください。

和田 勇 への返信

Re: etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

- 和田 勇 の投稿

TL2025 リリース直後の環境や homebrew でインストールした環境では、 TL2025 の最新版から jlreq.clsjlreq-complements.sty をカレントディレクトリに持ってくれば、 所望の効果が実現できることは、確認しました。

さて TeXLive を brew install texlive としてインストールした環境で tlmgr update --self --all とアップデートしようとすると tlmgr: action not allowed in system mode と怒られます。理由は、 homebrew で配布している側に制御権があるからのようです。

所望される効果を得るには、やはり CTAN から network install の方が良さそうです。

和田 勇 への返信

Re: etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

- Shiny Mt.Fuji の投稿
返信が遅れ申し訳ありません。
同様の事態に陥りましたので、Homebrew経由のTexliveを削除し、公式インストーラによるインストールに切り替えて最新版にアップデートしたところ、うまく行きました。
これまでも時々tlmgr のコマンドにロックがかかっているようでしたので、これで快適にLaTeXを利用できます。
本当にありがとうございました。
和田 勇 への返信

Re: etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

- Shiny Mt.Fuji の投稿
和田様の助言によりほとんど解決したのですが,和田様作成の2025-09-09-3994-etoc2.pdfにも,私の環境でも章扉見出しの次ページにページ番号の振られない白紙ページが1枚含まれます.最初はjlreqのオプションのopenrightの作用かと考えたのですが,それは違うようです.\hlineの作用でもないようです.
この原因はなんでしょうか?
LaTeXではなく外部のPDFエディタで削除すればいい話なのですが,気になってしまいます.
何卒よろしくお願いいたします.
Shiny Mt.Fuji への返信

Re: etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

- 和田 勇 の投稿

章扉見出しの次ページにページ番号の振られない白紙ページが1枚含まれる理由

chapter 毎に を定義したためだと思います。

当初の質問に記述されていた \RenewTobiraHeading{chapter}云々 は おそらく jlreq.cls に記載されている \NewTobiraHeading{part}云々 を参考にされたのではないでしょか。

このように \chapter 毎に「扉」の処理(=次の区切り目の開始ページをこの場合「奇数」となるよう 必要に応じて空白ページを挿入)されてしまうため、余分に感じられる空白ページが挿入されたのだと思います。

用語「扉」などについては、本の扉(とびら)とは?役割や使い方のコツ、印刷価格~オプション加工について知ろう(1)~ を参考にしてください。

以上を踏まえ、章毎の「扉」をやめて、また当初質問時に記述されていた \hrule を \hrulefill に書き換えてみた ものを添付ファイルとしますので参考にしてください。

念の為、差分情報は以下の通りです。若干メモ書きも入れておきました。

    @@ -1,4 +1,7 @@ このブロックは念の為のメモ書きです
    -\documentclass[book]{jlreq}
    +%#! lualatex
    +% 洋本?横書き book 形式なので多分 左とじ、両面印刷を想定
    +\documentclass[book]{jlreq}% book はデフォルト両面だが
    +                           % twoside も入れておいても良い
     \usepackage{etoc}

     \begin{document}
    @@ -11,9 +14,11 @@
     % 第1章
     \chapter{イントロダクション}

    -\etocsettocstyle{\subsection*{この章の目次}}{\noindent}
    +\etocsettocstyle{\subsection*{この章の目次~ \hrulefill}}{\noindent\vspace{\zh}\hrulefill}
     \etocsettocdepth{2} % 目次の深さをサブセクションまで設定
     \localtableofcontents % 章ごとのローカル目次
    +% 章の section の開始を新ページから始める場合 \clearpage などで調整
    +\clearpage% \cleardoublepage にするか否かはそのドキュメントの仕様次第
     \section{セクション1.1}
        セクション1.1のテキスト...
     \subsection{サブセクション1.1.1}
    @@ -23,8 +28,10 @@

     % 第2章 以降も同様なので省略(詳細は添付ファイル参照)
和田 勇 への返信

Re: etocパッケージにより,jlreqの扉章見出し直下にその章の目次をつけようとするが,うまく出力されない.

- Shiny Mt.Fuji の投稿

返信が遅くなり申し訳ございません. ご返信の通り,半扉,中扉の区別がついていないのが原因でした.

\RenewTobiraHeading{chapter}{-1}{
  type=han,
  label_format={第\thechapter 章\hspace*{1\jlreq@gol}},
  format={\null\vfil
      {\Huge\sffamily\gtfamily\bfseries #1#2}
      \vspace{3\zh}
      \localtableofcontents
      \vfil
    }
}

として半扉として設定することで解決しました. ご回答いただきありがとうございました.