そもそもあまり使っている人がいないのかもしれませんが,
jsclasses に english オプションを付けたときの不具合について報告します.
\documentclass[english]{jsarticle}
\begin{document}
\tableofcontents
\section{One}
\appendix
\section{Two}
\section{Three}
\begin{table}[htbp]
\centering
\caption{Four}
\begin{tabular}{rr}
1 & 2\\
3 & 4
\end{tabular}
\end{table}
\end{document}
上記のようなソースのとき,目次の「Appendix A」が長すぎて「Two」とかぶってしまいます.
また,\tablename なのですが,「Table.~」の末尾のピリオドは取るべきと思います
(「Fig.~」と違って省略形ではないので).
前田 一貴 への返信
Re: jsclasses の english オプション
http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/33001-33500.html の,[english]{jsbook} の目次の出力 というタイトルの一連の投稿がありますね.内容はもうすっかり忘れてしまいました.
Table. は前田さんがおっしゃるとおりだと思います.
前田 一貴 への返信
Re: jsclasses の english オプション
このあたりの数値が決め打ちなのが前から気になっていました。englishオプションを使わなくとも、
\presectionname や \postsectionname や \appendixname をカスタマイズするユーザーならぶつかる
問題だと思います。たとえば \l@section の定義の中の
\setlength\@lnumwidth{4zw}% 元1.5em [2003-03-02]
という行を
\settowidth{\@tempdima}{\presectionname\postsectionname\hspace*{2zw}}%
\settowidth{\@tempdimb}{\appendixname\postsectionname\hspace*{2zw}}%
\ifdim\@tempdima<\@tempdimb\relax
\setlength{\@lnumwidth}{\@tempdimb}\else\setlength{\@lnumwidth}{\@tempdima}%
\fi
のように可変にするのはいかがでしょう。
\presectionname や \postsectionname や \appendixname をカスタマイズするユーザーならぶつかる
問題だと思います。たとえば \l@section の定義の中の
\setlength\@lnumwidth{4zw}% 元1.5em [2003-03-02]
という行を
\settowidth{\@tempdima}{\presectionname\postsectionname\hspace*{2zw}}%
\settowidth{\@tempdimb}{\appendixname\postsectionname\hspace*{2zw}}%
\ifdim\@tempdima<\@tempdimb\relax
\setlength{\@lnumwidth}{\@tempdimb}\else\setlength{\@lnumwidth}{\@tempdima}%
\fi
のように可変にするのはいかがでしょう。
奥村 晴彦 への返信
Re: jsclasses の english オプション
しかし調整が難しいですね。
私の案は
\presectionname + \postsectionname と \appendixname
の差が 1zw 程度以内に収まるなら、違和感はありません。
しかし english オプションのように
本文の section には修飾語が全く無く、かつ
付録の修飾語が Appendix のように長いときには、
インデントの量を共通にするのは無理があります。
Appendixで文字が重ならないようにインデントすると
本文の方の番号とタイトルが離れ過ぎるのです。
(案1)
english オプションのときは \appendixname を空にするか
Appx. のように短くする。
(案2)
Appendix 以降はインデント量を変える。
(その他)
どんな仕様がいいでしょうか。
私の案は
\presectionname + \postsectionname と \appendixname
の差が 1zw 程度以内に収まるなら、違和感はありません。
しかし english オプションのように
本文の section には修飾語が全く無く、かつ
付録の修飾語が Appendix のように長いときには、
インデントの量を共通にするのは無理があります。
Appendixで文字が重ならないようにインデントすると
本文の方の番号とタイトルが離れ過ぎるのです。
(案1)
english オプションのときは \appendixname を空にするか
Appx. のように短くする。
(案2)
Appendix 以降はインデント量を変える。
(その他)
どんな仕様がいいでしょうか。
tat tsan への返信
Re: jsclasses の english オプション
明けましておめでとうございます。
2013/05/14 の jsclasses.dtx に対するパッチ(jsarticle / jsbook 両方)を
作ってみました。変更ヶ所にはコメントを入れてあります。
とりあえずは目次については、
(1) カスタマイズに備え、目次のインデントは可変にする。
(2) jsarticle について、english option のときは \appendixname を空にする。
(3) 逆に jsbook について、english option のときに 目次で Chapter / Appendix
のラベルを削っていたのを復活する。
としてみました。(3)は、2004年のトニイさんのように、オプションなどで制御
できるようにした方がよかったかも知れません。
最初は \l@section と \l@chapter の変更だけにするつもりだったのですが、
subsection など下位の目次(デフォルトでは表示されませんが)のインデント
にも影響するので、これの調整であちこちいじってしまいました。
御意見よろしくお願いします。
Table も直しておきました。
以下テスト用。
%%%%%
\documentclass[english]{jsarticle}
% \documentclass{jsarticle}
\makeatletter
\if@english
\renewcommand{\appendixname}{Appendix~}
\else
\renewcommand{\presectionname}{特別講義第}\renewcommand{\postsectionname}{回}
\renewcommand{\appendixname}{特別大付録}
\fi
\makeatother
\newcommand{\test}{\section{HOGE}
\subsection{hoge} \subsection{hoge}
\setcounter{subsection}{9} \subsection{hoge}
}
\begin{document}
\tableofcontents
\newpage
\test \setcounter{section}{9} \test \appendix \test
\end{document}
%%%%%
2013/05/14 の jsclasses.dtx に対するパッチ(jsarticle / jsbook 両方)を
作ってみました。変更ヶ所にはコメントを入れてあります。
とりあえずは目次については、
(1) カスタマイズに備え、目次のインデントは可変にする。
(2) jsarticle について、english option のときは \appendixname を空にする。
(3) 逆に jsbook について、english option のときに 目次で Chapter / Appendix
のラベルを削っていたのを復活する。
としてみました。(3)は、2004年のトニイさんのように、オプションなどで制御
できるようにした方がよかったかも知れません。
最初は \l@section と \l@chapter の変更だけにするつもりだったのですが、
subsection など下位の目次(デフォルトでは表示されませんが)のインデント
にも影響するので、これの調整であちこちいじってしまいました。
御意見よろしくお願いします。
Table も直しておきました。
以下テスト用。
%%%%%
\documentclass[english]{jsarticle}
% \documentclass{jsarticle}
\makeatletter
\if@english
\renewcommand{\appendixname}{Appendix~}
\else
\renewcommand{\presectionname}{特別講義第}\renewcommand{\postsectionname}{回}
\renewcommand{\appendixname}{特別大付録}
\fi
\makeatother
\newcommand{\test}{\section{HOGE}
\subsection{hoge} \subsection{hoge}
\setcounter{subsection}{9} \subsection{hoge}
}
\begin{document}
\tableofcontents
\newpage
\test \setcounter{section}{9} \test \appendix \test
\end{document}
%%%%%
tat tsan への返信
Re: jsclasses の english オプション
tat tsan さま,
パッチ,ありがとうございます。
特にご意見ないようですので,さきほどパッチを適用したものを公開しておきました。
それにしてもpLaTeX2e 新ドキュメントクラスのページ,まったく実情に合っていないですね。暇を見て直します。
パッチ,ありがとうございます。
特にご意見ないようですので,さきほどパッチを適用したものを公開しておきました。
それにしてもpLaTeX2e 新ドキュメントクラスのページ,まったく実情に合っていないですね。暇を見て直します。
tat tsan への返信
Re: jsclasses の english オプション
%<*book>
+ \settowidth\js@tocl@width{\headfont\prechaptername\postchaptername}%
+ \settowidth\@tempdima{\headfont\appendixname}%
+ \ifdim\js@tocl@width<\@tempdima \setlength\js@tocl@width{\@tempdima}\fi
+ \ifdim\js@tocl@width<2zw \divide\js@tocl@width by 2 \advance\js@tocl@width 1zw\fi %(*1)
%<*!book>
+ \settowidth\js@tocl@width{\headfont\presectionname\postsectionname}%
+ \settowidth\@tempdima{\headfont\appendixname}%
+ \ifdim\js@tocl@width<\@tempdima\relax\setlength\js@tocl@width{\@tempdima}\fi
+ \ifdim\js@tocl@width<2zw \divide\js@tocl@width by 1 \advance\js@tocl@width 2zw\fi %(*2)
この部分、(*1)はいいのですが、(*2)は少し不自然に見えます。(*2)はどのような論理に基づいているのでしょうか……?
(…zw\fi の zw の後には空白があった方がいいよね、という話はおいといて)