abstract環境がうまくいかない

abstract環境がうまくいかない

- Mizukoshi Keita の投稿
返信数: 21
jsbookのreportでabstractが右にずれ、タイトルも表示されない

フォーラムを探しても同様の質問が無かったので質問させていただきます。

MacOS El CapitanでMacTeXを使ってlatexmkを用いてuplatexでコンパイルを行っています。Versionは
Latexmk, John Collins, 22 April 2016. Version 4.45
e-upTeX 3.14159265-p3.7-u1.21-160201-2.6 (utf8.uptex) (TeX Live 2016)kpathsea version 6.2.2ptexenc version 1.3.4

次のようなシンプルな単ファイルのコンパイルに成功はするのですが、abstract環境の内部が右に偏ります。また”要旨"などのタイトルも出力されません。それ以外の本文では起こらないのですが、なにが原因なのでしょうか。偶数ページでも奇数ページでも右に偏ります。

%thesis.tex

\documentclass[uplatex,report,10pt,a4paper]{jsbook}

\bibliographystyle{jplain}
\usepackage[uplatex,jis2004]{otf}
\usepackage[dvipdfmx]{graphicx}
\usepackage{float}
\usepackage[version=3]{mhchem}
\setlength{\textwidth}{\fullwidth}
\setlength{\evensidemargin}{\oddsidemargin}

\begin{document}
\title{表紙のタイトル}
\author{オレ}
\date{\today}

\maketitle

\tableofcontents
\listoffigures

\newpage
\begin{abstract}

\centering
アブストなぜかずれる。なんでだろう。なんでだろう。なおしかたがいまいちわからない。なおしかたがいまいちわからない。なおしかたがいまいちわからない。なおしかたがいまいちわからない。なおしかたがいまいちわからない。なおしかたがいまいちわからない。なおしかたがいまいちわからない。なおしかたがいまいちわからない。なおしかたがいまいちわからない。なおしかたがいまいちわからない。なおしかたがいまいちわからない。なおしかたがいまいちわからない。

\end{abstract}
\listoftables

\newpage

\chapter{テストチャプター}
\section{テストセクション}
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
\end{document}

よろしくおねがいいたします。
Mizukoshi Keita への返信

Re: abstract環境がうまくいかない

- 前田 一貴 の投稿
jsclasses のドキュメント
http://mirrors.ctan.org/macros/latex/contrib/jsclasses/jsclasses.pdf
にあるように,jsbook の場合

> abstract
> 概要(要旨,梗概)を出力する環境です。 book クラスでは各章の初めにちょっとしたことを
> 書くのに使います。

というわけなのですね.つまり,


\chapter{テストチャプター}

\begin{abstract}
アブストラクトです。
アブストラクトです。
アブストラクトです。
アブストラクトです。
アブストラクトです。
アブストラクトです。
アブストラクトです。
アブストラクトです。
アブストラクトです。
アブストラクトです。
アブストラクトです。
アブストラクトです。
\end{abstract}

\section{テストセクション}
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
これはテストの文です。
...

という使い方が想定されていて,右に偏るのは意図通りなのです.

卒業論文の概要のような体裁にしたければ,プリアンブルに jreport.cls の定義を持ってきて

\makeatletter
\renewenvironment{abstract}{%
  \titlepage
  \null\vfil
  \@beginparpenalty\@lowpenalty
  \begin{center}%
    {\bfseries\abstractname}%
    \@endparpenalty\@M
  \end{center}}%
  {\par\vfil\null\endtitlepage}
\newcommand{\abstractname}{要旨}
\makeatother

とするのが1つの案でしょうか.
前田 一貴 への返信

Re: abstract環境がうまくいかない

- Mizukoshi Keita の投稿
ありがとうございます。完璧に修正されました。

jsclassesのドキュメントは読んでいたのですが,jreportの後継としてjsbookのreportを用いるという理解をしていたので,この挙動はやや不可解でした。
この方法で思い通りの出力になりました。素早い返信に感謝いたします。


