jsclasses の english オプション

jsclasses の english オプション

- 前田 一貴 の投稿
返信数: 13
そもそもあまり使っている人がいないのかもしれませんが,
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 オプション

- KUROKI Yusuke の投稿
http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/33001-33500.html の,[english]{jsbook} の目次の出力 というタイトルの一連の投稿がありますね.内容はもうすっかり忘れてしまいました.

Table. は前田さんがおっしゃるとおりだと思います.
KUROKI Yusuke への返信

Re: jsclasses の english オプション

- 奥村 晴彦 の投稿
トニイさんが作ってくださったのですね。
すっかり忘れていました。
Tableもその通りです。
jsarticleも含めてうまくいくパッチをどなたか作っていただければ…
(いまちょっとほかのほうに頭が行っているので)
前田 一貴 への返信

Re: jsclasses の english オプション

- tat tsan の投稿
このあたりの数値が決め打ちなのが前から気になっていました。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

のように可変にするのはいかがでしょう。


tat tsan への返信

Re: jsclasses の english オプション

- 奥村 晴彦 の投稿
なるほど。これがすっきりしていますね。
奥村 晴彦 への返信

Re: jsclasses の english オプション

- tat tsan の投稿
しかし調整が難しいですね。

私の案は
\presectionname + \postsectionname と \appendixname
の差が 1zw 程度以内に収まるなら、違和感はありません。

しかし english オプションのように
本文の section には修飾語が全く無く、かつ
付録の修飾語が Appendix のように長いときには、
インデントの量を共通にするのは無理があります。
Appendixで文字が重ならないようにインデントすると
本文の方の番号とタイトルが離れ過ぎるのです。

(案1)
english オプションのときは \appendixname を空にするか
Appx. のように短くする。

(案2)
Appendix 以降はインデント量を変える。

(その他)

どんな仕様がいいでしょうか。
tat tsan への返信

Re: jsclasses の english オプション

- tat tsan の投稿
明けましておめでとうございます。
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 新ドキュメントクラスのページ,まったく実情に合っていないですね。暇を見て直します。
tat tsan への返信

Re: jsclasses の english オプション

- Z. R. の投稿
 %<*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\fizw の後には空白があった方がいいよね、という話はおいといて)

Z. R. への返信

Re: jsclasses の english オプション

- tat tsan の投稿
あっ、すみません。
(*1)が意図するものです。(*2)は(*1)のtypoです。

ご指摘ありがとうございます。
tat tsan への返信

Re: jsclasses の english オプション

- 奥村 晴彦 の投稿
ありがとうございます。
by 2 ... izw\fi
に直しました(でよろしかったですね?)。