目次の編集

目次の編集

- Naka Aoto の投稿
返信数: 5
お世話になっております。
目次のカスタマイズについてお伺いしたいです。

\documentclass[a4paper,book,openany]{jlreq}

で卒業論文を執筆しているのですが、目次が

第一章 ●●●
1.1 ▲▲▲
1.2 ■■■
第二章 ○○○
2.1 ▼▼▼
2.2 ◆◆◆

となっています。
この目次のうち、第○章〜の部分をゴシックに変更したいです。
また、第一章と第二章の間に空白を入れたいのですが、解決策があれば教えていただけないでしょうか。

よろしくおねがいします。


添付 スクリーンショット_2021-12-25_午前0.19.00.png
Naka Aoto への返信

Re: 目次の編集

- 和田 勇 の投稿

jlreq 風にもう少し良い回答があるかと思いますが、ゴリゴリやってみました。

タイプセットすると目次に関する以下のような情報が .toc ファイルに書き込まれ・参照されます。

    \contentsline {chapter}{\numberline {第1章}緒言}{2}{}%
    \contentsline {section}{\numberline {1.1}あああ}{2}{}%
    \contentsline {section}{\numberline {1.2}いいい}{2}{}%
    \contentsline {subsection}{\numberline {1.2.1}aaa}{2}{}%

\contentsline は第一引数を利用して \l@chapter とか \l@section を利用して目次を作成します。詳細は以下 URL 参照。

    https://qiita.com/Xs_TeX/items/87bc75c9c5b6899ce96d
    LaTeXで目次のカスタマイズをしてみた

それで、 \l@chapter とか \l@section の定義を探すのですが、jlreq では容易に見つからなかった :-( ので texmf-dist/tex/luatex/luatexja/ltjbook.cls の定義を利用し、示された画像に合わせて微調整したものを添付します。

和田 勇 への返信

Re: 目次の編集

- はやて (h20y6m) の投稿

\l@chapter とか \l@section の定義を探すのですが、jlreq では容易に見つからなかった

jlreqではユーザーが独自に見出しを作成できるので \l@chapter 等も見出し定義命令の中で自動的に定義されているようです。 実際には \jlreq@heading@make@l@ という命令の中で定義されています。 \l@chapter 以下のように定義されます(6.0ptはフォントサイズやラベルのフォーマットによって変わります)。

\def\l@chapter{%
  \@dottedtocline{0}{0pt}{6.0pt}%
}
はやて (h20y6m) への返信

Re: 目次の編集

- 和田 勇 の投稿
「\jlreq@heading@make@l@」の中を見たのですが
「どこから呼び出され」、「どのようなものが生成?されてるか」、
まだ咀嚼できていません。 :-( ゆっくり眺めてみます。

いずれにしても「フォント情報や行間を調整」するため
「\my@dottedtocline」でカスタマイズしたわけですね。

ヒントありがとうございました。
Naka Aoto への返信

Re: 目次の編集

- はやて (h20y6m) の投稿

jlreqの機能に目次をカスタマイズする機能はなさそうなので \l@chapter を再定義してみます。

\makeatletter
\def\l@chapter{%
  % |\@dottedtocline|の代わりに独自の命令を使う
  \my@dottedtocline
    {0}%                    見出しのレベル(chapterは0)
    {1.0\baselineskip}%     前の行とのアキ
    {0pt}%                  字下げ
    {6\zw}%                 ラベル(「第1章」等)の幅
    {\sffamily\gtfamily}%   フォント
}
% jlreqの|\@dottedtocline|を元に独自の命令を定義
\def\my@dottedtocline#1#2#3#4#5#6#7{%
  \jlreq@set@top@contents{#1}%
  \ifnum #1>\c@tocdepth \else
    \vskip #2\relax
    {\leftskip #3\relax \rightskip \@tocrmarg \parfillskip -\rightskip
    \parindent #3\relax\@afterindenttrue
    \interlinepenalty\@M
    \leavevmode
    \@lnumwidth #4\relax
    \@tempcnta=#1\relax
    \advance\@tempcnta by -\jlreq@top@contents
    \@tempdima=1\jlreq@mol
    \multiply \@tempdima by \@tempcnta
    \advance\leftskip \@lnumwidth \hbox{}\hskip -\leftskip
    \advance\leftskip\@tempdima
    {#5#6}\nobreak
    \leaders\hbox{$\m@th\mkern \@dotsep mu$\null\inhibitglue ・\inhibitglue\null$\m@th\mkern \@dotsep mu$}%
    \hfill\nobreak
    \hb@xt@\@pnumwidth{\hss\normalfont\normalcolor #7}%
    \par}%
  \fi}
\makeatother