Mizukoshi Keita への返信

Re: abstract環境がうまくいかない

- aminophen の投稿
改めて読んでいて思ったのですが

> jsclassesのドキュメントは読んでいたのですが,
> jreportの後継としてjsbookのreportを用いるという理解をしていたので,

この「理解」は正しいような気がします。jreport はいろいろ問題があるから
jsbook の report を使え、というのはよく見かけますし、実際にその方が自然な
挙動になるところはたくさんあります。

一方で、今回のような挙動の違いがあると、「jreport がよくないとわかっていても
乗り換えられない」という現象の一因になってしまう?とも思いますね。

何か「もうちょっと互換性の高いモード」を新設したほうがよいのでしょうか。
aminophen への返信

Re: abstract環境がうまくいかない

- 前田 一貴 の投稿
私も今回調べたときに似たようなことを思いましたが,
実際にどうするのが正しいのかはよくわからないです.

> 何か「もうちょっと互換性の高いモード」を新設したほうがよいのでしょうか。

新しい環境を追加するとか,その新しい環境で abstract 環境を置き換える
オプションを付けるとかはありえそうです.
あまりよくない気もしますが,名前は abstract* とか?

ちなみに,他のクラスファイルだとこのあたりはどうなっているのかを調べてみたのですが,
http://tex.stackexchange.com/questions/53377/inspirational-quote-at-start-of-chapter
が参考になりました.例えば KOMA-Script だと

\documentclass[abstract=true]{scrreprt}
\usepackage{lipsum}
\begin{document}

\begin{abstract}
\lipsum[1]
\end{abstract}

\setchapterpreamble[ru][0.8\textwidth]{\lipsum[2]}
\chapter{foo}

\section{bar}
\lipsum[3]
\end{document}

のようにできます.scrbook の場合は,ドキュメントの abstract の解説によると

> Books typically use another type of summary. In that case there is usually a dedicated
> summary chapter at the beginning or end of the book. This chapter is often combined with
> the introduction or a description of wider prospects. Therefore, the class scrbook has no
> abstract environment.

ということでそもそも abstract は定義されていないようです.
(book.cls, jbook.cls などでもおそらく同じ.)

memoir.cls にも \chapterprecis というのがあるようです.
前田 一貴 への返信

Re: abstract環境がうまくいかない

- 奥村 晴彦 の投稿
よく理解できていませんが,最初の \chapter の前と後で abstract の定義を変えるとかではどうでしょうか?
奥村 晴彦 への返信

Re: abstract環境がうまくいかない

- 前田 一貴 の投稿
なるほど.それだとほとんどの場合(意図通りに使われている場合)に
互換性も維持できて,よいかもしれません.
(何か見落としがあればどなたか教えて下さい.)
前田 一貴 への返信

Re: abstract環境がうまくいかない

- 北見 けん の投稿
前田さんが挙げられていたサイトを見てなるほどと思ったのですが、
「各章のはじめにちょっとしたこと」というのは、
西洋の書籍でよくみられるような
象徴的な引用文を意図しているのですね。
それならば右寄せで組まれることが多いので納得です。

ですがそれだと「abstract(概要)」ではなくて「引用」ですから、
環境名が意味合いとマッチしていないのではないでしょうか。
(上記サイトでは、“inspirational quote”といっていました)


あと、
> 最初の \chapter の前と後で abstract の定義を変える
とうまくいきそうだというのは、
下記のような使われ方を想定しているという理解でよいでしょうか。

しかしこれだと、同じ環境名のものが所によって違う体裁になるという、
中身を知らないユーザーにとっては摩訶不思議で応用しづらい仕様に
なってしまうと思います。

一般論として、やはり環境名と意味合いがマッチしていないと
混乱のもとになるのではないかと思いますので、
引用文のほうは abstract ではない環境名にして、
abstract のほうは右寄せにしない概要文を組むために使うのがよいように思います。

