目次の直後に一括して図版を出力する場合の文章構造

目次の直後に一括して図版を出力する場合の文章構造

- さとう たかひろ の投稿
返信数: 7
はじめてTex Forumを利用させていただく、さとうたかひろと申します。
今後よろしくお願いします。

本題ですが、私はいま目次の直後に一括して図版を出力したいと思っています。
LaTeXの構成は、
\documentclass{amsbook}
\begin{document}
\frontmatter
\include{preface}%前書きのファイルで\chapter*{Preface}、文章と続きます
\tableofcontents
\begin{figure}
...
\end{figure}%これを数回繰り返し複数の図版を入れています
\mainmatter
...%以下、普通の章、セクション、サブセクションが続きます
のようになっています。

このままだと図版をいれたところのヘッダーがCONTENTSとなり、さらにページ番号も出力されます。
図版を入れるところで改ページと\thispagestyle{empty}を組み合わせれば、ヘッダーやページ番号は除けるのですが、文章構造として目次の一部となりおかしいように思えます。

次に\chapter*{}としたあとに\begin{figure}を続けたのですが、amsbookクラスの\chapter*は例えば前書きなどを章番号なしで入れるためのものなので、このままだと目次に空白の行と対応ページが出力されます。
さらに文章構造的に、独立した章をつくり一括して図版を出すのもやはりおかしく感じます。

他に\mainmatter以降ですぐに\begin{figure}とする方法もあるものの、図版が\mainmatterだとこれも文章構造はおかしいだろうといった状態です。

色々と調べてみたのですが、この構成がそれなりに特殊というか、類似した質問や解答は見つかりませんでした。
\tableofcontentsの直後に、\begin{document}の直後に文章を入れたときにのように、独立した状態で一括して図版を挿入する妙案はないでしょうか?
さとう たかひろ への返信

Re: 目次の直後に一括して図版を出力する場合の文章構造

- 北見 けん の投稿
> 図版を入れるところで改ページと\thispagestyle{empty}を組み合わせれば、ヘッダーやページ番号は除けるのですが、文章構造として目次の一部となりおかしいように思えます。

これで十分なように思えます。
ヘッダーに何も表示されなくなったのなら、
そのページは目次の一部ではないと了解されるものだと思いますが、
そのページが文章構造上で目次の一部であるという考えはどこから来るのでしょうか?
(私が何か勘違いをしているのかしら?)
北見 けん への返信

Re: 目次の直後に一括して図版を出力する場合の文章構造

- さとう たかひろ の投稿
以前までは、\tableofcontentsはただ目次を出力するだけのものだと思っていました。
しかし今回、目次の直後に図版を出力して、これは\frontmatterや\appendixのように目次用のページ設定変更を行い、かつ目次を出力するものだと認識が変わりました。

なのでこの設定でなんらかのファイルを生成すると、どういった形式のファイルにもよると思うのですが、図版は内的なデータの区分では目次の一部になってしまうと思います。
例えばのちのちPDFファイルのしおり的なものを作ろうとしたとき、手動ならばともかく機械的な処理を行うと、図版は目次の一部になるだろうなといった感じです。

なんというか、目次の出力のあとに\tableofcontentsをキャンセルして、\frontmatterの一部ではあるが\tableofcontentsの一部ではない形で図版を出力したいです。
しかし上手い方法が見つかりません。

やはりご指摘の通り、改ページと\thispagestyle{empty}を組み合わせて見た目だけいじるしかないでしょうかね...
さとう たかひろ への返信

Re: 目次の直後に一括して図版を出力する場合の文章構造

- 北見 けん の投稿
> 図版は内的なデータの区分では目次の一部になってしまう

LaTeX で生成される文書において、
この「内的なデータ区分」のような概念はないと思っていますが、
あるのでしたっけ?

例えば、下の例で生成されるDVIファイルやPDFファイルには、
目次と本文の間の図版の部分について、
「そこは目次の一部である」とか、
「そこは本文の一部である」とかいう情報は
含まれていないのだと思うのですが・・・
(私がPDFについておかしな理解をしているのだとしたらすみません)

\documentclass{amsbook}

\begin{document}

\frontmatter

\chapter*{Preface}
ここはまえがきです。
\newpage
まえがきの2ページ目です。

