abenori/jlreq

\tableofcontents で二段組みを解除しないオプション(あるいは段数を含め目次の版面を調整できるオプション)があると助かります

Closed this issue · 5 comments

現行の jlreq.cls ですと,二段組設定の場合には \tableofcontents の展開時に強制的に段組みなしに変更されてしまいます.

jlreq/jlreq.cls

Lines 5725 to 5736 in 4ff954f

\newcommand{\tableofcontents}{%
\jlreq@top@contents=-100\relax
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\prop_item:Nn \g__jlreq_tableofcontents_prop { heading }
\@mkboth{\contentsname}{\contentsname}%
\@starttoc{toc}%
\if@restonecol\twocolumn\fi
}

この設定をキャンセルできるオプションか,あるいは段数を含め目次の版面を調整できるオプションがあると助かります.

いかがでしょうか.

tableofcontents_twocolumn\jlreqsetupに追加してみました. 45837f6

早速のご対応ありがとうございます.

\if@restonecol の名前が紛らわしくなるので(二段組みに復帰する場合もあるので),
復帰用の設定を例えば \@restcolcmd に保存することにして,次のようにするのはいかがでしょうか.

\newcommand{\tableofcontents}{%
  \jlreq@top@contents=-100\relax
  \if@twocolumn
    \bool_if:NTF \g__jlreq_tableofcontents_twocolumn_bool {
      \def\@restcolcmd{}% 段組設定は復帰不要
    }{
      \def\@restcolcmd{\twocolumn}% 段組設定を復帰するときは二段組
      \onecolumn% 一段組にする
    }
  \else
    % スイッチの流用
    \bool_if:NTF \g__jlreq_tableofcontents_twocolumn_bool {
      \def\@restcolcmd{\onecolumn}% 段組設定を復帰するときは一段組
      \twocolumn% 二段組にする
    }{
      \def\@restcolcmd{}% 段組設定は復帰不要
    }
  \fi
  \prop_item:Nn \g__jlreq_tableofcontents_prop { heading }
  \@mkboth{\contentsname}{\contentsname}%
  \@starttoc{toc}%
  \@restcolcmd% 段組設定を復帰する
}

訂正:↑ 一段組で目次二段組のときに「\twocolumn」を入れるのを忘れていたので追加しました.

そのほか,以下のようにグローバルオプションに tableofcontents_twocolumn を書き込んだ場合は,無視されてしまいます.
これは意図的なものでしょうか.

\documentclass[
  tableofcontents_twocolumn,
]{jlreq}

もちろん,\jlreqsetup を使えばちゃんと認識されます.

\documentclass{jlreq}
\jlreqsetup{
  tableofcontents_twocolumn,
}

\jlreqsetupで指定できるのでクラスオプションによる指定はできません.(これは他のオプションも同様.)

了解しました.よく分かっておらず失礼しました.

このオプション tableofcontents_twocolumn があると,目次を二段組にしたいときに \tableofcontents を再定義しなくてすむので助かります.
ありがとうございます!