emath BBS

新規発言一覧最新記事過去一覧検索HOME

No.4961  Re:tascmac.sty 2006/07/18
発言者: 北見 けん
発言日: 2006 07/21 13:34
発言元: 211.128.71.194
> とありますから,てっきり
>     epic.sty, eepic.sty との相性
> についての更新かと思いましたら,違いました。(^^ゞ

期待を外してすみません。
私がアスキーにレポートした下記の修正でした。

%% 修正前の tascmac.sty で以下をタイプセットしていただけると不具合が見られます。
\documentclass[draft]{jarticle}
%\documentclass[draft]{tarticle}

\usepackage{ascmac}

\title {itembox 環境の枠線が繋がらない}
\author {北見 けん}
\date{2006/07/12}

\begin{document}

\maketitle

\kern-\baselineskip

\begin{itembox}{これはぴったり}
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule

\verb!\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule!
\end{itembox}

\begin{itembox}{これははみ出す}
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern3pt\vrule

\verb!\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule!
\verb!\kern3pt\vrule!
\end{itembox}

\begin{itembox}{こうすると崩れる}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern3pt\vrule
}%

\begin{verbatim}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern3pt\vrule
}%
\end{verbatim}
\end{itembox}

\begin{itembox}{ずれ幅は中身による}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern6pt\vrule
}%

最後の\verb!\kern3pt!を\verb!\kern6pt!にした
\end{itembox}

\begin{itembox}{さらにずれ幅を大きく}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern20pt\vrule
}%

最後の\verb!\kern3pt!を\verb!\kern6pt!にした
\end{itembox}

ずれる原因は itembox の中身が収められるボックスの幅を
\verb!\@scw! であると仮定しているところにあります。

中身を\verb!\hbox!に収めるかどうかで結果が異なるのは、
\TeX では\verb!\vbox! の中に幅の広いボックスがあれば
\verb!\vbox!自体の幅は中身に応じて大きくなりますが、
\verb!\vbox! の中の段落中に\verb!\hsize!からはみ出た行があっても
\verb!\vbox!自体の幅は\verb!\hsize!のままになるためです。

\newpage

修正案1

$$\verb!\setbox\scb@x=\hbox\bgroup!$$
を
$$\verb!\setbox\scb@x=\hb@xt@\@scw\bgroup!$$
に変更する。

\makeatletter
\def\@itembox[#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\bgroup\begin{minipage}{\@scw}% original
  \setbox\scb@x=\hb@xt@\@scw\bgroup\begin{minipage}{\@scw}% modified by kk.
  \tbaselineshift\@savetbaselineshift% (KN:1998/02/27)
  \vspace*{.5\@itemh}}%
\def\enditembox{\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}%
  \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{itembox}{これはぴったり}
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule

\verb!\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule!
\end{itembox}

\begin{itembox}{これははみ出す}
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern3pt\vrule

\verb!\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule!
\verb!\kern3pt\vrule!
\end{itembox}

\begin{itembox}{こうすると崩れる}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern3pt\vrule
}%

\begin{verbatim}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern3pt\vrule
}%
\end{verbatim}
\end{itembox}

\begin{itembox}{ずれ幅は中身による}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern6pt\vrule
}%

最後の\verb!\kern3pt!を\verb!\kern6pt!にした
\end{itembox}

\begin{itembox}{さらにずれ幅を大きく}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern20pt\vrule
}%

最後の\verb!\kern3pt!を\verb!\kern6pt!にした
\end{itembox}

\newpage

修正案2

$$\verb!\setbox\scscb@x=\hbox to\linewidth{%!$$
に収められる水平リストの先頭と最後にある\verb!\hfil!を\verb!\kern10pt!に変更する。
それに伴って下側枠線も\verb!\hrule!に\verb!width \@scw!を補う。

\makeatletter
\def\@itembox[#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\bgroup\begin{minipage}{\@scw}%
  \tbaselineshift\@savetbaselineshift% (KN:1998/02/27)
  \vspace*{.5\@itemh}}%
\def\enditembox{\end{minipage}\egroup%
%  \setbox\scscb@x=\hbox to\linewidth{\hfil\vbox{\offinterlineskip% original
  \setbox\scscb@x=\hbox to\linewidth{\kern10pt\vbox{\offinterlineskip% modified by kk.
  \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}%
%  \kern-.8pt\hrule height.8pt}\hfil}\dimen0=\ht\scscb@x% original
  \kern-.8pt\hrule height.8pt width \@scw}\kern10pt}\dimen0=\ht\scscb@x% modified by kk.
  \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{itembox}{これはぴったり}
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule

\verb!\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule!
\end{itembox}

\begin{itembox}{これははみ出す}
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern3pt\vrule

\verb!\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule!
\verb!\kern3pt\vrule!
\end{itembox}

\begin{itembox}{こうすると崩れる}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern3pt\vrule
}%

\begin{verbatim}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern3pt\vrule
}%
\end{verbatim}
\end{itembox}

\begin{itembox}{ずれ幅は中身による}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern6pt\vrule
}%

最後の\verb!\kern3pt!を\verb!\kern6pt!にした
\end{itembox}

\begin{itembox}{さらにずれ幅を大きく}
\hbox{%
\vrule height 10pt\kern-0.4pt\kern\hsize\kern-0.4pt\vrule
\kern20pt\vrule
}%

最後の\verb!\kern3pt!を\verb!\kern6pt!にした
\end{itembox}

\end{document}

▼関連発言

4959:tascmac.sty 2006/07/18 [tDB] 07/20 11:47
 └4961:Re:tascmac.sty 2006/07/18 [北見 けん] 07/21 13:34
  └4967:Re[2]:tascmac.sty 2006/07/18 [tDB] 07/21 21:45<-last

Pass 保存


CGIROOM