8角形のボックス

名前: 山下
日時: 2006-09-29 10:23:53
IPアドレス: 220.209.23.*

こんにちは 先週もほぼ同内容の質問をしたのですが,どなたからもアドバイスを頂けませんでしたので, これは質問の仕方が悪いのだろうと考え,改めて問題点を絞って質問させて頂きます. 希望は,ascmac.sty で定義されている itembox に似た8角形のボックスを作りたい, というものです. itembox の丸角を斜線にすることで問題は解決できるだろうと考え,itembox の定義にある \def\@hobox#1#2#3{\hbox to\@scw{\@oval(#3,#3)[#1]\hfil\@oval(#3,#3)[#2]}} を, \def\@slboxu#1{\hbox to\@scw{\line(1,1){10}\hfil\line(-1,1){10}}} \def\@slboxd#1{\hbox to\@scw{\line(-1,1){10}\hfil\line(1,1){10}}} の2つに分け,定義中ほどにある \@hobox{tl}{tr}{20}\kern-10pt\box\scb@x\@hobox{bl}{br}{20}% を \@slboxu{10}\kern-10pt\box\scb@x\@slboxd{10}% に変更してみました. しばらくちょこちょこといじってみたのですが, やはり角の斜線の位置調整ができません.長さもずれているようです. また,「@oval」に換える直線が「@」なしの「line」でよいのかも気になります. 以下のファイルでは,itembox を octagon に名称変更してあります. 解決策をご存知の方,なにとぞご教示お願い致します. \documentclass{jarticle} \makeatletter \newdimen\@savetbaselineshift \newdimen\@saveybaselineshift \font\@ascgrp=ascgrp \newbox\scb@x \newbox\scscb@x \newdimen\@bw\newbox\@nbox\newbox\@nbody %% itembox 改め octagon \newdimen\@scw \def\@hobox#1#2#3{\hbox to\@scw{\@oval(#3,#3)[#1]\hfil\@oval(#3,#3)[#2]}} %% ↑の1行を参考に↓の2行を作成 \def\@slboxu#1{\hbox to\@scw{\line(1,1){10}\hfil\line(-1,1){10}}} \def\@slboxd#1{\hbox to\@scw{\line(-1,1){10}\hfil\line(1,1){10}}} %% \def\@vrf@#1#2{\vskip#1\leaders\vrule width#2\vfil\vskip#1} \newdimen\@itemh\newtoks\@iboxpos\newbox\@iboxstr \def\@hleader{\leaders\hrule height .8pt\hfil} \def\octagon{\@ifnextchar[{\@octagon}{\@octagon[c]}} \def\@octagon[#1]#2{% \@savetbaselineshift\tbaselineshift\tbaselineshift\z@ \par\vspace{.3\baselineskip}% \setbox\@iboxstr=\hbox{#2}\@itemh\ht\@iboxstr\advance\@itemh\dp\@iboxstr \vspace{.5\@itemh}\bgroup\@scw\linewidth \advance\@scw-20pt\@iboxpos={#1}% \setbox\scb@x=\hbox to\@scw\bgroup\begin{minipage}{\@scw}% \tbaselineshift\@savetbaselineshift% (KN:1998/02/27) \vspace*{.5\@itemh}}% \def\endoctagon{\end{minipage}\egroup% \setbox\scscb@x=\hbox to\linewidth{\hfil\vbox{\offinterlineskip% \thicklines\setlength{\unitlength}{1pt}% \hbox to\@scw{\if l\the\@iboxpos\else\@hleader\fi \space\vbox to.8pt{\vss\hbox{\box\@iboxstr}\vss}% \space\if r\the\@iboxpos\else \@hleader\fi}\kern9.6pt %\@hobox{tl}{tr}{20}\kern-10pt\box\scb@x\@hobox{bl}{br}{20}% %% ↑の1行を参考に↓の1行を作成 \@slboxu{10}\kern-10pt\box\scb@x\@slboxd{10}% \kern-.8pt\hrule height.8pt}\hfil}\dimen0=\ht\scscb@x% \noindent\hbox to\linewidth{\hbox to.6pt{\vbox to\dimen0{\@vrf@{10pt}{.8pt}}% \hss}\box\scscb@x\hbox to.6pt{\hss\vbox to\dimen0{\@vrf@{10pt}{.9pt}}}% \hss}\egroup} \makeatother \begin{document} \begin{octagon}[c]{テスト} 挨拶 \\ 一同礼 \end{octagon} \end{document}

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)