---- 書籍のようなものの場合 ----
% <--- 文書の先頭では、abstract は概要出力になっている(右寄せしない)
\maketitle

\part{}

\chapter{}
% <--- これより後では、abstract で引用文出力になる(右寄せ)

\begin{abstract}
引用文(右寄せ)
\end{abstract}

\section{}

本文
----

---- レポートのようなものの場合 ----
% <--- 文書の先頭では、abstract は概要出力になっている(右寄せしない)
\maketitle

\begin{abstract}
論文概要(右寄せにしない)
\end{abstract}

\chapter{}
% <--- これより後では、abstract で引用文出力になる(右寄せ)

% ここに引用文を置きたい場合は abstract が使える

\section{}

本文
----
北見 けん への返信

Re: abstract環境がうまくいかない

- 前田 一貴 の投稿
> 「各章のはじめにちょっとしたこと」というのは、
> 西洋の書籍でよくみられるような
> 象徴的な引用文を意図しているのですね。

引用文とは限らないのでしょうが,洋書だとそういう用途が多いかと思って
"epigraph latex" で検索したらそのページが出てきました.

> 下記のような使われ方を想定しているという理解でよいでしょうか。
>
> しかしこれだと、同じ環境名のものが所によって違う体裁になるという、
> 中身を知らないユーザーにとっては摩訶不思議で応用しづらい仕様に
> なってしまうと思います。
>
> 一般論として、やはり環境名と意味合いがマッチしていないと
> 混乱のもとになるのではないかと思いますので、

その通りだと思うのですが,既に jsbook[report] の既存の abstract の仕様が右寄せに
なっているので,次善案として「よいかもしれない」と書きました.
過去のことを考えなくてよいならば,北見さんが書かれた通りに

> 引用文のほうは abstract ではない環境名にして、
> abstract のほうは右寄せにしない概要文を組むために使うのがよいように思います。

と仕様変更してしまうのがよいと思うのですが.
北見 けん への返信

Re: abstract環境がうまくいかない

- 奥村 晴彦 の投稿
まず右寄せではなく,左マージンを少しとってあるだけです。また,

> 象徴的な引用文を意図しているのですね。

ではなく,美文書本の各章の頭の「この章の概要」的な説明を意図していました。
奥村 晴彦 への返信

Re: abstract環境がうまくいかない

- 前田 一貴 の投稿
私もちょっと誤解を生みそうな書き方をしてしまっているかもしれません.

jsbook の abstract が各章の概要を書くためのものだということは
理解しているのですが,他のクラスファイルだとこれに相当する機能は
どうなっているのかがちょっと気になって,そのためにエピグラフに
ついて検索して当該機能の解説にたどり着いたということです.
KOMA-Script のドキュメントをご覧いただければわかると思いますが,
\setchapterpreamble はその章の概要を書くことが第一に意図されています.
それがエピグラフにもよく使われるというわけです.

一方で,abstract 環境というと文書の冒頭でその文書全体の概要を
書くための環境となっているクラスファイルが多いため,
abstract 環境で各章の概要を書くという仕様は,このトピックの
質問のように混乱を生みそうだと思いました.そういう意図で,
「過去のことを考えなくてよいならば仕様変更した方がよい」
と書きました.実際にオプションなどなしで変更するのは
過去の文書との互換性を考えると難しいと考えています.
前田 一貴 への返信

Re: abstract環境がうまくいかない

- 奥村 晴彦 の投稿
前田さん,ご説明ありがとうございます。まさにそういうことだと思います。

今のところ,最初の chapter で abstract を再定義するあたりが妥当でしょうか。

ちなみに卒論などの「概要」は \frontmatter の \chapter{概要}(または \chapter*{概要})で書いてもらう想定です(私の研究室でも最近の学生さんはWordばかりになってしまいましたが)。

奥村 晴彦 への返信

Re: abstract環境がうまくいかない

- aminophen の投稿
> 美文書本の各章の頭の「この章の概要」的な説明を意図していました。

気になるのは、book の場合と report の場合に同じコードが
使われていることです。「この章の概要」的な説明を意図し
たとのことですが、それは book の場合だからであって、
report にこれを使うことは想定されているでしょうか。
aminophen への返信

Re: abstract環境がうまくいかない

- 奥村 晴彦 の投稿
{jsbook}と[report]{jsbook}の違いは両面印刷するかどうかだけですので,意図の違いはあまりありません。
奥村 晴彦 への返信

Re: abstract環境がうまくいかない

- aminophen の投稿
> 両面印刷するかどうかだけ

ありがとうございます。「jsreport 相当」としか書かれていない
ためか、よく理解できていませんでした。
奥村 晴彦 への返信

Re: abstract環境がうまくいかない

- 北見 けん の投稿
> まず右寄せではなく,左マージンを少しとってあるだけです。また,
>
> > 象徴的な引用文を意図しているのですね。
>
> ではなく,美文書本の各章の頭の「この章の概要」的な説明を意図していました。

申し訳ありません。勝手な解釈で誤解していたようです。

そうすると、体裁の違いだけということになり、
本質的にはデザイン上の好みの問題といえると思います。
あとはそれぞれの組み方がどれだけ支持を集めるかに応じて、
その体裁用のオプションを用意したりしなかったり、
デフォルトの体裁をどれにするかという問題になるのではないかと思います。

最初のチャプターの前か後かによって体裁を変えることを考慮するのであれば、
体裁オプションはクラスオプションとして用意するのではなしに個々の
abstract 環境のオプション引数にした上で、
文書全体に適用したい体裁があって毎回指定するのが面倒な場合には
クラスオプションとしても指定できるようにする
というのが使いやすいのではないかなと思います。一案ですが。

ちょっと心配しているだけなのですが、今の体裁が嫌なら他の文書クラスを使えばいいとか、
jreport ふうの体裁にするためには他のパッケージを読み込まなければいけないとか、
そういうことになったとしたら LaTeX の敷居を高くすることになってよくないと思いますので。
北見 けん への返信

Re: abstract環境がうまくいかない

- 奥村 晴彦 の投稿
[report] を [report*] にするといった互換性に配慮した拡張でしたら歓迎ですので,どんどん手を加えてください。あるいは本物の {jsreport} を作ってしまうほうがいいのかもしれませんね。
aminophen への返信

jsclasses 2017/02/24(Re: abstract環境がうまくいかない)

- aminophen の投稿
forum:2121 を受けて「jsreport クラス」を新設した jsclasses 2017/02/24 を
CTAN にアップロードしました。2,3 日後に TeX Live update に降りてくるはずです。

その他の変更点:
* jsclasses:openleft オプション追加(横組専用なので要するに「見開き起こし」です)
* jslogo:hyperref パッケージ読込時に一部のロゴ命令を \section などの引数に入れて
使うと警告が出ていたのを、出ないように対策した

それと、潜在的なバグの可能性を排除するため forum:2085#p12257 の Z.R. さんの
ご指摘に従い、ソレ専用の“ユニークな制御綴”に直しました。
aminophen への返信

jsclasses 2017/03/05(Re: abstract環境がうまくいかない)

- aminophen の投稿
本日 jsclasses 2017/03/05 を出しました.jsbook 使用のソース
(twoside かつ openany)で \frontmatter を使うと 1 → i のように
奇数ノンブルが連続し,偶奇逆転してしまう問題の修正です.

\documentclass[openany]{jsbook}
\begin{document}
テスト
\frontmatter
\chapter{前付}
\mainmatter
\chapter{本文}
\end{document}

古くからあったバグの修正であり,非互換な変更ともいえますが,
\frontmatter の前に何か書くということは考えにくいため,ほぼ
影響はないと思います.
また,先日追加したばかりの openleft についても,\frontmatter と
\mainmatter で計 2 回ノンブルの逆転が起きていました.
これも日が浅いので同様に修正しました.