名前: 野村 日時: 2004-07-14 08:54:56 IPアドレス: 150.84.51.*
>>30305 しっぽ愛好家さん,毎回毎回お手数をお掛けしてすみません. また,コードを示してくださり,ありがとうございます. > \@one@side@of@one@card,\@output@card@data の定義を下記のものに > 取り換えると,どうでしょうか. 問題なく処理できる事を確認しました. > また,\@init@card@data の定義中に \global を補う必要がある, > という点はご指摘の通りです.ご面倒をお掛けしまして申し訳ありません. 面倒をお掛けしているのは私の方でしょう.すみません. 今回は,subject の処理方法や init@card@data のような初期化,幅と高さを 指定した箱の作り方,\g@addto\macro の紹介など色々と教えて頂きました. 今回の修正で何故うまく処理できるのか等,まだまだ分からないことばかりで すが,ありがとうございました. > %%% 結局こういう処理にするのなら,個々の Card 環境の処理の際に > %%% 各カードの表・裏のそれぞれの記述の組版結果をボックスに保存するように > %%% した方が簡明だったかもしれません. 今後の参考にと思い,お示し頂いたコードを参考に色々と試して下記のコードを 作成してみたのですが,うまく動作しません. お時間のある時にでも正しく動作する方法をお示し頂けると嬉しく思います. 今回は,ありがとうございました. \documentclass{jarticle} \textwidth210mm \textheight297mm \topmargin10mm \oddsidemargin5mm \evensidemargin\oddsidemargin \headsep0pt \headheight0pt \footskip0pt \advance\textwidth-\oddsidemargin\advance\textwidth-\evensidemargin \advance\textheight-2\topmargin\advance\textheight-\headsep \advance\textheight-\headheight\advance\textheight-\footskip \advance\oddsidemargin-1truein \advance\evensidemargin-1truein \advance\topmargin-1truein \pagestyle{empty} \makeatletter \tabcolsep0mm %%%%% 名刺サイズ 91 x 55 \newdimen\CardWidth \CardWidth 91mm %%% カードの幅 \newdimen\CardHeight \CardHeight 55mm %%% カードの高さ \newdimen\CardPadding \CardPadding 2mm %%% 上下左右の余白 \newtoks\@card@Head \newtoks\@card@Tail \newcount\@card@no \def\CardList{% \let\section\@section@in@CardList \def\thesection{\Alph{section}}% \@init@card@data } \def\endCardList{\@output@card@data} % %%% 各カードに記述する内容の初期化 %%% CardList 環境内の n 番目の \Card マクロに対応する %%% カードの表面に記載するテキストは \@card@NH %%% (ただし,N は“(n - 1 を 10 で割ったときの剰余) + 1”) %%% に保存し,裏面に記載するテキストは \@card@NT に保存. \def\@init@card@data{% \gdef\@card@Head{}% \gdef\@card@Tail{}% \global\@card@no\z@} % %%% 個々のカードに記載するテキストを収集・登録する環境 %%% (出力処理は,1 ページ分が集まるか,CardList 環境の終端に到達した際に行う) \def\Card{% \let\@curr@card@head\@empty%%% 表面のテキストを収めるマクロの初期化 \let\@curr@card@tail\@empty%%% 裏面のテキストを収めるマクロの初期化 } \def\endCard{% \global\advance\@card@no\@ne %%% 表面・裏面のテキストを Card 環境外に運び出せるように \global 指定が必要 \global\@card@Head\expandafter{% \the\@card@Head \@card@sep@mark \@frame@in@card{\@curr@card@head}}% \global\@card@Tail\expandafter{% \the\@card@Tail \@card@sep@mark \@frame@in@card{\@curr@card@tail}}% \ifnum10>\@card@no\else \@output@card@data \@init@card@data \fi } % \def\@frame@in@card#1{% \hbox to\CardWidth{% \dimen@\CardWidth \advance\dimen@-2\CardPadding \hskip\CardPadding\vbox to\CardHeight{% \vskip\CardPadding\vtop{\hsize\dimen@ \@parboxrestore#1}\vss}\hss}} % \def\@output@card@data{% \begingroup \def\@elt##1{\noexpand\setcounter{##1}{\number\the\csname c@##1\endcsname}}% \xdef\@restore@counters{\cl@@ckpt}% \endgroup \@BeginCardList\the\@card@Head\@EndCardList \@restore@counters \newpage \@BeginCardList\the\@card@Tail\@EndCardList \newpage } % \def\amp{&} \def\ampamp{\\\cline{1-1}\cline{4-4}} \def\@card@sep@mark{\ifodd\@card@no\amp\else\ampamp\fi} % \def\@BeginCardList{% \begin{tabular}{l|ll|l}% \multicolumn{1}{r|}{あ}\amp \multicolumn{1}{c|}{}\amp\amp \multicolumn{1}{|l}{あ}\ampamp} \def\@EndCardList{% \ampamp \multicolumn{1}{r|}{あ}\amp \multicolumn{1}{c|}{}\amp\amp \multicolumn{1}{|l}{あ}% \end{tabular}} % %%% 各カードに記載する個々の“語”を登録するマクロ \long\def\Word#1#2{%%% #1: 表面に記載するテキスト, #2: 裏面に記載するテキスト \g@addto@macro\@curr@card@head{\par#1}% \g@addto@macro\@curr@card@tail{\par#2}} % %%% Card(List) 環境内の \section \def\@section@in@CardList#1#2{% \Word{\@makesectionhead{#1}}{\@makesectionhead{#2}}} \def\@makesectionhead#1{% \refstepcounter{section}% \centerline{\thesection.~{\bfseries #1}}} \makeatother \begin{document} \center \begin{CardList} \begin{Card} \section{1枚目表}{1枚目裏} \Word{表1-1}{裏1-1} \Word{表1-2}{裏1-2} \end{Card} \begin{Card} \section{2枚目表}{2枚目裏} \Word{表2-1}{裏2-1} \Word{表2-2}{裏2-2} \end{Card} \begin{Card} \section{3枚目表}{3枚目裏} \Word{表3-1}{裏3-1} \Word{表3-2}{裏3-2} \end{Card} \begin{Card} \section{4枚目表}{4枚目裏} \Word{表4-1}{裏4-1} \Word{表4-2}{裏4-2} \end{Card} \end{CardList} \end{document}
この書き込みへの返事: