名前: 安田 亨 日時: 2006-01-13 11:51:44 IPアドレス: 58.87.160.*
よろしくご教示ください. eclbkbox.styを改変し,実線枠囲みでタイトルを付けるものを作りました. タイトル位置は,左から3文字あけて4文字目から始まります. 受験雑誌「大学への数学」の仕様に合わせるためです. 最終的に組版機で整版しますが, できるだけ割付の手間を減らすため, 原稿は,基本的に,組上がりと同じように書くのが原則です. それなりにできています. 現在はタイトルをつけるときは{ }で囲って右に付けます. タイトルが不要なときは中身のない{}をつけないと,本文の最初の一文字 がとりこまれてしまいます.これを タイトルをつけるときは[]で入れ,タイトル不要なときは{}をつけなくてもよい ように仕様変更したいのですが,付け焼き刃なので,どうにもうまくいきません. どこを直したらよいのでしょうか? \documentclass[fleqn]{jsarticle} \makeatletter \def\kahenhrulefill{\leavevmode\leaders\hrule height\fboxrule\hfill\kern\z@} % \newbox\bk@bxb \newbox\bk@bxa \newif\if@bkcont \newif\ifbkcount \newcount\bk@lcnt \def\wakutboxskip{2pt} \def\wakutboxparindent{0em} \def\wakutbox{\vskip\wakutboxskip\relax \setbox\bk@bxb\vbox\bgroup \advance\linewidth -2\fboxrule \advance\linewidth -2\fboxsep \hsize\linewidth\@parboxrestore \parindent\wakutboxparindent\relax} % \@tempdimb: amount of vertical skip % between the first line (\bk@bxa) and the rest (\bk@bxb) \def\bk@split{% \@tempdimb\ht\bk@bxb % height of original box \advance\@tempdimb\dp\bk@bxb \setbox\bk@bxa\vsplit\bk@bxb to\z@ % split it \setbox\bk@bxa\vbox{\unvbox\bk@bxa}% recover height & depth of \bk@bxa \setbox\@tempboxa\vbox{\copy\bk@bxa\copy\bk@bxb}% naive concatenation \advance\@tempdimb-\ht\@tempboxa \advance\@tempdimb-\dp\@tempboxa}% gap between two boxes % \@tempdima: height of the first line (\bk@bxa) + fboxsep \def\bk@addfsepht{% \setbox\bk@bxa\vbox{\vskip\fboxsep\box\bk@bxa}} % \def\bk@addskipht{% \setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}} % % \@tempdima: depth of the first line (\bk@bxa) + fboxsep \def\bk@addfsepdp{% \@tempdima\dp\bk@bxa \advance\@tempdima\fboxsep \dp\bk@bxa\@tempdima} % % \@tempdima: depth of the first line (\bk@bxa) + vertical skip \def\bk@addskipdp{% \@tempdima\dp\bk@bxa \advance\@tempdima\@tempdimb \dp\bk@bxa\@tempdima} % \def\bk@line{% \hbox to \linewidth{\ifbkcount\smash{\llap{\the\bk@lcnt\ }}\fi \vrule \@width\fboxrule\hskip\fboxsep \box\bk@bxa\hfil \hskip\fboxsep\vrule \@width\fboxrule}} \def\endwakutbox{\egroup \ifhmode\par\fi{\noindent\bk@lcnt\@ne \@bkconttrue\baselineskip\z@\lineskiplimit\z@ \lineskip\z@\vfuzz\maxdimen \bk@split\bk@addfsepht\bk@addskipdp \ifvoid\bk@bxb % Only one line \def\bk@fstln{\bk@addfsepdp \vbox{\hrule\@height\fboxrule\bk@line\hrule\@height\fboxrule}}% \else % More than one line %%%%%%%このあたり \def\bk@fstln{% \vrule height\fboxrule depth0pt width3zw \vbox to10pt{\hbox{\lower1.4zh\hbox{\box0}}\vskip 0pt}% \kahenhrulefill\hrulefill% \vbox{\bk@line}\hfil% %\vbox{\fboxrule\bk@line}\hfil \advance\bk@lcnt\@ne \loop \bk@split\bk@addskipdp\leavevmode \ifvoid\bk@bxb % The last line \@bkcontfalse\bk@addfsepdp \vtop{\bk@line\hrule\@height\fboxrule}% \else % 2,...,(n-1) \bk@line \fi \hfil\advance\bk@lcnt\@ne \if@bkcont\repeat}% \fi \leavevmode\bk@fstln\par}\vskip\wakutboxskip\relax} % \bkcountfalse %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%以下がindent.styコマンド名は変更 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \let\indentb\undefined \newenvironment{indentb}[2]% {% \par \setlength{\leftmargin}{#1}% \setlength{\rightmargin}{#2}% \advance\linewidth -\leftmargin \advance\linewidth -\rightmargin \advance\@totalleftmargin\leftmargin \@setpar{{\@@par}}% \parshape 1 \@totalleftmargin \linewidth \ignorespaces \topsep=0pt \partopsep=0pt}% {\par} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %空きを調整して枠囲みタイトル付き(環境形) %newenvironment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newenvironment{wakut}[1] {\vspace{-0.2\baselineskip}\vspace{0.1cm}% \setbox0=\hbox{#1} \begin{wakutbox}% \begin{indentb}{0.65zw}{0.65zw}% \vspace{0.2cm}}% {\vspace{0.2cm}% \end{indentb}%ji \end{wakutbox} \vspace{0.2cm}} \bkcountfalse \makeatother \begin{document} \begin{wakut}{あ} タイトルあり\\ タイトルあり \end{wakut} \begin{wakut}{} タイトルなしのときは括弧をつける\\ タイトルなし \end{wakut} \begin{wakut} タイトルなしのときに括弧をつけないと\\ こうなる \end{wakut} \end{document}
この書き込みへの返事: