「目次」の「点線」を追加したい。空白の調整。

「目次」の「点線」を追加したい。空白の調整。

- 匿 名 の投稿
返信数: 7
始めまして。卒業論文を書くのにTeXを使っています。
jsarticleを用いていますが、目次を出力すると、「章」と「ページ番号」の間に点線はありませんが、この部分に点線を追加するにはどのように\l@sectionを再定義したらよいでしょうか。

また、章番号の後の空白を調節することは可能でしょうか。

レベルの低い質問かもしれませんがよろしくお願いいたします。

匿 名 への返信

Re: 「目次」の「点線」を追加したい。空白の調整。

- 匿 名 の投稿
>この部分に点線を追加する
・\l@section の定義中の \hfil を \dotfill(あるいはそれに代わる適当なリーダー)に変更する.
・\l@section の定義で \@dottedtocline を用いる.
etc.

>章番号の後の空白
# そもそも,「章」(\chapter)などという構造は jsarticle には存在しないという点はさておき,
どこにおける \section などの見出しの番号の後の空白の話ですか?
・目次の場合なら \l@section の定義中の \@lnumwidth の値を変更(\@dottedtocline を用いた目次項目については \@dottedtocline の第 3 引数を調整)
・本文中の見出しの場合なら \@seccntformat を再定義
etc.
### 「anonymous」でログインしたはずですが,投稿者名が妙なことになっているようです.
匿 名 への返信

Re: 「目次」の「点線」を追加したい。空白の調整。

- 奥村 晴彦 の投稿
> ### 「anonymous」でログインしたはずですが,投稿者名が妙なことになっているようです.

あれあれ,どなたかが変更されたようですね。直しておきました。
「匿名」というユーザを作ったのは苦し紛れですが,ちょっとまずいですね。^^;
匿 名 への返信

Re: 「目次」の「点線」を追加したい。空白の調整。

- 匿 名 の投稿
ありがとうございます。
「章」ではなく「節」でした。
訂正してお詫び申し上げます。

以下jsarticleからの引用ですがtableofcontentsの
\newcommand*{\l@section}[2]{%
\ifnum \c@tocdepth >\z@
\addpenalty{\@secpenalty}%
\addvspace{1.0em \@plus\p@}%
\begingroup
\parindent\z@
\rightskip\@tocrmarg
\parfillskip-\rightskip
\leavevmode\headfont
\setlength\@lnumwidth{4zw}% 元1.5em [2003-03-02]
\advance\leftskip\@lnumwidth \hskip-\leftskip
#1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par
\endgroup
\fi}
の\hfilを\dotfillに変更したところ、希望通りの出力を得ることができました。
匿 名 への返信

Re: 「目次」の「点線」を追加したい。空白の調整。

- 匿 名 の投稿
継続、連投申し訳ありません。
hfillでも問題はないのですが、dottedtoclineと見栄えが合わず苦労しています。

\@dottedtoclineを\@section中で使う方法をご教授願いたいです。

\hfilを\dotfillにする感覚で

#1\nobreak\dotfill\nobreak\hbox to\@pnumwidth{\hss#2}\par
の部分を

#1\nobreak{\@dottedtocline{1}{1zw}{3zw}}\nobreak\hbox to\@pnumwidth{\hss#2}\par

などとしてみましたが

Runaway argument?
! Paragraph ended before \@dottedtocline was complete.
とのエラーが出てしまいうまくいきません。

\@dottedtoclineがきちんと定義できていないのでしょうか。
匿 名 への返信

Re: 「目次」の「点線」を追加したい。空白の調整。

- TONE Kozaburo の投稿
上の書き込みで,匿名さんが回答された
>・\l@section の定義で \@dottedtocline を用いる.
は,以下の意味と思われます。

% pLaTeX2e
\documentclass{jsarticle}

\makeatletter
\renewcommand*{\l@section}  {\@dottedtocline{1}{0pt}{4zw}}
\makeatother

\begin{document}
\tableofcontents

\section{hoge}
\subsection{hogehoge}
\subsubsection{hogehogehoge}

\end{document}
匿 名 への返信

Re: 「目次」の「点線」を追加したい。空白の調整。

- TONE Kozaburo の投稿
また,上の書き込みで匿名さんが
>・\l@section の定義中の \hfil を \dotfill(あるいはそれに代わる適当なリーダー)に変更する.
は,\dotfill ではなく \subsection のリーダーと等間隔のものにするのは,以下の意味と思われます。

% pLaTeX2e
\documentclass{jsarticle}
\makeatletter

\renewcommand*{\l@section}[2]{%
  \ifnum \c@tocdepth >\z@
    \addpenalty{\@secpenalty}%
    \addvspace{1.0em \@plus\p@}%
    \begingroup
      \parindent\z@
      \rightskip\@tocrmarg
      \parfillskip-\rightskip
      \leavevmode\headfont
      \setlength\@lnumwidth{4zw}% 元1.5em [2003-03-02]
      \advance\leftskip\@lnumwidth \hskip-\leftskip
      #1\nobreak
      \leaders\hbox{\normalfont$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill %
      \nobreak\hbox to\@pnumwidth{\hss#2}\par
    \endgroup
  \fi}

\makeatother

\begin{document}
\tableofcontents

\section{hoge}
\subsection{hogehoge}
\subsubsection{hogehogehoge}

\end{document}