itemize環境終了後、改行インデントがされなくなる

itemize環境終了後、改行インデントがされなくなる

- 小島 広久 の投稿
返信数: 8
学会が用意したクラスファイルを使用すると、itemize環境終了後、改行インデントがされなくなる。

クラスファイルのどこかおかしいか、分かりません。
分かる人がいたら、教えてください。

使用した環境
OS: Windows 7
LaTeX:
http://did2memo.net/2014/03/06/easy-latex-install-windows-8-2014-03/
の手順に従い、インストールしたもの

学会が用意したclass
http://www.ists.or.jp/2015/files/2015/02/30th_ISTS_TeX_template_150223a_発表論文.zip

の中に入っているists_ver_01_en.cls
というクラスファイル

Latexソースファイル
%%%%%%%%%%%%%%%%
\documentclass[a4paper,twocolumns,JSASS]{ists_ver_01_en}%please use this option when submit to ISTS special issue.

%---Required Packages---
%The packages below should be installed on your PC
\usepackage[dvipdfmx]{graphicx}
\RequirePackage{multicol}
\RequirePackage{amsmath}
\RequirePackage[varg]{txfonts}
\RequirePackage{bm}
\RequirePackage{array}
\RequirePackage{overcite}
\renewcommand\citeform[1]{ #1)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%---Set up Title & Author---
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\title{Test}% paper title
\subtitle{}% paper subtitle only when necessary
%
%%%%%% put author's name in \author{} following the rules below.
%% \NAME{first name}{last name} %last name is converted to capital letters.
%% \thanksNum{#)}
%
\author{\NAME{TEST}{Test}\thanksNum{1)},
\NAME{TEST}{TEST}\thanksNum{2)} and
\NAME{TEST}{TEST}\thanksNum{1)}}% author&affiliation
%
\thanksOrg{TEST, Japan}% affiliation 1
\thanksOrg{TEST, Australia}% affiliation 2
%
\begin{abstract}
test test test
\end{abstract}
%
\keywords{test1, test2}
%
%---Publication Info.---
\pubyear{2016}% year of publication
\bookvolume{14}% volume
\bookissue{ists30}% issue
\session{d} % session category
\setcounter{page}{1}% starting page number
\titleheadertrue% title for header
\headerauthor{TEST et al.}% author name for header
\receiveddate{July 3rd, 2015}%

\begin{document}
\maketitle

\section{Introduction}
Introduction test

\begin{itemize}
\item x
\item y
\item z
\end{itemize}

After itemize command, parindent does not work correclty.

After itemize command, parindent does not work correclty.

After itemize command, parindent does not work correclty.

\end{document}
小島 広久 への返信

Re: itemize環境終了後、改行インデントがされなくなる

- 北見 けん の投稿

\def\@doendpe{%
\@endpetrue
\everypar{{\setbox\z@\lastbox}\@endpefalse}}

のところがあやしいかと思います。
\everypar が一回使われたときに \everypar 自身をクリアするのが通常です。

\def\@doendpe{%
\@endpetrue
\everypar{{\setbox\z@\lastbox}\everypar{}\@endpefalse}}

のように。

北見 けん への返信

Re: itemize環境終了後、改行インデントがされなくなる

- 小島 広久 の投稿
北見さま
ありがとうございます。
教えていただいたようにクラスファイルを修正してみました。
その後、Latexソースをコンパイルしたところ、
itemizeのところで

・x
・y
・z
After itemize command, parindent does not work correclty.
 After itemize command, parindent does not work correclty.
 After itemize command, parindent does not work correclty.

と表示されるようになりました。
1つめの"After itemize,,,,"の部分も改行インデントを期待したのですが、インデントされないままです。
2つ目、3つ目の"After itemize,,"の部分は正しく改行インデントされて表示されます。

なお、LaTeXソース中の該当部分は以下の通りです。

\begin{itemize}
\item x
\item y
\item z
\end{itemize}

After itemize command, parindent does not work correclty.

After itemize command, parindent does not work correclty.