\tableofcontents

\chaptermark{}
\setcounter{page}{1}\renewcommand{\thepage}{}
\begin{figure}[h]図版1です。\end{figure}
\begin{figure}[h]図版2です。\end{figure}
\newpage
\begin{figure}[h]図版3です。\end{figure}
\begin{figure}[h]図版4です。\end{figure}

\mainmatter

\chapter{最初の章}
最初の章の冒頭文
\section{最初の節}
最初の節の本文
\newpage
\section{二つ目の節}
二つ目の節の本文

\end{document}
北見 けん への返信

Re: 目次の直後に一括して図版を出力する場合の文章構造

- 北見 けん の投稿
> (私がPDFについておかしな理解をしているのだとしたらすみません)

いや、やはりPDFの場合は文書構造データを保持してるのかな?
私は普段PDFを作らないのでよくわかっていないかも。
PDFを作る場合は文書構造を操る方法がおそらくあるのですね。
不確かなことを書いてしまい、申し訳ありません。
北見 けん への返信

Re: 目次の直後に一括して図版を出力する場合の文章構造

- さとう たかひろ の投稿
いえいえ、そんなことないです。
私の説明不足だと思うので少し説明させていただきます。

基本的にLaTeXで生成されたPDFには、内部構造データは付加されていないはずです。
ここでちょっと話は変わるのですが、とある海外の出版社のマニュアルにはTeX構文の使用を可能な限り避けるよう指示があります。
今は電子版もさかんに出版される時代ですが、ほとんどの出版社はLaTeXのソースファイルをプログラムで処理して、自動的に抽出した内聞構造データをPDFに付加しているようです。
TeX構文の使用/不使用は普段使いでは個人の好みですが、この場合はプログラムがLaTeX構文を想定しているため、バグを割けるために使わないで欲しいとのことでした。

他にもオンライン上で公開されるHTMLベースの目次や書誌データの生成などは、LaTeXのソースファイルにプログラムの処理を組み合わせて行うようです。
流石に人力でやると手間が増えすぎますからね...
私が編集しているファイルも細かいことは未定なのですが、もしかするとそういった処理を行うかもしれません。
このままだと\tableofcontentsの直後の図版は、\listoffiguresや\mainmatterの構文で区切られないかぎり、自動生成のプログラムでは目次に一部になるはずです。

とりあえずリスクを避けるため、LaTeXの構文上で内部構造を区別するような方法がないかなと考えた次第です。
多分ですが上手い方法はなさそうなので、自分のなかで妥協できるやり方を探そうと思います。
さとう たかひろ への返信

Re: 目次の直後に一括して図版を出力する場合の文章構造

- 北見 けん の投稿
ということは、
やはりもともと LaTeX 側では規定していない文書構造データを
変換プログラムが勝手に(例えば \chapter から次の \chapter までを「章」とする、
など)見なし付与しているということですから、
その変換プログラムの実装に依存するのじゃないかと思います。

今回の図版ページに「章」とは別の文書構造を与えたいというのであれば、
その変換プログラムの判定基準を流用するようにLaTeXソース側で細工するか、
その変換プログラムを拡張(改変)して図版ページ用の構造を受け入れさせるように
することになるのではないかと思います。

いずれにしろ、その変換プログラムの実装を特定しないと話が始まらないかと思います。
北見 けん への返信

Re: 目次の直後に一括して図版を出力する場合の文章構造

- さとう たかひろ の投稿
自分も色々と考えたのですが、同じなような結論に至りました。
結局これはLaTeXではなく、そのあとの校正や編集の領域の問題であると。
少し話がややこしくなるのですが、自分が編集しているファイルにどういった処理をほどこすかは現状では未定です。
そういった文章構造データを付加するかもしれないし、付加しないかもしれません。

結論としては、\thispagestyle{empty}と改ページのコマンドを組み合わせて求める出力を得ることにしました。
もしなんらかの処理をほどこす場合も、そこの部分を手動で修正するのが一番早いし望ましいだろうと考えました。
こういった小さい修正のためにトリッキーなソースを用意したり、プログラムを改変するのは逆に本末転倒ですもんね。
あまりよい質問ではなかったと思うのですが、話しているうちに自分がどうするべきか考えがまとまりました。

ありがとうございました。