1つのファイルのなかに異なるプリアンブルを持つ文章を作る

1つのファイルのなかに異なるプリアンブルを持つ文章を作る

- maple @autumn の投稿
返信数: 4
こんにちは

「1度のコンパイルでtexのエディターで1つのテキストファイルをタイプセットする」
と書くと、普通にtexのタイプセットでやっていることではないかと思われる
と思います。

だけど、1つのテキストファイルの中に、複数の\begin{document} \end{document}がある場合にそれらを全て一回のタイプセットで、それぞれの
プリアンブルの範囲を限りながら、1つの文書を作れないか?という質問です. より正確には、複数の\begin{document} \end{document}ということにこだわっているのではなく、複数のプリアンブルを持つ複数の文章からなる、1枚
のpdfファイルを作りたいというのが正確な表現です。

なぜこういうやり方ができないかと考えているかというと、奥村先生の
本に書いているコード(例えばフォントについての部分)タイプセットを
するときに、この設定なら、こういう表示、別の設定なら、こういう表示
というふうにやってみたいのです。一枚のPDF中の、前後に、それぞれの
プリアンブルを反映した文章がくるようであれば
どういうふうにプリアンブルを書けばどういうpdf上の表示になるかがわかりやすいのです。(上の行と次の行を比べることで、プリアンブルの違いが
どのように反映されたかが比較しやすいです。)

つまり、プリアンブルの切り替えです。
たとえば
restart;(で初期化して)
プリアンブルその1
\write_begin
\begin{document}
---
\end{document}(でプリアンブル1を反映した文章A)
\\
restart;(でプリアンブル1を初期化して)
プリアンブルその2
\begin{document}
---
\end{document}(でプリアンブル2を反映した文章B)
\write_end(で、文章Aの下に文章Bが来ているpdfが一枚できあがる)

みたいなふうです。
ただ、上のものだと\begin{document}から\end{document}でtexが終了するのでプリアンブル2以下の部分ができないというのは想像できます。

しかし、やりたいことは、こういうふうにプリアンブルを切り替えることで、
それぞれのプリアンブルが有効な範囲をプリアンブルを生かした文章をpdf
の一部分にしながら、、そして、そのプリアンブルをresetして、次のプリアンブル
を有効にし、その範囲を、新しいプリアンブルが効いた形で、前に書いた
文章に続いて次の行に書き込む、全体として1つのpdf文書をつくるということです。

どのようなコマンドを使うとこのようなことが可能になるのでしょうか?

僕は勝手に、このことは奥村先生が奥村先生の本を作るにあたって、されて
おられることかもしれないと思っています。

教えてください。宜しくお願いします。


maple @autumn への返信

Re: 1つのファイルのなかに異なるプリアンブルを持つ文章を作る

- 本田 知亮 の投稿
素直に別々のPDFを作って
その後にPDFを合体させるのがよいでしょう.

もしくは,なんらかのスクリプトなり何なりで,
プリアンブルとdocument環境を任意の組み合わせた
ソースを生成し,それぞれでPDFを作ったあと
そのPDFを合体させればいいでしょう.

ちなみに,
フォントのサンプルのように切り替えるのは
プリアンブルまるごとなんてことはせずに,
局所的に切り替えることが可能です.


=====
ちなみに,たぶん,任意のプリアンブルで
それをすることは不可能でしょう.

本田 知亮 への返信

Re: 1つのファイルのなかに異なるプリアンブルを持つ文章を作る

- maple @autumn の投稿
>プリアンブルまるごとなんてことはせずに,
>局所的に切り替えることが可能です.

これは
たとえば\begin{document} \end{document}の中で、その外で指定したプリアンブルを一部外し、別のプリアンブルを\begin{document} \end{document}の
ドキュメント環境の中で、つけくわえるということが可能だということでしょうか?

たとえば
プリアンブル
\begin{document}
\unwith{プレアンブルの一部A}%プリアンブルの一部を外す
\with{別のプリアンブルB}%別のプリアンブルを付け加える
\unwith{一行上のプリアンブルB}#付け加えたプリアンブルを外す
with{プレンブルの一部A}#最初に外したプリアンブルに戻す
\end{document}
というような。
maple @autumn への返信

Re: 1つのファイルのなかに異なるプリアンブルを持つ文章を作る

- 前田 一貴 の投稿
本田さんが書かれているのはプリアンブルの切り替えのことではなくて,
文書中でのフォントの切り替えぐらいだったらできるよ,ということだと思います.
例えば,数式フォントの例ですが
https://tex.stackexchange.com/questions/19255/using-declaremathversion/19257
などが参考になると思います.

本田さんが
> ちなみに,たぶん,任意のプリアンブルで
> それをすることは不可能でしょう.
と書かれている理由についても説明しておきますと,まず TeX エンジン自体に reset や名前空間といった機能はありません.
LaTeX は各パッケージが TeX エンジンに対して行った状態変更を全て記録するような仕組みも用意していません.

今の目的に近いものとしてはグルーピングという,\begingroup で TeX の内部状態を保存して \endgroup で復元するという
ものがありますが,\global というこの仕組みを無視する機能が障害になります.例えば,多くのパッケージで
用いられている \AtBeginDocument という \begin{document} の時点で実行する処理を追加するマクロがありますが,
これは \global に効くようになっています.よって,これがパッケージ中にあると \usepackage での読み込みを
なかったことにするのが困難になります.

本田さんも書かれていますが,どうしても「同一内容でプリアンブルだけを変更したものを色々出力し1つのPDFにする」
というのを実現したければ,TeX だけで解決するよりは他のスクリプト言語の力を借りるのが早道と思います.