After itemize command, parindent does not work correclty.

itemizeが終わったあとの文章部分が改行インデントされるのを期待して、改行(空行)をいれてありますが、思い通りにインデントされません。あともう少しなので、何とか解決したいです。
どうぞお力をお貸しいただけませんでしょうか。
宜しくお願いします。
小島 広久 への返信

Re: itemize環境終了後、改行インデントがされなくなる

- 北見 けん の投稿
latex,ltx の中の \@doendpe の定義を見ると参考になると思いますが、
このクラスファイルであえて \@doendpe に変更を加えていることの意図がわからないので、
どうするのがよいのか判断しかねます。

北見 けん への返信

Re: itemize環境終了後、改行インデントがされなくなる

- 小島 広久 の投稿
北見さま
>latex,ltx の中の \@doendpe の定義を見ると参考になると思いますが、
>このクラスファイルであえて \@doendpe に変更を加えていることの意図がわからないので、
>どうするのがよいのか判断しかねます。

「このクラスファイルであえて \@doendpe に変更を加えている」ということなので、
クラスファイルの中で\@doendpeの定義を行っている部分をコメントアウトしてみたところ、期待通りの改行インデントなりました。

貴重なコメント、ありがとうございました。



小島 広久 への返信

Re: itemize環境終了後、改行インデントがされなくなる

- Akira Kakuto の投稿
\documentclass[9.5pt]{ists_ver_01_en}
\begin{document}
Test.
\end{document}

はエラーになるはずなので,不要なら消し
たほうが良いと思います。
Akira Kakuto への返信

Re: itemize環境終了後、改行インデントがされなくなる

- 北見 けん の投稿
> 不要なら消し
> たほうが良いと思います。

このクラスファイルの作成者に向けたアドバイスですね。

クラスオプションの定義が
\DeclareOption{9.5pt}{\renewcommand{\@ptsize}{9.5}}
のようになっていて、\@ptsize が
\ifnum\@ptsize=9.5
のように使われるので、小数はエラーになる。
それなら小数のオプションはやめてしまったほうがよいということですね。

あきらめずに小数のオプションを組み込む方向でいくのならば、
\@ptsize を長さレジスタにしてしまうことで実装可能ではあります。

まず次のように長さレジスタを用意しておいて、
\newdimen\@ptsize
クラスオプションの定義を
\DeclareOption{9.5pt}{\@ptsize=9.5pt}
のように変更し、\@ptsize を使うところは
\ifnum\@ptsize=9.5pt
のように変更すればよいと思います。
(\ifnum の代わりに \ifdim でもよいです。
\ifnum のままでも sp 単位の整数に変換されるのでOK)

北見 けん への返信

Re: itemize環境終了後、改行インデントがされなくなる

- 帯田 木偶太 の投稿

》 \ifnum\@ptsize=9.5pt
》 のように変更すればよいと思います。

これは \ifnum\@ptsize=9 という比較になってしまうのではないでしょうか。

以下のようにしてタイプセットしてみると、NOT EQUAL と表示されました。

\makeatletter
\newdimen\@ptsize  \@ptsize=9.5pt
\ifnum\@ptsize=9.5pt
    \typeout{EQUAL}
\else
    \typeout{NOT EQUAL}
\fi

帯田 木偶太 への返信

Re: itemize環境終了後、改行インデントがされなくなる

- 北見 けん の投稿

>》 \ifnum\@ptsize=9.5pt
>》 のように変更すればよいと思います。

>これは \ifnum\@ptsize=9 という比較になってしまうのではないでしょうか。

ああ、そうでした。

長さが sp 単位の整数として扱われるのは、レジスタとして記憶しているものだけでしたね。

なので、

\@ptsize=9.5pt

\dimen0=9.5pt

のようにレジスタに値を設定しておいて、

\ifnum\@ptsize=\dimen0 とすれば良いですが

\ifnum\@ptsize=9.5pt だと \@ptsize=9 まで見て false となりますね。(.5pt から \else までが読み飛ばされる)

ご指摘いただきありがとうございました。