abenori / jlreq

Other
125 stars 18 forks source link

ラベルなし設定にすると目次の行頭が揃わない #76

Closed ghost closed 3 years ago

ghost commented 3 years ago

目次にラベルを表示したくない場合に label_format={} と設定しています。 この時、長いタイトルを設定すると、二行目のインデントがズレて目次の行頭が揃いません。

label_format={\vspace*{4\zw}} と設定して対応しています(縦書きでは 3\zw)。

\documentclass[lualatex, paper=a7]{jlreq}
\ModifyHeading{section}{
  % 目次の行頭が揃わない
  label_format={},
  % label_format={\hspace*{4\zw}},  % にするとそろう
  format={#2},
  second_heading_text_indent={*0\zw},
}
\begin{document}
\tableofcontents
\section{あああああああああああああああああああああああああああああ}
\end{document}
イメージ

JLREQ に目次の言及もないので微秒ですがご報告まで。

Version

LuaLaTex: Version 1.12.0 (TeX Live 2020) jlreq.cls: 2020/12/29

abenori commented 3 years ago

結論からいうと,目次出力用の命令(\l@<見出し名>)を自分で再定義してもらうか,titletocパッケージのような目次出力をいじれるパッケージを使ってカスタマイズしてもらうのがよいかなぁ,と思います.

実は,\ModifySectionなどは\l@<見出し名>を,初回定義を除いて維持します.そのため,上のようになってしまうのはjlreqで定義されている設定にあわせて出力されているので,ということになります.必要最低限の副作用に押さえようと思ってこうしています.

というのが直接の原因ですが,ではこの制限を外してうまく行くかというとそうでもなくて…….ここの幅は次のように決めています.

(max(<カウンタが9の時のラベル長さ>,<カウンタが26の時のラベル長さ>)+2)を全角文字の整数倍になるように四捨五入

そのため,label_formatが空でも,後ろの+2が効いてきて結局全角二文字分の幅は開いてしまいます.この+2はラベルと見出しが重ならないようにするための調整です.https://github.com/abenori/jlreq/issues/30

ghost commented 3 years ago

対応が難しそうですね。JLREQに目次の記述もありませんし、 \l@<見出し名> の再定義や titletoc の導入で、自分で 対応するのが良いですね。titletoc を導入したところ行頭はそろうようになりました。 ご対応ありがとうございました。