目次のページ番号を左に寄せたいのですが……

目次のページ番号を左に寄せたいのですが……

- 匿 名 の投稿
返信数: 2
jsbookクラスで目次の体裁についてご助力をいただけませんでしょうか…
節レベルの見出しはその後にドットのリーダーが入って
ページ番号は右揃いになっていますよね。
このリーダーを取っ払った上で、ページ番号を節の
名前の長短に拘らずそのすぐ後ろに来るようにして、
全体を右不揃いにしたいのです。

短い節名 1
長ーーーーーい節名 3

みたいな感じです。jsbookクラスファイル中の
\@dottedtoclineを弄ってなんとかしようとしたのですが、

\def\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
\vskip \z@ \@plus.2\p@
{\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
\parindent #2\relax\@afterindenttrue
\interlinepenalty\@M
\leavevmode
\@lnumwidth #3\relax
\advance\leftskip \@lnumwidth \null\nobreak\hskip -\leftskip
{#4}\nobreak
\leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfill \nobreak\hb@xt@\@pnumwidth{%
\hfil\normalfont \normalcolor #5}\par}\fi}

最後3行の\leadersのところから\hfillまでを取っ払ってしまえば
とりあえずドットラインが消せることはわかります。
しかし、その後の\hfillと\hfilを削ってしまうと、ページ番号が
左に寄るのではなく行全体が均等割になって字間が間延びします。
\hfilだけにしてページ番号(#5)の後に\hfillでも置けばどうか、
と思ってやってみましたが効果が現れません。

これはいったいどこに手を入れれば解決するのでしょう?
そもそも\@dottedtoclineが見当外れなんでしょうか…?
匿 名 への返信

Re: 目次のページ番号を左に寄せたいのですが……

- 和田 勇 の投稿
\@dottedtocline 書き換え方針で OSX 10.10 TeXLive 2014 の環境で platex を用いて検証してみました。

均等割付になる大元は「 \rightskip」 のところだとおもいます。
これを生かして ページ番号を「 \hfil」 で左寄せするには「 \,」 などで空白が入ってしまいますが 「#5\par」を「#5\hfil\,\par」などとしても良いかと思います。

なお、ページ番号の前に若干の空白 「\qquad」 を入れていますが適宜書き換えてください。

\documentclass{jsbook}
\makeatletter
\def\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
  \vskip \z@ \@plus.2\p@
  {\leftskip #2\relax% \rightskip \@tocrmarg \parfillskip -\rightskip
    \parindent #2\relax\@afterindenttrue
   \interlinepenalty\@M
   \leavevmode
   \@lnumwidth #3\relax
   \advance\leftskip \@lnumwidth \null\nobreak\hskip -\leftskip
    {#4}\nobreak
    %\leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
    %   mu$}
    %\hfill \nobreak\hb@xt@\@pnumwidth{%
    %    \hfil\normalfont \normalcolor #5}\par}\fi}
    \normalfont \normalcolor\qquad#5\par}\fi}
\makeatother

\begin{document}
\tableofcontents
\chapter{ちゃぷた}
\section{せくしょん}%\rightskip 以降が有効だと均等割付になる
\section{Section }
\end{document}
和田 勇 への返信

Re: 目次のページ番号を左に寄せたいのですが……

- 匿 名 の投稿
ありがとうございます!
見事に期待していたとおりになりました。

また、ご指摘のところを見て、納得しました。
\rightskipで右を空けて、その分を引いて
\parfillskipで埋めて、ということなのですね。
ずっと\leavemodeから下を見て気がついていませんでした。

御礼申し上げます。