名前: 北見 けん 日時: 2005-08-19 09:50:10 IPアドレス: 211.128.71.*
>>37533 似たようなことを考えて作ったものがあったので参考までに載せてみます。 ほとんど使っていないので細かい所は覚えていませんし、 不具合の検証もあまりしていないのですが。 %%%%%%%%%%%%%%%%%%%%%%%% % % include.sty written by KITAMI Ken. % All right reserved. % %%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%% % 概要 %------------------------------- % \include を用いて長い文書を編集するとき、 % subfile を更新して、masterfile を組版しなければなりません。 % 二つのファイルをいったり来たりするのは煩わしいので、 % 編集中の subfile を直接組版したい、という目的のためのマクロ群です。 % % subfile の組版時に、masterfile のプリアンブルの設定を読み込むところが、 % 本質的な部分です。 %%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%% % 原稿ファイルに対する変更点 %------------------------------- %masterfile % \documentclass{...} % ----ここに % \usepackage{include} % ----を挿入。 % \begin{document} % \include{subfile} % \end{document} % %subfile % ----始めに % \RequirePackage[masterfile]{include} % ----を挿入 % subdoc % ----最後に(\endinput がもともとあれば削除してかわりに) % \endinclude % ----を挿入 %%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%% % 組版動作の流れ(設計上の覚え書き) %------------------------------- %masterfile(\jobname={master}) から呼ばれたときの流れ。 % \documentclass % \usepackage{include} % \begin{document} % \include{sub} % \RequirePackage[master]{include} % subdoc % \endinclude % \end{document} % %subfile(\jobname={sub}) から呼ばれたときの流れ。 % \RequirePackage[master]{include} % masterfile % \documentclass % \usepackage{include} % \begin{document} % subdoc % \endinclude %%%%%%%%%%%%%%%%%%%%%%%% \ProvidesPackage{include} \DeclareOption*{\edef\masterfilename{\CurrentOption}} \let\masterfilename\@empty \ProcessOptions\relax \ifx\masterfilename\@empty % \include で読み込まれたときにある \RequirePackage[master]{include} を % 無効化します。 % この無効化は、\@onlypreamble によるエラー化の後に行います。 \AtBeginDocument{% \@onlypreamble{\@onlypreamble%\do を誤魔化すため。 \renewcommand{\RequirePackage}[2][]{% \def\reserved@a{include}% \def\reserved@b{##2}% \ifx\reserved@a\reserved@b \else\@notprerr \fi}}}% \let\endinclude\endinput \else % masterfile のプリアンブルを読み込みます。 % \begin{document}で読み込みを終えるために細工をします。 \let\@@begin\begin \def\begin#1{% \def\reserved@a{document}% \def\reserved@b{#1}% \ifx\reserved@a\reserved@b \def\reserved@a##1\par{\endinput\relax}% \else \def\reserved@a{\@@begin{#1}}% \fi \reserved@a } \makeatother \input \masterfilename \makeatletter \AtEndOfPackage{\let\@unprocessedoptions\relax}% % masterfile の \usepackage{include}対策です。 \let\begin\@@begin \everypar{\begin{document}}% \def\endinclude{\end{document}}% \fi \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 以下、覚書き %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage[opts]{paca , pacb, pacc}[date] は以下になる。パッケージたちの空白は除かれる。 \@onefilewithoptions paca[opts][date]\@pkgextension \@onefilewithoptions pacb[opts][date]\@pkgextension \@onefilewithoptions pacc[opts][date]\@pkgextension さらに、 \@onefilewithoptions pac[opts][date]\@pkgextension は \@currnamestack に{\@currname}{\@currext}{\the\catcode`\@} を前積。 \def\@currname{pac} \let\@currext\@pkgextension \let\pac.sty-h@@k\@empty
この書き込みへの返事: