abenori / jlreq

Other
125 stars 18 forks source link

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

Closed lemniscati closed 9 months ago

lemniscati commented 1 year ago

現行の jlreq.cls ですと,二段組設定の場合には \tableofcontents の展開時に強制的に段組みなしに変更されてしまいます. https://github.com/abenori/jlreq/blob/4ff954fe6e8f7e11c10a01f630b3658b00c991ca/jlreq.cls#L5725-L5736

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

いかがでしょうか.

abenori commented 1 year ago

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

lemniscati commented 1 year ago

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

\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」を入れるのを忘れていたので追加しました.

lemniscati commented 1 year ago

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

\documentclass[
  tableofcontents_twocolumn,
]{jlreq}

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

\documentclass{jlreq}
\jlreqsetup{
  tableofcontents_twocolumn,
}
abenori commented 1 year ago

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

lemniscati commented 1 year ago

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

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